From 5fd106fc0ff9e0fda363dddd83e4df8d6955d6e0 Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: May 10 2022 07:07:44 +0000 Subject: import scap-security-guide-0.1.60-7.el8 --- diff --git a/.gitignore b/.gitignore index 8d1d1d0..903d18b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ SOURCES/scap-security-guide-0.1.52-2.el7_9-rhel6.tar.bz2 -SOURCES/scap-security-guide-0.1.57.tar.bz2 +SOURCES/scap-security-guide-0.1.60.tar.bz2 diff --git a/.scap-security-guide.metadata b/.scap-security-guide.metadata index 3afce51..bf424e0 100644 --- a/.scap-security-guide.metadata +++ b/.scap-security-guide.metadata @@ -1,2 +1,2 @@ b22b45d29ad5a97020516230a6ef3140a91d050a SOURCES/scap-security-guide-0.1.52-2.el7_9-rhel6.tar.bz2 -d78bdc956df4301c3b3bbb2f9f24d809d7b1d08c SOURCES/scap-security-guide-0.1.57.tar.bz2 +6768818c9bd6f9f35596f2fe23c50ffe52b974c3 SOURCES/scap-security-guide-0.1.60.tar.bz2 diff --git a/SOURCES/disable-not-in-good-shape-profiles.patch b/SOURCES/disable-not-in-good-shape-profiles.patch index c5b8d9a..655c558 100644 --- a/SOURCES/disable-not-in-good-shape-profiles.patch +++ b/SOURCES/disable-not-in-good-shape-profiles.patch @@ -1,23 +1,15 @@ -diff --git a/rhel8/CMakeLists.txt b/rhel8/CMakeLists.txt -index d61689c97..5e444a101 100644 +diff --git a/products/rhel8/CMakeLists.txt b/products/rhel8/CMakeLists.txt +index 5258591c7f..cc4b9c5720 100644 --- a/products/rhel8/CMakeLists.txt +++ b/products/rhel8/CMakeLists.txt -@@ -14,15 +14,9 @@ ssg_build_html_table_by_ref(${PRODUCT} "cis") - ssg_build_html_table_by_ref(${PRODUCT} "pcidss") - ssg_build_html_table_by_ref(${PRODUCT} "anssi") +@@ -11,7 +11,6 @@ ssg_build_product(${PRODUCT}) + ssg_build_html_ref_tables("${PRODUCT}" "table-${PRODUCT}-{ref_id}refs" "anssi;cis;cui;nist;pcidss") --ssg_build_html_nistrefs_table(${PRODUCT} "standard") - ssg_build_html_nistrefs_table(${PRODUCT} "ospp") - ssg_build_html_nistrefs_table(${PRODUCT} "stig") + ssg_build_html_profile_table("table-${PRODUCT}-nistrefs-ospp" "${PRODUCT}" "ospp" "nist") +-ssg_build_html_profile_table("table-${PRODUCT}-nistrefs-standard" "${PRODUCT}" "standard" "nist") + ssg_build_html_profile_table("table-${PRODUCT}-nistrefs-stig" "${PRODUCT}" "stig" "nist") --ssg_build_html_anssirefs_table(${PRODUCT} "bp28_minimal") --ssg_build_html_anssirefs_table(${PRODUCT} "bp28_intermediary") --ssg_build_html_anssirefs_table(${PRODUCT} "bp28_enhanced") --ssg_build_html_anssirefs_table(${PRODUCT} "bp28_high") -- - ssg_build_html_cce_table(${PRODUCT}) - - ssg_build_html_srgmap_tables(${PRODUCT} "stig" ${DISA_SRG_TYPE}) + ssg_build_html_profile_table("table-${PRODUCT}-anssirefs-bp28_minimal" "${PRODUCT}" "anssi_bp28_minimal" "anssi") diff --git a/products/rhel8/profiles/cjis.profile b/rhel8/profiles/cjis.profile index 035d2705b..c6475f33e 100644 --- a/products/rhel8/profiles/cjis.profile diff --git a/SOURCES/reorder-reference-in-alphabetical-order.patch b/SOURCES/reorder-reference-in-alphabetical-order.patch deleted file mode 100644 index d044f16..0000000 --- a/SOURCES/reorder-reference-in-alphabetical-order.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 628cbacb76e9950528359038cf3237ac7166f0b7 Mon Sep 17 00:00:00 2001 -From: Gabriel Becker -Date: Mon, 14 Mar 2022 12:57:26 +0100 -Subject: [PATCH] Reorder reference in alphabetical order. - ---- - .../integrity/crypto/configure_bind_crypto_policy/rule.yml | 2 +- - .../software/integrity/crypto/configure_crypto_policy/rule.yml | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/linux_os/guide/system/software/integrity/crypto/configure_bind_crypto_policy/rule.yml b/linux_os/guide/system/software/integrity/crypto/configure_bind_crypto_policy/rule.yml -index e58c950..8d73d9d 100644 ---- a/linux_os/guide/system/software/integrity/crypto/configure_bind_crypto_policy/rule.yml -+++ b/linux_os/guide/system/software/integrity/crypto/configure_bind_crypto_policy/rule.yml -@@ -29,8 +29,8 @@ identifiers: - references: - nerc-cip: CIP-003-3 R4.2,CIP-007-3 R5.1 - nist: SC-13,SC-12(2),SC-12(3) -- stigid@rhel8: RHEL-08-010020 - srg: SRG-OS-000423-GPOS-00187,SRG-OS-000426-GPOS-00190 -+ stigid@rhel8: RHEL-08-010020 - - ocil_clause: |- - BIND is installed and the BIND config file doesn't contain the -diff --git a/linux_os/guide/system/software/integrity/crypto/configure_crypto_policy/rule.yml b/linux_os/guide/system/software/integrity/crypto/configure_crypto_policy/rule.yml -index 5eea87a..a5a8df3 100644 ---- a/linux_os/guide/system/software/integrity/crypto/configure_crypto_policy/rule.yml -+++ b/linux_os/guide/system/software/integrity/crypto/configure_crypto_policy/rule.yml -@@ -65,8 +65,8 @@ references: - nerc-cip: CIP-003-3 R4.2,CIP-007-3 R5.1,CIP-007-3 R7.1 - nist: AC-17(a),AC-17(2),CM-6(a),MA-4(6),SC-13,SC-12(2),SC-12(3) - ospp: FCS_COP.1(1),FCS_COP.1(2),FCS_COP.1(3),FCS_COP.1(4),FCS_CKM.1,FCS_CKM.2,FCS_TLSC_EXT.1 -- stigid@rhel8: RHEL-08-010020 - srg: SRG-OS-000396-GPOS-00176,SRG-OS-000393-GPOS-00173,SRG-OS-000394-GPOS-00174 -+ stigid@rhel8: RHEL-08-010020 - - ocil_clause: 'cryptographic policy is not configured or is configured incorrectly' - --- -2.34.1 - diff --git a/SOURCES/scap-security-guide-0.1.58-BZ_1942281-PR_7471.patch b/SOURCES/scap-security-guide-0.1.58-BZ_1942281-PR_7471.patch deleted file mode 100644 index 4086d83..0000000 --- a/SOURCES/scap-security-guide-0.1.58-BZ_1942281-PR_7471.patch +++ /dev/null @@ -1,199 +0,0 @@ -From 2cbc694687190cadb155c5582f93a8cf91ebdc4c Mon Sep 17 00:00:00 2001 -From: Marcus Burghardt -Date: Thu, 26 Aug 2021 15:04:46 +0200 -Subject: [PATCH] Bug 1942281 - Set postfix rules to notapplicable when package - is not installed - ---- - .../rule.yml | 2 ++ - .../rule.yml | 2 ++ - .../services/mail/postfix_harden_os/group.yml | 2 ++ - .../rule.yml | 3 ++- - products/rhel8/profiles/stig.profile | 4 +--- - products/rhel9/profiles/stig.profile | 4 +--- - shared/applicability/general.yml | 5 +++++ - .../installed_env_has_postfix_package.xml | 20 +++++++++++++++++++ - shared/references/cce-redhat-avail.txt | 1 - - .../data/profile_stability/rhel8/stig.profile | 3 ++- - .../profile_stability/rhel8/stig_gui.profile | 3 ++- - 11 files changed, 39 insertions(+), 10 deletions(-) - create mode 100644 shared/checks/oval/installed_env_has_postfix_package.xml - -diff --git a/linux_os/guide/services/mail/postfix_client/postfix_client_configure_relayhost/rule.yml b/linux_os/guide/services/mail/postfix_client/postfix_client_configure_relayhost/rule.yml -index 0faafeb0c2f..4b440e79845 100644 ---- a/linux_os/guide/services/mail/postfix_client/postfix_client_configure_relayhost/rule.yml -+++ b/linux_os/guide/services/mail/postfix_client/postfix_client_configure_relayhost/rule.yml -@@ -21,3 +21,5 @@ ocil: |- - Run the following command to ensure postfix routes mail to this system: -
$ grep relayhost /etc/postfix/main.cf
- If properly configured, the output should show only {{{ xccdf_value("var_postfix_relayhost") }}}. -+ -+platform: postfix -diff --git a/linux_os/guide/services/mail/postfix_client/postfix_network_listening_disabled/rule.yml b/linux_os/guide/services/mail/postfix_client/postfix_network_listening_disabled/rule.yml -index 096020ef687..579db484976 100644 ---- a/linux_os/guide/services/mail/postfix_client/postfix_network_listening_disabled/rule.yml -+++ b/linux_os/guide/services/mail/postfix_client/postfix_network_listening_disabled/rule.yml -@@ -42,3 +42,5 @@ ocil: |- - Run the following command to ensure postfix accepts mail messages from only the local system: -
$ grep inet_interfaces /etc/postfix/main.cf
- If properly configured, the output should show only {{{ xccdf_value("var_postfix_inet_interfaces") }}}. -+ -+platform: postfix -diff --git a/linux_os/guide/services/mail/postfix_harden_os/group.yml b/linux_os/guide/services/mail/postfix_harden_os/group.yml -index 19b662508bd..8a415425e7d 100644 ---- a/linux_os/guide/services/mail/postfix_harden_os/group.yml -+++ b/linux_os/guide/services/mail/postfix_harden_os/group.yml -@@ -6,3 +6,5 @@ description: |- - The guidance in this section is appropriate for any host which is - operating as a site MTA, whether the mail server runs using Sendmail, Postfix, - or some other software. -+ -+platform: postfix -diff --git a/linux_os/guide/services/mail/postfix_harden_os/postfix_server_cfg/postfix_server_relay/postfix_prevent_unrestricted_relay/rule.yml b/linux_os/guide/services/mail/postfix_harden_os/postfix_server_cfg/postfix_server_relay/postfix_prevent_unrestricted_relay/rule.yml -index 9b4c7656a85..75e4133b119 100644 ---- a/linux_os/guide/services/mail/postfix_harden_os/postfix_server_cfg/postfix_server_relay/postfix_prevent_unrestricted_relay/rule.yml -+++ b/linux_os/guide/services/mail/postfix_harden_os/postfix_server_cfg/postfix_server_relay/postfix_prevent_unrestricted_relay/rule.yml -@@ -1,6 +1,6 @@ - documentation_complete: true - --prodtype: ol7,ol8,rhel7,rhel8,wrlinux1019 -+prodtype: ol7,ol8,rhel7,rhel8,rhel9,wrlinux1019 - - title: 'Prevent Unrestricted Mail Relaying' - -@@ -19,6 +19,7 @@ severity: medium - identifiers: - cce@rhel7: CCE-80512-7 - cce@rhel8: CCE-84054-6 -+ cce@rhel9: CCE-87232-5 - - references: - disa: CCI-000366 -diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index d31b251645b..5e9a2216fcd 100644 ---- a/products/rhel8/profiles/stig.profile -+++ b/products/rhel8/profiles/stig.profile -@@ -1160,9 +1160,7 @@ selections: - - sysctl_net_core_bpf_jit_harden - - # RHEL-08-040290 -- # /etc/postfix/main.cf does not exist on default installation resulting in error during remediation -- # there needs to be a new platform check to identify when postfix is installed or not -- # - postfix_prevent_unrestricted_relay -+ - postfix_prevent_unrestricted_relay - - # RHEL-08-040300 - - aide_verify_ext_attributes -diff --git a/products/rhel9/profiles/stig.profile b/products/rhel9/profiles/stig.profile -index a40d848ee67..8d60468528d 100644 ---- a/products/rhel9/profiles/stig.profile -+++ b/products/rhel9/profiles/stig.profile -@@ -1030,9 +1030,7 @@ selections: - - sysctl_net_ipv4_conf_all_rp_filter - - # RHEL-08-040290 -- # /etc/postfix/main.cf does not exist on default installation resulting in error during remediation -- # there needs to be a new platform check to identify when postfix is installed or not -- # - postfix_prevent_unrestricted_relay -+ - postfix_prevent_unrestricted_relay - - # RHEL-08-040300 - - aide_verify_ext_attributes -diff --git a/shared/applicability/general.yml b/shared/applicability/general.yml -index 6e3ecfd9bf9..4163a07cbad 100644 ---- a/shared/applicability/general.yml -+++ b/shared/applicability/general.yml -@@ -44,6 +44,11 @@ cpes: - title: "Package pam is installed" - check_id: installed_env_has_pam_package - -+ - postfix: -+ name: "cpe:/a:postfix" -+ title: "Package postfix is installed" -+ check_id: installed_env_has_postfix_package -+ - - sssd: - name: "cpe:/a:sssd" - title: "Package sssd-common is installed" -diff --git a/shared/checks/oval/installed_env_has_postfix_package.xml b/shared/checks/oval/installed_env_has_postfix_package.xml -new file mode 100644 -index 00000000000..95ad355147b ---- /dev/null -+++ b/shared/checks/oval/installed_env_has_postfix_package.xml -@@ -0,0 +1,20 @@ -+ -+ -+ -+ -+ Package postfix is installed -+ -+ multi_platform_all -+ -+ Checks if package postfix is installed. -+ -+ -+ -+ -+ -+ -+ -+ {{{ oval_test_package_installed(package='postfix', evr='', test_id='test_env_has_postfix_installed') }}} -+ -+ -diff --git a/shared/references/cce-redhat-avail.txt b/shared/references/cce-redhat-avail.txt -index ee4c156b79c..29fe687600c 100644 ---- a/shared/references/cce-redhat-avail.txt -+++ b/shared/references/cce-redhat-avail.txt -@@ -1314,7 +1314,6 @@ CCE-87228-3 - CCE-87229-1 - CCE-87230-9 - CCE-87231-7 --CCE-87232-5 - CCE-87233-3 - CCE-87234-1 - CCE-87235-8 -diff --git a/tests/data/profile_stability/rhel8/stig.profile b/tests/data/profile_stability/rhel8/stig.profile -index ba596f86f83..ca0097b844b 100644 ---- a/tests/data/profile_stability/rhel8/stig.profile -+++ b/tests/data/profile_stability/rhel8/stig.profile -@@ -64,8 +64,8 @@ selections: - - accounts_user_home_paths_only - - accounts_user_interactive_home_directory_defined - - accounts_user_interactive_home_directory_exists --- aide_check_audit_tools - - agent_mfetpd_running -+- aide_check_audit_tools - - aide_scan_notification - - aide_verify_acls - - aide_verify_ext_attributes -@@ -304,6 +304,7 @@ selections: - - partition_for_var_log_audit - - partition_for_var_tmp - - postfix_client_configure_mail_alias -+- postfix_prevent_unrestricted_relay - - require_emergency_target_auth - - require_singleuser_auth - - root_permissions_syslibrary_files -diff --git a/tests/data/profile_stability/rhel8/stig_gui.profile b/tests/data/profile_stability/rhel8/stig_gui.profile -index 9db93027011..3533208c4a5 100644 ---- a/tests/data/profile_stability/rhel8/stig_gui.profile -+++ b/tests/data/profile_stability/rhel8/stig_gui.profile -@@ -75,8 +75,8 @@ selections: - - accounts_user_home_paths_only - - accounts_user_interactive_home_directory_defined - - accounts_user_interactive_home_directory_exists --- aide_check_audit_tools - - agent_mfetpd_running -+- aide_check_audit_tools - - aide_scan_notification - - aide_verify_acls - - aide_verify_ext_attributes -@@ -315,6 +315,7 @@ selections: - - partition_for_var_log_audit - - partition_for_var_tmp - - postfix_client_configure_mail_alias -+- postfix_prevent_unrestricted_relay - - require_emergency_target_auth - - require_singleuser_auth - - root_permissions_syslibrary_files diff --git a/SOURCES/scap-security-guide-0.1.58-RHEL_08_010001-PR_7344.patch b/SOURCES/scap-security-guide-0.1.58-RHEL_08_010001-PR_7344.patch deleted file mode 100644 index 06906ff..0000000 --- a/SOURCES/scap-security-guide-0.1.58-RHEL_08_010001-PR_7344.patch +++ /dev/null @@ -1,240 +0,0 @@ -From bb5c2983be3b11c3cd1070cf1d3daca27cb700ee Mon Sep 17 00:00:00 2001 -From: Matthew Burket -Date: Thu, 19 Aug 2021 08:02:55 -0500 -Subject: [PATCH] Add a new rules RHEL-08-010001 and RHEL-07-020019 - ---- - .../agent_mfetpd_running/oval/shared.xml | 16 ++++++ - .../agent_mfetpd_running/rule.yml | 39 ++++++++++++++ - .../group.yml | 7 +++ - .../package_mcafeetp_installed/rule.yml | 51 +++++++++++++++++++ - products/rhel7/profiles/stig.profile | 2 + - products/rhel8/profiles/stig.profile | 4 ++ - shared/references/cce-redhat-avail.txt | 4 -- - .../data/profile_stability/rhel8/stig.profile | 2 + - .../profile_stability/rhel8/stig_gui.profile | 2 + - 9 files changed, 123 insertions(+), 4 deletions(-) - create mode 100644 linux_os/guide/system/software/integrity/endpoint_security_software/mcafee_security_software/mcafee_endpoint_security_software/agent_mfetpd_running/oval/shared.xml - create mode 100644 linux_os/guide/system/software/integrity/endpoint_security_software/mcafee_security_software/mcafee_endpoint_security_software/agent_mfetpd_running/rule.yml - create mode 100644 linux_os/guide/system/software/integrity/endpoint_security_software/mcafee_security_software/mcafee_endpoint_security_software/group.yml - create mode 100644 linux_os/guide/system/software/integrity/endpoint_security_software/mcafee_security_software/mcafee_endpoint_security_software/package_mcafeetp_installed/rule.yml - -diff --git a/linux_os/guide/system/software/integrity/endpoint_security_software/mcafee_security_software/mcafee_endpoint_security_software/agent_mfetpd_running/oval/shared.xml b/linux_os/guide/system/software/integrity/endpoint_security_software/mcafee_security_software/mcafee_endpoint_security_software/agent_mfetpd_running/oval/shared.xml -new file mode 100644 -index 00000000000..9900d8bd724 ---- /dev/null -+++ b/linux_os/guide/system/software/integrity/endpoint_security_software/mcafee_security_software/mcafee_endpoint_security_software/agent_mfetpd_running/oval/shared.xml -@@ -0,0 +1,16 @@ -+ -+ -+ {{{ oval_metadata("Ensure that McAfee Endpoint Security for Linux (ENSL) is running.") }}} -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ ^mfetpd.*$ -+ 0 -+ -+ -diff --git a/linux_os/guide/system/software/integrity/endpoint_security_software/mcafee_security_software/mcafee_endpoint_security_software/agent_mfetpd_running/rule.yml b/linux_os/guide/system/software/integrity/endpoint_security_software/mcafee_security_software/mcafee_endpoint_security_software/agent_mfetpd_running/rule.yml -new file mode 100644 -index 00000000000..32c934467da ---- /dev/null -+++ b/linux_os/guide/system/software/integrity/endpoint_security_software/mcafee_security_software/mcafee_endpoint_security_software/agent_mfetpd_running/rule.yml -@@ -0,0 +1,39 @@ -+documentation_complete: true -+ -+prodtype: rhel7,rhel8 -+ -+title: 'Ensure McAfee Endpoint Security for Linux (ENSL) is running' -+ -+description: |- -+ Install McAfee Endpoint Security for Linux antivirus software -+ which is provided for DoD systems and uses signatures to search for the -+ presence of viruses on the filesystem. -+ -+rationale: |- -+ Virus scanning software can be used to detect if a system has been compromised by -+ computer viruses, as well as to limit their spread to other systems. -+ -+severity: high -+ -+identifiers: -+ cce@rhel7: CCE-86262-3 -+ cce@rhel8: CCE-86261-5 -+ -+references: -+ disa: CCI-001233 -+ nist: SI-2(2) -+ srg: SRG-OS-000191-GPOS-00080 -+ stigid@rhel7: RHEL-07-020019 -+ stigid@rhel8: RHEL-08-010001 -+ -+ocil_clause: 'virus scanning software is not running' -+ -+ocil: |- -+ To verify that McAfee Endpoint Security for Linux is -+ running, run the following command: -+
$ sudo ps -ef | grep -i mfetpd
-+ -+warnings: -+ - general: |- -+ Due to McAfee Endpoint Security for Linux (ENSL) being 3rd party software, -+ automated remediation is not available for this configuration check. -diff --git a/linux_os/guide/system/software/integrity/endpoint_security_software/mcafee_security_software/mcafee_endpoint_security_software/group.yml b/linux_os/guide/system/software/integrity/endpoint_security_software/mcafee_security_software/mcafee_endpoint_security_software/group.yml -new file mode 100644 -index 00000000000..f2e4e89851a ---- /dev/null -+++ b/linux_os/guide/system/software/integrity/endpoint_security_software/mcafee_security_software/mcafee_endpoint_security_software/group.yml -@@ -0,0 +1,7 @@ -+documentation_complete: true -+ -+title: 'McAfee Endpoint Security for Linux (ENSL)' -+ -+description: |- -+ McAfee Endpoint Security for Linux (ENSL) is a suite of software applications -+ used to monitor, detect, and defend computer networks and systems. -diff --git a/linux_os/guide/system/software/integrity/endpoint_security_software/mcafee_security_software/mcafee_endpoint_security_software/package_mcafeetp_installed/rule.yml b/linux_os/guide/system/software/integrity/endpoint_security_software/mcafee_security_software/mcafee_endpoint_security_software/package_mcafeetp_installed/rule.yml -new file mode 100644 -index 00000000000..16587792eff ---- /dev/null -+++ b/linux_os/guide/system/software/integrity/endpoint_security_software/mcafee_security_software/mcafee_endpoint_security_software/package_mcafeetp_installed/rule.yml -@@ -0,0 +1,51 @@ -+documentation_complete: true -+ -+prodtype: rhel7,rhel8 -+ -+title: 'Install McAfee Endpoint Security for Linux (ENSL)' -+ -+description: |- -+ Install McAfee Endpoint Security for Linux antivirus software -+ which is provided for DoD systems and uses signatures to search for the -+ presence of viruses on the filesystem. -+ -+ {{{ describe_package_install(package="mcafeetp") }}} -+ -+rationale: |- -+ Virus scanning software can be used to detect if a system has been compromised by -+ computer viruses, as well as to limit their spread to other systems. -+ -+severity: high -+ -+identifiers: -+ cce@rhel7: CCE-86257-3 -+ cce@rhel8: CCE-86260-7 -+ -+references: -+ disa: CCI-001233 -+ nist: SI-2(2) -+ srg: SRG-OS-000191-GPOS-00080 -+ stigid@rhel7: RHEL-07-020019 -+ stigid@rhel8: RHEL-08-010001 -+ -+ocil_clause: 'the package is not installed' -+ -+ocil: '{{{ ocil_package(package="mcafeetp") }}}' -+ -+warnings: -+ - general: |- -+ Due to McAfee Endpoint Security for Linux (ENSL) being 3rd party software, -+ automated remediation is not available for this configuration check. -+ -+platform: machine -+ -+template: -+ name: package_installed -+ vars: -+ pkgname: mcafeetp -+ backends: -+ bash: "off" -+ ansible: "off" -+ anaconda: "off" -+ puppet: "off" -+ blueprint: "off" -diff --git a/products/rhel7/profiles/stig.profile b/products/rhel7/profiles/stig.profile -index f5761c891f2..9ca13600057 100644 ---- a/products/rhel7/profiles/stig.profile -+++ b/products/rhel7/profiles/stig.profile -@@ -316,3 +316,5 @@ selections: - - file_permissions_var_log_audit - - sysctl_net_ipv4_conf_all_rp_filter - - sysctl_net_ipv4_conf_default_rp_filter -+ - package_mcafeetp_installed -+ - agent_mfetpd_running -diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index 9dc9360e899..36f384621ae 100644 ---- a/products/rhel8/profiles/stig.profile -+++ b/products/rhel8/profiles/stig.profile -@@ -84,6 +84,10 @@ selections: - # RHEL-08-010000 - - installed_OS_is_vendor_supported - -+ # RHEL-08-010001 -+ - package_mcafeetp_installed -+ - agent_mfetpd_running -+ - # RHEL-08-010010 - - security_patches_up_to_date - -diff --git a/shared/references/cce-redhat-avail.txt b/shared/references/cce-redhat-avail.txt -index 3b24e19da06..08013e6de22 100644 ---- a/shared/references/cce-redhat-avail.txt -+++ b/shared/references/cce-redhat-avail.txt -@@ -372,12 +372,8 @@ CCE-86253-2 - CCE-86254-0 - CCE-86255-7 - CCE-86256-5 --CCE-86257-3 - CCE-86258-1 - CCE-86259-9 --CCE-86260-7 --CCE-86261-5 --CCE-86262-3 - CCE-86263-1 - CCE-86264-9 - CCE-86265-6 -diff --git a/tests/data/profile_stability/rhel8/stig.profile b/tests/data/profile_stability/rhel8/stig.profile -index e9ba0f0adbf..f3e6c4fa1a1 100644 ---- a/tests/data/profile_stability/rhel8/stig.profile -+++ b/tests/data/profile_stability/rhel8/stig.profile -@@ -65,6 +65,7 @@ selections: - - accounts_user_interactive_home_directory_defined - - accounts_user_interactive_home_directory_exists - - aide_check_audit_tools -+- agent_mfetpd_running - - aide_scan_notification - - aide_verify_acls - - aide_verify_ext_attributes -@@ -280,6 +281,7 @@ selections: - - package_gssproxy_removed - - package_iprutils_removed - - package_krb5-workstation_removed -+- package_mcafeetp_installed - - package_opensc_installed - - package_openssh-server_installed - - package_policycoreutils_installed -diff --git a/tests/data/profile_stability/rhel8/stig_gui.profile b/tests/data/profile_stability/rhel8/stig_gui.profile -index c8540f9392e..b5b60349a83 100644 ---- a/tests/data/profile_stability/rhel8/stig_gui.profile -+++ b/tests/data/profile_stability/rhel8/stig_gui.profile -@@ -76,6 +76,7 @@ selections: - - accounts_user_interactive_home_directory_defined - - accounts_user_interactive_home_directory_exists - - aide_check_audit_tools -+- agent_mfetpd_running - - aide_scan_notification - - aide_verify_acls - - aide_verify_ext_attributes -@@ -291,6 +292,7 @@ selections: - - package_gssproxy_removed - - package_iprutils_removed - - package_krb5-workstation_removed -+- package_mcafeetp_installed - - package_opensc_installed - - package_openssh-server_installed - - package_policycoreutils_installed diff --git a/SOURCES/scap-security-guide-0.1.58-RHEL_08_010360-PR_7209.patch b/SOURCES/scap-security-guide-0.1.58-RHEL_08_010360-PR_7209.patch deleted file mode 100644 index a43e17b..0000000 --- a/SOURCES/scap-security-guide-0.1.58-RHEL_08_010360-PR_7209.patch +++ /dev/null @@ -1,118 +0,0 @@ -From 386f9787ceac9b0fc732bcd5fd5f7174254922b3 Mon Sep 17 00:00:00 2001 -From: Matthew Burket -Date: Thu, 15 Jul 2021 14:33:44 -0500 -Subject: [PATCH] Update 'Configure Notification of Post-AIDE Scan Details' - -Added -- Ansible fix for this rule -- Configurable email for sending notification email for AIDE alerts ---- - .../aide_scan_notification/ansible/shared.yml | 28 +++++++++++++++++++ - .../aide_scan_notification/bash/shared.sh | 18 ++++++++---- - .../aide/aide_scan_notification/rule.yml | 2 ++ - .../var_aide_scan_notification_email.var | 16 +++++++++++ - 4 files changed, 58 insertions(+), 6 deletions(-) - create mode 100644 linux_os/guide/system/software/integrity/software-integrity/aide/aide_scan_notification/ansible/shared.yml - create mode 100644 linux_os/guide/system/software/integrity/software-integrity/var_aide_scan_notification_email.var - -diff --git a/linux_os/guide/system/software/integrity/software-integrity/aide/aide_scan_notification/ansible/shared.yml b/linux_os/guide/system/software/integrity/software-integrity/aide/aide_scan_notification/ansible/shared.yml -new file mode 100644 -index 00000000000..5c11fc1719e ---- /dev/null -+++ b/linux_os/guide/system/software/integrity/software-integrity/aide/aide_scan_notification/ansible/shared.yml -@@ -0,0 +1,28 @@ -+# platform = Red Hat Enterprise Linux 7,Red Hat Enterprise Linux 8,Red Hat Virtualization 4,multi_platform_wrlinux,multi_platform_ol,multi_platform_sle -+# reboot = false -+# strategy = restrict -+# complexity = low -+# disruption = low -+{{% if product in ["sle12", "sle15"] %}} -+ {{% set aide_path = "/usr/bin/aide" %}} -+{{% else %}} -+ {{% set aide_path = "/usr/sbin/aide" %}} -+{{% endif %}} -+ -+- (xccdf-var var_aide_scan_notification_email) -+ -+- name: "Ensure AIDE is installed" -+ package: -+ name: "{{ item }}" -+ state: present -+ with_items: -+ - aide -+ -+- name: "{{{ rule_title }}}" -+ cron: -+ name: "run AIDE check" -+ minute: 05 -+ hour: 04 -+ weekday: 0 -+ user: root -+ job: '{{{aide_path}}} --check | /bin/mail -s "$(hostname) - AIDE Integrity Check" {{ var_aide_scan_notification_email }}' -diff --git a/linux_os/guide/system/software/integrity/software-integrity/aide/aide_scan_notification/bash/shared.sh b/linux_os/guide/system/software/integrity/software-integrity/aide/aide_scan_notification/bash/shared.sh -index 2f129e568b2..3cb8b72a0bd 100644 ---- a/linux_os/guide/system/software/integrity/software-integrity/aide/aide_scan_notification/bash/shared.sh -+++ b/linux_os/guide/system/software/integrity/software-integrity/aide/aide_scan_notification/bash/shared.sh -@@ -1,6 +1,16 @@ - # platform = multi_platform_all - -+. /usr/share/scap-security-guide/remediation_functions -+ - {{{ bash_package_install("aide") }}} -+{{{ bash_instantiate_variables("var_aide_scan_notification_email") }}} -+{{% if product in ["sle12", "sle15"] %}} -+ {{% set aide_path = "/usr/bin/aide" %}} -+{{% else %}} -+ {{% set aide_path = "/usr/sbin/aide" %}} -+{{% endif %}} -+ -+ - - CRONTAB=/etc/crontab - CRONDIRS='/etc/cron.d /etc/cron.daily /etc/cron.weekly /etc/cron.monthly' -@@ -14,11 +24,7 @@ if [ -f /var/spool/cron/root ]; then - VARSPOOL=/var/spool/cron/root - fi - --if ! grep -qR '^.*\/usr\/sbin\/aide\s*\-\-check.*|.*\/bin\/mail\s*-s\s*".*"\s*root@.*$' $CRONTAB_EXIST $VARSPOOL $CRONDIRS; then --{{% if product in ["sle12", "sle15"] %}} -- echo '0 5 * * * root /usr/bin/aide --check | /bin/mail -s "$(hostname) - AIDE Integrity Check" root@localhost' >> $CRONTAB --{{% else %}} -- echo '0 5 * * * root /usr/sbin/aide --check | /bin/mail -s "$(hostname) - AIDE Integrity Check" root@localhost' >> $CRONTAB --{{% endif %}} -+if ! grep -qR '^.*{{{aide_path}}}\s*\-\-check.*|.*\/bin\/mail\s*-s\s*".*"\s*.*@.*$' $CRONTAB_EXIST $VARSPOOL $CRONDIRS; then -+ echo "0 5 * * * root {{{ aide_path }}} --check | /bin/mail -s \"\$(hostname) - AIDE Integrity Check\" $var_aide_scan_notification_email" >> $CRONTAB - fi - -diff --git a/linux_os/guide/system/software/integrity/software-integrity/aide/aide_scan_notification/rule.yml b/linux_os/guide/system/software/integrity/software-integrity/aide/aide_scan_notification/rule.yml -index 51dae72ee6d..cb35c5c642d 100644 ---- a/linux_os/guide/system/software/integrity/software-integrity/aide/aide_scan_notification/rule.yml -+++ b/linux_os/guide/system/software/integrity/software-integrity/aide/aide_scan_notification/rule.yml -@@ -57,3 +57,5 @@ ocil: |- -
$ grep aide /etc/crontab
- The output should return something similar to the following: -
05 4 * * * root /usr/sbin/aide --check | /bin/mail -s "$(hostname) - AIDE Integrity Check" root@localhost
-+ The email address that the notifications are sent to can be changed by overriding -+
. -diff --git a/linux_os/guide/system/software/integrity/software-integrity/var_aide_scan_notification_email.var b/linux_os/guide/system/software/integrity/software-integrity/var_aide_scan_notification_email.var -new file mode 100644 -index 00000000000..75b9f5d2650 ---- /dev/null -+++ b/linux_os/guide/system/software/integrity/software-integrity/var_aide_scan_notification_email.var -@@ -0,0 +1,16 @@ -+documentation_complete: true -+ -+title: Integrity Scan Notification Email Address -+ -+description: |- -+ Specify the email address for designated personnel if baseline -+ configurations are changed in an unauthorized manner. -+ -+type: string -+ -+operator: equals -+ -+interactive: true -+ -+options: -+ default: root@localhost diff --git a/SOURCES/scap-security-guide-0.1.58-RHEL_08_010400-PR_7411.patch b/SOURCES/scap-security-guide-0.1.58-RHEL_08_010400-PR_7411.patch deleted file mode 100644 index 54ac113..0000000 --- a/SOURCES/scap-security-guide-0.1.58-RHEL_08_010400-PR_7411.patch +++ /dev/null @@ -1,375 +0,0 @@ -From f027c56e45e703663c25dea18f78111d5d8a7e0f Mon Sep 17 00:00:00 2001 -From: Matthew Burket -Date: Thu, 19 Aug 2021 11:16:08 -0500 -Subject: [PATCH] Added rule for RHEL-08-010400 - ---- - .../ansible/shared.yml | 27 +++++++++++++ - .../bash/shared.sh | 33 +++++++++++++++ - .../oval/shared.xml | 30 ++++++++++++++ - .../sssd_certificate_verification/rule.yml | 40 +++++++++++++++++++ - .../tests/correct_value.pass.sh | 6 +++ - .../tests/correct_with_others_before.pass.sh | 6 +++ - .../tests/not_configured.fail.sh | 5 +++ - .../tests/partial_config.fail.sh | 6 +++ - .../tests/wrong_section.fail.sh | 6 +++ - .../tests/wrong_value.fail.sh | 6 +++ - ...rtificate_verification_digest_function.var | 20 ++++++++++ - products/rhel8/profiles/stig.profile | 2 + - shared/references/cce-redhat-avail.txt | 1 - - .../data/profile_stability/rhel8/stig.profile | 4 +- - .../profile_stability/rhel8/stig_gui.profile | 4 +- - 15 files changed, 193 insertions(+), 3 deletions(-) - create mode 100644 linux_os/guide/services/sssd/sssd_certificate_verification/ansible/shared.yml - create mode 100644 linux_os/guide/services/sssd/sssd_certificate_verification/bash/shared.sh - create mode 100644 linux_os/guide/services/sssd/sssd_certificate_verification/oval/shared.xml - create mode 100644 linux_os/guide/services/sssd/sssd_certificate_verification/rule.yml - create mode 100644 linux_os/guide/services/sssd/sssd_certificate_verification/tests/correct_value.pass.sh - create mode 100644 linux_os/guide/services/sssd/sssd_certificate_verification/tests/correct_with_others_before.pass.sh - create mode 100644 linux_os/guide/services/sssd/sssd_certificate_verification/tests/not_configured.fail.sh - create mode 100644 linux_os/guide/services/sssd/sssd_certificate_verification/tests/partial_config.fail.sh - create mode 100644 linux_os/guide/services/sssd/sssd_certificate_verification/tests/wrong_section.fail.sh - create mode 100644 linux_os/guide/services/sssd/sssd_certificate_verification/tests/wrong_value.fail.sh - create mode 100644 linux_os/guide/services/sssd/var_sssd_certificate_verification_digest_function.var - -diff --git a/linux_os/guide/services/sssd/sssd_certificate_verification/ansible/shared.yml b/linux_os/guide/services/sssd/sssd_certificate_verification/ansible/shared.yml -new file mode 100644 -index 00000000000..8e36f0974fd ---- /dev/null -+++ b/linux_os/guide/services/sssd/sssd_certificate_verification/ansible/shared.yml -@@ -0,0 +1,27 @@ -+# platform = multi_platform_fedora,multi_platform_rhel -+# reboot = false -+# strategy = configure -+# complexity = low -+# disruption = medium -+ -+- name: Ensure that "certificate_verification" is not set in /etc/sssd/sssd.conf -+ ini_file: -+ path: /etc/sssd/sssd.conf -+ section: sssd -+ option: certificate_verification -+ state: absent -+ -+- name: 'Ensure that "certificate_verification" is not set in /etc/sssd/conf.d/*.conf' -+ ini_file: -+ path: /etc/sssd/conf.d/*.conf -+ section: sssd -+ option: certificate_verification -+ state: absent -+ -+- name: Ensure that "certificate_verification" is set -+ ini_file: -+ path: /etc/sssd/conf.d/certificate_verification.conf -+ section: sssd -+ option: certificate_verification -+ value: "ocsp_dgst = sha1" -+ state: present -diff --git a/linux_os/guide/services/sssd/sssd_certificate_verification/bash/shared.sh b/linux_os/guide/services/sssd/sssd_certificate_verification/bash/shared.sh -new file mode 100644 -index 00000000000..8f9e5514480 ---- /dev/null -+++ b/linux_os/guide/services/sssd/sssd_certificate_verification/bash/shared.sh -@@ -0,0 +1,33 @@ -+# platform = multi_platform_rhel,multi_platform_fedora -+# reboot = false -+# strategy = configure -+# complexity = low -+# disruption = medium -+ -+# include our remediation functions library -+. /usr/share/scap-security-guide/remediation_functions -+ -+{{{ bash_instantiate_variables("var_sssd_certificate_verification_digest_function") }}} -+ -+found=false -+for f in /etc/sssd/sssd.conf /etc/sssd/conf.d/*.conf; do -+ if [ ! -e "$f" ]; then -+ continue -+ fi -+ cert=$( awk '/^\s*\[/{f=0} /^\s*\[sssd\]/{f=1} f{nu=gensub("^\\s*certificate_verification\\s*=\\s*ocsp_dgst\\s*=\\s*(\\w+).*","\\1",1); if($0!=nu){cert=nu}} END{print cert}' "$f" ) -+ if [ -n "$cert" ] ; then -+ if [ "$cert" != $var_sssd_certificate_verification_digest_function ] ; then -+ sed -i "s/^certificate_verification\s*=.*/certificate_verification = ocsp_dgst = $var_sssd_certificate_verification_digest_function/" "$f" -+ fi -+ found=true -+ fi -+done -+ -+if ! $found ; then -+ SSSD_CONF="/etc/sssd/conf.d/certificate_verification.conf" -+ mkdir -p $( dirname $SSSD_CONF ) -+ touch $SSSD_CONF -+ chown root:root $SSSD_CONF -+ chmod 600 $SSSD_CONF -+ echo -e "[sssd]\ncertificate_verification = ocsp_dgst = $var_sssd_certificate_verification_digest_function" >> $SSSD_CONF -+fi -diff --git a/linux_os/guide/services/sssd/sssd_certificate_verification/oval/shared.xml b/linux_os/guide/services/sssd/sssd_certificate_verification/oval/shared.xml -new file mode 100644 -index 00000000000..77736f54f03 ---- /dev/null -+++ b/linux_os/guide/services/sssd/sssd_certificate_verification/oval/shared.xml -@@ -0,0 +1,30 @@ -+ -+ -+ {{{ oval_metadata("SSSD should be configured with the correct ocsp_dgst -+ digest function") }}} -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ ^/etc/sssd/(sssd|conf\.d/.*)\.conf$ -+ ^[\s]*\[sssd](?:[^\n\[]*\n+)+?[\s]*certificate_verification\s*=\s*ocsp_dgst\s*=\s*(\w+)$ -+ 1 -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/linux_os/guide/services/sssd/sssd_certificate_verification/rule.yml b/linux_os/guide/services/sssd/sssd_certificate_verification/rule.yml -new file mode 100644 -index 00000000000..182e75a2aab ---- /dev/null -+++ b/linux_os/guide/services/sssd/sssd_certificate_verification/rule.yml -@@ -0,0 +1,40 @@ -+documentation_complete: true -+ -+prodtype: fedora,rhel8 -+ -+title: 'Certificate certificate status checking in SSSD' -+ -+description: |- -+ 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. -+ By configuring certificate_verification to ocsp_dgst=sha1 sures that certificates for -+ multifactor solutions are checked via Online Certificate Status Protocol (OCSP). -+ -+rationale: |- -+ Enusring that multifactor solutions certificates are checked via Online Certificate Status Protocol (OCSP) -+ ensures the security of the system. -+ -+severity: medium -+ -+identifiers: -+ cce@rhel8: CCE-86120-3 -+ -+references: -+ disa: CCI-001948 -+ nist: IA-2(11) -+ srg: SRG-OS-000375-GPOS-00160,SRG-OS-000377-GPOS-00162 -+ stigid@rhel8: RHEL-08-010400 -+ -+ -+ocil_clause: 'certificate_verification in sssd is not configured' -+ -+ocil: |- -+ 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 "^#"
-+ If configured properly, output should look like -+
-+        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
-diff --git a/linux_os/guide/services/sssd/sssd_certificate_verification/tests/correct_value.pass.sh b/linux_os/guide/services/sssd/sssd_certificate_verification/tests/correct_value.pass.sh -new file mode 100644 -index 00000000000..24c19f44fdc ---- /dev/null -+++ b/linux_os/guide/services/sssd/sssd_certificate_verification/tests/correct_value.pass.sh -@@ -0,0 +1,6 @@ -+#!/bin/bash -+# packages = sssd-common -+ -+mkdir -p /etc/sssd/conf.d -+touch /etc/sssd/sssd.conf -+echo -e "[sssd]\ncertificate_verification = ocsp_dgst=sha1" >> /etc/sssd/sssd.conf -diff --git a/linux_os/guide/services/sssd/sssd_certificate_verification/tests/correct_with_others_before.pass.sh b/linux_os/guide/services/sssd/sssd_certificate_verification/tests/correct_with_others_before.pass.sh -new file mode 100644 -index 00000000000..982450fc81b ---- /dev/null -+++ b/linux_os/guide/services/sssd/sssd_certificate_verification/tests/correct_with_others_before.pass.sh -@@ -0,0 +1,6 @@ -+#!/bin/bash -+# packages = sssd-common -+ -+mkdir -p /etc/sssd/conf.d -+touch /etc/sssd/sssd.conf -+echo -e "[sssd]\ndifferent_option = test\ncertificate_verification = ocsp_dgst=sha1" >> /etc/sssd/sssd.conf -diff --git a/linux_os/guide/services/sssd/sssd_certificate_verification/tests/not_configured.fail.sh b/linux_os/guide/services/sssd/sssd_certificate_verification/tests/not_configured.fail.sh -new file mode 100644 -index 00000000000..ed011f9d4bc ---- /dev/null -+++ b/linux_os/guide/services/sssd/sssd_certificate_verification/tests/not_configured.fail.sh -@@ -0,0 +1,5 @@ -+#!/bin/bash -+# packages = sssd-common -+ -+mkdir -p /etc/sssd/conf.d -+touch /etc/sssd/sssd.conf -diff --git a/linux_os/guide/services/sssd/sssd_certificate_verification/tests/partial_config.fail.sh b/linux_os/guide/services/sssd/sssd_certificate_verification/tests/partial_config.fail.sh -new file mode 100644 -index 00000000000..3c7c468b9d5 ---- /dev/null -+++ b/linux_os/guide/services/sssd/sssd_certificate_verification/tests/partial_config.fail.sh -@@ -0,0 +1,6 @@ -+#!/bin/bash -+# packages = sssd-common -+ -+mkdir -p /etc/sssd/conf.d -+touch /etc/sssd/sssd.conf -+echo -e "[sssd]\ncertificate_verification = ocsp_dgst=" >> /etc/sssd/sssd.conf -diff --git a/linux_os/guide/services/sssd/sssd_certificate_verification/tests/wrong_section.fail.sh b/linux_os/guide/services/sssd/sssd_certificate_verification/tests/wrong_section.fail.sh -new file mode 100644 -index 00000000000..635ca4bebcc ---- /dev/null -+++ b/linux_os/guide/services/sssd/sssd_certificate_verification/tests/wrong_section.fail.sh -@@ -0,0 +1,6 @@ -+#!/bin/bash -+# packages = sssd-common -+ -+mkdir -p /etc/sssd/conf.d -+touch /etc/sssd/sssd.conf -+echo -e "[ssd]\ncertificate_verification = ocsp_dgst=sha1" >> /etc/sssd/sssd.conf -diff --git a/linux_os/guide/services/sssd/sssd_certificate_verification/tests/wrong_value.fail.sh b/linux_os/guide/services/sssd/sssd_certificate_verification/tests/wrong_value.fail.sh -new file mode 100644 -index 00000000000..93f363edc04 ---- /dev/null -+++ b/linux_os/guide/services/sssd/sssd_certificate_verification/tests/wrong_value.fail.sh -@@ -0,0 +1,6 @@ -+#!/bin/bash -+# packages = sssd-common -+ -+mkdir -p /etc/sssd/conf.d -+touch /etc/sssd/sssd.conf -+echo -e "[sssd]\ncertificate_verification = ocsp_dgst=sha256" >> /etc/sssd/sssd.conf -diff --git a/linux_os/guide/services/sssd/var_sssd_certificate_verification_digest_function.var b/linux_os/guide/services/sssd/var_sssd_certificate_verification_digest_function.var -new file mode 100644 -index 00000000000..cdbd0a13576 ---- /dev/null -+++ b/linux_os/guide/services/sssd/var_sssd_certificate_verification_digest_function.var -@@ -0,0 +1,20 @@ -+documentation_complete: true -+ -+title: 'SSSD certificate_verification option' -+ -+description: |- -+ Value of the certificate_verification option in -+ the SSSD config. -+ -+type: string -+ -+operator: equals -+ -+interactive: true -+ -+options: -+ sha1: sha1 -+ sha256: sha256 -+ sha384: sha384 -+ sha512: sha512 -+ default: sha1 -diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index 9dc9360e899..5b1f709faaf 100644 ---- a/products/rhel8/profiles/stig.profile -+++ b/products/rhel8/profiles/stig.profile -@@ -70,6 +70,7 @@ selections: - - var_auditd_disk_error_action=halt - - var_auditd_max_log_file_action=syslog - - var_auditd_disk_full_action=halt -+ - var_sssd_certificate_verification_digest_function=sha1 - - ### Enable / Configure FIPS - - enable_fips_mode -@@ -275,6 +276,7 @@ selections: - - install_smartcard_packages - - # RHEL-08-010400 -+ - sssd_certificate_verification - - # RHEL-08-010410 - - package_opensc_installed -diff --git a/shared/references/cce-redhat-avail.txt b/shared/references/cce-redhat-avail.txt -index 3b24e19da06..81f94f7dbca 100644 ---- a/shared/references/cce-redhat-avail.txt -+++ b/shared/references/cce-redhat-avail.txt -@@ -236,7 +236,6 @@ CCE-86116-1 - CCE-86117-9 - CCE-86118-7 - CCE-86119-5 --CCE-86120-3 - CCE-86121-1 - CCE-86122-9 - CCE-86123-7 -diff --git a/tests/data/profile_stability/rhel8/stig.profile b/tests/data/profile_stability/rhel8/stig.profile -index e9ba0f0adbf..baef93bba64 100644 ---- a/tests/data/profile_stability/rhel8/stig.profile -+++ b/tests/data/profile_stability/rhel8/stig.profile -@@ -342,6 +342,7 @@ selections: - - sshd_set_keepalive_0 - - sshd_use_strong_rng - - sshd_x11_use_localhost -+- sssd_certificate_verification - - sssd_enable_certmap - - sssd_enable_smartcards - - sssd_offline_cred_expiration -@@ -410,6 +411,7 @@ selections: - - sshd_approved_macs=stig - - sshd_approved_ciphers=stig - - sshd_idle_timeout_value=10_minutes -+- var_accounts_authorized_local_users_regex=rhel8 - - var_accounts_passwords_pam_faillock_deny=3 - - var_accounts_passwords_pam_faillock_fail_interval=900 - - var_accounts_passwords_pam_faillock_unlock_time=never -@@ -425,7 +427,7 @@ selections: - - var_auditd_disk_error_action=halt - - var_auditd_max_log_file_action=syslog - - var_auditd_disk_full_action=halt --- var_accounts_authorized_local_users_regex=rhel8 -+- var_sssd_certificate_verification_digest_function=sha1 - - var_system_crypto_policy=fips - - var_sudo_timestamp_timeout=always_prompt - title: DISA STIG for Red Hat Enterprise Linux 8 -diff --git a/tests/data/profile_stability/rhel8/stig_gui.profile b/tests/data/profile_stability/rhel8/stig_gui.profile -index c8540f9392e..237f66c721f 100644 ---- a/tests/data/profile_stability/rhel8/stig_gui.profile -+++ b/tests/data/profile_stability/rhel8/stig_gui.profile -@@ -353,6 +353,7 @@ selections: - - sshd_set_keepalive_0 - - sshd_use_strong_rng - - sshd_x11_use_localhost -+- sssd_certificate_verification - - sssd_enable_certmap - - sssd_enable_smartcards - - sssd_offline_cred_expiration -@@ -420,6 +421,7 @@ selections: - - sshd_approved_macs=stig - - sshd_approved_ciphers=stig - - sshd_idle_timeout_value=10_minutes -+- var_accounts_authorized_local_users_regex=rhel8 - - var_accounts_passwords_pam_faillock_deny=3 - - var_accounts_passwords_pam_faillock_fail_interval=900 - - var_accounts_passwords_pam_faillock_unlock_time=never -@@ -435,7 +437,7 @@ selections: - - var_auditd_disk_error_action=halt - - var_auditd_max_log_file_action=syslog - - var_auditd_disk_full_action=halt --- var_accounts_authorized_local_users_regex=rhel8 -+- var_sssd_certificate_verification_digest_function=sha1 - - var_system_crypto_policy=fips - - var_sudo_timestamp_timeout=always_prompt - title: DISA STIG with GUI for Red Hat Enterprise Linux 8 diff --git a/SOURCES/scap-security-guide-0.1.58-RHEL_08_010420-PR_7227.patch b/SOURCES/scap-security-guide-0.1.58-RHEL_08_010420-PR_7227.patch deleted file mode 100644 index c6dc193..0000000 --- a/SOURCES/scap-security-guide-0.1.58-RHEL_08_010420-PR_7227.patch +++ /dev/null @@ -1,151 +0,0 @@ -From 278f3b476291d69e45da4dcdfca5a308646224f2 Mon Sep 17 00:00:00 2001 -From: Matthew Burket -Date: Mon, 19 Jul 2021 09:49:57 -0500 -Subject: [PATCH 1/2] Add more checks for bios_enable_execution_restrictions to - ensure we don't miss anything - ---- - .../oval/shared.xml | 18 ++++++++++++++++++ - .../rule.yml | 3 ++- - products/rhel8/profiles/stig.profile | 1 + - .../data/profile_stability/rhel8/stig.profile | 1 + - .../profile_stability/rhel8/stig_gui.profile | 1 + - 5 files changed, 23 insertions(+), 1 deletion(-) - create mode 100644 linux_os/guide/system/permissions/restrictions/enable_nx/bios_enable_execution_restrictions/oval/shared.xml - -diff --git a/linux_os/guide/system/permissions/restrictions/enable_nx/bios_enable_execution_restrictions/oval/shared.xml b/linux_os/guide/system/permissions/restrictions/enable_nx/bios_enable_execution_restrictions/oval/shared.xml -new file mode 100644 -index 00000000000..622a183f99f ---- /dev/null -+++ b/linux_os/guide/system/permissions/restrictions/enable_nx/bios_enable_execution_restrictions/oval/shared.xml -@@ -0,0 +1,18 @@ -+ -+ -+ {{{ oval_metadata("The NX (no-execution) bit flag should be set on the system.") }}} -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ /proc/cpuinfo -+ ^flags[\s]+:.*[\s]+nx[\s]+.*$ -+ 1 -+ -+ -diff --git a/linux_os/guide/system/permissions/restrictions/enable_nx/bios_enable_execution_restrictions/rule.yml b/linux_os/guide/system/permissions/restrictions/enable_nx/bios_enable_execution_restrictions/rule.yml -index 4ca003520ac..b037e374f5b 100644 ---- a/linux_os/guide/system/permissions/restrictions/enable_nx/bios_enable_execution_restrictions/rule.yml -+++ b/linux_os/guide/system/permissions/restrictions/enable_nx/bios_enable_execution_restrictions/rule.yml -@@ -14,7 +14,7 @@ rationale: |- - Computers with the ability to prevent this type of code execution frequently put an option in the BIOS that will - allow users to turn the feature on or off at will. - --severity: unknown -+severity: medium - - identifiers: - cce@rhel7: CCE-27099-1 -@@ -31,5 +31,6 @@ references: - iso27001-2013: A.12.1.2,A.12.5.1,A.12.6.2,A.14.2.2,A.14.2.3,A.14.2.4 - nist: SC-39,CM-6(a) - nist-csf: PR.IP-1 -+ stig@rhel8: RHEL-08-010420 - - platform: machine -diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index 5a0a520ee0a..6372d13cfc9 100644 ---- a/products/rhel8/profiles/stig.profile -+++ b/products/rhel8/profiles/stig.profile -@@ -260,6 +260,7 @@ selections: - - package_opensc_installed - - # RHEL-08-010420 -+ - bios_enable_execution_restrictions - - # RHEL-08-010421 - - grub2_page_poison_argument -diff --git a/tests/data/profile_stability/rhel8/stig.profile b/tests/data/profile_stability/rhel8/stig.profile -index 4be3cf93c25..32f1a24a7a4 100644 ---- a/tests/data/profile_stability/rhel8/stig.profile -+++ b/tests/data/profile_stability/rhel8/stig.profile -@@ -74,6 +74,7 @@ selections: - - auditd_log_format - - auditd_name_format - - banner_etc_issue -+- bios_enable_execution_restrictions - - chronyd_client_only - - chronyd_no_chronyc_network - - chronyd_or_ntpd_set_maxpoll -diff --git a/tests/data/profile_stability/rhel8/stig_gui.profile b/tests/data/profile_stability/rhel8/stig_gui.profile -index 20b8a54861e..d6a27c67dc0 100644 ---- a/tests/data/profile_stability/rhel8/stig_gui.profile -+++ b/tests/data/profile_stability/rhel8/stig_gui.profile -@@ -85,6 +85,7 @@ selections: - - auditd_log_format - - auditd_name_format - - banner_etc_issue -+- bios_enable_execution_restrictions - - chronyd_client_only - - chronyd_no_chronyc_network - - chronyd_or_ntpd_set_maxpoll - -From dac8111b4d89a31cbaa5648f876bd58575a93e86 Mon Sep 17 00:00:00 2001 -From: Matthew Burket -Date: Mon, 19 Jul 2021 09:51:34 -0500 -Subject: [PATCH 2/2] Add oval check for bios_enable_execution_restrictions - ---- - .../oval/shared.xml | 24 ++++++++++++++++++- - 1 file changed, 23 insertions(+), 1 deletion(-) - -diff --git a/linux_os/guide/system/permissions/restrictions/enable_nx/bios_enable_execution_restrictions/oval/shared.xml b/linux_os/guide/system/permissions/restrictions/enable_nx/bios_enable_execution_restrictions/oval/shared.xml -index 622a183f99f..7cc448f8cce 100644 ---- a/linux_os/guide/system/permissions/restrictions/enable_nx/bios_enable_execution_restrictions/oval/shared.xml -+++ b/linux_os/guide/system/permissions/restrictions/enable_nx/bios_enable_execution_restrictions/oval/shared.xml -@@ -1,8 +1,10 @@ - - - {{{ oval_metadata("The NX (no-execution) bit flag should be set on the system.") }}} -- -+ - -+ -+ - - - -@@ -10,9 +12,29 @@ - - - -+ -+ -+ -+ -+ -+ -+ -+ - - /proc/cpuinfo - ^flags[\s]+:.*[\s]+nx[\s]+.*$ - 1 - -+ -+ -+ /var/log/messages -+ ^.+protection: disabled.+ -+ 1 -+ -+ -+ -+ /proc/cmdline -+ .+noexec[0-9]*=off.+ -+ 1 -+ - diff --git a/SOURCES/scap-security-guide-0.1.58-RHEL_08_010630-PR_7250.patch b/SOURCES/scap-security-guide-0.1.58-RHEL_08_010630-PR_7250.patch deleted file mode 100644 index 2f4e268..0000000 --- a/SOURCES/scap-security-guide-0.1.58-RHEL_08_010630-PR_7250.patch +++ /dev/null @@ -1,47 +0,0 @@ -From 4ac2a6db67e03e616b26d39fb0620d4656bac65b Mon Sep 17 00:00:00 2001 -From: Matthew Burket -Date: Wed, 14 Jul 2021 13:19:42 -0500 -Subject: [PATCH] Add RHEL-08-010590 STIG to existing rule - ---- - products/rhel8/profiles/stig.profile | 1 + - tests/data/profile_stability/rhel8/stig.profile | 1 + - tests/data/profile_stability/rhel8/stig_gui.profile | 1 + - 3 files changed, 3 insertions(+) - -diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index 2508008d511..fef1965fb1d 100644 ---- a/products/rhel8/profiles/stig.profile -+++ b/products/rhel8/profiles/stig.profile -@@ -341,6 +341,7 @@ selections: - - mount_option_nodev_nonroot_local_partitions - - # RHEL-08-010590 -+ - mount_option_home_noexec - - # RHEL-08-010600 - - mount_option_nodev_removable_partitions -diff --git a/tests/data/profile_stability/rhel8/stig.profile b/tests/data/profile_stability/rhel8/stig.profile -index 765487c6f16..843d8eb7d0a 100644 ---- a/tests/data/profile_stability/rhel8/stig.profile -+++ b/tests/data/profile_stability/rhel8/stig.profile -@@ -156,6 +156,7 @@ selections: - - mount_option_dev_shm_nodev - - mount_option_dev_shm_noexec - - mount_option_dev_shm_nosuid -+- mount_option_home_noexec - - mount_option_home_nosuid - - mount_option_nodev_nonroot_local_partitions - - mount_option_nodev_remote_filesystems -diff --git a/tests/data/profile_stability/rhel8/stig_gui.profile b/tests/data/profile_stability/rhel8/stig_gui.profile -index 9fd80aac727..6dd0f08b142 100644 ---- a/tests/data/profile_stability/rhel8/stig_gui.profile -+++ b/tests/data/profile_stability/rhel8/stig_gui.profile -@@ -167,6 +167,7 @@ selections: - - mount_option_dev_shm_nodev - - mount_option_dev_shm_noexec - - mount_option_dev_shm_nosuid -+- mount_option_home_noexec - - mount_option_home_nosuid - - mount_option_nodev_nonroot_local_partitions - - mount_option_nodev_remote_filesystems diff --git a/SOURCES/scap-security-guide-0.1.58-RHEL_08_020090-PR_7313.patch b/SOURCES/scap-security-guide-0.1.58-RHEL_08_020090-PR_7313.patch deleted file mode 100644 index 1398a4c..0000000 --- a/SOURCES/scap-security-guide-0.1.58-RHEL_08_020090-PR_7313.patch +++ /dev/null @@ -1,153 +0,0 @@ -From 6eeef4054d707b8b255e9fa600c4c7babffbf5f7 Mon Sep 17 00:00:00 2001 -From: Matthew Burket -Date: Mon, 2 Aug 2021 08:37:04 -0500 -Subject: [PATCH] Add rule for RHEL-08-020090 - ---- - .../sssd/sssd_enable_certmap/rule.yml | 58 +++++++++++++++++++ - .../sssd_enable_certmap/tests/default.fail.sh | 4 ++ - .../tests/with_section.pass.sh | 7 +++ - products/rhel8/profiles/stig.profile | 1 + - shared/references/cce-redhat-avail.txt | 1 - - .../data/profile_stability/rhel8/stig.profile | 1 + - .../profile_stability/rhel8/stig_gui.profile | 1 + - 7 files changed, 72 insertions(+), 1 deletion(-) - create mode 100644 linux_os/guide/services/sssd/sssd_enable_certmap/rule.yml - create mode 100644 linux_os/guide/services/sssd/sssd_enable_certmap/tests/default.fail.sh - create mode 100644 linux_os/guide/services/sssd/sssd_enable_certmap/tests/with_section.pass.sh - -diff --git a/linux_os/guide/services/sssd/sssd_enable_certmap/rule.yml b/linux_os/guide/services/sssd/sssd_enable_certmap/rule.yml -new file mode 100644 -index 0000000000..0614a2f4a0 ---- /dev/null -+++ b/linux_os/guide/services/sssd/sssd_enable_certmap/rule.yml -@@ -0,0 +1,58 @@ -+documentation_complete: true -+ -+prodtype: fedora,rhel8 -+ -+title: 'Enable Certmap in SSSD' -+ -+description: |- -+ SSSD should be configured to verify the certificate of the user or group. To set this up -+ ensure that section like certmap/testing.test/rule_name is setup in -+ /etc/sssd/sssd.conf. For example -+
-+   [certmap/testing.test/rule_name]
-+   matchrule =<SAN>.*EDIPI@mil
-+   maprule = (userCertificate;binary={cert!bin})
-+   domains = testing.test
-+   
-+ -+rationale: |- -+ 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. -+ -+severity: medium -+ -+identifiers: -+ cce@rhel8: CCE-86060-1 -+ -+references: -+ disa: CCI-000187 -+ nist: IA-5 (2) (c) -+ stigid@rhel8: RHEL-08-020090 -+ -+warnings: -+ - general: |- -+ Automatic remediation of this control is not available, since all of the settings in -+ in the certmap need to be customized. -+ -+ocil_clause: 'Certmap is not configured in SSSD' -+ -+ocil: |- -+ To verify Certmap is enabled in SSSD, run the following command: -+
$ cat sudo cat /etc/sssd/sssd.conf
-+ If configured properly, output should contain section like the following -+
-+    [certmap/testing.test/rule_name]
-+    matchrule =<SAN>.*EDIPI@mil
-+    maprule = (userCertificate;binary={cert!bin})
-+    domains = testing.test
-+    
-+ -+template: -+ name: lineinfile -+ vars: -+ path: '/etc/sssd/sssd.conf' -+ text: '^\[certmap\/.+\/.+\]$' -+ backends: -+ ansible: "off" -+ bash: "off" -diff --git a/linux_os/guide/services/sssd/sssd_enable_certmap/tests/default.fail.sh b/linux_os/guide/services/sssd/sssd_enable_certmap/tests/default.fail.sh -new file mode 100644 -index 0000000000..1e31c0da19 ---- /dev/null -+++ b/linux_os/guide/services/sssd/sssd_enable_certmap/tests/default.fail.sh -@@ -0,0 +1,4 @@ -+#!/bin/bash -+ -+touch /etc/sssd/sssd.conf -+sed -i "s/\[certmap.*//g" /etc/sssd/sssd.conf -diff --git a/linux_os/guide/services/sssd/sssd_enable_certmap/tests/with_section.pass.sh b/linux_os/guide/services/sssd/sssd_enable_certmap/tests/with_section.pass.sh -new file mode 100644 -index 0000000000..911e095f5d ---- /dev/null -+++ b/linux_os/guide/services/sssd/sssd_enable_certmap/tests/with_section.pass.sh -@@ -0,0 +1,7 @@ -+#!/bin/bash -+cat >> /etc/sssd/sssd.conf<< EOF -+[certmap/testing.test/rule_name] -+matchrule =.*EDIPI@mil -+maprule = (userCertificate;binary={cert!bin}) -+domains = testing.test -+EOF -diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index f17a7b88b1..ec0a3b1753 100644 ---- a/products/rhel8/profiles/stig.profile -+++ b/products/rhel8/profiles/stig.profile -@@ -503,6 +503,7 @@ selections: - # RHEL-08-020080 - - # RHEL-08-020090 -+ - sssd_enable_certmap - - # RHEL-08-020100 - - accounts_password_pam_retry -diff --git a/shared/references/cce-redhat-avail.txt b/shared/references/cce-redhat-avail.txt -index 73d025484e..e80557f033 100644 ---- a/shared/references/cce-redhat-avail.txt -+++ b/shared/references/cce-redhat-avail.txt -@@ -186,7 +186,6 @@ CCE-86056-9 - CCE-86057-7 - CCE-86058-5 - CCE-86059-3 --CCE-86060-1 - CCE-86061-9 - CCE-86062-7 - CCE-86063-5 -diff --git a/tests/data/profile_stability/rhel8/stig.profile b/tests/data/profile_stability/rhel8/stig.profile -index 236e595604..bffa509b69 100644 ---- a/tests/data/profile_stability/rhel8/stig.profile -+++ b/tests/data/profile_stability/rhel8/stig.profile -@@ -275,6 +275,7 @@ selections: - - sshd_set_keepalive_0 - - sshd_use_strong_rng - - sshd_x11_use_localhost -+- sssd_enable_certmap - - sssd_enable_smartcards - - sssd_offline_cred_expiration - - sudo_remove_no_authenticate -diff --git a/tests/data/profile_stability/rhel8/stig_gui.profile b/tests/data/profile_stability/rhel8/stig_gui.profile -index 9973b5adef..c84ac75c7b 100644 ---- a/tests/data/profile_stability/rhel8/stig_gui.profile -+++ b/tests/data/profile_stability/rhel8/stig_gui.profile -@@ -286,6 +286,7 @@ selections: - - sshd_set_keepalive_0 - - sshd_use_strong_rng - - sshd_x11_use_localhost -+- sssd_enable_certmap - - sssd_enable_smartcards - - sssd_offline_cred_expiration - - sudo_remove_no_authenticate diff --git a/SOURCES/scap-security-guide-0.1.58-RHEL_08_020300-PR_7289.patch b/SOURCES/scap-security-guide-0.1.58-RHEL_08_020300-PR_7289.patch deleted file mode 100644 index 3a18e98..0000000 --- a/SOURCES/scap-security-guide-0.1.58-RHEL_08_020300-PR_7289.patch +++ /dev/null @@ -1,194 +0,0 @@ -From 2af7d6d8f86f80dbac088d115a50162cfc28c542 Mon Sep 17 00:00:00 2001 -From: Matthew Burket -Date: Tue, 27 Jul 2021 07:49:50 -0500 -Subject: [PATCH] Add rule for RHEL-08-020300 - ---- - .../accounts_password_pam_dictcheck/rule.yml | 45 +++++++++++++++++++ - .../tests/disabled.fail.sh | 3 ++ - .../tests/enable.pass.sh | 3 ++ - .../tests/not_defined.fail.sh | 3 ++ - .../var_password_pam_dictcheck.var | 16 +++++++ - products/rhel8/profiles/stig.profile | 2 + - shared/references/cce-redhat-avail.txt | 1 - - .../data/profile_stability/rhel8/stig.profile | 2 + - .../profile_stability/rhel8/stig_gui.profile | 2 + - 9 files changed, 76 insertions(+), 1 deletion(-) - create mode 100644 linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_dictcheck/rule.yml - create mode 100644 linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_dictcheck/tests/disabled.fail.sh - create mode 100644 linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_dictcheck/tests/enable.pass.sh - create mode 100644 linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_dictcheck/tests/not_defined.fail.sh - create mode 100644 linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/var_password_pam_dictcheck.var - -diff --git a/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_dictcheck/rule.yml b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_dictcheck/rule.yml -new file mode 100644 -index 0000000000..2990150c0a ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_dictcheck/rule.yml -@@ -0,0 +1,45 @@ -+documentation_complete: true -+ -+prodtype: fedora,rhel8 -+ -+title: 'Ensure PAM Enforces Password Requirements - Prevent the Use of Dictionary Words' -+ -+description: |- -+ The pam_pwquality module's dictcheck check if passwords contains dictionary words. When -+ dictcheck is set to 1 passwords will be checked for dictionary words. -+ -+rationale: |- -+ 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. -+

-+ Passwords with dictionary words may be more vulnerable to password-guessing attacks. -+ -+severity: medium -+ -+identifiers: -+ cce@rhel8: CCE-86233-4 -+ -+references: -+ disa: CCI-000366 -+ nist: IA-5(c),IA-5(1)(a),CM-6(a),IA-5(4) -+ stigid@rhel8: RHEL-08-020300 -+ -+ocil_clause: 'dictcheck is not found or not equal to the required value' -+ -+ocil: |- -+ To check if dictionary words are disallowed run the following command: -+
$ sudo grep dictcheck /etc/security/pwquality.conf /etc/pwquality.conf.d/*.conf
-+ The dictcheck parameter should be equal to 1. The value should look like -+
dictcheck=1
-+ -+ -+template: -+ name: accounts_password -+ vars: -+ variable: dictcheck -+ operation: equals -diff --git a/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_dictcheck/tests/disabled.fail.sh b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_dictcheck/tests/disabled.fail.sh -new file mode 100644 -index 0000000000..cb84c6d968 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_dictcheck/tests/disabled.fail.sh -@@ -0,0 +1,3 @@ -+#!/bin/bash -+ -+echo "dictcheck=0" > /etc/security/pwquality.conf -diff --git a/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_dictcheck/tests/enable.pass.sh b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_dictcheck/tests/enable.pass.sh -new file mode 100644 -index 0000000000..ceb9f7ec44 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_dictcheck/tests/enable.pass.sh -@@ -0,0 +1,3 @@ -+#!/bin/bash -+ -+echo "dictcheck=1" > /etc/security/pwquality.conf -diff --git a/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_dictcheck/tests/not_defined.fail.sh b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_dictcheck/tests/not_defined.fail.sh -new file mode 100644 -index 0000000000..57e54b6623 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_dictcheck/tests/not_defined.fail.sh -@@ -0,0 +1,3 @@ -+#!/bin/bash -+ -+sed -i s/dictcheck.+//g /etc/security/pwquality.conf -diff --git a/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/var_password_pam_dictcheck.var b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/var_password_pam_dictcheck.var -new file mode 100644 -index 0000000000..26452c3a8e ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/var_password_pam_dictcheck.var -@@ -0,0 +1,16 @@ -+documentation_complete: true -+ -+title: dictcheck -+ -+description: |- -+ Prevent the use of dictionary words for passwords. -+ -+type: number -+ -+operator: equals -+ -+interactive: false -+ -+options: -+ 1: 1 -+ default: 1 -diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index bf410c2087..f17a7b88b1 100644 ---- a/products/rhel8/profiles/stig.profile -+++ b/products/rhel8/profiles/stig.profile -@@ -45,6 +45,7 @@ selections: - - var_password_pam_minlen=15 - - var_password_pam_ocredit=1 - - var_password_pam_dcredit=1 -+ - var_password_pam_dictcheck=1 - - var_password_pam_ucredit=1 - - var_password_pam_lcredit=1 - - var_password_pam_retry=3 -@@ -567,6 +568,7 @@ selections: - - sssd_offline_cred_expiration - - # RHEL-08-020300 -+ - accounts_password_pam_dictcheck - - # RHEL-08-020310 - - accounts_logon_fail_delay -diff --git a/shared/references/cce-redhat-avail.txt b/shared/references/cce-redhat-avail.txt -index 0b794d5c2a..dae4495b2d 100644 ---- a/shared/references/cce-redhat-avail.txt -+++ b/shared/references/cce-redhat-avail.txt -@@ -362,7 +362,6 @@ CCE-86229-2 - CCE-86230-0 - CCE-86231-8 - CCE-86232-6 --CCE-86233-4 - CCE-86234-2 - CCE-86235-9 - CCE-86236-7 -diff --git a/tests/data/profile_stability/rhel8/stig.profile b/tests/data/profile_stability/rhel8/stig.profile -index ddfa13e731..236e595604 100644 ---- a/tests/data/profile_stability/rhel8/stig.profile -+++ b/tests/data/profile_stability/rhel8/stig.profile -@@ -35,6 +35,7 @@ selections: - - accounts_password_all_shadowed_sha512 - - accounts_password_minlen_login_defs - - accounts_password_pam_dcredit -+- accounts_password_pam_dictcheck - - accounts_password_pam_difok - - accounts_password_pam_lcredit - - accounts_password_pam_maxclassrepeat -@@ -332,6 +333,7 @@ selections: - - var_password_pam_minlen=15 - - var_password_pam_ocredit=1 - - var_password_pam_dcredit=1 -+- var_password_pam_dictcheck=1 - - var_password_pam_ucredit=1 - - var_password_pam_lcredit=1 - - var_password_pam_retry=3 -diff --git a/tests/data/profile_stability/rhel8/stig_gui.profile b/tests/data/profile_stability/rhel8/stig_gui.profile -index 017ab8c0e3..9973b5adef 100644 ---- a/tests/data/profile_stability/rhel8/stig_gui.profile -+++ b/tests/data/profile_stability/rhel8/stig_gui.profile -@@ -46,6 +46,7 @@ selections: - - accounts_password_all_shadowed_sha512 - - accounts_password_minlen_login_defs - - accounts_password_pam_dcredit -+- accounts_password_pam_dictcheck - - accounts_password_pam_difok - - accounts_password_pam_lcredit - - accounts_password_pam_maxclassrepeat -@@ -342,6 +343,7 @@ selections: - - var_password_pam_minlen=15 - - var_password_pam_ocredit=1 - - var_password_pam_dcredit=1 -+- var_password_pam_dictcheck=1 - - var_password_pam_ucredit=1 - - var_password_pam_lcredit=1 - - var_password_pam_retry=3 diff --git a/SOURCES/scap-security-guide-0.1.58-RHEL_08_020320-PR_7303.patch b/SOURCES/scap-security-guide-0.1.58-RHEL_08_020320-PR_7303.patch deleted file mode 100644 index 210976a..0000000 --- a/SOURCES/scap-security-guide-0.1.58-RHEL_08_020320-PR_7303.patch +++ /dev/null @@ -1,220 +0,0 @@ -From d6f7334d642fb311d32d7a171c460cd05e6625b8 Mon Sep 17 00:00:00 2001 -From: Matthew Burket -Date: Fri, 6 Aug 2021 10:48:46 -0500 -Subject: [PATCH] Add rule for RHEL-08-020320 - ---- - .../ansible/shared.yml | 0 - .../bash/shared.sh | 2 +- - .../oval/shared.xml | 2 +- - .../accounts_authorized_local_users/rule.yml | 12 +++++++++--- - .../tests/bad_user.fail.sh | 2 ++ - .../tests/default.pass.sh | 16 ++++++++++++++++ - ...var_accounts_authorized_local_users_regex.var | 1 + - products/rhel8/profiles/stig.profile | 3 ++- - shared/references/cce-redhat-avail.txt | 1 - - tests/data/profile_stability/rhel8/stig.profile | 2 ++ - .../profile_stability/rhel8/stig_gui.profile | 2 ++ - 11 files changed, 36 insertions(+), 7 deletions(-) - rename linux_os/guide/system/{software/sap_host => accounts/accounts-restrictions}/accounts_authorized_local_users/ansible/shared.yml (100%) - rename linux_os/guide/system/{software/sap_host => accounts/accounts-restrictions}/accounts_authorized_local_users/bash/shared.sh (95%) - rename linux_os/guide/system/{software/sap_host => accounts/accounts-restrictions}/accounts_authorized_local_users/oval/shared.xml (98%) - rename linux_os/guide/system/{software/sap_host => accounts/accounts-restrictions}/accounts_authorized_local_users/rule.yml (88%) - create mode 100644 linux_os/guide/system/accounts/accounts-restrictions/accounts_authorized_local_users/tests/bad_user.fail.sh - create mode 100644 linux_os/guide/system/accounts/accounts-restrictions/accounts_authorized_local_users/tests/default.pass.sh - rename linux_os/guide/system/{software/sap_host => accounts/accounts-restrictions}/var_accounts_authorized_local_users_regex.var (81%) - -diff --git a/linux_os/guide/system/software/sap_host/accounts_authorized_local_users/ansible/shared.yml b/linux_os/guide/system/accounts/accounts-restrictions/accounts_authorized_local_users/ansible/shared.yml -similarity index 100% -rename from linux_os/guide/system/software/sap_host/accounts_authorized_local_users/ansible/shared.yml -rename to linux_os/guide/system/accounts/accounts-restrictions/accounts_authorized_local_users/ansible/shared.yml -diff --git a/linux_os/guide/system/software/sap_host/accounts_authorized_local_users/bash/shared.sh b/linux_os/guide/system/accounts/accounts-restrictions/accounts_authorized_local_users/bash/shared.sh -similarity index 95% -rename from linux_os/guide/system/software/sap_host/accounts_authorized_local_users/bash/shared.sh -rename to linux_os/guide/system/accounts/accounts-restrictions/accounts_authorized_local_users/bash/shared.sh -index c342acf36d1..fedb02d84ce 100644 ---- a/linux_os/guide/system/software/sap_host/accounts_authorized_local_users/bash/shared.sh -+++ b/linux_os/guide/system/accounts/accounts-restrictions/accounts_authorized_local_users/bash/shared.sh -@@ -10,7 +10,7 @@ default_os_user="root" - for username in $( sed 's/:.*//' /etc/passwd ) ; do - if [[ ! "$username" =~ ($default_os_user|$var_accounts_authorized_local_users_regex) ]]; - then -- userdel $username ; -+ userdel $username ; - fi - done - -diff --git a/linux_os/guide/system/software/sap_host/accounts_authorized_local_users/oval/shared.xml b/linux_os/guide/system/accounts/accounts-restrictions/accounts_authorized_local_users/oval/shared.xml -similarity index 98% -rename from linux_os/guide/system/software/sap_host/accounts_authorized_local_users/oval/shared.xml -rename to linux_os/guide/system/accounts/accounts-restrictions/accounts_authorized_local_users/oval/shared.xml -index 4e42081d0dc..c56799ded20 100644 ---- a/linux_os/guide/system/software/sap_host/accounts_authorized_local_users/oval/shared.xml -+++ b/linux_os/guide/system/accounts/accounts-restrictions/accounts_authorized_local_users/oval/shared.xml -@@ -32,6 +32,6 @@ - var_ref="var_accounts_authorized_local_users_regex"> - - -- - -diff --git a/linux_os/guide/system/software/sap_host/accounts_authorized_local_users/rule.yml b/linux_os/guide/system/accounts/accounts-restrictions/accounts_authorized_local_users/rule.yml -similarity index 88% -rename from linux_os/guide/system/software/sap_host/accounts_authorized_local_users/rule.yml -rename to linux_os/guide/system/accounts/accounts-restrictions/accounts_authorized_local_users/rule.yml -index ddbda30afe6..e2311f6a5c3 100644 ---- a/linux_os/guide/system/software/sap_host/accounts_authorized_local_users/rule.yml -+++ b/linux_os/guide/system/accounts/accounts-restrictions/accounts_authorized_local_users/rule.yml -@@ -1,6 +1,6 @@ - documentation_complete: true - --prodtype: ol7,sle12,sle15 -+prodtype: ol7,sle12,sle15,fedora,rhel8 - - title: 'Only Authorized Local User Accounts Exist on Operating System' - -@@ -26,11 +26,10 @@ rationale: |- - severity: medium - - identifiers: -+ cce@rhel8: CCE-85987-6 - cce@sle12: CCE-83195-8 - cce@sle15: CCE-85561-9 - --severity: medium -- - references: - disa: CCI-000366 - nist@sle12: CM-6(b),CM-6.1(iv) -@@ -41,6 +40,13 @@ references: - - ocil_clause: 'there are unauthorized local user accounts on the system' - -+{{% if 'rhel' in product %}} -+warnings: -+ - general: |- -+ Automatic remediation of this control is not available. Due the unique -+ requirements of each system. -+{{% endif %}} -+ - ocil: |- - To verify that there are no unauthorized local user accounts, run the following command: -
$ less /etc/passwd 
-diff --git a/linux_os/guide/system/accounts/accounts-restrictions/accounts_authorized_local_users/tests/bad_user.fail.sh b/linux_os/guide/system/accounts/accounts-restrictions/accounts_authorized_local_users/tests/bad_user.fail.sh -new file mode 100644 -index 00000000000..6dabaff6bc6 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-restrictions/accounts_authorized_local_users/tests/bad_user.fail.sh -@@ -0,0 +1,2 @@ -+#! /bin/bash -+adduser testuser -diff --git a/linux_os/guide/system/accounts/accounts-restrictions/accounts_authorized_local_users/tests/default.pass.sh b/linux_os/guide/system/accounts/accounts-restrictions/accounts_authorized_local_users/tests/default.pass.sh -new file mode 100644 -index 00000000000..d942f81d04f ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-restrictions/accounts_authorized_local_users/tests/default.pass.sh -@@ -0,0 +1,16 @@ -+#! /bin/bash -+# platform = multi_platform_rhel -+ -+var_accounts_authorized_local_users_regex="^(root|bin|daemon|adm|lp|sync|shutdown|halt|mail|operator|games|ftp|nobody|pegasus|systemd-bus-proxy|systemd-network|dbus|polkitd|abrt|unbound|tss|libstoragemgmt|rpc|colord|usbmuxd$|pcp|saslauth|geoclue|setroubleshoot|rtkit|chrony|qemu|radvd|rpcuser|nfsnobody|pulse|gdm|gnome-initial-setup|postfix|avahi|ntp|sshd|tcpdump|oprofile|uuidd)$" -+ -+# never delete the root user -+default_os_user="root" -+ -+# delete users that is in /etc/passwd but neither in default_os_user -+# nor in var_accounts_authorized_local_users_regex -+for username in $( sed 's/:.*//' /etc/passwd ) ; do -+ if [[ ! "$username" =~ ($default_os_user|$var_accounts_authorized_local_users_regex) ]]; -+ then -+ echo $username ; -+ fi -+done -diff --git a/linux_os/guide/system/software/sap_host/var_accounts_authorized_local_users_regex.var b/linux_os/guide/system/accounts/accounts-restrictions/var_accounts_authorized_local_users_regex.var -similarity index 81% -rename from linux_os/guide/system/software/sap_host/var_accounts_authorized_local_users_regex.var -rename to linux_os/guide/system/accounts/accounts-restrictions/var_accounts_authorized_local_users_regex.var -index 81626307321..2f456764617 100644 ---- a/linux_os/guide/system/software/sap_host/var_accounts_authorized_local_users_regex.var -+++ b/linux_os/guide/system/accounts/accounts-restrictions/var_accounts_authorized_local_users_regex.var -@@ -22,5 +22,6 @@ operator: pattern match - interactive: true - - options: -+ rhel8: "^(root|bin|daemon|adm|lp|sync|shutdown|halt|mail|operator|games|ftp|nobody|pegasus|systemd-bus-proxy|systemd-network|dbus|polkitd|abrt|unbound|tss|libstoragemgmt|rpc|colord|usbmuxd$|pcp|saslauth|geoclue|setroubleshoot|rtkit|chrony|qemu|radvd|rpcuser|nfsnobody|pulse|gdm|gnome-initial-setup|postfix|avahi|ntp|sshd|tcpdump|oprofile|uuidd|systemd-resolve|systemd-coredump|sssd|rngd)$" - ol7forsap: "^(root|bin|daemon|adm|lp|sync|shutdown|halt|mail|operator|games|ftp|nobody|pegasus|systemd-bus-proxy|systemd-network|dbus|polkitd|abrt|unbound|tss|libstoragemgmt|rpc|colord|usbmuxd$|pcp|saslauth|geoclue|setroubleshoot|rtkit|chrony|qemu|radvd|rpcuser|nfsnobody|pulse|gdm|gnome-initial-setup|postfix|avahi|ntp|sshd|tcpdump|oprofile|uuidd)$" - saponol7 : "^(root|bin|daemon|adm|lp|sync|shutdown|halt|mail|operator|games|ftp|nobody|pegasus|systemd-bus-proxy|systemd-network|dbus|polkitd|abrt|unbound|tss|libstoragemgmt|rpc|colord|usbmuxd$|pcp|saslauth|geoclue|setroubleshoot|rtkit|chrony|qemu|radvd|rpcuser|nfsnobody|pulse|gdm|gnome-initial-setup|postfix|avahi|ntp|sshd|tcpdump|oprofile|uuidd|[a-z][a-z0-9][a-z0-9]adm|ora[a-z][a-z0-9][a-z0-9]|sapadm|oracle)$" -diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index f66b2a24a75..ec2929e8dc4 100644 ---- a/products/rhel8/profiles/stig.profile -+++ b/products/rhel8/profiles/stig.profile -@@ -54,6 +54,7 @@ selections: - - sshd_approved_macs=stig - - sshd_approved_ciphers=stig - - sshd_idle_timeout_value=10_minutes -+ - var_accounts_authorized_local_users_regex=rhel8 - - var_accounts_passwords_pam_faillock_deny=3 - - var_accounts_passwords_pam_faillock_fail_interval=900 - - var_accounts_passwords_pam_faillock_unlock_time=never -@@ -576,7 +577,7 @@ selections: - - accounts_logon_fail_delay - - # RHEL-08-020320 -- # - accounts_authorized_local_users -+ - accounts_authorized_local_users - - # RHEL-08-020330 - - sshd_disable_empty_passwords -diff --git a/shared/references/cce-redhat-avail.txt b/shared/references/cce-redhat-avail.txt -index 1d54e8ec15f..3047c2d9b92 100644 ---- a/shared/references/cce-redhat-avail.txt -+++ b/shared/references/cce-redhat-avail.txt -@@ -115,7 +115,6 @@ CCE-85983-5 - CCE-85984-3 - CCE-85985-0 - CCE-85986-8 --CCE-85987-6 - CCE-85988-4 - CCE-85989-2 - CCE-85990-0 -diff --git a/tests/data/profile_stability/rhel8/stig.profile b/tests/data/profile_stability/rhel8/stig.profile -index fcae79f6d88..9496f1e1d1d 100644 ---- a/tests/data/profile_stability/rhel8/stig.profile -+++ b/tests/data/profile_stability/rhel8/stig.profile -@@ -27,6 +27,7 @@ selections: - - account_emergency_expire_date - - account_temp_expire_date - - account_unique_id -+- accounts_authorized_local_users - - accounts_have_homedir_login_defs - - accounts_logon_fail_delay - - accounts_max_concurrent_login_sessions -@@ -358,6 +359,7 @@ selections: - - var_auditd_disk_error_action=halt - - var_auditd_max_log_file_action=syslog - - var_auditd_disk_full_action=halt -+- var_accounts_authorized_local_users_regex=rhel8 - - var_system_crypto_policy=fips - - var_sudo_timestamp_timeout=always_prompt - title: DISA STIG for Red Hat Enterprise Linux 8 -diff --git a/tests/data/profile_stability/rhel8/stig_gui.profile b/tests/data/profile_stability/rhel8/stig_gui.profile -index 2bbd1881f51..9e0c648a5f8 100644 ---- a/tests/data/profile_stability/rhel8/stig_gui.profile -+++ b/tests/data/profile_stability/rhel8/stig_gui.profile -@@ -38,6 +38,7 @@ selections: - - account_emergency_expire_date - - account_temp_expire_date - - account_unique_id -+- accounts_authorized_local_users - - accounts_have_homedir_login_defs - - accounts_logon_fail_delay - - accounts_max_concurrent_login_sessions -@@ -368,6 +369,7 @@ selections: - - var_auditd_disk_error_action=halt - - var_auditd_max_log_file_action=syslog - - var_auditd_disk_full_action=halt -+- var_accounts_authorized_local_users_regex=rhel8 - - var_system_crypto_policy=fips - - var_sudo_timestamp_timeout=always_prompt - title: DISA STIG with GUI for Red Hat Enterprise Linux 8 diff --git a/SOURCES/scap-security-guide-0.1.58-RHEL_08_030610-PR_7256.patch b/SOURCES/scap-security-guide-0.1.58-RHEL_08_030610-PR_7256.patch deleted file mode 100644 index 95c3d1f..0000000 --- a/SOURCES/scap-security-guide-0.1.58-RHEL_08_030610-PR_7256.patch +++ /dev/null @@ -1,211 +0,0 @@ -From 8455c8556a6d828b15ebc62cf511e484dd626a36 Mon Sep 17 00:00:00 2001 -From: Matthew Burket -Date: Fri, 16 Jul 2021 13:16:12 -0500 -Subject: [PATCH] Add rules for RHEL-08-030610 - -Added two rules, one for each of the paths mentioned in the STIG. ---- - .../rule.yml | 35 ++++++++++++++++++ - .../tests/correct_permissions.pass.sh | 6 ++++ - .../tests/incorrect_permissions.fail.sh | 6 ++++ - .../rule.yml | 36 +++++++++++++++++++ - .../tests/correct_permissions.pass.sh | 6 ++++ - .../tests/incorrect_permissions.fail.sh | 6 ++++ - products/rhel8/profiles/stig.profile | 2 ++ - shared/references/cce-redhat-avail.txt | 2 -- - .../data/profile_stability/rhel8/stig.profile | 2 ++ - .../profile_stability/rhel8/stig_gui.profile | 2 ++ - 10 files changed, 101 insertions(+), 2 deletions(-) - create mode 100644 linux_os/guide/system/permissions/files/file_permissions_etc_audit_auditd/rule.yml - create mode 100644 linux_os/guide/system/permissions/files/file_permissions_etc_audit_auditd/tests/correct_permissions.pass.sh - create mode 100644 linux_os/guide/system/permissions/files/file_permissions_etc_audit_auditd/tests/incorrect_permissions.fail.sh - create mode 100644 linux_os/guide/system/permissions/files/file_permissions_etc_audit_rulesd/rule.yml - create mode 100644 linux_os/guide/system/permissions/files/file_permissions_etc_audit_rulesd/tests/correct_permissions.pass.sh - create mode 100644 linux_os/guide/system/permissions/files/file_permissions_etc_audit_rulesd/tests/incorrect_permissions.fail.sh - -diff --git a/linux_os/guide/system/permissions/files/file_permissions_etc_audit_auditd/rule.yml b/linux_os/guide/system/permissions/files/file_permissions_etc_audit_auditd/rule.yml -new file mode 100644 -index 0000000000..1cde3ded5f ---- /dev/null -+++ b/linux_os/guide/system/permissions/files/file_permissions_etc_audit_auditd/rule.yml -@@ -0,0 +1,35 @@ -+documentation_complete: true -+ -+prodtype: fedora,rhel8 -+ -+title: 'Verify Permissions on /etc/audit/auditd.conf' -+ -+description: |- -+ {{{ describe_file_permissions(file="/etc/audit/auditd.conf", perms="0640") }}} -+ -+ -+rationale: |- -+ Without the capability to restrict the roles and individuals that can select which events -+ are audited, unauthorized personnel may be able to prevent the auditing of critical -+ events. Misconfigured audits may degrade the system's performance by overwhelming -+ the audit log. Misconfigured audits may also make it more difficult to establish, -+ correlate, and investigate the events relating to an incident or identify -+ those responsible for one. -+ -+severity: medium -+ -+identifiers: -+ cce@rhel8: CCE-85871-2 -+ -+references: -+ disa: CCI-000171 -+ nist: AU-12(b) -+ srg: SRG-OS-000063-GPOS-00032 -+ stigid@rhel8: RHEL-08-030610 -+ -+template: -+ name: file_permissions -+ vars: -+ filepath: /etc/audit/auditd.conf -+ allow_stricter_permissions: "true" -+ filemode: '0640' -diff --git a/linux_os/guide/system/permissions/files/file_permissions_etc_audit_auditd/tests/correct_permissions.pass.sh b/linux_os/guide/system/permissions/files/file_permissions_etc_audit_auditd/tests/correct_permissions.pass.sh -new file mode 100644 -index 0000000000..8c9b782920 ---- /dev/null -+++ b/linux_os/guide/system/permissions/files/file_permissions_etc_audit_auditd/tests/correct_permissions.pass.sh -@@ -0,0 +1,6 @@ -+#!/bin/bash -+ -+export TESTFILE=/etc/audit/auditd.conf -+mkdir -p /etc/audit/ -+touch $TESTFILE -+chmod 0640 $TESTFILE -diff --git a/linux_os/guide/system/permissions/files/file_permissions_etc_audit_auditd/tests/incorrect_permissions.fail.sh b/linux_os/guide/system/permissions/files/file_permissions_etc_audit_auditd/tests/incorrect_permissions.fail.sh -new file mode 100644 -index 0000000000..a460e0dddd ---- /dev/null -+++ b/linux_os/guide/system/permissions/files/file_permissions_etc_audit_auditd/tests/incorrect_permissions.fail.sh -@@ -0,0 +1,6 @@ -+#!/bin/bash -+ -+export TESTFILLE=/etc/audit/auditd.conf -+mkdir -p /etc/audit/ -+touch $TESTFILLE -+chmod 0644 $TESTFILLE -diff --git a/linux_os/guide/system/permissions/files/file_permissions_etc_audit_rulesd/rule.yml b/linux_os/guide/system/permissions/files/file_permissions_etc_audit_rulesd/rule.yml -new file mode 100644 -index 0000000000..34e1f30367 ---- /dev/null -+++ b/linux_os/guide/system/permissions/files/file_permissions_etc_audit_rulesd/rule.yml -@@ -0,0 +1,36 @@ -+documentation_complete: true -+ -+prodtype: fedora,rhel8 -+ -+title: 'Verify Permissions on /etc/audit/rules.d/*.rules' -+ -+description: |- -+ {{{ describe_file_permissions(file="/etc/audit/rules.d/*.rules", perms="0640") }}} -+ -+ -+rationale: |- -+ Without the capability to restrict the roles and individuals that can select which events -+ are audited, unauthorized personnel may be able to prevent the auditing of critical -+ events. Misconfigured audits may degrade the system's performance by overwhelming -+ the audit log. Misconfigured audits may also make it more difficult to establish, -+ correlate, and investigate the events relating to an incident or identify -+ those responsible for one. -+ -+severity: medium -+ -+identifiers: -+ cce@rhel8: CCE-85875-3 -+ -+references: -+ disa: CCI-000171 -+ nist: AU-12(b) -+ srg: SRG-OS-000063-GPOS-00032 -+ stigid@rhel8: RHEL-08-030610 -+ -+template: -+ name: file_permissions -+ vars: -+ filepath: /etc/audit/rules.d/ -+ file_regex: ^.*rules$ -+ allow_stricter_permissions: "true" -+ filemode: '0640' -diff --git a/linux_os/guide/system/permissions/files/file_permissions_etc_audit_rulesd/tests/correct_permissions.pass.sh b/linux_os/guide/system/permissions/files/file_permissions_etc_audit_rulesd/tests/correct_permissions.pass.sh -new file mode 100644 -index 0000000000..b0a20248c3 ---- /dev/null -+++ b/linux_os/guide/system/permissions/files/file_permissions_etc_audit_rulesd/tests/correct_permissions.pass.sh -@@ -0,0 +1,6 @@ -+#!/bin/bash -+ -+export TESTFILE=/etc/audit/rules.d/test_rule.rules -+mkdir -p /etc/audit/rules.d/ -+touch $TESTFILE -+chmod 0640 $TESTFILE -diff --git a/linux_os/guide/system/permissions/files/file_permissions_etc_audit_rulesd/tests/incorrect_permissions.fail.sh b/linux_os/guide/system/permissions/files/file_permissions_etc_audit_rulesd/tests/incorrect_permissions.fail.sh -new file mode 100644 -index 0000000000..c7fd3a95e9 ---- /dev/null -+++ b/linux_os/guide/system/permissions/files/file_permissions_etc_audit_rulesd/tests/incorrect_permissions.fail.sh -@@ -0,0 +1,6 @@ -+#!/bin/bash -+ -+export TESTFILLE=/etc/audit/rules.d/test_rule.rules -+mkdir -p /etc/audit/rules.d/ -+touch $TESTFILLE -+chmod 0644 $TESTFILLE -diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index 26d0aa9922..5a0a520ee0 100644 ---- a/products/rhel8/profiles/stig.profile -+++ b/products/rhel8/profiles/stig.profile -@@ -801,6 +801,8 @@ selections: - - configure_usbguard_auditbackend - - # RHEL-08-030610 -+ - file_permissions_etc_audit_auditd -+ - file_permissions_etc_audit_rulesd - - # RHEL-08-030620 - -diff --git a/shared/references/cce-redhat-avail.txt b/shared/references/cce-redhat-avail.txt -index ae3375fd4d..24e8149168 100644 ---- a/shared/references/cce-redhat-avail.txt -+++ b/shared/references/cce-redhat-avail.txt -@@ -11,11 +11,9 @@ CCE-85867-0 - CCE-85868-8 - CCE-85869-6 - CCE-85870-4 --CCE-85871-2 - CCE-85872-0 - CCE-85873-8 - CCE-85874-6 --CCE-85875-3 - CCE-85876-1 - CCE-85877-9 - CCE-85878-7 -diff --git a/tests/data/profile_stability/rhel8/stig.profile b/tests/data/profile_stability/rhel8/stig.profile -index a1de1f5561..4be3cf93c2 100644 ---- a/tests/data/profile_stability/rhel8/stig.profile -+++ b/tests/data/profile_stability/rhel8/stig.profile -@@ -123,6 +123,8 @@ selections: - - file_ownership_var_log_audit - - file_permission_user_init_files - - file_permissions_binary_dirs -+- file_permissions_etc_audit_auditd -+- file_permissions_etc_audit_rulesd - - file_permissions_home_directories - - file_permissions_library_dirs - - file_permissions_sshd_private_key -diff --git a/tests/data/profile_stability/rhel8/stig_gui.profile b/tests/data/profile_stability/rhel8/stig_gui.profile -index b7d2be3af3..20b8a54861 100644 ---- a/tests/data/profile_stability/rhel8/stig_gui.profile -+++ b/tests/data/profile_stability/rhel8/stig_gui.profile -@@ -134,6 +134,8 @@ selections: - - file_ownership_var_log_audit - - file_permission_user_init_files - - file_permissions_binary_dirs -+- file_permissions_etc_audit_auditd -+- file_permissions_etc_audit_rulesd - - file_permissions_home_directories - - file_permissions_library_dirs - - file_permissions_sshd_private_key diff --git a/SOURCES/scap-security-guide-0.1.58-RHEL_08_030650-PR_7283.patch b/SOURCES/scap-security-guide-0.1.58-RHEL_08_030650-PR_7283.patch deleted file mode 100644 index b3b0009..0000000 --- a/SOURCES/scap-security-guide-0.1.58-RHEL_08_030650-PR_7283.patch +++ /dev/null @@ -1,327 +0,0 @@ -From 065b6e540a2aa437ddf5239c97ed4e1fddf43b50 Mon Sep 17 00:00:00 2001 -From: Matthew Burket -Date: Mon, 26 Jul 2021 09:00:49 -0500 -Subject: [PATCH] Update rule aide_check_audit_tools for RHEL-08-030650 - ---- - .../aide_check_audit_tools/ansible/shared.yml | 27 ++++++++++++------ - .../aide_check_audit_tools/bash/shared.sh | 25 +++++++++++++++++ - .../aide_check_audit_tools/oval/shared.xml | 20 +++++++++++++ - .../aide/aide_check_audit_tools/rule.yml | 28 ++++++++++++------- - .../tests/correct.pass.sh | 15 ++++++++++ - .../tests/correct_with_selinux.pass.sh | 12 ++++++++ - .../tests/not_config.fail.sh | 14 ++++++++++ - products/rhel8/profiles/stig.profile | 1 + - shared/references/cce-redhat-avail.txt | 1 - - .../data/profile_stability/rhel8/stig.profile | 1 + - .../profile_stability/rhel8/stig_gui.profile | 1 + - 11 files changed, 126 insertions(+), 19 deletions(-) - create mode 100644 linux_os/guide/system/software/integrity/software-integrity/aide/aide_check_audit_tools/bash/shared.sh - create mode 100644 linux_os/guide/system/software/integrity/software-integrity/aide/aide_check_audit_tools/tests/correct.pass.sh - create mode 100644 linux_os/guide/system/software/integrity/software-integrity/aide/aide_check_audit_tools/tests/correct_with_selinux.pass.sh - create mode 100644 linux_os/guide/system/software/integrity/software-integrity/aide/aide_check_audit_tools/tests/not_config.fail.sh - -diff --git a/linux_os/guide/system/software/integrity/software-integrity/aide/aide_check_audit_tools/ansible/shared.yml b/linux_os/guide/system/software/integrity/software-integrity/aide/aide_check_audit_tools/ansible/shared.yml -index 73afaeff869..edef272183d 100644 ---- a/linux_os/guide/system/software/integrity/software-integrity/aide/aide_check_audit_tools/ansible/shared.yml -+++ b/linux_os/guide/system/software/integrity/software-integrity/aide/aide_check_audit_tools/ansible/shared.yml -@@ -1,18 +1,29 @@ --# platform = multi_platform_sle -+# platform = multi_platform_sle,multi_platform_rhel - # reboot = false - # strategy = restrict - # complexity = low - # disruption = low - --- name: Install aide package -- zypper: -- name: aide -- state: latest -+{{% if 'rhel' not in product %}} -+{{% set aide_string = 'p+i+n+u+g+s+b+acl+selinux+xattrs+sha512' %}} -+{{% else %}} -+{{% set aide_string = 'p+i+n+u+g+s+b+acl+xattrs+sha512' %}} -+{{% endif %}} -+ -+ -+ -+- name: Ensure aide is installed -+ package: -+ name: "{{ item }}" -+ state: present -+ with_items: -+ - aide -+ - - - name: Set audit_tools fact - set_fact: - audit_tools: -- - /usr/sbin/audispd -+ {{% if 'rhel' not in product %}}- /usr/sbin/audispd{{% endif %}} - - /usr/sbin/auditctl - - /usr/sbin/auditd - - /usr/sbin/augenrules -@@ -24,11 +35,11 @@ - lineinfile: - path: /etc/aide.conf - regexp: ^{{ item }}\s -- line: "{{ item }} p+i+n+u+g+s+b+acl+selinux+xattrs+sha512" -+ line: "{{ item }} {{{ aide_string }}}" - with_items: "{{ audit_tools }}" - - - name: Configure AIDE to properly protect audit tools - lineinfile: - path: /etc/aide.conf -- line: "{{ item }} p+i+n+u+g+s+b+acl+selinux+xattrs+sha512" -+ line: "{{ item }} {{{ aide_string }}}" - with_items: "{{ audit_tools }}" -diff --git a/linux_os/guide/system/software/integrity/software-integrity/aide/aide_check_audit_tools/bash/shared.sh b/linux_os/guide/system/software/integrity/software-integrity/aide/aide_check_audit_tools/bash/shared.sh -new file mode 100644 -index 00000000000..0875eeec648 ---- /dev/null -+++ b/linux_os/guide/system/software/integrity/software-integrity/aide/aide_check_audit_tools/bash/shared.sh -@@ -0,0 +1,25 @@ -+# platform = multi_platform_rhel -+# reboot = false -+# strategy = restrict -+# complexity = low -+# disruption = low -+. /usr/share/scap-security-guide/remediation_functions -+ -+{{{ bash_package_install("aide") }}} -+ -+{{% set configString = "p+i+n+u+g+s+b+acl+xattrs+sha512" %}} -+{{% set configFile = "/etc/aide.conf" %}} -+{{% for file in ( -+ "/usr/sbin/auditctl", -+ "/usr/sbin/auditd", -+ "/usr/sbin/ausearch", -+ "/usr/sbin/aureport", -+ "/usr/sbin/autrace", -+ "/usr/sbin/augenrules" ) %}} -+ -+if grep -i '^.*{{{file}}}.*$' {{{ configFile }}}; then -+sed -i "s#.*{{{file}}}.*#{{{file}}} {{{ configString }}}#" {{{ configFile }}} -+else -+echo "{{{ file }}} {{{ configString }}}" >> {{{ configFile }}} -+fi -+{{% endfor %}} -diff --git a/linux_os/guide/system/software/integrity/software-integrity/aide/aide_check_audit_tools/oval/shared.xml b/linux_os/guide/system/software/integrity/software-integrity/aide/aide_check_audit_tools/oval/shared.xml -index 32e6325a3ab..22c6276a1f5 100644 ---- a/linux_os/guide/system/software/integrity/software-integrity/aide/aide_check_audit_tools/oval/shared.xml -+++ b/linux_os/guide/system/software/integrity/software-integrity/aide/aide_check_audit_tools/oval/shared.xml -@@ -8,13 +8,19 @@ - - - -+ {{% if 'rhel' not in product %}} - -+ {{% endif %}} - - - - - -+ {{% if 'rhel' not in product %}} - p+i+n+u+g+s+b+acl+selinux+xattrs+sha512 -+ {{% else %}} -+ p\+i\+n\+u\+g\+s\+b\+acl(|\+selinux)\+xattrs\+sha512 -+ {{% endif %}} - - - 1 - - -+ -+ -+ -+ -+ -+ /etc/aide.conf -+ ^/usr/sbin/rsyslogd\s+([^\n]+)$ -+ 1 -+ -+ -+ - -diff --git a/linux_os/guide/system/software/integrity/software-integrity/aide/aide_check_audit_tools/rule.yml b/linux_os/guide/system/software/integrity/software-integrity/aide/aide_check_audit_tools/rule.yml -index 126ee756cc0..17a95bf4b31 100644 ---- a/linux_os/guide/system/software/integrity/software-integrity/aide/aide_check_audit_tools/rule.yml -+++ b/linux_os/guide/system/software/integrity/software-integrity/aide/aide_check_audit_tools/rule.yml -@@ -1,11 +1,11 @@ - documentation_complete: true - --prodtype: sle12,sle15,ubuntu2004 -+prodtype: sle12,sle15,ubuntu2004,rhel8,fedora - - title: 'Configure AIDE to Verify the Audit Tools' - - description: |- -- The SUSE operating system file integrity tool must be configured to protect the integrity of the audit tools. -+ The operating system file integrity tool must be configured to protect the integrity of the audit tools. - - rationale: |- - Protecting the integrity of the tools used for auditing purposes is a -@@ -31,32 +31,40 @@ rationale: |- - severity: medium - - identifiers: -+ cce@rhel8: CCE-85964-5 - cce@sle12: CCE-83204-8 - cce@sle15: CCE-85610-4 - - references: - disa: CCI-001496 -- nist@sle12: AU-9(3),AU-9(3).1 -+ nist: AU-9(3),AU-9(3).1 - srg: SRG-OS-000278-GPOS-00108 -+ stigid@rhel8: RHEL-08-030650 - stigid@sle12: SLES-12-010540 - stigid@sle15: SLES-15-030630 - stigid@ubuntu2004: UBTU-20-010205 - - ocil_clause: 'integrity checks of the audit tools are missing or incomplete' - -+{{% if 'rhel' not in product %}} -+{{% set aide_string = 'p+i+n+u+g+s+b+acl+selinux+xattrs+sha512' %}} -+{{% else %}} -+{{% set aide_string = 'p+i+n+u+g+s+b+acl+xattrs+sha512' %}} -+{{% endif %}} -+ - ocil: |- - Check that AIDE is properly configured to protect the integrity of the - audit tools by running the following command: - -
# sudo cat /etc/aide.conf | grep /usr/sbin/au
- 
--    /usr/sbin/auditctl p+i+n+u+g+s+b+acl+selinux+xattrs+sha512
--    /usr/sbin/auditd p+i+n+u+g+s+b+acl+selinux+xattrs+sha512
--    /usr/sbin/ausearch p+i+n+u+g+s+b+acl+selinux+xattrs+sha512
--    /usr/sbin/aureport p+i+n+u+g+s+b+acl+selinux+xattrs+sha512
--    /usr/sbin/autrace p+i+n+u+g+s+b+acl+selinux+xattrs+sha512
--    /usr/sbin/audispd p+i+n+u+g+s+b+acl+selinux+xattrs+sha512
--    /usr/sbin/augenrules p+i+n+u+g+s+b+acl+selinux+xattrs+sha512
-+ /usr/sbin/auditctl {{{ aide_string }}} -+ /usr/sbin/auditd {{{ aide_string }}} -+ /usr/sbin/ausearch {{{ aide_string }}} -+ /usr/sbin/aureport {{{ aide_string }}} -+ /usr/sbin/autrace {{{ aide_string }}} -+ {{% if 'rhel' not in product %}}/usr/sbin/audispd {{{ aide_string }}}{{% endif %}} -+ /usr/sbin/augenrules {{{ aide_string }}} - - If AIDE is configured properly to protect the integrity of the audit tools, - all lines listed above will be returned from the command. -diff --git a/linux_os/guide/system/software/integrity/software-integrity/aide/aide_check_audit_tools/tests/correct.pass.sh b/linux_os/guide/system/software/integrity/software-integrity/aide/aide_check_audit_tools/tests/correct.pass.sh -new file mode 100644 -index 00000000000..756b88d8a23 ---- /dev/null -+++ b/linux_os/guide/system/software/integrity/software-integrity/aide/aide_check_audit_tools/tests/correct.pass.sh -@@ -0,0 +1,15 @@ -+#!/bin/bash -+# platform = multi_platform_rhel,multi_platform_fedora -+ -+ -+yum -y install aide -+aide --init -+ -+ -+declare -a bins -+bins=('/usr/sbin/auditctl' '/usr/sbin/auditd' '/usr/sbin/augenrules' '/usr/sbin/aureport' '/usr/sbin/ausearch' '/usr/sbin/autrace') -+ -+for theFile in "${bins[@]}" -+do -+ echo "$theFile p+i+n+u+g+s+b+acl+xattrs+sha512" >> /etc/aide.conf -+done -diff --git a/linux_os/guide/system/software/integrity/software-integrity/aide/aide_check_audit_tools/tests/correct_with_selinux.pass.sh b/linux_os/guide/system/software/integrity/software-integrity/aide/aide_check_audit_tools/tests/correct_with_selinux.pass.sh -new file mode 100644 -index 00000000000..f3a2a126d3d ---- /dev/null -+++ b/linux_os/guide/system/software/integrity/software-integrity/aide/aide_check_audit_tools/tests/correct_with_selinux.pass.sh -@@ -0,0 +1,12 @@ -+#!/bin/bash -+# platform = multi_platform_rhel,multi_platform_fedora -+ -+yum -y install aide -+ -+declare -a bins -+bins=('/usr/sbin/auditctl' '/usr/sbin/auditd' '/usr/sbin/augenrules' '/usr/sbin/aureport' '/usr/sbin/ausearch' '/usr/sbin/autrace') -+ -+for theFile in "${bins[@]}" -+do -+ echo "$theFile p+i+n+u+g+s+b+acl+selinux+xattrs+sha5122" >> /etc/aide.conf -+done -diff --git a/linux_os/guide/system/software/integrity/software-integrity/aide/aide_check_audit_tools/tests/not_config.fail.sh b/linux_os/guide/system/software/integrity/software-integrity/aide/aide_check_audit_tools/tests/not_config.fail.sh -new file mode 100644 -index 00000000000..4315cef2073 ---- /dev/null -+++ b/linux_os/guide/system/software/integrity/software-integrity/aide/aide_check_audit_tools/tests/not_config.fail.sh -@@ -0,0 +1,14 @@ -+#!/bin/bash -+# platform = multi_platform_rhel,multi_platform_fedora -+ -+ -+yum -y install aide -+aide --init -+ -+declare -a bins -+bins=('/usr/sbin/auditctl' '/usr/sbin/auditd' '/usr/sbin/augenrules' '/usr/sbin/aureport' '/usr/sbin/ausearch' '/usr/sbin/autrace') -+ -+for theFile in "${bins[@]}" -+do -+ echo sed -i "s#^.*${theFile}.*##g" /etc/aide.conf -+done -diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index 7270a8f91f2..6b3232a9e00 100644 ---- a/products/rhel8/profiles/stig.profile -+++ b/products/rhel8/profiles/stig.profile -@@ -822,6 +822,7 @@ selections: - # RHEL-08-030640 - - # RHEL-08-030650 -+ - aide_check_audit_tools - - # RHEL-08-030660 - - auditd_audispd_configure_sufficiently_large_partition -diff --git a/shared/references/cce-redhat-avail.txt b/shared/references/cce-redhat-avail.txt -index 665f903ead4..ff557cc2323 100644 ---- a/shared/references/cce-redhat-avail.txt -+++ b/shared/references/cce-redhat-avail.txt -@@ -97,7 +97,6 @@ CCE-85960-3 - CCE-85961-1 - CCE-85962-9 - CCE-85963-7 --CCE-85964-5 - CCE-85965-2 - CCE-85966-0 - CCE-85967-8 -diff --git a/tests/data/profile_stability/rhel8/stig.profile b/tests/data/profile_stability/rhel8/stig.profile -index 7d59cfff625..692a1690b19 100644 ---- a/tests/data/profile_stability/rhel8/stig.profile -+++ b/tests/data/profile_stability/rhel8/stig.profile -@@ -60,6 +60,7 @@ selections: - - accounts_user_home_paths_only - - accounts_user_interactive_home_directory_defined - - accounts_user_interactive_home_directory_exists -+- aide_check_audit_tools - - aide_scan_notification - - aide_verify_acls - - aide_verify_ext_attributes -diff --git a/tests/data/profile_stability/rhel8/stig_gui.profile b/tests/data/profile_stability/rhel8/stig_gui.profile -index 2c2daad6f6d..cf119c02a17 100644 ---- a/tests/data/profile_stability/rhel8/stig_gui.profile -+++ b/tests/data/profile_stability/rhel8/stig_gui.profile -@@ -71,6 +71,7 @@ selections: - - accounts_user_home_paths_only - - accounts_user_interactive_home_directory_defined - - accounts_user_interactive_home_directory_exists -+- aide_check_audit_tools - - aide_scan_notification - - aide_verify_acls - - aide_verify_ext_attributes diff --git a/SOURCES/scap-security-guide-0.1.58-RHEL_08_030700-PR_7264.patch b/SOURCES/scap-security-guide-0.1.58-RHEL_08_030700-PR_7264.patch deleted file mode 100644 index 8b40cb8..0000000 --- a/SOURCES/scap-security-guide-0.1.58-RHEL_08_030700-PR_7264.patch +++ /dev/null @@ -1,241 +0,0 @@ -diff --git a/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_overflow_action/ansible/shared.yml b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_overflow_action/ansible/shared.yml -new file mode 100644 -index 0000000000..4f88ed361d ---- /dev/null -+++ b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_overflow_action/ansible/shared.yml -@@ -0,0 +1,8 @@ -+# platform = multi_platform_fedora,multi_platform_rhel -+ -+{{{ ansible_set_config_file(file="/etc/audit/auditd.conf", -+ parameter="overflow_action", -+ value="syslog", -+ separator="=", -+ separator_regex="=", -+ prefix_regex="^\s*") }}} -diff --git a/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_overflow_action/bash/shared.sh b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_overflow_action/bash/shared.sh -new file mode 100644 -index 0000000000..539b9b6582 ---- /dev/null -+++ b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_overflow_action/bash/shared.sh -@@ -0,0 +1,12 @@ -+# platform = multi_platform_fedora,multi_platform_rhel -+# reboot = true -+# strategy = restrict -+# complexity = low -+# disruption = low -+ -+{{{set_config_file(path="/etc/audit/auditd.conf", -+ parameter="overflow_action", -+ value="syslog", -+ separator="=", -+ separator_regex="=", -+ prefix_regex="^\s*")}}} -diff --git a/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_overflow_action/oval/shared.xml b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_overflow_action/oval/shared.xml -new file mode 100644 -index 0000000000..fd45280e4e ---- /dev/null -+++ b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_overflow_action/oval/shared.xml -@@ -0,0 +1,6 @@ -+{{{ oval_check_config_file( -+ path="/etc/audit/auditd.conf", -+ prefix_regex="^(?:.*\\n)*\s*", -+ parameter="overflow_action", -+ value="syslog|single|halt", -+ separator_regex="\s*=\s*") }}} -diff --git a/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_overflow_action/rule.yml b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_overflow_action/rule.yml -new file mode 100644 -index 0000000000..d41ca00076 ---- /dev/null -+++ b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_overflow_action/rule.yml -@@ -0,0 +1,36 @@ -+documentation_complete: true -+ -+title: Appropriate Action Must be Setup When the Internal Audit Event Queue is Full -+ -+description: |- -+ The audit system should have an action setup in the event the internal event queue becomes full. -+ To setup an overflow action edit /etc/audit/auditd.conf. Set overflow_action -+ to one of the following values: syslog, single, halt. -+ -+ -+rationale: |- -+ The audit system should have an action setup in the event the internal event queue becomes full -+ so that no data is lost. -+ -+severity: medium -+ -+identifiers: -+ cce@rhel8: CCE-85889-4 -+ -+references: -+ disa: CCI-001851 -+ nist: AU-4(1) -+ srg: SRG-OS-000342-GPOS-00133,SRG-OS-000479-GPOS-00224 -+ stigid@rhel8: RHEL-08-030700 -+ -+ocil_clause: 'auditd overflow action is not setup correctly' -+ -+ocil: |- -+ Verify the audit system is configured to take an appropriate action when the internal event queue is full: -+
$ sudo grep -i overflow_action /etc/audit/auditd.conf
-+ -+ The output should contain be like overflow_action = syslog -+ -+ If the value of the "overflow_action" option is not set to syslog, -+ single, halt or the line is commented out, ask the System Administrator -+ to indicate how the audit logs are off-loaded to a different system or media. -diff --git a/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_overflow_action/tests/commented_out.fail.sh b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_overflow_action/tests/commented_out.fail.sh -new file mode 100644 -index 0000000000..ec7525b195 ---- /dev/null -+++ b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_overflow_action/tests/commented_out.fail.sh -@@ -0,0 +1,5 @@ -+#!/bin/bash -+# Ensure test system has proper directories/files for test scenario -+bash -x setup.sh -+ -+echo "# overflow_action = syslog" >> /etc/audit/auditd.conf -diff --git a/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_overflow_action/tests/empty.fail.sh b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_overflow_action/tests/empty.fail.sh -new file mode 100644 -index 0000000000..e4d173ab37 ---- /dev/null -+++ b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_overflow_action/tests/empty.fail.sh -@@ -0,0 +1,7 @@ -+#!/bin/bash -+# Ensure test system has proper directories/files for test scenario -+bash -x setup.sh -+ -+if [[ -f $config_file ]]; then -+ echo '' > $config_file -+fi -diff --git a/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_overflow_action/tests/file_not_present.fail.sh b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_overflow_action/tests/file_not_present.fail.sh -new file mode 100644 -index 0000000000..f26cd7cddf ---- /dev/null -+++ b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_overflow_action/tests/file_not_present.fail.sh -@@ -0,0 +1,7 @@ -+#!/bin/bash -+ -+config_file=/etc/audit/auditd.conf -+ -+if [[ -f $config_file ]]; then -+ rm -f $config_file -+fi -diff --git a/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_overflow_action/tests/halt.pass.sh b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_overflow_action/tests/halt.pass.sh -new file mode 100644 -index 0000000000..0ec591b25b ---- /dev/null -+++ b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_overflow_action/tests/halt.pass.sh -@@ -0,0 +1,5 @@ -+#!/bin/bash -+# Ensure test system has proper directories/files for test scenario -+bash -x setup.sh -+ -+echo "overflow_action = halt" >> /etc/audit/auditd.conf -diff --git a/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_overflow_action/tests/ignore.fail.sh b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_overflow_action/tests/ignore.fail.sh -new file mode 100644 -index 0000000000..236ad543fe ---- /dev/null -+++ b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_overflow_action/tests/ignore.fail.sh -@@ -0,0 +1,5 @@ -+#!/bin/bash -+# Ensure test system has proper directories/files for test scenario -+bash -x setup.sh -+ -+echo "overflow_action = ignore" >> /etc/audit/auditd.conf -diff --git a/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_overflow_action/tests/not_present.fail.sh b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_overflow_action/tests/not_present.fail.sh -new file mode 100644 -index 0000000000..74efdcafee ---- /dev/null -+++ b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_overflow_action/tests/not_present.fail.sh -@@ -0,0 +1,5 @@ -+#!/bin/bash -+# Ensure test system has proper directories/files for test scenario -+bash -x setup.sh -+config_file=/etc/audit/auditd.conf -+sed -i "s/^.*overflow_action.*$//" $config_file -diff --git a/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_overflow_action/tests/setup.sh b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_overflow_action/tests/setup.sh -new file mode 100644 -index 0000000000..de11126320 ---- /dev/null -+++ b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_overflow_action/tests/setup.sh -@@ -0,0 +1,9 @@ -+#!/bin/bash -+# Use this script to ensure the audit directory structure and audit conf file -+# exist in the test env. -+config_file=/etc/audit/auditd.conf -+ -+# Ensure directory structure exists (useful for container based testing) -+test -d /etc/audit/ || mkdir -p /etc/audit/ -+ -+test -f $config_file || touch $config_file -diff --git a/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_overflow_action/tests/single.pass.sh b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_overflow_action/tests/single.pass.sh -new file mode 100644 -index 0000000000..f9fa7a935c ---- /dev/null -+++ b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_overflow_action/tests/single.pass.sh -@@ -0,0 +1,5 @@ -+#!/bin/bash -+# Ensure test system has proper directories/files for test scenario -+bash -x setup.sh -+ -+echo "overflow_action = single" >> /etc/audit/auditd.conf -diff --git a/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_overflow_action/tests/syslog.pass.sh b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_overflow_action/tests/syslog.pass.sh -new file mode 100644 -index 0000000000..1c625fb752 ---- /dev/null -+++ b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_overflow_action/tests/syslog.pass.sh -@@ -0,0 +1,5 @@ -+#!/bin/bash -+# Ensure test system has proper directories/files for test scenario -+bash -x setup.sh -+ -+echo "overflow_action = syslog" >> /etc/audit/auditd.conf -diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index 6372d13cfc..5cac78e00d 100644 ---- a/products/rhel8/profiles/stig.profile -+++ b/products/rhel8/profiles/stig.profile -@@ -826,6 +826,7 @@ selections: - - rsyslog_remote_loghost - - # RHEL-08-030700 -+ - auditd_overflow_action - - # RHEL-08-030710 - -diff --git a/shared/references/cce-redhat-avail.txt b/shared/references/cce-redhat-avail.txt -index 24e8149168..b3d9596e1f 100644 ---- a/shared/references/cce-redhat-avail.txt -+++ b/shared/references/cce-redhat-avail.txt -@@ -27,7 +27,6 @@ CCE-85885-2 - CCE-85886-0 - CCE-85887-8 - CCE-85888-6 --CCE-85889-4 - CCE-85890-2 - CCE-85891-0 - CCE-85892-8 -diff --git a/tests/data/profile_stability/rhel8/stig.profile b/tests/data/profile_stability/rhel8/stig.profile -index 32f1a24a7a..c9d23ed1dc 100644 ---- a/tests/data/profile_stability/rhel8/stig.profile -+++ b/tests/data/profile_stability/rhel8/stig.profile -@@ -73,6 +73,7 @@ selections: - - auditd_local_events - - auditd_log_format - - auditd_name_format -+- auditd_overflow_action - - banner_etc_issue - - bios_enable_execution_restrictions - - chronyd_client_only -diff --git a/tests/data/profile_stability/rhel8/stig_gui.profile b/tests/data/profile_stability/rhel8/stig_gui.profile -index d6a27c67dc..7303145141 100644 ---- a/tests/data/profile_stability/rhel8/stig_gui.profile -+++ b/tests/data/profile_stability/rhel8/stig_gui.profile -@@ -84,6 +84,7 @@ selections: - - auditd_local_events - - auditd_log_format - - auditd_name_format -+- auditd_overflow_action - - banner_etc_issue - - bios_enable_execution_restrictions - - chronyd_client_only diff --git a/SOURCES/scap-security-guide-0.1.58-RHEL_08_030710-PR_7268.patch b/SOURCES/scap-security-guide-0.1.58-RHEL_08_030710-PR_7268.patch deleted file mode 100644 index 41d206c..0000000 --- a/SOURCES/scap-security-guide-0.1.58-RHEL_08_030710-PR_7268.patch +++ /dev/null @@ -1,480 +0,0 @@ -From 2f38b61e9b6b26dab05443a9bf03642971cbeeef Mon Sep 17 00:00:00 2001 -From: Matthew Burket -Date: Fri, 23 Jul 2021 16:32:15 -0500 -Subject: [PATCH] Add new rule for RHEL-08-030710 - ---- - .../ansible/shared.yml | 5 +++ - .../bash/shared.sh | 6 +++ - .../oval/shared.xml | 44 +++++++++++++++++++ - .../rule.yml | 38 ++++++++++++++++ - .../tests/default_no_pass.fail.sh | 7 +++ - .../tests/rsyslog.pass.sh | 4 ++ - .../tests/rsyslog_wrong_value.fail.sh | 4 ++ - .../tests/rsyslogd.pass.sh | 4 ++ - .../tests/rsyslogd_wrong_value.fail.sh | 4 ++ - .../tests/setup.sh | 9 ++++ - .../ansible/shared.yml | 5 +++ - .../bash/shared.sh | 5 +++ - .../oval/shared.xml | 44 +++++++++++++++++++ - .../rule.yml | 38 ++++++++++++++++ - .../tests/default_no_pass.fail.sh | 7 +++ - .../tests/rsyslog.pass.sh | 4 ++ - .../tests/rsyslog_wrong_value.fail.sh | 4 ++ - .../tests/rsyslogd.pass.sh | 4 ++ - .../tests/rsyslogd_wrong_value.fail.sh | 4 ++ - .../tests/setup.sh | 9 ++++ - products/rhel8/profiles/stig.profile | 2 + - shared/references/cce-redhat-avail.txt | 2 - - .../data/profile_stability/rhel8/stig.profile | 2 + - .../profile_stability/rhel8/stig_gui.profile | 2 + - 24 files changed, 255 insertions(+), 2 deletions(-) - create mode 100644 linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdrivermode/ansible/shared.yml - create mode 100644 linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdrivermode/bash/shared.sh - create mode 100644 linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdrivermode/oval/shared.xml - create mode 100644 linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdrivermode/rule.yml - create mode 100644 linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdrivermode/tests/default_no_pass.fail.sh - create mode 100644 linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdrivermode/tests/rsyslog.pass.sh - create mode 100644 linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdrivermode/tests/rsyslog_wrong_value.fail.sh - create mode 100644 linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdrivermode/tests/rsyslogd.pass.sh - create mode 100644 linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdrivermode/tests/rsyslogd_wrong_value.fail.sh - create mode 100644 linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdrivermode/tests/setup.sh - create mode 100644 linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_defaultnetstreamdriver/ansible/shared.yml - create mode 100644 linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_defaultnetstreamdriver/bash/shared.sh - create mode 100644 linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_defaultnetstreamdriver/oval/shared.xml - create mode 100644 linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_defaultnetstreamdriver/rule.yml - create mode 100644 linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_defaultnetstreamdriver/tests/default_no_pass.fail.sh - create mode 100644 linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_defaultnetstreamdriver/tests/rsyslog.pass.sh - create mode 100644 linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_defaultnetstreamdriver/tests/rsyslog_wrong_value.fail.sh - create mode 100644 linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_defaultnetstreamdriver/tests/rsyslogd.pass.sh - create mode 100644 linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_defaultnetstreamdriver/tests/rsyslogd_wrong_value.fail.sh - create mode 100644 linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_defaultnetstreamdriver/tests/setup.sh - -diff --git a/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdrivermode/ansible/shared.yml b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdrivermode/ansible/shared.yml -new file mode 100644 -index 0000000000..2d6c5227a8 ---- /dev/null -+++ b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdrivermode/ansible/shared.yml -@@ -0,0 +1,5 @@ -+# platform = Red Hat Enterprise Linux 8,multi_platform_fedora -+ -+{{{ ansible_set_config_file(file="/etc/rsyslog.d/encrypt.conf", -+ parameter="\$ActionSendStreamDriverMode", value="1", create=true, separator=" ", separator_regex=" ") -+}}} -diff --git a/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdrivermode/bash/shared.sh b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdrivermode/bash/shared.sh -new file mode 100644 -index 0000000000..36853d1786 ---- /dev/null -+++ b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdrivermode/bash/shared.sh -@@ -0,0 +1,6 @@ -+#!/bin/bash -+# platform = Red Hat Enterprise Linux 8,multi_platform_fedora -+ -+{{{ set_config_file(path="/etc/rsyslog.d/encrypt.conf", -+ parameter="\$ActionSendStreamDriverMode", value="1", create=true, separator=" ", separator_regex=" ") -+}}} -diff --git a/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdrivermode/oval/shared.xml b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdrivermode/oval/shared.xml -new file mode 100644 -index 0000000000..d21f8af1e4 ---- /dev/null -+++ b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdrivermode/oval/shared.xml -@@ -0,0 +1,44 @@ -+ -+ -+ -+ {{{ oval_metadata("Rsyslogd must encrypt the off-loading of logs off of the system.") }}} -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ /etc/rsyslog.conf -+ ^\$ActionSendStreamDriverMode 1$ -+ 1 -+ -+ -+ -+ -+ -+ -+ -+ /etc/rsyslog.d -+ ^.*conf$ -+ ^\$ActionSendStreamDriverMode 1$ -+ 1 -+ -+ -diff --git a/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdrivermode/rule.yml b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdrivermode/rule.yml -new file mode 100644 -index 0000000000..1bcc33927b ---- /dev/null -+++ b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdrivermode/rule.yml -@@ -0,0 +1,38 @@ -+documentation_complete: true -+ -+title: Ensure Rsyslog Encrypts Off-Loaded Audit Records -+ -+description: |- -+ Rsyslogd is a system utility providing support for message logging. Support -+ for both internet and UNIX domain sockets enables this utility to support both local -+ and remote logging. Couple this utility with gnutls (which is a secure communications -+ library implementing the SSL, TLS and DTLS protocols), and you have a method to securely -+ encrypt and off-load auditing. -+ -+ When using rsyslogd to off-load logs off a encrpytion system must be used. -+ -+rationale: |- -+ The audit records generated by Rsyslog contain valuable information regarding system -+ configuration, user authentication, and other such information. Audit records should be -+ protected from unauthorized access. -+ -+severity: medium -+ -+identifiers: -+ cce@rhel8: CCE-86098-1 -+ -+references: -+ disa: CCI-001851 -+ nist: AU-4(1) -+ srg: SRG-OS-000342-GPOS-00133,SRG-OS-000479-GPOS-00224 -+ stigid@rhel8: RHEL-08-030710 -+ -+ocil_clause: 'rsyslogd ActionSendStreamDriverMode not set to 1' -+ -+ocil: |- -+ Verify the operating system encrypts audit records off-loaded onto a different system -+ or media from the system being audited with the following commands: -+ -+
$ sudo grep -i '$ActionSendStreamDriverMode' /etc/rsyslog.conf /etc/rsyslog.d/*.conf
-+ The output should be -+
/etc/rsyslog.conf:$ActionSendStreamDriverMode 1
-diff --git a/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdrivermode/tests/default_no_pass.fail.sh b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdrivermode/tests/default_no_pass.fail.sh -new file mode 100644 -index 0000000000..3ee5384371 ---- /dev/null -+++ b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdrivermode/tests/default_no_pass.fail.sh -@@ -0,0 +1,7 @@ -+#!/bin/bash -+bash -x setup.sh -+ -+if [[ -f encrypt.conf ]]; then -+ sed -i i/\$ActionSendStreamDriverMod//g /etc/rsyslog.d/encrypt.conf -+fi -+ sed -i i/\$ActionSendStreamDriverMod//g /etc/rsyslog.conf -diff --git a/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdrivermode/tests/rsyslog.pass.sh b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdrivermode/tests/rsyslog.pass.sh -new file mode 100644 -index 0000000000..34105aaa85 ---- /dev/null -+++ b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdrivermode/tests/rsyslog.pass.sh -@@ -0,0 +1,4 @@ -+#!/bin/bash -+bash -x setup.sh -+ -+echo "\$ActionSendStreamDriverMode 1" >> /etc/rsyslog.conf -diff --git a/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdrivermode/tests/rsyslog_wrong_value.fail.sh b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdrivermode/tests/rsyslog_wrong_value.fail.sh -new file mode 100644 -index 0000000000..db87b2956c ---- /dev/null -+++ b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdrivermode/tests/rsyslog_wrong_value.fail.sh -@@ -0,0 +1,4 @@ -+#!/bin/bash -+bash -x setup.sh -+ -+echo "\$ActionSendStreamDriverMode 0" >> /etc/rsyslog.d/encrypt.conf -diff --git a/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdrivermode/tests/rsyslogd.pass.sh b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdrivermode/tests/rsyslogd.pass.sh -new file mode 100644 -index 0000000000..25e7cdf783 ---- /dev/null -+++ b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdrivermode/tests/rsyslogd.pass.sh -@@ -0,0 +1,4 @@ -+#!/bin/bash -+bash -x setup.sh -+ -+echo "\$ActionSendStreamDriverMode 1" >> /etc/rsyslog.d/encrypt.conf -diff --git a/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdrivermode/tests/rsyslogd_wrong_value.fail.sh b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdrivermode/tests/rsyslogd_wrong_value.fail.sh -new file mode 100644 -index 0000000000..d37882acf3 ---- /dev/null -+++ b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdrivermode/tests/rsyslogd_wrong_value.fail.sh -@@ -0,0 +1,4 @@ -+#!/bin/bash -+bash -x setup.sh -+ -+echo "\$ActionSendStreamDriverMode 0" >> /etc/rsyslog -diff --git a/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdrivermode/tests/setup.sh b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdrivermode/tests/setup.sh -new file mode 100644 -index 0000000000..9686f16bcc ---- /dev/null -+++ b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdrivermode/tests/setup.sh -@@ -0,0 +1,9 @@ -+#!/bin/bash -+# Use this script to ensure the rsyslog directory structure and rsyslog conf file -+# exist in the test env. -+config_file=/etc/rsyslog.conf -+ -+# Ensure directory structure exists (useful for container based testing) -+test -f $config_file || touch $config_file -+ -+test -d /etc/rsyslog.d/ || mkdir /etc/rsyslog.d/ -diff --git a/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_defaultnetstreamdriver/ansible/shared.yml b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_defaultnetstreamdriver/ansible/shared.yml -new file mode 100644 -index 0000000000..2ddbfb871f ---- /dev/null -+++ b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_defaultnetstreamdriver/ansible/shared.yml -@@ -0,0 +1,5 @@ -+# platform = Red Hat Enterprise Linux 8,multi_platform_fedora -+ -+{{{ ansible_set_config_file(file="/etc/rsyslog.d/encrypt.conf", -+ parameter="\$DefaultNetstreamDriver", value="gtls", create=true, separator=" ", separator_regex=" ") -+}}} -diff --git a/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_defaultnetstreamdriver/bash/shared.sh b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_defaultnetstreamdriver/bash/shared.sh -new file mode 100644 -index 0000000000..3955346cd3 ---- /dev/null -+++ b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_defaultnetstreamdriver/bash/shared.sh -@@ -0,0 +1,5 @@ -+#!/bin/bash -+# platform = Red Hat Enterprise Linux 8,multi_platform_fedora -+{{{ set_config_file(path="/etc/rsyslog.d/encrypt.conf", -+ parameter="\$DefaultNetstreamDriver", value="gtls", create=true, separator=" ", separator_regex=" ") -+}}} -diff --git a/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_defaultnetstreamdriver/oval/shared.xml b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_defaultnetstreamdriver/oval/shared.xml -new file mode 100644 -index 0000000000..71d39c179d ---- /dev/null -+++ b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_defaultnetstreamdriver/oval/shared.xml -@@ -0,0 +1,44 @@ -+ -+ -+ -+ {{{ oval_metadata("Rsyslogd must encrypt the off-loading of logs off of the system.") }}} -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ /etc/rsyslog.conf -+ ^\$DefaultNetstreamDriver gtls$ -+ 1 -+ -+ -+ -+ -+ -+ -+ -+ /etc/rsyslog.d -+ ^.*conf$ -+ ^\$DefaultNetstreamDriver gtls$ -+ 1 -+ -+ -diff --git a/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_defaultnetstreamdriver/rule.yml b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_defaultnetstreamdriver/rule.yml -new file mode 100644 -index 0000000000..eff85d3fae ---- /dev/null -+++ b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_defaultnetstreamdriver/rule.yml -@@ -0,0 +1,38 @@ -+documentation_complete: true -+ -+title: Ensure Rsyslog Encrypts Off-Loaded Audit Records -+ -+description: |- -+ Rsyslogd is a system utility providing support for message logging. Support -+ for both internet and UNIX domain sockets enables this utility to support both local -+ and remote logging. Couple this utility with gnutls (which is a secure communications -+ library implementing the SSL, TLS and DTLS protocols), and you have a method to securely -+ encrypt and off-load auditing. -+ -+ When using rsyslogd to off-load logs off a encrpytion system must be used. -+ -+rationale: |- -+ The audit records generated by Rsyslog contain valuable information regarding system -+ configuration, user authentication, and other such information. Audit records should be -+ protected from unauthorized access. -+ -+severity: medium -+ -+identifiers: -+ cce@rhel8: CCE-85992-6 -+ -+references: -+ disa: CCI-001851 -+ nist: AU-4(1) -+ srg: SRG-OS-000342-GPOS-00133,SRG-OS-000479-GPOS-00224 -+ stigid@rhel8: RHEL-08-030710 -+ -+ocil_clause: 'rsyslogd DefaultNetstreamDriver not set to gtls' -+ -+ocil: |- -+ Verify the operating system encrypts audit records off-loaded onto a different system -+ or media from the system being audited with the following commands: -+ -+
$ sudo grep -i '$DefaultNetstreamDriver' /etc/rsyslog.conf /etc/rsyslog.d/*.conf
-+ The output should be -+
/etc/rsyslog.conf:$DefaultNetstreamDriver gtls
-diff --git a/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_defaultnetstreamdriver/tests/default_no_pass.fail.sh b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_defaultnetstreamdriver/tests/default_no_pass.fail.sh -new file mode 100644 -index 0000000000..6ab43bfc0d ---- /dev/null -+++ b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_defaultnetstreamdriver/tests/default_no_pass.fail.sh -@@ -0,0 +1,7 @@ -+#!/bin/bash -+bash -x setup.sh -+ -+if [[ -f encrypt.conf ]]; then -+ sed -i i/\$DefaultNetstreamDriver*.$//g /etc/rsyslog.d/encrypt.conf -+fi -+ sed -i i/\$DefaultNetstreamDriver*.$//g /etc/rsyslog.conf -diff --git a/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_defaultnetstreamdriver/tests/rsyslog.pass.sh b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_defaultnetstreamdriver/tests/rsyslog.pass.sh -new file mode 100644 -index 0000000000..40f1bfe087 ---- /dev/null -+++ b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_defaultnetstreamdriver/tests/rsyslog.pass.sh -@@ -0,0 +1,4 @@ -+#!/bin/bash -+bash -x setup.sh -+ -+echo "\$DefaultNetstreamDriver gtls" >> /etc/rsyslog.conf -diff --git a/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_defaultnetstreamdriver/tests/rsyslog_wrong_value.fail.sh b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_defaultnetstreamdriver/tests/rsyslog_wrong_value.fail.sh -new file mode 100644 -index 0000000000..30a1d5b43a ---- /dev/null -+++ b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_defaultnetstreamdriver/tests/rsyslog_wrong_value.fail.sh -@@ -0,0 +1,4 @@ -+#!/bin/bash -+bash -x setup.sh -+ -+echo "\$DefaultNetstreamDriver none" >> /etc/rsyslog.d/encrypt.conf -diff --git a/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_defaultnetstreamdriver/tests/rsyslogd.pass.sh b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_defaultnetstreamdriver/tests/rsyslogd.pass.sh -new file mode 100644 -index 0000000000..44715bca66 ---- /dev/null -+++ b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_defaultnetstreamdriver/tests/rsyslogd.pass.sh -@@ -0,0 +1,4 @@ -+#!/bin/bash -+bash -x setup.sh -+ -+echo "\$DefaultNetstreamDriver gtls" >> /etc/rsyslog.d/encrypt.conf -diff --git a/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_defaultnetstreamdriver/tests/rsyslogd_wrong_value.fail.sh b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_defaultnetstreamdriver/tests/rsyslogd_wrong_value.fail.sh -new file mode 100644 -index 0000000000..30a1d5b43a ---- /dev/null -+++ b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_defaultnetstreamdriver/tests/rsyslogd_wrong_value.fail.sh -@@ -0,0 +1,4 @@ -+#!/bin/bash -+bash -x setup.sh -+ -+echo "\$DefaultNetstreamDriver none" >> /etc/rsyslog.d/encrypt.conf -diff --git a/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_defaultnetstreamdriver/tests/setup.sh b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_defaultnetstreamdriver/tests/setup.sh -new file mode 100644 -index 0000000000..9686f16bcc ---- /dev/null -+++ b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_defaultnetstreamdriver/tests/setup.sh -@@ -0,0 +1,9 @@ -+#!/bin/bash -+# Use this script to ensure the rsyslog directory structure and rsyslog conf file -+# exist in the test env. -+config_file=/etc/rsyslog.conf -+ -+# Ensure directory structure exists (useful for container based testing) -+test -f $config_file || touch $config_file -+ -+test -d /etc/rsyslog.d/ || mkdir /etc/rsyslog.d/ -diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index 6372d13cfc..1cc53cf1e1 100644 ---- a/products/rhel8/profiles/stig.profile -+++ b/products/rhel8/profiles/stig.profile -@@ -828,6 +828,8 @@ selections: - - auditd_overflow_action - - # RHEL-08-030710 -+ - rsyslog_encrypt_offload_defaultnetstreamdriver -+ - rsyslog_encrypt_offload_actionsendstreamdrivermode - - # RHEL-08-030720 - -diff --git a/shared/references/cce-redhat-avail.txt b/shared/references/cce-redhat-avail.txt -index 24e8149168..fdf69f6baa 100644 ---- a/shared/references/cce-redhat-avail.txt -+++ b/shared/references/cce-redhat-avail.txt -@@ -129,7 +129,6 @@ CCE-85988-4 - CCE-85989-2 - CCE-85990-0 - CCE-85991-8 --CCE-85992-6 - CCE-85993-4 - CCE-85994-2 - CCE-85995-9 -@@ -235,7 +234,6 @@ CCE-86094-0 - CCE-86095-7 - CCE-86096-5 - CCE-86097-3 --CCE-86098-1 - CCE-86099-9 - CCE-86100-5 - CCE-86101-3 -diff --git a/tests/data/profile_stability/rhel8/stig.profile b/tests/data/profile_stability/rhel8/stig.profile -index 32f1a24a7a..c0ef381696 100644 ---- a/tests/data/profile_stability/rhel8/stig.profile -+++ b/tests/data/profile_stability/rhel8/stig.profile -@@ -228,6 +228,8 @@ selections: - - require_singleuser_auth - - root_permissions_syslibrary_files - - rsyslog_cron_logging -+- rsyslog_encrypt_offload_actionsendstreamdrivermode -+- rsyslog_encrypt_offload_defaultnetstreamdriver - - rsyslog_remote_access_monitoring - - rsyslog_remote_loghost - - security_patches_up_to_date -diff --git a/tests/data/profile_stability/rhel8/stig_gui.profile b/tests/data/profile_stability/rhel8/stig_gui.profile -index d6a27c67dc..5adeea4a35 100644 ---- a/tests/data/profile_stability/rhel8/stig_gui.profile -+++ b/tests/data/profile_stability/rhel8/stig_gui.profile -@@ -239,6 +239,8 @@ selections: - - require_singleuser_auth - - root_permissions_syslibrary_files - - rsyslog_cron_logging -+- rsyslog_encrypt_offload_actionsendstreamdrivermode -+- rsyslog_encrypt_offload_defaultnetstreamdriver - - rsyslog_remote_access_monitoring - - rsyslog_remote_loghost - - security_patches_up_to_date diff --git a/SOURCES/scap-security-guide-0.1.58-RHEL_08_030720-PR_7288.patch b/SOURCES/scap-security-guide-0.1.58-RHEL_08_030720-PR_7288.patch deleted file mode 100644 index c027a03..0000000 --- a/SOURCES/scap-security-guide-0.1.58-RHEL_08_030720-PR_7288.patch +++ /dev/null @@ -1,389 +0,0 @@ -From fbaa0ae639fbb001e4c9e92d9e35f9dd9309d605 Mon Sep 17 00:00:00 2001 -From: Matthew Burket -Date: Mon, 9 Aug 2021 10:56:36 -0500 -Subject: [PATCH 1/2] Allow set_config_file bash macro and lineinfile to set a - custom sed path separator - -So that if the text has '/' in it the sed path separator can be changed. ---- - .../developer/06_contributing_with_content.md | 3 +++ - shared/macros-bash.jinja | 23 ++++++++++--------- - shared/templates/lineinfile/bash.template | 6 ++++- - 3 files changed, 20 insertions(+), 12 deletions(-) - -diff --git a/docs/manual/developer/06_contributing_with_content.md b/docs/manual/developer/06_contributing_with_content.md -index 245db1550de..c0d62bef5ca 100644 ---- a/docs/manual/developer/06_contributing_with_content.md -+++ b/docs/manual/developer/06_contributing_with_content.md -@@ -1572,6 +1572,9 @@ the following to `rule.yml`: - - **oval_extend_definitions** - optional, list of additional OVAL - definitions that have to pass along the generated check. - -+ **sed_path_separator** - optional, default is `/`, sets the sed path separator. Set this -+ to a character like `#` if `/` is in use in your text. -+ - - Languages: Ansible, Bash, OVAL - - -diff --git a/shared/macros-bash.jinja b/shared/macros-bash.jinja -index d654a0e0e89..7af8038a783 100644 ---- a/shared/macros-bash.jinja -+++ b/shared/macros-bash.jinja -@@ -444,11 +444,12 @@ printf '%s\n' "{{{ message | replace('"', '\\"') }}}" >&2 - # separator_regex: regular expression that describes the separator and surrounding whitespace - # prefix_regex: regular expression describing allowed leading characters at each line - #}} --{{%- macro set_config_file(path, parameter, value, create, insert_after, insert_before, insensitive=true, separator=" ", separator_regex="\s\+", prefix_regex="^\s*") -%}} -- {{%- set line_regex = prefix_regex + ((parameter | escape_regex) | replace("/", "\/")) + separator_regex -%}} -+ -+{{%- macro set_config_file(path, parameter, value, create, insert_after, insert_before, insensitive=true, separator=" ", separator_regex="\s\+", prefix_regex="^\s*", sed_path_separator="/") -%}} - {{%- set new_line = parameter+separator+value -%}} -+ {{%- set line_regex = prefix_regex + ((parameter | escape_regex) | replace("/", "\/")) + separator_regex -%}} - if [ -e "{{{ path }}}" ] ; then -- {{{ lineinfile_absent(path, line_regex, insensitive) | indent(4) }}} -+ {{{ lineinfile_absent(path, line_regex, insensitive, sed_path_separator=sed_path_separator) | indent(4) }}} - else - {{%- if create %}} - touch "{{{ path }}}" -@@ -456,19 +457,19 @@ else - {{{ die("Path '" + path + "' wasn't found on this system. Refusing to continue.", action="return") | indent(4) }}} - {{%- endif %}} - fi --{{{ lineinfile_present(path, new_line, insert_after, insert_before, insensitive) }}} -+{{{ lineinfile_present(path, new_line, insert_after, insert_before, insensitive, sed_path_separator=sed_path_separator) }}} - {{%- endmacro -%}} - --{{%- macro lineinfile_absent(path, regex, insensitive=true) -%}} -+{{%- macro lineinfile_absent(path, regex, insensitive=true, sed_path_separator="/") -%}} - {{%- if insensitive -%}} - {{%- set modifier="Id" -%}} - {{%- else -%}} - {{%- set modifier="d" -%}} - {{%- endif -%}} -- {{% if '/' in regex %}} -- {{{ raise("regex (" + regex + ") uses sed path separator (/) in " + rule_id) }}} -+ {{% if sed_path_separator in regex %}} -+ {{{ raise("regex (" + regex + ") uses sed path separator (" + sed_path_separator + ") in " + rule_id) }}} - {{% endif %}} --LC_ALL=C sed -i "/{{{ regex }}}/{{{ modifier }}}" "{{{ path }}}" -+LC_ALL=C sed -i "{{{ sed_path_separator }}}{{{ regex }}}{{{ sed_path_separator }}}{{{ modifier }}}" "{{{ path }}}" - {{%- endmacro -%}} - - {{%- macro lineinfile_absent_in_directory(dirname, regex, insensitive=true) -%}} -@@ -480,7 +481,7 @@ LC_ALL=C sed -i "/{{{ regex }}}/{{{ modifier }}}" "{{{ path }}}" - LC_ALL=C sed -i "/{{{ regex }}}/{{{ modifier }}}" "{{{ dirname }}}"/* - {{%- endmacro -%}} - --{{%- macro lineinfile_present(path, line, insert_after="", insert_before="", insensitive=true) -%}} -+{{%- macro lineinfile_present(path, line, insert_after="", insert_before="", insensitive=true, sed_path_separator="/") -%}} - {{%- if insensitive -%}} - {{%- set grep_args="-q -m 1 -i" -%}} - {{%- else -%}} -@@ -496,7 +497,7 @@ printf '%s\n' "{{{ line }}}" > "{{{ path }}}" - cat "{{{ path }}}.bak" >> "{{{ path }}}" - {{%- elif insert_after %}} - # Insert after the line matching the regex '{{{ insert_after }}}' --line_number="$(LC_ALL=C grep -n "{{{ insert_after }}}" "{{{ path }}}.bak" | LC_ALL=C sed 's/:.*//g')" -+line_number="$(LC_ALL=C grep -n "{{{ insert_after }}}" "{{{ path }}}.bak" | LC_ALL=C sed 's{{{sed_path_separator}}}:.*{{{sed_path_separator}}}{{{sed_path_separator}}}g')" - if [ -z "$line_number" ]; then - # There was no match of '{{{ insert_after }}}', insert at - # the end of the file. -@@ -508,7 +509,7 @@ else - fi - {{%- elif insert_before %}} - # Insert before the line matching the regex '{{{ insert_before }}}'. --line_number="$(LC_ALL=C grep -n "{{{ insert_before }}}" "{{{ path }}}.bak" | LC_ALL=C sed 's/:.*//g')" -+line_number="$(LC_ALL=C grep -n "{{{ insert_before }}}" "{{{ path }}}.bak" | LC_ALL=C sed 's{{{sed_path_separator}}}:.*{{{sed_path_separator}}}{{{sed_path_separator}}}g')" - if [ -z "$line_number" ]; then - # There was no match of '{{{ insert_before }}}', insert at - # the end of the file. -diff --git a/shared/templates/lineinfile/bash.template b/shared/templates/lineinfile/bash.template -index 0e43e88842a..6d1ca349268 100644 ---- a/shared/templates/lineinfile/bash.template -+++ b/shared/templates/lineinfile/bash.template -@@ -4,4 +4,8 @@ - # complexity = low - # disruption = low - --{{{ set_config_file(PATH, TEXT, value="", create='yes', insert_after="", insert_before="", separator="", separator_regex="", prefix_regex="^\s*") -}}} -+{{% if SED_PATH_SEPARATOR %}} -+ {{{ set_config_file(PATH, TEXT, value="", create='yes', insert_after="", insert_before="", separator="", separator_regex="", prefix_regex="^\s*", sed_path_separator=SED_PATH_SEPARATOR) -}}} -+{{% else %}} -+ {{{ set_config_file(PATH, TEXT, value="", create='yes', insert_after="", insert_before="", separator="", separator_regex="", prefix_regex="^\s*") -}}} -+{{% endif %}} - -From 4b3182bd5d5308fed16f58da9656aa76a4275569 Mon Sep 17 00:00:00 2001 -From: Matthew Burket -Date: Mon, 9 Aug 2021 13:56:32 -0500 -Subject: [PATCH 2/2] Add new rule for RHEL-08-030720 - ---- - .../ansible/shared.yml | 9 ++++ - .../bash/shared.sh | 11 +++++ - .../oval/shared.xml | 43 +++++++++++++++++++ - .../rule.yml | 40 +++++++++++++++++ - .../tests/default_no_pass.fail.sh | 7 +++ - .../tests/rsyslog.pass.sh | 4 ++ - .../tests/rsyslog_wrong_value.fail.sh | 4 ++ - .../tests/rsyslogd.pass.sh | 4 ++ - .../tests/rsyslogd_wrong_value.fail.sh | 4 ++ - .../tests/setup.sh | 9 ++++ - products/rhel8/profiles/stig.profile | 1 + - shared/references/cce-redhat-avail.txt | 1 - - .../data/profile_stability/rhel8/stig.profile | 1 + - .../profile_stability/rhel8/stig_gui.profile | 1 + - 14 files changed, 138 insertions(+), 1 deletion(-) - create mode 100644 linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdriverauthmode/ansible/shared.yml - create mode 100644 linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdriverauthmode/bash/shared.sh - create mode 100644 linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdriverauthmode/oval/shared.xml - create mode 100644 linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdriverauthmode/rule.yml - create mode 100644 linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdriverauthmode/tests/default_no_pass.fail.sh - create mode 100644 linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdriverauthmode/tests/rsyslog.pass.sh - create mode 100644 linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdriverauthmode/tests/rsyslog_wrong_value.fail.sh - create mode 100644 linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdriverauthmode/tests/rsyslogd.pass.sh - create mode 100644 linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdriverauthmode/tests/rsyslogd_wrong_value.fail.sh - create mode 100644 linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdriverauthmode/tests/setup.sh - -diff --git a/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdriverauthmode/ansible/shared.yml b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdriverauthmode/ansible/shared.yml -new file mode 100644 -index 00000000000..637f90003b2 ---- /dev/null -+++ b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdriverauthmode/ansible/shared.yml -@@ -0,0 +1,9 @@ -+# platform = Red Hat Virtualization 4,multi_platform_fedora,multi_platform_rhel -+# reboot = false -+# strategy = configure -+# complexity = low -+# disruption = low -+ -+{{{ ansible_set_config_file_dir(msg, "/etc/rsyslog.conf", "/etc/rsyslog.d", "/etc/rsyslog.conf", -+ "$ActionSendStreamDriverAuthMode", separator=' ', separator_regex='\s', -+ value="x509/name", create='yes') }}} -diff --git a/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdriverauthmode/bash/shared.sh b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdriverauthmode/bash/shared.sh -new file mode 100644 -index 00000000000..71d312f332f ---- /dev/null -+++ b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdriverauthmode/bash/shared.sh -@@ -0,0 +1,11 @@ -+# platform = Red Hat Virtualization 4,multi_platform_fedora,multi_platform_rhel -+# reboot = false -+# strategy = configure -+# complexity = low -+# disruption = low -+ -+if ! grep -s "\$ActionSendStreamDriverAuthMode\s*x509/name" /etc/rsyslog.conf /etc/rsyslog.d/*.conf; then -+ mkdir -p /etc/rsyslog.d -+ sed -i '/^.*\$ActionSendStreamDriverAuthMode.*/d' /etc/rsyslog.conf /etc/rsyslog.d/*.conf -+ echo "\$ActionSendStreamDriverAuthMode x509/name" > /etc/rsyslog.d/stream_driver_auth.conf -+fi -diff --git a/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdriverauthmode/oval/shared.xml b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdriverauthmode/oval/shared.xml -new file mode 100644 -index 00000000000..8e1ec48a974 ---- /dev/null -+++ b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdriverauthmode/oval/shared.xml -@@ -0,0 +1,43 @@ -+ -+ -+ {{{ oval_metadata("Rsyslogd must authenticate remote system its sending logs to.") }}} -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ /etc/rsyslog.conf -+ ^\$ActionSendStreamDriverAuthMode x509/name$ -+ 1 -+ -+ -+ -+ -+ -+ -+ -+ /etc/rsyslog.d -+ ^.*conf$ -+ ^\$ActionSendStreamDriverAuthMode x509/name$ -+ 1 -+ -+ -diff --git a/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdriverauthmode/rule.yml b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdriverauthmode/rule.yml -new file mode 100644 -index 00000000000..beaf8ce96da ---- /dev/null -+++ b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdriverauthmode/rule.yml -@@ -0,0 +1,40 @@ -+documentation_complete: true -+ -+title: Ensure Rsyslog Authenticates Off-Loaded Audit Records -+ -+description: |- -+ Rsyslogd is a system utility providing support for message logging. Support -+ for both internet and UNIX domain sockets enables this utility to support both local -+ and remote logging. Couple this utility with gnutls (which is a secure communications -+ library implementing the SSL, TLS and DTLS protocols), and you have a method to securely -+ encrypt and off-load auditing. -+ -+ When using rsyslogd to off-load logs the remote system must be authenticated. -+ -+rationale: |- -+ The audit records generated by Rsyslog contain valuable information regarding system -+ configuration, user authentication, and other such information. Audit records should be -+ protected from unauthorized access. -+ -+severity: medium -+ -+identifiers: -+ cce@rhel8: CCE-86339-9 -+ -+references: -+ disa: CCI-001851 -+ nist: AU-4(1) -+ srg: SRG-OS-000342-GPOS-00133,SRG-OS-000479-GPOS-00224 -+ stigid@rhel8: RHEL-08-030720 -+ -+ -+ocil_clause: '$ActionSendStreamDriverAuthMode in /etc/rsyslog.conf is not set to x509/name' -+ -+ocil: |- -+ Verify the operating system authenticates the remote logging server for off-loading audit logs with the following command: -+ -+
$ sudo grep -i '$ActionSendStreamDriverAuthMode' /etc/rsyslog.conf /etc/rsyslog.d/*.conf
-+ The output should be -+
$/etc/rsyslog.conf:$ActionSendStreamDriverAuthMode x509/name
-+ -+ -diff --git a/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdriverauthmode/tests/default_no_pass.fail.sh b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdriverauthmode/tests/default_no_pass.fail.sh -new file mode 100644 -index 00000000000..54d70f6b85f ---- /dev/null -+++ b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdriverauthmode/tests/default_no_pass.fail.sh -@@ -0,0 +1,7 @@ -+#!/bin/bash -+bash -x setup.sh -+ -+if [[ -f encrypt.conf ]]; then -+ sed -i "/^\$ActionSendStreamDriverMod.*/d" /etc/rsyslog.conf -+fi -+ sed -i "/^\$ActionSendStreamDriverMod.*/d" /etc/rsyslog.conf -diff --git a/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdriverauthmode/tests/rsyslog.pass.sh b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdriverauthmode/tests/rsyslog.pass.sh -new file mode 100644 -index 00000000000..fe3db6f9c41 ---- /dev/null -+++ b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdriverauthmode/tests/rsyslog.pass.sh -@@ -0,0 +1,4 @@ -+#!/bin/bash -+bash -x setup.sh -+ -+echo "\$ActionSendStreamDriverAuthMode x509/name" >> /etc/rsyslog.conf -diff --git a/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdriverauthmode/tests/rsyslog_wrong_value.fail.sh b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdriverauthmode/tests/rsyslog_wrong_value.fail.sh -new file mode 100644 -index 00000000000..bad06fba0e9 ---- /dev/null -+++ b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdriverauthmode/tests/rsyslog_wrong_value.fail.sh -@@ -0,0 +1,4 @@ -+#!/bin/bash -+bash -x setup.sh -+ -+echo "\$ActionSendStreamDriverAuthMode 0" >> /etc/rsyslog.conf -diff --git a/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdriverauthmode/tests/rsyslogd.pass.sh b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdriverauthmode/tests/rsyslogd.pass.sh -new file mode 100644 -index 00000000000..ab511daecc7 ---- /dev/null -+++ b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdriverauthmode/tests/rsyslogd.pass.sh -@@ -0,0 +1,4 @@ -+#!/bin/bash -+bash -x setup.sh -+ -+echo "\$ActionSendStreamDriverAuthMode x509/name" >> /etc/rsyslog.d/encrypt.conf -diff --git a/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdriverauthmode/tests/rsyslogd_wrong_value.fail.sh b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdriverauthmode/tests/rsyslogd_wrong_value.fail.sh -new file mode 100644 -index 00000000000..02bf64747a7 ---- /dev/null -+++ b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdriverauthmode/tests/rsyslogd_wrong_value.fail.sh -@@ -0,0 +1,4 @@ -+#!/bin/bash -+bash -x setup.sh -+ -+echo "\$ActionSendStreamDriverAuthMode x509/certvalid" >> /etc/rsyslog.d/encrypt.conf -diff --git a/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdriverauthmode/tests/setup.sh b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdriverauthmode/tests/setup.sh -new file mode 100644 -index 00000000000..9686f16bcc9 ---- /dev/null -+++ b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdriverauthmode/tests/setup.sh -@@ -0,0 +1,9 @@ -+#!/bin/bash -+# Use this script to ensure the rsyslog directory structure and rsyslog conf file -+# exist in the test env. -+config_file=/etc/rsyslog.conf -+ -+# Ensure directory structure exists (useful for container based testing) -+test -f $config_file || touch $config_file -+ -+test -d /etc/rsyslog.d/ || mkdir /etc/rsyslog.d/ -diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index ec0a3b17537..382247057cd 100644 ---- a/products/rhel8/profiles/stig.profile -+++ b/products/rhel8/profiles/stig.profile -@@ -854,6 +854,7 @@ selections: - - rsyslog_encrypt_offload_actionsendstreamdrivermode - - # RHEL-08-030720 -+ - rsyslog_encrypt_offload_actionsendstreamdriverauthmode - - # RHEL-08-030730 - # this rule expects configuration in MB instead percentage as how STIG demands -diff --git a/shared/references/cce-redhat-avail.txt b/shared/references/cce-redhat-avail.txt -index 61384c108a0..03211442aba 100644 ---- a/shared/references/cce-redhat-avail.txt -+++ b/shared/references/cce-redhat-avail.txt -@@ -460,7 +460,6 @@ CCE-86335-7 - CCE-86336-5 - CCE-86337-3 - CCE-86338-1 --CCE-86339-9 - CCE-86340-7 - CCE-86341-5 - CCE-86342-3 -diff --git a/tests/data/profile_stability/rhel8/stig.profile b/tests/data/profile_stability/rhel8/stig.profile -index bffa509b698..481e7b28228 100644 ---- a/tests/data/profile_stability/rhel8/stig.profile -+++ b/tests/data/profile_stability/rhel8/stig.profile -@@ -238,6 +238,7 @@ selections: - - require_singleuser_auth - - root_permissions_syslibrary_files - - rsyslog_cron_logging -+- rsyslog_encrypt_offload_actionsendstreamdriverauthmode - - rsyslog_encrypt_offload_actionsendstreamdrivermode - - rsyslog_encrypt_offload_defaultnetstreamdriver - - rsyslog_remote_access_monitoring -diff --git a/tests/data/profile_stability/rhel8/stig_gui.profile b/tests/data/profile_stability/rhel8/stig_gui.profile -index c84ac75c7bf..7fb3d892a30 100644 ---- a/tests/data/profile_stability/rhel8/stig_gui.profile -+++ b/tests/data/profile_stability/rhel8/stig_gui.profile -@@ -249,6 +249,7 @@ selections: - - require_singleuser_auth - - root_permissions_syslibrary_files - - rsyslog_cron_logging -+- rsyslog_encrypt_offload_actionsendstreamdriverauthmode - - rsyslog_encrypt_offload_actionsendstreamdrivermode - - rsyslog_encrypt_offload_defaultnetstreamdriver - - rsyslog_remote_access_monitoring diff --git a/SOURCES/scap-security-guide-0.1.58-RHEL_08_030730-PR_7323.patch b/SOURCES/scap-security-guide-0.1.58-RHEL_08_030730-PR_7323.patch deleted file mode 100644 index 03137f6..0000000 --- a/SOURCES/scap-security-guide-0.1.58-RHEL_08_030730-PR_7323.patch +++ /dev/null @@ -1,357 +0,0 @@ -From 2f4ddb4297f2a14e2bde3b32f76347e2bbe2cb2d Mon Sep 17 00:00:00 2001 -From: Matthew Burket -Date: Thu, 19 Aug 2021 09:47:42 -0500 -Subject: [PATCH] Add new rule for RHEL-07-030330 and RHEL-08-030730 - -This new rule is copy of auditd_data_retention_space_left, but -setup to allow for percentages. ---- - .../auditd_data_retention_space_left/rule.yml | 2 - - .../ansible/shared.yml | 15 ++++++ - .../bash/shared.sh | 7 +++ - .../oval/shared.xml | 32 +++++++++++++ - .../rule.yml | 47 +++++++++++++++++++ - .../tests/no_percent_sign.fail.sh | 6 +++ - .../space_left_greater_than_minimum.pass.sh | 6 +++ - .../tests/space_left_minimum_value.pass.sh | 6 +++ - .../tests/space_left_not_enough.fail.sh | 6 +++ - .../tests/space_left_not_there.fail.sh | 6 +++ - .../var_auditd_space_left_percentage.var | 15 ++++++ - products/rhel7/profiles/stig.profile | 3 +- - products/rhel8/profiles/stig.profile | 7 +-- - shared/references/cce-redhat-avail.txt | 2 - - .../data/profile_stability/rhel8/stig.profile | 3 +- - .../profile_stability/rhel8/stig_gui.profile | 3 +- - 16 files changed, 156 insertions(+), 10 deletions(-) - create mode 100644 linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_data_retention_space_left_percentage/ansible/shared.yml - create mode 100644 linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_data_retention_space_left_percentage/bash/shared.sh - create mode 100644 linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_data_retention_space_left_percentage/oval/shared.xml - create mode 100644 linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_data_retention_space_left_percentage/rule.yml - create mode 100644 linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_data_retention_space_left_percentage/tests/no_percent_sign.fail.sh - create mode 100644 linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_data_retention_space_left_percentage/tests/space_left_greater_than_minimum.pass.sh - create mode 100644 linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_data_retention_space_left_percentage/tests/space_left_minimum_value.pass.sh - create mode 100644 linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_data_retention_space_left_percentage/tests/space_left_not_enough.fail.sh - create mode 100644 linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_data_retention_space_left_percentage/tests/space_left_not_there.fail.sh - create mode 100644 linux_os/guide/system/auditing/configure_auditd_data_retention/var_auditd_space_left_percentage.var - -diff --git a/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_data_retention_space_left/rule.yml b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_data_retention_space_left/rule.yml -index 7fd0470df8..a652d15d0d 100644 ---- a/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_data_retention_space_left/rule.yml -+++ b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_data_retention_space_left/rule.yml -@@ -39,8 +39,6 @@ references: - pcidss: Req-10.7 - srg: SRG-OS-000343-GPOS-00134 - stigid@ol7: OL07-00-030330 -- stigid@rhel7: RHEL-07-030330 -- stigid@rhel8: RHEL-08-030730 - stigid@sle12: SLES-12-020030 - stigid@sle15: SLES-15-030700 - stigid@ubuntu2004: UBTU-20-010217 -diff --git a/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_data_retention_space_left_percentage/ansible/shared.yml b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_data_retention_space_left_percentage/ansible/shared.yml -new file mode 100644 -index 0000000000..ea52773bd3 ---- /dev/null -+++ b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_data_retention_space_left_percentage/ansible/shared.yml -@@ -0,0 +1,15 @@ -+# platform = multi_platform_all -+# reboot = false -+# strategy = restrict -+# complexity = low -+# disruption = low -+{{{ ansible_instantiate_variables("var_auditd_space_left_percentage") }}} -+ -+- name: Configure auditd space_left on Low Disk Space -+ lineinfile: -+ dest: /etc/audit/auditd.conf -+ line: "space_left = {{ var_auditd_space_left_percentage }}%" -+ regexp: '^\s*space_left\s*=\s*.*$' -+ state: present -+ create: yes -+ #notify: reload auditd -diff --git a/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_data_retention_space_left_percentage/bash/shared.sh b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_data_retention_space_left_percentage/bash/shared.sh -new file mode 100644 -index 0000000000..6cc3e9ecbe ---- /dev/null -+++ b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_data_retention_space_left_percentage/bash/shared.sh -@@ -0,0 +1,7 @@ -+# platform = multi_platform_all -+. /usr/share/scap-security-guide/remediation_functions -+{{{ bash_instantiate_variables("var_auditd_space_left_percentage") }}} -+ -+grep -q "^space_left[[:space:]]*=.*$" /etc/audit/auditd.conf && \ -+ sed -i "s/^space_left[[:space:]]*=.*$/space_left = $var_auditd_space_left_percentage%/g" /etc/audit/auditd.conf || \ -+ echo "space_left = $var_auditd_space_left_percentage%" >> /etc/audit/auditd.conf -diff --git a/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_data_retention_space_left_percentage/oval/shared.xml b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_data_retention_space_left_percentage/oval/shared.xml -new file mode 100644 -index 0000000000..2fcd222d29 ---- /dev/null -+++ b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_data_retention_space_left_percentage/oval/shared.xml -@@ -0,0 +1,32 @@ -+ -+ -+ {{{ oval_metadata("space_left setting in /etc/audit/auditd.conf is set to at least a certain value") }}} -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ /etc/audit/auditd.conf -+ -+ -+ ^[\s]*space_left[\s]+=[\s]+(\d+)%[\s]*$ -+ 1 -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_data_retention_space_left_percentage/rule.yml b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_data_retention_space_left_percentage/rule.yml -new file mode 100644 -index 0000000000..ea9d9fcc6b ---- /dev/null -+++ b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_data_retention_space_left_percentage/rule.yml -@@ -0,0 +1,47 @@ -+documentation_complete: true -+ -+prodtype: fedora,rhel7,rhel8,rhel9 -+ -+title: 'Configure auditd space_left on Low Disk Space' -+ -+description: |- -+ The auditd service can be configured to take an action -+ when disk space is running low but prior to running out of space completely. -+ Edit the file /etc/audit/auditd.conf. Add or modify the following line, -+ substituting PERCENTAGE appropriately: -+
space_left = PERCENTAGE%
-+ Set this value to at least 25 to cause the system to -+ notify the user of an issue. -+ -+rationale: |- -+ Notifying administrators of an impending disk space problem may allow them to -+ take corrective action prior to any disruption. -+ -+severity: medium -+ -+identifiers: -+ cce@rhel7: CCE-86056-9 -+ cce@rhel8: CCE-86055-1 -+ -+references: -+ cis-csc: 1,11,12,13,14,15,16,19,2,3,4,5,6,7,8 -+ cobit5: APO11.04,APO12.06,APO13.01,BAI03.05,BAI04.04,BAI08.02,DSS02.02,DSS02.04,DSS02.07,DSS03.01,DSS05.04,DSS05.07,MEA02.01 -+ disa: CCI-001855 -+ isa-62443-2009: 4.2.3.10,4.3.3.3.9,4.3.3.5.8,4.3.4.4.7,4.3.4.5.6,4.3.4.5.7,4.3.4.5.8,4.4.2.1,4.4.2.2,4.4.2.4 -+ isa-62443-2013: 'SR 2.10,SR 2.11,SR 2.12,SR 2.8,SR 2.9,SR 6.1,SR 7.1,SR 7.2' -+ iso27001-2013: A.12.1.3,A.12.4.1,A.12.4.2,A.12.4.3,A.12.4.4,A.12.7.1,A.16.1.4,A.16.1.5,A.16.1.7,A.17.2.1 -+ nist: AU-5(b),AU-5(2),AU-5(1),AU-5(4),CM-6(a) -+ nist-csf: DE.AE-3,DE.AE-5,PR.DS-4,PR.PT-1,RS.AN-1,RS.AN-4 -+ pcidss: Req-10.7 -+ srg: SRG-OS-000343-GPOS-00134 -+ stigid@rhel7: RHEL-07-030330 -+ stigid@rhel8: RHEL-08-030730 -+ vmmsrg: SRG-OS-000343-VMM-001240 -+ -+ocil_clause: 'the system is not configured with a specific percentage to notify administrators of an issue' -+ -+ocil: |- -+ Inspect /etc/audit/auditd.conf and locate the following line to -+ determine if the system is configured correctly: -+
space_left PERCENTAGE%
-+ -diff --git a/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_data_retention_space_left_percentage/tests/no_percent_sign.fail.sh b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_data_retention_space_left_percentage/tests/no_percent_sign.fail.sh -new file mode 100644 -index 0000000000..2e90ce1d7b ---- /dev/null -+++ b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_data_retention_space_left_percentage/tests/no_percent_sign.fail.sh -@@ -0,0 +1,6 @@ -+#!/bin/bash -+# variables = var_auditd_space_left_percentage=25 -+ -+. $SHARED/auditd_utils.sh -+prepare_auditd_test_enviroment -+set_parameters_value /etc/audit/auditd.conf "space_left" "25" -diff --git a/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_data_retention_space_left_percentage/tests/space_left_greater_than_minimum.pass.sh b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_data_retention_space_left_percentage/tests/space_left_greater_than_minimum.pass.sh -new file mode 100644 -index 0000000000..135d6e4258 ---- /dev/null -+++ b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_data_retention_space_left_percentage/tests/space_left_greater_than_minimum.pass.sh -@@ -0,0 +1,6 @@ -+#!/bin/bash -+# variables = var_auditd_space_left_percentage=25 -+ -+. $SHARED/auditd_utils.sh -+prepare_auditd_test_enviroment -+set_parameters_value /etc/audit/auditd.conf "space_left" "35%" -diff --git a/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_data_retention_space_left_percentage/tests/space_left_minimum_value.pass.sh b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_data_retention_space_left_percentage/tests/space_left_minimum_value.pass.sh -new file mode 100644 -index 0000000000..10d652e80e ---- /dev/null -+++ b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_data_retention_space_left_percentage/tests/space_left_minimum_value.pass.sh -@@ -0,0 +1,6 @@ -+#!/bin/bash -+# variables = var_auditd_space_left_percentage=25 -+ -+. $SHARED/auditd_utils.sh -+prepare_auditd_test_enviroment -+set_parameters_value /etc/audit/auditd.conf "space_left" "25%" -diff --git a/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_data_retention_space_left_percentage/tests/space_left_not_enough.fail.sh b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_data_retention_space_left_percentage/tests/space_left_not_enough.fail.sh -new file mode 100644 -index 0000000000..0bf7694b15 ---- /dev/null -+++ b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_data_retention_space_left_percentage/tests/space_left_not_enough.fail.sh -@@ -0,0 +1,6 @@ -+#!/bin/bash -+# variables = var_auditd_space_left_percentage=25 -+ -+. $SHARED/auditd_utils.sh -+prepare_auditd_test_enviroment -+set_parameters_value /etc/audit/auditd.conf "space_left" "15%" -diff --git a/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_data_retention_space_left_percentage/tests/space_left_not_there.fail.sh b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_data_retention_space_left_percentage/tests/space_left_not_there.fail.sh -new file mode 100644 -index 0000000000..34ac5595c6 ---- /dev/null -+++ b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_data_retention_space_left_percentage/tests/space_left_not_there.fail.sh -@@ -0,0 +1,6 @@ -+#!/bin/bash -+# variables = var_auditd_space_left_percentage=25 -+ -+. $SHARED/auditd_utils.sh -+prepare_auditd_test_enviroment -+delete_parameter /etc/audit/auditd.conf "space_left" -diff --git a/linux_os/guide/system/auditing/configure_auditd_data_retention/var_auditd_space_left_percentage.var b/linux_os/guide/system/auditing/configure_auditd_data_retention/var_auditd_space_left_percentage.var -new file mode 100644 -index 0000000000..427a1d4bfa ---- /dev/null -+++ b/linux_os/guide/system/auditing/configure_auditd_data_retention/var_auditd_space_left_percentage.var -@@ -0,0 +1,15 @@ -+documentation_complete: true -+ -+title: 'The percentage remaining in disk space before prompting space_left_action' -+ -+description: 'The setting for space_left as a percentage in /etc/audit/auditd.conf' -+ -+type: number -+ -+interactive: true -+ -+options: -+ 25pc: 25 -+ 50pc: 50 -+ 75pc: 75 -+ default: 25 -diff --git a/products/rhel7/profiles/stig.profile b/products/rhel7/profiles/stig.profile -index 9ca1360005..67e22982cd 100644 ---- a/products/rhel7/profiles/stig.profile -+++ b/products/rhel7/profiles/stig.profile -@@ -50,6 +50,7 @@ selections: - - var_removable_partition=dev_cdrom - - var_auditd_action_mail_acct=root - - var_auditd_space_left_action=email -+ - var_auditd_space_left_percentage=25pc - - var_accounts_user_umask=077 - - var_password_pam_retry=3 - - var_accounts_max_concurrent_login_sessions=10 -@@ -178,8 +179,8 @@ selections: - - auditd_audispd_configure_remote_server - - auditd_audispd_encrypt_sent_records - - auditd_audispd_disk_full_action -- - auditd_data_retention_space_left - - auditd_data_retention_space_left_action -+ - auditd_data_retention_space_left_percentage - - auditd_data_retention_action_mail_acct - - audit_rules_suid_privilege_function - - audit_rules_dac_modification_chown -diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index 36f384621a..10dbc1501b 100644 ---- a/products/rhel8/profiles/stig.profile -+++ b/products/rhel8/profiles/stig.profile -@@ -65,7 +65,7 @@ selections: - - var_auditd_action_mail_acct=root - - var_time_service_set_maxpoll=18_hours - - var_accounts_maximum_age_login_defs=60 -- - var_auditd_space_left=250MB -+ - var_auditd_space_left_percentage=25pc - - var_auditd_space_left_action=email - - var_auditd_disk_error_action=halt - - var_auditd_max_log_file_action=syslog -@@ -922,8 +922,9 @@ selections: - - rsyslog_encrypt_offload_actionsendstreamdriverauthmode - - # RHEL-08-030730 -- # this rule expects configuration in MB instead percentage as how STIG demands -- # - auditd_data_retention_space_left -+ - auditd_data_retention_space_left_percentage -+ -+ # RHEL-08-030731 - - auditd_data_retention_space_left_action - - # RHEL-08-030740 -diff --git a/shared/references/cce-redhat-avail.txt b/shared/references/cce-redhat-avail.txt -index 6c33c2e85f..fcb8125ca4 100644 ---- a/shared/references/cce-redhat-avail.txt -+++ b/shared/references/cce-redhat-avail.txt -@@ -170,8 +170,6 @@ CCE-86051-0 - CCE-86052-8 - CCE-86053-6 - CCE-86054-4 --CCE-86055-1 --CCE-86056-9 - CCE-86057-7 - CCE-86058-5 - CCE-86059-3 -diff --git a/tests/data/profile_stability/rhel8/stig.profile b/tests/data/profile_stability/rhel8/stig.profile -index f3e6c4fa1a..09a5bc3174 100644 ---- a/tests/data/profile_stability/rhel8/stig.profile -+++ b/tests/data/profile_stability/rhel8/stig.profile -@@ -140,6 +140,7 @@ selections: - - auditd_data_retention_action_mail_acct - - auditd_data_retention_max_log_file_action - - auditd_data_retention_space_left_action -+- auditd_data_retention_space_left_percentage - - auditd_local_events - - auditd_log_format - - auditd_name_format -@@ -422,7 +423,7 @@ selections: - - var_auditd_action_mail_acct=root - - var_time_service_set_maxpoll=18_hours - - var_accounts_maximum_age_login_defs=60 --- var_auditd_space_left=250MB -+- var_auditd_space_left_percentage=25pc - - var_auditd_space_left_action=email - - var_auditd_disk_error_action=halt - - var_auditd_max_log_file_action=syslog -diff --git a/tests/data/profile_stability/rhel8/stig_gui.profile b/tests/data/profile_stability/rhel8/stig_gui.profile -index b5b60349a8..5b631a3fe0 100644 ---- a/tests/data/profile_stability/rhel8/stig_gui.profile -+++ b/tests/data/profile_stability/rhel8/stig_gui.profile -@@ -151,6 +151,7 @@ selections: - - auditd_data_retention_action_mail_acct - - auditd_data_retention_max_log_file_action - - auditd_data_retention_space_left_action -+- auditd_data_retention_space_left_percentage - - auditd_local_events - - auditd_log_format - - auditd_name_format -@@ -432,7 +433,7 @@ selections: - - var_auditd_action_mail_acct=root - - var_time_service_set_maxpoll=18_hours - - var_accounts_maximum_age_login_defs=60 --- var_auditd_space_left=250MB -+- var_auditd_space_left_percentage=25pc - - var_auditd_space_left_action=email - - var_auditd_disk_error_action=halt - - var_auditd_max_log_file_action=syslog diff --git a/SOURCES/scap-security-guide-0.1.58-RHEL_08_040286-PR_7354.patch b/SOURCES/scap-security-guide-0.1.58-RHEL_08_040286-PR_7354.patch deleted file mode 100644 index c474d79..0000000 --- a/SOURCES/scap-security-guide-0.1.58-RHEL_08_040286-PR_7354.patch +++ /dev/null @@ -1,66 +0,0 @@ -From 994b50e9a47e222c2a27fde231cbf3e2f6f77aed Mon Sep 17 00:00:00 2001 -From: Matthew Burket -Date: Fri, 6 Aug 2021 15:26:28 -0500 -Subject: [PATCH] Select sysctl_net_core_bpf_jit_harden for RHEL-08-040286 - ---- - .../restrictions/sysctl_net_core_bpf_jit_harden/rule.yml | 3 +++ - products/rhel8/profiles/stig.profile | 3 +++ - tests/data/profile_stability/rhel8/stig.profile | 1 + - tests/data/profile_stability/rhel8/stig_gui.profile | 1 + - 4 files changed, 8 insertions(+) - -diff --git a/linux_os/guide/system/permissions/restrictions/sysctl_net_core_bpf_jit_harden/rule.yml b/linux_os/guide/system/permissions/restrictions/sysctl_net_core_bpf_jit_harden/rule.yml -index 9a1096cc72..31b7183b87 100644 ---- a/linux_os/guide/system/permissions/restrictions/sysctl_net_core_bpf_jit_harden/rule.yml -+++ b/linux_os/guide/system/permissions/restrictions/sysctl_net_core_bpf_jit_harden/rule.yml -@@ -19,8 +19,11 @@ identifiers: - cce@rhel9: CCE-83966-2 - - references: -+ disa: CCI-000366 -+ nist: CM-6b - ospp: FMT_SMF_EXT.1 - srg: SRG-OS-000480-GPOS-00227 -+ stigid@rhel8: RHEL-08-040286 - - {{{ complete_ocil_entry_sysctl_option_value(sysctl="net.core.bpf_jit_harden", value="2") }}} - -diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index 0a1fdd15ca..a358f61dba 100644 ---- a/products/rhel8/profiles/stig.profile -+++ b/products/rhel8/profiles/stig.profile -@@ -1149,6 +1149,9 @@ selections: - # RHEL-08-040285 - - sysctl_net_ipv4_conf_all_rp_filter - -+ # RHEL-08-040286 -+ - sysctl_net_core_bpf_jit_harden -+ - # RHEL-08-040290 - # /etc/postfix/main.cf does not exist on default installation resulting in error during remediation - # there needs to be a new platform check to identify when postfix is installed or not -diff --git a/tests/data/profile_stability/rhel8/stig.profile b/tests/data/profile_stability/rhel8/stig.profile -index d7e2f71376..7d54a7505f 100644 ---- a/tests/data/profile_stability/rhel8/stig.profile -+++ b/tests/data/profile_stability/rhel8/stig.profile -@@ -359,6 +359,7 @@ selections: - - sysctl_kernel_randomize_va_space - - sysctl_kernel_unprivileged_bpf_disabled - - sysctl_kernel_yama_ptrace_scope -+- sysctl_net_core_bpf_jit_harden - - sysctl_net_ipv4_conf_all_accept_redirects - - sysctl_net_ipv4_conf_all_accept_source_route - - sysctl_net_ipv4_conf_all_rp_filter -diff --git a/tests/data/profile_stability/rhel8/stig_gui.profile b/tests/data/profile_stability/rhel8/stig_gui.profile -index 7c95e31545..97291230e7 100644 ---- a/tests/data/profile_stability/rhel8/stig_gui.profile -+++ b/tests/data/profile_stability/rhel8/stig_gui.profile -@@ -370,6 +370,7 @@ selections: - - sysctl_kernel_randomize_va_space - - sysctl_kernel_unprivileged_bpf_disabled - - sysctl_kernel_yama_ptrace_scope -+- sysctl_net_core_bpf_jit_harden - - sysctl_net_ipv4_conf_all_accept_redirects - - sysctl_net_ipv4_conf_all_accept_source_route - - sysctl_net_ipv4_conf_all_rp_filter diff --git a/SOURCES/scap-security-guide-0.1.58-add_RHEL_08_020240-PR_7330.patch b/SOURCES/scap-security-guide-0.1.58-add_RHEL_08_020240-PR_7330.patch deleted file mode 100644 index 21bd64a..0000000 --- a/SOURCES/scap-security-guide-0.1.58-add_RHEL_08_020240-PR_7330.patch +++ /dev/null @@ -1,121 +0,0 @@ -From 3d24d93e200f53f3845fffbc8764b8e48517c7b2 Mon Sep 17 00:00:00 2001 -From: Gabriel Becker -Date: Wed, 4 Aug 2021 16:57:50 +0200 -Subject: [PATCH] Assign RHEL-08-020240 to account_unique_id and add test - scenarios. - ---- - .../accounts-restrictions/account_unique_id/oval/shared.xml | 2 +- - .../accounts-restrictions/account_unique_id/rule.yml | 4 +++- - .../account_unique_id/tests/correct_value.pass.sh | 2 ++ - .../account_unique_id/tests/wrong_value.fail.sh | 5 +++++ - products/rhel8/profiles/stig.profile | 1 + - shared/references/cce-redhat-avail.txt | 1 - - tests/data/profile_stability/rhel8/stig.profile | 1 + - tests/data/profile_stability/rhel8/stig_gui.profile | 1 + - 8 files changed, 14 insertions(+), 3 deletions(-) - create mode 100644 linux_os/guide/system/accounts/accounts-restrictions/account_unique_id/tests/correct_value.pass.sh - create mode 100644 linux_os/guide/system/accounts/accounts-restrictions/account_unique_id/tests/wrong_value.fail.sh - -diff --git a/linux_os/guide/system/accounts/accounts-restrictions/account_unique_id/oval/shared.xml b/linux_os/guide/system/accounts/accounts-restrictions/account_unique_id/oval/shared.xml -index be45c518115..491ad4587ee 100644 ---- a/linux_os/guide/system/accounts/accounts-restrictions/account_unique_id/oval/shared.xml -+++ b/linux_os/guide/system/accounts/accounts-restrictions/account_unique_id/oval/shared.xml -@@ -7,7 +7,7 @@ - - - -- -+ - - .* - -diff --git a/linux_os/guide/system/accounts/accounts-restrictions/account_unique_id/rule.yml b/linux_os/guide/system/accounts/accounts-restrictions/account_unique_id/rule.yml -index 731632f7f5a..e55901dbdc5 100644 ---- a/linux_os/guide/system/accounts/accounts-restrictions/account_unique_id/rule.yml -+++ b/linux_os/guide/system/accounts/accounts-restrictions/account_unique_id/rule.yml -@@ -12,6 +12,7 @@ severity: medium - - identifiers: - cce@rhel7: CCE-85857-1 -+ cce@rhel8: CCE-89903-9 - cce@sle12: CCE-83196-6 - cce@sle15: CCE-83277-4 - -@@ -19,7 +20,8 @@ references: - cis@rhel7: 6.2.7 - disa: CCI-000764,CCI-000804 - nist@sle12: IA-2,IA-2.1,IA-8,IA-8.1 -- srg: SRG-OS-000104-GPOS-00051,SRG-OS-000121-GPOS-00062 -+ srg: SRG-OS-000104-GPOS-00051,SRG-OS-000121-GPOS-00062,SRG-OS-000042-GPOS-00020 -+ stigid@rhel8: RHEL-08-020240 - stigid@sle12: SLES-12-010640 - stigid@sle15: SLES-15-010230 - -diff --git a/linux_os/guide/system/accounts/accounts-restrictions/account_unique_id/tests/correct_value.pass.sh b/linux_os/guide/system/accounts/accounts-restrictions/account_unique_id/tests/correct_value.pass.sh -new file mode 100644 -index 00000000000..645c46eb847 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-restrictions/account_unique_id/tests/correct_value.pass.sh -@@ -0,0 +1,2 @@ -+#!/bin/bash -+# remediation = none -diff --git a/linux_os/guide/system/accounts/accounts-restrictions/account_unique_id/tests/wrong_value.fail.sh b/linux_os/guide/system/accounts/accounts-restrictions/account_unique_id/tests/wrong_value.fail.sh -new file mode 100644 -index 00000000000..cc7f2215041 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-restrictions/account_unique_id/tests/wrong_value.fail.sh -@@ -0,0 +1,5 @@ -+#!/bin/bash -+# remediation = none -+ -+echo "test_user:x:30090:30090:Test User:/home/test_user:/usr/bin/bash" >> /etc/passwd -+echo "test_user_2:x:30090:30090:Test User 2:/home/test_user_2:/usr/bin/bash" >> /etc/passwd -diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index ec0a3b17537..bdddfef846f 100644 ---- a/products/rhel8/profiles/stig.profile -+++ b/products/rhel8/profiles/stig.profile -@@ -552,6 +552,7 @@ selections: - - accounts_password_minlen_login_defs - - # RHEL-08-020240 -+ - account_unique_id - - # RHEL-08-020250 - - sssd_enable_smartcards -diff --git a/shared/references/cce-redhat-avail.txt b/shared/references/cce-redhat-avail.txt -index 61384c108a0..1d54e8ec15f 100644 ---- a/shared/references/cce-redhat-avail.txt -+++ b/shared/references/cce-redhat-avail.txt -@@ -3969,7 +3969,6 @@ CCE-89899-9 - CCE-89900-5 - CCE-89901-3 - CCE-89902-1 --CCE-89903-9 - CCE-89904-7 - CCE-89905-4 - CCE-89906-2 -diff --git a/tests/data/profile_stability/rhel8/stig.profile b/tests/data/profile_stability/rhel8/stig.profile -index bffa509b698..71dd6330a16 100644 ---- a/tests/data/profile_stability/rhel8/stig.profile -+++ b/tests/data/profile_stability/rhel8/stig.profile -@@ -26,6 +26,7 @@ selections: - - account_disable_post_pw_expiration - - account_emergency_expire_date - - account_temp_expire_date -+- account_unique_id - - accounts_have_homedir_login_defs - - accounts_logon_fail_delay - - accounts_max_concurrent_login_sessions -diff --git a/tests/data/profile_stability/rhel8/stig_gui.profile b/tests/data/profile_stability/rhel8/stig_gui.profile -index c84ac75c7bf..3e788b27bac 100644 ---- a/tests/data/profile_stability/rhel8/stig_gui.profile -+++ b/tests/data/profile_stability/rhel8/stig_gui.profile -@@ -37,6 +37,7 @@ selections: - - account_disable_post_pw_expiration - - account_emergency_expire_date - - account_temp_expire_date -+- account_unique_id - - accounts_have_homedir_login_defs - - accounts_logon_fail_delay - - accounts_max_concurrent_login_sessions diff --git a/SOURCES/scap-security-guide-0.1.58-add_missing_unit_test_playbook-PR_7431.patch b/SOURCES/scap-security-guide-0.1.58-add_missing_unit_test_playbook-PR_7431.patch deleted file mode 100644 index 600dca6..0000000 --- a/SOURCES/scap-security-guide-0.1.58-add_missing_unit_test_playbook-PR_7431.patch +++ /dev/null @@ -1,80 +0,0 @@ -From 86dad83f4e6c5b823882ec736d27410570f5b69a Mon Sep 17 00:00:00 2001 -From: Watson Sato -Date: Fri, 20 Aug 2021 16:03:33 +0200 -Subject: [PATCH] Add missing unit test playbook - -The playbook is used on -test-function-check_playbook_file_removed_and_added ---- - .../file_block_removed_and_not_added.yml | 62 +++++++++++++++++++ - 1 file changed, 62 insertions(+) - create mode 100644 tests/ansible_file_removed_and_added/file_block_removed_and_not_added.yml - -diff --git a/tests/ansible_file_removed_and_added/file_block_removed_and_not_added.yml b/tests/ansible_file_removed_and_added/file_block_removed_and_not_added.yml -new file mode 100644 -index 0000000000..8391d1bc99 ---- /dev/null -+++ b/tests/ansible_file_removed_and_added/file_block_removed_and_not_added.yml -@@ -0,0 +1,62 @@ -+--- -+ -+- hosts: all -+ vars: -+ var_system_crypto_policy: !!str FUTURE -+ var_sudo_logfile: !!str /var/log/sudo.log -+ -+ tasks: -+ - name: Modify the System Login Banner - add correct banner -+ lineinfile: -+ dest: /etc/issue -+ line: '{{ login_banner_text | regex_replace("^\^(.*)\$$", "\1") | regex_replace("^\((.*)\|.*\)$", -+ "\1") | regex_replace("\[\\s\\n\]\+"," ") | regex_replace("\(\?:\[\\n\]\+\|\(\?:\\\\n\)\+\)", -+ "\n") | regex_replace("\\", "") | wordwrap() }}' -+ create: true -+ when: ansible_virtualization_type not in ["docker", "lxc", "openvz", "podman", "container"] -+ tags: -+ - banner_etc_issue -+ - low_complexity -+ - medium_disruption -+ - medium_severity -+ - no_reboot_needed -+ - unknown_strategy -+ -+ - name: Test for existence /etc/issue -+ stat: -+ path: /etc/issue -+ register: file_exists -+ tags: -+ - configure_strategy -+ - file_permissions_etc_issue -+ - low_complexity -+ - low_disruption -+ - medium_severity -+ - no_reboot_needed -+ -+ - name: Ensure permission 0644 on /etc/issue -+ file: -+ path: /etc/issue -+ mode: '0644' -+ when: file_exists.stat is defined and file_exists.stat.exists -+ tags: -+ - configure_strategy -+ - file_permissions_etc_issue -+ - low_complexity -+ - low_disruption -+ - medium_severity -+ - no_reboot_needed -+ -+ - block: -+ - name: Remove Rsh Trust Files -+ file: -+ path: '/root/shosts.equiv' -+ state: absent -+ tags: -+ - high_severity -+ - low_complexity -+ - low_disruption -+ - no_reboot_needed -+ - no_rsh_trust_files -+ - restrict_strategy -+ diff --git a/SOURCES/scap-security-guide-0.1.58-add_rhel_minor_check-PR_7251.patch b/SOURCES/scap-security-guide-0.1.58-add_rhel_minor_check-PR_7251.patch deleted file mode 100644 index 2ada27b..0000000 --- a/SOURCES/scap-security-guide-0.1.58-add_rhel_minor_check-PR_7251.patch +++ /dev/null @@ -1,179 +0,0 @@ -From b814fc94d0fb360ef53a6b735e9520df5b484589 Mon Sep 17 00:00:00 2001 -From: Matthew Burket -Date: Wed, 14 Jul 2021 12:52:13 -0500 -Subject: [PATCH 1/3] Add Jinja-based RHEL 8 minor check - ---- - shared/checks/oval/installed_OS_is_rhel8.xml | 29 ++++++++++++++++++++ - 1 file changed, 29 insertions(+) - -diff --git a/shared/checks/oval/installed_OS_is_rhel8.xml b/shared/checks/oval/installed_OS_is_rhel8.xml -index a9699411ce7..fdd3c870d43 100644 ---- a/shared/checks/oval/installed_OS_is_rhel8.xml -+++ b/shared/checks/oval/installed_OS_is_rhel8.xml -@@ -44,6 +44,35 @@ - redhat-release - - -+ {{% for minorversion in range(0, 9) %}} -+ -+ -+ Red Hat Enterprise Linux 8.{{{ minorversion }}} -+ -+ Red Hat Enterprise Linux 8.{{{ minorversion }}} -+ -+ -+ The operating system installed on the system is Red Hat Enterprise Linux 8.{{{ minorversion}}} -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ ^8.{{{ minorversion }}}*$ -+ -+ -+ redhat-release -+ -+ {{% endfor %}} -+ - - - - -From d37d303654be74758c19615ef027b3bafa2d7217 Mon Sep 17 00:00:00 2001 -From: Carlos Matos -Date: Wed, 14 Jul 2021 15:30:02 -0400 -Subject: [PATCH 2/3] Adding cpe's to product.yml - ---- - products/rhel8/product.yml | 45 ++++++++++++++++++++++++++++++++++++++ - 1 file changed, 45 insertions(+) - -diff --git a/products/rhel8/product.yml b/products/rhel8/product.yml -index 3278207fcb4..14336bfddf1 100644 ---- a/products/rhel8/product.yml -+++ b/products/rhel8/product.yml -@@ -27,6 +27,51 @@ cpes: - title: "Red Hat Enterprise Linux 8" - check_id: installed_OS_is_rhel8 - -+ - rhel8.0: -+ name: "cpe:/o:redhat:enterprise_linux:8.0" -+ title: "Red Hat Enterprise Linux 8.0" -+ check_id: installed_OS_is_rhel8_0 -+ -+ - rhel8.1: -+ name: "cpe:/o:redhat:enterprise_linux:8.1" -+ title: "Red Hat Enterprise Linux 8.1" -+ check_id: installed_OS_is_rhel8_1 -+ -+ - rhel8.2: -+ name: "cpe:/o:redhat:enterprise_linux:8.2" -+ title: "Red Hat Enterprise Linux 8.2" -+ check_id: installed_OS_is_rhel8_2 -+ -+ - rhel8.3: -+ name: "cpe:/o:redhat:enterprise_linux:8.3" -+ title: "Red Hat Enterprise Linux 8.3" -+ check_id: installed_OS_is_rhel8_3 -+ -+ - rhel8.4: -+ name: "cpe:/o:redhat:enterprise_linux:8.4" -+ title: "Red Hat Enterprise Linux 8.4" -+ check_id: installed_OS_is_rhel8_4 -+ -+ - rhel8.5: -+ name: "cpe:/o:redhat:enterprise_linux:8.5" -+ title: "Red Hat Enterprise Linux 8.5" -+ check_id: installed_OS_is_rhel8_5 -+ -+ - rhel8.6: -+ name: "cpe:/o:redhat:enterprise_linux:8.6" -+ title: "Red Hat Enterprise Linux 8.6" -+ check_id: installed_OS_is_rhel8_6 -+ -+ - rhel8.7: -+ name: "cpe:/o:redhat:enterprise_linux:8.7" -+ title: "Red Hat Enterprise Linux 8.7" -+ check_id: installed_OS_is_rhel8_7 -+ -+ - rhel8.8: -+ name: "cpe:/o:redhat:enterprise_linux:8.8" -+ title: "Red Hat Enterprise Linux 8.8" -+ check_id: installed_OS_is_rhel8_8 -+ - # Mapping of CPE platform to package - platform_package_overrides: - login_defs: "shadow-utils" - -From c4e4fd7b0449ba4655020fc0dc99ae3c4523b8cc Mon Sep 17 00:00:00 2001 -From: Matthew Burket -Date: Mon, 19 Jul 2021 08:12:34 -0500 -Subject: [PATCH 3/3] Add checks to go up to RHEL 8.10 - -This also makes the checks work. ---- - products/rhel8/product.yml | 10 ++++++++++ - shared/checks/oval/installed_OS_is_rhel8.xml | 10 +++++----- - 2 files changed, 15 insertions(+), 5 deletions(-) - -diff --git a/products/rhel8/product.yml b/products/rhel8/product.yml -index 14336bfddf1..78c987b2457 100644 ---- a/products/rhel8/product.yml -+++ b/products/rhel8/product.yml -@@ -72,6 +72,16 @@ cpes: - title: "Red Hat Enterprise Linux 8.8" - check_id: installed_OS_is_rhel8_8 - -+ - rhel8.9: -+ name: "cpe:/o:redhat:enterprise_linux:8.9" -+ title: "Red Hat Enterprise Linux 8.9" -+ check_id: installed_OS_is_rhel8_9 -+ -+ - rhel8.10: -+ name: "cpe:/o:redhat:enterprise_linux:8.10" -+ title: "Red Hat Enterprise Linux 8.10" -+ check_id: installed_OS_is_rhel8_10 -+ - # Mapping of CPE platform to package - platform_package_overrides: - login_defs: "shadow-utils" -diff --git a/shared/checks/oval/installed_OS_is_rhel8.xml b/shared/checks/oval/installed_OS_is_rhel8.xml -index fdd3c870d43..feab963b941 100644 ---- a/shared/checks/oval/installed_OS_is_rhel8.xml -+++ b/shared/checks/oval/installed_OS_is_rhel8.xml -@@ -44,7 +44,7 @@ - redhat-release - - -- {{% for minorversion in range(0, 9) %}} -+ {{% for minorversion in range(0, 11) %}} - - - Red Hat Enterprise Linux 8.{{{ minorversion }}} -@@ -52,13 +52,13 @@ - Red Hat Enterprise Linux 8.{{{ minorversion }}} - - -- The operating system installed on the system is Red Hat Enterprise Linux 8.{{{ minorversion}}} -+ The operating system installed on the system is Red Hat Enterprise Linux 8.{{{ minorversion }}} - -+ -+ -+ - - -- -- -- - - diff --git a/SOURCES/scap-security-guide-0.1.58-ansible_disable_ctrlaltdel_reboot-PR_7571.patch b/SOURCES/scap-security-guide-0.1.58-ansible_disable_ctrlaltdel_reboot-PR_7571.patch deleted file mode 100644 index 5909c1e..0000000 --- a/SOURCES/scap-security-guide-0.1.58-ansible_disable_ctrlaltdel_reboot-PR_7571.patch +++ /dev/null @@ -1,23 +0,0 @@ -From 91fb54a2e5e52d789f786fefbe711e7250470437 Mon Sep 17 00:00:00 2001 -From: Watson Sato -Date: Thu, 16 Sep 2021 19:45:26 +0200 -Subject: [PATCH] Force masking of ctrl-alt-del.target - -Without forcing the remediation it never converges. -The target is stopped but not masked. ---- - .../disable_ctrlaltdel_reboot/ansible/shared.yml | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/linux_os/guide/system/accounts/accounts-physical/disable_ctrlaltdel_reboot/ansible/shared.yml b/linux_os/guide/system/accounts/accounts-physical/disable_ctrlaltdel_reboot/ansible/shared.yml -index 8ea1de865ae..30f06a8751c 100644 ---- a/linux_os/guide/system/accounts/accounts-physical/disable_ctrlaltdel_reboot/ansible/shared.yml -+++ b/linux_os/guide/system/accounts/accounts-physical/disable_ctrlaltdel_reboot/ansible/shared.yml -@@ -7,6 +7,7 @@ - - name: Disable Ctrl-Alt-Del Reboot Activation - systemd: - name: ctrl-alt-del.target -+ force: yes - masked: yes - state: stopped - diff --git a/SOURCES/scap-security-guide-0.1.58-ansible_missing_metadata-PR_7357.patch b/SOURCES/scap-security-guide-0.1.58-ansible_missing_metadata-PR_7357.patch deleted file mode 100644 index 2cfa6b0..0000000 --- a/SOURCES/scap-security-guide-0.1.58-ansible_missing_metadata-PR_7357.patch +++ /dev/null @@ -1,50 +0,0 @@ -From 5d4726bb609f463956c03909891f8fbd1975d222 Mon Sep 17 00:00:00 2001 -From: Milan Lysonek -Date: Mon, 9 Aug 2021 14:00:19 +0200 -Subject: [PATCH] Add missing ansible remediation metadata - ---- - .../auditd_overflow_action/ansible/shared.yml | 4 ++++ - .../ansible/shared.yml | 4 ++++ - .../ansible/shared.yml | 4 ++++ - 3 files changed, 12 insertions(+) - -diff --git a/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_overflow_action/ansible/shared.yml b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_overflow_action/ansible/shared.yml -index 166054a95a..e1569b2254 100644 ---- a/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_overflow_action/ansible/shared.yml -+++ b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_overflow_action/ansible/shared.yml -@@ -1,4 +1,8 @@ - # platform = multi_platform_fedora,multi_platform_rhel -+# reboot = false -+# strategy = restrict -+# complexity = low -+# disruption = low - - {{{ ansible_set_config_file(file="/etc/audit/auditd.conf", - parameter="overflow_action", -diff --git a/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdrivermode/ansible/shared.yml b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdrivermode/ansible/shared.yml -index 2d6c5227a8..bbd27a0061 100644 ---- a/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdrivermode/ansible/shared.yml -+++ b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdrivermode/ansible/shared.yml -@@ -1,4 +1,8 @@ - # platform = Red Hat Enterprise Linux 8,multi_platform_fedora -+# reboot = false -+# strategy = configure -+# complexity = low -+# disruption = low - - {{{ ansible_set_config_file(file="/etc/rsyslog.d/encrypt.conf", - parameter="\$ActionSendStreamDriverMode", value="1", create=true, separator=" ", separator_regex=" ") -diff --git a/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_defaultnetstreamdriver/ansible/shared.yml b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_defaultnetstreamdriver/ansible/shared.yml -index 2ddbfb871f..b215daaef4 100644 ---- a/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_defaultnetstreamdriver/ansible/shared.yml -+++ b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_defaultnetstreamdriver/ansible/shared.yml -@@ -1,4 +1,8 @@ - # platform = Red Hat Enterprise Linux 8,multi_platform_fedora -+# reboot = false -+# strategy = configure -+# complexity = low -+# disruption = low - - {{{ ansible_set_config_file(file="/etc/rsyslog.d/encrypt.conf", - parameter="\$DefaultNetstreamDriver", value="gtls", create=true, separator=" ", separator_regex=" ") diff --git a/SOURCES/scap-security-guide-0.1.58-audit_privileged_rhel_cis-PR_7353.patch b/SOURCES/scap-security-guide-0.1.58-audit_privileged_rhel_cis-PR_7353.patch deleted file mode 100644 index 1861433..0000000 --- a/SOURCES/scap-security-guide-0.1.58-audit_privileged_rhel_cis-PR_7353.patch +++ /dev/null @@ -1,92 +0,0 @@ -From 01397cbe2a62303ef001ab5e5821ffafd6929e41 Mon Sep 17 00:00:00 2001 -From: Alex Haydock -Date: Fri, 6 Aug 2021 16:46:22 +0100 -Subject: [PATCH] Update CCEs and identifiers on rules that make up RHEL 8 CIS - 4.1.15 - ---- - .../audit_rules_privileged_commands_insmod/rule.yml | 2 ++ - .../audit_rules_privileged_commands_modprobe/rule.yml | 2 ++ - .../audit_rules_privileged_commands_rmmod/rule.yml | 2 ++ - shared/references/cce-redhat-avail.txt | 3 --- - 4 files changed, 6 insertions(+), 3 deletions(-) - -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_insmod/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_insmod/rule.yml -index 5c3a99447c..a4ecb0d1e0 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_insmod/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_insmod/rule.yml -@@ -28,10 +28,12 @@ severity: medium - - identifiers: - cce@rhel7: CCE-85851-4 -+ cce@rhel8: CCE-85919-9 - cce@sle15: CCE-85744-1 - - references: - cis@rhel7: 4.1.16 -+ cis@rhel8: 4.1.15 - cis@ubuntu2004: 4.1.16 - disa: CCI-000130,CCI-000169,CCI-000172,CCI-002884 - nist: AU-12(c),AU-12.1(iv),AU-3,AU-3.1,AU-12(a),AU-12.1(ii),MA-4(1)(a) -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_modprobe/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_modprobe/rule.yml -index 5e03dde851..f70c537064 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_modprobe/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_modprobe/rule.yml -@@ -32,10 +32,12 @@ severity: medium - - identifiers: - cce@rhel7: CCE-85853-0 -+ cce@rhel8: CCE-85973-6 - cce@sle15: CCE-85731-8 - - references: - cis@rhel7: 4.1.16 -+ cis@rhel8: 4.1.15 - cis@ubuntu2004: 4.1.16 - disa: CCI-000130,CCI-000169,CCI-000172,CCI-002884 - nist: AU-12(a),AU-12.1(ii),AU-3,AU-3.1,AU-12(c),AU-12.1(iv),MA-4(1)(a) -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_rmmod/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_rmmod/rule.yml -index 1535041672..113c8fc4bc 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_rmmod/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_rmmod/rule.yml -@@ -28,10 +28,12 @@ severity: medium - - identifiers: - cce@rhel7: CCE-85852-2 -+ cce@rhel8: CCE-86017-1 - cce@sle15: CCE-85732-6 - - references: - cis@rhel7: 4.1.16 -+ cis@rhel8: 4.1.15 - cis@ubuntu2004: 4.1.16 - disa: CCI-000130,CCI-000169,CCI-000172,CCI-002884 - nist@sle15: AU-12(c),AU-12.1(iv),AU-3,AU-3.1,AU-12(a),AU-12.1(ii),MA-4(1)(a) -diff --git a/shared/references/cce-redhat-avail.txt b/shared/references/cce-redhat-avail.txt -index 001262c6ee..aaa631515b 100644 ---- a/shared/references/cce-redhat-avail.txt -+++ b/shared/references/cce-redhat-avail.txt -@@ -49,7 +49,6 @@ CCE-85915-7 - CCE-85916-5 - CCE-85917-3 - CCE-85918-1 --CCE-85919-9 - CCE-85920-7 - CCE-85921-5 - CCE-85922-3 -@@ -100,7 +99,6 @@ CCE-85968-6 - CCE-85969-4 - CCE-85970-2 - CCE-85972-8 --CCE-85973-6 - CCE-85974-4 - CCE-85975-1 - CCE-85976-9 -@@ -143,7 +141,6 @@ CCE-86013-0 - CCE-86014-8 - CCE-86015-5 - CCE-86016-3 --CCE-86017-1 - CCE-86018-9 - CCE-86019-7 - CCE-86020-5 diff --git a/SOURCES/scap-security-guide-0.1.58-audit_rhel8_stig-PR_6910.patch b/SOURCES/scap-security-guide-0.1.58-audit_rhel8_stig-PR_6910.patch deleted file mode 100644 index ac9eaca..0000000 --- a/SOURCES/scap-security-guide-0.1.58-audit_rhel8_stig-PR_6910.patch +++ /dev/null @@ -1,4578 +0,0 @@ -From fdc04fed4ae88d0114540a524f5170b19e2b0d19 Mon Sep 17 00:00:00 2001 -From: Gabriel Becker -Date: Wed, 28 Apr 2021 17:17:23 +0200 -Subject: [PATCH 01/21] Enable audit rules in RHEL8 STIG. - ---- - .../audit_rules_execution_chacl/rule.yml | 2 +- - .../audit_rules_execution_setfacl/rule.yml | 2 +- - .../rule.yml | 2 +- - .../rule.yml | 2 +- - .../rule.yml | 2 +- - products/rhel8/profiles/stig.profile | 171 +++++++++++------- - 6 files changed, 110 insertions(+), 71 deletions(-) - -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_execution_acl_commands/audit_rules_execution_chacl/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_execution_acl_commands/audit_rules_execution_chacl/rule.yml -index 8c8b0cbda8..28125b692b 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_execution_acl_commands/audit_rules_execution_chacl/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_execution_acl_commands/audit_rules_execution_chacl/rule.yml -@@ -1,6 +1,6 @@ - documentation_complete: true - --prodtype: sle12,sle15,ubuntu2004 -+prodtype: rhel8,sle12,sle15,ubuntu2004 - - title: 'Record Any Attempts to Run chacl' - -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_execution_acl_commands/audit_rules_execution_setfacl/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_execution_acl_commands/audit_rules_execution_setfacl/rule.yml -index dcd62891f1..43fe86106c 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_execution_acl_commands/audit_rules_execution_setfacl/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_execution_acl_commands/audit_rules_execution_setfacl/rule.yml -@@ -1,6 +1,6 @@ - documentation_complete: true - --prodtype: sle12,sle15,ubuntu2004 -+prodtype: rhel8,sle12,sle15,ubuntu2004 - - title: 'Record Any Attempts to Run setfacl' - -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_kmod/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_kmod/rule.yml -index d2ff46792c..dbba6f8636 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_kmod/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_kmod/rule.yml -@@ -1,6 +1,6 @@ - documentation_complete: true - --prodtype: sle12,sle15,ubuntu2004 -+prodtype: rhel8,sle12,sle15,ubuntu2004 - - title: 'Ensure auditd Collects Information on the Use of Privileged Commands - kmod' - -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_ssh_agent/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_ssh_agent/rule.yml -index 58d0aef7a5..b9f68d0712 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_ssh_agent/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_ssh_agent/rule.yml -@@ -1,6 +1,6 @@ - documentation_complete: true - --prodtype: sle12,sle15,ubuntu2004 -+prodtype: rhel8,sle12,sle15,ubuntu2004 - - title: 'Record Any Attempts to Run ssh-agent' - -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_usermod/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_usermod/rule.yml -index 6fa14649be..b4c8a8f2cb 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_usermod/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_usermod/rule.yml -@@ -1,6 +1,6 @@ - documentation_complete: true - --prodtype: sle12,sle15,ubuntu2004 -+prodtype: rhel8,sle12,sle15,ubuntu2004 - - title: 'Ensure auditd Collects Information on the Use of Privileged Commands - usermod' - -diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index f66b2a24a7..c3eee7fae0 100644 ---- a/products/rhel8/profiles/stig.profile -+++ b/products/rhel8/profiles/stig.profile -@@ -652,167 +652,206 @@ selections: - # ************ # - - # RHEL-08-030121 -- # - audit_rules_immutable -+ - audit_rules_immutable - - # RHEL-08-030122 -- # - audit_immutable_login_uids -+ - audit_immutable_login_uids - - # RHEL-08-030130 -- # - audit_rules_usergroup_modification_shadow -+ - audit_rules_usergroup_modification_shadow - - # RHEL-08-030140 -- # - audit_rules_usergroup_modification_opasswd -+ - audit_rules_usergroup_modification_opasswd - - # RHEL-08-030150 -- # - audit_rules_usergroup_modification_passwd -+ - audit_rules_usergroup_modification_passwd - - # RHEL-08-030160 -- # - audit_rules_usergroup_modification_gshadow -+ - audit_rules_usergroup_modification_gshadow - - # RHEL-08-030170 -- # - audit_rules_usergroup_modification_group -+ - audit_rules_usergroup_modification_group - -- # RHEL-08-030171, RHEL-08-030172 -+ # RHEL-08-030171 -+ # should be split - # - audit_rules_sysadmin_actions - -+ # RHEL-08-030172 -+ - audit_rules_sysadmin_actions -+ - # RHEL-08-030180 - - package_audit_installed - - service_auditd_enabled - - # RHEL-08-030190 -- # - audit_rules_privileged_commands_sudo -+ - audit_rules_privileged_commands_su -+ -+ # RHEL-08-030200 -+ - audit_rules_dac_modification_lremovexattr -+ -+ # RHEL-08-030210 -+ - audit_rules_dac_modification_removexattr -+ -+ # RHEL-08-030220 -+ - audit_rules_dac_modification_lsetxattr - -- # RHEL-08-030200, RHEL-08-030210, RHEL-08-030220, RHEL-08-030230, RHEL-08-030240 -- # - audit_perm_change_failed -- # - audit_perm_change_success -+ # RHEL-08-030230 -+ - audit_rules_dac_modification_fsetxattr -+ -+ # RHEL-08-030240 -+ - audit_rules_dac_modification_fremovexattr - - # RHEL-08-030250 -- # - audit_rules_privileged_commands_chage -+ - audit_rules_privileged_commands_chage - - # RHEL-08-030260 -- # - audit_rules_execution_chcon -+ - audit_rules_execution_chcon - - # RHEL-08-030270 -- # - audit_perm_change_failed -- # - audit_perm_change_success -+ - audit_rules_dac_modification_setxattr - - # RHEL-08-030280 -+ - audit_rules_privileged_commands_ssh_agent -+ -+ # RHEL-08-030290 -+ - audit_rules_privileged_commands_passwd - -- # RHEL-08-030290, RHEL-08-030300, RHEL-08-030301 -- # - audit_ospp_general -+ # RHEL-08-030300 -+ - audit_rules_privileged_commands_mount -+ -+ # RHEL-08-030301 -+ - audit_rules_privileged_commands_umount - - # RHEL-08-030302 -- # - audit_rules_media_export -+ - audit_rules_media_export - - # RHEL-08-030310 -+ # missing rule - - # RHEL-08-030311 -- # - audit_rules_privileged_commands_postdrop -+ - audit_rules_privileged_commands_postdrop - - # RHEL-08-030312 -- # - audit_rules_privileged_commands_postqueue -+ - audit_rules_privileged_commands_postqueue - - # RHEL-08-030313 -- # - audit_rules_execution_semanage -+ - audit_rules_execution_semanage - - # RHEL-08-030314 -- # - audit_rules_execution_setfiles -+ - audit_rules_execution_setfiles - - # RHEL-08-030315 -- # - audit_ospp_general -+ - audit_rules_privileged_commands_userhelper - - # RHEL-08-030316 -- # - audit_rules_execution_setsebool -+ - audit_rules_execution_setsebool - - # RHEL-08-030317 -- # - audit_ospp_general -+ - audit_rules_privileged_commands_unix_chkpwd - - # RHEL-08-030320 -- # - audit_rules_privileged_commands_ssh_keysign -+ - audit_rules_privileged_commands_ssh_keysign - - # RHEL-08-030330 -+ - audit_rules_execution_setfacl - - # RHEL-08-030340 -- # - audit_rules_privileged_commands_pam_timestamp_check -+ - audit_rules_privileged_commands_pam_timestamp_check - - # RHEL-08-030350 -- # - audit_ospp_general -+ - audit_rules_privileged_commands_newgrp - - # RHEL-08-030360 -- # - audit_module_load -+ - audit_rules_kernel_module_loading_init -+ -+ # RHEL-08-030361 -+ - audit_rules_file_deletion_events_rename - -- # RHEL-08-030361, RHEL-08-030362 -- # - audit_delete_failed -- # - audit_delete_success -+ # RHEL-08-030362 -+ - audit_rules_file_deletion_events_renameat - - # RHEL-08-030363 -+ - audit_rules_file_deletion_events_rmdir - -- # RHEL-08-030364, RHEL-08-030365 -- # - audit_delete_failed -- # - audit_delete_success -+ # RHEL-08-030364 -+ - audit_rules_file_deletion_events_unlink -+ -+ # RHEL-08-030365 -+ - audit_rules_file_deletion_events_unlinkat - - # RHEL-08-030370 -- # - audit_ospp_general -+ - audit_rules_privileged_commands_gpasswd -+ -+ # RHEL-08-030380 -+ - audit_rules_kernel_module_loading_finit - -- # RHEL-08-030380, RHEL-08-030390 -- # - audit_module_load -+ # RHEL-08-030390 -+ - audit_rules_kernel_module_loading_delete - - # RHEL-08-030400 -- # - audit_ospp_general -+ - audit_rules_privileged_commands_crontab - - # RHEL-08-030410 -- # - audit_rules_privileged_commands_chsh -+ - audit_rules_privileged_commands_chsh - - # RHEL-08-030420 -- # - audit_modify_failed -- # - audit_modify_success -+ - audit_rules_unsuccessful_file_modification_truncate -+ -+ # RHEL-08-030430 -+ - audit_rules_unsuccessful_file_modification_openat -+ -+ # RHEL-08-030440 -+ - audit_rules_unsuccessful_file_modification_open - -- # RHEL-08-030430, RHEL-08-030440, RHEL-08-030450 -- # - audit_create_failed -- # - audit_create_success -- # - audit_modify_failed -- # - audit_modify_success -- # - audit_access_failed -- # - audit_access_success -+ # RHEL-08-030450 -+ - audit_rules_unsuccessful_file_modification_open_by_handle_at - - # RHEL-08-030460 -- # - audit_modify_failed -- # - audit_modify_success -+ - audit_rules_unsuccessful_file_modification_ftruncate - - # RHEL-08-030470 -- # - audit_create_failed -- # - audit_create_success -+ - audit_rules_unsuccessful_file_modification_creat - - # RHEL-08-030480 -- # - audit_owner_change_failed -- # - audit_owner_change_success -+ - audit_rules_dac_modification_chown - - # RHEL-08-030490 -- # - audit_perm_change_failed -- # - audit_perm_change_success -+ - audit_rules_dac_modification_chmod -+ -+ # RHEL-08-030500 -+ - audit_rules_dac_modification_lchown -+ -+ # RHEL-08-030510 -+ - audit_rules_dac_modification_fchownat -+ -+ # RHEL-08-030520 -+ - audit_rules_dac_modification_fchown - -- # RHEL-08-030500, RHEL-08-030510, RHEL-08-030520 -- # - audit_owner_change_failed -- # - audit_owner_change_success -+ # RHEL-08-030530 -+ - audit_rules_dac_modification_fchmodat - -- # RHEL-08-030530, RHEL-08-030540 -- # - audit_perm_change_failed -- # - audit_perm_change_success -+ # RHEL-08-030540 -+ - audit_rules_dac_modification_fchmod - - # RHEL-08-030550 -- # - audit_rules_privileged_commands_sudo -+ - audit_rules_privileged_commands_sudo - - # RHEL-08-030560 -+ - audit_rules_privileged_commands_usermod - - # RHEL-08-030570 -+ - audit_rules_execution_chacl - - # RHEL-08-030580 -+ - audit_rules_privileged_commands_kmod - - # RHEL-08-030590 -+ # This one needs to be updated to use /var/log/faillock, but first RHEL-08-020017 should be -+ # implemented as it is the one that configures a different patch for the events of failing locks - # - audit_rules_login_events_faillock - - # RHEL-08-030600 -- # - audit_rules_login_events_lastlog -+ - audit_rules_login_events_lastlog - - # RHEL-08-030601 - - grub2_audit_argument - -From e88a8ad0bece18a8b7dcd350af9706134c827458 Mon Sep 17 00:00:00 2001 -From: Gabriel Becker -Date: Wed, 28 Apr 2021 18:00:18 +0200 -Subject: [PATCH 02/21] Update audit template to include perm=x for binaries. - ---- - .../audit_rules_privileged_commands/ansible.template | 2 +- - .../templates/audit_rules_privileged_commands/bash.template | 2 +- - .../templates/audit_rules_privileged_commands/oval.template | 4 ++-- - 3 files changed, 4 insertions(+), 4 deletions(-) - -diff --git a/shared/templates/audit_rules_privileged_commands/ansible.template b/shared/templates/audit_rules_privileged_commands/ansible.template -index 0a0f06fba2..ec7b7d7605 100644 ---- a/shared/templates/audit_rules_privileged_commands/ansible.template -+++ b/shared/templates/audit_rules_privileged_commands/ansible.template -@@ -26,7 +26,7 @@ - - "{{ find_{{{ NAME }}}.files | map(attribute='path') | list | first }}" - when: find_{{{ NAME }}}.matched is defined and find_{{{ NAME }}}.matched > 0 - --{{% if product in ["sle12", "sle15"] %}} -+{{% if product in ["rhel8", "sle12", "sle15"] %}} - - - name: Inserts/replaces the {{{ NAME }}} rule in rules.d - lineinfile: -diff --git a/shared/templates/audit_rules_privileged_commands/bash.template b/shared/templates/audit_rules_privileged_commands/bash.template -index 85dbc9b828..100a4770bf 100644 ---- a/shared/templates/audit_rules_privileged_commands/bash.template -+++ b/shared/templates/audit_rules_privileged_commands/bash.template -@@ -7,7 +7,7 @@ PATTERN="-a always,exit -F path={{{ PATH }}}\\s\\+.*" - GROUP="privileged" - # Although the fix doesn't use ARCH, we reset it because it could have been set by some other remediation - ARCH="" --FULL_RULE="-a always,exit -F path={{{ PATH }}} -F auid>={{{ auid }}} -F auid!=unset -F key=privileged" -+FULL_RULE="-a always,exit -F path={{{ PATH }}} {{{ "-F perm=x " if product in ["rhel8"]}}}-F auid>={{{ auid }}} -F auid!=unset -F key=privileged" - # Perform the remediation for both possible tools: 'auditctl' and 'augenrules' - fix_audit_syscall_rule "auditctl" "$PATTERN" "$GROUP" "$ARCH" "$FULL_RULE" - fix_audit_syscall_rule "augenrules" "$PATTERN" "$GROUP" "$ARCH" "$FULL_RULE" -diff --git a/shared/templates/audit_rules_privileged_commands/oval.template b/shared/templates/audit_rules_privileged_commands/oval.template -index c68df7671f..151a9d5d47 100644 ---- a/shared/templates/audit_rules_privileged_commands/oval.template -+++ b/shared/templates/audit_rules_privileged_commands/oval.template -@@ -23,7 +23,7 @@ - - - ^/etc/audit/rules\.d/.*\.rules$ --{{% if product in ["sle12", "sle15"] %}} -+{{% if product in ["rhel8", "sle12", "sle15"] %}} - ^[\s]*-a[\s]+always,exit[\s]+(-S[\s]+all[\s]+)*-F[\s]+path={{{ PATH }}}(?:[\s]+-F[\s]+perm=x)?[\s]+-F[\s]+auid>={{{ auid }}}[\s]+-F[\s]+auid!=(?:4294967295|unset|-1)[\s]+(?:-k[\s]+|-F[\s]+key=)[\S]+[\s]*$ - {{% else %}} - ^[\s]*-a[\s]+always,exit[\s]+-F[\s]+path={{{ PATH }}}[\s]+-F[\s]+auid>={{{ auid }}}[\s]+-F[\s]+auid!=(?:4294967295|unset)[\s]+(?:-k[\s]+|-F[\s]+key=)[\S]+[\s]*$ -@@ -36,7 +36,7 @@ -
- - /etc/audit/audit.rules --{{% if product in ["sle12", "sle15"] %}} -+{{% if product in ["rhel8", "sle12", "sle15"] %}} - ^[\s]*-a[\s]+always,exit[\s]+-F[\s]+path={{{ PATH }}}(?:[\s]+-F[\s]+perm=x)?[\s]+-F[\s]+auid>={{{ auid }}}[\s]+-F[\s]+auid!=(?:4294967295|unset)[\s]+(?:-k[\s]+|-F[\s]+key=)[\S]+[\s]*$ - {{% else %}} - ^[\s]*-a[\s]+always,exit[\s]+-F[\s]+path={{{ PATH }}}[\s]+-F[\s]+auid>={{{ auid }}}[\s]+-F[\s]+auid!=(?:4294967295|unset)[\s]+(?:-k[\s]+|-F[\s]+key=)[\S]+[\s]*$ - -From 78134285266b3d559d8eb89d9dd4b68d37de7a26 Mon Sep 17 00:00:00 2001 -From: Gabriel Becker -Date: Wed, 28 Apr 2021 18:01:57 +0200 -Subject: [PATCH 03/21] Remove remediation that copies entire ospp audit rules - file. - ---- - .../bash/shared.sh | 6 ------ - .../bash/shared.sh | 6 ------ - .../bash/shared.sh | 6 ------ - 3 files changed, 18 deletions(-) - delete mode 100644 linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_open/bash/shared.sh - delete mode 100644 linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_open_by_handle_at/bash/shared.sh - delete mode 100644 linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_openat/bash/shared.sh - -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_open/bash/shared.sh b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_open/bash/shared.sh -deleted file mode 100644 -index c93a8d8805..0000000000 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_open/bash/shared.sh -+++ /dev/null -@@ -1,6 +0,0 @@ --# platform = Red Hat Virtualization 4,multi_platform_ol,multi_platform_rhel,multi_platform_wrlinux --# --# Include source function library. --. /usr/share/scap-security-guide/remediation_functions -- --create_audit_remediation_unsuccessful_file_modification_detailed /etc/audit/rules.d/30-ospp-v42-remediation.rules -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_open_by_handle_at/bash/shared.sh b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_open_by_handle_at/bash/shared.sh -deleted file mode 100644 -index c93a8d8805..0000000000 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_open_by_handle_at/bash/shared.sh -+++ /dev/null -@@ -1,6 +0,0 @@ --# platform = Red Hat Virtualization 4,multi_platform_ol,multi_platform_rhel,multi_platform_wrlinux --# --# Include source function library. --. /usr/share/scap-security-guide/remediation_functions -- --create_audit_remediation_unsuccessful_file_modification_detailed /etc/audit/rules.d/30-ospp-v42-remediation.rules -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_openat/bash/shared.sh b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_openat/bash/shared.sh -deleted file mode 100644 -index 1e021c4f80..0000000000 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_openat/bash/shared.sh -+++ /dev/null -@@ -1,6 +0,0 @@ --# platform = Red Hat Virtualization 4,multi_platform_ol,multi_platform_rhel --# --# Include source function library. --. /usr/share/scap-security-guide/remediation_functions -- --create_audit_remediation_unsuccessful_file_modification_detailed /etc/audit/rules.d/30-ospp-v42-remediation.rules - -From e6cb5c196e18d9dddf4c1754a438e4a6b8f8b214 Mon Sep 17 00:00:00 2001 -From: Gabriel Becker -Date: Wed, 28 Apr 2021 18:02:46 +0200 -Subject: [PATCH 04/21] Use audit template in kmod privileged command. - -Make SLE content specific to their product. ---- - .../ansible/{shared.yml => sle12.yml} | 0 - .../ansible/sle15.yml | 42 +++++++++++++++++++ - .../oval/{shared.xml => sle12.xml} | 0 - .../oval/sle15.xml | 39 +++++++++++++++++ - .../rule.yml | 5 +++ - 5 files changed, 86 insertions(+) - rename linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_kmod/ansible/{shared.yml => sle12.yml} (100%) - create mode 100644 linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_kmod/ansible/sle15.yml - rename linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_kmod/oval/{shared.xml => sle12.xml} (100%) - create mode 100644 linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_kmod/oval/sle15.xml - -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_kmod/ansible/shared.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_kmod/ansible/sle12.yml -similarity index 100% -rename from linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_kmod/ansible/shared.yml -rename to linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_kmod/ansible/sle12.yml -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_kmod/ansible/sle15.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_kmod/ansible/sle15.yml -new file mode 100644 -index 0000000000..6d128bc207 ---- /dev/null -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_kmod/ansible/sle15.yml -@@ -0,0 +1,42 @@ -+# platform = multi_platform_sle -+# reboot = false -+# strategy = restrict -+# complexity = low -+# disruption = low -+ -+- name: Service facts -+ service_facts: -+ -+- name: Check the rules script being used -+ command: -+ grep '^ExecStartPost' /usr/lib/systemd/system/auditd.service -+ register: check_rules_scripts_result -+ -+- name: Update kmod in /etc/audit/rules.d/audit.rules -+ lineinfile: -+ path: /etc/audit/rules.d/audit.rules -+ line: '-w /usr/bin/kmod -p x -k modules' -+ create: yes -+ when: -+ - '"auditd.service" in ansible_facts.services' -+ - '"augenrules" in check_rules_scripts_result.stdout' -+ register: augenrules_audit_rules_kmod_update_result -+ -+- name: Update kmod in /etc/audit/audit.rules -+ lineinfile: -+ path: /etc/audit/audit.rules -+ line: '-w /usr/bin/kmod -p x -k modules' -+ create: yes -+ when: -+ - '"auditd.service" in ansible_facts.services' -+ - '"auditctl" in check_rules_scripts_result.stdout' -+ register: auditctl_audit_rules_kmod_update_result -+ -+- name: Restart auditd.service -+ systemd: -+ name: auditd.service -+ state: restarted -+ when: -+ - (augenrules_audit_rules_kmod_update_result.changed or -+ auditctl_audit_rules_kmod_update_result.changed) -+ - ansible_facts.services["auditd.service"].state == "running" -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_kmod/oval/shared.xml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_kmod/oval/sle12.xml -similarity index 100% -rename from linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_kmod/oval/shared.xml -rename to linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_kmod/oval/sle12.xml -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_kmod/oval/sle15.xml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_kmod/oval/sle15.xml -new file mode 100644 -index 0000000000..4fb3d2fc1c ---- /dev/null -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_kmod/oval/sle15.xml -@@ -0,0 +1,39 @@ -+ -+ -+ {{{ oval_metadata("Ensure audit rule for all uses of the kmod command is enabled.") }}} -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ ^/etc/audit/rules\.d/.*\.rules$ -+ ^[\s]*-w[\s]+/usr/bin/kmod[\s]+-p[\s]+x[\s]+-k[\s]+modules[\s]*$ -+ 1 -+ -+ -+ -+ -+ -+ -+ /etc/audit/audit.rules -+ ^[\s]*-w[\s]+/usr/bin/kmod[\s]+-p[\s]+x[\s]+-k[\s]+modules[\s]*$ -+ 1 -+ -+ -+ -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_kmod/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_kmod/rule.yml -index dbba6f8636..168d5c51fc 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_kmod/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_kmod/rule.yml -@@ -53,3 +53,8 @@ ocil: |- - return a line, or the line is commented out, this is a finding. - - platform: machine -+ -+template: -+ name: audit_rules_privileged_commands -+ vars: -+ path: /usr/bin/kmod - -From 12e793f8340a48418214e73e05248e259c7d16b5 Mon Sep 17 00:00:00 2001 -From: Gabriel Becker -Date: Wed, 28 Apr 2021 18:56:03 +0200 -Subject: [PATCH 05/21] Extend audit_rules_dac_modification to support auid=0 - checking. - ---- - .../rule.yml | 1 + - .../rule.yml | 1 + - .../rule.yml | 1 + - .../rule.yml | 1 + - .../rule.yml | 1 + - .../rule.yml | 1 + - .../bash.template | 16 +++++- - .../oval.template | 53 +++++++++++++++++++ - .../audit_rules_dac_modification/template.py | 7 +++ - 9 files changed, 81 insertions(+), 1 deletion(-) - create mode 100644 shared/templates/audit_rules_dac_modification/template.py - -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fremovexattr/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fremovexattr/rule.yml -index d5ff634e95..294a7ebfd2 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fremovexattr/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fremovexattr/rule.yml -@@ -78,3 +78,4 @@ template: - name: audit_rules_dac_modification - vars: - attr: fremovexattr -+ check_root_user: "true" -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fsetxattr/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fsetxattr/rule.yml -index 034a22a987..9b01a07515 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fsetxattr/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fsetxattr/rule.yml -@@ -73,3 +73,4 @@ template: - name: audit_rules_dac_modification - vars: - attr: fsetxattr -+ check_root_user: "true" -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_lremovexattr/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_lremovexattr/rule.yml -index 2245a13e11..577af632aa 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_lremovexattr/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_lremovexattr/rule.yml -@@ -78,3 +78,4 @@ template: - name: audit_rules_dac_modification - vars: - attr: lremovexattr -+ check_root_user: "true" -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_lsetxattr/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_lsetxattr/rule.yml -index 6218e6fc10..d6be12af63 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_lsetxattr/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_lsetxattr/rule.yml -@@ -71,3 +71,4 @@ template: - name: audit_rules_dac_modification - vars: - attr: lsetxattr -+ check_root_user: "true" -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_removexattr/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_removexattr/rule.yml -index 6565d3fcc2..982d6d377c 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_removexattr/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_removexattr/rule.yml -@@ -77,3 +77,4 @@ template: - name: audit_rules_dac_modification - vars: - attr: removexattr -+ check_root_user: "true" -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_setxattr/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_setxattr/rule.yml -index 7babe9d2a7..71c31e2d15 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_setxattr/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_setxattr/rule.yml -@@ -73,3 +73,4 @@ template: - name: audit_rules_dac_modification - vars: - attr: setxattr -+ check_root_user: "true" -diff --git a/shared/templates/audit_rules_dac_modification/bash.template b/shared/templates/audit_rules_dac_modification/bash.template -index f0d3b6978a..a10a9145b2 100644 ---- a/shared/templates/audit_rules_dac_modification/bash.template -+++ b/shared/templates/audit_rules_dac_modification/bash.template -@@ -9,7 +9,7 @@ - - for ARCH in "${RULE_ARCHS[@]}" - do -- PATTERN="-a always,exit -F arch=$ARCH -S {{{ ATTR }}}.*" -+ PATTERN="-a always,exit -F arch=$ARCH -S {{{ ATTR }}} -F auid>=.*" - GROUP="perm_mod" - FULL_RULE="-a always,exit -F arch=$ARCH -S {{{ ATTR }}} -F auid>={{{ auid }}} -F auid!=unset -F key=perm_mod" - -@@ -17,3 +17,17 @@ do - fix_audit_syscall_rule "augenrules" "$PATTERN" "$GROUP" "$ARCH" "$FULL_RULE" - fix_audit_syscall_rule "auditctl" "$PATTERN" "$GROUP" "$ARCH" "$FULL_RULE" - done -+ -+ -+{{% if CHECK_ROOT_USER %}} -+for ARCH in "${RULE_ARCHS[@]}" -+do -+ PATTERN="-a always,exit -F arch=$ARCH -S {{{ ATTR }}} -F auid=0.*" -+ GROUP="perm_mod" -+ FULL_RULE="-a always,exit -F arch=$ARCH -S {{{ ATTR }}} -F auid=0 -F auid!=unset -F key=perm_mod" -+ -+ # Perform the remediation for both possible tools: 'auditctl' and 'augenrules' -+ fix_audit_syscall_rule "augenrules" "$PATTERN" "$GROUP" "$ARCH" "$FULL_RULE" -+ fix_audit_syscall_rule "auditctl" "$PATTERN" "$GROUP" "$ARCH" "$FULL_RULE" -+done -+{{% endif %}} -diff --git a/shared/templates/audit_rules_dac_modification/oval.template b/shared/templates/audit_rules_dac_modification/oval.template -index 5b1bf5dc6d..6e02cc7f09 100644 ---- a/shared/templates/audit_rules_dac_modification/oval.template -+++ b/shared/templates/audit_rules_dac_modification/oval.template -@@ -7,11 +7,19 @@ - - - -+{{% if CHECK_ROOT_USER %}} -+ -+{{% endif %}} -+ - - - - - -+{{% if CHECK_ROOT_USER %}} -+ -+{{% endif %}} -+ - - - -@@ -19,11 +27,17 @@ - - - -+{{% if CHECK_ROOT_USER %}} -+ -+{{% endif %}} - - - - - -+{{% if CHECK_ROOT_USER %}} -+ -+{{% endif %}} - - - -@@ -66,4 +80,43 @@ - 1 - - -+{{% if CHECK_ROOT_USER %}} -+ -+ -+ -+ -+ -+ ^/etc/audit/rules\.d/.*\.rules$ -+ ^[\s]*-a[\s]+always,exit[\s]+(?:.*-F[\s]+arch=b32[\s]+)(?:.*(-S[\s]+{{{ ATTR }}}[\s]+|([\s]+|[,]){{{ ATTR }}}([\s]+|[,])))(?:.*-F\s+auid=0[\s]+).*(-k[\s]+|-F[\s]+key=)[\S]+[\s]*$ -+ 1 -+ -+ -+ -+ -+ -+ -+ ^/etc/audit/rules\.d/.*\.rules$ -+ ^[\s]*-a[\s]+always,exit[\s]+(?:.*-F[\s]+arch=b64[\s]+)(?:.*(-S[\s]+{{{ ATTR }}}[\s]+|([\s]+|[,]){{{ ATTR }}}([\s]+|[,])))(?:.*-F\s+auid=0[\s]+).*(-k[\s]+|-F[\s]+key=)[\S]+[\s]*$ -+ 1 -+ -+ -+ -+ -+ -+ -+ /etc/audit/audit.rules -+ ^[\s]*-a[\s]+always,exit[\s]+(?:.*-F[\s]+arch=b32[\s]+)(?:.*(-S[\s]+{{{ ATTR }}}[\s]+|([\s]+|[,]){{{ ATTR }}}([\s]+|[,])))(?:.*-F\s+auid=0[\s]+).*(-k[\s]+|-F[\s]+key=)[\S]+[\s]*$ -+ 1 -+ -+ -+ -+ -+ -+ -+ /etc/audit/audit.rules -+ ^[\s]*-a[\s]+always,exit[\s]+(?:.*-F[\s]+arch=b64[\s]+)(?:.*(-S[\s]+{{{ ATTR }}}[\s]+|([\s]+|[,]){{{ ATTR }}}([\s]+|[,])))(?:.*-F\s+auid=0[\s]+).*(-k[\s]+|-F[\s]+key=)[\S]+[\s]*$ -+ 1 -+ -+{{% endif %}} -+ - -diff --git a/shared/templates/audit_rules_dac_modification/template.py b/shared/templates/audit_rules_dac_modification/template.py -new file mode 100644 -index 0000000000..e12e9c27e5 ---- /dev/null -+++ b/shared/templates/audit_rules_dac_modification/template.py -@@ -0,0 +1,7 @@ -+from ssg.utils import parse_template_boolean_value -+ -+ -+def preprocess(data, lang): -+ data["check_root_user"] = parse_template_boolean_value(data, parameter="check_root_user", default_value=False) -+ -+ return data - -From af8b663e00889010ac4d99fb0988aacf6b3ce651 Mon Sep 17 00:00:00 2001 -From: Gabriel Becker -Date: Mon, 17 May 2021 18:07:30 +0200 -Subject: [PATCH 06/21] Simplify perm=x code around - audit_rules_privileged_commands template. - -Also change the OVAL check regex to make it mandatory by removing the ? -character from the regex. ---- - .../oval.template | 4 +-- - .../ansible.template | 26 ++++--------------- - .../bash.template | 5 +++- - .../oval.template | 15 ++++------- - 4 files changed, 16 insertions(+), 34 deletions(-) - -diff --git a/shared/templates/audit_rules_dac_modification/oval.template b/shared/templates/audit_rules_dac_modification/oval.template -index 6e02cc7f09..8f30bef022 100644 ---- a/shared/templates/audit_rules_dac_modification/oval.template -+++ b/shared/templates/audit_rules_dac_modification/oval.template -@@ -10,14 +10,14 @@ - {{% if CHECK_ROOT_USER %}} - - {{% endif %}} -- -+ - - - - - - {{% if CHECK_ROOT_USER %}} -- -+ - {{% endif %}} - - -diff --git a/shared/templates/audit_rules_privileged_commands/ansible.template b/shared/templates/audit_rules_privileged_commands/ansible.template -index ec7b7d7605..a245de6673 100644 ---- a/shared/templates/audit_rules_privileged_commands/ansible.template -+++ b/shared/templates/audit_rules_privileged_commands/ansible.template -@@ -1,3 +1,6 @@ -+{{%- if product in ["rhel8", "sle12", "sle15"] %}} -+ {{%- set perm_x="-F perm=x " %}} -+{{%- endif %}} - # platform = multi_platform_rhel,multi_platform_fedora,multi_platform_ol,multi_platform_rhv,multi_platform_sle - # reboot = false - # strategy = restrict -@@ -26,12 +29,11 @@ - - "{{ find_{{{ NAME }}}.files | map(attribute='path') | list | first }}" - when: find_{{{ NAME }}}.matched is defined and find_{{{ NAME }}}.matched > 0 - --{{% if product in ["rhel8", "sle12", "sle15"] %}} - - - name: Inserts/replaces the {{{ NAME }}} rule in rules.d - lineinfile: - path: "{{ all_files[0] }}" -- line: '-a always,exit -F path={{{ PATH }}} -F perm=x -F auid>={{{ auid }}} -F auid!=unset -F key=privileged' -+ line: '-a always,exit -F path={{{ PATH }}} {{{ perm_x }}}-F auid>={{{ auid }}} -F auid!=unset -F key=privileged' - create: yes - - # Inserts/replaces the {{{ NAME }}} rule in /etc/audit/audit.rules -@@ -39,23 +41,5 @@ - - name: Inserts/replaces the {{{ NAME }}} rule in audit.rules - lineinfile: - path: /etc/audit/audit.rules -- line: '-a always,exit -F path={{{ PATH }}} -F perm=x -F auid>={{{ auid }}} -F auid!=unset -F key=privileged' -+ line: '-a always,exit -F path={{{ PATH }}} {{{ perm_x }}}-F auid>={{{ auid }}} -F auid!=unset -F key=privileged' - create: yes -- --{{% else %}} -- --- name: Inserts/replaces the {{{ NAME }}} rule in rules.d -- lineinfile: -- path: "{{ all_files[0] }}" -- line: '-a always,exit -F path={{{ PATH }}} -F auid>={{{ auid }}} -F auid!=unset -F key=privileged' -- create: yes -- --# Inserts/replaces the {{{ NAME }}} rule in /etc/audit/audit.rules -- --- name: Inserts/replaces the {{{ NAME }}} rule in audit.rules -- lineinfile: -- path: /etc/audit/audit.rules -- line: '-a always,exit -F path={{{ PATH }}} -F auid>={{{ auid }}} -F auid!=unset -F key=privileged' -- create: yes -- --{{% endif %}} -diff --git a/shared/templates/audit_rules_privileged_commands/bash.template b/shared/templates/audit_rules_privileged_commands/bash.template -index 100a4770bf..2b3795674f 100644 ---- a/shared/templates/audit_rules_privileged_commands/bash.template -+++ b/shared/templates/audit_rules_privileged_commands/bash.template -@@ -1,3 +1,6 @@ -+{{%- if product in ["rhel8", "sle12", "sle15"] %}} -+ {{%- set perm_x="-F perm=x " %}} -+{{%- endif %}} - # platform = multi_platform_rhel,multi_platform_fedora,multi_platform_ol,multi_platform_rhv - - # Include source function library. -@@ -7,7 +10,7 @@ PATTERN="-a always,exit -F path={{{ PATH }}}\\s\\+.*" - GROUP="privileged" - # Although the fix doesn't use ARCH, we reset it because it could have been set by some other remediation - ARCH="" --FULL_RULE="-a always,exit -F path={{{ PATH }}} {{{ "-F perm=x " if product in ["rhel8"]}}}-F auid>={{{ auid }}} -F auid!=unset -F key=privileged" -+FULL_RULE="-a always,exit -F path={{{ PATH }}} {{{ perm_x }}}-F auid>={{{ auid }}} -F auid!=unset -F key=privileged" - # Perform the remediation for both possible tools: 'auditctl' and 'augenrules' - fix_audit_syscall_rule "auditctl" "$PATTERN" "$GROUP" "$ARCH" "$FULL_RULE" - fix_audit_syscall_rule "augenrules" "$PATTERN" "$GROUP" "$ARCH" "$FULL_RULE" -diff --git a/shared/templates/audit_rules_privileged_commands/oval.template b/shared/templates/audit_rules_privileged_commands/oval.template -index 151a9d5d47..8e3919ca66 100644 ---- a/shared/templates/audit_rules_privileged_commands/oval.template -+++ b/shared/templates/audit_rules_privileged_commands/oval.template -@@ -1,3 +1,6 @@ -+{{%- if product in ["rhel8", "sle12", "sle15"] %}} -+ {{%- set perm_x="(?:[\s]+-F[\s]+perm=x)" %}} -+{{%- endif %}} - - - {{{ oval_metadata("Audit rules about the information on the use of " + NAME + " is enabled.") }}} -@@ -23,11 +26,7 @@ -
- - ^/etc/audit/rules\.d/.*\.rules$ --{{% if product in ["rhel8", "sle12", "sle15"] %}} -- ^[\s]*-a[\s]+always,exit[\s]+(-S[\s]+all[\s]+)*-F[\s]+path={{{ PATH }}}(?:[\s]+-F[\s]+perm=x)?[\s]+-F[\s]+auid>={{{ auid }}}[\s]+-F[\s]+auid!=(?:4294967295|unset|-1)[\s]+(?:-k[\s]+|-F[\s]+key=)[\S]+[\s]*$ --{{% else %}} -- ^[\s]*-a[\s]+always,exit[\s]+-F[\s]+path={{{ PATH }}}[\s]+-F[\s]+auid>={{{ auid }}}[\s]+-F[\s]+auid!=(?:4294967295|unset)[\s]+(?:-k[\s]+|-F[\s]+key=)[\S]+[\s]*$ --{{% endif %}} -+ ^[\s]*-a[\s]+always,exit[\s]+-F[\s]+path={{{ PATH }}}{{{ perm_x }}}[\s]+-F[\s]+auid>={{{ auid }}}[\s]+-F[\s]+auid!=(?:4294967295|unset)[\s]+(?:-k[\s]+|-F[\s]+key=)[\S]+[\s]*$ - 1 - - -@@ -36,11 +35,7 @@ - - - /etc/audit/audit.rules --{{% if product in ["rhel8", "sle12", "sle15"] %}} -- ^[\s]*-a[\s]+always,exit[\s]+-F[\s]+path={{{ PATH }}}(?:[\s]+-F[\s]+perm=x)?[\s]+-F[\s]+auid>={{{ auid }}}[\s]+-F[\s]+auid!=(?:4294967295|unset)[\s]+(?:-k[\s]+|-F[\s]+key=)[\S]+[\s]*$ --{{% else %}} -- ^[\s]*-a[\s]+always,exit[\s]+-F[\s]+path={{{ PATH }}}[\s]+-F[\s]+auid>={{{ auid }}}[\s]+-F[\s]+auid!=(?:4294967295|unset)[\s]+(?:-k[\s]+|-F[\s]+key=)[\S]+[\s]*$ --{{% endif %}} -+ ^[\s]*-a[\s]+always,exit[\s]+-F[\s]+path={{{ PATH }}}{{{ perm_x }}}[\s]+-F[\s]+auid>={{{ auid }}}[\s]+-F[\s]+auid!=(?:4294967295|unset)[\s]+(?:-k[\s]+|-F[\s]+key=)[\S]+[\s]*$ - 1 - - - -From 4cf80fd7eff49d6e14852947e76a302ca2993db7 Mon Sep 17 00:00:00 2001 -From: Gabriel Becker -Date: Fri, 30 Jul 2021 15:04:14 +0200 -Subject: [PATCH 07/21] Fix audit bash remediation to remove the auid!=unset - when using auid=0. - ---- - shared/templates/audit_rules_dac_modification/bash.template | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/shared/templates/audit_rules_dac_modification/bash.template b/shared/templates/audit_rules_dac_modification/bash.template -index a10a9145b2..d64d264635 100644 ---- a/shared/templates/audit_rules_dac_modification/bash.template -+++ b/shared/templates/audit_rules_dac_modification/bash.template -@@ -24,7 +24,7 @@ for ARCH in "${RULE_ARCHS[@]}" - do - PATTERN="-a always,exit -F arch=$ARCH -S {{{ ATTR }}} -F auid=0.*" - GROUP="perm_mod" -- FULL_RULE="-a always,exit -F arch=$ARCH -S {{{ ATTR }}} -F auid=0 -F auid!=unset -F key=perm_mod" -+ FULL_RULE="-a always,exit -F arch=$ARCH -S {{{ ATTR }}} -F auid=0 -F key=perm_mod" - - # Perform the remediation for both possible tools: 'auditctl' and 'augenrules' - fix_audit_syscall_rule "augenrules" "$PATTERN" "$GROUP" "$ARCH" "$FULL_RULE" - -From 0833b43bfa039c4ee661049fb25b86ef3854b614 Mon Sep 17 00:00:00 2001 -From: Gabriel Becker -Date: Fri, 30 Jul 2021 15:04:55 +0200 -Subject: [PATCH 08/21] Update audit_rules_dac_modification ansible remediation - with auid=0 fix. - ---- - .../ansible.template | 36 +++++++++++++++++++ - 1 file changed, 36 insertions(+) - -diff --git a/shared/templates/audit_rules_dac_modification/ansible.template b/shared/templates/audit_rules_dac_modification/ansible.template -index 70101ca777..d048978456 100644 ---- a/shared/templates/audit_rules_dac_modification/ansible.template -+++ b/shared/templates/audit_rules_dac_modification/ansible.template -@@ -40,12 +40,29 @@ - line: "-a always,exit -F arch=b32 -S {{{ ATTR }}} -F auid>={{{ auid }}} -F auid!=unset -F key=perm_mod" - create: yes - -+{{%- if CHECK_ROOT_USER %}} -+- name: Inserts/replaces the {{{ ATTR }}} rule with auid=0 in rules.d when on x86 -+ lineinfile: -+ path: "{{ all_files[0] }}" -+ line: "-a always,exit -F arch=b32 -S {{{ ATTR }}} -F auid=0 -F key=perm_mod" -+ create: yes -+{{%- endif %}} -+ - - name: Inserts/replaces the {{{ ATTR }}} rule in rules.d when on x86_64 - lineinfile: - path: "{{ all_files[0] }}" - line: "-a always,exit -F arch=b64 -S {{{ ATTR }}} -F auid>={{{ auid }}} -F auid!=unset -F key=perm_mod" - create: yes - when: audit_arch is defined and audit_arch == 'b64' -+ -+{{%- if CHECK_ROOT_USER %}} -+- name: Inserts/replaces the {{{ ATTR }}} rule with auid=0 in rules.d when on x86_64 -+ lineinfile: -+ path: "{{ all_files[0] }}" -+ line: "-a always,exit -F arch=b64 -S {{{ ATTR }}} -F auid=0 -F key=perm_mod" -+ create: yes -+ when: audit_arch is defined and audit_arch == 'b64' -+{{%- endif %}} - # - # Inserts/replaces the rule in /etc/audit/audit.rules - # -@@ -56,6 +73,15 @@ - dest: /etc/audit/audit.rules - create: yes - -+{{%- if CHECK_ROOT_USER %}} -+- name: Inserts/replaces the {{{ ATTR }}} rule with auid=0 in /etc/audit/audit.rules when on x86 -+ lineinfile: -+ line: "-a always,exit -F arch=b32 -S {{{ ATTR }}} -F auid=0 -F key=perm_mod" -+ state: present -+ dest: /etc/audit/audit.rules -+ create: yes -+{{%- endif %}} -+ - - name: Inserts/replaces the {{{ ATTR }}} rule in audit.rules when on x86_64 - lineinfile: - line: "-a always,exit -F arch=b64 -S {{{ ATTR }}} -F auid>={{{ auid }}} -F auid!=unset -F key=perm_mod" -@@ -63,3 +89,13 @@ - dest: /etc/audit/audit.rules - create: yes - when: audit_arch is defined and audit_arch == 'b64' -+ -+{{%- if CHECK_ROOT_USER %}} -+- name: Inserts/replaces the {{{ ATTR }}} rule with auid=0 in audit.rules when on x86_64 -+ lineinfile: -+ line: "-a always,exit -F arch=b64 -S {{{ ATTR }}} -F auid=0 -F auid!=unset -F key=perm_mod" -+ state: present -+ dest: /etc/audit/audit.rules -+ create: yes -+ when: audit_arch is defined and audit_arch == 'b64' -+{{%- endif %}} - -From 314251db8fbff07ac4b796944381f9bb1eef05c2 Mon Sep 17 00:00:00 2001 -From: Gabriel Becker -Date: Fri, 30 Jul 2021 15:05:42 +0200 -Subject: [PATCH 09/21] Update audit_rules_dac_modification rules description. - -Make the check_user_root template parameter only applicable to RHEL8. ---- - .../rule.yml | 14 +++++++++++++- - .../rule.yml | 14 +++++++++++++- - .../rule.yml | 14 +++++++++++++- - .../rule.yml | 14 +++++++++++++- - .../rule.yml | 14 +++++++++++++- - .../audit_rules_dac_modification_setxattr/rule.yml | 14 +++++++++++++- - 6 files changed, 78 insertions(+), 6 deletions(-) - -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fremovexattr/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fremovexattr/rule.yml -index 294a7ebfd2..e1a2492c4c 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fremovexattr/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fremovexattr/rule.yml -@@ -11,17 +11,29 @@ description: |- - startup (the default), add the following line to a file with suffix - .rules in the directory /etc/audit/rules.d: -
-a always,exit -F arch=b32 -S fremovexattr -F auid>={{{ auid }}} -F auid!=unset -F key=perm_mod
-+{{%- if product in ["rhel8"] %}} -+
-a always,exit -F arch=b32 -S fremovexattr -F auid=0 -F key=perm_mod
-+{{%- endif %}} -

- If the system is 64 bit then also add the following line: -
-a always,exit -F arch=b64 -S fremovexattr -F auid>={{{ auid }}} -F auid!=unset -F key=perm_mod
-+{{%- if product in ["rhel8"] %}} -+
-a always,exit -F arch=b64 -S fremovexattr -F auid=0 -F key=perm_mod
-+{{%- endif %}} -

- If the auditd daemon is configured to use the auditctl - utility to read audit rules during daemon startup, add the following line to - /etc/audit/audit.rules file: -
-a always,exit -F arch=b32 -S fremovexattr -F auid>={{{ auid }}} -F auid!=unset -F key=perm_mod
-+{{%- if product in ["rhel8"] %}} -+
-a always,exit -F arch=b32 -S fremovexattr -F auid=0 -F key=perm_mod
-+{{%- endif %}} -

- If the system is 64 bit then also add the following line: -
-a always,exit -F arch=b64 -S fremovexattr -F auid>={{{ auid }}} -F auid!=unset -F key=perm_mod
-+{{%- if product in ["rhel8"] %}} -+
-a always,exit -F arch=b64 -S fremovexattr -F auid=0 -F key=perm_mod
-+{{%- endif %}} - - rationale: |- - The changing of file permissions could indicate that a user is attempting to -@@ -78,4 +90,4 @@ template: - name: audit_rules_dac_modification - vars: - attr: fremovexattr -- check_root_user: "true" -+ check_root_user@rhel8: "true" -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fsetxattr/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fsetxattr/rule.yml -index 9b01a07515..4c27cbf7fb 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fsetxattr/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fsetxattr/rule.yml -@@ -9,14 +9,26 @@ description: |- - startup (the default), add the following line to a file with suffix - .rules in the directory /etc/audit/rules.d: -
-a always,exit -F arch=b32 -S fsetxattr -F auid>={{{ auid }}} -F auid!=unset -F key=perm_mod
-+{{%- if product in ["rhel8"] %}} -+
-a always,exit -F arch=b32 -S fsetxattr -F auid=0 -F key=perm_mod
-+{{%- endif %}} - If the system is 64 bit then also add the following line: -
-a always,exit -F arch=b64 -S fsetxattr -F auid>={{{ auid }}} -F auid!=unset -F key=perm_mod
-+{{%- if product in ["rhel8"] %}} -+
-a always,exit -F arch=b64 -S fsetxattr -F auid=0 -F key=perm_mod
-+{{%- endif %}} - If the auditd daemon is configured to use the auditctl - utility to read audit rules during daemon startup, add the following line to - /etc/audit/audit.rules file: -
-a always,exit -F arch=b32 -S fsetxattr -F auid>={{{ auid }}} -F auid!=unset -F key=perm_mod
-+{{%- if product in ["rhel8"] %}} -+
-a always,exit -F arch=b32 -S fsetxattr -F auid=0 -F key=perm_mod
-+{{%- endif %}} - If the system is 64 bit then also add the following line: -
-a always,exit -F arch=b64 -S fsetxattr -F auid>={{{ auid }}} -F auid!=unset -F key=perm_mod
-+{{%- if product in ["rhel8"] %}} -+
-a always,exit -F arch=b64 -S fsetxattr -F auid=0 -F key=perm_mod
-+{{%- endif %}} - - rationale: |- - The changing of file permissions could indicate that a user is attempting to -@@ -73,4 +85,4 @@ template: - name: audit_rules_dac_modification - vars: - attr: fsetxattr -- check_root_user: "true" -+ check_root_user@rhel8: "true" -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_lremovexattr/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_lremovexattr/rule.yml -index 577af632aa..ad034bc570 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_lremovexattr/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_lremovexattr/rule.yml -@@ -11,17 +11,29 @@ description: |- - startup (the default), add the following line to a file with suffix - .rules in the directory /etc/audit/rules.d: -
-a always,exit -F arch=b32 -S lremovexattr -F auid>={{{ auid }}} -F auid!=unset -F key=perm_mod
-+{{%- if product in ["rhel8"] %}} -+
-a always,exit -F arch=b32 -S lremovexattr -F auid=0 -F key=perm_mod
-+{{%- endif %}} -

- If the system is 64 bit then also add the following line: -
-a always,exit -F arch=b64 -S lremovexattr -F auid>={{{ auid }}} -F auid!=unset -F key=perm_mod
-+{{%- if product in ["rhel8"] %}} -+
-a always,exit -F arch=b64 -S lremovexattr -F auid=0 -F key=perm_mod
-+{{%- endif %}} -

- If the auditd daemon is configured to use the auditctl - utility to read audit rules during daemon startup, add the following line to - /etc/audit/audit.rules file: -
-a always,exit -F arch=b32 -S lremovexattr -F auid>={{{ auid }}} -F auid!=unset -F key=perm_mod
-+{{%- if product in ["rhel8"] %}} -+
-a always,exit -F arch=b32 -S lremovexattr -F auid=0 -F key=perm_mod
-+{{%- endif %}} -

- If the system is 64 bit then also add the following line: -
-a always,exit -F arch=b64 -S lremovexattr -F auid>={{{ auid }}} -F auid!=unset -F key=perm_mod
-+{{%- if product in ["rhel8"] %}} -+
-a always,exit -F arch=b64 -S lremovexattr -F auid=0 -F key=perm_mod
-+{{%- endif %}} - - rationale: |- - The changing of file permissions could indicate that a user is attempting to -@@ -78,4 +90,4 @@ template: - name: audit_rules_dac_modification - vars: - attr: lremovexattr -- check_root_user: "true" -+ check_root_user@rhel8: "true" -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_lsetxattr/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_lsetxattr/rule.yml -index d6be12af63..a3895bd4c7 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_lsetxattr/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_lsetxattr/rule.yml -@@ -9,14 +9,26 @@ description: |- - startup (the default), add the following line to a file with suffix - .rules in the directory /etc/audit/rules.d: -
-a always,exit -F arch=b32 -S lsetxattr -F auid>={{{ auid }}} -F auid!=unset -F key=perm_mod
-+{{%- if product in ["rhel8"] %}} -+
-a always,exit -F arch=b32 -S lsetxattr -F auid=0 -F key=perm_mod
-+{{%- endif %}} - If the system is 64 bit then also add the following line: -
-a always,exit -F arch=b64 -S lsetxattr -F auid>={{{ auid }}} -F auid!=unset -F key=perm_mod
-+{{%- if product in ["rhel8"] %}} -+
-a always,exit -F arch=b64 -S lsetxattr -F auid=0 -F key=perm_mod
-+{{%- endif %}} - If the auditd daemon is configured to use the auditctl - utility to read audit rules during daemon startup, add the following line to - /etc/audit/audit.rules file: -
-a always,exit -F arch=b32 -S lsetxattr -F auid>={{{ auid }}} -F auid!=unset -F key=perm_mod
-+{{%- if product in ["rhel8"] %}} -+
-a always,exit -F arch=b32 -S lsetxattr -F auid=0 -F key=perm_mod
-+{{%- endif %}} - If the system is 64 bit then also add the following line: -
-a always,exit -F arch=b64 -S lsetxattr -F auid>={{{ auid }}} -F auid!=unset -F key=perm_mod
-+{{%- if product in ["rhel8"] %}} -+
-a always,exit -F arch=b64 -S lsetxattr -F auid=0 -F key=perm_mod
-+{{%- endif %}} - - rationale: |- - The changing of file permissions could indicate that a user is attempting to -@@ -71,4 +83,4 @@ template: - name: audit_rules_dac_modification - vars: - attr: lsetxattr -- check_root_user: "true" -+ check_root_user@rhel8: "true" -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_removexattr/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_removexattr/rule.yml -index 982d6d377c..eee86b99de 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_removexattr/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_removexattr/rule.yml -@@ -10,17 +10,29 @@ description: |- - program to read audit rules during daemon startup (the default), add the - following line to a file with suffix .rules in the directory /etc/audit/rules.d: -
-a always,exit -F arch=b32 -S removexattr -F auid>={{{ auid }}} -F auid!=unset -F key=perm_mod
-+{{%- if product in ["rhel8"] %}} -+
-a always,exit -F arch=b32 -S removexattr -F auid=0 -F key=perm_mod
-+{{%- endif %}} -

- If the system is 64 bit then also add the following line: -
-a always,exit -F arch=b64 -S removexattr -F auid>={{{ auid }}} -F auid!=unset -F key=perm_mod
-+{{%- if product in ["rhel8"] %}} -+
-a always,exit -F arch=b64 -S lsetxattr -F auid=0 -F key=perm_mod
-+{{%- endif %}} -

- If the auditd daemon is configured to use the auditctl - utility to read audit rules during daemon startup, add the following line to - /etc/audit/audit.rules file: -
-a always,exit -F arch=b32 -S removexattr -F auid>={{{ auid }}} -F auid!=unset -F key=perm_mod
-+{{%- if product in ["rhel8"] %}} -+
-a always,exit -F arch=b32 -S removexattr -F auid=0 -F key=perm_mod
-+{{%- endif %}} -

- If the system is 64 bit then also add the following line: -
-a always,exit -F arch=b64 -S removexattr -F auid>={{{ auid }}} -F auid!=unset -F key=perm_mod
-+{{%- if product in ["rhel8"] %}} -+
-a always,exit -F arch=b64 -S removexattr -F auid=0 -F key=perm_mod
-+{{%- endif %}} - - rationale: |- - The changing of file permissions could indicate that a user is attempting to -@@ -77,4 +89,4 @@ template: - name: audit_rules_dac_modification - vars: - attr: removexattr -- check_root_user: "true" -+ check_root_user@rhel8: "true" -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_setxattr/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_setxattr/rule.yml -index 71c31e2d15..4a90ed9f96 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_setxattr/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_setxattr/rule.yml -@@ -9,14 +9,26 @@ description: |- - startup (the default), add the following line to a file with suffix - .rules in the directory /etc/audit/rules.d: -
-a always,exit -F arch=b32 -S setxattr -F auid>={{{ auid }}} -F auid!=unset -F key=perm_mod
-+{{%- if product in ["rhel8"] %}} -+
-a always,exit -F arch=b32 -S setxattr -F auid=0 -F key=perm_mod
-+{{%- endif %}} - If the system is 64 bit then also add the following line: -
-a always,exit -F arch=b64 -S setxattr -F auid>={{{ auid }}} -F auid!=unset -F key=perm_mod
-+{{%- if product in ["rhel8"] %}} -+
-a always,exit -F arch=b64 -S setxattr -F auid=0 -F key=perm_mod
-+{{%- endif %}} - If the auditd daemon is configured to use the auditctl - utility to read audit rules during daemon startup, add the following line to - /etc/audit/audit.rules file: -
-a always,exit -F arch=b32 -S setxattr -F auid>={{{ auid }}} -F auid!=unset -F key=perm_mod
-+{{%- if product in ["rhel8"] %}} -+
-a always,exit -F arch=b32 -S setxattr -F auid=0 -F key=perm_mod
-+{{%- endif %}} - If the system is 64 bit then also add the following line: -
-a always,exit -F arch=b64 -S setxattr -F auid>={{{ auid }}} -F auid!=unset -F key=perm_mod
-+{{%- if product in ["rhel8"] %}} -+
-a always,exit -F arch=b64 -S setxattr -F auid=0 -F key=perm_mod
-+{{%- endif %}} - - rationale: |- - The changing of file permissions could indicate that a user is attempting to -@@ -73,4 +85,4 @@ template: - name: audit_rules_dac_modification - vars: - attr: setxattr -- check_root_user: "true" -+ check_root_user@rhel8: "true" - -From 48ce4b6e4803f92291c44acc990bd6a61baf4128 Mon Sep 17 00:00:00 2001 -From: Gabriel Becker -Date: Fri, 30 Jul 2021 16:54:48 +0200 -Subject: [PATCH 10/21] Remove rule that is selected twice in RHEL8 STIG - profile. - -It's already part of the following STIG id: - # RHEL-08-010560 - - service_auditd_enabled ---- - products/rhel8/profiles/stig.profile | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index c3eee7fae0..3cbb4796ac 100644 ---- a/products/rhel8/profiles/stig.profile -+++ b/products/rhel8/profiles/stig.profile -@@ -681,7 +681,6 @@ selections: - - # RHEL-08-030180 - - package_audit_installed -- - service_auditd_enabled - - # RHEL-08-030190 - - audit_rules_privileged_commands_su - -From 7f23cee71a3fc1791b26c4e59339d73063fe867e Mon Sep 17 00:00:00 2001 -From: Gabriel Becker -Date: Mon, 2 Aug 2021 15:36:55 +0200 -Subject: [PATCH 11/21] Fix RHEL8 STIG id references in audit rules. - ---- - .../audit_rules_dac_modification_chmod/rule.yml | 3 ++- - .../audit_rules_dac_modification_chown/rule.yml | 3 ++- - .../audit_rules_dac_modification_fchmod/rule.yml | 3 ++- - .../audit_rules_dac_modification_fchmodat/rule.yml | 3 ++- - .../audit_rules_dac_modification_fchown/rule.yml | 3 ++- - .../audit_rules_dac_modification_fchownat/rule.yml | 3 ++- - .../audit_rules_dac_modification_fremovexattr/rule.yml | 3 ++- - .../audit_rules_dac_modification_fsetxattr/rule.yml | 3 ++- - .../audit_rules_dac_modification_lchown/rule.yml | 3 ++- - .../audit_rules_dac_modification_lremovexattr/rule.yml | 3 ++- - .../audit_rules_dac_modification_lsetxattr/rule.yml | 3 ++- - .../audit_rules_dac_modification_removexattr/rule.yml | 5 +++-- - .../audit_rules_dac_modification_setxattr/rule.yml | 3 ++- - .../audit_rules_execution_chacl/rule.yml | 4 +++- - .../audit_rules_execution_setfacl/rule.yml | 4 +++- - .../audit_rules_execution_chcon/rule.yml | 3 ++- - .../audit_rules_execution_semanage/rule.yml | 5 +++-- - .../audit_rules_execution_setfiles/rule.yml | 5 +++-- - .../audit_rules_execution_setsebool/rule.yml | 5 +++-- - .../audit_rules_file_deletion_events_rename/rule.yml | 5 +++-- - .../audit_rules_file_deletion_events_renameat/rule.yml | 5 +++-- - .../audit_rules_file_deletion_events_rmdir/rule.yml | 5 +++-- - .../audit_rules_file_deletion_events_unlink/rule.yml | 5 +++-- - .../audit_rules_file_deletion_events_unlinkat/rule.yml | 5 +++-- - .../rule.yml | 3 ++- - .../rule.yml | 3 ++- - .../rule.yml | 3 ++- - .../rule.yml | 3 ++- - .../rule.yml | 3 ++- - .../rule.yml | 5 +++-- - .../audit_rules_kernel_module_loading_delete/rule.yml | 3 ++- - .../audit_rules_kernel_module_loading_finit/rule.yml | 3 ++- - .../audit_rules_kernel_module_loading_init/rule.yml | 3 ++- - .../audit_rules_login_events_lastlog/rule.yml | 4 ++-- - .../audit_rules_privileged_commands_chage/rule.yml | 5 +++-- - .../audit_rules_privileged_commands_chsh/rule.yml | 5 +++-- - .../audit_rules_privileged_commands_crontab/rule.yml | 5 +++-- - .../audit_rules_privileged_commands_gpasswd/rule.yml | 5 +++-- - .../audit_rules_privileged_commands_kmod/rule.yml | 4 +++- - .../audit_rules_privileged_commands_mount/rule.yml | 1 + - .../audit_rules_privileged_commands_newgrp/rule.yml | 5 +++-- - .../rule.yml | 5 +++-- - .../audit_rules_privileged_commands_passwd/rule.yml | 5 +++-- - .../audit_rules_privileged_commands_postdrop/rule.yml | 5 +++-- - .../audit_rules_privileged_commands_postqueue/rule.yml | 5 +++-- - .../audit_rules_privileged_commands_ssh_agent/rule.yml | 6 ++++-- - .../audit_rules_privileged_commands_ssh_keysign/rule.yml | 5 +++-- - .../audit_rules_privileged_commands_su/rule.yml | 5 +++-- - .../audit_rules_privileged_commands_sudo/rule.yml | 5 +++-- - .../audit_rules_privileged_commands_umount/rule.yml | 1 + - .../audit_rules_privileged_commands_unix_chkpwd/rule.yml | 3 ++- - .../audit_rules_privileged_commands_userhelper/rule.yml | 5 +++-- - .../audit_rules_privileged_commands_usermod/rule.yml | 4 +++- - .../auditd_configure_rules/audit_rules_immutable/rule.yml | 2 ++ - .../audit_rules_media_export/rule.yml | 5 +++-- - .../audit_rules_sysadmin_actions/rule.yml | 2 +- - .../audit_rules_usergroup_modification_group/rule.yml | 4 ++-- - .../audit_rules_usergroup_modification_gshadow/rule.yml | 4 ++-- - .../audit_rules_usergroup_modification_opasswd/rule.yml | 4 ++-- - .../audit_rules_usergroup_modification_passwd/rule.yml | 4 ++-- - .../audit_rules_usergroup_modification_shadow/rule.yml | 4 ++-- - .../guide/system/auditing/grub2_audit_argument/rule.yml | 2 +- - .../policy_rules/audit_immutable_login_uids/rule.yml | 3 ++- - products/rhel8/profiles/stig.profile | 2 +- - shared/references/cce-redhat-avail.txt | 5 ----- - 65 files changed, 153 insertions(+), 97 deletions(-) - -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_chmod/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_chmod/rule.yml -index 4cb9bb5cf4..bc3e47523f 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_chmod/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_chmod/rule.yml -@@ -52,9 +52,10 @@ references: - nist@sle15: AU-3,AU-3.1,AU-12(c),AU-12.1(iv),AU-12(a),AU-12.1(ii),MA-4(1)(a) - ospp: FAU_GEN.1.1.c - pcidss: Req-10.5.5 -- srg: SRG-OS-000064-GPOS-00033,SRG-OS-000392-GPOS-00172,SRG-OS-000458-GPOS-00203 -+ srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215,SRG-OS-000064-GPOS-00033,SRG-OS-000466-GPOS-00210,SRG-OS-000458-GPOS-00203 - stigid@ol7: OL07-00-030410 - stigid@rhel7: RHEL-07-030410 -+ stigid@rhel8: RHEL-08-030490 - stigid@sle12: SLES-12-020460 - stigid@sle15: SLES-15-030290 - stigid@ubuntu2004: UBTU-20-010152 -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_chown/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_chown/rule.yml -index cbac49dd12..6b3236cf95 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_chown/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_chown/rule.yml -@@ -52,9 +52,10 @@ references: - nist@sle15: AU-3,AU-3.1,AU-12(c),AU-12.1(iv),AU-12(a),AU-12.1(ii),MA-4(1)(a) - ospp: FAU_GEN.1.1.c - pcidss: Req-10.5.5 -- srg: SRG-OS-000037-GPOS-00015,SRG-OS-000062-GPOS-00031,SRG-OS-000064-GPOS-00033,SRG-OS-000392-GPOS-00172,SRG-OS-000458-GPOS-00203,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215,SRG-OS-000474-GPOS-00219 -+ srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215,SRG-OS-000064-GPOS-00033,SRG-OS-000466-GPOS-00210,SRG-OS-000458-GPOS-00203,SRG-OS-000474-GPOS-00219 - stigid@ol7: OL07-00-030370 - stigid@rhel7: RHEL-07-030370 -+ stigid@rhel8: RHEL-08-030480 - stigid@sle12: SLES-12-020420 - stigid@sle15: SLES-15-030250 - stigid@ubuntu2004: UBTU-20-010148 -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fchmod/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fchmod/rule.yml -index 81f2f067ba..ed4d88cb0c 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fchmod/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fchmod/rule.yml -@@ -52,9 +52,10 @@ references: - nist@sle15: AU-3,AU-3.1,AU-12(c),AU-12.1(iv),AU-12(a),AU-12.1(ii),MA-4(1)(a) - ospp: FAU_GEN.1.1.c - pcidss: Req-10.5.5 -- srg: SRG-OS-000037-GPOS-00015,SRG-OS-000062-GPOS-00031,SRG-OS-000064-GPOS-00033,SRG-OS-000392-GPOS-00172,SRG-OS-000458-GPOS-00203,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215 -+ srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215,SRG-OS-000064-GPOS-00033,SRG-OS-000466-GPOS-00210,SRG-OS-000458-GPOS-00203 - stigid@ol7: OL07-00-030420 - stigid@rhel7: RHEL-07-030420 -+ stigid@rhel8: RHEL-08-030540 - stigid@sle12: SLES-12-020470 - stigid@sle15: SLES-15-030300 - stigid@ubuntu2004: UBTU-20-010153 -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fchmodat/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fchmodat/rule.yml -index 7fcf1c7ef1..2db3878939 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fchmodat/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fchmodat/rule.yml -@@ -52,9 +52,10 @@ references: - nist@sle15: AU-3,AU-3.1,AU-12(c),AU-12.1(iv),AU-12(a),AU-12.1(ii),MA-4(1)(a) - ospp: FAU_GEN.1.1.c - pcidss: Req-10.5.5 -- srg: SRG-OS-000037-GPOS-00015,SRG-OS-000062-GPOS-00031,SRG-OS-000064-GPOS-00033,SRG-OS-000392-GPOS-00172,SRG-OS-000458-GPOS-00203,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215 -+ srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215,SRG-OS-000064-GPOS-00033,SRG-OS-000466-GPOS-00210,SRG-OS-000458-GPOS-00203 - stigid@ol7: OL07-00-030430 - stigid@rhel7: RHEL-07-030430 -+ stigid@rhel8: RHEL-08-030530 - stigid@sle12: SLES-12-020480 - stigid@sle15: SLES-12-030310 - stigid@ubuntu2004: UBTU-20-010154 -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fchown/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fchown/rule.yml -index d696862377..37dfb89ef2 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fchown/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fchown/rule.yml -@@ -55,9 +55,10 @@ references: - nist@sle15: AU-3,AU-3.1,AU-12(c),AU-12.1(iv),AU-12(a),AU-12.1(ii),MA-4(1)(a) - ospp: FAU_GEN.1.1.c - pcidss: Req-10.5.5 -- srg: SRG-OS-000037-GPOS-00015,SRG-OS-000062-GPOS-00031,SRG-OS-000064-GPOS-00033,SRG-OS-000392-GPOS-00172,SRG-OS-000458-GPOS-00203,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215,SRG-OS-000474-GPOS-00219 -+ srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215,SRG-OS-000064-GPOS-00033,SRG-OS-000466-GPOS-00210,SRG-OS-000458-GPOS-00203,SRG-OS-000474-GPOS-00219 - stigid@ol7: OL07-00-030380 - stigid@rhel7: RHEL-07-030380 -+ stigid@rhel8: RHEL-08-030520 - stigid@sle12: SLES-12-020430 - stigid@sle15: SLES-15-030260 - stigid@ubuntu2004: UBTU-20-010149 -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fchownat/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fchownat/rule.yml -index 0213d78fbc..f75ac769d8 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fchownat/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fchownat/rule.yml -@@ -52,9 +52,10 @@ references: - nist@sle15: AU-3,AU-3.1,AU-12(c),AU-12.1(iv),AU-12(a),AU-12.1(ii),MA-4(1)(a) - ospp: FAU_GEN.1.1.c - pcidss: Req-10.5.5 -- srg: SRG-OS-000037-GPOS-00015,SRG-OS-000062-GPOS-00031,SRG-OS-000064-GPOS-00033,SRG-OS-000392-GPOS-00172,SRG-OS-000458-GPOS-00203,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215,SRG-OS-000474-GPOS-00219 -+ srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215,SRG-OS-000064-GPOS-00033,SRG-OS-000466-GPOS-00210,SRG-OS-000458-GPOS-00203,SRG-OS-000474-GPOS-00219 - stigid@ol7: OL07-00-030400 - stigid@rhel7: RHEL-07-030400 -+ stigid@rhel8: RHEL-08-030510 - stigid@sle12: SLES-12-020450 - stigid@sle15: SLES-15-030280 - stigid@ubuntu2004: UBTU-20-010150 -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fremovexattr/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fremovexattr/rule.yml -index e1a2492c4c..d46968da8f 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fremovexattr/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fremovexattr/rule.yml -@@ -69,9 +69,10 @@ references: - nist@sle15: AU-12(a),AU-12.1(ii),AU-12(c),AU-12.1(iv),AU-3,AU-3.1,MA-4(1)(a) - ospp: FAU_GEN.1.1.c - pcidss: Req-10.5.5 -- srg: SRG-OS-000037-GPOS-00015,SRG-OS-000062-GPOS-00031,SRG-OS-000064-GPOS-00033,SRG-OS-000392-GPOS-00172,SRG-OS-000458-GPOS-00203,SRG-OS-000462-GPOS-00206,SRG-OS-000466-GPOS-00210,SRG-OS-000471-GPOS-00215 -+ srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000458-GPOS-00203,SRG-OS-000462-GPOS-00206,SRG-OS-000463-GPOS-00207,SRG-OS-000471-GPOS-00215,SRG-OS-000474-GPOS-00219,SRG-OS-000466-GPOS-00210,SRG-OS-000064-GPOS-00033 - stigid@ol7: OL07-00-030480 - stigid@rhel7: RHEL-07-030480 -+ stigid@rhel8: RHEL-08-030240 - stigid@sle12: SLES-12-020410 - stigid@sle15: SLES-15-030210 - stigid@ubuntu2004: UBTU-20-010147 -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fsetxattr/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fsetxattr/rule.yml -index 4c27cbf7fb..564daccaed 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fsetxattr/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fsetxattr/rule.yml -@@ -64,9 +64,10 @@ references: - nist@sle15: AU-12(a),AU-12.1(ii),AU-12(c),AU-12.1(iv),AU-3,AU-3.1,MA-4(1)(a) - ospp: FAU_GEN.1.1.c - pcidss: Req-10.5.5 -- srg: SRG-OS-000037-GPOS-00015,SRG-OS-000062-GPOS-00031,SRG-OS-000064-GPOS-00033,SRG-OS-000392-GPOS-00172,SRG-OS-000458-GPOS-00203,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215 -+ srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000458-GPOS-00203,SRG-OS-000462-GPOS-00206,SRG-OS-000463-GPOS-00207,SRG-OS-000468-GPOS-00212,SRG-OS-000471-GPOS-00215,SRG-OS-000474-GPOS-00219,SRG-OS-000064-GPOS-00033 - stigid@ol7: OL07-00-030450 - stigid@rhel7: RHEL-07-030450 -+ stigid@rhel8: RHEL-08-030230 - stigid@sle12: SLES-12-020380 - stigid@sle15: SLES-15-030230 - stigid@ubuntu2004: UBTU-20-010144 -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_lchown/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_lchown/rule.yml -index 6e2432f309..edc053bfb3 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_lchown/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_lchown/rule.yml -@@ -52,9 +52,10 @@ references: - nist@sle15: AU-3,AU-3.1,AU-12(c),AU-12.1(iv),AU-12(a),AU-12.1(ii),MA-4(1)(a) - ospp: FAU_GEN.1.1.c - pcidss: Req-10.5.5 -- srg: SRG-OS-000037-GPOS-00015,SRG-OS-000062-GPOS-00031,SRG-OS-000064-GPOS-00033,SRG-OS-000392-GPOS-00172,SRG-OS-000458-GPOS-00203,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215,SRG-OS-000474-GPOS-00219 -+ srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215,SRG-OS-000064-GPOS-00033,SRG-OS-000466-GPOS-00210,SRG-OS-000458-GPOS-00203,SRG-OS-000474-GPOS-00219 - stigid@ol7: OL07-00-030390 - stigid@rhel7: RHEL-07-030390 -+ stigid@rhel8: RHEL-08-030500 - stigid@sle12: SLES-12-020440 - stigid@sle15: SLES-15-030270 - stigid@ubuntu2004: UBTU-20-010151 -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_lremovexattr/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_lremovexattr/rule.yml -index ad034bc570..2ae0f11c58 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_lremovexattr/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_lremovexattr/rule.yml -@@ -69,9 +69,10 @@ references: - nist@sle15: AU-3,AU-3.1,AU-12(c),AU-12.1(iv),AU-12(a),AU-12.1(ii),MA-4(1)(a) - ospp: FAU_GEN.1.1.c - pcidss: Req-10.5.5 -- srg: SRG-OS-000037-GPOS-00015,SRG-OS-000062-GPOS-00031,SRG-OS-000064-GPOS-00033,SRG-OS-000392-GPOS-00172,SRG-OS-000458-GPOS-00203,SRG-OS-000462-GPOS-00206,SRG-OS-000466-GPOS-00210,SRG-OS-000471-GPOS-00215 -+ srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000458-GPOS-00203,SRG-OS-000462-GPOS-00206,SRG-OS-000463-GPOS-00207,SRG-OS-000468-GPOS-00212,SRG-OS-000471-GPOS-00215,SRG-OS-000474-GPOS-00219,SRG-OS-000466-GPOS-00210,SRG-OS-000064-GPOS-00033 - stigid@ol7: OL07-00-030490 - stigid@rhel7: RHEL-07-030490 -+ stigid@rhel8: RHEL-08-030200 - stigid@sle12: SLES-12-020400 - stigid@sle15: SLES-15-030200 - stigid@ubuntu2004: UBTU-20-010146 -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_lsetxattr/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_lsetxattr/rule.yml -index a3895bd4c7..945ad560d7 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_lsetxattr/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_lsetxattr/rule.yml -@@ -63,9 +63,10 @@ references: - nist@sle15: AU-12(a),AU-12.1(ii),AU-12(c),AU-12.1(iv),AU-3,AU-3.1,MA-4(1)(a) - ospp: FAU_GEN.1.1.c - pcidss: Req-10.5.5 -- srg: SRG-OS-000037-GPOS-00015,SRG-OS-000062-GPOS-00031,SRG-OS-000064-GPOS-00033,SRG-OS-000392-GPOS-00172,SRG-OS-000458-GPOS-00203,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215 -+ srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000458-GPOS-00203,SRG-OS-000462-GPOS-00206,SRG-OS-000463-GPOS-00207,SRG-OS-000468-GPOS-00212,SRG-OS-000471-GPOS-00215,SRG-OS-000474-GPOS-00219,SRG-OS-000064-GPOS-00033 - stigid@ol7: OL07-00-030460 - stigid@rhel7: RHEL-07-030460 -+ stigid@rhel8: RHEL-08-030220 - stigid@sle15: SLES-15-030240 - stigid@ubuntu2004: UBTU-20-010143 - vmmsrg: SRG-OS-000458-VMM-001810,SRG-OS-000474-VMM-001940 -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_removexattr/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_removexattr/rule.yml -index eee86b99de..e6d7374b7f 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_removexattr/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_removexattr/rule.yml -@@ -17,7 +17,7 @@ description: |- - If the system is 64 bit then also add the following line: -
-a always,exit -F arch=b64 -S removexattr -F auid>={{{ auid }}} -F auid!=unset -F key=perm_mod
- {{%- if product in ["rhel8"] %}} --
-a always,exit -F arch=b64 -S lsetxattr -F auid=0 -F key=perm_mod
-+
-a always,exit -F arch=b64 -S removexattr -F auid=0 -F key=perm_mod
- {{%- endif %}} -

- If the auditd daemon is configured to use the auditctl -@@ -68,9 +68,10 @@ references: - nist@sle15: AU-12(a),AU-12.1(ii),AU-12(c),AU-12.1(iv),AU-3,AU-3.1,MA-4(1)(a) - ospp: FAU_GEN.1.1.c - pcidss: Req-10.5.5 -- srg: SRG-OS-000037-GPOS-00015,SRG-OS-000062-GPOS-00031,SRG-OS-000064-GPOS-00033,SRG-OS-000392-GPOS-00172,SRG-OS-000458-GPOS-00203,SRG-OS-000462-GPOS-00206,SRG-OS-000466-GPOS-00210,SRG-OS-000471-GPOS-00215 -+ srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000458-GPOS-00203,SRG-OS-000462-GPOS-00206,SRG-OS-000463-GPOS-00207,SRG-OS-000468-GPOS-00212,SRG-OS-000471-GPOS-00215,SRG-OS-000474-GPOS-00219,SRG-OS-000466-GPOS-00210,SRG-OS-000064-GPOS-00033 - stigid@ol7: OL07-00-030470 - stigid@rhel7: RHEL-07-030470 -+ stigid@rhel8: RHEL-08-030210 - stigid@sle12: SLES-12-020390 - stigid@sle15: SLES-15-030190 - stigid@ubuntu2004: UBTU-20-010145 -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_setxattr/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_setxattr/rule.yml -index 4a90ed9f96..ab15167508 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_setxattr/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_setxattr/rule.yml -@@ -64,9 +64,10 @@ references: - nist@sle15: AU-3,AU-3.1,AU-12(c),AU-12.1(iv),AU-12(a),AU-12.1(ii),MA-4(1)(a) - ospp: FAU_GEN.1.1.c - pcidss: Req-10.5.5 -- srg: SRG-OS-000037-GPOS-00015,SRG-OS-000062-GPOS-00031,SRG-OS-000064-GPOS-00033,SRG-OS-000392-GPOS-00172,SRG-OS-000458-GPOS-00203,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215 -+ srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215,SRG-OS-000064-GPOS-00033,SRG-OS-000458-GPOS-00203 - stigid@ol7: OL07-00-030440 - stigid@rhel7: RHEL-07-030440 -+ stigid@rhel8: RHEL-08-030270 - stigid@sle12: SLES-12-020370 - stigid@sle15: SLES-15-030220 - stigid@ubuntu2004: UBTU-20-010142 -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_execution_acl_commands/audit_rules_execution_chacl/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_execution_acl_commands/audit_rules_execution_chacl/rule.yml -index 28125b692b..0c71e4ac24 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_execution_acl_commands/audit_rules_execution_chacl/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_execution_acl_commands/audit_rules_execution_chacl/rule.yml -@@ -27,13 +27,15 @@ rationale: |- - severity: medium - - identifiers: -+ cce@rhel8: CCE-89446-9 - cce@sle12: CCE-83190-9 - cce@sle15: CCE-85595-7 - - references: - disa: CCI-000130,CCI-000169,CCI-000172,CCI-002884 - nist@sle12: AU-3,AU-3.1,AU-12.1(ii),AU-12(a),AU-12.1(iv),AU-12(c),MA-4(1)(a) -- srg: SRG-OS-000037-GPOS-00015,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215 -+ srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215,SRG-OS-000466-GPOS-00210 -+ stigid@rhel8: RHEL-08-030570 - stigid@sle12: SLES-12-020620 - stigid@sle15: SLES-15-030440 - stigid@ubuntu2004: UBTU-20-010168 -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_execution_acl_commands/audit_rules_execution_setfacl/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_execution_acl_commands/audit_rules_execution_setfacl/rule.yml -index 43fe86106c..89c134a0fa 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_execution_acl_commands/audit_rules_execution_setfacl/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_execution_acl_commands/audit_rules_execution_setfacl/rule.yml -@@ -27,13 +27,15 @@ rationale: |- - severity: medium - - identifiers: -+ cce@rhel8: CCE-88437-9 - cce@sle12: CCE-83189-1 - cce@sle15: CCE-85594-0 - - references: - disa: CCI-000130,CCI-000169,CCI-000172,CCI-002884 - nist@sle12: AU-3,AU-3.1,AU-12.1(ii),AU-12(a),AU-12.1(iv),AU-12(c),MA-4(1)(a) -- srg: SRG-OS-000037-GPOS-00015,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215 -+ srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215 -+ stigid@rhel8: RHEL-08-030330 - stigid@sle12: SLES-12-020610 - stigid@sle15: SLES-15-030430 - stigid@ubuntu2004: UBTU-20-010167 -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_execution_selinux_commands/audit_rules_execution_chcon/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_execution_selinux_commands/audit_rules_execution_chcon/rule.yml -index b50e27b810..0c6781c7d5 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_execution_selinux_commands/audit_rules_execution_chcon/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_execution_selinux_commands/audit_rules_execution_chcon/rule.yml -@@ -60,9 +60,10 @@ references: - nist@sle12: AU-3,AU-3.1,AU-12.1(ii),AU-12(a),AU-12.1(iv),AU-12(c),MA-4(1)(a) - nist@sle15: AU-3,AU-3.1,AU-12(a),AU-12.1(ii)AU-12.1(iv),MA-4(1)(a) - ospp: FAU_GEN.1.1.c -- srg: SRG-OS-000037-GPOS-00015,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000463-GPOS-00207,SRG-OS-000465-GPOS-00209,SRG-OS-000471-GPOS-00215 -+ srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000468-GPOS-00212,SRG-OS-000471-GPOS-00215,SRG-OS-000463-GPOS-00207,SRG-OS-000465-GPOS-00209 - stigid@ol7: OL07-00-030580 - stigid@rhel7: RHEL-07-030580 -+ stigid@rhel8: RHEL-08-030260 - stigid@sle12: SLES-12-020630 - stigid@sle15: SLES-15-030450 - stigid@ubuntu2004: UBTU-20-010165 -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_execution_selinux_commands/audit_rules_execution_semanage/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_execution_selinux_commands/audit_rules_execution_semanage/rule.yml -index 2ad3b555b5..b609c3dfc2 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_execution_selinux_commands/audit_rules_execution_semanage/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_execution_selinux_commands/audit_rules_execution_semanage/rule.yml -@@ -40,7 +40,7 @@ references: - cis-csc: 1,12,13,14,15,16,2,3,5,6,7,8,9 - cobit5: APO10.01,APO10.03,APO10.04,APO10.05,APO11.04,BAI03.05,DSS01.03,DSS03.05,DSS05.02,DSS05.04,DSS05.05,DSS05.07,MEA01.01,MEA01.02,MEA01.03,MEA01.04,MEA01.05,MEA02.01 - cui: 3.1.7 -- disa: CCI-000172,CCI-002884 -+ disa: CCI-000169,CCI-000172,CCI-002884 - hipaa: 164.308(a)(1)(ii)(D),164.308(a)(3)(ii)(A),164.308(a)(5)(ii)(C),164.312(a)(2)(i),164.312(b),164.312(d),164.312(e) - isa-62443-2009: 4.3.2.6.7,4.3.3.3.9,4.3.3.5.8,4.3.4.4.7,4.4.2.1,4.4.2.2,4.4.2.4 - isa-62443-2013: 'SR 2.10,SR 2.11,SR 2.12,SR 2.8,SR 2.9,SR 6.1,SR 6.2' -@@ -49,9 +49,10 @@ references: - nist: AC-2(4),AU-2(d),AU-12(c),AC-6(9),CM-6(a) - nist-csf: DE.CM-1,DE.CM-3,DE.CM-7,ID.SC-4,PR.PT-1 - ospp: FAU_GEN.1.1.c -- srg: SRG-OS-000392-GPOS-00172,SRG-OS-000463-GPOS-00207,SRG-OS-000465-GPOS-00209 -+ srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215,SRG-OS-000463-GPOS-00207,SRG-OS-000465-GPOS-00209 - stigid@ol7: OL07-00-030560 - stigid@rhel7: RHEL-07-030560 -+ stigid@rhel8: RHEL-08-030313 - vmmsrg: SRG-OS-000463-VMM-001850 - - ocil: |- -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_execution_selinux_commands/audit_rules_execution_setfiles/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_execution_selinux_commands/audit_rules_execution_setfiles/rule.yml -index eb8bd19edb..9de7407f4c 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_execution_selinux_commands/audit_rules_execution_setfiles/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_execution_selinux_commands/audit_rules_execution_setfiles/rule.yml -@@ -37,11 +37,12 @@ identifiers: - cce@rhel9: CCE-83736-9 - - references: -- disa: CCI-000172,CCI-002884 -+ disa: CCI-000169,CCI-000172,CCI-002884 - nist: AU-2(d),AU-12(c),AC-6(9),CM-6(a) -- srg: SRG-OS-000392-GPOS-00172,SRG-OS-000463-GPOS-00207,SRG-OS-000465-GPOS-00209 -+ srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215,SRG-OS-000463-GPOS-00207,SRG-OS-000465-GPOS-00209 - stigid@ol7: OL07-00-030590 - stigid@rhel7: RHEL-07-030590 -+ stigid@rhel8: RHEL-08-030314 - vmmsrg: SRG-OS-000463-VMM-001850 - - ocil: |- -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_execution_selinux_commands/audit_rules_execution_setsebool/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_execution_selinux_commands/audit_rules_execution_setsebool/rule.yml -index 5544175f39..23504bab4a 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_execution_selinux_commands/audit_rules_execution_setsebool/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_execution_selinux_commands/audit_rules_execution_setsebool/rule.yml -@@ -40,7 +40,7 @@ references: - cis-csc: 1,12,13,14,15,16,2,3,5,6,7,8,9 - cobit5: APO10.01,APO10.03,APO10.04,APO10.05,APO11.04,BAI03.05,DSS01.03,DSS03.05,DSS05.02,DSS05.04,DSS05.05,DSS05.07,MEA01.01,MEA01.02,MEA01.03,MEA01.04,MEA01.05,MEA02.01 - cui: 3.1.7 -- disa: CCI-000172,CCI-002884 -+ disa: CCI-000169,CCI-000172,CCI-002884 - hipaa: 164.308(a)(1)(ii)(D),164.308(a)(3)(ii)(A),164.308(a)(5)(ii)(C),164.312(a)(2)(i),164.312(b),164.312(d),164.312(e) - isa-62443-2009: 4.3.2.6.7,4.3.3.3.9,4.3.3.5.8,4.3.4.4.7,4.4.2.1,4.4.2.2,4.4.2.4 - isa-62443-2013: 'SR 2.10,SR 2.11,SR 2.12,SR 2.8,SR 2.9,SR 6.1,SR 6.2' -@@ -48,9 +48,10 @@ references: - nist: AU-2(d),AU-12(c),AC-6(9),CM-6(a) - nist-csf: DE.CM-1,DE.CM-3,DE.CM-7,ID.SC-4,PR.PT-1 - ospp: FAU_GEN.1.1.c -- srg: SRG-OS-000392-GPOS-00172,SRG-OS-000463-GPOS-00207,SRG-OS-000465-GPOS-00209 -+ srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215,SRG-OS-000463-GPOS-00207,SRG-OS-000465-GPOS-00209 - stigid@ol7: OL07-00-030570 - stigid@rhel7: RHEL-07-030570 -+ stigid@rhel8: RHEL-08-030316 - vmmsrg: SRG-OS-000463-VMM-001850 - - ocil: |- -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events_rename/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events_rename/rule.yml -index fe72f59697..9dd83f6dba 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events_rename/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events_rename/rule.yml -@@ -37,7 +37,7 @@ references: - cis@ubuntu2004: 4.1.13 - cobit5: APO10.01,APO10.03,APO10.04,APO10.05,APO11.04,APO12.06,APO13.01,BAI03.05,BAI08.02,DSS01.03,DSS01.04,DSS02.02,DSS02.04,DSS02.07,DSS03.01,DSS03.05,DSS05.02,DSS05.03,DSS05.04,DSS05.05,DSS05.07,MEA01.01,MEA01.02,MEA01.03,MEA01.04,MEA01.05,MEA02.01 - cui: 3.1.7 -- disa: CCI-000172,CCI-000366,CCI-002884 -+ disa: CCI-000169,CCI-000172,CCI-000366,CCI-002884 - hipaa: 164.308(a)(1)(ii)(D),164.308(a)(3)(ii)(A),164.308(a)(5)(ii)(C),164.312(a)(2)(i),164.312(b),164.312(d),164.312(e) - isa-62443-2009: 4.2.3.10,4.3.2.6.7,4.3.3.3.9,4.3.3.5.8,4.3.3.6.5,4.3.3.6.6,4.3.3.6.7,4.3.3.6.8,4.3.4.4.7,4.3.4.5.6,4.3.4.5.7,4.3.4.5.8,4.4.2.1,4.4.2.2,4.4.2.4 - isa-62443-2013: 'SR 1.13,SR 2.10,SR 2.11,SR 2.12,SR 2.6,SR 2.8,SR 2.9,SR 3.1,SR 3.5,SR 3.8,SR 4.1,SR 4.3,SR 5.1,SR 5.2,SR 5.3,SR 6.1,SR 6.2,SR 7.1,SR 7.6' -@@ -46,9 +46,10 @@ references: - nist-csf: DE.AE-3,DE.AE-5,DE.CM-1,DE.CM-3,DE.CM-7,ID.SC-4,PR.AC-3,PR.MA-2,PR.PT-1,PR.PT-4,RS.AN-1,RS.AN-4 - ospp: FAU_GEN.1.1.c - pcidss: Req-10.2.7 -- srg: SRG-OS-000466-GPOS-00210,SRG-OS-000467-GPOS-00211,SRG-OS-000468-GPOS-00212,SRG-OS-000392-GPOS-00172 -+ srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215,SRG-OS-000466-GPOS-00210,SRG-OS-000467-GPOS-00211,SRG-OS-000468-GPOS-00212 - stigid@ol7: OL07-00-030880 - stigid@rhel7: RHEL-07-030880 -+ stigid@rhel8: RHEL-08-030361 - stigid@ubuntu2004: UBTU-20-010269 - vmmsrg: SRG-OS-000466-VMM-001870,SRG-OS-000468-VMM-001890 - -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events_renameat/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events_renameat/rule.yml -index 3508352514..cd9aa9f5e6 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events_renameat/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events_renameat/rule.yml -@@ -37,7 +37,7 @@ references: - cis@ubuntu2004: 4.1.13 - cobit5: APO10.01,APO10.03,APO10.04,APO10.05,APO11.04,APO12.06,APO13.01,BAI03.05,BAI08.02,DSS01.03,DSS01.04,DSS02.02,DSS02.04,DSS02.07,DSS03.01,DSS03.05,DSS05.02,DSS05.03,DSS05.04,DSS05.05,DSS05.07,MEA01.01,MEA01.02,MEA01.03,MEA01.04,MEA01.05,MEA02.01 - cui: 3.1.7 -- disa: CCI-000172,CCI-000366,CCI-002884 -+ disa: CCI-000169,CCI-000172,CCI-000366,CCI-002884 - hipaa: 164.308(a)(1)(ii)(D),164.308(a)(3)(ii)(A),164.308(a)(5)(ii)(C),164.312(a)(2)(i),164.312(b),164.312(d),164.312(e) - isa-62443-2009: 4.2.3.10,4.3.2.6.7,4.3.3.3.9,4.3.3.5.8,4.3.3.6.5,4.3.3.6.6,4.3.3.6.7,4.3.3.6.8,4.3.4.4.7,4.3.4.5.6,4.3.4.5.7,4.3.4.5.8,4.4.2.1,4.4.2.2,4.4.2.4 - isa-62443-2013: 'SR 1.13,SR 2.10,SR 2.11,SR 2.12,SR 2.6,SR 2.8,SR 2.9,SR 3.1,SR 3.5,SR 3.8,SR 4.1,SR 4.3,SR 5.1,SR 5.2,SR 5.3,SR 6.1,SR 6.2,SR 7.1,SR 7.6' -@@ -46,9 +46,10 @@ references: - nist-csf: DE.AE-3,DE.AE-5,DE.CM-1,DE.CM-3,DE.CM-7,ID.SC-4,PR.AC-3,PR.MA-2,PR.PT-1,PR.PT-4,RS.AN-1,RS.AN-4 - ospp: FAU_GEN.1.1.c - pcidss: Req-10.2.7 -- srg: SRG-OS-000466-GPOS-00210,SRG-OS-000467-GPOS-00211,SRG-OS-000468-GPOS-00212,SRG-OS-000392-GPOS-00172 -+ srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215,SRG-OS-000466-GPOS-00210,SRG-OS-000467-GPOS-00211,SRG-OS-000468-GPOS-00212 - stigid@ol7: OL07-00-030890 - stigid@rhel7: RHEL-07-030890 -+ stigid@rhel8: RHEL-08-030362 - stigid@ubuntu2004: UBTU-20-010270 - vmmsrg: SRG-OS-000466-VMM-001870,SRG-OS-000468-VMM-001890 - -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events_rmdir/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events_rmdir/rule.yml -index 994cf0e087..6e0bb755b0 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events_rmdir/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events_rmdir/rule.yml -@@ -36,7 +36,7 @@ references: - cis@rhel8: 4.1.14 - cobit5: APO10.01,APO10.03,APO10.04,APO10.05,APO11.04,APO12.06,APO13.01,BAI03.05,BAI08.02,DSS01.03,DSS01.04,DSS02.02,DSS02.04,DSS02.07,DSS03.01,DSS03.05,DSS05.02,DSS05.03,DSS05.04,DSS05.05,DSS05.07,MEA01.01,MEA01.02,MEA01.03,MEA01.04,MEA01.05,MEA02.01 - cui: 3.1.7 -- disa: CCI-000172,CCI-000366,CCI-002884 -+ disa: CCI-000169,CCI-000172,CCI-000366,CCI-002884 - hipaa: 164.308(a)(1)(ii)(D),164.308(a)(3)(ii)(A),164.308(a)(5)(ii)(C),164.312(a)(2)(i),164.312(b),164.312(d),164.312(e) - isa-62443-2009: 4.2.3.10,4.3.2.6.7,4.3.3.3.9,4.3.3.5.8,4.3.3.6.5,4.3.3.6.6,4.3.3.6.7,4.3.3.6.8,4.3.4.4.7,4.3.4.5.6,4.3.4.5.7,4.3.4.5.8,4.4.2.1,4.4.2.2,4.4.2.4 - isa-62443-2013: 'SR 1.13,SR 2.10,SR 2.11,SR 2.12,SR 2.6,SR 2.8,SR 2.9,SR 3.1,SR 3.5,SR 3.8,SR 4.1,SR 4.3,SR 5.1,SR 5.2,SR 5.3,SR 6.1,SR 6.2,SR 7.1,SR 7.6' -@@ -45,9 +45,10 @@ references: - nist-csf: DE.AE-3,DE.AE-5,DE.CM-1,DE.CM-3,DE.CM-7,ID.SC-4,PR.AC-3,PR.MA-2,PR.PT-1,PR.PT-4,RS.AN-1,RS.AN-4 - ospp: FAU_GEN.1.1.c - pcidss: Req-10.2.7 -- srg: SRG-OS-000466-GPOS-00210,SRG-OS-000467-GPOS-00211,SRG-OS-000468-GPOS-00212,SRG-OS-000392-GPOS-00172 -+ srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215,SRG-OS-000466-GPOS-00210,SRG-OS-000467-GPOS-00211,SRG-OS-000468-GPOS-00212 - stigid@ol7: OL07-00-030900 - stigid@rhel7: RHEL-07-030900 -+ stigid@rhel8: RHEL-08-030363 - vmmsrg: SRG-OS-000466-VMM-001870,SRG-OS-000468-VMM-001890 - - {{{ complete_ocil_entry_audit_syscall(syscall="rmdir") }}} -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events_unlink/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events_unlink/rule.yml -index 330221f9c6..be4e328b7c 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events_unlink/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events_unlink/rule.yml -@@ -37,7 +37,7 @@ references: - cis@ubuntu2004: 4.1.13 - cobit5: APO10.01,APO10.03,APO10.04,APO10.05,APO11.04,APO12.06,APO13.01,BAI03.05,BAI08.02,DSS01.03,DSS01.04,DSS02.02,DSS02.04,DSS02.07,DSS03.01,DSS03.05,DSS05.02,DSS05.03,DSS05.04,DSS05.05,DSS05.07,MEA01.01,MEA01.02,MEA01.03,MEA01.04,MEA01.05,MEA02.01 - cui: 3.1.7 -- disa: CCI-000172,CCI-000366,CCI-002884 -+ disa: CCI-000169,CCI-000172,CCI-000366,CCI-002884 - hipaa: 164.308(a)(1)(ii)(D),164.308(a)(3)(ii)(A),164.308(a)(5)(ii)(C),164.312(a)(2)(i),164.312(b),164.312(d),164.312(e) - isa-62443-2009: 4.2.3.10,4.3.2.6.7,4.3.3.3.9,4.3.3.5.8,4.3.3.6.5,4.3.3.6.6,4.3.3.6.7,4.3.3.6.8,4.3.4.4.7,4.3.4.5.6,4.3.4.5.7,4.3.4.5.8,4.4.2.1,4.4.2.2,4.4.2.4 - isa-62443-2013: 'SR 1.13,SR 2.10,SR 2.11,SR 2.12,SR 2.6,SR 2.8,SR 2.9,SR 3.1,SR 3.5,SR 3.8,SR 4.1,SR 4.3,SR 5.1,SR 5.2,SR 5.3,SR 6.1,SR 6.2,SR 7.1,SR 7.6' -@@ -46,9 +46,10 @@ references: - nist-csf: DE.AE-3,DE.AE-5,DE.CM-1,DE.CM-3,DE.CM-7,ID.SC-4,PR.AC-3,PR.MA-2,PR.PT-1,PR.PT-4,RS.AN-1,RS.AN-4 - ospp: FAU_GEN.1.1.c - pcidss: Req-10.2.7 -- srg: SRG-OS-000466-GPOS-00210,SRG-OS-000467-GPOS-00211,SRG-OS-000468-GPOS-00212,SRG-OS-000392-GPOS-00172 -+ srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215,SRG-OS-000466-GPOS-00210,SRG-OS-000467-GPOS-00211,SRG-OS-000468-GPOS-00212 - stigid@ol7: OL07-00-030910 - stigid@rhel7: RHEL-07-030910 -+ stigid@rhel8: RHEL-08-030364 - stigid@ubuntu2004: UBTU-20-010267 - vmmsrg: SRG-OS-000466-VMM-001870,SRG-OS-000468-VMM-001890 - -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events_unlinkat/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events_unlinkat/rule.yml -index 14ef50bb2b..eaf8f1e08b 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events_unlinkat/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events_unlinkat/rule.yml -@@ -37,7 +37,7 @@ references: - cis@ubuntu2004: 4.1.13 - cobit5: APO10.01,APO10.03,APO10.04,APO10.05,APO11.04,APO12.06,APO13.01,BAI03.05,BAI08.02,DSS01.03,DSS01.04,DSS02.02,DSS02.04,DSS02.07,DSS03.01,DSS03.05,DSS05.02,DSS05.03,DSS05.04,DSS05.05,DSS05.07,MEA01.01,MEA01.02,MEA01.03,MEA01.04,MEA01.05,MEA02.01 - cui: 3.1.7 -- disa: CCI-000172,CCI-000366,CCI-002884 -+ disa: CCI-000169,CCI-000172,CCI-000366,CCI-002884 - hipaa: 164.308(a)(1)(ii)(D),164.308(a)(3)(ii)(A),164.308(a)(5)(ii)(C),164.312(a)(2)(i),164.312(b),164.312(d),164.312(e) - isa-62443-2009: 4.2.3.10,4.3.2.6.7,4.3.3.3.9,4.3.3.5.8,4.3.3.6.5,4.3.3.6.6,4.3.3.6.7,4.3.3.6.8,4.3.4.4.7,4.3.4.5.6,4.3.4.5.7,4.3.4.5.8,4.4.2.1,4.4.2.2,4.4.2.4 - isa-62443-2013: 'SR 1.13,SR 2.10,SR 2.11,SR 2.12,SR 2.6,SR 2.8,SR 2.9,SR 3.1,SR 3.5,SR 3.8,SR 4.1,SR 4.3,SR 5.1,SR 5.2,SR 5.3,SR 6.1,SR 6.2,SR 7.1,SR 7.6' -@@ -46,9 +46,10 @@ references: - nist-csf: DE.AE-3,DE.AE-5,DE.CM-1,DE.CM-3,DE.CM-7,ID.SC-4,PR.AC-3,PR.MA-2,PR.PT-1,PR.PT-4,RS.AN-1,RS.AN-4 - ospp: FAU_GEN.1.1.c - pcidss: Req-10.2.7 -- srg: SRG-OS-000466-GPOS-00210,SRG-OS-000467-GPOS-00211,SRG-OS-000468-GPOS-00212,SRG-OS-000392-GPOS-00172 -+ srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215,SRG-OS-000466-GPOS-00210,SRG-OS-000467-GPOS-00211,SRG-OS-000468-GPOS-00212 - stigid@ol7: OL07-00-030920 - stigid@rhel7: RHEL-07-030920 -+ stigid@rhel8: RHEL-08-030365 - stigid@ubuntu2004: UBTU-20-010268 - vmmsrg: SRG-OS-000466-VMM-001870,SRG-OS-000468-VMM-001890 - -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_creat/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_creat/rule.yml -index d793c73d87..08cc99133a 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_creat/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_creat/rule.yml -@@ -57,9 +57,10 @@ references: - nist@sle15: AU-3,AU-3.1,AU-12(a),AU-12.1(ii),AU-12(c),AU-12.1(iv),MA-4(1)(a) - ospp: FAU_GEN.1.1.c - pcidss: Req-10.2.4,Req-10.2.1 -- srg: SRG-OS-000037-GPOS-00015,SRG-OS-000062-GPOS-00031,SRG-OS-000064-GPOS-00033,SRG-OS-000392-GPOS-00172,SRG-OS-000458-GPOS-00203,SRG-OS-000461-GPOS-00205,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215 -+ srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215,SRG-OS-000064-GPOS-00033,SRG-OS-000458-GPOS-00203,SRG-OS-000461-GPOS-00205 - stigid@ol7: OL07-00-030500 - stigid@rhel7: RHEL-07-030500 -+ stigid@rhel8: RHEL-08-030470 - stigid@sle12: SLES-12-020520 - stigid@sle15: SLES-15-030160 - stigid@ubuntu2004: UBTU-20-010158 -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_ftruncate/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_ftruncate/rule.yml -index e8990ac8c0..e9b688b9b4 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_ftruncate/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_ftruncate/rule.yml -@@ -60,9 +60,10 @@ references: - nist@sle15: AU-3,AU-3.1,AU-12(c),AU-12.1(iv),AU-12(a),AU-12.1(ii),MA-4(1)(a) - ospp: FAU_GEN.1.1.c - pcidss: Req-10.2.4,Req-10.2.1 -- srg: SRG-OS-000037-GPOS-00015,SRG-OS-000062-GPOS-00031,SRG-OS-000064-GPOS-00033,SRG-OS-000392-GPOS-00172,SRG-OS-000458-GPOS-00203,SRG-OS-000461-GPOS-00205,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215 -+ srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215,SRG-OS-000064-GPOS-00033,SRG-OS-000458-GPOS-00203,SRG-OS-000461-GPOS-00205 - stigid@ol7: OL07-00-030550 - stigid@rhel7: RHEL-07-030550 -+ stigid@rhel8: RHEL-08-030460 - stigid@sle12: SLES-12-020510 - stigid@sle15: SLES-15-030320 - stigid@ubuntu2004: UBTU-20-010157 -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_open/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_open/rule.yml -index 8324307284..6e24227007 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_open/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_open/rule.yml -@@ -60,9 +60,10 @@ references: - nist@sle15: AU-12(c),AU-12.1(iv),AU-12(a),AU-12.1(ii),AU-3,AU-3.1,MA-4(1)(a) - ospp: FAU_GEN.1.1.c - pcidss: Req-10.2.4,Req-10.2.1 -- srg: SRG-OS-000037-GPOS-00015,SRG-OS-000064-GPOS-00033,SRG-OS-000392-GPOS-00172,SRG-OS-000458-GPOS-00203,SRG-OS-000461-GPOS-00205 -+ srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215,SRG-OS-000064-GPOS-00033,SRG-OS-000458-GPOS-00203,SRG-OS-000461-GPOS-00205 - stigid@ol7: OL07-00-030510 - stigid@rhel7: RHEL-07-030510 -+ stigid@rhel8: RHEL-08-030440 - stigid@sle12: SLES-12-020490 - stigid@sle15: SLES-15-030150 - stigid@ubuntu2004: UBTU-20-010155 -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_open_by_handle_at/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_open_by_handle_at/rule.yml -index f83c285dd2..2b6008fce1 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_open_by_handle_at/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_open_by_handle_at/rule.yml -@@ -56,9 +56,10 @@ references: - nist@sle15: AU-3,AU-3.1,AU-12(c),AU-12.1(iv),AU-12(a),AU-12.1(ii),MA-4(1)(a) - ospp: FAU_GEN.1.1.c - pcidss: Req-10.2.4,Req-10.2.1 -- srg: SRG-OS-000037-GPOS-00015,SRG-OS-000062-GPOS-00031,SRG-OS-000064-GPOS-00033,SRG-OS-000392-GPOS-00172,SRG-OS-000458-GPOS-00203,SRG-OS-000461-GPOS-00205,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215 -+ srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215,SRG-OS-000064-GPOS-00033,SRG-OS-000458-GPOS-00203,SRG-OS-000461-GPOS-00205 - stigid@ol7: OL07-00-030530 - stigid@rhel7: RHEL-07-030530 -+ stigid@rhel8: RHEL-08-030450 - stigid@sle12: SLES-12-020540 - stigid@sle15: SLES-15-030180 - stigid@ubuntu2004: UBTU-20-010160 -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_openat/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_openat/rule.yml -index 15311727d6..308e3da789 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_openat/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_openat/rule.yml -@@ -60,9 +60,10 @@ references: - nist@sle15: AU-12(a),AU-12.1(ii),AU-12(c),AU-12.1(iv),AU-3,AU-3.1,MA-4(1)(a) - ospp: FAU_GEN.1.1.c - pcidss: Req-10.2.4,Req-10.2.1 -- srg: SRG-OS-000037-GPOS-00015,SRG-OS-000062-GPOS-00031,SRG-OS-000064-GPOS-00033,SRG-OS-000392-GPOS-00172,SRG-OS-000458-GPOS-00203,SRG-OS-000461-GPOS-00205,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215 -+ srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215,SRG-OS-000064-GPOS-00033,SRG-OS-000458-GPOS-00203,SRG-OS-000461-GPOS-00205 - stigid@ol7: OL07-00-030520 - stigid@rhel7: RHEL-07-030520 -+ stigid@rhel8: RHEL-08-030430 - stigid@sle12: SLES-12-020530 - stigid@sle15: SLES-15-030170 - stigid@ubuntu2004: UBTU-20-010159 -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_truncate/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_truncate/rule.yml -index 5d8e55087d..6ab8d28917 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_truncate/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_truncate/rule.yml -@@ -50,7 +50,7 @@ references: - cis@ubuntu2004: 4.1.10 - cobit5: APO10.01,APO10.03,APO10.04,APO10.05,APO11.04,APO12.06,APO13.01,BAI03.05,BAI08.02,DSS01.03,DSS01.04,DSS02.02,DSS02.04,DSS02.07,DSS03.01,DSS03.05,DSS05.02,DSS05.03,DSS05.04,DSS05.05,DSS05.07,MEA01.01,MEA01.02,MEA01.03,MEA01.04,MEA01.05,MEA02.01 - cui: 3.1.7 -- disa: CCI-000172,CCI-002884 -+ disa: CCI-000169,CCI-000172,CCI-002884 - hipaa: 164.308(a)(1)(ii)(D),164.308(a)(3)(ii)(A),164.308(a)(5)(ii)(C),164.312(a)(2)(i),164.312(b),164.312(d),164.312(e) - isa-62443-2009: 4.2.3.10,4.3.2.6.7,4.3.3.3.9,4.3.3.5.8,4.3.3.6.6,4.3.4.4.7,4.3.4.5.6,4.3.4.5.7,4.3.4.5.8,4.4.2.1,4.4.2.2,4.4.2.4 - isa-62443-2013: 'SR 1.13,SR 2.10,SR 2.11,SR 2.12,SR 2.6,SR 2.8,SR 2.9,SR 3.1,SR 3.5,SR 3.8,SR 4.1,SR 4.3,SR 5.1,SR 5.2,SR 5.3,SR 6.1,SR 6.2,SR 7.1,SR 7.6' -@@ -59,9 +59,10 @@ references: - nist-csf: DE.AE-3,DE.AE-5,DE.CM-1,DE.CM-3,DE.CM-7,ID.SC-4,PR.AC-3,PR.PT-1,PR.PT-4,RS.AN-1,RS.AN-4 - ospp: FAU_GEN.1.1.c - pcidss: Req-10.2.4,Req-10.2.1 -- srg: SRG-OS-000064-GPOS-00033,SRG-OS-000458-GPOS-00203,SRG-OS-000461-GPOS-00205,SRG-OS-000392-GPOS-00172 -+ srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215,SRG-OS-000064-GPOS-00033,SRG-OS-000458-GPOS-00203,SRG-OS-000461-GPOS-00205 - stigid@ol7: OL07-00-030540 - stigid@rhel7: RHEL-07-030540 -+ stigid@rhel8: RHEL-08-030420 - stigid@sle12: SLES-12-020500 - stigid@sle15: SLES-15-030610 - stigid@ubuntu2004: UBTU-20-010156 -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading_delete/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading_delete/rule.yml -index 48d0b501a3..052d21b4f0 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading_delete/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading_delete/rule.yml -@@ -48,9 +48,10 @@ references: - nist@sle15: AU-3,AU-3.1,AU-12(a),AU-12.1(ii),AU-12.1(iv),MA-4(1)(a) - ospp: FAU_GEN.1.1.c - pcidss: Req-10.2.7 -- srg: SRG-OS-000037-GPOS-00015,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215,SRG-OS-000471-GPOS-00216,SRG-OS-000477-GPOS-00222 -+ srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215,SRG-OS-000471-GPOS-00216,SRG-OS-000477-GPOS-00222 - stigid@ol7: OL07-00-030830 - stigid@rhel7: RHEL-07-030830 -+ stigid@rhel8: RHEL-08-030390 - stigid@sle12: SLES-12-020730 - stigid@sle15: SLES-15-030520 - stigid@ubuntu2004: UBTU-20-010302 -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading_finit/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading_finit/rule.yml -index 1457d423bf..aa17002321 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading_finit/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading_finit/rule.yml -@@ -47,9 +47,10 @@ references: - nist@sle15: AU-3,AU-3.1,AU-12(a),AU-12.1(ii),AU-12.1(iv),MA-4(1)(a) - ospp: FAU_GEN.1.1.c - pcidss: Req-10.2.7 -- srg: SRG-OS-000037-GPOS-00015,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215,SRG-OS-000471-GPOS-00216,SRG-OS-000477-GPOS-00222 -+ srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215,SRG-OS-000471-GPOS-00216,SRG-OS-000477-GPOS-00222 - stigid@ol7: OL07-00-030821 - stigid@rhel7: RHEL-07-030821 -+ stigid@rhel8: RHEL-08-030380 - stigid@sle12: SLES-12-020740 - stigid@sle15: SLES-15-030530 - stigid@ubuntu2004: UBTU-20-010180 -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading_init/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading_init/rule.yml -index 53b9accfd8..1d8260432e 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading_init/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading_init/rule.yml -@@ -47,9 +47,10 @@ references: - nist@sle15: AU-3,AU-3.1,AU-12(a),AU-12.1(ii),AU-12.1(iv),MA-4(1)(a) - ospp: FAU_GEN.1.1.c - pcidss: Req-10.2.7 -- srg: SRG-OS-000037-GPOS-00015,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215,SRG-OS-000471-GPOS-00216,SRG-OS-000477-GPOS-00222 -+ srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215,SRG-OS-000471-GPOS-00216,SRG-OS-000477-GPOS-00222 - stigid@ol7: OL07-00-030820 - stigid@rhel7: RHEL-07-030820 -+ stigid@rhel8: RHEL-08-030360 - stigid@sle12: SLES-12-020750 - stigid@sle15: SLES-15-030540 - stigid@ubuntu2004: UBTU-20-010179 -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_login_events/audit_rules_login_events_lastlog/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_login_events/audit_rules_login_events_lastlog/rule.yml -index f981f0143c..25f578b1f6 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_login_events/audit_rules_login_events_lastlog/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_login_events/audit_rules_login_events_lastlog/rule.yml -@@ -39,7 +39,7 @@ references: - cis@ubuntu2004: 4.1.7 - cobit5: APO10.01,APO10.03,APO10.04,APO10.05,APO11.04,APO12.06,APO13.01,BAI03.05,BAI08.02,DSS01.03,DSS01.04,DSS02.02,DSS02.04,DSS02.07,DSS03.01,DSS03.05,DSS05.02,DSS05.03,DSS05.04,DSS05.05,DSS05.07,MEA01.01,MEA01.02,MEA01.03,MEA01.04,MEA01.05,MEA02.01 - cui: 3.1.7 -- disa: CCI-000126,CCI-000172,CCI-002884 -+ disa: CCI-000126,CCI-000169,CCI-000172,CCI-002884 - hipaa: 164.308(a)(1)(ii)(D),164.308(a)(3)(ii)(A),164.308(a)(5)(ii)(C),164.312(a)(2)(i),164.312(b),164.312(d),164.312(e) - isa-62443-2009: 4.2.3.10,4.3.2.6.7,4.3.3.3.9,4.3.3.5.8,4.3.3.6.6,4.3.4.4.7,4.3.4.5.6,4.3.4.5.7,4.3.4.5.8,4.4.2.1,4.4.2.2,4.4.2.4 - isa-62443-2013: 'SR 1.13,SR 2.10,SR 2.11,SR 2.12,SR 2.6,SR 2.8,SR 2.9,SR 3.1,SR 3.5,SR 3.8,SR 4.1,SR 4.3,SR 5.1,SR 5.2,SR 5.3,SR 6.1,SR 6.2,SR 7.1,SR 7.6' -@@ -48,7 +48,7 @@ references: - nist-csf: DE.AE-3,DE.AE-5,DE.CM-1,DE.CM-3,DE.CM-7,ID.SC-4,PR.AC-3,PR.PT-1,PR.PT-4,RS.AN-1,RS.AN-4 - ospp: FAU_GEN.1.1.c - pcidss: Req-10.2.3 -- srg: SRG-OS-000392-GPOS-00172,SRG-OS-000470-GPOS-00214,SRG-OS-000473-GPOS-00218 -+ srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215,SRG-OS-000473-GPOS-00218,SRG-OS-000470-GPOS-00214 - stigid@ol7: OL07-00-030620 - stigid@rhel7: RHEL-07-030620 - stigid@rhel8: RHEL-08-030600 -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_chage/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_chage/rule.yml -index 426f1debed..474910c4c8 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_chage/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_chage/rule.yml -@@ -43,7 +43,7 @@ references: - cis@ubuntu2004: 4.1.11 - cobit5: APO10.01,APO10.03,APO10.04,APO10.05,APO11.04,BAI03.05,DSS01.03,DSS03.05,DSS05.02,DSS05.04,DSS05.05,DSS05.07,MEA01.01,MEA01.02,MEA01.03,MEA01.04,MEA01.05,MEA02.01 - cui: 3.1.7 -- disa: CCI-000135,CCI-000172,CCI-002884 -+ disa: CCI-000135,CCI-000169,CCI-000172,CCI-002884 - hipaa: 164.308(a)(1)(ii)(D),164.308(a)(3)(ii)(A),164.308(a)(5)(ii)(C),164.312(a)(2)(i),164.312(b),164.312(d),164.312(e) - isa-62443-2009: 4.3.2.6.7,4.3.3.3.9,4.3.3.5.8,4.3.4.4.7,4.4.2.1,4.4.2.2,4.4.2.4 - isa-62443-2013: 'SR 2.10,SR 2.11,SR 2.12,SR 2.8,SR 2.9,SR 6.1,SR 6.2' -@@ -51,9 +51,10 @@ references: - nerc-cip: CIP-004-3 R2.2.2,CIP-004-3 R2.2.3,CIP-007-3 R.1.3,CIP-007-3 R5,CIP-007-3 R5.1.1,CIP-007-3 R5.1.3,CIP-007-3 R5.2.1,CIP-007-3 R5.2.3 - nist: AC-2(4),AU-2(d),AU-12(c),AC-6(9),CM-6(a) - nist-csf: DE.CM-1,DE.CM-3,DE.CM-7,ID.SC-4,PR.PT-1 -- srg: SRG-OS-000042-GPOS-00020,SRG-OS-000392-GPOS-00172,SRG-OS-000471-GPOS-00215 -+ srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000468-GPOS-00212,SRG-OS-000471-GPOS-00215 - stigid@ol7: OL07-00-030660 - stigid@rhel7: RHEL-07-030660 -+ stigid@rhel8: RHEL-08-030250 - stigid@sle12: SLES-12-020690 - stigid@sle15: SLES-15-030120 - stigid@ubuntu2004: UBTU-20-010175 -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_chsh/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_chsh/rule.yml -index a31dd7eddb..3ca968a543 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_chsh/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_chsh/rule.yml -@@ -43,7 +43,7 @@ references: - cis@ubuntu2004: 4.1.11 - cobit5: APO10.01,APO10.03,APO10.04,APO10.05,APO11.04,BAI03.05,DSS01.03,DSS03.05,DSS05.02,DSS05.04,DSS05.05,DSS05.07,MEA01.01,MEA01.02,MEA01.03,MEA01.04,MEA01.05,MEA02.01 - cui: 3.1.7 -- disa: CCI-000130,CCI-000135,CCI-000172,CCI-002884 -+ disa: CCI-000130,CCI-000135,CCI-000169,CCI-000172,CCI-002884 - hipaa: 164.308(a)(1)(ii)(D),164.308(a)(3)(ii)(A),164.308(a)(5)(ii)(C),164.312(a)(2)(i),164.312(b),164.312(d),164.312(e) - isa-62443-2009: 4.3.2.6.7,4.3.3.3.9,4.3.3.5.8,4.3.4.4.7,4.4.2.1,4.4.2.2,4.4.2.4 - isa-62443-2013: 'SR 2.10,SR 2.11,SR 2.12,SR 2.8,SR 2.9,SR 6.1,SR 6.2' -@@ -51,9 +51,10 @@ references: - nerc-cip: CIP-004-3 R2.2.2,CIP-004-3 R2.2.3,CIP-007-3 R.1.3,CIP-007-3 R5,CIP-007-3 R5.1.1,CIP-007-3 R5.1.3,CIP-007-3 R5.2.1,CIP-007-3 R5.2.3 - nist: AC-2(4),AU-2(d),AU-12(c),AC-6(9),CM-6(a) - nist-csf: DE.CM-1,DE.CM-3,DE.CM-7,ID.SC-4,PR.PT-1 -- srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215 -+ srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215 - stigid@ol7: OL07-00-030720 - stigid@rhel7: RHEL-07-030720 -+ stigid@rhel8: RHEL-08-030410 - stigid@sle12: SLES-12-020580 - stigid@sle15: SLES-15-030100 - stigid@ubuntu2004: UBTU-20-010163 -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_crontab/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_crontab/rule.yml -index 6146418c75..7c5058c7f8 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_crontab/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_crontab/rule.yml -@@ -43,16 +43,17 @@ references: - cis@ubuntu2004: 4.1.11 - cobit5: APO10.01,APO10.03,APO10.04,APO10.05,APO11.04,BAI03.05,DSS01.03,DSS03.05,DSS05.02,DSS05.04,DSS05.05,DSS05.07,MEA01.01,MEA01.02,MEA01.03,MEA01.04,MEA01.05,MEA02.01 - cui: 3.1.7 -- disa: CCI-000135,CCI-000172,CCI-002884 -+ disa: CCI-000135,CCI-000169,CCI-000172,CCI-002884 - hipaa: 164.308(a)(1)(ii)(D),164.308(a)(3)(ii)(A),164.308(a)(5)(ii)(C),164.312(a)(2)(i),164.312(b),164.312(d),164.312(e) - isa-62443-2009: 4.3.2.6.7,4.3.3.3.9,4.3.3.5.8,4.3.4.4.7,4.4.2.1,4.4.2.2,4.4.2.4 - isa-62443-2013: 'SR 2.10,SR 2.11,SR 2.12,SR 2.8,SR 2.9,SR 6.1,SR 6.2' - iso27001-2013: A.12.4.1,A.12.4.2,A.12.4.3,A.12.4.4,A.12.7.1,A.14.2.7,A.15.2.1,A.15.2.2 - nist: AU-2(d),AU-12(c),AC-6(9),CM-6(a) - nist-csf: DE.CM-1,DE.CM-3,DE.CM-7,ID.SC-4,PR.PT-1 -- srg: SRG-OS-000042-GPOS-00020,SRG-OS-000392-GPOS-00172,SRG-OS-000471-GPOS-00215 -+ srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215 - stigid@ol7: OL07-00-030800 - stigid@rhel7: RHEL-07-030800 -+ stigid@rhel8: RHEL-08-030400 - stigid@sle12: SLES-12-020710 - stigid@sle15: SLES-15-030130 - stigid@ubuntu2004: UBTU-20-010177 -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_gpasswd/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_gpasswd/rule.yml -index a9f782bb64..0c7bf84268 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_gpasswd/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_gpasswd/rule.yml -@@ -43,7 +43,7 @@ references: - cis@ubuntu2004: 4.1.11 - cobit5: APO10.01,APO10.03,APO10.04,APO10.05,APO11.04,BAI03.05,DSS01.03,DSS03.05,DSS05.02,DSS05.04,DSS05.05,DSS05.07,MEA01.01,MEA01.02,MEA01.03,MEA01.04,MEA01.05,MEA02.01 - cui: 3.1.7 -- disa: CCI-000135,CCI-000172,CCI-002884 -+ disa: CCI-000135,CCI-000169,CCI-000172,CCI-002884 - hipaa: 164.308(a)(1)(ii)(D),164.308(a)(3)(ii)(A),164.308(a)(5)(ii)(C),164.312(a)(2)(i),164.312(b),164.312(d),164.312(e) - isa-62443-2009: 4.3.2.6.7,4.3.3.3.9,4.3.3.5.8,4.3.4.4.7,4.4.2.1,4.4.2.2,4.4.2.4 - isa-62443-2013: 'SR 2.10,SR 2.11,SR 2.12,SR 2.8,SR 2.9,SR 6.1,SR 6.2' -@@ -52,9 +52,10 @@ references: - nist: AC-2(4),AU-2(d),AU-12(c),AC-6(9),CM-6(a) - nist-csf: DE.CM-1,DE.CM-3,DE.CM-7,ID.SC-4,PR.PT-1 - ospp: FAU_GEN.1.1.c -- srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000392-GPOS-00172,SRG-OS-000471-GPOS-00215 -+ srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215 - stigid@ol7: OL07-00-030650 - stigid@rhel7: RHEL-07-030650 -+ stigid@rhel8: RHEL-08-030370 - stigid@sle12: SLES-12-020560 - stigid@sle15: SLES-15-030080 - stigid@ubuntu2004: UBTU-20-010174 -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_kmod/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_kmod/rule.yml -index 168d5c51fc..851dd5aa3d 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_kmod/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_kmod/rule.yml -@@ -28,13 +28,15 @@ rationale: |- - severity: medium - - identifiers: -+ cce@rhel8: CCE-89455-0 - cce@sle12: CCE-83207-1 - cce@sle15: CCE-85591-6 - - references: - disa: CCI-000130,CCI-000169,CCI-000172,CCI-002884 - nist: AU-3,AU-3.1,AU-12(a),AU-12.1(ii),AU-12.1(iv)AU-12(c),MA-4(1)(a) -- srg: SRG-OS-000037-GPOS-00015,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215 -+ srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215,SRG-OS-000471-GPOS-00216,SRG-OS-000477-GPOS-00222 -+ stigid@rhel8: RHEL-08-030580 - stigid@sle12: SLES-12-020360 - stigid@sle15: SLES-15-030410 - stigid@ubuntu2004: UBTU-20-010297 -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_mount/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_mount/rule.yml -index 01c7a7ea92..cc423c4146 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_mount/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_mount/rule.yml -@@ -46,6 +46,7 @@ references: - srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215 - stigid@ol7: OL07-00-030740 - stigid@rhel7: RHEL-07-030740 -+ stigid@rhel8: RHEL-08-030300 - stigid@sle12: SLES-12-020290 - stigid@sle15: SLES-15-030350 - stigid@ubuntu2004: UBTU-20-010138 -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_newgrp/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_newgrp/rule.yml -index 53ee78dc10..edbb41f3d8 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_newgrp/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_newgrp/rule.yml -@@ -43,7 +43,7 @@ references: - cis@ubuntu2004: 4.1.11 - cobit5: APO10.01,APO10.03,APO10.04,APO10.05,APO11.04,BAI03.05,DSS01.03,DSS03.05,DSS05.02,DSS05.04,DSS05.05,DSS05.07,MEA01.01,MEA01.02,MEA01.03,MEA01.04,MEA01.05,MEA02.01 - cui: 3.1.7 -- disa: CCI-000130,CCI-000135,CCI-000172,CCI-002884 -+ disa: CCI-000130,CCI-000169,CCI-000135,CCI-000172,CCI-002884 - hipaa: 164.308(a)(1)(ii)(D),164.308(a)(3)(ii)(A),164.308(a)(5)(ii)(C),164.312(a)(2)(i),164.312(b),164.312(d),164.312(e) - isa-62443-2009: 4.3.2.6.7,4.3.3.3.9,4.3.3.5.8,4.3.4.4.7,4.4.2.1,4.4.2.2,4.4.2.4 - isa-62443-2013: 'SR 2.10,SR 2.11,SR 2.12,SR 2.8,SR 2.9,SR 6.1,SR 6.2' -@@ -52,9 +52,10 @@ references: - nist: AC-2(4),AU-2(d),AU-12(c),AC-6(9),CM-6(a) - nist-csf: DE.CM-1,DE.CM-3,DE.CM-7,ID.SC-4,PR.PT-1 - ospp: FAU_GEN.1.1.c -- srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215 -+ srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215 - stigid@ol7: OL07-00-030710 - stigid@rhel7: RHEL-07-030710 -+ stigid@rhel8: RHEL-08-030350 - stigid@sle12: SLES-12-020570 - stigid@sle15: SLES-15-030090 - stigid@ubuntu2004: UBTU-20-010164 -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_pam_timestamp_check/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_pam_timestamp_check/rule.yml -index 5753e20e9e..f5a3a4be02 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_pam_timestamp_check/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_pam_timestamp_check/rule.yml -@@ -50,16 +50,17 @@ references: - cis-csc: 1,12,13,14,15,16,2,3,5,6,7,8,9 - cobit5: APO10.01,APO10.03,APO10.04,APO10.05,APO11.04,BAI03.05,DSS01.03,DSS03.05,DSS05.02,DSS05.04,DSS05.05,DSS05.07,MEA01.01,MEA01.02,MEA01.03,MEA01.04,MEA01.05,MEA02.01 - cui: 3.1.7 -- disa: CCI-000135,CCI-000172,CCI-002884 -+ disa: CCI-000135,CCI-000169,CCI-000172,CCI-002884 - hipaa: 164.308(a)(1)(ii)(D),164.308(a)(3)(ii)(A),164.308(a)(5)(ii)(C),164.312(a)(2)(i),164.312(b),164.312(d),164.312(e) - isa-62443-2009: 4.3.2.6.7,4.3.3.3.9,4.3.3.5.8,4.3.4.4.7,4.4.2.1,4.4.2.2,4.4.2.4 - isa-62443-2013: 'SR 2.10,SR 2.11,SR 2.12,SR 2.8,SR 2.9,SR 6.1,SR 6.2' - iso27001-2013: A.12.4.1,A.12.4.2,A.12.4.3,A.12.4.4,A.12.7.1,A.14.2.7,A.15.2.1,A.15.2.2 - nist: AU-2(d),AU-12(c),AC-6(9),CM-6(a) - nist-csf: DE.CM-1,DE.CM-3,DE.CM-7,ID.SC-4,PR.PT-1 -- srg: SRG-OS-000042-GPOS-00020,SRG-OS-000392-GPOS-00172,SRG-OS-000471-GPOS-00215 -+ srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215 - stigid@ol7: OL07-00-030810 - stigid@rhel7: RHEL-07-030810 -+ stigid@rhel8: RHEL-08-030340 - stigid@sle12: SLES-12-020720 - stigid@sle15: SLES-15-030510 - stigid@ubuntu2004: UBTU-20-010178 -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_passwd/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_passwd/rule.yml -index 6792cad002..06b5cfc4ae 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_passwd/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_passwd/rule.yml -@@ -42,7 +42,7 @@ references: - cis-csc: 1,12,13,14,15,16,2,3,5,6,7,8,9 - cobit5: APO10.01,APO10.03,APO10.04,APO10.05,APO11.04,BAI03.05,DSS01.03,DSS03.05,DSS05.02,DSS05.04,DSS05.05,DSS05.07,MEA01.01,MEA01.02,MEA01.03,MEA01.04,MEA01.05,MEA02.01 - cui: 3.1.7 -- disa: CCI-000135,CCI-000172,CCI-002884 -+ disa: CCI-000135,CCI-000169,CCI-000172,CCI-002884 - hipaa: 164.308(a)(1)(ii)(D),164.308(a)(3)(ii)(A),164.308(a)(5)(ii)(C),164.312(a)(2)(i),164.312(b),164.312(d),164.312(e) - isa-62443-2009: 4.3.2.6.7,4.3.3.3.9,4.3.3.5.8,4.3.4.4.7,4.4.2.1,4.4.2.2,4.4.2.4 - isa-62443-2013: 'SR 2.10,SR 2.11,SR 2.12,SR 2.8,SR 2.9,SR 6.1,SR 6.2' -@@ -51,9 +51,10 @@ references: - nist: AC-2(4),AU-2(d),AU-12(c),AC-6(9),CM-6(a) - nist-csf: DE.CM-1,DE.CM-3,DE.CM-7,ID.SC-4,PR.PT-1 - ospp: FAU_GEN.1.1.c -- srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000392-GPOS-00172,SRG-OS-000471-GPOS-00215 -+ srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215 - stigid@ol7: OL07-00-030630 - stigid@rhel7: RHEL-07-030630 -+ stigid@rhel8: RHEL-08-030280 - stigid@sle12: SLES-12-020550 - stigid@sle15: SLES-15-030070 - stigid@ubuntu2004: UBTU-20-010172 -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_postdrop/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_postdrop/rule.yml -index 4080c66b8d..8f90c9c211 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_postdrop/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_postdrop/rule.yml -@@ -41,16 +41,17 @@ references: - cis@ubuntu2004: 4.1.11 - cobit5: APO10.01,APO10.03,APO10.04,APO10.05,APO11.04,BAI03.05,DSS01.03,DSS03.05,DSS05.02,DSS05.04,DSS05.05,DSS05.07,MEA01.01,MEA01.02,MEA01.03,MEA01.04,MEA01.05,MEA02.01 - cui: 3.1.7 -- disa: CCI-000135,CCI-000172,CCI-002884 -+ disa: CCI-000135,CCI-000169,CCI-000172,CCI-002884 - hipaa: 164.308(a)(1)(ii)(D),164.308(a)(3)(ii)(A),164.308(a)(5)(ii)(C),164.312(a)(2)(i),164.312(b),164.312(d),164.312(e) - isa-62443-2009: 4.3.2.6.7,4.3.3.3.9,4.3.3.5.8,4.3.4.4.7,4.4.2.1,4.4.2.2,4.4.2.4 - isa-62443-2013: 'SR 2.10,SR 2.11,SR 2.12,SR 2.8,SR 2.9,SR 6.1,SR 6.2' - iso27001-2013: A.12.4.1,A.12.4.2,A.12.4.3,A.12.4.4,A.12.7.1,A.14.2.7,A.15.2.1,A.15.2.2 - nist: AU-2(d),AU-12(c),AC-6(9),CM-6(a) - nist-csf: DE.CM-1,DE.CM-3,DE.CM-7,ID.SC-4,PR.PT-1 -- srg: SRG-OS-000042-GPOS-00020,SRG-OS-000392-GPOS-00172,SRG-OS-000471-GPOS-00215 -+ srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215 - stigid@ol7: OL07-00-030760 - stigid@rhel7: RHEL-07-030760 -+ stigid@rhel8: RHEL-08-030311 - vmmsrg: SRG-OS-000471-VMM-001910 - - ocil_clause: 'it is not the case' -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_postqueue/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_postqueue/rule.yml -index 96308029f9..e913e83a0b 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_postqueue/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_postqueue/rule.yml -@@ -41,16 +41,17 @@ references: - cis@ubuntu2004: 4.1.11 - cobit5: APO10.01,APO10.03,APO10.04,APO10.05,APO11.04,BAI03.05,DSS01.03,DSS03.05,DSS05.02,DSS05.04,DSS05.05,DSS05.07,MEA01.01,MEA01.02,MEA01.03,MEA01.04,MEA01.05,MEA02.01 - cui: 3.1.7 -- disa: CCI-000135,CCI-000172,CCI-002884 -+ disa: CCI-000135,CCI-000169,CCI-000172,CCI-002884 - hipaa: 164.308(a)(1)(ii)(D),164.308(a)(3)(ii)(A),164.308(a)(5)(ii)(C),164.312(a)(2)(i),164.312(b),164.312(d),164.312(e) - isa-62443-2009: 4.3.2.6.7,4.3.3.3.9,4.3.3.5.8,4.3.4.4.7,4.4.2.1,4.4.2.2,4.4.2.4 - isa-62443-2013: 'SR 2.10,SR 2.11,SR 2.12,SR 2.8,SR 2.9,SR 6.1,SR 6.2' - iso27001-2013: A.12.4.1,A.12.4.2,A.12.4.3,A.12.4.4,A.12.7.1,A.14.2.7,A.15.2.1,A.15.2.2 - nist: AU-2(d),AU-12(c),AC-6(9),CM-6(a) - nist-csf: DE.CM-1,DE.CM-3,DE.CM-7,ID.SC-4,PR.PT-1 -- srg: SRG-OS-000042-GPOS-00020,SRG-OS-000392-GPOS-00172,SRG-OS-000471-GPOS-00215 -+ srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215 - stigid@ol7: OL07-00-030770 - stigid@rhel7: RHEL-07-030770 -+ stigid@rhel8: RHEL-08-030312 - vmmsrg: SRG-OS-000471-VMM-001910 - - ocil_clause: 'it is not the case' -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_ssh_agent/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_ssh_agent/rule.yml -index b9f68d0712..f2ebca4550 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_ssh_agent/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_ssh_agent/rule.yml -@@ -28,14 +28,16 @@ rationale: |- - severity: medium - - identifiers: -+ cce@rhel8: CCE-85944-7 - cce@sle12: CCE-83199-0 - cce@sle15: CCE-85590-8 - - references: - cis@ubuntu2004: 4.1.11 -- disa: CCI-000130,CCI-000172 -+ disa: CCI-000130,CCI-000169,CCI-000172 - nist@sle12: AU-3,AU-3.1,AU-12(a),AU-12(c),AU-12.1(a),AU-12.1(ii),AU-12.1(iv),MA-4(1)(a) -- srg: SRG-OS-000037-GPOS-00015,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206SRG-OS-000471-GPOS-00215 -+ srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215 -+ stigid@rhel8: RHEL-08-030280 - stigid@sle12: SLES-12-020310 - stigid@sle15: SLES-15-030370 - stigid@ubuntu2004: UBTU-20-010140 -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_ssh_keysign/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_ssh_keysign/rule.yml -index 8a042f7def..1bec9be61b 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_ssh_keysign/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_ssh_keysign/rule.yml -@@ -47,7 +47,7 @@ references: - cis@ubuntu2004: 4.1.11 - cobit5: APO10.01,APO10.03,APO10.04,APO10.05,APO11.04,BAI03.05,DSS01.03,DSS03.05,DSS05.02,DSS05.04,DSS05.05,DSS05.07,MEA01.01,MEA01.02,MEA01.03,MEA01.04,MEA01.05,MEA02.01 - cui: 3.1.7 -- disa: CCI-000135,CCI-000172,CCI-002884 -+ disa: CCI-000135,CCI-000169,CCI-000172,CCI-002884 - hipaa: 164.308(a)(1)(ii)(D),164.308(a)(3)(ii)(A),164.308(a)(5)(ii)(C),164.312(a)(2)(i),164.312(b),164.312(d),164.312(e) - isa-62443-2009: 4.3.2.6.7,4.3.3.3.9,4.3.3.5.8,4.3.4.4.7,4.4.2.1,4.4.2.2,4.4.2.4 - isa-62443-2013: 'SR 2.10,SR 2.11,SR 2.12,SR 2.8,SR 2.9,SR 6.1,SR 6.2' -@@ -55,9 +55,10 @@ references: - nist: AU-2(d),AU-12(c),AC-6(9),CM-6(a) - nist-csf: DE.CM-1,DE.CM-3,DE.CM-7,ID.SC-4,PR.PT-1 - ospp: FAU_GEN.1.1.c -- srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000392-GPOS-00172,SRG-OS-000471-GPOS-00215 -+ srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215 - stigid@ol7: OL07-00-030780 - stigid@rhel7: RHEL-07-030780 -+ stigid@rhel8: RHEL-08-030320 - stigid@sle12: SLES-12-020320 - stigid@sle15: SLES-15-030060 - stigid@ubuntu2004: UBTU-20-010141 -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_su/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_su/rule.yml -index fce851d8e4..99e09ab4e3 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_su/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_su/rule.yml -@@ -43,7 +43,7 @@ references: - cis@ubuntu2004: 4.1.11 - cobit5: APO10.01,APO10.03,APO10.04,APO10.05,APO11.04,BAI03.05,DSS01.03,DSS03.05,DSS05.02,DSS05.04,DSS05.05,DSS05.07,MEA01.01,MEA01.02,MEA01.03,MEA01.04,MEA01.05,MEA02.01 - cui: 3.1.7 -- disa: CCI-000130,CCI-000135,CCI-000172,CCI-002884 -+ disa: CCI-000130,CCI-000135,CCI-000169,CCI-000172,CCI-002884 - hipaa: 164.308(a)(1)(ii)(D),164.308(a)(3)(ii)(A),164.308(a)(5)(ii)(C),164.312(a)(2)(i),164.312(b),164.312(d),164.312(e) - isa-62443-2009: 4.3.2.6.7,4.3.3.3.9,4.3.3.5.8,4.3.4.4.7,4.4.2.1,4.4.2.2,4.4.2.4 - isa-62443-2013: 'SR 2.10,SR 2.11,SR 2.12,SR 2.8,SR 2.9,SR 6.1,SR 6.2' -@@ -51,9 +51,10 @@ references: - nist: AU-2(d),AU-12(c),AC-6(9),CM-6(a) - nist-csf: DE.CM-1,DE.CM-3,DE.CM-7,ID.SC-4,PR.PT-1 - ospp: FAU_GEN.1.1.c -- srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215 -+ srg: 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 - stigid@ol7: OL07-00-030680 - stigid@rhel7: RHEL-07-030680 -+ stigid@rhel8: RHEL-08-030190 - stigid@sle12: SLES-12-020250 - stigid@sle15: SLES-15-030550 - stigid@ubuntu2004: UBTU-20-010136 -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_sudo/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_sudo/rule.yml -index 50f72b7d89..aac859c4b1 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_sudo/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_sudo/rule.yml -@@ -44,7 +44,7 @@ references: - cis@ubuntu2004: 4.1.11 - cobit5: APO10.01,APO10.03,APO10.04,APO10.05,APO11.04,BAI03.05,DSS01.03,DSS03.05,DSS05.02,DSS05.04,DSS05.05,DSS05.07,MEA01.01,MEA01.02,MEA01.03,MEA01.04,MEA01.05,MEA02.01 - cui: 3.1.7 -- disa: CCI-000130,CCI-000135,CCI-000172,CCI-002884 -+ disa: CCI-000130,CCI-000135,CCI-000169,CCI-000172,CCI-002884 - hipaa: 164.308(a)(1)(ii)(D),164.308(a)(3)(ii)(A),164.308(a)(5)(ii)(C),164.312(a)(2)(i),164.312(b),164.312(d),164.312(e) - isa-62443-2009: 4.3.2.6.7,4.3.3.3.9,4.3.3.5.8,4.3.4.4.7,4.4.2.1,4.4.2.2,4.4.2.4 - isa-62443-2013: 'SR 2.10,SR 2.11,SR 2.12,SR 2.8,SR 2.9,SR 6.1,SR 6.2' -@@ -52,9 +52,10 @@ references: - nist: AU-2(d),AU-12(c),AC-6(9),CM-6(a) - nist-csf: DE.CM-1,DE.CM-3,DE.CM-7,ID.SC-4,PR.PT-1 - ospp: FAU_GEN.1.1.c -- srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215 -+ srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215,SRG-OS-000466-GPOS-00210 - stigid@ol7: OL07-00-030690 - stigid@rhel7: RHEL-07-030690 -+ stigid@rhel8: RHEL-08-030550 - stigid@sle12: SLES-12-020260 - stigid@sle15: SLES-15-030560 - stigid@ubuntu2004: UBTU-20-010161 -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_umount/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_umount/rule.yml -index 28fda0e782..061b5c28a7 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_umount/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_umount/rule.yml -@@ -54,6 +54,7 @@ references: - srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215 - stigid@ol7: OL07-00-030750 - stigid@rhel7: RHEL-07-030750 -+ stigid@rhel8: RHEL-08-030301 - stigid@sle12: SLES-12-020300 - stigid@sle15: SLES-15-030360 - stigid@ubuntu2004: UBTU-20-010139 -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_unix_chkpwd/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_unix_chkpwd/rule.yml -index f78b1972be..41a6123f5b 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_unix_chkpwd/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_unix_chkpwd/rule.yml -@@ -52,9 +52,10 @@ references: - nist: AC-2(4),AU-2(d),AU-3,AU-3.1,AU-12(a),AU-12(c),AU-12.1(ii),AU-12.1(iv),AC-6(9),CM-6(a),MA-4(1)(a) - nist-csf: DE.CM-1,DE.CM-3,DE.CM-7,ID.SC-4,PR.PT-1 - ospp: FAU_GEN.1.1.c -- srg: SRG-OS-000042-GPOS-00020,SRG-OS-000392-GPOS-00172,SRG-OS-000471-GPOS-00215,SRG-OS-000037-GPOS-00015 -+ srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215 - stigid@ol7: OL07-00-030640 - stigid@rhel7: RHEL-07-030640 -+ stigid@rhel8: RHEL-08-030317 - stigid@sle12: SLES-12-020680 - stigid@sle15: SLES-15-030110 - vmmsrg: SRG-OS-000471-VMM-001910 -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_userhelper/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_userhelper/rule.yml -index 13bddb000a..de8bab633a 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_userhelper/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_userhelper/rule.yml -@@ -40,7 +40,7 @@ references: - cis-csc: 1,12,13,14,15,16,2,3,5,6,7,8,9 - cobit5: APO10.01,APO10.03,APO10.04,APO10.05,APO11.04,BAI03.05,DSS01.03,DSS03.05,DSS05.02,DSS05.04,DSS05.05,DSS05.07,MEA01.01,MEA01.02,MEA01.03,MEA01.04,MEA01.05,MEA02.01 - cui: 3.1.7 -- disa: CCI-000135,CCI-000172,CCI-002884 -+ disa: CCI-000135,CCI-000169,CCI-000172,CCI-002884 - hipaa: 164.308(a)(1)(ii)(D),164.308(a)(3)(ii)(A),164.308(a)(5)(ii)(C),164.312(a)(2)(i),164.312(b),164.312(d),164.312(e) - isa-62443-2009: 4.3.2.6.7,4.3.3.3.9,4.3.3.5.8,4.3.4.4.7,4.4.2.1,4.4.2.2,4.4.2.4 - isa-62443-2013: 'SR 2.10,SR 2.11,SR 2.12,SR 2.8,SR 2.9,SR 6.1,SR 6.2' -@@ -48,9 +48,10 @@ references: - nist: AU-2(d),AU-12(c),AC-6(9),CM-6(a) - nist-csf: DE.CM-1,DE.CM-3,DE.CM-7,ID.SC-4,PR.PT-1 - ospp: FAU_GEN.1.1.c -- srg: SRG-OS-000042-GPOS-00020,SRG-OS-000392-GPOS-00172,SRG-OS-000471-GPOS-00215 -+ srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215 - stigid@ol7: OL07-00-030670 - stigid@rhel7: RHEL-07-030670 -+ stigid@rhel8: RHEL-08-030315 - vmmsrg: SRG-OS-000471-VMM-001910 - - ocil_clause: 'it is not the case' -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_usermod/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_usermod/rule.yml -index b4c8a8f2cb..288d3c3bf2 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_usermod/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_usermod/rule.yml -@@ -39,13 +39,15 @@ rationale: |- - severity: medium - - identifiers: -+ cce@rhel8: CCE-86027-0 - cce@sle12: CCE-83191-7 - cce@sle15: CCE-85600-5 - - references: - disa: CCI-000130,CCI-000169,CCI-000172,CCI-002884 - nist@sle12: AU-3,AU-12(a),AU-12(c),MA-4(1)(a) -- srg: SRG-OS-000037-GPOS-00015 -+ srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215,SRG-OS-000466-GPOS-00210 -+ stigid@rhel8: RHEL-08-030560 - stigid@sle12: SLES-12-020700 - stigid@sle15: SLES-15-030500 - stigid@ubuntu2004: UBTU-20-010176 -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_immutable/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_immutable/rule.yml -index 6aab91b6d5..6818e5c7b8 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_immutable/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_immutable/rule.yml -@@ -39,6 +39,7 @@ references: - cjis: 5.4.1.1 - cobit5: APO01.06,APO10.01,APO10.03,APO10.04,APO10.05,APO11.04,APO12.06,BAI03.05,BAI08.02,DSS02.02,DSS02.04,DSS02.07,DSS03.01,DSS05.04,DSS05.07,DSS06.02,MEA01.01,MEA01.02,MEA01.03,MEA01.04,MEA01.05,MEA02.01 - cui: 3.3.1,3.4.3 -+ disa: CCI-000162 - hipaa: 164.308(a)(1)(ii)(D),164.308(a)(3)(ii)(A),164.308(a)(5)(ii)(C),164.312(a)(2)(i),164.310(a)(2)(iv),164.312(d),164.310(d)(2)(iii),164.312(b),164.312(e) - isa-62443-2009: 4.2.3.10,4.3.2.6.7,4.3.3.3.9,4.3.3.5.8,4.3.3.7.3,4.3.4.4.7,4.3.4.5.6,4.3.4.5.7,4.3.4.5.8,4.4.2.1,4.4.2.2,4.4.2.4 - isa-62443-2013: 'SR 2.1,SR 2.10,SR 2.11,SR 2.12,SR 2.8,SR 2.9,SR 5.2,SR 6.1' -@@ -46,4 +47,5 @@ references: - nist: AC-6(9),CM-6(a) - nist-csf: DE.AE-3,DE.AE-5,ID.SC-4,PR.AC-4,PR.DS-5,PR.PT-1,RS.AN-1,RS.AN-4 - pcidss: Req-10.5.2 -+ srg: SRG-OS-000057-GPOS-00027,SRG-OS-000058-GPOS-00028,SRG-OS-000059-GPOS-00029 - stigid@rhel8: RHEL-08-030121 -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_media_export/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_media_export/rule.yml -index 7dd945ae83..298aec87f3 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_media_export/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_media_export/rule.yml -@@ -38,7 +38,7 @@ references: - cjis: 5.4.1.1 - cobit5: APO10.01,APO10.03,APO10.04,APO10.05,APO11.04,APO12.06,APO13.01,BAI03.05,BAI08.02,DSS01.03,DSS01.04,DSS02.02,DSS02.04,DSS02.07,DSS03.01,DSS03.05,DSS05.02,DSS05.03,DSS05.04,DSS05.05,DSS05.07,MEA01.01,MEA01.02,MEA01.03,MEA01.04,MEA01.05,MEA02.01 - cui: 3.1.7 -- disa: CCI-000135,CCI-002884 -+ disa: CCI-000135,CCI-000169,CCI-002884 - hipaa: 164.308(a)(1)(ii)(D),164.308(a)(3)(ii)(A),164.308(a)(5)(ii)(C),164.312(a)(2)(i),164.312(b),164.312(d),164.312(e) - isa-62443-2009: 4.2.3.10,4.3.2.6.7,4.3.3.3.9,4.3.3.5.8,4.3.3.6.6,4.3.4.4.7,4.3.4.5.6,4.3.4.5.7,4.3.4.5.8,4.4.2.1,4.4.2.2,4.4.2.4 - isa-62443-2013: 'SR 1.13,SR 2.10,SR 2.11,SR 2.12,SR 2.6,SR 2.8,SR 2.9,SR 3.1,SR 3.5,SR 3.8,SR 4.1,SR 4.3,SR 5.1,SR 5.2,SR 5.3,SR 6.1,SR 6.2,SR 7.1,SR 7.6' -@@ -46,9 +46,10 @@ references: - nist: AU-2(d),AU-12(c),AC-6(9),CM-6(a) - nist-csf: DE.AE-3,DE.AE-5,DE.CM-1,DE.CM-3,DE.CM-7,ID.SC-4,PR.AC-3,PR.PT-1,PR.PT-4,RS.AN-1,RS.AN-4 - pcidss: Req-10.2.7 -- srg: SRG-OS-000042-GPOS-00020,SRG-OS-000392-GPOS-00172 -+ srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215 - stigid@ol7: OL07-00-030740 - stigid@rhel7: RHEL-07-030740 -+ stigid@rhel8: RHEL-08-030302 - stigid@sle12: SLES-12-020290 - - ocil_clause: 'there is no output' -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sysadmin_actions/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sysadmin_actions/rule.yml -index 52c7bd2aef..12bca676d8 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sysadmin_actions/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sysadmin_actions/rule.yml -@@ -47,7 +47,7 @@ references: - nist@sle15: AU-3,AU-3.1,AU-12(a),AU-12.1(ii),AU-12.1(iv),MA-4(1)(a) - ospp: FAU_GEN.1.1.c - pcidss: Req-10.2.2,Req-10.2.5.b -- srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215 -+ srg: 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 - stigid@ol7: OL07-00-030700 - stigid@rhel7: RHEL-07-030700 - stigid@rhel8: RHEL-08-030172 -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_usergroup_modification_group/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_usergroup_modification_group/rule.yml -index a91d14e967..11c8f823c3 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_usergroup_modification_group/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_usergroup_modification_group/rule.yml -@@ -43,7 +43,7 @@ references: - cjis: 5.4.1.1 - cobit5: APO10.01,APO10.03,APO10.04,APO10.05,APO11.04,APO12.06,APO13.01,BAI03.05,BAI08.02,DSS01.03,DSS01.04,DSS02.02,DSS02.04,DSS02.07,DSS03.01,DSS03.05,DSS05.02,DSS05.03,DSS05.04,DSS05.05,DSS05.07,DSS06.03,MEA01.01,MEA01.02,MEA01.03,MEA01.04,MEA01.05,MEA02.01 - cui: 3.1.7 -- disa: CCI-000018,CCI-000172,CCI-001403,CCI-001404,CCI-001405,CCI-001683,CCI-001684,CCI-001685,CCI-001686,CCI-002130,CCI-002132 -+ disa: CCI-000018,CCI-000169,CCI-000172,CCI-001403,CCI-001404,CCI-001405,CCI-001683,CCI-001684,CCI-001685,CCI-001686,CCI-002130,CCI-002132 - hipaa: 164.308(a)(1)(ii)(D),164.308(a)(3)(ii)(A),164.308(a)(5)(ii)(C),164.312(a)(2)(i),164.312(b),164.312(d),164.312(e) - isa-62443-2009: 4.2.3.10,4.3.2.6.7,4.3.3.2.2,4.3.3.3.9,4.3.3.5.1,4.3.3.5.2,4.3.3.5.8,4.3.3.6.6,4.3.3.7.2,4.3.3.7.3,4.3.3.7.4,4.3.4.4.7,4.3.4.5.6,4.3.4.5.7,4.3.4.5.8,4.4.2.1,4.4.2.2,4.4.2.4 - isa-62443-2013: 'SR 1.1,SR 1.13,SR 1.2,SR 1.3,SR 1.4,SR 1.5,SR 1.7,SR 1.8,SR 1.9,SR 2.1,SR 2.10,SR 2.11,SR 2.12,SR 2.6,SR 2.8,SR 2.9,SR 3.1,SR 3.5,SR 3.8,SR 4.1,SR 4.3,SR 5.1,SR 5.2,SR 5.3,SR 6.1,SR 6.2,SR 7.1,SR 7.6' -@@ -53,7 +53,7 @@ references: - nist-csf: DE.AE-3,DE.AE-5,DE.CM-1,DE.CM-3,DE.CM-7,ID.SC-4,PR.AC-1,PR.AC-3,PR.AC-4,PR.AC-6,PR.PT-1,PR.PT-4,RS.AN-1,RS.AN-4 - ospp: FAU_GEN.1.1.c - pcidss: Req-10.2.5 -- srg: SRG-OS-000004-GPOS-00004 -+ srg: 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 - stigid@ol7: OL07-00-030871 - stigid@rhel7: RHEL-07-030871 - stigid@rhel8: RHEL-08-030170 -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_usergroup_modification_gshadow/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_usergroup_modification_gshadow/rule.yml -index 90b98863c1..8ccf265de6 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_usergroup_modification_gshadow/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_usergroup_modification_gshadow/rule.yml -@@ -43,7 +43,7 @@ references: - cjis: 5.4.1.1 - cobit5: APO10.01,APO10.03,APO10.04,APO10.05,APO11.04,APO12.06,APO13.01,BAI03.05,BAI08.02,DSS01.03,DSS01.04,DSS02.02,DSS02.04,DSS02.07,DSS03.01,DSS03.05,DSS05.02,DSS05.03,DSS05.04,DSS05.05,DSS05.07,DSS06.03,MEA01.01,MEA01.02,MEA01.03,MEA01.04,MEA01.05,MEA02.01 - cui: 3.1.7 -- disa: CCI-000018,CCI-000172,CCI-001403,CCI-001404,CCI-001405,CCI-001683,CCI-001684,CCI-001685,CCI-001686,CCI-002130,CCI-002132 -+ disa: CCI-000018,CCI-000169,CCI-000172,CCI-001403,CCI-001404,CCI-001405,CCI-001683,CCI-001684,CCI-001685,CCI-001686,CCI-002130,CCI-002132 - hipaa: 164.308(a)(1)(ii)(D),164.308(a)(3)(ii)(A),164.308(a)(5)(ii)(C),164.312(a)(2)(i),164.312(b),164.312(d),164.312(e) - isa-62443-2009: 4.2.3.10,4.3.2.6.7,4.3.3.2.2,4.3.3.3.9,4.3.3.5.1,4.3.3.5.2,4.3.3.5.8,4.3.3.6.6,4.3.3.7.2,4.3.3.7.3,4.3.3.7.4,4.3.4.4.7,4.3.4.5.6,4.3.4.5.7,4.3.4.5.8,4.4.2.1,4.4.2.2,4.4.2.4 - isa-62443-2013: 'SR 1.1,SR 1.13,SR 1.2,SR 1.3,SR 1.4,SR 1.5,SR 1.7,SR 1.8,SR 1.9,SR 2.1,SR 2.10,SR 2.11,SR 2.12,SR 2.6,SR 2.8,SR 2.9,SR 3.1,SR 3.5,SR 3.8,SR 4.1,SR 4.3,SR 5.1,SR 5.2,SR 5.3,SR 6.1,SR 6.2,SR 7.1,SR 7.6' -@@ -53,7 +53,7 @@ references: - nist-csf: DE.AE-3,DE.AE-5,DE.CM-1,DE.CM-3,DE.CM-7,ID.SC-4,PR.AC-1,PR.AC-3,PR.AC-4,PR.AC-6,PR.PT-1,PR.PT-4,RS.AN-1,RS.AN-4 - ospp: FAU_GEN.1.1.c - pcidss: Req-10.2.5 -- srg: SRG-OS-000004-GPOS-00004 -+ srg: 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 - stigid@ol7: OL07-00-030872 - stigid@rhel7: RHEL-07-030872 - stigid@rhel8: RHEL-08-030160 -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_usergroup_modification_opasswd/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_usergroup_modification_opasswd/rule.yml -index 05e12170e4..b8e99f216a 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_usergroup_modification_opasswd/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_usergroup_modification_opasswd/rule.yml -@@ -43,7 +43,7 @@ references: - cjis: 5.4.1.1 - cobit5: APO10.01,APO10.03,APO10.04,APO10.05,APO11.04,APO12.06,APO13.01,BAI03.05,BAI08.02,DSS01.03,DSS01.04,DSS02.02,DSS02.04,DSS02.07,DSS03.01,DSS03.05,DSS05.02,DSS05.03,DSS05.04,DSS05.05,DSS05.07,DSS06.03,MEA01.01,MEA01.02,MEA01.03,MEA01.04,MEA01.05,MEA02.01 - cui: 3.1.7 -- disa: CCI-000018,CCI-000172,CCI-001403,CCI-001404,CCI-001405,CCI-001683,CCI-001684,CCI-001685,CCI-001686,CCI-002130,CCI-002132 -+ disa: CCI-000018,CCI-000169,CCI-000172,CCI-001403,CCI-001404,CCI-001405,CCI-001683,CCI-001684,CCI-001685,CCI-001686,CCI-002130,CCI-002132 - hipaa: 164.308(a)(1)(ii)(D),164.308(a)(3)(ii)(A),164.308(a)(5)(ii)(C),164.312(a)(2)(i),164.312(b),164.312(d),164.312(e) - isa-62443-2009: 4.2.3.10,4.3.2.6.7,4.3.3.2.2,4.3.3.3.9,4.3.3.5.1,4.3.3.5.2,4.3.3.5.8,4.3.3.6.6,4.3.3.7.2,4.3.3.7.3,4.3.3.7.4,4.3.4.4.7,4.3.4.5.6,4.3.4.5.7,4.3.4.5.8,4.4.2.1,4.4.2.2,4.4.2.4 - isa-62443-2013: 'SR 1.1,SR 1.13,SR 1.2,SR 1.3,SR 1.4,SR 1.5,SR 1.7,SR 1.8,SR 1.9,SR 2.1,SR 2.10,SR 2.11,SR 2.12,SR 2.6,SR 2.8,SR 2.9,SR 3.1,SR 3.5,SR 3.8,SR 4.1,SR 4.3,SR 5.1,SR 5.2,SR 5.3,SR 6.1,SR 6.2,SR 7.1,SR 7.6' -@@ -54,7 +54,7 @@ references: - nist@sle15: AC-2(4).1(i&ii),AU-12.1(iv) - ospp: FAU_GEN.1.1.c - pcidss: Req-10.2.5 -- srg: SRG-OS-000004-GPOS-00004,SRG-OS-000239-GPOS-00089,SRG-OS-000240-GPOS-00090,SRG-OS-000241-GPOS-00091,SRG-OS-000303-GPOS-00120,SRG-OS-000463-GPOS-00207,SRG-OS-000476-GPOS-00221 -+ srg: 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,SRG-OS-000463-GPOS-00207 - stigid@ol7: OL07-00-030874 - stigid@rhel7: RHEL-07-030874 - stigid@rhel8: RHEL-08-030140 -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_usergroup_modification_passwd/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_usergroup_modification_passwd/rule.yml -index 88ef5606a7..aae128fee9 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_usergroup_modification_passwd/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_usergroup_modification_passwd/rule.yml -@@ -43,7 +43,7 @@ references: - cjis: 5.4.1.1 - cobit5: APO10.01,APO10.03,APO10.04,APO10.05,APO11.04,APO12.06,APO13.01,BAI03.05,BAI08.02,DSS01.03,DSS01.04,DSS02.02,DSS02.04,DSS02.07,DSS03.01,DSS03.05,DSS05.02,DSS05.03,DSS05.04,DSS05.05,DSS05.07,DSS06.03,MEA01.01,MEA01.02,MEA01.03,MEA01.04,MEA01.05,MEA02.01 - cui: 3.1.7 -- disa: CCI-000018,CCI-000172,CCI-001403,CCI-001404,CCI-001405,CCI-001683,CCI-001684,CCI-001685,CCI-001686,CCI-002130,CCI-002132 -+ disa: CCI-000018,CCI-000169,CCI-000172,CCI-001403,CCI-001404,CCI-001405,CCI-001683,CCI-001684,CCI-001685,CCI-001686,CCI-002130,CCI-002132 - hipaa: 164.308(a)(1)(ii)(D),164.308(a)(3)(ii)(A),164.308(a)(5)(ii)(C),164.312(a)(2)(i),164.312(b),164.312(d),164.312(e) - isa-62443-2009: 4.2.3.10,4.3.2.6.7,4.3.3.2.2,4.3.3.3.9,4.3.3.5.1,4.3.3.5.2,4.3.3.5.8,4.3.3.6.6,4.3.3.7.2,4.3.3.7.3,4.3.3.7.4,4.3.4.4.7,4.3.4.5.6,4.3.4.5.7,4.3.4.5.8,4.4.2.1,4.4.2.2,4.4.2.4 - isa-62443-2013: 'SR 1.1,SR 1.13,SR 1.2,SR 1.3,SR 1.4,SR 1.5,SR 1.7,SR 1.8,SR 1.9,SR 2.1,SR 2.10,SR 2.11,SR 2.12,SR 2.6,SR 2.8,SR 2.9,SR 3.1,SR 3.5,SR 3.8,SR 4.1,SR 4.3,SR 5.1,SR 5.2,SR 5.3,SR 6.1,SR 6.2,SR 7.1,SR 7.6' -@@ -53,7 +53,7 @@ references: - nist-csf: DE.AE-3,DE.AE-5,DE.CM-1,DE.CM-3,DE.CM-7,ID.SC-4,PR.AC-1,PR.AC-3,PR.AC-4,PR.AC-6,PR.PT-1,PR.PT-4,RS.AN-1,RS.AN-4 - ospp: FAU_GEN.1.1.c - pcidss: Req-10.2.5 -- srg: SRG-OS-000004-GPOS-00004,SRG-OS-000239-GPOS-00089,SRG-OS-000240-GPOS-00090,SRG-OS-000241-GPOS-00091,SRG-OS-000274-GPOS-00104,SRG-OS-000275-GPOS-00105,SRG-OS-000276-GPOS-00106,SRG-OS-000277-GPOS-00107,SRG-OS-000303-GPOS-00120,SRG-OS-000476-GPOS-00221 -+ srg: 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,SRG-OS-000274-GPOS-00104,SRG-OS-000275-GPOS-00105,SRG-OS-000276-GPOS-00106,SRG-OS-000277-GPOS-00107 - stigid@ol7: OL07-00-030870 - stigid@rhel7: RHEL-07-030870 - stigid@rhel8: RHEL-08-030150 -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_usergroup_modification_shadow/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_usergroup_modification_shadow/rule.yml -index 6d084343c9..d6cede0d34 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_usergroup_modification_shadow/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_usergroup_modification_shadow/rule.yml -@@ -43,7 +43,7 @@ references: - cjis: 5.4.1.1 - cobit5: APO10.01,APO10.03,APO10.04,APO10.05,APO11.04,APO12.06,APO13.01,BAI03.05,BAI08.02,DSS01.03,DSS01.04,DSS02.02,DSS02.04,DSS02.07,DSS03.01,DSS03.05,DSS05.02,DSS05.03,DSS05.04,DSS05.05,DSS05.07,DSS06.03,MEA01.01,MEA01.02,MEA01.03,MEA01.04,MEA01.05,MEA02.01 - cui: 3.1.7 -- disa: CCI-000018,CCI-000172,CCI-001403,CCI-001404,CCI-001405,CCI-001683,CCI-001684,CCI-001685,CCI-001686,CCI-002130,CCI-002132 -+ disa: CCI-000018,CCI-000169,CCI-000172,CCI-001403,CCI-001404,CCI-001405,CCI-001683,CCI-001684,CCI-001685,CCI-001686,CCI-002130,CCI-002132 - hipaa: 164.308(a)(1)(ii)(D),164.308(a)(3)(ii)(A),164.308(a)(5)(ii)(C),164.312(a)(2)(i),164.312(b),164.312(d),164.312(e) - isa-62443-2009: 4.2.3.10,4.3.2.6.7,4.3.3.2.2,4.3.3.3.9,4.3.3.5.1,4.3.3.5.2,4.3.3.5.8,4.3.3.6.6,4.3.3.7.2,4.3.3.7.3,4.3.3.7.4,4.3.4.4.7,4.3.4.5.6,4.3.4.5.7,4.3.4.5.8,4.4.2.1,4.4.2.2,4.4.2.4 - isa-62443-2013: 'SR 1.1,SR 1.13,SR 1.2,SR 1.3,SR 1.4,SR 1.5,SR 1.7,SR 1.8,SR 1.9,SR 2.1,SR 2.10,SR 2.11,SR 2.12,SR 2.6,SR 2.8,SR 2.9,SR 3.1,SR 3.5,SR 3.8,SR 4.1,SR 4.3,SR 5.1,SR 5.2,SR 5.3,SR 6.1,SR 6.2,SR 7.1,SR 7.6' -@@ -53,7 +53,7 @@ references: - nist-csf: DE.AE-3,DE.AE-5,DE.CM-1,DE.CM-3,DE.CM-7,ID.SC-4,PR.AC-1,PR.AC-3,PR.AC-4,PR.AC-6,PR.PT-1,PR.PT-4,RS.AN-1,RS.AN-4 - ospp: FAU_GEN.1.1.c - pcidss: Req-10.2.5 -- srg: SRG-OS-000004-GPOS-00004,SRG-OS-000239-GPOS-00089,SRG-OS-000240-GPOS-00090,SRG-OS-000241-GPOS-00091,SRG-OS-000303-GPOS-00120,SRG-OS-000476-GPOS-00221 -+ srg: 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 - stigid@ol7: OL07-00-030873 - stigid@rhel7: RHEL-07-030873 - stigid@rhel8: RHEL-08-030130 -diff --git a/linux_os/guide/system/auditing/grub2_audit_argument/rule.yml b/linux_os/guide/system/auditing/grub2_audit_argument/rule.yml -index f1b2bb78fb..733172861a 100644 ---- a/linux_os/guide/system/auditing/grub2_audit_argument/rule.yml -+++ b/linux_os/guide/system/auditing/grub2_audit_argument/rule.yml -@@ -46,7 +46,7 @@ references: - nist: AC-17(1),AU-14(1),AU-10,CM-6(a),IR-5(1) - nist-csf: DE.AE-3,DE.AE-5,ID.SC-4,PR.AC-3,PR.PT-1,PR.PT-4,RS.AN-1,RS.AN-4 - pcidss: Req-10.3 -- srg: SRG-OS-000254-GPOS-00095,SRG-OS-000062-GPOS-00031 -+ srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215,SRG-OS-000473-GPOS-00218,SRG-OS-000254-GPOS-00095 - stigid@rhel8: RHEL-08-030601 - stigid@ubuntu2004: UBTU-20-010198 - vmmsrg: SRG-OS-000254-VMM-000880 -diff --git a/linux_os/guide/system/auditing/policy_rules/audit_immutable_login_uids/rule.yml b/linux_os/guide/system/auditing/policy_rules/audit_immutable_login_uids/rule.yml -index aa22da90c3..261dc1849e 100644 ---- a/linux_os/guide/system/auditing/policy_rules/audit_immutable_login_uids/rule.yml -+++ b/linux_os/guide/system/auditing/policy_rules/audit_immutable_login_uids/rule.yml -@@ -35,9 +35,10 @@ identifiers: - cce@rhel9: CCE-83673-4 - - references: -+ disa: CCI-000162 - nist: AU-2(a) - ospp: FAU_GEN.1.1.c -- srg: SRG-OS-000462-GPOS-00206,SRG-OS-000475-GPOS-00220 -+ srg: SRG-OS-000462-GPOS-00206,SRG-OS-000475-GPOS-00220,SRG-OS-000057-GPOS-00027,SRG-OS-000058-GPOS-00028,SRG-OS-000059-GPOS-00029 - stigid@rhel8: RHEL-08-030122 - - ocil_clause: 'the file does not exist or the content differs' -diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index 3cbb4796ac..469c7dff5e 100644 ---- a/products/rhel8/profiles/stig.profile -+++ b/products/rhel8/profiles/stig.profile -@@ -846,7 +846,7 @@ selections: - - # RHEL-08-030590 - # This one needs to be updated to use /var/log/faillock, but first RHEL-08-020017 should be -- # implemented as it is the one that configures a different patch for the events of failing locks -+ # implemented as it is the one that configures a different path for the events of failing locks - # - audit_rules_login_events_faillock - - # RHEL-08-030600 -diff --git a/shared/references/cce-redhat-avail.txt b/shared/references/cce-redhat-avail.txt -index 1d54e8ec15..dcb1e675bd 100644 ---- a/shared/references/cce-redhat-avail.txt -+++ b/shared/references/cce-redhat-avail.txt -@@ -74,7 +74,6 @@ CCE-85940-5 - CCE-85941-3 - CCE-85942-1 - CCE-85943-9 --CCE-85944-7 - CCE-85945-4 - CCE-85946-2 - CCE-85947-0 -@@ -154,7 +153,6 @@ CCE-86023-9 - CCE-86024-7 - CCE-86025-4 - CCE-86026-2 --CCE-86027-0 - CCE-86028-8 - CCE-86029-6 - CCE-86030-4 -@@ -2522,7 +2520,6 @@ CCE-88433-8 - CCE-88434-6 - CCE-88435-3 - CCE-88436-1 --CCE-88437-9 - CCE-88438-7 - CCE-88439-5 - CCE-88440-3 -@@ -3515,7 +3512,6 @@ CCE-89442-8 - CCE-89443-6 - CCE-89444-4 - CCE-89445-1 --CCE-89446-9 - CCE-89447-7 - CCE-89448-5 - CCE-89449-3 -@@ -3524,7 +3520,6 @@ CCE-89451-9 - CCE-89452-7 - CCE-89453-5 - CCE-89454-3 --CCE-89455-0 - CCE-89456-8 - CCE-89457-6 - CCE-89458-4 - -From 1e6b51ceb3e8fb9e6406b5f0ba925120e19e719d Mon Sep 17 00:00:00 2001 -From: Gabriel Becker -Date: Tue, 3 Aug 2021 11:44:57 +0200 -Subject: [PATCH 12/21] Define template data using product qualifiers instead - of macros. - ---- - .../audit_rules_privileged_commands_ssh_keysign/rule.yml | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_ssh_keysign/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_ssh_keysign/rule.yml -index 1bec9be61b..5c39013572 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_ssh_keysign/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_ssh_keysign/rule.yml -@@ -75,4 +75,6 @@ ocil: |- - template: - name: audit_rules_privileged_commands - vars: -- path: {{% if product in ["sle12", "sle15"] %}}/usr/lib/ssh/ssh-keysign{{% else %}}/usr/libexec/openssh/ssh-keysign{{% endif %}} -+ path: /usr/libexec/openssh/ssh-keysign -+ path@sle12: /usr/lib/ssh/ssh-keysign -+ path@sle15: /usr/lib/ssh/ssh-keysign - -From f8478dea74e99affff3f3b7b62d91ac509d71a8c Mon Sep 17 00:00:00 2001 -From: Gabriel Becker -Date: Tue, 3 Aug 2021 12:01:18 +0200 -Subject: [PATCH 13/21] Add new STIG audit rule - audit_rules_privileged_commands_unix_update. - ---- - .../rule.yml | 53 +++++++++++++++++++ - .../tests/ocp4/e2e.yml | 3 ++ - products/rhel8/profiles/stig.profile | 2 +- - shared/references/cce-redhat-avail.txt | 2 - - 4 files changed, 57 insertions(+), 3 deletions(-) - create mode 100644 linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_unix_update/rule.yml - create mode 100644 linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_unix_update/tests/ocp4/e2e.yml - -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_unix_update/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_unix_update/rule.yml -new file mode 100644 -index 0000000000..7ef800da19 ---- /dev/null -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_unix_update/rule.yml -@@ -0,0 +1,53 @@ -+documentation_complete: true -+ -+prodtype: rhel8,rhel9 -+ -+title: 'Ensure auditd Collects Information on the Use of Privileged Commands - unix_update' -+ -+description: |- -+ At a minimum, the audit system should collect the execution of -+ privileged commands for all users and root. If the auditd daemon is -+ configured to use the augenrules program to read audit rules during -+ daemon startup (the default), add a line of the following form to a file with -+ suffix .rules in the directory /etc/audit/rules.d: -+
-a always,exit -F path=/usr/sbin/unix_update -F perm=x -F auid>={{{ auid }}} -F auid!=unset -F key=privileged
-+ If the auditd daemon is configured to use the auditctl -+ utility to read audit rules during daemon startup, add a line of the following -+ form to /etc/audit/audit.rules: -+
-a always,exit -F path=/usr/sbin/unix_update -F perm=x -F auid>={{{ auid }}} -F auid!=unset -F key=privileged
-+ -+rationale: |- -+ Misuse of privileged functions, either intentionally or unintentionally by -+ authorized users, or by unauthorized external entities that have compromised 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 and advanced persistent threats. -+

-+ Privileged programs are subject to escalation-of-privilege attacks, -+ which attempt to subvert their normal role of providing some necessary but -+ limited capability. As such, motivation exists to monitor these programs for -+ unusual activity. -+ -+severity: medium -+ -+identifiers: -+ cce@rhel8: CCE-89480-8 -+ cce@rhel9: CCE-89481-6 -+ -+references: -+ disa: CCI-000169 -+ srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215 -+ stigid@rhel8: RHEL-08-030310 -+ -+ocil_clause: 'it is not the case' -+ -+ocil: |- -+ To verify that auditing of privileged command use is configured, run the -+ following command: -+
$ sudo grep unix_update /etc/audit/audit.rules /etc/audit/rules.d/*
-+ It should return a relevant line in the audit rules. -+ -+template: -+ name: audit_rules_privileged_commands -+ vars: -+ path: /usr/sbin/unix_update -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_unix_update/tests/ocp4/e2e.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_unix_update/tests/ocp4/e2e.yml -new file mode 100644 -index 0000000000..fd9b313e87 ---- /dev/null -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_unix_update/tests/ocp4/e2e.yml -@@ -0,0 +1,3 @@ -+--- -+default_result: FAIL -+result_after_remediation: PASS -diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index 469c7dff5e..2cece6a130 100644 ---- a/products/rhel8/profiles/stig.profile -+++ b/products/rhel8/profiles/stig.profile -@@ -725,7 +725,7 @@ selections: - - audit_rules_media_export - - # RHEL-08-030310 -- # missing rule -+ - audit_rules_privileged_commands_unix_update - - # RHEL-08-030311 - - audit_rules_privileged_commands_postdrop -diff --git a/shared/references/cce-redhat-avail.txt b/shared/references/cce-redhat-avail.txt -index dcb1e675bd..ac98344c73 100644 ---- a/shared/references/cce-redhat-avail.txt -+++ b/shared/references/cce-redhat-avail.txt -@@ -3544,8 +3544,6 @@ CCE-89476-6 - CCE-89477-4 - CCE-89478-2 - CCE-89479-0 --CCE-89480-8 --CCE-89481-6 - CCE-89482-4 - CCE-89483-2 - CCE-89484-0 - -From 1216eda0621bedfd60f189bbfd60e79f3b6f5411 Mon Sep 17 00:00:00 2001 -From: Gabriel Becker -Date: Tue, 3 Aug 2021 12:30:11 +0200 -Subject: [PATCH 14/21] Add two new rules to cover STIG req based on existing - rule. - -The rule used as basis is audit_rules_sysadmin_actions. This rules is -used by many profiles and it didn't make sense to change its behavior, -so two new rules were created to be used only by RHEL8 STIG. ---- - .../audit_rules_sudoers/ansible/shared.yml | 39 +++++++++++++++++++ - .../audit_rules_sudoers/bash/shared.sh | 8 ++++ - .../audit_rules_sudoers/oval/shared.xml | 34 ++++++++++++++++ - .../audit_rules_sudoers/rule.yml | 39 +++++++++++++++++++ - .../audit_rules_sudoers/tests/correct.pass.sh | 3 ++ - .../audit_rules_sudoers/tests/empty.fail.sh | 4 ++ - .../tests/wrong_value.fail.sh | 4 ++ - .../audit_rules_sudoers_d/ansible/shared.yml | 39 +++++++++++++++++++ - .../audit_rules_sudoers_d/bash/shared.sh | 8 ++++ - .../audit_rules_sudoers_d/oval/shared.xml | 34 ++++++++++++++++ - .../audit_rules_sudoers_d/rule.yml | 39 +++++++++++++++++++ - .../tests/correct.pass.sh | 3 ++ - .../audit_rules_sudoers_d/tests/empty.fail.sh | 4 ++ - .../tests/missing_slash.fail.sh | 4 ++ - products/rhel8/profiles/stig.profile | 5 +-- - shared/references/cce-redhat-avail.txt | 4 -- - 16 files changed, 264 insertions(+), 7 deletions(-) - create mode 100644 linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sudoers/ansible/shared.yml - create mode 100644 linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sudoers/bash/shared.sh - create mode 100644 linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sudoers/oval/shared.xml - create mode 100644 linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sudoers/rule.yml - create mode 100644 linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sudoers/tests/correct.pass.sh - create mode 100644 linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sudoers/tests/empty.fail.sh - create mode 100644 linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sudoers/tests/wrong_value.fail.sh - create mode 100644 linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sudoers_d/ansible/shared.yml - create mode 100644 linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sudoers_d/bash/shared.sh - create mode 100644 linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sudoers_d/oval/shared.xml - create mode 100644 linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sudoers_d/rule.yml - create mode 100644 linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sudoers_d/tests/correct.pass.sh - create mode 100644 linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sudoers_d/tests/empty.fail.sh - create mode 100644 linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sudoers_d/tests/missing_slash.fail.sh - -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sudoers/ansible/shared.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sudoers/ansible/shared.yml -new file mode 100644 -index 0000000000..12324a9f76 ---- /dev/null -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sudoers/ansible/shared.yml -@@ -0,0 +1,39 @@ -+# platform = multi_platform_all -+# reboot = false -+# strategy = restrict -+# complexity = low -+# disruption = low -+ -+# Inserts/replaces the rule in /etc/audit/rules.d -+ -+- name: Search /etc/audit/rules.d for audit rule entries for sysadmin actions -+ find: -+ paths: "/etc/audit/rules.d" -+ recurse: no -+ contains: '^.*/etc/sudoers\s.*$' -+ patterns: "*.rules" -+ register: find_audit_sysadmin_actions -+ -+- name: Use /etc/audit/rules.d/actions.rules as the recipient for the rule -+ set_fact: -+ all_sysadmin_actions_files: -+ - /etc/audit/rules.d/actions.rules -+ when: find_audit_sysadmin_actions.matched is defined and find_audit_sysadmin_actions.matched == 0 -+ -+- name: Use matched file as the recipient for the rule -+ set_fact: -+ all_sysadmin_actions_files: -+ - "{{ find_audit_sysadmin_actions.files | map(attribute='path') | list | first }}" -+ when: find_audit_sysadmin_actions.matched is defined and find_audit_sysadmin_actions.matched > 0 -+ -+- name: Inserts/replaces audit rule for /etc/sudoers rule in rules.d -+ lineinfile: -+ path: "{{ all_sysadmin_actions_files[0] }}" -+ line: '-w /etc/sudoers -p wa -k actions' -+ create: yes -+ -+- name: Inserts/replaces audit rule for /etc/sudoers in audit.rules -+ lineinfile: -+ path: /etc/audit/audit.rules -+ line: '-w /etc/sudoers -p wa -k actions' -+ create: yes -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sudoers/bash/shared.sh b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sudoers/bash/shared.sh -new file mode 100644 -index 0000000000..a1392449b0 ---- /dev/null -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sudoers/bash/shared.sh -@@ -0,0 +1,8 @@ -+# platform = multi_platform_all -+ -+# Include source function library. -+. /usr/share/scap-security-guide/remediation_functions -+ -+# Perform the remediation for both possible tools: 'auditctl' and 'augenrules' -+fix_audit_watch_rule "auditctl" "/etc/sudoers" "wa" "actions" -+fix_audit_watch_rule "augenrules" "/etc/sudoers" "wa" "actions" -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sudoers/oval/shared.xml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sudoers/oval/shared.xml -new file mode 100644 -index 0000000000..96d1a91c1e ---- /dev/null -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sudoers/oval/shared.xml -@@ -0,0 +1,34 @@ -+ -+ -+ {{{ oval_metadata("Audit actions taken by system administrators on the system - /etc/sudoers.") }}} -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ ^/etc/audit/rules\.d/.*\.rules$ -+ ^\-w[\s]+/etc/sudoers[\s]+\-p[\s]+\b([rx]*w[rx]*a[rx]*|[rx]*a[rx]*w[rx]*)\b[\s]+(-k[\s]+|-F[\s]+key=)[-\w]+[\s]*$ -+ 1 -+ -+ -+ -+ -+ -+ -+ /etc/audit/audit.rules -+ ^\-w[\s]+/etc/sudoers[\s]+\-p[\s]+\b([rx]*w[rx]*a[rx]*|[rx]*a[rx]*w[rx]*)\b[\s]+(-k[\s]+|-F[\s]+key=)[-\w]+[\s]*$ -+ 1 -+ -+ -+ -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sudoers/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sudoers/rule.yml -new file mode 100644 -index 0000000000..f39bfa7e72 ---- /dev/null -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sudoers/rule.yml -@@ -0,0 +1,39 @@ -+documentation_complete: true -+ -+prodtype: rhel8,rhel9 -+ -+title: 'Ensure auditd Collects System Administrator Actions - /etc/sudoers' -+ -+description: |- -+ At a minimum, the audit system should collect administrator actions -+ for all users and root. If the auditd daemon is configured to use the -+ augenrules program to read audit rules during daemon startup (the default), -+ add the following line to a file with suffix .rules in the directory -+ /etc/audit/rules.d: -+
-w /etc/sudoers -p wa -k actions
-+ If the auditd daemon is configured to use the auditctl -+ utility to read audit rules during daemon startup, add the following line to -+ /etc/audit/audit.rules file: -+
-w /etc/sudoers -p wa -k actions
-+ -+rationale: |- -+ The actions taken by system administrators should be audited to keep a record -+ of what was executed on the system, as well as, for accountability purposes. -+ -+severity: medium -+ -+identifiers: -+ cce@rhel8: CCE-90175-1 -+ cce@rhel9: CCE-90176-9 -+ -+references: -+ disa: CCI-000169 -+ srg: 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 -+ stigid@rhel8: RHEL-08-030171 -+ -+ocil_clause: 'there is not output' -+ -+ocil: |- -+ To verify that auditing is configured for system administrator actions, run the following command: -+
$ sudo auditctl -l | grep "watch=/etc/sudoers\|-w /etc/sudoers\"
-+ -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sudoers/tests/correct.pass.sh b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sudoers/tests/correct.pass.sh -new file mode 100644 -index 0000000000..27ff10cb23 ---- /dev/null -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sudoers/tests/correct.pass.sh -@@ -0,0 +1,3 @@ -+#!/bin/bash -+mkdir -p /etc/audit/rules.d/ -+echo "-w /etc/sudoers -p wa -k actions" >> /etc/audit/rules.d/actions.rules -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sudoers/tests/empty.fail.sh b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sudoers/tests/empty.fail.sh -new file mode 100644 -index 0000000000..2776dabaa1 ---- /dev/null -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sudoers/tests/empty.fail.sh -@@ -0,0 +1,4 @@ -+#!/bin/bash -+rm -rf /etc/audit/rules.d/ -+mkdir -p /etc/audit/rules.d/ -+touch /etc/audit/audit.rules -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sudoers/tests/wrong_value.fail.sh b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sudoers/tests/wrong_value.fail.sh -new file mode 100644 -index 0000000000..3d30475363 ---- /dev/null -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sudoers/tests/wrong_value.fail.sh -@@ -0,0 +1,4 @@ -+#!/bin/bash -+ -+mkdir -p /etc/audit/rules.d/ -+echo "-w /etc/sudo -p wa -k actions" >> /etc/audit/rules.d/actions.rules -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sudoers_d/ansible/shared.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sudoers_d/ansible/shared.yml -new file mode 100644 -index 0000000000..89e028ac2d ---- /dev/null -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sudoers_d/ansible/shared.yml -@@ -0,0 +1,39 @@ -+# platform = multi_platform_all -+# reboot = false -+# strategy = restrict -+# complexity = low -+# disruption = low -+ -+# Inserts/replaces the rule in /etc/audit/rules.d -+ -+- name: Search /etc/audit/rules.d for audit rule entries for sysadmin actions -+ find: -+ paths: "/etc/audit/rules.d" -+ recurse: no -+ contains: '^.*/etc/sudoers\.d/\s.*$' -+ patterns: "*.rules" -+ register: find_audit_sysadmin_actions -+ -+- name: Use /etc/audit/rules.d/actions.rules as the recipient for the rule -+ set_fact: -+ all_sysadmin_actions_files: -+ - /etc/audit/rules.d/actions.rules -+ when: find_audit_sysadmin_actions.matched is defined and find_audit_sysadmin_actions.matched == 0 -+ -+- name: Use matched file as the recipient for the rule -+ set_fact: -+ all_sysadmin_actions_files: -+ - "{{ find_audit_sysadmin_actions.files | map(attribute='path') | list | first }}" -+ when: find_audit_sysadmin_actions.matched is defined and find_audit_sysadmin_actions.matched > 0 -+ -+- name: Inserts/replaces audit rule for /etc/sudoers.d/ rule in rules.d -+ lineinfile: -+ path: "{{ all_sysadmin_actions_files[0] }}" -+ line: '-w /etc/sudoers.d/ -p wa -k actions' -+ create: yes -+ -+- name: Inserts/replaces audit rule for /etc/sudoers.d/ in audit.rules -+ lineinfile: -+ path: /etc/audit/audit.rules -+ line: '-w /etc/sudoers.d/ -p wa -k actions' -+ create: yes -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sudoers_d/bash/shared.sh b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sudoers_d/bash/shared.sh -new file mode 100644 -index 0000000000..9a6292d21d ---- /dev/null -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sudoers_d/bash/shared.sh -@@ -0,0 +1,8 @@ -+# platform = multi_platform_all -+ -+# Include source function library. -+. /usr/share/scap-security-guide/remediation_functions -+ -+# Perform the remediation for both possible tools: 'auditctl' and 'augenrules' -+fix_audit_watch_rule "auditctl" "/etc/sudoers.d/" "wa" "actions" -+fix_audit_watch_rule "augenrules" "/etc/sudoers.d/" "wa" "actions" -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sudoers_d/oval/shared.xml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sudoers_d/oval/shared.xml -new file mode 100644 -index 0000000000..c171851647 ---- /dev/null -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sudoers_d/oval/shared.xml -@@ -0,0 +1,34 @@ -+ -+ -+ {{{ oval_metadata("Audit actions taken by system administrators on the system - /etc/sudoers.d/.") }}} -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ ^/etc/audit/rules\.d/.*\.rules$ -+ ^\-w[\s]+/etc/sudoers\.d/[\s]+\-p[\s]+\b([rx]*w[rx]*a[rx]*|[rx]*a[rx]*w[rx]*)\b[\s]+(-k[\s]+|-F[\s]+key=)[-\w]+[\s]*$ -+ 1 -+ -+ -+ -+ -+ -+ -+ /etc/audit/audit.rules -+ ^\-w[\s]+/etc/sudoers\.d/[\s]+\-p[\s]+\b([rx]*w[rx]*a[rx]*|[rx]*a[rx]*w[rx]*)\b[\s]+(-k[\s]+|-F[\s]+key=)[-\w]+[\s]*$ -+ 1 -+ -+ -+ -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sudoers_d/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sudoers_d/rule.yml -new file mode 100644 -index 0000000000..d4a35a7996 ---- /dev/null -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sudoers_d/rule.yml -@@ -0,0 +1,39 @@ -+documentation_complete: true -+ -+prodtype: rhel8,rhel9 -+ -+title: 'Ensure auditd Collects System Administrator Actions - /etc/sudoers.d/' -+ -+description: |- -+ At a minimum, the audit system should collect administrator actions -+ for all users and root. If the auditd daemon is configured to use the -+ augenrules program to read audit rules during daemon startup (the default), -+ add the following line to a file with suffix .rules in the directory -+ /etc/audit/rules.d: -+
-w /etc/sudoers.d/ -p wa -k actions
-+ If the auditd daemon is configured to use the auditctl -+ utility to read audit rules during daemon startup, add the following line to -+ /etc/audit/audit.rules file: -+
-w /etc/sudoers.d/ -p wa -k actions
-+ -+rationale: |- -+ The actions taken by system administrators should be audited to keep a record -+ of what was executed on the system, as well as, for accountability purposes. -+ -+severity: medium -+ -+identifiers: -+ cce@rhel8: CCE-89497-2 -+ cce@rhel9: CCE-89498-0 -+ -+references: -+ disa: CCI-000169 -+ srg: 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 -+ stigid@rhel8: RHEL-08-030172 -+ -+ocil_clause: 'there is not output' -+ -+ocil: |- -+ To verify that auditing is configured for system administrator actions, run the following command: -+
$ sudo auditctl -l | grep "watch=/etc/sudoers.d\|-w /etc/sudoers.d"
-+ -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sudoers_d/tests/correct.pass.sh b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sudoers_d/tests/correct.pass.sh -new file mode 100644 -index 0000000000..a1259a6e66 ---- /dev/null -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sudoers_d/tests/correct.pass.sh -@@ -0,0 +1,3 @@ -+#!/bin/bash -+mkdir -p /etc/audit/rules.d/ -+echo "-w /etc/sudoers.d/ -p wa -k actions" >> /etc/audit/rules.d/actions.rules -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sudoers_d/tests/empty.fail.sh b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sudoers_d/tests/empty.fail.sh -new file mode 100644 -index 0000000000..2776dabaa1 ---- /dev/null -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sudoers_d/tests/empty.fail.sh -@@ -0,0 +1,4 @@ -+#!/bin/bash -+rm -rf /etc/audit/rules.d/ -+mkdir -p /etc/audit/rules.d/ -+touch /etc/audit/audit.rules -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sudoers_d/tests/missing_slash.fail.sh b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sudoers_d/tests/missing_slash.fail.sh -new file mode 100644 -index 0000000000..dd96b1ec10 ---- /dev/null -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sudoers_d/tests/missing_slash.fail.sh -@@ -0,0 +1,4 @@ -+#!/bin/bash -+ -+mkdir -p /etc/audit/rules.d/ -+echo "-w /etc/sudoers.d -p wa -k actions" >> /etc/audit/rules.d/actions.rules -diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index 2cece6a130..965068a691 100644 ---- a/products/rhel8/profiles/stig.profile -+++ b/products/rhel8/profiles/stig.profile -@@ -673,11 +673,10 @@ selections: - - audit_rules_usergroup_modification_group - - # RHEL-08-030171 -- # should be split -- # - audit_rules_sysadmin_actions -+ - audit_rules_sudoers - - # RHEL-08-030172 -- - audit_rules_sysadmin_actions -+ - audit_rules_sudoers_d - - # RHEL-08-030180 - - package_audit_installed -diff --git a/shared/references/cce-redhat-avail.txt b/shared/references/cce-redhat-avail.txt -index ac98344c73..001262c6ee 100644 ---- a/shared/references/cce-redhat-avail.txt -+++ b/shared/references/cce-redhat-avail.txt -@@ -3559,8 +3559,6 @@ CCE-89493-1 - CCE-89494-9 - CCE-89495-6 - CCE-89496-4 --CCE-89497-2 --CCE-89498-0 - CCE-89499-8 - CCE-89500-3 - CCE-89501-1 -@@ -4228,8 +4226,6 @@ CCE-90170-2 - CCE-90172-8 - CCE-90173-6 - CCE-90174-4 --CCE-90175-1 --CCE-90176-9 - CCE-90177-7 - CCE-90178-5 - CCE-90179-3 - -From 2db69d93f8616c9d39897a44994ccdfc30fafb65 Mon Sep 17 00:00:00 2001 -From: Gabriel Becker -Date: Tue, 3 Aug 2021 16:15:14 +0200 -Subject: [PATCH 15/21] Update RHEL8 STIG profiles stability test data. - ---- - .../data/profile_stability/rhel8/stig.profile | 64 +++++++++++++++++++ - .../profile_stability/rhel8/stig_gui.profile | 64 +++++++++++++++++++ - 2 files changed, 128 insertions(+) - -diff --git a/tests/data/profile_stability/rhel8/stig.profile b/tests/data/profile_stability/rhel8/stig.profile -index fcae79f6d8..d7e2f71376 100644 ---- a/tests/data/profile_stability/rhel8/stig.profile -+++ b/tests/data/profile_stability/rhel8/stig.profile -@@ -66,7 +66,71 @@ selections: - - aide_scan_notification - - aide_verify_acls - - aide_verify_ext_attributes -+- audit_immutable_login_uids -+- audit_rules_dac_modification_chmod -+- audit_rules_dac_modification_chown -+- audit_rules_dac_modification_fchmod -+- audit_rules_dac_modification_fchmodat -+- audit_rules_dac_modification_fchown -+- audit_rules_dac_modification_fchownat -+- audit_rules_dac_modification_fremovexattr -+- audit_rules_dac_modification_fsetxattr -+- audit_rules_dac_modification_lchown -+- audit_rules_dac_modification_lremovexattr -+- audit_rules_dac_modification_lsetxattr -+- audit_rules_dac_modification_removexattr -+- audit_rules_dac_modification_setxattr -+- audit_rules_execution_chacl -+- audit_rules_execution_chcon -+- audit_rules_execution_semanage -+- audit_rules_execution_setfacl -+- audit_rules_execution_setfiles -+- audit_rules_execution_setsebool -+- audit_rules_file_deletion_events_rename -+- audit_rules_file_deletion_events_renameat -+- audit_rules_file_deletion_events_rmdir -+- audit_rules_file_deletion_events_unlink -+- audit_rules_file_deletion_events_unlinkat -+- audit_rules_immutable -+- audit_rules_kernel_module_loading_delete -+- audit_rules_kernel_module_loading_finit -+- audit_rules_kernel_module_loading_init -+- audit_rules_login_events_lastlog -+- audit_rules_media_export -+- audit_rules_privileged_commands_chage -+- audit_rules_privileged_commands_chsh -+- audit_rules_privileged_commands_crontab -+- audit_rules_privileged_commands_gpasswd -+- audit_rules_privileged_commands_kmod -+- audit_rules_privileged_commands_mount -+- audit_rules_privileged_commands_newgrp -+- audit_rules_privileged_commands_pam_timestamp_check -+- audit_rules_privileged_commands_passwd -+- audit_rules_privileged_commands_postdrop -+- audit_rules_privileged_commands_postqueue -+- audit_rules_privileged_commands_ssh_agent -+- audit_rules_privileged_commands_ssh_keysign -+- audit_rules_privileged_commands_su -+- audit_rules_privileged_commands_sudo -+- audit_rules_privileged_commands_umount -+- audit_rules_privileged_commands_unix_chkpwd -+- audit_rules_privileged_commands_unix_update -+- audit_rules_privileged_commands_userhelper -+- audit_rules_privileged_commands_usermod -+- audit_rules_sudoers -+- audit_rules_sudoers_d - - audit_rules_suid_privilege_function -+- audit_rules_unsuccessful_file_modification_creat -+- audit_rules_unsuccessful_file_modification_ftruncate -+- audit_rules_unsuccessful_file_modification_open -+- audit_rules_unsuccessful_file_modification_open_by_handle_at -+- audit_rules_unsuccessful_file_modification_openat -+- audit_rules_unsuccessful_file_modification_truncate -+- audit_rules_usergroup_modification_group -+- audit_rules_usergroup_modification_gshadow -+- audit_rules_usergroup_modification_opasswd -+- audit_rules_usergroup_modification_passwd -+- audit_rules_usergroup_modification_shadow - - auditd_audispd_configure_sufficiently_large_partition - - auditd_data_disk_error_action - - auditd_data_disk_full_action -diff --git a/tests/data/profile_stability/rhel8/stig_gui.profile b/tests/data/profile_stability/rhel8/stig_gui.profile -index 2bbd1881f5..7c95e31545 100644 ---- a/tests/data/profile_stability/rhel8/stig_gui.profile -+++ b/tests/data/profile_stability/rhel8/stig_gui.profile -@@ -77,7 +77,71 @@ selections: - - aide_scan_notification - - aide_verify_acls - - aide_verify_ext_attributes -+- audit_immutable_login_uids -+- audit_rules_dac_modification_chmod -+- audit_rules_dac_modification_chown -+- audit_rules_dac_modification_fchmod -+- audit_rules_dac_modification_fchmodat -+- audit_rules_dac_modification_fchown -+- audit_rules_dac_modification_fchownat -+- audit_rules_dac_modification_fremovexattr -+- audit_rules_dac_modification_fsetxattr -+- audit_rules_dac_modification_lchown -+- audit_rules_dac_modification_lremovexattr -+- audit_rules_dac_modification_lsetxattr -+- audit_rules_dac_modification_removexattr -+- audit_rules_dac_modification_setxattr -+- audit_rules_execution_chacl -+- audit_rules_execution_chcon -+- audit_rules_execution_semanage -+- audit_rules_execution_setfacl -+- audit_rules_execution_setfiles -+- audit_rules_execution_setsebool -+- audit_rules_file_deletion_events_rename -+- audit_rules_file_deletion_events_renameat -+- audit_rules_file_deletion_events_rmdir -+- audit_rules_file_deletion_events_unlink -+- audit_rules_file_deletion_events_unlinkat -+- audit_rules_immutable -+- audit_rules_kernel_module_loading_delete -+- audit_rules_kernel_module_loading_finit -+- audit_rules_kernel_module_loading_init -+- audit_rules_login_events_lastlog -+- audit_rules_media_export -+- audit_rules_privileged_commands_chage -+- audit_rules_privileged_commands_chsh -+- audit_rules_privileged_commands_crontab -+- audit_rules_privileged_commands_gpasswd -+- audit_rules_privileged_commands_kmod -+- audit_rules_privileged_commands_mount -+- audit_rules_privileged_commands_newgrp -+- audit_rules_privileged_commands_pam_timestamp_check -+- audit_rules_privileged_commands_passwd -+- audit_rules_privileged_commands_postdrop -+- audit_rules_privileged_commands_postqueue -+- audit_rules_privileged_commands_ssh_agent -+- audit_rules_privileged_commands_ssh_keysign -+- audit_rules_privileged_commands_su -+- audit_rules_privileged_commands_sudo -+- audit_rules_privileged_commands_umount -+- audit_rules_privileged_commands_unix_chkpwd -+- audit_rules_privileged_commands_unix_update -+- audit_rules_privileged_commands_userhelper -+- audit_rules_privileged_commands_usermod -+- audit_rules_sudoers -+- audit_rules_sudoers_d - - audit_rules_suid_privilege_function -+- audit_rules_unsuccessful_file_modification_creat -+- audit_rules_unsuccessful_file_modification_ftruncate -+- audit_rules_unsuccessful_file_modification_open -+- audit_rules_unsuccessful_file_modification_open_by_handle_at -+- audit_rules_unsuccessful_file_modification_openat -+- audit_rules_unsuccessful_file_modification_truncate -+- audit_rules_usergroup_modification_group -+- audit_rules_usergroup_modification_gshadow -+- audit_rules_usergroup_modification_opasswd -+- audit_rules_usergroup_modification_passwd -+- audit_rules_usergroup_modification_shadow - - auditd_audispd_configure_sufficiently_large_partition - - auditd_data_disk_error_action - - auditd_data_disk_full_action - -From 67d07b479750430ce78aa6f5b9326901ec4bc532 Mon Sep 17 00:00:00 2001 -From: Gabriel Becker -Date: Wed, 4 Aug 2021 14:32:46 +0200 -Subject: [PATCH 16/21] Fix RHEL8 STIG id of - audit_rules_privileged_commands_passwd. - ---- - .../audit_rules_privileged_commands_passwd/rule.yml | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_passwd/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_passwd/rule.yml -index 06b5cfc4ae..60660a1314 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_passwd/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_passwd/rule.yml -@@ -54,7 +54,7 @@ references: - srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215 - stigid@ol7: OL07-00-030630 - stigid@rhel7: RHEL-07-030630 -- stigid@rhel8: RHEL-08-030280 -+ stigid@rhel8: RHEL-08-030290 - stigid@sle12: SLES-12-020550 - stigid@sle15: SLES-15-030070 - stigid@ubuntu2004: UBTU-20-010172 - -From 9e11cb68aa68ec7d8dde7a9f5d9298bd3c74f9cb Mon Sep 17 00:00:00 2001 -From: Gabriel Becker -Date: Wed, 4 Aug 2021 15:49:08 +0200 -Subject: [PATCH 17/21] Update audit rules description with regards to -F - perm=x parameter. - ---- - .../audit_rules_execution_chacl/rule.yml | 6 ++--- - .../audit_rules_execution_setfacl/rule.yml | 6 ++--- - .../audit_rules_execution_chcon/rule.yml | 22 ++++++------------- - .../audit_rules_execution_semanage/rule.yml | 10 ++++++--- - .../audit_rules_execution_setfiles/rule.yml | 10 ++++++--- - .../audit_rules_execution_setsebool/rule.yml | 10 ++++++--- - .../rule.yml | 8 +++++-- - .../rule.yml | 8 +++++-- - .../rule.yml | 8 +++++-- - .../rule.yml | 8 +++++-- - .../rule.yml | 15 ++++++++++--- - .../rule.yml | 8 +++++-- - .../rule.yml | 8 +++++-- - .../rule.yml | 17 +++++++++----- - .../rule.yml | 8 +++++-- - .../rule.yml | 8 +++++-- - .../rule.yml | 8 +++++-- - .../rule.yml | 18 ++++++++++----- - .../rule.yml | 8 +++++-- - .../rule.yml | 8 +++++-- - .../rule.yml | 8 +++++-- - .../rule.yml | 8 +++++-- - .../rule.yml | 8 +++++-- - .../rule.yml | 13 +---------- - .../ansible.template | 2 +- - .../bash.template | 2 +- - .../oval.template | 2 +- - 27 files changed, 157 insertions(+), 88 deletions(-) - -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_execution_acl_commands/audit_rules_execution_chacl/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_execution_acl_commands/audit_rules_execution_chacl/rule.yml -index 0c71e4ac24..735817e4f0 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_execution_acl_commands/audit_rules_execution_chacl/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_execution_acl_commands/audit_rules_execution_chacl/rule.yml -@@ -42,10 +42,10 @@ references: - - ocil: |- - To verify that execution of the command is being audited, run the following command: -- Configure the SUSE operating system to generate an audit record for all uses of the "chacl" command. -+ Configure the operating system to generate an audit record for all uses of the "chacl" command. - Add or update the following rules in the "/etc/audit/audit.rules" file: -- -a always,exit -F arch=b32 path=/usr/bin/chacl -F perm=x -F auid>=1000 -F auid!=4294967295 -F key=privileged -- -a always,exit -F arch=b64 path=/usr/bin/chacl -F perm=x -F auid>=1000 -F auid!=4294967295 -F key=privileged -+ -a always,exit -F arch=b32 path=/usr/bin/chacl -F perm=x -F auid>={{{ auid }}} -F auid!=unset -F key=privileged -+ -a always,exit -F arch=b64 path=/usr/bin/chacl -F perm=x -F auid>={{{ auid }}} -F auid!=unset -F key=privileged - The audit daemon must be restarted for the changes to take effect. - # sudo systemctl restart auditd.service - -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_execution_acl_commands/audit_rules_execution_setfacl/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_execution_acl_commands/audit_rules_execution_setfacl/rule.yml -index 89c134a0fa..341790d7dd 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_execution_acl_commands/audit_rules_execution_setfacl/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_execution_acl_commands/audit_rules_execution_setfacl/rule.yml -@@ -42,10 +42,10 @@ references: - - ocil: |- - To verify that execution of the command is being audited, run the following command: -- Configure the SUSE operating system to generate an audit record for all uses of the "setfacl" command. -+ Configure the operating system to generate an audit record for all uses of the "setfacl" command. - Add or update the following rules in the "/etc/audit/audit.rules" file: -- -a always,exit -F arch=b32 path=/usr/bin/setfacl -F perm=x -F auid>=1000 -F auid!=4294967295 -F key=privileged -- -a always,exit -F arch=b64 path=/usr/bin/setfacl -F perm=x -F auid>=1000 -F auid!=4294967295 -F key=privileged -+ -a always,exit -F arch=b32 path=/usr/bin/setfacl -F perm=x -F auid>={{{ auid }}} -F auid!=unset -F key=privileged -+ -a always,exit -F arch=b64 path=/usr/bin/setfacl -F perm=x -F auid>={{{ auid }}} -F auid!=unset -F key=privileged - The audit daemon must be restarted for the changes to take effect. - # sudo systemctl restart auditd.service -
$ sudo grep "path=/usr/bin/setfacl" /etc/audit/audit.rules /etc/audit/rules.d/*
-diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_execution_selinux_commands/audit_rules_execution_chcon/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_execution_selinux_commands/audit_rules_execution_chcon/rule.yml -index 0c6781c7d5..4a5f43376a 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_execution_selinux_commands/audit_rules_execution_chcon/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_execution_selinux_commands/audit_rules_execution_chcon/rule.yml -@@ -1,3 +1,7 @@ -+{{%- if product in ["rhel8", "rhel9", "sle12", "sle15"] %}} -+ {{%- set perm_x="-F perm=x " %}} -+{{%- endif %}} -+ - documentation_complete: true - - prodtype: fedora,ol7,ol8,rhcos4,rhel7,rhel8,rhel9,rhv4,sle12,sle15,ubuntu2004,wrlinux1019 -@@ -10,19 +14,11 @@ description: |- - daemon is configured to use the augenrules program to read audit rules - during daemon startup (the default), add the following lines to a file with suffix - .rules in the directory /etc/audit/rules.d: -- {{% if product in ["sle12", "sle15"] %}} --
-a always,exit -F path=/usr/bin/chcon -F perm=x -F auid>={{{ auid }}} -F auid!=unset -F key=privileged
-- {{% else %}} --
-a always,exit -F path=/usr/bin/chcon -F auid>={{{ auid }}} -F auid!=unset -F key=privileged
-- {{% endif %}} -+
-a always,exit -F path=/usr/bin/chcon {{{ perm_x }}}-F auid>={{{ auid }}} -F auid!=unset -F key=privileged
- If the auditd daemon is configured to use the auditctl - utility to read audit rules during daemon startup, add the following lines to - /etc/audit/audit.rules file: -- {{% if product in ["sle12", "sle15"] %}} --
-a always,exit -F path=/usr/bin/chcon -F perm=x -F auid>={{{ auid }}} -F auid!=unset -F key=privileged
-- {{% else %}} --
-a always,exit -F path=/usr/bin/chcon -F auid>={{{ auid }}} -F auid!=unset -F key=privileged
-- {{% endif %}} -+
-a always,exit -F path=/usr/bin/chcon {{{ perm_x }}}-F auid>={{{ auid }}} -F auid!=unset -F key=privileged
- - rationale: |- - Misuse of privileged functions, either intentionally or unintentionally by -@@ -73,11 +69,7 @@ ocil: |- - To verify that execution of the command is being audited, run the following command: -
$ sudo grep "path=/usr/bin/chcon" /etc/audit/audit.rules /etc/audit/rules.d/*
- The output should return something similar to: -- {{% if product in ["sle12", "sle15"] %}} --
-a always,exit -F path=/usr/bin/chcon -F perm=x -F auid>={{{ auid }}} -F auid!=unset -F key=privileged
-- {{% else %}} --
-a always,exit -F path=/usr/bin/chcon -F auid>={{{ auid }}} -F auid!=unset -F key=privileged
-- {{% endif %}} -+
-a always,exit -F path=/usr/bin/chcon {{{ perm_x }}}-F auid>={{{ auid }}} -F auid!=unset -F key=privileged
- - template: - name: audit_rules_privileged_commands -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_execution_selinux_commands/audit_rules_execution_semanage/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_execution_selinux_commands/audit_rules_execution_semanage/rule.yml -index b609c3dfc2..a945ce16f8 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_execution_selinux_commands/audit_rules_execution_semanage/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_execution_selinux_commands/audit_rules_execution_semanage/rule.yml -@@ -1,3 +1,7 @@ -+{{%- if product in ["rhel8", "rhel9"] %}} -+ {{%- set perm_x="-F perm=x " %}} -+{{%- endif %}} -+ - documentation_complete: true - - prodtype: fedora,ol7,ol8,rhcos4,rhel7,rhel8,rhel9,rhv4,wrlinux1019 -@@ -10,11 +14,11 @@ description: |- - daemon is configured to use the augenrules program to read audit rules - during daemon startup (the default), add the following lines to a file with suffix - .rules in the directory /etc/audit/rules.d: --
-a always,exit -F path=/usr/sbin/semanage -F auid>={{{ auid }}} -F auid!=unset -F key=privileged
-+
-a always,exit -F path=/usr/sbin/semanage {{{ perm_x }}}-F auid>={{{ auid }}} -F auid!=unset -F key=privileged
- If the auditd daemon is configured to use the auditctl - utility to read audit rules during daemon startup, add the following lines to - /etc/audit/audit.rules file: --
-a always,exit -F path=/usr/sbin/semanage -F auid>={{{ auid }}} -F auid!=unset -F key=privileged
-+
-a always,exit -F path=/usr/sbin/semanage {{{ perm_x }}}-F auid>={{{ auid }}} -F auid!=unset -F key=privileged
- - rationale: |- - Misuse of privileged functions, either intentionally or unintentionally by -@@ -59,7 +63,7 @@ ocil: |- - To verify that execution of the command is being audited, run the following command: -
$ sudo grep "path=/usr/sbin/semanage" /etc/audit/audit.rules /etc/audit/rules.d/*
- The output should return something similar to: --
-a always,exit -F path=/usr/sbin/semanage -F auid>={{{ auid }}} -F auid!=unset -F key=privileged
-+
-a always,exit -F path=/usr/sbin/semanage {{{ perm_x }}}-F auid>={{{ auid }}} -F auid!=unset -F key=privileged
- - template: - name: audit_rules_privileged_commands -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_execution_selinux_commands/audit_rules_execution_setfiles/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_execution_selinux_commands/audit_rules_execution_setfiles/rule.yml -index 9de7407f4c..6db7d1daca 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_execution_selinux_commands/audit_rules_execution_setfiles/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_execution_selinux_commands/audit_rules_execution_setfiles/rule.yml -@@ -1,3 +1,7 @@ -+{{%- if product in ["rhel8", "rhel9"] %}} -+ {{%- set perm_x="-F perm=x " %}} -+{{%- endif %}} -+ - documentation_complete: true - - prodtype: ol7,ol8,rhcos4,rhel7,rhel8,rhel9,rhv4 -@@ -10,11 +14,11 @@ description: |- - daemon is configured to use the augenrules program to read audit rules - during daemon startup (the default), add the following lines to a file with suffix - .rules in the directory /etc/audit/rules.d: --
-a always,exit -F path=/usr/sbin/setfiles -F auid>={{{ auid }}} -F auid!=unset -F key=privileged
-+
-a always,exit -F path=/usr/sbin/setfiles {{{ perm_x }}}-F auid>={{{ auid }}} -F auid!=unset -F key=privileged
- If the auditd daemon is configured to use the auditctl - utility to read audit rules during daemon startup, add the following lines to - /etc/audit/audit.rules file: --
-a always,exit -F path=/usr/sbin/setfiles -F auid>={{{ auid }}} -F auid!=unset -F key=privileged
-+
-a always,exit -F path=/usr/sbin/setfiles {{{ perm_x }}}-F auid>={{{ auid }}} -F auid!=unset -F key=privileged
- - rationale: |- - Misuse of privileged functions, either intentionally or unintentionally by -@@ -49,7 +53,7 @@ ocil: |- - To verify that execution of the command is being audited, run the following command: -
$ sudo grep "path=/usr/sbin/setfiles" /etc/audit/audit.rules /etc/audit/rules.d/*
- The output should return something similar to: --
-a always,exit -F path=/usr/sbin/setfiles -F auid>={{{ auid }}} -F auid!=unset -F key=privileged
-+
-a always,exit -F path=/usr/sbin/setfiles {{{ perm_x }}}-F auid>={{{ auid }}} -F auid!=unset -F key=privileged
- - template: - name: audit_rules_privileged_commands -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_execution_selinux_commands/audit_rules_execution_setsebool/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_execution_selinux_commands/audit_rules_execution_setsebool/rule.yml -index 23504bab4a..c357c48fe6 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_execution_selinux_commands/audit_rules_execution_setsebool/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_execution_selinux_commands/audit_rules_execution_setsebool/rule.yml -@@ -1,3 +1,7 @@ -+{{%- if product in ["rhel8", "rhel9"] %}} -+ {{%- set perm_x="-F perm=x " %}} -+{{%- endif %}} -+ - documentation_complete: true - - prodtype: fedora,ol7,ol8,rhcos4,rhel7,rhel8,rhel9,rhv4,wrlinux1019 -@@ -10,11 +14,11 @@ description: |- - daemon is configured to use the augenrules program to read audit rules - during daemon startup (the default), add the following lines to a file with suffix - .rules in the directory /etc/audit/rules.d: --
-a always,exit -F path=/usr/sbin/setsebool -F auid>={{{ auid }}} -F auid!=unset -F key=privileged
-+
-a always,exit -F path=/usr/sbin/setsebool {{{ perm_x }}}-F auid>={{{ auid }}} -F auid!=unset -F key=privileged
- If the auditd daemon is configured to use the auditctl - utility to read audit rules during daemon startup, add the following lines to - /etc/audit/audit.rules file: --
-a always,exit -F path=/usr/sbin/setsebool -F auid>={{{ auid }}} -F auid!=unset -F key=privileged
-+
-a always,exit -F path=/usr/sbin/setsebool {{{ perm_x }}}-F auid>={{{ auid }}} -F auid!=unset -F key=privileged
- - rationale: |- - Misuse of privileged functions, either intentionally or unintentionally by -@@ -58,7 +62,7 @@ ocil: |- - To verify that execution of the command is being audited, run the following command: -
$ sudo grep "path=/usr/sbin/setsebool" /etc/audit/audit.rules /etc/audit/rules.d/*
- The output should return something similar to: --
-a always,exit -F path=/usr/sbin/setsebool -F auid>={{{ auid }}} -F auid!=unset -F key=privileged
-+
-a always,exit -F path=/usr/sbin/setsebool {{{ perm_x }}}-F auid>={{{ auid }}} -F auid!=unset -F key=privileged
- - template: - name: audit_rules_privileged_commands -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_chage/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_chage/rule.yml -index 474910c4c8..b5a9e29d2e 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_chage/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_chage/rule.yml -@@ -1,3 +1,7 @@ -+{{%- if product in ["rhel8", "rhel9", "sle12", "sle15"] %}} -+ {{%- set perm_x="-F perm=x " %}} -+{{%- endif %}} -+ - documentation_complete: true - - prodtype: fedora,ol7,ol8,rhcos4,rhel7,rhel8,rhel9,rhv4,sle12,sle15,ubuntu2004,wrlinux1019 -@@ -10,11 +14,11 @@ description: |- - configured to use the augenrules program to read audit rules during - daemon startup (the default), add a line of the following form to a file with - suffix .rules in the directory /etc/audit/rules.d: --
-a always,exit -F path=/usr/bin/chage -F auid>={{{ auid }}} -F auid!=unset -F key=privileged
-+
-a always,exit -F path=/usr/bin/chage {{{ perm_x }}}-F auid>={{{ auid }}} -F auid!=unset -F key=privileged
- If the auditd daemon is configured to use the auditctl - utility to read audit rules during daemon startup, add a line of the following - form to /etc/audit/audit.rules: --
-a always,exit -F path=/usr/bin/chage -F auid>={{{ auid }}} -F auid!=unset -F key=privileged
-+
-a always,exit -F path=/usr/bin/chage {{{ perm_x }}}-F auid>={{{ auid }}} -F auid!=unset -F key=privileged
- - rationale: |- - Misuse of privileged functions, either intentionally or unintentionally by -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_chsh/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_chsh/rule.yml -index 3ca968a543..8cc2b236a9 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_chsh/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_chsh/rule.yml -@@ -1,3 +1,7 @@ -+{{%- if product in ["rhel8", "rhel9", "sle12", "sle15"] %}} -+ {{%- set perm_x="-F perm=x " %}} -+{{%- endif %}} -+ - documentation_complete: true - - prodtype: fedora,ol7,ol8,rhcos4,rhel7,rhel8,rhel9,rhv4,sle12,sle15,ubuntu2004,wrlinux1019 -@@ -10,11 +14,11 @@ description: |- - configured to use the augenrules program to read audit rules during - daemon startup (the default), add a line of the following form to a file with - suffix .rules in the directory /etc/audit/rules.d: --
-a always,exit -F path=/usr/bin/chsh -F auid>={{{ auid }}} -F auid!=unset -F key=privileged
-+
-a always,exit -F path=/usr/bin/chsh {{{ perm_x }}}-F auid>={{{ auid }}} -F auid!=unset -F key=privileged
- If the auditd daemon is configured to use the auditctl - utility to read audit rules during daemon startup, add a line of the following - form to /etc/audit/audit.rules: --
-a always,exit -F path=/usr/bin/chsh -F auid>={{{ auid }}} -F auid!=unset -F key=privileged
-+
-a always,exit -F path=/usr/bin/chsh {{{ perm_x }}}-F auid>={{{ auid }}} -F auid!=unset -F key=privileged
- - rationale: |- - Misuse of privileged functions, either intentionally or unintentionally by -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_crontab/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_crontab/rule.yml -index 7c5058c7f8..86633fb606 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_crontab/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_crontab/rule.yml -@@ -1,3 +1,7 @@ -+{{%- if product in ["rhel8", "rhel9", "sle12", "sle15"] %}} -+ {{%- set perm_x="-F perm=x " %}} -+{{%- endif %}} -+ - documentation_complete: true - - prodtype: fedora,ol7,ol8,rhcos4,rhel7,rhel8,rhel9,rhv4,sle12,sle15,ubuntu2004,wrlinux1019 -@@ -10,11 +14,11 @@ description: |- - configured to use the augenrules program to read audit rules during - daemon startup (the default), add a line of the following form to a file with - suffix .rules in the directory /etc/audit/rules.d: --
-a always,exit -F path=/usr/bin/crontab -F auid>={{{ auid }}} -F auid!=unset -F key=privileged
-+
-a always,exit -F path=/usr/bin/crontab {{{ perm_x }}}-F auid>={{{ auid }}} -F auid!=unset -F key=privileged
- If the auditd daemon is configured to use the auditctl - utility to read audit rules during daemon startup, add a line of the following - form to /etc/audit/audit.rules: --
-a always,exit -F path=/usr/bin/crontab -F auid>={{{ auid }}} -F auid!=unset -F key=privileged
-+
-a always,exit -F path=/usr/bin/crontab {{{ perm_x }}}-F auid>={{{ auid }}} -F auid!=unset -F key=privileged
- - rationale: |- - Misuse of privileged functions, either intentionally or unintentionally by -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_gpasswd/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_gpasswd/rule.yml -index 0c7bf84268..ac5bfb2cc5 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_gpasswd/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_gpasswd/rule.yml -@@ -1,3 +1,7 @@ -+{{%- if product in ["rhel8", "rhel9", "sle12", "sle15"] %}} -+ {{%- set perm_x="-F perm=x " %}} -+{{%- endif %}} -+ - documentation_complete: true - - prodtype: fedora,ol7,ol8,rhcos4,rhel7,rhel8,rhel9,rhv4,sle12,sle15,ubuntu2004,wrlinux1019 -@@ -10,11 +14,11 @@ description: |- - configured to use the augenrules program to read audit rules during - daemon startup (the default), add a line of the following form to a file with - suffix .rules in the directory /etc/audit/rules.d: --
-a always,exit -F path=/usr/bin/gpasswd -F auid>={{{ auid }}} -F auid!=unset -F key=privileged
-+
-a always,exit -F path=/usr/bin/gpasswd {{{ perm_x }}}-F auid>={{{ auid }}} -F auid!=unset -F key=privileged
- If the auditd daemon is configured to use the auditctl - utility to read audit rules during daemon startup, add a line of the following - form to /etc/audit/audit.rules: --
-a always,exit -F path=/usr/bin/gpasswd -F auid>={{{ auid }}} -F auid!=unset -F key=privileged
-+
-a always,exit -F path=/usr/bin/gpasswd {{{ perm_x }}}-F auid>={{{ auid }}} -F auid!=unset -F key=privileged
- - rationale: |- - Misuse of privileged functions, either intentionally or unintentionally by -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_kmod/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_kmod/rule.yml -index 851dd5aa3d..b469e42bbb 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_kmod/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_kmod/rule.yml -@@ -1,3 +1,11 @@ -+{{%- if product in ["rhel8"] %}} -+ {{%- set kmod_audit="-a always,exit -F path=/usr/bin/kmod -F perm=x -F auid>=1000 -F auid!=unset -F key=privileged" %}} -+{{%- elif product in ["ubuntu2004"] %}} -+ {{%- set kmod_audit="-w /bin/kmod -p x -k modules" %}} -+{{%- else %}} -+ {{%- set kmod_audit="-w /usr/bin/kmod -p x -k modules" %}} -+{{%- endif %}} -+ - documentation_complete: true - - prodtype: rhel8,sle12,sle15,ubuntu2004 -@@ -10,11 +18,11 @@ description: |- - configured to use the augenrules program to read audit rules during - daemon startup (the default), add a line of the following form to a file with - suffix .rules in the directory /etc/audit/rules.d: --
-w /usr/bin/kmod -p x -k modules
-+
{{{ kmod_audit }}}
- If the auditd daemon is configured to use the auditctl - utility to read audit rules during daemon startup, add a line of the following - form to /etc/audit/audit.rules: --
-w /usr/bin/kmod -p x -k modules
-+
{{{ kmod_audit }}}
- - rationale: |- - Without generating audit records that are specific to the security and -@@ -48,7 +56,7 @@ ocil: |- - following command: - -
# sudo grep kmod /etc/audit/audit.rules
--    -w /usr/bin/kmod -p x -k modules
-+ {{{ kmod_audit }}} - - If the system is configured to audit the execution of the module management - program "kmod", the command will return a line. If the command does not -@@ -60,3 +68,4 @@ template: - name: audit_rules_privileged_commands - vars: - path: /usr/bin/kmod -+ path@ubuntu2004: /bin/kmod -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_mount/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_mount/rule.yml -index cc423c4146..56bd72b670 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_mount/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_mount/rule.yml -@@ -1,3 +1,7 @@ -+{{%- if product in ["rhel8", "rhel9", "sle12", "sle15"] %}} -+ {{%- set perm_x="-F perm=x " %}} -+{{%- endif %}} -+ - documentation_complete: true - - prodtype: fedora,ol7,ol8,rhcos4,rhel7,rhel8,rhel9,sle12,sle15,ubuntu2004 -@@ -10,11 +14,11 @@ description: |- - configured to use the augenrules program to read audit rules during - daemon startup (the default), add a line of the following form to a file with - suffix .rules in the directory /etc/audit/rules.d: --
-a always,exit -F path=/usr/bin/mount -F auid>={{{ auid }}} -F auid!=unset -F key=privileged
-+
-a always,exit -F path=/usr/bin/mount {{{ perm_x }}}-F auid>={{{ auid }}} -F auid!=unset -F key=privileged
- If the auditd daemon is configured to use the auditctl - utility to read audit rules during daemon startup, add a line of the following - form to /etc/audit/audit.rules: --
-a always,exit -F path=/usr/bin/mount -F auid>={{{ auid }}} -F auid!=unset -F key=privileged
-+
-a always,exit -F path=/usr/bin/mount {{{ perm_x }}}-F auid>={{{ auid }}} -F auid!=unset -F key=privileged
- - rationale: |- - Misuse of privileged functions, either intentionally or unintentionally by -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_newgrp/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_newgrp/rule.yml -index edbb41f3d8..4c14ea509c 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_newgrp/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_newgrp/rule.yml -@@ -1,3 +1,7 @@ -+{{%- if product in ["rhel8", "rhel9", "sle12", "sle15"] %}} -+ {{%- set perm_x="-F perm=x " %}} -+{{%- endif %}} -+ - documentation_complete: true - - prodtype: fedora,ol7,ol8,rhcos4,rhel7,rhel8,rhel9,rhv4,sle12,sle15,ubuntu2004 -@@ -10,11 +14,11 @@ description: |- - configured to use the augenrules program to read audit rules during - daemon startup (the default), add a line of the following form to a file with - suffix .rules in the directory /etc/audit/rules.d: --
-a always,exit -F path=/usr/bin/newgrp -F auid>={{{ auid }}} -F auid!=unset -F key=privileged
-+
-a always,exit -F path=/usr/bin/newgrp {{{ perm_x }}}-F auid>={{{ auid }}} -F auid!=unset -F key=privileged
- If the auditd daemon is configured to use the auditctl - utility to read audit rules during daemon startup, add a line of the following - form to /etc/audit/audit.rules: --
-a always,exit -F path=/usr/bin/newgrp -F auid>={{{ auid }}} -F auid!=unset -F key=privileged
-+
-a always,exit -F path=/usr/bin/newgrp {{{ perm_x }}}-F auid>={{{ auid }}} -F auid!=unset -F key=privileged
- - rationale: |- - Misuse of privileged functions, either intentionally or unintentionally by -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_pam_timestamp_check/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_pam_timestamp_check/rule.yml -index f5a3a4be02..c34eeb54c4 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_pam_timestamp_check/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_pam_timestamp_check/rule.yml -@@ -1,8 +1,7 @@ --documentation_complete: true - --prodtype: ol7,ol8,rhcos4,rhel7,rhel8,rhel9,rhv4,sle12,sle15,ubuntu2004,wrlinux1019 -- --title: 'Ensure auditd Collects Information on the Use of Privileged Commands - pam_timestamp_check' -+{{%- if product in ["rhel8", "rhel9", "sle12", "sle15"] %}} -+ {{%- set perm_x="-F perm=x " %}} -+{{%- endif %}} - - {{% if product in ["sle12", "sle15"] %}} - {{% set pam_bin_path = "/sbin/pam_timestamp_check" %}} -@@ -10,6 +9,12 @@ title: 'Ensure auditd Collects Information on the Use of Privileged Commands - p - {{% set pam_bin_path = "/usr/sbin/pam_timestamp_check" %}} - {{% endif %}} - -+documentation_complete: true -+ -+prodtype: ol7,ol8,rhcos4,rhel7,rhel8,rhel9,rhv4,sle12,sle15,ubuntu2004,wrlinux1019 -+ -+title: 'Ensure auditd Collects Information on the Use of Privileged Commands - pam_timestamp_check' -+ - description: |- - At a minimum, the audit system should collect the execution of - privileged commands for all users and root. If the auditd daemon is -@@ -17,12 +22,12 @@ description: |- - daemon startup (the default), add a line of the following form to a file with - suffix .rules in the directory /etc/audit/rules.d: -
-a always,exit -F path={{{ pam_bin_path }}}
--    -F auid>={{{ auid }}} -F auid!=unset -F key=privileged
-+ {{{ perm_x }}}-F auid>={{{ auid }}} -F auid!=unset -F key=privileged - If the auditd daemon is configured to use the auditctl - utility to read audit rules during daemon startup, add a line of the following - form to /etc/audit/audit.rules: -
-a always,exit -F path={{{ pam_bin_path }}}
--    -F auid>={{{ auid }}} -F auid!=unset -F key=privileged
-+ {{{ perm_x }}}-F auid>={{{ auid }}} -F auid!=unset -F key=privileged - - rationale: |- - Misuse of privileged functions, either intentionally or unintentionally by -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_passwd/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_passwd/rule.yml -index 60660a1314..2af86f5042 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_passwd/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_passwd/rule.yml -@@ -1,3 +1,7 @@ -+{{%- if product in ["rhel8", "rhel9", "sle12", "sle15"] %}} -+ {{%- set perm_x="-F perm=x " %}} -+{{%- endif %}} -+ - documentation_complete: true - - prodtype: fedora,ol7,ol8,rhcos4,rhel7,rhel8,rhel9,rhv4,sle12,sle15,ubuntu2004,wrlinux1019 -@@ -10,11 +14,11 @@ description: |- - configured to use the augenrules program to read audit rules during - daemon startup (the default), add a line of the following form to a file with - suffix .rules in the directory /etc/audit/rules.d: --
-a always,exit -F path=/usr/bin/passwd -F auid>={{{ auid }}} -F auid!=unset -F key=privileged
-+
-a always,exit -F path=/usr/bin/passwd {{{ perm_x }}}-F auid>={{{ auid }}} -F auid!=unset -F key=privileged
- If the auditd daemon is configured to use the auditctl - utility to read audit rules during daemon startup, add a line of the following - form to /etc/audit/audit.rules: --
-a always,exit -F path=/usr/bin/passwd -F auid>={{{ auid }}} -F auid!=unset -F key=privileged
-+
-a always,exit -F path=/usr/bin/passwd {{{ perm_x }}}-F auid>={{{ auid }}} -F auid!=unset -F key=privileged
- - rationale: |- - Misuse of privileged functions, either intentionally or unintentionally by -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_postdrop/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_postdrop/rule.yml -index 8f90c9c211..9509216e8f 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_postdrop/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_postdrop/rule.yml -@@ -1,3 +1,7 @@ -+{{%- if product in ["rhel8", "rhel9"] %}} -+ {{%- set perm_x="-F perm=x " %}} -+{{%- endif %}} -+ - documentation_complete: true - - prodtype: ol7,ol8,rhcos4,rhel7,rhel8,rhel9,rhv4,ubuntu2004,wrlinux1019 -@@ -10,11 +14,11 @@ description: |- - configured to use the augenrules program to read audit rules during - daemon startup (the default), add a line of the following form to a file with - suffix .rules in the directory /etc/audit/rules.d: --
-a always,exit -F path=/usr/sbin/postdrop -F auid>={{{ auid }}} -F auid!=unset -F key=privileged
-+
-a always,exit -F path=/usr/sbin/postdrop {{{ perm_x }}}-F auid>={{{ auid }}} -F auid!=unset -F key=privileged
- If the auditd daemon is configured to use the auditctl - utility to read audit rules during daemon startup, add a line of the following - form to /etc/audit/audit.rules: --
-a always,exit -F path=/usr/sbin/postdrop -F auid>={{{ auid }}} -F auid!=unset -F key=privileged
-+
-a always,exit -F path=/usr/sbin/postdrop {{{ perm_x }}}-F auid>={{{ auid }}} -F auid!=unset -F key=privileged
- - rationale: |- - Misuse of privileged functions, either intentionally or unintentionally by -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_postqueue/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_postqueue/rule.yml -index e913e83a0b..c5d1a82cc7 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_postqueue/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_postqueue/rule.yml -@@ -1,3 +1,7 @@ -+{{%- if product in ["rhel8", "rhel9"] %}} -+ {{%- set perm_x="-F perm=x " %}} -+{{%- endif %}} -+ - documentation_complete: true - - prodtype: ol7,ol8,rhcos4,rhel7,rhel8,rhel9,rhv4,ubuntu2004,wrlinux1019 -@@ -10,11 +14,11 @@ description: |- - configured to use the augenrules program to read audit rules during - daemon startup (the default), add a line of the following form to a file with - suffix .rules in the directory /etc/audit/rules.d: --
-a always,exit -F path=/usr/sbin/postqueue -F auid>={{{ auid }}} -F auid!=unset -F key=privileged
-+
-a always,exit -F path=/usr/sbin/postqueue {{{ perm_x }}}-F auid>={{{ auid }}} -F auid!=unset -F key=privileged
- If the auditd daemon is configured to use the auditctl - utility to read audit rules during daemon startup, add a line of the following - form to /etc/audit/audit.rules: --
-a always,exit -F path=/usr/sbin/postqueue -F auid>={{{ auid }}} -F auid!=unset -F key=privileged
-+
-a always,exit -F path=/usr/sbin/postqueue {{{ perm_x }}}-F auid>={{{ auid }}} -F auid!=unset -F key=privileged
- - rationale: |- - Misuse of privileged functions, either intentionally or unintentionally by -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_ssh_keysign/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_ssh_keysign/rule.yml -index 5c39013572..604cbcda85 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_ssh_keysign/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_ssh_keysign/rule.yml -@@ -1,3 +1,13 @@ -+{{%- if product in ["rhel8", "rhel9", "sle12", "sle15"] %}} -+ {{%- set perm_x="-F perm=x " %}} -+{{%- endif %}} -+ -+{{%- if product in ["sle12", "sle15"] %}} -+ {{%- set ssh_keysign_path="/usr/lib/ssh/ssh-keysign" %}} -+{{%- else %}} -+ {{%- set ssh_keysign_path="/usr/libexec/openssh/ssh-keysign" %}} -+{{%- endif %}} -+ - documentation_complete: true - - prodtype: fedora,ol7,ol8,rhcos4,rhel7,rhel8,rhel9,rhv4,sle12,sle15,ubuntu2004,wrlinux1019 -@@ -10,15 +20,11 @@ description: |- - configured to use the augenrules program to read audit rules during - daemon startup (the default), add a line of the following form to a file with - suffix .rules in the directory /etc/audit/rules.d: --
-a always,exit -F path={{% if product in ["sle12", "sle15"] %}}/usr/lib/ssh/ssh-keysign
--    {{% else %}}/usr/libexec/openssh/ssh-keysign{{% endif %}} -F auid>={{{ auid }}} 
--    -F auid!=unset -F key=privileged
-+
-a always,exit -F path={{{ ssh_keysign_path }}} {{{ perm_x }}}-F auid>={{{ auid }}} -F auid!=unset -F key=privileged
- If the auditd daemon is configured to use the auditctl - utility to read audit rules during daemon startup, add a line of the following - form to /etc/audit/audit.rules: --
-a always,exit -F path={{% if product in ["sle12", "sle15"] %}}/usr/lib/ssh/ssh-keysign
--    {{% else %}}/usr/libexec/openssh/ssh-keysign{{% endif %}}
--    -F auid>={{{ auid }}} -F auid!=unset -F key=privileged
-+
-a always,exit -F path={{{ ssh_keysign_path }}} {{{ perm_x }}}-F auid>={{{ auid }}} -F auid!=unset -F key=privileged
- - rationale: |- - Misuse of privileged functions, either intentionally or unintentionally by -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_su/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_su/rule.yml -index 99e09ab4e3..87a81ee0c4 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_su/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_su/rule.yml -@@ -1,3 +1,7 @@ -+{{%- if product in ["rhel8", "rhel9", "sle12", "sle15"] %}} -+ {{%- set perm_x="-F perm=x " %}} -+{{%- endif %}} -+ - documentation_complete: true - - prodtype: fedora,ol7,ol8,rhcos4,rhel7,rhel8,rhel9,rhv4,sle12,sle15,ubuntu2004,wrlinux1019 -@@ -10,11 +14,11 @@ description: |- - configured to use the augenrules program to read audit rules during - daemon startup (the default), add a line of the following form to a file with - suffix .rules in the directory /etc/audit/rules.d: --
-a always,exit -F path=/usr/bin/su -F auid>={{{ auid }}} -F auid!=unset -F key=privileged
-+
-a always,exit -F path=/usr/bin/su {{{ perm_x }}}-F auid>={{{ auid }}} -F auid!=unset -F key=privileged
- If the auditd daemon is configured to use the auditctl - utility to read audit rules during daemon startup, add a line of the following - form to /etc/audit/audit.rules: --
-a always,exit -F path=/usr/bin/su -F auid>={{{ auid }}} -F auid!=unset -F key=privileged
-+
-a always,exit -F path=/usr/bin/su {{{ perm_x }}}-F auid>={{{ auid }}} -F auid!=unset -F key=privileged
- - rationale: |- - Misuse of privileged functions, either intentionally or unintentionally by -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_sudo/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_sudo/rule.yml -index aac859c4b1..e989091836 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_sudo/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_sudo/rule.yml -@@ -1,3 +1,7 @@ -+{{%- if product in ["rhel8", "rhel9", "sle12", "sle15"] %}} -+ {{%- set perm_x="-F perm=x " %}} -+{{%- endif %}} -+ - documentation_complete: true - - prodtype: fedora,ol7,ol8,rhcos4,rhel7,rhel8,rhel9,rhv4,sle12,sle15,ubuntu2004,wrlinux1019 -@@ -10,11 +14,11 @@ description: |- - configured to use the augenrules program to read audit rules during - daemon startup (the default), add a line of the following form to a file with - suffix .rules in the directory /etc/audit/rules.d: --
-a always,exit -F path=/usr/bin/sudo -F auid>={{{ auid }}} -F auid!=unset -F key=privileged
-+
-a always,exit -F path=/usr/bin/sudo {{{ perm_x }}}-F auid>={{{ auid }}} -F auid!=unset -F key=privileged
- If the auditd daemon is configured to use the auditctl - utility to read audit rules during daemon startup, add a line of the following - form to /etc/audit/audit.rules: --
-a always,exit -F path=/usr/bin/sudo -F auid>={{{ auid }}} -F auid!=unset -F key=privileged
-+
-a always,exit -F path=/usr/bin/sudo {{{ perm_x }}}-F auid>={{{ auid }}} -F auid!=unset -F key=privileged
- - rationale: |- - Misuse of privileged functions, either intentionally or unintentionally by -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_umount/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_umount/rule.yml -index 061b5c28a7..5d47508bb9 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_umount/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_umount/rule.yml -@@ -1,3 +1,7 @@ -+{{%- if product in ["rhel8", "rhel9", "sle12", "sle15"] %}} -+ {{%- set perm_x="-F perm=x " %}} -+{{%- endif %}} -+ - documentation_complete: true - - prodtype: fedora,ol7,ol8,rhcos4,rhel7,rhel8,rhel9,rhv4,sle12,sle15,ubuntu2004,wrlinux1019 -@@ -10,11 +14,11 @@ description: |- - configured to use the augenrules program to read audit rules during - daemon startup (the default), add a line of the following form to a file with - suffix .rules in the directory /etc/audit/rules.d: --
-a always,exit -F path=/usr/bin/umount -F auid>={{{ auid }}} -F auid!=unset -F key=privileged
-+
-a always,exit -F path=/usr/bin/umount {{{ perm_x }}}-F auid>={{{ auid }}} -F auid!=unset -F key=privileged
- If the auditd daemon is configured to use the auditctl - utility to read audit rules during daemon startup, add a line of the following - form to /etc/audit/audit.rules: --
-a always,exit -F path=/usr/bin/umount -F auid>={{{ auid }}} -F auid!=unset -F key=privileged
-+
-a always,exit -F path=/usr/bin/umount {{{ perm_x }}}-F auid>={{{ auid }}} -F auid!=unset -F key=privileged
- - rationale: |- - Misuse of privileged functions, either intentionally or unintentionally by -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_unix_chkpwd/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_unix_chkpwd/rule.yml -index 41a6123f5b..5be7f486c6 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_unix_chkpwd/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_unix_chkpwd/rule.yml -@@ -1,3 +1,7 @@ -+{{%- if product in ["rhel8", "rhel9", "sle12", "sle15"] %}} -+ {{%- set perm_x="-F perm=x " %}} -+{{%- endif %}} -+ - documentation_complete: true - - prodtype: fedora,ol7,ol8,rhcos4,rhel7,rhel8,rhel9,rhv4,sle12,sle15,ubuntu2004,wrlinux1019 -@@ -10,11 +14,11 @@ description: |- - configured to use the augenrules program to read audit rules during - daemon startup (the default), add a line of the following form to a file with - suffix .rules in the directory /etc/audit/rules.d: --
-a always,exit -F path=/usr/sbin/unix_chkpwd -F auid>={{{ auid }}} -F auid!=unset -F key=privileged
-+
-a always,exit -F path=/usr/sbin/unix_chkpwd {{{ perm_x }}}-F auid>={{{ auid }}} -F auid!=unset -F key=privileged
- If the auditd daemon is configured to use the auditctl - utility to read audit rules during daemon startup, add a line of the following - form to /etc/audit/audit.rules: --
-a always,exit -F path=/usr/sbin/unix_chkpwd -F auid>={{{ auid }}} -F auid!=unset -F key=privileged
-+
-a always,exit -F path=/usr/sbin/unix_chkpwd {{{ perm_x }}}-F auid>={{{ auid }}} -F auid!=unset -F key=privileged
- - rationale: |- - Misuse of privileged functions, either intentionally or unintentionally by -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_userhelper/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_userhelper/rule.yml -index de8bab633a..6dccc80692 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_userhelper/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_userhelper/rule.yml -@@ -1,3 +1,7 @@ -+{{%- if product in ["rhel8", "rhel9"] %}} -+ {{%- set perm_x="-F perm=x " %}} -+{{%- endif %}} -+ - documentation_complete: true - - prodtype: fedora,ol7,ol8,rhcos4,rhel7,rhel8,rhel9,rhv4 -@@ -10,11 +14,11 @@ description: |- - configured to use the augenrules program to read audit rules during - daemon startup (the default), add a line of the following form to a file with - suffix .rules in the directory /etc/audit/rules.d: --
-a always,exit -F path=/usr/sbin/userhelper -F auid>={{{ auid }}} -F auid!=unset -F key=privileged
-+
-a always,exit -F path=/usr/sbin/userhelper {{{ perm_x }}}-F auid>={{{ auid }}} -F auid!=unset -F key=privileged
- If the auditd daemon is configured to use the auditctl - utility to read audit rules during daemon startup, add a line of the following - form to /etc/audit/audit.rules: --
-a always,exit -F path=/usr/sbin/userhelper -F auid>={{{ auid }}} -F auid!=unset -F key=privileged
-+
-a always,exit -F path=/usr/sbin/userhelper {{{ perm_x }}}-F auid>={{{ auid }}} -F auid!=unset -F key=privileged
- - rationale: |- - Misuse of privileged functions, either intentionally or unintentionally by -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_usermod/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_usermod/rule.yml -index 288d3c3bf2..7089016151 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_usermod/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_privileged_commands/audit_rules_privileged_commands_usermod/rule.yml -@@ -10,19 +10,11 @@ description: |- - configured to use the augenrules program to read audit rules during - daemon startup (the default), add a line of the following form to a file with - suffix .rules in the directory /etc/audit/rules.d: -- {{% if 'ubuntu' in product %}} -
-a always,exit -F path=/usr/sbin/usermod -F perm=x -F auid>={{{ auid }}} -F auid!=unset -F key=privileged
-- {{% else %}} --
-a always,exit -F path=/usr/bin/usermod -F perm=x -F auid>={{{ auid }}} -F auid!=unset -F key=privileged
-- {{% endif %}} - If the auditd daemon is configured to use the auditctl - utility to read audit rules during daemon startup, add a line of the following - form to /etc/audit/audit.rules: -- {{% if 'ubuntu' in product %}} -
-a always,exit -F path=/usr/sbin/usermod -F perm=x -F auid>={{{ auid }}} -F auid!=unset -F key=privileged
-- {{% else %}} --
-a always,exit -F path=/usr/bin/usermod -F perm=x -F auid>={{{ auid }}} -F auid!=unset -F key=privileged
-- {{% endif %}} - - rationale: |- - Misuse of privileged functions, either intentionally or unintentionally by -@@ -63,7 +55,4 @@ ocil: |- - template: - name: audit_rules_privileged_commands - vars: -- path: /usr/bin/usermod -- path@ubuntu1604: /usr/sbin/usermod -- path@ubuntu1804: /usr/sbin/usermod -- path@ubuntu2004: /usr/sbin/usermod -+ path: /usr/sbin/usermod -diff --git a/shared/templates/audit_rules_privileged_commands/ansible.template b/shared/templates/audit_rules_privileged_commands/ansible.template -index a245de6673..06154e10ce 100644 ---- a/shared/templates/audit_rules_privileged_commands/ansible.template -+++ b/shared/templates/audit_rules_privileged_commands/ansible.template -@@ -1,4 +1,4 @@ --{{%- if product in ["rhel8", "sle12", "sle15"] %}} -+{{%- if product in ["rhel8", "rhel9", "sle12", "sle15"] %}} - {{%- set perm_x="-F perm=x " %}} - {{%- endif %}} - # platform = multi_platform_rhel,multi_platform_fedora,multi_platform_ol,multi_platform_rhv,multi_platform_sle -diff --git a/shared/templates/audit_rules_privileged_commands/bash.template b/shared/templates/audit_rules_privileged_commands/bash.template -index 2b3795674f..d03a92061c 100644 ---- a/shared/templates/audit_rules_privileged_commands/bash.template -+++ b/shared/templates/audit_rules_privileged_commands/bash.template -@@ -1,4 +1,4 @@ --{{%- if product in ["rhel8", "sle12", "sle15"] %}} -+{{%- if product in ["rhel8", "rhel9", "sle12", "sle15"] %}} - {{%- set perm_x="-F perm=x " %}} - {{%- endif %}} - # platform = multi_platform_rhel,multi_platform_fedora,multi_platform_ol,multi_platform_rhv -diff --git a/shared/templates/audit_rules_privileged_commands/oval.template b/shared/templates/audit_rules_privileged_commands/oval.template -index 8e3919ca66..c3d396e2ff 100644 ---- a/shared/templates/audit_rules_privileged_commands/oval.template -+++ b/shared/templates/audit_rules_privileged_commands/oval.template -@@ -1,4 +1,4 @@ --{{%- if product in ["rhel8", "sle12", "sle15"] %}} -+{{%- if product in ["rhel8", "rhel9", "sle12", "sle15"] %}} - {{%- set perm_x="(?:[\s]+-F[\s]+perm=x)" %}} - {{%- endif %}} - - -From fd801e1fd36a0e6724c043de2dbc75567738edfa Mon Sep 17 00:00:00 2001 -From: Gabriel Becker -Date: Wed, 4 Aug 2021 15:57:08 +0200 -Subject: [PATCH 18/21] Update SRG mapping of chronyd_or_ntpd_set_maxpoll. - ---- - .../guide/services/ntp/chronyd_or_ntpd_set_maxpoll/rule.yml | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/rule.yml b/linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/rule.yml -index 4827cf1359..854e8e8048 100644 ---- a/linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/rule.yml -+++ b/linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/rule.yml -@@ -90,7 +90,7 @@ references: - nist: CM-6(a),AU-8(1)(b) - nist-csf: PR.PT-1 - nist@sle12: AU-8(1)(a),AU-8(1)(b) -- srg: 'SRG-OS-000355-GPOS-00143,SRG-OS-000356-GPOS-00144' -+ srg: SRG-OS-000355-GPOS-00143,SRG-OS-000356-GPOS-00144,SRG-OS-000359-GPOS-00146 - stigid@ol7: OL07-00-040500 - stigid@rhel7: RHEL-07-040500 - stigid@rhel8: RHEL-08-030740 - -From 4a79ec12860e768e650bb7fd0962334d1c70223a Mon Sep 17 00:00:00 2001 -From: Gabriel Becker -Date: Wed, 4 Aug 2021 15:58:47 +0200 -Subject: [PATCH 19/21] Remove SUSE keyword verbiage from rules. - ---- - .../accounts/accounts-restrictions/account_unique_id/rule.yml | 4 ++-- - .../audit_rules_login_events_faillog/rule.yml | 2 +- - 2 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/linux_os/guide/system/accounts/accounts-restrictions/account_unique_id/rule.yml b/linux_os/guide/system/accounts/accounts-restrictions/account_unique_id/rule.yml -index e55901dbdc..5cfdf48dba 100644 ---- a/linux_os/guide/system/accounts/accounts-restrictions/account_unique_id/rule.yml -+++ b/linux_os/guide/system/accounts/accounts-restrictions/account_unique_id/rule.yml -@@ -32,8 +32,8 @@ ocil_clause: 'a line is returned' - - ocil: |- - Run the following command to check for duplicate account names: -- Check that the SUSE operating system contains no duplicate UIDs for interactive users by running the following command: -+ Check that the operating system contains no duplicate UIDs for interactive users by running the following command: -
# awk -F ":" 'list[$3]++{print $1, $3}' /etc/passwd
- If output is produced, this is a finding. -- Configure the SUSE operating system to contain no duplicate UIDs for interactive users. -+ Configure the operating system to contain no duplicate UIDs for interactive users. - Edit the file "/etc/passwd" and provide each interactive user account that has a duplicate UID with a unique UID. -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_login_events/audit_rules_login_events_faillog/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_login_events/audit_rules_login_events_faillog/rule.yml -index 7a6d748ffe..97d6874e98 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_login_events/audit_rules_login_events_faillog/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_login_events/audit_rules_login_events_faillog/rule.yml -@@ -39,7 +39,7 @@ ocil_clause: 'there is no output' - - ocil: |- - To verify that auditing is configured for system administrator actions, run the following command: -- Configure the SUSE operating system to generate an audit record for any all modifications to the "faillog" file occur. -+ Configure the operating system to generate an audit record for any all modifications to the "faillog" file occur. - Add or update the following rules in the "/etc/audit/audit.rules" file: - -w /var/log/faillog -p wa -k logins - The audit daemon must be restarted for the changes to take effect. - -From 9122c246c124e26e1e059455ff66b9efa6601eeb Mon Sep 17 00:00:00 2001 -From: Gabriel Becker -Date: Thu, 5 Aug 2021 14:39:13 +0200 -Subject: [PATCH 20/21] Enable check_root_user for RHEL9 in audit rules dac. - ---- - .../audit_rules_dac_modification_fremovexattr/rule.yml | 9 +++++---- - .../audit_rules_dac_modification_fsetxattr/rule.yml | 9 +++++---- - .../audit_rules_dac_modification_lremovexattr/rule.yml | 1 + - .../audit_rules_dac_modification_lsetxattr/rule.yml | 9 +++++---- - .../audit_rules_dac_modification_removexattr/rule.yml | 9 +++++---- - .../audit_rules_dac_modification_setxattr/rule.yml | 9 +++++---- - 6 files changed, 26 insertions(+), 20 deletions(-) - -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fremovexattr/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fremovexattr/rule.yml -index d46968da8f..5bd1b25eaf 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fremovexattr/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fremovexattr/rule.yml -@@ -11,13 +11,13 @@ description: |- - startup (the default), add the following line to a file with suffix - .rules in the directory /etc/audit/rules.d: -
-a always,exit -F arch=b32 -S fremovexattr -F auid>={{{ auid }}} -F auid!=unset -F key=perm_mod
--{{%- if product in ["rhel8"] %}} -+{{%- if product in ["rhel8", "rhel9"] %}} -
-a always,exit -F arch=b32 -S fremovexattr -F auid=0 -F key=perm_mod
- {{%- endif %}} -

- If the system is 64 bit then also add the following line: -
-a always,exit -F arch=b64 -S fremovexattr -F auid>={{{ auid }}} -F auid!=unset -F key=perm_mod
--{{%- if product in ["rhel8"] %}} -+{{%- if product in ["rhel8", "rhel9"] %}} -
-a always,exit -F arch=b64 -S fremovexattr -F auid=0 -F key=perm_mod
- {{%- endif %}} -

-@@ -25,13 +25,13 @@ description: |- - utility to read audit rules during daemon startup, add the following line to - /etc/audit/audit.rules file: -
-a always,exit -F arch=b32 -S fremovexattr -F auid>={{{ auid }}} -F auid!=unset -F key=perm_mod
--{{%- if product in ["rhel8"] %}} -+{{%- if product in ["rhel8", "rhel9"] %}} -
-a always,exit -F arch=b32 -S fremovexattr -F auid=0 -F key=perm_mod
- {{%- endif %}} -

- If the system is 64 bit then also add the following line: -
-a always,exit -F arch=b64 -S fremovexattr -F auid>={{{ auid }}} -F auid!=unset -F key=perm_mod
--{{%- if product in ["rhel8"] %}} -+{{%- if product in ["rhel8", "rhel9"] %}} -
-a always,exit -F arch=b64 -S fremovexattr -F auid=0 -F key=perm_mod
- {{%- endif %}} - -@@ -92,3 +92,4 @@ template: - vars: - attr: fremovexattr - check_root_user@rhel8: "true" -+ check_root_user@rhel9: "true" -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fsetxattr/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fsetxattr/rule.yml -index 564daccaed..410dd8a5ef 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fsetxattr/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fsetxattr/rule.yml -@@ -9,24 +9,24 @@ description: |- - startup (the default), add the following line to a file with suffix - .rules in the directory /etc/audit/rules.d: -
-a always,exit -F arch=b32 -S fsetxattr -F auid>={{{ auid }}} -F auid!=unset -F key=perm_mod
--{{%- if product in ["rhel8"] %}} -+{{%- if product in ["rhel8", "rhel9"] %}} -
-a always,exit -F arch=b32 -S fsetxattr -F auid=0 -F key=perm_mod
- {{%- endif %}} - If the system is 64 bit then also add the following line: -
-a always,exit -F arch=b64 -S fsetxattr -F auid>={{{ auid }}} -F auid!=unset -F key=perm_mod
--{{%- if product in ["rhel8"] %}} -+{{%- if product in ["rhel8", "rhel9"] %}} -
-a always,exit -F arch=b64 -S fsetxattr -F auid=0 -F key=perm_mod
- {{%- endif %}} - If the auditd daemon is configured to use the auditctl - utility to read audit rules during daemon startup, add the following line to - /etc/audit/audit.rules file: -
-a always,exit -F arch=b32 -S fsetxattr -F auid>={{{ auid }}} -F auid!=unset -F key=perm_mod
--{{%- if product in ["rhel8"] %}} -+{{%- if product in ["rhel8", "rhel9"] %}} -
-a always,exit -F arch=b32 -S fsetxattr -F auid=0 -F key=perm_mod
- {{%- endif %}} - If the system is 64 bit then also add the following line: -
-a always,exit -F arch=b64 -S fsetxattr -F auid>={{{ auid }}} -F auid!=unset -F key=perm_mod
--{{%- if product in ["rhel8"] %}} -+{{%- if product in ["rhel8", "rhel9"] %}} -
-a always,exit -F arch=b64 -S fsetxattr -F auid=0 -F key=perm_mod
- {{%- endif %}} - -@@ -87,3 +87,4 @@ template: - vars: - attr: fsetxattr - check_root_user@rhel8: "true" -+ check_root_user@rhel9: "true" -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_lremovexattr/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_lremovexattr/rule.yml -index 2ae0f11c58..947c768efd 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_lremovexattr/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_lremovexattr/rule.yml -@@ -92,3 +92,4 @@ template: - vars: - attr: lremovexattr - check_root_user@rhel8: "true" -+ check_root_user@rhel9: "true" -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_lsetxattr/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_lsetxattr/rule.yml -index 945ad560d7..ed1fd3715d 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_lsetxattr/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_lsetxattr/rule.yml -@@ -9,24 +9,24 @@ description: |- - startup (the default), add the following line to a file with suffix - .rules in the directory /etc/audit/rules.d: -
-a always,exit -F arch=b32 -S lsetxattr -F auid>={{{ auid }}} -F auid!=unset -F key=perm_mod
--{{%- if product in ["rhel8"] %}} -+{{%- if product in ["rhel8", "rhel9"] %}} -
-a always,exit -F arch=b32 -S lsetxattr -F auid=0 -F key=perm_mod
- {{%- endif %}} - If the system is 64 bit then also add the following line: -
-a always,exit -F arch=b64 -S lsetxattr -F auid>={{{ auid }}} -F auid!=unset -F key=perm_mod
--{{%- if product in ["rhel8"] %}} -+{{%- if product in ["rhel8", "rhel9"] %}} -
-a always,exit -F arch=b64 -S lsetxattr -F auid=0 -F key=perm_mod
- {{%- endif %}} - If the auditd daemon is configured to use the auditctl - utility to read audit rules during daemon startup, add the following line to - /etc/audit/audit.rules file: -
-a always,exit -F arch=b32 -S lsetxattr -F auid>={{{ auid }}} -F auid!=unset -F key=perm_mod
--{{%- if product in ["rhel8"] %}} -+{{%- if product in ["rhel8", "rhel9"] %}} -
-a always,exit -F arch=b32 -S lsetxattr -F auid=0 -F key=perm_mod
- {{%- endif %}} - If the system is 64 bit then also add the following line: -
-a always,exit -F arch=b64 -S lsetxattr -F auid>={{{ auid }}} -F auid!=unset -F key=perm_mod
--{{%- if product in ["rhel8"] %}} -+{{%- if product in ["rhel8", "rhel9"] %}} -
-a always,exit -F arch=b64 -S lsetxattr -F auid=0 -F key=perm_mod
- {{%- endif %}} - -@@ -85,3 +85,4 @@ template: - vars: - attr: lsetxattr - check_root_user@rhel8: "true" -+ check_root_user@rhel9: "true" -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_removexattr/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_removexattr/rule.yml -index e6d7374b7f..61e69432d1 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_removexattr/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_removexattr/rule.yml -@@ -10,13 +10,13 @@ description: |- - program to read audit rules during daemon startup (the default), add the - following line to a file with suffix .rules in the directory /etc/audit/rules.d: -
-a always,exit -F arch=b32 -S removexattr -F auid>={{{ auid }}} -F auid!=unset -F key=perm_mod
--{{%- if product in ["rhel8"] %}} -+{{%- if product in ["rhel8", "rhel9"] %}} -
-a always,exit -F arch=b32 -S removexattr -F auid=0 -F key=perm_mod
- {{%- endif %}} -

- If the system is 64 bit then also add the following line: -
-a always,exit -F arch=b64 -S removexattr -F auid>={{{ auid }}} -F auid!=unset -F key=perm_mod
--{{%- if product in ["rhel8"] %}} -+{{%- if product in ["rhel8", "rhel9"] %}} -
-a always,exit -F arch=b64 -S removexattr -F auid=0 -F key=perm_mod
- {{%- endif %}} -

-@@ -24,13 +24,13 @@ description: |- - utility to read audit rules during daemon startup, add the following line to - /etc/audit/audit.rules file: -
-a always,exit -F arch=b32 -S removexattr -F auid>={{{ auid }}} -F auid!=unset -F key=perm_mod
--{{%- if product in ["rhel8"] %}} -+{{%- if product in ["rhel8", "rhel9"] %}} -
-a always,exit -F arch=b32 -S removexattr -F auid=0 -F key=perm_mod
- {{%- endif %}} -

- If the system is 64 bit then also add the following line: -
-a always,exit -F arch=b64 -S removexattr -F auid>={{{ auid }}} -F auid!=unset -F key=perm_mod
--{{%- if product in ["rhel8"] %}} -+{{%- if product in ["rhel8", "rhel9"] %}} -
-a always,exit -F arch=b64 -S removexattr -F auid=0 -F key=perm_mod
- {{%- endif %}} - -@@ -91,3 +91,4 @@ template: - vars: - attr: removexattr - check_root_user@rhel8: "true" -+ check_root_user@rhel9: "true" -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_setxattr/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_setxattr/rule.yml -index ab15167508..12489a74a0 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_setxattr/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_setxattr/rule.yml -@@ -9,24 +9,24 @@ description: |- - startup (the default), add the following line to a file with suffix - .rules in the directory /etc/audit/rules.d: -
-a always,exit -F arch=b32 -S setxattr -F auid>={{{ auid }}} -F auid!=unset -F key=perm_mod
--{{%- if product in ["rhel8"] %}} -+{{%- if product in ["rhel8", "rhel9"] %}} -
-a always,exit -F arch=b32 -S setxattr -F auid=0 -F key=perm_mod
- {{%- endif %}} - If the system is 64 bit then also add the following line: -
-a always,exit -F arch=b64 -S setxattr -F auid>={{{ auid }}} -F auid!=unset -F key=perm_mod
--{{%- if product in ["rhel8"] %}} -+{{%- if product in ["rhel8", "rhel9"] %}} -
-a always,exit -F arch=b64 -S setxattr -F auid=0 -F key=perm_mod
- {{%- endif %}} - If the auditd daemon is configured to use the auditctl - utility to read audit rules during daemon startup, add the following line to - /etc/audit/audit.rules file: -
-a always,exit -F arch=b32 -S setxattr -F auid>={{{ auid }}} -F auid!=unset -F key=perm_mod
--{{%- if product in ["rhel8"] %}} -+{{%- if product in ["rhel8", "rhel9"] %}} -
-a always,exit -F arch=b32 -S setxattr -F auid=0 -F key=perm_mod
- {{%- endif %}} - If the system is 64 bit then also add the following line: -
-a always,exit -F arch=b64 -S setxattr -F auid>={{{ auid }}} -F auid!=unset -F key=perm_mod
--{{%- if product in ["rhel8"] %}} -+{{%- if product in ["rhel8", "rhel9"] %}} -
-a always,exit -F arch=b64 -S setxattr -F auid=0 -F key=perm_mod
- {{%- endif %}} - -@@ -87,3 +87,4 @@ template: - vars: - attr: setxattr - check_root_user@rhel8: "true" -+ check_root_user@rhel9: "true" - -From 88e9061888f7fb5824e7e2c52e83edad6b432615 Mon Sep 17 00:00:00 2001 -From: Gabriel Becker -Date: Thu, 5 Aug 2021 15:53:17 +0200 -Subject: [PATCH 21/21] Fix check and remediations of auditd_overflow_action. - -The check was generating a new input to the auditd.conf file and without -spaces between the separator (equal sign). This caused auditd failing to -start since it's mandatory to have a space between the separator. It -also introduces case insensitivity for the check since the paramaters -and values are case insensitive. ---- - .../auditd_overflow_action/ansible/shared.yml | 6 +++--- - .../auditd_overflow_action/bash/shared.sh | 5 +++-- - .../auditd_overflow_action/oval/shared.xml | 6 +++--- - 3 files changed, 9 insertions(+), 8 deletions(-) - -diff --git a/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_overflow_action/ansible/shared.yml b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_overflow_action/ansible/shared.yml -index 4f88ed361d..166054a95a 100644 ---- a/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_overflow_action/ansible/shared.yml -+++ b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_overflow_action/ansible/shared.yml -@@ -3,6 +3,6 @@ - {{{ ansible_set_config_file(file="/etc/audit/auditd.conf", - parameter="overflow_action", - value="syslog", -- separator="=", -- separator_regex="=", -- prefix_regex="^\s*") }}} -+ separator=" = ", -+ separator_regex="\s*=\s*", -+ prefix_regex="(?i)^\s*") }}} -diff --git a/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_overflow_action/bash/shared.sh b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_overflow_action/bash/shared.sh -index 539b9b6582..b397c811d1 100644 ---- a/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_overflow_action/bash/shared.sh -+++ b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_overflow_action/bash/shared.sh -@@ -7,6 +7,7 @@ - {{{set_config_file(path="/etc/audit/auditd.conf", - parameter="overflow_action", - value="syslog", -- separator="=", -- separator_regex="=", -+ insensitive=true, -+ separator=" = ", -+ separator_regex="\s*=\s*", - prefix_regex="^\s*")}}} -diff --git a/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_overflow_action/oval/shared.xml b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_overflow_action/oval/shared.xml -index fd45280e4e..880d01bf72 100644 ---- a/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_overflow_action/oval/shared.xml -+++ b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_overflow_action/oval/shared.xml -@@ -1,6 +1,6 @@ - {{{ oval_check_config_file( - path="/etc/audit/auditd.conf", -- prefix_regex="^(?:.*\\n)*\s*", -+ prefix_regex="^[ \\t]*(?i)", - parameter="overflow_action", -- value="syslog|single|halt", -- separator_regex="\s*=\s*") }}} -+ value="(?i)(syslog|single|halt)(?-i)", -+ separator_regex="(?-i)[ \\t]*=[ \\t]*") }}} diff --git a/SOURCES/scap-security-guide-0.1.58-bios_enable_execution_restrictions_srg-PR_7284.patch b/SOURCES/scap-security-guide-0.1.58-bios_enable_execution_restrictions_srg-PR_7284.patch deleted file mode 100644 index 07bee80..0000000 --- a/SOURCES/scap-security-guide-0.1.58-bios_enable_execution_restrictions_srg-PR_7284.patch +++ /dev/null @@ -1,21 +0,0 @@ -From df11870dd23bc5ada56acd89610c6498cbc5bc35 Mon Sep 17 00:00:00 2001 -From: Milan Lysonek -Date: Mon, 26 Jul 2021 11:49:30 +0200 -Subject: [PATCH] Add bios_enable_execution_restrictions SRG reference - ---- - .../enable_nx/bios_enable_execution_restrictions/rule.yml | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/linux_os/guide/system/permissions/restrictions/enable_nx/bios_enable_execution_restrictions/rule.yml b/linux_os/guide/system/permissions/restrictions/enable_nx/bios_enable_execution_restrictions/rule.yml -index b037e374f5..99f2c739c9 100644 ---- a/linux_os/guide/system/permissions/restrictions/enable_nx/bios_enable_execution_restrictions/rule.yml -+++ b/linux_os/guide/system/permissions/restrictions/enable_nx/bios_enable_execution_restrictions/rule.yml -@@ -31,6 +31,7 @@ references: - iso27001-2013: A.12.1.2,A.12.5.1,A.12.6.2,A.14.2.2,A.14.2.3,A.14.2.4 - nist: SC-39,CM-6(a) - nist-csf: PR.IP-1 -+ srg: SRG-OS-000433-GPOS-00192 - stig@rhel8: RHEL-08-010420 - - platform: machine diff --git a/SOURCES/scap-security-guide-0.1.58-cis_rhel7_updates-PR_7384.patch b/SOURCES/scap-security-guide-0.1.58-cis_rhel7_updates-PR_7384.patch deleted file mode 100644 index c12c561..0000000 --- a/SOURCES/scap-security-guide-0.1.58-cis_rhel7_updates-PR_7384.patch +++ /dev/null @@ -1,139 +0,0 @@ -From 44976b5fda0f34e78a0a0764add645212bd4e26d Mon Sep 17 00:00:00 2001 -From: Vojtech Polasek -Date: Thu, 12 Aug 2021 11:08:56 +0200 -Subject: [PATCH 1/4] remove automated: yes for 1.1.6, rule is missing - ---- - controls/cis_rhel7.yml | 3 +-- - 1 file changed, 1 insertion(+), 2 deletions(-) - -diff --git a/controls/cis_rhel7.yml b/controls/cis_rhel7.yml -index 6a333693fb..7298158ad3 100644 ---- a/controls/cis_rhel7.yml -+++ b/controls/cis_rhel7.yml -@@ -95,8 +95,7 @@ controls: - levels: - - l1_server - - l1_workstation -- automated: yes --# rules: -+ automated: no # rule missing - - - id: 1.1.7 - title: Ensure noexec option set on /dev/shm partition (Automated) - -From 4dcbe4b2d4a9c14527edd06e90809630877d97aa Mon Sep 17 00:00:00 2001 -From: Vojtech Polasek -Date: Thu, 12 Aug 2021 11:21:20 +0200 -Subject: [PATCH 2/4] add rule for 3.5.1.5 - firewalld default zone - ---- - controls/cis_rhel7.yml | 4 +++- - .../ruleset_modifications/set_firewalld_default_zone/rule.yml | 1 + - 2 files changed, 4 insertions(+), 1 deletion(-) - -diff --git a/controls/cis_rhel7.yml b/controls/cis_rhel7.yml -index 7298158ad3..0f3cec2a83 100644 ---- a/controls/cis_rhel7.yml -+++ b/controls/cis_rhel7.yml -@@ -1022,7 +1022,9 @@ controls: - levels: - - l1_server - - l1_workstation -- automated: no # no exact rule is present -+ automated: yes -+ rules: -+ - set_firewalld_default_zone - - - id: 3.5.1.6 - title: Ensure network interfaces are assigned to appropriate zone (Manual) -diff --git a/linux_os/guide/system/network/network-firewalld/ruleset_modifications/set_firewalld_default_zone/rule.yml b/linux_os/guide/system/network/network-firewalld/ruleset_modifications/set_firewalld_default_zone/rule.yml -index 48de06c5bc..f4d78fb7a1 100644 ---- a/linux_os/guide/system/network/network-firewalld/ruleset_modifications/set_firewalld_default_zone/rule.yml -+++ b/linux_os/guide/system/network/network-firewalld/ruleset_modifications/set_firewalld_default_zone/rule.yml -@@ -27,6 +27,7 @@ identifiers: - - references: - cis-csc: 11,14,3,9 -+ cis@rhel7: 3.5.1.5 - cis@rhel8: 3.4.2.4 - cis@sle15: 3.5.1.5 - cjis: 5.10.1 - -From a13a796ee8c33ae98e93072bfc7ee15182bdfb5c Mon Sep 17 00:00:00 2001 -From: Vojtech Polasek -Date: Thu, 12 Aug 2021 11:45:52 +0200 -Subject: [PATCH 3/4] partially cover 5.5.1.4 - ---- - controls/cis_rhel7.yml | 5 ++++- - .../account_disable_post_pw_expiration/rule.yml | 2 +- - 2 files changed, 5 insertions(+), 2 deletions(-) - -diff --git a/controls/cis_rhel7.yml b/controls/cis_rhel7.yml -index 0f3cec2a83..78ac34817f 100644 ---- a/controls/cis_rhel7.yml -+++ b/controls/cis_rhel7.yml -@@ -1966,7 +1966,10 @@ controls: - levels: - - l1_server - - l1_workstation -- automated: no # rule missing -+ automated: partially # we do not check /et/shadow -+ rules: -+ - account_disable_post_pw_expiration -+ - var_account_disable_post_pw_expiration=30 - - - id: 5.5.1.5 - title: Ensure all users last password change date is in the past (Automated) -diff --git a/linux_os/guide/system/accounts/accounts-restrictions/account_expiration/account_disable_post_pw_expiration/rule.yml b/linux_os/guide/system/accounts/accounts-restrictions/account_expiration/account_disable_post_pw_expiration/rule.yml -index 310e234d43..a3d81cf73f 100644 ---- a/linux_os/guide/system/accounts/accounts-restrictions/account_expiration/account_disable_post_pw_expiration/rule.yml -+++ b/linux_os/guide/system/accounts/accounts-restrictions/account_expiration/account_disable_post_pw_expiration/rule.yml -@@ -34,7 +34,7 @@ identifiers: - - references: - cis-csc: 1,12,13,14,15,16,18,3,5,7,8 -- cis@rhel7: 5.4.1.4 -+ cis@rhel7: 5.5.1.4 - cis@rhel8: 5.5.1.4 - cis@ubuntu2004: 5.4.1.4 - cjis: 5.6.2.1.1 - -From 31ecc1b5806e7bc14199904b0a4e4d7b027ef7c4 Mon Sep 17 00:00:00 2001 -From: Vojtech Polasek -Date: Thu, 12 Aug 2021 11:52:09 +0200 -Subject: [PATCH 4/4] automate 6.2.5 - ---- - controls/cis_rhel7.yml | 4 +++- - .../account_expiration/account_unique_name/rule.yml | 1 + - 2 files changed, 4 insertions(+), 1 deletion(-) - -diff --git a/controls/cis_rhel7.yml b/controls/cis_rhel7.yml -index 78ac34817f..672b96cbeb 100644 ---- a/controls/cis_rhel7.yml -+++ b/controls/cis_rhel7.yml -@@ -2205,7 +2205,9 @@ controls: - levels: - - l1_server - - l1_workstation -- automated: no # rule missing -+ automated: yes -+ rules: -+ - account_unique_name - - - id: 6.2.6 - title: Ensure no duplicate group names exist (Automated) -diff --git a/linux_os/guide/system/accounts/accounts-restrictions/account_expiration/account_unique_name/rule.yml b/linux_os/guide/system/accounts/accounts-restrictions/account_expiration/account_unique_name/rule.yml -index 484b3c4f90..5f6377f194 100644 ---- a/linux_os/guide/system/accounts/accounts-restrictions/account_expiration/account_unique_name/rule.yml -+++ b/linux_os/guide/system/accounts/accounts-restrictions/account_expiration/account_unique_name/rule.yml -@@ -20,6 +20,7 @@ identifiers: - cce@rhel9: CCE-83628-8 - - references: -+ cis@rhel7: 6.2.5 - cis@rhel8: 6.2.17 - cjis: 5.5.2 - disa: CCI-000770,CCI-000804 diff --git a/SOURCES/scap-security-guide-0.1.58-disable_ctrlaltdel_reboot_fix_test_scenario-PR_7444.patch b/SOURCES/scap-security-guide-0.1.58-disable_ctrlaltdel_reboot_fix_test_scenario-PR_7444.patch deleted file mode 100644 index dacaa20..0000000 --- a/SOURCES/scap-security-guide-0.1.58-disable_ctrlaltdel_reboot_fix_test_scenario-PR_7444.patch +++ /dev/null @@ -1,20 +0,0 @@ -From 9bb002a6870f255a8e4934fab0d1b44893f818bc Mon Sep 17 00:00:00 2001 -From: Gabriel Becker -Date: Mon, 23 Aug 2021 12:29:13 +0200 -Subject: [PATCH] disable_ctrlaltdel_reboot: disable service before masking - during test scenario setup. - ---- - .../disable_ctrlaltdel_reboot/tests/masked.pass.sh | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/linux_os/guide/system/accounts/accounts-physical/disable_ctrlaltdel_reboot/tests/masked.pass.sh b/linux_os/guide/system/accounts/accounts-physical/disable_ctrlaltdel_reboot/tests/masked.pass.sh -index cc333ea2e9e..b56b59b2fd2 100644 ---- a/linux_os/guide/system/accounts/accounts-physical/disable_ctrlaltdel_reboot/tests/masked.pass.sh -+++ b/linux_os/guide/system/accounts/accounts-physical/disable_ctrlaltdel_reboot/tests/masked.pass.sh -@@ -1,4 +1,5 @@ - #!/bin/bash - # platform = Red Hat Enterprise Linux 7,Red Hat Enterprise Linux 8,multi_platform_fedora - -+systemctl disable --now ctrl-alt-del.target - systemctl mask --now ctrl-alt-del.target diff --git a/SOURCES/scap-security-guide-0.1.58-ensure_test_helper_scripts_executable-PR_7302.patch b/SOURCES/scap-security-guide-0.1.58-ensure_test_helper_scripts_executable-PR_7302.patch deleted file mode 100644 index 369db79..0000000 --- a/SOURCES/scap-security-guide-0.1.58-ensure_test_helper_scripts_executable-PR_7302.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 030557e3c4b48f568f6fef7de36de4dca6c66838 Mon Sep 17 00:00:00 2001 -From: Watson Sato -Date: Thu, 29 Jul 2021 19:02:11 +0200 -Subject: [PATCH] Ensure test scenarios and scripts are excutable - -After Jinja processing the test scenarios and test helper scripts they -lose their original permissions. This ensures they are readable and -executable. - -The helper scripts are called by test scenarios and they need to be -executable. ---- - tests/ssg_test_suite/common.py | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/tests/ssg_test_suite/common.py b/tests/ssg_test_suite/common.py -index 3dbeaf304a..130e5c960c 100644 ---- a/tests/ssg_test_suite/common.py -+++ b/tests/ssg_test_suite/common.py -@@ -245,6 +245,8 @@ def _make_file_root_owned(tarinfo): - if tarinfo: - tarinfo.uid = 0 - tarinfo.gid = 0 -+ # set permission to 775 -+ tarinfo.mode = 509 - return tarinfo - - diff --git a/SOURCES/scap-security-guide-0.1.58-fix_STIG_references-PR_7371.patch b/SOURCES/scap-security-guide-0.1.58-fix_STIG_references-PR_7371.patch deleted file mode 100644 index 6fba0f7..0000000 --- a/SOURCES/scap-security-guide-0.1.58-fix_STIG_references-PR_7371.patch +++ /dev/null @@ -1,114 +0,0 @@ -From 859684c560e948a439029b0d180fe23659d85141 Mon Sep 17 00:00:00 2001 -From: Gabriel Becker -Date: Tue, 10 Aug 2021 12:04:16 +0200 -Subject: [PATCH] Remove inexistent and/or duplicated STIG references. - ---- - .../package_xorg-x11-server-common_removed/rule.yml | 1 - - .../accounts_password_pam_unix_remember/rule.yml | 1 - - .../audit_rules_sysadmin_actions/rule.yml | 1 - - .../file_ownership_var_log_audit/rule.yml | 1 - - .../auditd_data_retention_space_left_action/rule.yml | 2 +- - .../harden_sshd_ciphers_openssh_conf_crypto_policy/rule.yml | 1 - - .../rule.yml | 2 +- - .../crypto/harden_sshd_macs_openssh_conf_crypto_policy/rule.yml | 1 - - 8 files changed, 2 insertions(+), 8 deletions(-) - -diff --git a/linux_os/guide/services/xwindows/disabling_xwindows/package_xorg-x11-server-common_removed/rule.yml b/linux_os/guide/services/xwindows/disabling_xwindows/package_xorg-x11-server-common_removed/rule.yml -index de8f0f6fd8..6e739d21a2 100644 ---- a/linux_os/guide/services/xwindows/disabling_xwindows/package_xorg-x11-server-common_removed/rule.yml -+++ b/linux_os/guide/services/xwindows/disabling_xwindows/package_xorg-x11-server-common_removed/rule.yml -@@ -42,7 +42,6 @@ references: - nist-csf: PR.AC-3,PR.PT-4 - srg: SRG-OS-000480-GPOS-00227 - stigid@rhel7: RHEL-07-040730 -- stigid@rhel8: RHEL-08-040320 - - ocil_clause: 'the X Windows package group or xorg-x11-server-common has not be removed' - -diff --git a/linux_os/guide/system/accounts/accounts-pam/locking_out_password_attempts/accounts_password_pam_unix_remember/rule.yml b/linux_os/guide/system/accounts/accounts-pam/locking_out_password_attempts/accounts_password_pam_unix_remember/rule.yml -index 9138681688..a2b66fc4d6 100644 ---- a/linux_os/guide/system/accounts/accounts-pam/locking_out_password_attempts/accounts_password_pam_unix_remember/rule.yml -+++ b/linux_os/guide/system/accounts/accounts-pam/locking_out_password_attempts/accounts_password_pam_unix_remember/rule.yml -@@ -50,7 +50,6 @@ references: - srg: SRG-OS-000077-GPOS-00045 - stigid@ol7: OL07-00-010270 - stigid@rhel7: RHEL-07-010270 -- stigid@rhel8: RHEL-08-020220 - stigid@sle15: SLES-15-020250 - stigid@ubuntu2004: UBTU-20-010070 - vmmsrg: SRG-OS-000077-VMM-000440 -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sysadmin_actions/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sysadmin_actions/rule.yml -index 12bca676d8..b4291e168c 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sysadmin_actions/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_sysadmin_actions/rule.yml -@@ -50,7 +50,6 @@ references: - srg: 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 - stigid@ol7: OL07-00-030700 - stigid@rhel7: RHEL-07-030700 -- stigid@rhel8: RHEL-08-030172 - stigid@sle15: SLES-15-030140 - vmmsrg: SRG-OS-000462-VMM-001840,SRG-OS-000471-VMM-001910 - -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/file_ownership_var_log_audit/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/file_ownership_var_log_audit/rule.yml -index 956beef52b..96bc0fa0b8 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/file_ownership_var_log_audit/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/file_ownership_var_log_audit/rule.yml -@@ -35,7 +35,6 @@ references: - srg: SRG-OS-000057-GPOS-00027,SRG-OS-000058-GPOS-00028,SRG-OS-000059-GPOS-00029,SRG-OS-000206-GPOS-00084 - stigid@ol7: OL07-00-910055 - stigid@rhel7: RHEL-07-910055 -- stigid@rhel8: RHEL-08-030080 - - ocil: |- - {{{ describe_file_owner(file="/var/log/audit", owner="root") }}} -diff --git a/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_data_retention_space_left_action/rule.yml b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_data_retention_space_left_action/rule.yml -index 6e30f1c4ac..7569a6776b 100644 ---- a/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_data_retention_space_left_action/rule.yml -+++ b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_data_retention_space_left_action/rule.yml -@@ -53,7 +53,7 @@ references: - srg: SRG-OS-000343-GPOS-00134 - stigid@ol7: OL07-00-030340 - stigid@rhel7: RHEL-07-030340 -- stigid@rhel8: RHEL-08-030730 -+ stigid@rhel8: RHEL-08-030731 - stigid@ubuntu2004: UBTU-20-010217 - vmmsrg: SRG-OS-000343-VMM-001240 - -diff --git a/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/rule.yml b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/rule.yml -index 0aa310d924..682ca436b8 100644 ---- a/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/rule.yml -+++ b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/rule.yml -@@ -30,7 +30,6 @@ references: - disa: CCI-001453 - nist: AC-17(2) - srg: SRG-OS-000250-GPOS-00093 -- stigid@rhel8: RHEL-08-010291 - - ocil_clause: 'Crypto Policy for OpenSSH client is not configured correctly' - -diff --git a/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/rule.yml b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/rule.yml -index b56f2421f2..e904bc848c 100644 ---- a/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/rule.yml -+++ b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/rule.yml -@@ -30,7 +30,7 @@ references: - disa: CCI-001453 - nist: AC-17(2) - srg: SRG-OS-000250-GPOS-00093 -- stigid@rhel8: RHEL-08-010290 -+ stigid@rhel8: RHEL-08-010291 - - ocil_clause: 'Crypto Policy for OpenSSH Server is not configured correctly' - -diff --git a/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_openssh_conf_crypto_policy/rule.yml b/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_openssh_conf_crypto_policy/rule.yml -index 1aeb987db2..d21f68ac17 100644 ---- a/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_openssh_conf_crypto_policy/rule.yml -+++ b/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_openssh_conf_crypto_policy/rule.yml -@@ -28,7 +28,6 @@ references: - disa: CCI-001453 - nist: AC-17(2) - srg: SRG-OS-000250-GPOS-00093 -- stigid@rhel8: RHEL-08-010290 - - ocil_clause: 'Crypto Policy for OpenSSH client is not configured correctly' - diff --git a/SOURCES/scap-security-guide-0.1.58-fix_ansible_banner_remediation-PR_7228.patch b/SOURCES/scap-security-guide-0.1.58-fix_ansible_banner_remediation-PR_7228.patch deleted file mode 100644 index b2a5501..0000000 --- a/SOURCES/scap-security-guide-0.1.58-fix_ansible_banner_remediation-PR_7228.patch +++ /dev/null @@ -1,53 +0,0 @@ -From a9660f01ecd85240df9460f141387dd2874eba82 Mon Sep 17 00:00:00 2001 -From: Marcus Burghardt -Date: Fri, 9 Jul 2021 16:15:28 +0200 -Subject: [PATCH] Bug 1857179 - Improved ansible fix for banner files. Replace - files only when necessary. - ---- - .../banner_etc_issue/ansible/shared.yml | 12 +++--------- - .../banner_etc_motd/ansible/shared.yml | 12 +++--------- - 2 files changed, 6 insertions(+), 18 deletions(-) - -diff --git a/linux_os/guide/system/accounts/accounts-banners/banner_etc_issue/ansible/shared.yml b/linux_os/guide/system/accounts/accounts-banners/banner_etc_issue/ansible/shared.yml -index ff6b6eab42b..4f6d64fd7ac 100644 ---- a/linux_os/guide/system/accounts/accounts-banners/banner_etc_issue/ansible/shared.yml -+++ b/linux_os/guide/system/accounts/accounts-banners/banner_etc_issue/ansible/shared.yml -@@ -5,13 +5,7 @@ - # disruption = medium - {{{ ansible_instantiate_variables("login_banner_text") }}} - --- name: "{{{ rule_title }}} - remove incorrect banner" -- file: -- state: absent -- path: /etc/issue -- --- name: "{{{ rule_title }}} - add correct banner" -- lineinfile: -+- name: "{{{ rule_title }}} - ensure correct banner" -+ copy: - dest: /etc/issue -- line: '{{{ ansible_deregexify_banner_etc_issue("login_banner_text") }}}' -- create: yes -+ content: '{{{ ansible_deregexify_banner_etc_issue("login_banner_text") }}}' -diff --git a/linux_os/guide/system/accounts/accounts-banners/banner_etc_motd/ansible/shared.yml b/linux_os/guide/system/accounts/accounts-banners/banner_etc_motd/ansible/shared.yml -index 15eb3cc1cbd..2c645889336 100644 ---- a/linux_os/guide/system/accounts/accounts-banners/banner_etc_motd/ansible/shared.yml -+++ b/linux_os/guide/system/accounts/accounts-banners/banner_etc_motd/ansible/shared.yml -@@ -5,13 +5,7 @@ - # disruption = medium - {{{ ansible_instantiate_variables("login_banner_text") }}} - --- name: "{{{ rule_title }}} - remove incorrect banner" -- file: -- state: absent -- path: /etc/motd -- --- name: "{{{ rule_title }}} - add correct banner" -- lineinfile: -+- name: "{{{ rule_title }}} - ensure correct banner" -+ copy: - dest: /etc/motd -- line: '{{{ ansible_deregexify_banner_etc_issue("login_banner_text") }}}' -- create: yes -+ content: '{{{ ansible_deregexify_banner_etc_issue("login_banner_text") }}}' diff --git a/SOURCES/scap-security-guide-0.1.58-fix_audit_file_permissions-PR_7440.patch b/SOURCES/scap-security-guide-0.1.58-fix_audit_file_permissions-PR_7440.patch deleted file mode 100644 index d05e7c4..0000000 --- a/SOURCES/scap-security-guide-0.1.58-fix_audit_file_permissions-PR_7440.patch +++ /dev/null @@ -1,58 +0,0 @@ -From 1dcdad51a48c17dd5dbb7eb9bbb8cef23cf00e29 Mon Sep 17 00:00:00 2001 -From: Gabriel Becker -Date: Mon, 23 Aug 2021 10:26:39 +0200 -Subject: [PATCH] Fix remaining audit rule files permissions. - ---- - .../audit_rules_immutable/ansible/shared.yml | 1 + - .../audit_rules_immutable/bash/shared.sh | 1 + - shared/templates/audit_file_contents/ansible.template | 5 +++++ - shared/templates/audit_file_contents/bash.template | 2 ++ - 4 files changed, 9 insertions(+) - -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_immutable/ansible/shared.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_immutable/ansible/shared.yml -index 1cafb744cc3..736d4c333e4 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_immutable/ansible/shared.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_immutable/ansible/shared.yml -@@ -22,6 +22,7 @@ - path: "{{ item }}" - create: True - line: "-e 2" -+ mode: o-rwx - loop: - - "/etc/audit/audit.rules" - - "/etc/audit/rules.d/immutable.rules" -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_immutable/bash/shared.sh b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_immutable/bash/shared.sh -index 29cd4a5de6f..36e0691493f 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_immutable/bash/shared.sh -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_immutable/bash/shared.sh -@@ -20,4 +20,5 @@ do - echo '# Set the audit.rules configuration immutable per security requirements' >> $AUDIT_FILE - echo '# Reboot is required to change audit rules once this setting is applied' >> $AUDIT_FILE - echo '-e 2' >> $AUDIT_FILE -+ chmod o-rwx $AUDIT_FILE - done -diff --git a/shared/templates/audit_file_contents/ansible.template b/shared/templates/audit_file_contents/ansible.template -index c2852745451..a262386cfbf 100644 ---- a/shared/templates/audit_file_contents/ansible.template -+++ b/shared/templates/audit_file_contents/ansible.template -@@ -9,3 +9,8 @@ - contents=CONTENTS, - ) - }}} -+ -+- name: Remove any permissions from other group -+ file: -+ path: {{{ FILEPATH }}} -+ mode: o-rwx -diff --git a/shared/templates/audit_file_contents/bash.template b/shared/templates/audit_file_contents/bash.template -index f264be6f14d..d6277167892 100644 ---- a/shared/templates/audit_file_contents/bash.template -+++ b/shared/templates/audit_file_contents/bash.template -@@ -11,4 +11,6 @@ - ) - }}} - -+chmod o-rwx {{{ FILEPATH }}} -+ - augenrules --load diff --git a/SOURCES/scap-security-guide-0.1.58-fix_cis_value_selector-PR_7452.patch b/SOURCES/scap-security-guide-0.1.58-fix_cis_value_selector-PR_7452.patch deleted file mode 100644 index 9878022..0000000 --- a/SOURCES/scap-security-guide-0.1.58-fix_cis_value_selector-PR_7452.patch +++ /dev/null @@ -1,39 +0,0 @@ -From bd790153e02c1d1725f59f5d88c65c77eb1421e9 Mon Sep 17 00:00:00 2001 -From: Gabriel Becker -Date: Tue, 24 Aug 2021 12:48:46 +0200 -Subject: [PATCH] Add a new selector for var_system_crypto_policy and use it - RHEL8 CIS. - -This new selector is used to select explicit DEFAULT value in RHEL8 CIS -L1 profiles. The "default" selector cannot be selected and it causes -errors if used. ---- - controls/cis_rhel8.yml | 2 +- - .../software/integrity/crypto/var_system_crypto_policy.var | 1 + - 2 files changed, 2 insertions(+), 1 deletion(-) - -diff --git a/controls/cis_rhel8.yml b/controls/cis_rhel8.yml -index 29d972427cf..c0d3f5f40de 100644 ---- a/controls/cis_rhel8.yml -+++ b/controls/cis_rhel8.yml -@@ -553,7 +553,7 @@ controls: - automated: yes - rules: - - configure_crypto_policy -- - var_system_crypto_policy=default -+ - var_system_crypto_policy=default_policy - - # This rule works in conjunction with the configure_crypto_policy above. - # If a system is remediated to CIS Level 1, just the rule above will apply -diff --git a/linux_os/guide/system/software/integrity/crypto/var_system_crypto_policy.var b/linux_os/guide/system/software/integrity/crypto/var_system_crypto_policy.var -index ce301154a39..8b89848d122 100644 ---- a/linux_os/guide/system/software/integrity/crypto/var_system_crypto_policy.var -+++ b/linux_os/guide/system/software/integrity/crypto/var_system_crypto_policy.var -@@ -13,6 +13,7 @@ interactive: false - - options: - default: DEFAULT -+ default_policy: DEFAULT - default_nosha1: "DEFAULT:NO-SHA1" - fips: FIPS - fips_ospp: "FIPS:OSPP" diff --git a/SOURCES/scap-security-guide-0.1.58-fix_handling_of_variables_in_levels-PR_7226.patch b/SOURCES/scap-security-guide-0.1.58-fix_handling_of_variables_in_levels-PR_7226.patch deleted file mode 100644 index c609d07..0000000 --- a/SOURCES/scap-security-guide-0.1.58-fix_handling_of_variables_in_levels-PR_7226.patch +++ /dev/null @@ -1,702 +0,0 @@ -From 7901659fa169db8ac5ffd7c610a798c785a3556b Mon Sep 17 00:00:00 2001 -From: Vojtech Polasek -Date: Fri, 9 Jul 2021 14:41:03 +0200 -Subject: [PATCH 01/12] ensure that higher policy levels can override variables - of lower levels - ---- - ssg/controls.py | 13 ++++++++++--- - 1 file changed, 10 insertions(+), 3 deletions(-) - -diff --git a/ssg/controls.py b/ssg/controls.py -index 297d80e46c5..165cdf0511a 100644 ---- a/ssg/controls.py -+++ b/ssg/controls.py -@@ -202,9 +202,16 @@ def get_all_controls_of_level(self, policy_id, level_id): - - all_policy_controls = self.get_all_controls(policy_id) - eligible_controls = [] -- for c in all_policy_controls: -- if len(level_ids.intersection(c.levels)) > 0: -- eligible_controls.append(c) -+ defined_variables = [] -+ # we will go level by level, from top to bottom -+ # this is done to enable overriding of variables by higher levels -+ for lv in level_ids: -+ for c in all_policy_controls: -+ if lv in c.levels: -+ # if the control has a variable, check if it is not already defined -+ if c.variables.keys().isdisjoint(defined_variables): -+ eligible_controls.append(c) -+ defined_variables += [*c.variables.keys()] - return eligible_controls - - def get_all_controls(self, policy_id): - -From 66e612a9668009cc553fcf1abbf2c9477155c0c2 Mon Sep 17 00:00:00 2001 -From: Vojtech Polasek -Date: Thu, 5 Aug 2021 14:02:25 +0200 -Subject: [PATCH 02/12] use ordered sets emulated by ordereddict - -because of compatibility with python2 ---- - ssg/controls.py | 21 ++++++++++++++------- - 1 file changed, 14 insertions(+), 7 deletions(-) - -diff --git a/ssg/controls.py b/ssg/controls.py -index 165cdf0511a..611a647e125 100644 ---- a/ssg/controls.py -+++ b/ssg/controls.py -@@ -2,6 +2,7 @@ - import logging - import os - from glob import glob -+from collections import OrderedDict - - import ssg.build_yaml - import ssg.yaml -@@ -152,16 +153,18 @@ def get_level(self, level_id): - raise ValueError(msg) - - def get_level_with_ancestors(self, level_id): -- levels = set() -+ # use OrderedDict for Python2 compatibility instead of ordered set -+ levels = OrderedDict() - level = self.get_level(level_id) -- levels.add(level) -+ levels[level] = "" - if level.inherits_from: - for lv in level.inherits_from: -- levels.update(self.get_level_with_ancestors(lv)) -+ eligible_levels = [l for l in self.get_level_with_ancestors(lv).keys() if l not in levels.keys()] -+ for l in eligible_levels: -+ levels[l] = "" - return levels - - -- - class ControlsManager(): - def __init__(self, controls_dir, env_yaml=None): - self.controls_dir = os.path.abspath(controls_dir) -@@ -198,20 +201,24 @@ def _get_policy(self, policy_id): - def get_all_controls_of_level(self, policy_id, level_id): - policy = self._get_policy(policy_id) - levels = policy.get_level_with_ancestors(level_id) -- level_ids = set([lv.id for lv in levels]) -+ # we use OrderedDict here with empty values instead of ordered set -+ # cause we want to be compatible with python 2 -+ level_ids = OrderedDict() -+ for lv in levels.keys(): -+ level_ids[lv.id] = "" - - all_policy_controls = self.get_all_controls(policy_id) - eligible_controls = [] - defined_variables = [] - # we will go level by level, from top to bottom - # this is done to enable overriding of variables by higher levels -- for lv in level_ids: -+ for lv in level_ids.keys(): - for c in all_policy_controls: - if lv in c.levels: - # if the control has a variable, check if it is not already defined - if c.variables.keys().isdisjoint(defined_variables): - eligible_controls.append(c) -- defined_variables += [*c.variables.keys()] -+ defined_variables += list(c.variables.keys()) - return eligible_controls - - def get_all_controls(self, policy_id): - -From 95a23a31293a0a63361ddf1831866cd5ae1ab61e Mon Sep 17 00:00:00 2001 -From: Vojtech Polasek -Date: Thu, 5 Aug 2021 16:30:10 +0200 -Subject: [PATCH 03/12] rework handling of variables when returning all - controls of a level - -currently only the top most level variables are kept in the controls -if there is a control with lower level which has the same variable defined, it is deep copied and the variable definition is removed only from the resulting control -the original control stays in tact ---- - ssg/controls.py | 27 +++++++++++++++++++++------ - 1 file changed, 21 insertions(+), 6 deletions(-) - -diff --git a/ssg/controls.py b/ssg/controls.py -index 611a647e125..4ebb8bda3d7 100644 ---- a/ssg/controls.py -+++ b/ssg/controls.py -@@ -1,8 +1,8 @@ - import collections - import logging - import os -+import copy - from glob import glob --from collections import OrderedDict - - import ssg.build_yaml - import ssg.yaml -@@ -154,7 +154,7 @@ def get_level(self, level_id): - - def get_level_with_ancestors(self, level_id): - # use OrderedDict for Python2 compatibility instead of ordered set -- levels = OrderedDict() -+ levels = collections.OrderedDict() - level = self.get_level(level_id) - levels[level] = "" - if level.inherits_from: -@@ -201,24 +201,39 @@ def _get_policy(self, policy_id): - def get_all_controls_of_level(self, policy_id, level_id): - policy = self._get_policy(policy_id) - levels = policy.get_level_with_ancestors(level_id) -+ print ("getting levels of " + level_id) -+ print ([ l.id for l in levels.keys()]) - # we use OrderedDict here with empty values instead of ordered set - # cause we want to be compatible with python 2 -- level_ids = OrderedDict() -+ level_ids = collections.OrderedDict() - for lv in levels.keys(): - level_ids[lv.id] = "" -- -+ print (level_ids.keys()) - all_policy_controls = self.get_all_controls(policy_id) - eligible_controls = [] - defined_variables = [] - # we will go level by level, from top to bottom - # this is done to enable overriding of variables by higher levels - for lv in level_ids.keys(): -+ print ("going through level " +lv) - for c in all_policy_controls: -+ print (c.levels) - if lv in c.levels: - # if the control has a variable, check if it is not already defined -- if c.variables.keys().isdisjoint(defined_variables): -+ variables = list(c.variables.keys()) -+ if len(variables) == 0: - eligible_controls.append(c) -- defined_variables += list(c.variables.keys()) -+ for var in variables: -+ if var in defined_variables: -+ # if it is, create new instance of the control and remove the variable -+ # we are going from the top level to the bottom -+ # so we don't want to overwrite variables -+ new_c = copy.deepcopy(c) -+ del new_c.variables[var] -+ eligible_controls.append(new_c) -+ else: -+ defined_variables.append(var) -+ eligible_controls.append(c) - return eligible_controls - - def get_all_controls(self, policy_id): - -From a2dd7e9386c757a523b57646bdc5a9ffa99f68c5 Mon Sep 17 00:00:00 2001 -From: Vojtech Polasek -Date: Thu, 5 Aug 2021 16:31:25 +0200 -Subject: [PATCH 04/12] add tests for defining of variables - ---- - tests/unit/ssg-module/data/controls_dir/abcd-levels.yml | 6 ++++++ - tests/unit/ssg-module/test_controls.py | 5 +++++ - 2 files changed, 11 insertions(+) - -diff --git a/tests/unit/ssg-module/data/controls_dir/abcd-levels.yml b/tests/unit/ssg-module/data/controls_dir/abcd-levels.yml -index aded77c12a6..b98a7cd4e19 100644 ---- a/tests/unit/ssg-module/data/controls_dir/abcd-levels.yml -+++ b/tests/unit/ssg-module/data/controls_dir/abcd-levels.yml -@@ -19,10 +19,14 @@ controls: - - id: S2 - levels: - - low -+ rules: -+ - var_password_pam_minlen=1 - - - id: S3 - levels: - - medium -+ rules: -+ - var_password_pam_minlen=2 - - - id: S4 - title: Configure authentication -@@ -36,3 +40,5 @@ controls: - title: Enforce password quality standards - levels: - - high -+ rules: -+ - var_password_pam_minlen=3 -diff --git a/tests/unit/ssg-module/test_controls.py b/tests/unit/ssg-module/test_controls.py -index ff9b04f26c9..06fcb0c375d 100644 ---- a/tests/unit/ssg-module/test_controls.py -+++ b/tests/unit/ssg-module/test_controls.py -@@ -87,6 +87,11 @@ def test_controls_levels(): - assert len(low_controls) == 4 - assert len(medium_controls) == 5 - -+ # test overriding of variables in levels -+ assert c_2.variables["var_password_pam_minlen"] == "1" -+ assert c_3.variables["var_password_pam_minlen"] == "2" -+ assert c_4b.variables["var_password_pam_minlen"] == "3" -+ - - def test_controls_load_product(): - ssg_root = \ - -From 82b90a9720dadab7d6060f0ccbcd902b1c097904 Mon Sep 17 00:00:00 2001 -From: Vojtech Polasek -Date: Fri, 6 Aug 2021 09:30:47 +0200 -Subject: [PATCH 05/12] make overriding of variables optional - ---- - ssg/controls.py | 38 +++++++++++++++++++------------------- - 1 file changed, 19 insertions(+), 19 deletions(-) - -diff --git a/ssg/controls.py b/ssg/controls.py -index 4ebb8bda3d7..90639fbe4c7 100644 ---- a/ssg/controls.py -+++ b/ssg/controls.py -@@ -198,42 +198,42 @@ def _get_policy(self, policy_id): - raise ValueError(msg) - return policy - -- def get_all_controls_of_level(self, policy_id, level_id): -+ def get_all_controls_of_level(self, policy_id, level_id, override_vars=True): -+ # if override_vars is enabled, then variables from higher levels will -+ # override variables efined in controls of lower levels - policy = self._get_policy(policy_id) - levels = policy.get_level_with_ancestors(level_id) -- print ("getting levels of " + level_id) -- print ([ l.id for l in levels.keys()]) - # we use OrderedDict here with empty values instead of ordered set - # cause we want to be compatible with python 2 - level_ids = collections.OrderedDict() - for lv in levels.keys(): - level_ids[lv.id] = "" -- print (level_ids.keys()) - all_policy_controls = self.get_all_controls(policy_id) - eligible_controls = [] - defined_variables = [] - # we will go level by level, from top to bottom - # this is done to enable overriding of variables by higher levels - for lv in level_ids.keys(): -- print ("going through level " +lv) - for c in all_policy_controls: -- print (c.levels) - if lv in c.levels: -- # if the control has a variable, check if it is not already defined -- variables = list(c.variables.keys()) -- if len(variables) == 0: -+ if override_vars == False: - eligible_controls.append(c) -- for var in variables: -- if var in defined_variables: -- # if it is, create new instance of the control and remove the variable -- # we are going from the top level to the bottom -- # so we don't want to overwrite variables -- new_c = copy.deepcopy(c) -- del new_c.variables[var] -- eligible_controls.append(new_c) -- else: -- defined_variables.append(var) -+ else: -+ # if the control has a variable, check if it is not already defined -+ variables = list(c.variables.keys()) -+ if len(variables) == 0: - eligible_controls.append(c) -+ for var in variables: -+ if var in defined_variables: -+ # if it is, create new instance of the control and remove the variable -+ # we are going from the top level to the bottom -+ # so we don't want to overwrite variables -+ new_c = copy.deepcopy(c) -+ del new_c.variables[var] -+ eligible_controls.append(new_c) -+ else: -+ defined_variables.append(var) -+ eligible_controls.append(c) - return eligible_controls - - def get_all_controls(self, policy_id): - -From 47df80d086e96deb4eab88d5f813bffb380006a8 Mon Sep 17 00:00:00 2001 -From: Vojtech Polasek -Date: Wed, 11 Aug 2021 12:38:42 +0200 -Subject: [PATCH 06/12] fix a typo - ---- - ssg/controls.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/ssg/controls.py b/ssg/controls.py -index 90639fbe4c7..10a304bf8c2 100644 ---- a/ssg/controls.py -+++ b/ssg/controls.py -@@ -200,7 +200,7 @@ def _get_policy(self, policy_id): - - def get_all_controls_of_level(self, policy_id, level_id, override_vars=True): - # if override_vars is enabled, then variables from higher levels will -- # override variables efined in controls of lower levels -+ # override variables defined in controls of lower levels - policy = self._get_policy(policy_id) - levels = policy.get_level_with_ancestors(level_id) - # we use OrderedDict here with empty values instead of ordered set - -From 8e59037ed07aad33a55e8297ee5bce0f51c0dee6 Mon Sep 17 00:00:00 2001 -From: Vojtech Polasek -Date: Wed, 11 Aug 2021 17:02:11 +0200 -Subject: [PATCH 07/12] update tests to check that overriding of variables - works - ---- - .../ssg-module/data/controls_dir/abcd-levels.yml | 4 +--- - tests/unit/ssg-module/test_controls.py | 16 ++++++++++++++-- - 2 files changed, 15 insertions(+), 5 deletions(-) - -diff --git a/tests/unit/ssg-module/data/controls_dir/abcd-levels.yml b/tests/unit/ssg-module/data/controls_dir/abcd-levels.yml -index b98a7cd4e19..99efafd832e 100644 ---- a/tests/unit/ssg-module/data/controls_dir/abcd-levels.yml -+++ b/tests/unit/ssg-module/data/controls_dir/abcd-levels.yml -@@ -25,8 +25,6 @@ controls: - - id: S3 - levels: - - medium -- rules: -- - var_password_pam_minlen=2 - - - id: S4 - title: Configure authentication -@@ -41,4 +39,4 @@ controls: - levels: - - high - rules: -- - var_password_pam_minlen=3 -+ - var_password_pam_minlen=2 -diff --git a/tests/unit/ssg-module/test_controls.py b/tests/unit/ssg-module/test_controls.py -index 06fcb0c375d..124b344d141 100644 ---- a/tests/unit/ssg-module/test_controls.py -+++ b/tests/unit/ssg-module/test_controls.py -@@ -89,8 +89,20 @@ def test_controls_levels(): - - # test overriding of variables in levels - assert c_2.variables["var_password_pam_minlen"] == "1" -- assert c_3.variables["var_password_pam_minlen"] == "2" -- assert c_4b.variables["var_password_pam_minlen"] == "3" -+ assert "var_password_pam_minlen" not in c_3.variables.keys() -+ assert c_4b.variables["var_password_pam_minlen"] == "2" -+ -+ for c in low_controls: -+ if "var_password_pam_minlen" in c.variables.keys(): -+ assert c.variables["var_password_pam_minlen"] == "1" -+ -+ for c in medium_controls: -+ if "var_password_pam_minlen" in c.variables.keys(): -+ assert c.variables["var_password_pam_minlen"] == "1" -+ -+ for c in high_controls: -+ if "var_password_pam_minlen" in c.variables.keys(): -+ assert c.variables["var_password_pam_minlen"] == "2" - - - def test_controls_load_product(): - -From dae4fc52a627eac6595bb73e3ffb1a0c50e78fdd Mon Sep 17 00:00:00 2001 -From: Vojtech Polasek -Date: Wed, 11 Aug 2021 17:02:32 +0200 -Subject: [PATCH 08/12] make overriding of variables hardcoded when requesting - controls of a certain level - ---- - ssg/controls.py | 34 +++++++++++++++------------------- - 1 file changed, 15 insertions(+), 19 deletions(-) - -diff --git a/ssg/controls.py b/ssg/controls.py -index 10a304bf8c2..7923f0cb379 100644 ---- a/ssg/controls.py -+++ b/ssg/controls.py -@@ -198,9 +198,7 @@ def _get_policy(self, policy_id): - raise ValueError(msg) - return policy - -- def get_all_controls_of_level(self, policy_id, level_id, override_vars=True): -- # if override_vars is enabled, then variables from higher levels will -- # override variables defined in controls of lower levels -+ def get_all_controls_of_level(self, policy_id, level_id): - policy = self._get_policy(policy_id) - levels = policy.get_level_with_ancestors(level_id) - # we use OrderedDict here with empty values instead of ordered set -@@ -216,24 +214,22 @@ def get_all_controls_of_level(self, policy_id, level_id, override_vars=True): - for lv in level_ids.keys(): - for c in all_policy_controls: - if lv in c.levels: -- if override_vars == False: -+ # if the control has a variable, check if it is not already defined -+ variables = list(c.variables.keys()) -+ if len(variables) == 0: - eligible_controls.append(c) -- else: -- # if the control has a variable, check if it is not already defined -- variables = list(c.variables.keys()) -- if len(variables) == 0: -+ continue -+ for var in variables: -+ if var in defined_variables: -+ # if it is, create new instance of the control and remove the variable -+ # we are going from the top level to the bottom -+ # so we don't want to overwrite variables -+ new_c = copy.deepcopy(c) -+ del new_c.variables[var] -+ eligible_controls.append(new_c) -+ else: -+ defined_variables.append(var) - eligible_controls.append(c) -- for var in variables: -- if var in defined_variables: -- # if it is, create new instance of the control and remove the variable -- # we are going from the top level to the bottom -- # so we don't want to overwrite variables -- new_c = copy.deepcopy(c) -- del new_c.variables[var] -- eligible_controls.append(new_c) -- else: -- defined_variables.append(var) -- eligible_controls.append(c) - return eligible_controls - - def get_all_controls(self, policy_id): - -From c051e11c70b7e23ce3d4a8e0670da4fae72833c6 Mon Sep 17 00:00:00 2001 -From: Vojtech Polasek -Date: Thu, 12 Aug 2021 15:30:39 +0200 -Subject: [PATCH 09/12] get rid of one ordereddict - ---- - ssg/controls.py | 9 ++------- - 1 file changed, 2 insertions(+), 7 deletions(-) - -diff --git a/ssg/controls.py b/ssg/controls.py -index 7923f0cb379..891b13c891c 100644 ---- a/ssg/controls.py -+++ b/ssg/controls.py -@@ -201,19 +201,14 @@ def _get_policy(self, policy_id): - def get_all_controls_of_level(self, policy_id, level_id): - policy = self._get_policy(policy_id) - levels = policy.get_level_with_ancestors(level_id) -- # we use OrderedDict here with empty values instead of ordered set -- # cause we want to be compatible with python 2 -- level_ids = collections.OrderedDict() -- for lv in levels.keys(): -- level_ids[lv.id] = "" - all_policy_controls = self.get_all_controls(policy_id) - eligible_controls = [] - defined_variables = [] - # we will go level by level, from top to bottom - # this is done to enable overriding of variables by higher levels -- for lv in level_ids.keys(): -+ for lv in levels.keys(): - for c in all_policy_controls: -- if lv in c.levels: -+ if lv.id in c.levels: - # if the control has a variable, check if it is not already defined - variables = list(c.variables.keys()) - if len(variables) == 0: - -From 4dd5cb1326932cf020785a8c2472998eb2e7775e Mon Sep 17 00:00:00 2001 -From: Vojtech Polasek -Date: Thu, 12 Aug 2021 16:44:57 +0200 -Subject: [PATCH 10/12] fix overriding of variables - -when there were multiple variables overridden, it caused problems by creating multiple copies of controls ---- - ssg/controls.py | 16 +++++++++------- - 1 file changed, 9 insertions(+), 7 deletions(-) - -diff --git a/ssg/controls.py b/ssg/controls.py -index 891b13c891c..8b69676313c 100644 ---- a/ssg/controls.py -+++ b/ssg/controls.py -@@ -214,17 +214,19 @@ def get_all_controls_of_level(self, policy_id, level_id): - if len(variables) == 0: - eligible_controls.append(c) - continue -+ variables_to_remove = [] # contains list of variables which are already defined and should be removed from the control - for var in variables: - if var in defined_variables: -- # if it is, create new instance of the control and remove the variable -- # we are going from the top level to the bottom -- # so we don't want to overwrite variables -- new_c = copy.deepcopy(c) -- del new_c.variables[var] -- eligible_controls.append(new_c) -+ variables_to_remove.append(var) - else: - defined_variables.append(var) -- eligible_controls.append(c) -+ if len(variables_to_remove) == 0: -+ eligible_controls.append(c) -+ else: -+ new_c = copy.deepcopy(c) -+ for var in variables_to_remove: -+ del new_c.variables[var] -+ eligible_controls.append(new_c) - return eligible_controls - - def get_all_controls(self, policy_id): - -From fbebba524cab090bc4c2f92b75257a7cc881ef5e Mon Sep 17 00:00:00 2001 -From: Vojtech Polasek -Date: Thu, 12 Aug 2021 16:45:38 +0200 -Subject: [PATCH 11/12] extended tests to test for multiple overridden - variables - ---- - .../data/controls_dir/abcd-levels.yml | 2 ++ - tests/unit/ssg-module/test_controls.py | 19 +++++++++++++++++++ - 2 files changed, 21 insertions(+) - -diff --git a/tests/unit/ssg-module/data/controls_dir/abcd-levels.yml b/tests/unit/ssg-module/data/controls_dir/abcd-levels.yml -index 99efafd832e..2e60ec43532 100644 ---- a/tests/unit/ssg-module/data/controls_dir/abcd-levels.yml -+++ b/tests/unit/ssg-module/data/controls_dir/abcd-levels.yml -@@ -21,6 +21,7 @@ controls: - - low - rules: - - var_password_pam_minlen=1 -+ - var_some_variable=1 - - - id: S3 - levels: -@@ -40,3 +41,4 @@ controls: - - high - rules: - - var_password_pam_minlen=2 -+ - var_some_variable=3 -diff --git a/tests/unit/ssg-module/test_controls.py b/tests/unit/ssg-module/test_controls.py -index 124b344d141..1465661b04a 100644 ---- a/tests/unit/ssg-module/test_controls.py -+++ b/tests/unit/ssg-module/test_controls.py -@@ -104,6 +104,25 @@ def test_controls_levels(): - if "var_password_pam_minlen" in c.variables.keys(): - assert c.variables["var_password_pam_minlen"] == "2" - -+ # now test if controls of lower level has the variable definition correctly removed -+ # because it is overriden by higher level controls -+ s2_high = [c for c in high_controls if c.id == "S2"] -+ assert len(s2_high) == 1 -+ assert "var_some_variable" not in s2_high[0].variables.keys() -+ assert "var_password_pam_minlen" not in s2_high[0].variables.keys() -+ s4b_high = [c for c in high_controls if c.id == "S4.b"] -+ assert len(s4b_high) == 1 -+ assert s4b_high[0].variables["var_some_variable"] == "3" -+ assert s4b_high[0].variables["var_password_pam_minlen"] == "2" -+ -+ # check that in low level the variable is correctly placed there in S2 -+ s2_low = [c for c in low_controls if c.id == "S2"] -+ assert len(s2_low) == 1 -+ assert s2_low[0].variables["var_some_variable"] == "1" -+ assert s2_low[0].variables["var_password_pam_minlen"] == "1" -+ -+ -+ - - def test_controls_load_product(): - ssg_root = \ - -From 369de6b8374084d9d607979b712285912dbb65aa Mon Sep 17 00:00:00 2001 -From: Matej Tyc -Date: Mon, 16 Aug 2021 10:39:22 +0200 -Subject: [PATCH 12/12] Style improvements - -- Renamed get_level_with_ancestors to get_level_with_ancestors_sequence, - and made it return a list - a dictionary result is quite confusing. -- Removed some optimization in the variable deletion loops. -- Extracted functionality to a _get_control_without_variables static - method. -- Defined variable removal steps using set operations. ---- - ssg/controls.py | 54 +++++++++++++++++++++++++------------------------ - 1 file changed, 28 insertions(+), 26 deletions(-) - -diff --git a/ssg/controls.py b/ssg/controls.py -index 8b69676313c..ca3187d5b16 100644 ---- a/ssg/controls.py -+++ b/ssg/controls.py -@@ -152,17 +152,17 @@ def get_level(self, level_id): - ) - raise ValueError(msg) - -- def get_level_with_ancestors(self, level_id): -+ def get_level_with_ancestors_sequence(self, level_id): - # use OrderedDict for Python2 compatibility instead of ordered set - levels = collections.OrderedDict() - level = self.get_level(level_id) - levels[level] = "" - if level.inherits_from: - for lv in level.inherits_from: -- eligible_levels = [l for l in self.get_level_with_ancestors(lv).keys() if l not in levels.keys()] -+ eligible_levels = [l for l in self.get_level_with_ancestors_sequence(lv) if l not in levels.keys()] - for l in eligible_levels: - levels[l] = "" -- return levels -+ return list(levels.keys()) - - - class ControlsManager(): -@@ -200,35 +200,37 @@ def _get_policy(self, policy_id): - - def get_all_controls_of_level(self, policy_id, level_id): - policy = self._get_policy(policy_id) -- levels = policy.get_level_with_ancestors(level_id) -+ levels = policy.get_level_with_ancestors_sequence(level_id) - all_policy_controls = self.get_all_controls(policy_id) - eligible_controls = [] -- defined_variables = [] -+ already_defined_variables = set() - # we will go level by level, from top to bottom - # this is done to enable overriding of variables by higher levels -- for lv in levels.keys(): -- for c in all_policy_controls: -- if lv.id in c.levels: -- # if the control has a variable, check if it is not already defined -- variables = list(c.variables.keys()) -- if len(variables) == 0: -- eligible_controls.append(c) -- continue -- variables_to_remove = [] # contains list of variables which are already defined and should be removed from the control -- for var in variables: -- if var in defined_variables: -- variables_to_remove.append(var) -- else: -- defined_variables.append(var) -- if len(variables_to_remove) == 0: -- eligible_controls.append(c) -- else: -- new_c = copy.deepcopy(c) -- for var in variables_to_remove: -- del new_c.variables[var] -- eligible_controls.append(new_c) -+ for lv in levels: -+ for control in all_policy_controls: -+ if lv.id not in control.levels: -+ continue -+ -+ variables = set(control.variables.keys()) -+ -+ variables_to_remove = variables.intersection(already_defined_variables) -+ already_defined_variables.update(variables) -+ -+ new_c = self._get_control_without_variables(variables_to_remove, control) -+ eligible_controls.append(new_c) -+ - return eligible_controls - -+ @staticmethod -+ def _get_control_without_variables(variables_to_remove, control): -+ if not variables_to_remove: -+ return control -+ -+ new_c = copy.deepcopy(control) -+ for var in variables_to_remove: -+ del new_c.variables[var] -+ return new_c -+ - def get_all_controls(self, policy_id): - policy = self._get_policy(policy_id) - return policy.controls_by_id.values() diff --git a/SOURCES/scap-security-guide-0.1.58-fix_missing_srgs-PR_7362.patch b/SOURCES/scap-security-guide-0.1.58-fix_missing_srgs-PR_7362.patch deleted file mode 100644 index 8482645..0000000 --- a/SOURCES/scap-security-guide-0.1.58-fix_missing_srgs-PR_7362.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 90cbb9fc2662cd2b7652d1f012ece74e8cf41c5d Mon Sep 17 00:00:00 2001 -From: Milan Lysonek -Date: Mon, 9 Aug 2021 15:22:59 +0200 -Subject: [PATCH 1/2] Add SRG for sssd_enable_certmap - ---- - linux_os/guide/services/sssd/sssd_enable_certmap/rule.yml | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/linux_os/guide/services/sssd/sssd_enable_certmap/rule.yml b/linux_os/guide/services/sssd/sssd_enable_certmap/rule.yml -index 0614a2f4a0..67c02f4fb7 100644 ---- a/linux_os/guide/services/sssd/sssd_enable_certmap/rule.yml -+++ b/linux_os/guide/services/sssd/sssd_enable_certmap/rule.yml -@@ -28,6 +28,7 @@ identifiers: - references: - disa: CCI-000187 - nist: IA-5 (2) (c) -+ srg: SRG-OS-000068-GPOS-00036 - stigid@rhel8: RHEL-08-020090 - - warnings: - -From b15299568849111d142c27f99dff7052afd96c07 Mon Sep 17 00:00:00 2001 -From: Milan Lysonek -Date: Mon, 9 Aug 2021 15:23:16 +0200 -Subject: [PATCH 2/2] Add SRG for accounts_password_pam_dictcheck - ---- - .../accounts_password_pam_dictcheck/rule.yml | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_dictcheck/rule.yml b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_dictcheck/rule.yml -index 2990150c0a..5956718a70 100644 ---- a/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_dictcheck/rule.yml -+++ b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_dictcheck/rule.yml -@@ -27,6 +27,7 @@ identifiers: - references: - disa: CCI-000366 - nist: IA-5(c),IA-5(1)(a),CM-6(a),IA-5(4) -+ srg: SRG-OS-000480-GPOS-00225 - stigid@rhel8: RHEL-08-020300 - - ocil_clause: 'dictcheck is not found or not equal to the required value' diff --git a/SOURCES/scap-security-guide-0.1.58-fix_rhel7_doc_link-PR_7443.patch b/SOURCES/scap-security-guide-0.1.58-fix_rhel7_doc_link-PR_7443.patch deleted file mode 100644 index 6fe76c2..0000000 --- a/SOURCES/scap-security-guide-0.1.58-fix_rhel7_doc_link-PR_7443.patch +++ /dev/null @@ -1,22 +0,0 @@ -From 3866ba4f0ce678b68de0ff5f1dc7edbea6a904bb Mon Sep 17 00:00:00 2001 -From: Gabriel Becker -Date: Mon, 23 Aug 2021 12:10:01 +0200 -Subject: [PATCH] Fix RHEL7 documentation link. - ---- - .../screen_locking/smart_card_login/smartcard_auth/rule.yml | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/linux_os/guide/system/accounts/accounts-physical/screen_locking/smart_card_login/smartcard_auth/rule.yml b/linux_os/guide/system/accounts/accounts-physical/screen_locking/smart_card_login/smartcard_auth/rule.yml -index 62a343cf39..8153b31177 100644 ---- a/linux_os/guide/system/accounts/accounts-physical/screen_locking/smart_card_login/smartcard_auth/rule.yml -+++ b/linux_os/guide/system/accounts/accounts-physical/screen_locking/smart_card_login/smartcard_auth/rule.yml -@@ -8,7 +8,7 @@ description: |- - To enable smart card authentication, consult the documentation at: -
    - {{% if product == "rhel7" %}} --
  • {{{ weblink(link="https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/system-level_authentication_guide/smartcards.html#authconfig-smartcards") }}}
  • -+
  • {{{ weblink(link="https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/system-level_authentication_guide/smartcards#authconfig-smartcards") }}}
  • - {{% elif product == "ol7" %}} -
  • {{{ weblink(link="https://docs.oracle.com/en/operating-systems/oracle-linux/7/userauth/ol7-auth.html#ol7-s4-auth") }}}
  • - {{% endif %}} diff --git a/SOURCES/scap-security-guide-0.1.58-fix_rhel7_links-PR_7409.patch b/SOURCES/scap-security-guide-0.1.58-fix_rhel7_links-PR_7409.patch deleted file mode 100644 index 7734df6..0000000 --- a/SOURCES/scap-security-guide-0.1.58-fix_rhel7_links-PR_7409.patch +++ /dev/null @@ -1,160 +0,0 @@ -From ac416fb6b73135b6fdeae850740ca4e10ad9fa1e Mon Sep 17 00:00:00 2001 -From: Gabriel Becker -Date: Wed, 18 Aug 2021 15:16:59 +0200 -Subject: [PATCH] Fix RHEL7 documentation links. - ---- - linux_os/guide/services/ldap/openldap_client/group.yml | 2 +- - linux_os/guide/services/ldap/openldap_server/group.yml | 2 +- - .../ntp/chronyd_or_ntpd_specify_multiple_servers/rule.yml | 2 +- - .../ntp/chronyd_or_ntpd_specify_remote_server/rule.yml | 2 +- - linux_os/guide/services/ntp/group.yml | 2 +- - .../services/ntp/service_chronyd_or_ntpd_enabled/rule.yml | 2 +- - linux_os/guide/services/sssd/group.yml | 2 +- - .../screen_locking/smart_card_login/smartcard_auth/rule.yml | 4 +--- - linux_os/guide/system/auditing/group.yml | 2 +- - .../software/disk_partitioning/encrypt_partitions/rule.yml | 2 +- - .../guide/system/software/gnome/gnome_login_screen/group.yml | 2 +- - 11 files changed, 11 insertions(+), 13 deletions(-) - -diff --git a/linux_os/guide/services/ldap/openldap_client/group.yml b/linux_os/guide/services/ldap/openldap_client/group.yml -index bf17a053cd5..a64f105395f 100644 ---- a/linux_os/guide/services/ldap/openldap_client/group.yml -+++ b/linux_os/guide/services/ldap/openldap_client/group.yml -@@ -13,7 +13,7 @@ description: |- - files, which is useful when trying to use SSL cleanly across several protocols. - Installation and configuration of OpenLDAP on {{{ full_name }}} is available at - {{% if product == "rhel7" %}} -- {{{ weblink(link="https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System-Level_Authentication_Guide/openldap.html") }}}. -+ {{{ weblink(link="https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/system-level_authentication_guide/openldap") }}}. - {{% elif product == "ol7" %}} - {{{ weblink(link="https://docs.oracle.com/en/operating-systems/oracle-linux/7/userauth/ol7-auth.html#ol7-s9-auth") }}}. - {{% endif %}} -diff --git a/linux_os/guide/services/ldap/openldap_server/group.yml b/linux_os/guide/services/ldap/openldap_server/group.yml -index c180820e9fc..d571867a7f8 100644 ---- a/linux_os/guide/services/ldap/openldap_server/group.yml -+++ b/linux_os/guide/services/ldap/openldap_server/group.yml -@@ -7,5 +7,5 @@ description: |- - for an OpenLDAP server. - {{% if product == "rhel7" %}} - Installation and configuration of OpenLDAP on Red Hat Enterprise Linux 7 is available at: -- {{{ weblink(link="https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System-Level_Authentication_Guide/openldap.html") }}}. -+ {{{ weblink(link="https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/system-level_authentication_guide/openldap") }}}. - {{% endif %}} -diff --git a/linux_os/guide/services/ntp/chronyd_or_ntpd_specify_multiple_servers/rule.yml b/linux_os/guide/services/ntp/chronyd_or_ntpd_specify_multiple_servers/rule.yml -index 8f939356ab1..7dc188589ee 100644 ---- a/linux_os/guide/services/ntp/chronyd_or_ntpd_specify_multiple_servers/rule.yml -+++ b/linux_os/guide/services/ntp/chronyd_or_ntpd_specify_multiple_servers/rule.yml -@@ -14,7 +14,7 @@ description: |- - {{% elif product == "ol8" %}} - {{{ weblink(link="https://docs.oracle.com/en/operating-systems/oracle-linux/8/network/ol-nettime.html") }}} - {{% else %}} -- {{{ weblink(link="https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/ch-Configuring_NTP_Using_the_chrony_Suite.html") }}} -+ {{{ weblink(link="https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/system_administrators_guide/ch-configuring_ntp_using_the_chrony_suite") }}} - {{% endif %}} - for more detailed comparison of the features of both of the choices, and for - further guidance how to choose between the two NTP daemons. -diff --git a/linux_os/guide/services/ntp/chronyd_or_ntpd_specify_remote_server/rule.yml b/linux_os/guide/services/ntp/chronyd_or_ntpd_specify_remote_server/rule.yml -index 503aecc0de2..27df8595efa 100644 ---- a/linux_os/guide/services/ntp/chronyd_or_ntpd_specify_remote_server/rule.yml -+++ b/linux_os/guide/services/ntp/chronyd_or_ntpd_specify_remote_server/rule.yml -@@ -14,7 +14,7 @@ description: |- - {{% elif product == "ol8" %}} - {{{ weblink(link="https://docs.oracle.com/en/operating-systems/oracle-linux/8/network/ol-nettime.html") }}} - {{% else %}} -- {{{ weblink(link="https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/ch-Configuring_NTP_Using_the_chrony_Suite.html") }}} -+ {{{ weblink(link="https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/system_administrators_guide/ch-configuring_ntp_using_the_chrony_suite") }}} - {{% endif %}} - for more detailed comparison of the features of both of the choices, and for - further guidance how to choose between the two NTP daemons. -diff --git a/linux_os/guide/services/ntp/group.yml b/linux_os/guide/services/ntp/group.yml -index 181b10dfd65..b944ee03116 100644 ---- a/linux_os/guide/services/ntp/group.yml -+++ b/linux_os/guide/services/ntp/group.yml -@@ -54,7 +54,7 @@ description: |- - {{% elif product == "ol8" %}} - {{{ weblink(link="https://docs.oracle.com/en/operating-systems/oracle-linux/8/network/ol-nettime.html") }}} - {{% elif product == "rhel7" %}} -- {{{ weblink(link="https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/ch-Configuring_NTP_Using_the_chrony_Suite.html") }}} -+ {{{ weblink(link="https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/system_administrators_guide/ch-configuring_ntp_using_the_chrony_suite") }}} - {{% elif "ubuntu" in product %}} - {{{ weblink(link="https://help.ubuntu.com/lts/serverguide/NTP.html") }}} - {{% elif "debian" in product %}} -diff --git a/linux_os/guide/services/ntp/service_chronyd_or_ntpd_enabled/rule.yml b/linux_os/guide/services/ntp/service_chronyd_or_ntpd_enabled/rule.yml -index 065cf301b95..00739816f5e 100644 ---- a/linux_os/guide/services/ntp/service_chronyd_or_ntpd_enabled/rule.yml -+++ b/linux_os/guide/services/ntp/service_chronyd_or_ntpd_enabled/rule.yml -@@ -17,7 +17,7 @@ description: |- - {{% elif product == "ol8" %}} - {{{ weblink(link="https://docs.oracle.com/en/operating-systems/oracle-linux/8/network/ol-nettime.html") }}} - {{% else %}} -- {{{ weblink(link="https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/ch-Configuring_NTP_Using_the_chrony_Suite.html") }}} -+ {{{ weblink(link="https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/system_administrators_guide/ch-configuring_ntp_using_the_chrony_suite") }}} - {{% endif %}} - for guidance which NTP daemon to choose depending on the environment used. - -diff --git a/linux_os/guide/services/sssd/group.yml b/linux_os/guide/services/sssd/group.yml -index 5b0caf7d64b..3f4eced7ca7 100644 ---- a/linux_os/guide/services/sssd/group.yml -+++ b/linux_os/guide/services/sssd/group.yml -@@ -11,7 +11,7 @@ description: |- -

    - For more information, see - {{%- if product == "rhel7" -%}} -- {{{ weblink(link="https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System-Level_Authentication_Guide/SSSD.html") }}} -+ {{{ weblink(link="https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/system-level_authentication_guide/sssd") }}} - {{%- elif product == "rhel8" -%}} - {{{ weblink(link="https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/installing_identity_management/installing-an-ipa-client-basic-scenario_installing-identity-management#sssd-deployment-operations_install-client-basic") }}} - {{%- elif product == "ol7" -%}} -diff --git a/linux_os/guide/system/accounts/accounts-physical/screen_locking/smart_card_login/smartcard_auth/rule.yml b/linux_os/guide/system/accounts/accounts-physical/screen_locking/smart_card_login/smartcard_auth/rule.yml -index fc7f149bf40..62a343cf396 100644 ---- a/linux_os/guide/system/accounts/accounts-physical/screen_locking/smart_card_login/smartcard_auth/rule.yml -+++ b/linux_os/guide/system/accounts/accounts-physical/screen_locking/smart_card_login/smartcard_auth/rule.yml -@@ -8,9 +8,7 @@ description: |- - To enable smart card authentication, consult the documentation at: -
      - {{% if product == "rhel7" %}} --
    • {{{ weblink(link="https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System-Level_Authentication_Guide/smartcards.html#authconfig-smartcards") }}}
    • -- {{% elif product == "rhel8" %}} --
    • {{{ weblink(link="https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System-Level_Authentication_Guide/smartcards.html#authconfig-smartcards") }}}
    • -+
    • {{{ weblink(link="https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/system-level_authentication_guide/smartcards.html#authconfig-smartcards") }}}
    • - {{% elif product == "ol7" %}} -
    • {{{ weblink(link="https://docs.oracle.com/en/operating-systems/oracle-linux/7/userauth/ol7-auth.html#ol7-s4-auth") }}}
    • - {{% endif %}} -diff --git a/linux_os/guide/system/auditing/group.yml b/linux_os/guide/system/auditing/group.yml -index 82f87e81c47..5fce88db032 100644 ---- a/linux_os/guide/system/auditing/group.yml -+++ b/linux_os/guide/system/auditing/group.yml -@@ -38,7 +38,7 @@ description: |- - Examining some example audit records demonstrates how the Linux audit system - satisfies common requirements. - The following example from Fedora Documentation available at -- {{{ weblink(link="https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/SELinux_Users_and_Administrators_Guide/sect-Security-Enhanced_Linux-Troubleshooting-Fixing_Problems.html#sect-Security-Enhanced_Linux-Fixing_Problems-Raw_Audit_Messages") }}} -+ {{{ weblink(link="https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html-single/selinux_users_and_administrators_guide/index#sect-Security-Enhanced_Linux-Fixing_Problems-Raw_Audit_Messages") }}} - shows the substantial amount of information captured in a - two typical "raw" audit messages, followed by a breakdown of the most important - fields. In this example the message is SELinux-related and reports an AVC -diff --git a/linux_os/guide/system/software/disk_partitioning/encrypt_partitions/rule.yml b/linux_os/guide/system/software/disk_partitioning/encrypt_partitions/rule.yml -index add0a41fa94..cd07fb4c0ca 100644 ---- a/linux_os/guide/system/software/disk_partitioning/encrypt_partitions/rule.yml -+++ b/linux_os/guide/system/software/disk_partitioning/encrypt_partitions/rule.yml -@@ -38,7 +38,7 @@ description: |- - {{% elif product in ["sle12", "sle15"] %}} - {{{ weblink(link="https://www.suse.com/documentation/sled-12/book_security/data/sec_security_cryptofs_y2.html") }}} - {{% elif product == "rhel7" %}} -- {{{ weblink(link="https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Security_Guide/sec-Encryption.html") }}}. -+ {{{ weblink(link="https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/security_guide/sec-encryption") }}}. - {{% else %}} - {{{ weblink(link="https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/security_hardening/encrypting-block-devices-using-luks_security-hardening") }}}. - {{% endif %}} -diff --git a/linux_os/guide/system/software/gnome/gnome_login_screen/group.yml b/linux_os/guide/system/software/gnome/gnome_login_screen/group.yml -index 8e8b32f1d79..299b96c0592 100644 ---- a/linux_os/guide/system/software/gnome/gnome_login_screen/group.yml -+++ b/linux_os/guide/system/software/gnome/gnome_login_screen/group.yml -@@ -14,5 +14,5 @@ description: |- - the man page dconf(1). - {{% else %}} - For more information about enforcing preferences in the GNOME3 environment using the DConf -- configuration system, see {{{ weblink(link="https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Desktop_Migration_and_Administration_Guide/index.html") }}}/> and the man page dconf(1). -+ configuration system, see {{{ weblink(link="https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/desktop_migration_and_administration_guide") }}}/> and the man page dconf(1). - {{% endif %}} diff --git a/SOURCES/scap-security-guide-0.1.58-fix_rsyslog_streamdriver_remediation_typos-PR_7570.patch b/SOURCES/scap-security-guide-0.1.58-fix_rsyslog_streamdriver_remediation_typos-PR_7570.patch deleted file mode 100644 index 40928d4..0000000 --- a/SOURCES/scap-security-guide-0.1.58-fix_rsyslog_streamdriver_remediation_typos-PR_7570.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 69eb6ab86201b5566595b3b6ac12f643dcd9e0ca Mon Sep 17 00:00:00 2001 -From: Watson Sato -Date: Thu, 16 Sep 2021 14:59:27 +0200 -Subject: [PATCH] Fix typo in rsyslog streamdriver remediations - -The Ansible remediations don't need to escape '$'. ---- - .../ansible/shared.yml | 2 +- - .../ansible/shared.yml | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdrivermode/ansible/shared.yml b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdrivermode/ansible/shared.yml -index bbd27a00611..5d11103fc0f 100644 ---- a/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdrivermode/ansible/shared.yml -+++ b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdrivermode/ansible/shared.yml -@@ -5,5 +5,5 @@ - # disruption = low - - {{{ ansible_set_config_file(file="/etc/rsyslog.d/encrypt.conf", -- parameter="\$ActionSendStreamDriverMode", value="1", create=true, separator=" ", separator_regex=" ") -+ parameter="$ActionSendStreamDriverMode", value="1", create=true, separator=" ", separator_regex=" ") - }}} -diff --git a/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_defaultnetstreamdriver/ansible/shared.yml b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_defaultnetstreamdriver/ansible/shared.yml -index b215daaef4b..035ab152876 100644 ---- a/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_defaultnetstreamdriver/ansible/shared.yml -+++ b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_defaultnetstreamdriver/ansible/shared.yml -@@ -5,5 +5,5 @@ - # disruption = low - - {{{ ansible_set_config_file(file="/etc/rsyslog.d/encrypt.conf", -- parameter="\$DefaultNetstreamDriver", value="gtls", create=true, separator=" ", separator_regex=" ") -+ parameter="$DefaultNetstreamDriver", value="gtls", create=true, separator=" ", separator_regex=" ") - }}} diff --git a/SOURCES/scap-security-guide-0.1.58-fix_stig_overlay_python2-PR_7317.patch b/SOURCES/scap-security-guide-0.1.58-fix_stig_overlay_python2-PR_7317.patch deleted file mode 100644 index 9624ae7..0000000 --- a/SOURCES/scap-security-guide-0.1.58-fix_stig_overlay_python2-PR_7317.patch +++ /dev/null @@ -1,27 +0,0 @@ -From a032960b4fb8e50386fa02739b6b107b233b64ca Mon Sep 17 00:00:00 2001 -From: Gabriel Becker -Date: Mon, 2 Aug 2021 18:39:58 +0200 -Subject: [PATCH] Fix a python2 issue with STIG overlay generation. - ---- - utils/create-stig-overlay.py | 7 ++++++- - 1 file changed, 6 insertions(+), 1 deletion(-) - -diff --git a/utils/create-stig-overlay.py b/utils/create-stig-overlay.py -index 02deb0b5b2..5d4bb835ca 100755 ---- a/utils/create-stig-overlay.py -+++ b/utils/create-stig-overlay.py -@@ -107,7 +107,12 @@ def new_stig_overlay(xccdftree, ssgtree, outfile, quiet): - lines = new_stig_overlay.findall("overlay") - new_stig_overlay[:] = sorted(lines, key=getkey) - -- dom = xml.dom.minidom.parseString(ET.tostring(new_stig_overlay, encoding="UTF-8", xml_declaration=True)) -+ try: -+ et_str = ET.tostring(new_stig_overlay, encoding="UTF-8", xml_declaration=True) -+ except TypeError: -+ et_str = ET.tostring(new_stig_overlay, encoding="UTF-8") -+ -+ dom = xml.dom.minidom.parseString(et_str) - pretty_xml_as_string = dom.toprettyxml(indent=' ', encoding="UTF-8") - - overlay_directory = os.path.dirname(outfile) diff --git a/SOURCES/scap-security-guide-0.1.58-group_audit_syscalls-PR_7329.patch b/SOURCES/scap-security-guide-0.1.58-group_audit_syscalls-PR_7329.patch deleted file mode 100644 index 1c358ee..0000000 --- a/SOURCES/scap-security-guide-0.1.58-group_audit_syscalls-PR_7329.patch +++ /dev/null @@ -1,4263 +0,0 @@ -From 54a0e7e0c0d00eacf21f68492517db8968d4e0b2 Mon Sep 17 00:00:00 2001 -From: Watson Sato -Date: Wed, 4 Aug 2021 15:01:45 +0200 -Subject: [PATCH 01/31] Change fix_audit_syscall_rule to group syscalls - -The function actually separated the syscalls into individual lines. -* Improve and extend rule skeleton matching with more explicit rule - options for action, arch, auid and other filters. -* Make explicit the syscalls that can be grouped through the - 'syscall_groupings' parameter. -* Make they key to use more explicit, instead of implicit through - 'group'. ---- - .../fix_audit_syscall_rule.sh | 218 ++++++++---------- - .../bash.template | 26 ++- - .../audit_rules_dac_modification/template.py | 4 + - .../bash.template | 13 +- - .../template.py | 14 ++ - .../audit_rules_path_syscall/bash.template | 13 +- - .../audit_rules_path_syscall/template.py | 4 + - .../bash.template | 17 +- - .../template.py | 4 + - .../bash.template | 25 +- - .../template.py | 14 ++ - 11 files changed, 195 insertions(+), 157 deletions(-) - create mode 100644 shared/templates/audit_rules_file_deletion_events/template.py - create mode 100644 shared/templates/audit_rules_unsuccessful_file_modification/template.py - -diff --git a/shared/bash_remediation_functions/fix_audit_syscall_rule.sh b/shared/bash_remediation_functions/fix_audit_syscall_rule.sh -index 4e16af2fb71..6bf5ac15436 100644 ---- a/shared/bash_remediation_functions/fix_audit_syscall_rule.sh -+++ b/shared/bash_remediation_functions/fix_audit_syscall_rule.sh -@@ -10,40 +10,48 @@ - # - # for further details. - # --# Expects five arguments (each of them is required) in the form of: -+# Expects seven arguments (each of them is required) in the form of: - # * audit tool tool used to load audit rules, - # either 'auditctl', or 'augenrules --# * audit rules' pattern audit rule skeleton for same syscall --# * syscall group greatest common string this rule shares --# with other rules from the same group --# * architecture architecture this rule is intended for --# * full form of new rule to add expected full form of audit rule as to be --# added into audit.rules file -+# * action_arch_filters The action and arch filters of the rule -+# For example, "-a always,exit -F arch=b64" -+# * other_filters Other filters that may characterize the rule: -+# For example, "-F a2&03 -F path=/etc/passwd" -+# * auid_filters The auid filters of the rule -+# For example, "-F auid>=1000 -F auid!=unset" -+# * syscall The syscall to ensure presense among audit rules -+# For example, "chown" -+# * syscall_groupings Other syscalls that can be grouped with 'syscall' -+# as a space separated list. -+# For example, "fchown lchown fchownat" -+# * key The key to use when appending a new rule - # --# Note: The 2-th up to 4-th arguments are used to determine how many existing -+# Notes: -+# - The 2-nd up to 4-th arguments are used to determine how many existing - # audit rules will be inspected for resemblance with the new audit rule --# (5-th argument) the function is going to add. The rule's similarity check --# is performed to optimize audit.rules definition (merge syscalls of the same --# group into one rule) to avoid the "single-syscall-per-audit-rule" performance --# penalty. --# --# Example call: --# --# See e.g. 'audit_rules_file_deletion_events.sh' remediation script --# -+# the function is going to add. -+# - The function's similarity check uses the 5-th argument to optimize audit -+# rules definitions (merge syscalls of the same group into one rule) to avoid -+# the "single-syscall-per-audit-rule" performance penalty. -+# - The key argument (7-th argument) is not used when the syscall is grouped to an -+# existing audit rule. The audit rule will retain the key it already had. -+ - function fix_audit_syscall_rule { - - # Load function arguments into local variables - local tool="$1" --local pattern="$2" --local group="$3" --local arch="$4" --local full_rule="$5" -+local action_arch_filters="$2" -+local other_filters="$3" -+local auid_filters="$4" -+local syscall="$5" -+local syscall_grouping -+read -a syscall_grouping <<< "$6" -+local key="$7" - - # Check sanity of the input --if [ $# -ne "5" ] -+if [ $# -ne "7" ] - then -- echo "Usage: fix_audit_syscall_rule 'tool' 'pattern' 'group' 'arch' 'full rule'" -+ echo "Usage: fix_audit_syscall_rule 'tool' 'action_arch_filters' 'other_filters' 'auid_filters' 'syscall' 'syscall_grouping' 'key'" - echo "Aborting." - exit 1 - fi -@@ -74,16 +82,17 @@ then - # file to the list of files to be inspected - elif [ "$tool" == 'auditctl' ] - then -+ default_file="/etc/audit/audit.rules" - files_to_inspect+=('/etc/audit/audit.rules' ) - # If audit tool is 'augenrules', then check if the audit rule is defined - # If rule is defined, add '/etc/audit/rules.d/*.rules' to the list for inspection - # If rule isn't defined yet, add '/etc/audit/rules.d/$key.rules' to the list for inspection - elif [ "$tool" == 'augenrules' ] - then -- # Extract audit $key from audit rule so we can use it later - matches=() -- key=$(expr "$full_rule" : '.*-k[[:space:]]\([^[:space:]]\+\)' '|' "$full_rule" : '.*-F[[:space:]]key=\([^[:space:]]\+\)') -- readarray -t matches < <(sed -s -n -e "\;${pattern};!d" -e "/${arch}/!d" -e "/${group}/!d;F" /etc/audit/rules.d/*.rules) -+ default_file="/etc/audit/rules.d/${key}.rules" -+ # As other_filters may include paths, lets use a different delimiter for it -+ readarray -t matches < <(sed -s -n -e "/${action_arch_filters}/!d" -e "\#${other_filters}#!d" -e "/${auid_filters}/!d" /etc/audit/rules.d/*.rules) - if [ $? -ne 0 ] - then - retval=1 -@@ -106,115 +115,88 @@ then - fi - - # --# Indicator that we want to append $full_rule into $audit_file by default -+# Indicator that we want to append $full_rule into $audit_file or edit a rule in it - local append_expected_rule=0 - - for audit_file in "${files_to_inspect[@]}" - do -- # Filter existing $audit_file rules' definitions to select those that: -- # * follow the rule pattern, and -- # * meet the hardware architecture requirement, and -- # * are current syscall group specific -- readarray -t existing_rules < <(sed -e "\;${pattern};!d" -e "/${arch}/!d" -e "/${group}/!d" "$audit_file") -+ # Filter existing $audit_file rules' definitions to select those that satisfy the rule pattern, -+ # i.e, collect rules that match: -+ # * the action, list and arch, (2-nd argument) -+ # * the other filters, (3-rd argument) -+ # * the auid filters, (4-rd argument) -+ readarray -t similar_rules < <(sed -e "/${action_arch_filters}/!d" -e "\#${other_filters}#!d" -e "/${auid_filters}/!d" "$audit_file") - if [ $? -ne 0 ] - then - retval=1 - fi - -- # Process rules found case-by-case -- for rule in "${existing_rules[@]}" -+ local candidate_rules=() -+ # Filter out rules that have more fields then required. This will remove rules more specific than the required scope -+ for s_rule in "${similar_rules[@]}" -+ do -+ # Strip all the options and fields we know of, -+ # than check if there was any field left over -+ extra_fields=$(sed -E -e "s/${action_arch_filters}//" -e "s#${other_filters}##" -e "s/${auid_filters}//" -e "s/((:?-S [[:alnum:],]+)+)//g" -e "s/-F key=\w+|-k \w+//"<<< "$s_rule") -+ grep -q -- "-F" <<< "$extra_fields" -+ if [ $? -ne 0 ] -+ then -+ candidate_rules+=("$s_rule") -+ fi -+ done -+ -+ # Check if the syscall we want is present in any of the similar existing rules -+ for rule in "${candidate_rules[@]}" - do -- # Found rule is for same arch & key, but differs (e.g. in count of -S arguments) -- if [ "${rule}" != "${full_rule}" ] -+ rule_syscalls=$(echo "$rule" | grep -o -P '(-S [\w,]+)+' | xargs) -+ grep -q -- "\b${syscall}\b" <<< "$rule_syscalls" -+ if [ $? -eq 0 ] - then -- # If so, isolate just '(-S \w)+' substring of that rule -- rule_syscalls=$(echo "$rule" | grep -o -P '(-S \w+ )+') -- # Check if list of '-S syscall' arguments of that rule is subset -- # of '-S syscall' list of expected $full_rule -- if grep -q -- "$rule_syscalls" <<< "$full_rule" -+ # We found a rule with the syscall we want -+ return $retval -+ fi -+ -+ # Check if this rule can be grouped with our target syscall and keep track of it -+ for syscall_g in "${syscall_grouping[@]}" -+ do -+ if grep -q -- "\b${syscall_g}\b" <<< "$rule_syscalls" - then -- # Rule is covered (i.e. the list of -S syscalls for this rule is -- # subset of -S syscalls of $full_rule => existing rule can be deleted -- # Thus delete the rule from audit.rules & our array -- sed -i -e "\;${rule};d" "$audit_file" -- if [ $? -ne 0 ] -- then -- retval=1 -- fi -- existing_rules=("${existing_rules[@]//$rule/}") -- else -- # Rule isn't covered by $full_rule - it besides -S syscall arguments -- # for this group contains also -S syscall arguments for other syscall -- # group. Example: '-S lchown -S fchmod -S fchownat' => group='chown' -- # since 'lchown' & 'fchownat' share 'chown' substring -- # Therefore: -- # * 1) delete the original rule from audit.rules -- # (original '-S lchown -S fchmod -S fchownat' rule would be deleted) -- # * 2) delete the -S syscall arguments for this syscall group, but -- # keep those not belonging to this syscall group -- # (original '-S lchown -S fchmod -S fchownat' would become '-S fchmod' -- # * 3) append the modified (filtered) rule again into audit.rules -- # if the same rule not already present -- # -- # 1) Delete the original rule -- sed -i -e "\;${rule};d" "$audit_file" -- if [ $? -ne 0 ] -- then -- retval=1 -- fi -- -- # 2) Delete syscalls for this group, but keep those from other groups -- # Convert current rule syscall's string into array splitting by '-S' delimiter -- IFS_BKP="$IFS" -- IFS=$'-S' -- read -a rule_syscalls_as_array <<< "$rule_syscalls" -- # Reset IFS back to default -- IFS="$IFS_BKP" -- # Splitting by "-S" can't be replaced by the readarray functionality easily -- -- # Declare new empty string to hold '-S syscall' arguments from other groups -- new_syscalls_for_rule='' -- # Walk through existing '-S syscall' arguments -- for syscall_arg in "${rule_syscalls_as_array[@]}" -- do -- # Skip empty $syscall_arg values -- if [ "$syscall_arg" == '' ] -- then -- continue -- fi -- # If the '-S syscall' doesn't belong to current group add it to the new list -- # (together with adding '-S' delimiter back for each of such item found) -- if grep -q -v -- "$group" <<< "$syscall_arg" -- then -- new_syscalls_for_rule="$new_syscalls_for_rule -S $syscall_arg" -- fi -- done -- # Replace original '-S syscall' list with the new one for this rule -- updated_rule=${rule//$rule_syscalls/$new_syscalls_for_rule} -- # Squeeze repeated whitespace characters in rule definition (if any) into one -- updated_rule=$(echo "$updated_rule" | tr -s '[:space:]') -- # 3) Append the modified / filtered rule again into audit.rules -- # (but only in case it's not present yet to prevent duplicate definitions) -- if ! grep -q -- "$updated_rule" "$audit_file" -- then -- echo "$updated_rule" >> "$audit_file" -- fi -+ local file_to_edit=${audit_file} -+ local rule_to_edit=${rule} -+ local rule_syscalls_to_edit=${rule_syscalls} - fi -- else -- # $audit_file already contains the expected rule form for this -- # architecture & key => don't insert it second time -- append_expected_rule=1 -- fi -+ done - done -+done -+ -+ -+# We checked all rules that matched the expected resemblance patter (action, arch & auid) -+# At this point we know if we need to either append the $full_rule or group -+# the syscall together with an exsiting rule - -- # We deleted all rules that were subset of the expected one for this arch & key. -- # Also isolated rules containing system calls not from this system calls group. -- # Now append the expected rule if it's not present in $audit_file yet -- if [[ ${append_expected_rule} -eq "0" ]] -+# Append the full_rule if it cannot be grouped to any other rule -+if [ -z ${rule_to_edit+x} ] -+then -+ # Build full_rule while avoid adding double spaces when other_filters is empty -+ local full_rule="$action_arch_filters -S $syscall $([[ $other_filters ]] && echo "$other_filters ")$auid_filters -F key=$key" -+ echo "$full_rule" >> "$default_file" -+else -+ # Check if the syscalls are declared as a comma separated list or -+ # as multiple -S parameters -+ if grep -q -- "," <<< "${rule_syscalls_to_edit}" - then -- echo "$full_rule" >> "$audit_file" -+ new_grouped_syscalls="${rule_syscalls_to_edit},${syscall}" -+ else -+ new_grouped_syscalls="${rule_syscalls_to_edit} -S ${syscall}" - fi --done -+ -+ # Group the syscall in the rule -+ sed -i -e "\#${rule_to_edit}#s#${rule_syscalls_to_edit}#${new_grouped_syscalls}#" "$file_to_edit" -+ if [ $? -ne 0 ] -+ then -+ retval=1 -+ fi -+fi - - return $retval - -diff --git a/shared/templates/audit_rules_dac_modification/bash.template b/shared/templates/audit_rules_dac_modification/bash.template -index d64d264635c..b2de8d355e1 100644 ---- a/shared/templates/audit_rules_dac_modification/bash.template -+++ b/shared/templates/audit_rules_dac_modification/bash.template -@@ -9,25 +9,31 @@ - - for ARCH in "${RULE_ARCHS[@]}" - do -- PATTERN="-a always,exit -F arch=$ARCH -S {{{ ATTR }}} -F auid>=.*" -- GROUP="perm_mod" -- FULL_RULE="-a always,exit -F arch=$ARCH -S {{{ ATTR }}} -F auid>={{{ auid }}} -F auid!=unset -F key=perm_mod" -+ ACTION_ARCH_FILTERS="-a always,exit -F arch=$ARCH" -+ OTHER_FILTERS="" -+ AUID_FILTERS="-F auid>={{{ auid }}} -F auid!=unset" -+ SYSCALL="{{{ ATTR }}}" -+ KEY="perm_mod" -+ SYSCALL_GROUPING="{{{ SYSCALL_GROUPING }}}" - - # Perform the remediation for both possible tools: 'auditctl' and 'augenrules' -- fix_audit_syscall_rule "augenrules" "$PATTERN" "$GROUP" "$ARCH" "$FULL_RULE" -- fix_audit_syscall_rule "auditctl" "$PATTERN" "$GROUP" "$ARCH" "$FULL_RULE" -+ fix_audit_syscall_rule "augenrules" "$ACTION_ARCH_FILTERS" "$OTHER_FILTERS" "$AUID_FILTERS" "$SYSCALL" "$SYSCALL_GROUPING" "$KEY" -+ fix_audit_syscall_rule "auditctl" "$ACTION_ARCH_FILTERS" "$OTHER_FILTERS" "$AUID_FILTERS" "$SYSCALL" "$SYSCALL_GROUPING" "$KEY" - done - - - {{% if CHECK_ROOT_USER %}} - for ARCH in "${RULE_ARCHS[@]}" - do -- PATTERN="-a always,exit -F arch=$ARCH -S {{{ ATTR }}} -F auid=0.*" -- GROUP="perm_mod" -- FULL_RULE="-a always,exit -F arch=$ARCH -S {{{ ATTR }}} -F auid=0 -F key=perm_mod" -+ ACTION_ARCH_FILTERS="-a always,exit -F arch=$ARCH" -+ OTHER_FILTERS="" -+ AUID_FILTERS="-F auid=0" -+ SYSCALL="{{{ ATTR }}}" -+ KEY="perm_mod" -+ SYSCALL_GROUPING="{{{ SYSCALL_GROUPING }}}" - - # Perform the remediation for both possible tools: 'auditctl' and 'augenrules' -- fix_audit_syscall_rule "augenrules" "$PATTERN" "$GROUP" "$ARCH" "$FULL_RULE" -- fix_audit_syscall_rule "auditctl" "$PATTERN" "$GROUP" "$ARCH" "$FULL_RULE" -+ fix_audit_syscall_rule "augenrules" "$ACTION_ARCH_FILTERS" "$OTHER_FILTERS" "$AUID_FILTERS" "$SYSCALL" "$SYSCALL_GROUPING" "$KEY" -+ fix_audit_syscall_rule "auditctl" "$ACTION_ARCH_FILTERS" "$OTHER_FILTERS" "$AUID_FILTERS" "$SYSCALL" "$SYSCALL_GROUPING" "$KEY" - done - {{% endif %}} -diff --git a/shared/templates/audit_rules_dac_modification/template.py b/shared/templates/audit_rules_dac_modification/template.py -index e12e9c27e56..7dc53e81f7d 100644 ---- a/shared/templates/audit_rules_dac_modification/template.py -+++ b/shared/templates/audit_rules_dac_modification/template.py -@@ -3,5 +3,9 @@ - - def preprocess(data, lang): - data["check_root_user"] = parse_template_boolean_value(data, parameter="check_root_user", default_value=False) -+ if lang == "bash": -+ if "syscall_grouping" in data: -+ # Make it easier to tranform the syscall_grouping into a Bash array -+ data["syscall_grouping"] = " ".join(data["syscall_grouping"]) - - return data -diff --git a/shared/templates/audit_rules_file_deletion_events/bash.template b/shared/templates/audit_rules_file_deletion_events/bash.template -index 851b0fd43e3..b5b4c46a7cd 100644 ---- a/shared/templates/audit_rules_file_deletion_events/bash.template -+++ b/shared/templates/audit_rules_file_deletion_events/bash.template -@@ -9,10 +9,13 @@ - - for ARCH in "${RULE_ARCHS[@]}" - do -- PATTERN="-a always,exit -F arch=$ARCH -S {{{ NAME }}}.*" -- GROUP="delete" -- FULL_RULE="-a always,exit -F arch=$ARCH -S {{{ NAME }}} -F auid>={{{ auid }}} -F auid!=unset -F key=delete" -+ ACTION_ARCH_FILTERS="-a always,exit -F arch=$ARCH" -+ OTHER_FILTERS="" -+ AUID_FILTERS="-F auid>={{{ auid }}} -F auid!=unset" -+ SYSCALL="{{{ NAME }}}" -+ KEY="delete" -+ SYSCALL_GROUPING="{{{ SYSCALL_GROUPING }}}" - # Perform the remediation for both possible tools: 'auditctl' and 'augenrules' -- fix_audit_syscall_rule "auditctl" "$PATTERN" "$GROUP" "$ARCH" "$FULL_RULE" -- fix_audit_syscall_rule "augenrules" "$PATTERN" "$GROUP" "$ARCH" "$FULL_RULE" -+ fix_audit_syscall_rule "augenrules" "$ACTION_ARCH_FILTERS" "$OTHER_FILTERS" "$AUID_FILTERS" "$SYSCALL" "$SYSCALL_GROUPING" "$KEY" -+ fix_audit_syscall_rule "auditctl" "$ACTION_ARCH_FILTERS" "$OTHER_FILTERS" "$AUID_FILTERS" "$SYSCALL" "$SYSCALL_GROUPING" "$KEY" - done -diff --git a/shared/templates/audit_rules_file_deletion_events/template.py b/shared/templates/audit_rules_file_deletion_events/template.py -new file mode 100644 -index 00000000000..7be137c1eb9 ---- /dev/null -+++ b/shared/templates/audit_rules_file_deletion_events/template.py -@@ -0,0 +1,14 @@ -+import ssg.utils -+ -+ -+def _audit_rules_file_deletion_events(data, lang): -+ if lang == "bash": -+ if "syscall_grouping" in data: -+ # Make it easier to tranform the syscall_grouping into a Bash array -+ data["syscall_grouping"] = " ".join(data["syscall_grouping"]) -+ return data -+ -+ -+def preprocess(data, lang): -+ return _audit_rules_file_deletion_events(data, lang) -+ -diff --git a/shared/templates/audit_rules_path_syscall/bash.template b/shared/templates/audit_rules_path_syscall/bash.template -index 656d168ddd2..676f6c37deb 100644 ---- a/shared/templates/audit_rules_path_syscall/bash.template -+++ b/shared/templates/audit_rules_path_syscall/bash.template -@@ -9,10 +9,13 @@ - - for ARCH in "${RULE_ARCHS[@]}" - do -- PATTERN="-a always,exit -F arch=$ARCH -S {{{ SYSCALL }}} -F {{{ POS }}}&03 -F path={{{ PATH }}}.*" -- GROUP="modify" -- FULL_RULE="-a always,exit -F arch=$ARCH -S {{{ SYSCALL }}} -F {{{ POS }}}&03 -F path={{{ PATH }}} -F auid>={{{ auid }}} -F auid!=unset -F key=modify" -+ ACTION_ARCH_FILTERS="-a always,exit -F arch=$ARCH" -+ OTHER_FILTERS="-F {{{ POS }}}&03 -F path={{{ PATH }}}" -+ AUID_FILTERS="-F auid>={{{ auid }}} -F auid!=unset" -+ SYSCALL="{{{ SYSCALL }}}" -+ KEY="user-modify" -+ SYSCALL_GROUPING="{{{ SYSCALL_GROUPING }}}" - # Perform the remediation for both possible tools: 'auditctl' and 'augenrules' -- fix_audit_syscall_rule "auditctl" "$PATTERN" "$GROUP" "$ARCH" "$FULL_RULE" -- fix_audit_syscall_rule "augenrules" "$PATTERN" "$GROUP" "$ARCH" "$FULL_RULE" -+ fix_audit_syscall_rule "augenrules" "$ACTION_ARCH_FILTERS" "$OTHER_FILTERS" "$AUID_FILTERS" "$SYSCALL" "$SYSCALL_GROUPING" "$KEY" -+ fix_audit_syscall_rule "auditctl" "$ACTION_ARCH_FILTERS" "$OTHER_FILTERS" "$AUID_FILTERS" "$SYSCALL" "$SYSCALL_GROUPING" "$KEY" - done -diff --git a/shared/templates/audit_rules_path_syscall/template.py b/shared/templates/audit_rules_path_syscall/template.py -index beb25a6e69d..7e0877a02b9 100644 ---- a/shared/templates/audit_rules_path_syscall/template.py -+++ b/shared/templates/audit_rules_path_syscall/template.py -@@ -7,4 +7,8 @@ def preprocess(data, lang): - # remove root slash made into '_' - pathid = pathid[1:] - data["pathid"] = pathid -+ elif lang == "bash": -+ if "syscall_grouping" in data: -+ # Make it easier to tranform the syscall_grouping into a Bash array -+ data["syscall_grouping"] = " ".join(data["syscall_grouping"]) - return data -diff --git a/shared/templates/audit_rules_privileged_commands/bash.template b/shared/templates/audit_rules_privileged_commands/bash.template -index d03a92061cb..bd9d4d12484 100644 ---- a/shared/templates/audit_rules_privileged_commands/bash.template -+++ b/shared/templates/audit_rules_privileged_commands/bash.template -@@ -1,16 +1,17 @@ - {{%- if product in ["rhel8", "rhel9", "sle12", "sle15"] %}} -- {{%- set perm_x="-F perm=x " %}} -+ {{%- set perm_x=" -F perm=x " %}} - {{%- endif %}} - # platform = multi_platform_rhel,multi_platform_fedora,multi_platform_ol,multi_platform_rhv - - # Include source function library. - . /usr/share/scap-security-guide/remediation_functions - --PATTERN="-a always,exit -F path={{{ PATH }}}\\s\\+.*" --GROUP="privileged" --# Although the fix doesn't use ARCH, we reset it because it could have been set by some other remediation --ARCH="" --FULL_RULE="-a always,exit -F path={{{ PATH }}} {{{ perm_x }}}-F auid>={{{ auid }}} -F auid!=unset -F key=privileged" -+ACTION_ARCH_FILTERS="-a always,exit" -+OTHER_FILTERS="-F path={{{ PATH }}}{{{ perm_x }}}" -+AUID_FILTERS="-F auid>={{{ auid }}} -F auid!=unset" -+SYSCALL="{{{ ATTR }}}" -+KEY="privileged" -+SYSCALL_GROUPING="{{{ SYSCALL_GROUPING }}}" - # Perform the remediation for both possible tools: 'auditctl' and 'augenrules' --fix_audit_syscall_rule "auditctl" "$PATTERN" "$GROUP" "$ARCH" "$FULL_RULE" --fix_audit_syscall_rule "augenrules" "$PATTERN" "$GROUP" "$ARCH" "$FULL_RULE" -+fix_audit_syscall_rule "augenrules" "$ACTION_ARCH_FILTERS" "$OTHER_FILTERS" "$AUID_FILTERS" "$SYSCALL" "$SYSCALL_GROUPING" "$KEY" -+fix_audit_syscall_rule "auditctl" "$ACTION_ARCH_FILTERS" "$OTHER_FILTERS" "$AUID_FILTERS" "$SYSCALL" "$SYSCALL_GROUPING" "$KEY" -diff --git a/shared/templates/audit_rules_privileged_commands/template.py b/shared/templates/audit_rules_privileged_commands/template.py -index 444b2aab083..43302a6690a 100644 ---- a/shared/templates/audit_rules_privileged_commands/template.py -+++ b/shared/templates/audit_rules_privileged_commands/template.py -@@ -15,4 +15,8 @@ def preprocess(data, lang): - if npath[0] == '_': - npath = npath[1:] - data["normalized_path"] = npath -+ elif lang == "bash": -+ if "syscall_grouping" in data: -+ # Make it easier to tranform the syscall_grouping into a Bash array -+ data["syscall_grouping"] = " ".join(data["syscall_grouping"]) - return data -diff --git a/shared/templates/audit_rules_unsuccessful_file_modification/bash.template b/shared/templates/audit_rules_unsuccessful_file_modification/bash.template -index daf146f7eb5..4adaa86fd58 100644 ---- a/shared/templates/audit_rules_unsuccessful_file_modification/bash.template -+++ b/shared/templates/audit_rules_unsuccessful_file_modification/bash.template -@@ -7,22 +7,25 @@ - # Retrieve hardware architecture of the underlying system - [ "$(getconf LONG_BIT)" = "32" ] && RULE_ARCHS=("b32") || RULE_ARCHS=("b32" "b64") - -+AUID_FILTERS="-F auid>={{{ auid }}} -F auid!=unset" -+SYSCALL="{{{ NAME }}}" -+KEY="access" -+SYSCALL_GROUPING="{{{ SYSCALL_GROUPING }}}" -+ - for ARCH in "${RULE_ARCHS[@]}" - do -- PATTERN="-a always,exit -F arch=$ARCH -S {{{ NAME }}} -F exit=-EACCES.*" -- GROUP="access" -- FULL_RULE="-a always,exit -F arch=$ARCH -S {{{ NAME }}} -F exit=-EACCES -F auid>={{{ auid }}} -F auid!=unset -F key=access" -+ ACTION_ARCH_FILTERS="-a always,exit -F arch=$ARCH" -+ OTHER_FILTERS="-F exit=-EACCES" - # Perform the remediation for both possible tools: 'auditctl' and 'augenrules' -- fix_audit_syscall_rule "auditctl" "$PATTERN" "$GROUP" "$ARCH" "$FULL_RULE" -- fix_audit_syscall_rule "augenrules" "$PATTERN" "$GROUP" "$ARCH" "$FULL_RULE" -+ fix_audit_syscall_rule "augenrules" "$ACTION_ARCH_FILTERS" "$OTHER_FILTERS" "$AUID_FILTERS" "$SYSCALL" "$SYSCALL_GROUPING" "$KEY" -+ fix_audit_syscall_rule "auditctl" "$ACTION_ARCH_FILTERS" "$OTHER_FILTERS" "$AUID_FILTERS" "$SYSCALL" "$SYSCALL_GROUPING" "$KEY" - done - - for ARCH in "${RULE_ARCHS[@]}" - do -- PATTERN="-a always,exit -F arch=$ARCH -S {{{ NAME }}} -F exit=-EPERM.*" -- GROUP="access" -- FULL_RULE="-a always,exit -F arch=$ARCH -S {{{ NAME }}} -F exit=-EPERM -F auid>={{{ auid }}} -F auid!=unset -F key=access" -- # Perform the remediation for both possible tools: 'auditctl' and 'augenrules' -- fix_audit_syscall_rule "auditctl" "$PATTERN" "$GROUP" "$ARCH" "$FULL_RULE" -- fix_audit_syscall_rule "augenrules" "$PATTERN" "$GROUP" "$ARCH" "$FULL_RULE" -+ ACTION_ARCH_FILTERS="-a always,exit -F arch=$ARCH" -+ OTHER_FILTERS="-F exit=-EPERM" -+ # Perform the remediation for both possible tools: 'auditctl' and 'augenrules' -+ fix_audit_syscall_rule "augenrules" "$ACTION_ARCH_FILTERS" "$OTHER_FILTERS" "$AUID_FILTERS" "$SYSCALL" "$SYSCALL_GROUPING" "$KEY" -+ fix_audit_syscall_rule "auditctl" "$ACTION_ARCH_FILTERS" "$OTHER_FILTERS" "$AUID_FILTERS" "$SYSCALL" "$SYSCALL_GROUPING" "$KEY" - done -diff --git a/shared/templates/audit_rules_unsuccessful_file_modification/template.py b/shared/templates/audit_rules_unsuccessful_file_modification/template.py -new file mode 100644 -index 00000000000..a4e58609f66 ---- /dev/null -+++ b/shared/templates/audit_rules_unsuccessful_file_modification/template.py -@@ -0,0 +1,14 @@ -+import ssg.utils -+ -+ -+def _audit_rules_unsuccessful_file_modification(data, lang): -+ if lang == "bash": -+ if "syscall_grouping" in data: -+ # Make it easier to tranform the syscall_grouping into a Bash array -+ data["syscall_grouping"] = " ".join(data["syscall_grouping"]) -+ return data -+ -+ -+def preprocess(data, lang): -+ return _audit_rules_unsuccessful_file_modification(data, lang) -+ - -From 4c682eadba5ec03ed1204ba9d1b190634bd855d8 Mon Sep 17 00:00:00 2001 -From: Watson Sato -Date: Wed, 4 Aug 2021 15:32:18 +0200 -Subject: [PATCH 02/31] Set syscall grouping for chmod rules - ---- - .../audit_rules_dac_modification_chmod/rule.yml | 4 ++++ - .../audit_rules_dac_modification_fchmod/rule.yml | 4 ++++ - .../audit_rules_dac_modification_fchmodat/rule.yml | 4 ++++ - 3 files changed, 12 insertions(+) - -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_chmod/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_chmod/rule.yml -index bc3e47523f5..07d37b18aa3 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_chmod/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_chmod/rule.yml -@@ -76,3 +76,7 @@ template: - name: audit_rules_dac_modification - vars: - attr: chmod -+ syscall_grouping: -+ - chmod -+ - fchmod -+ - fchmodat -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fchmod/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fchmod/rule.yml -index ed4d88cb0c6..6c3cc5592ac 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fchmod/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fchmod/rule.yml -@@ -74,3 +74,7 @@ template: - name: audit_rules_dac_modification - vars: - attr: fchmod -+ syscall_grouping: -+ - chmod -+ - fchmod -+ - fchmodat -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fchmodat/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fchmodat/rule.yml -index 2db3878939a..3e51d482a9c 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fchmodat/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fchmodat/rule.yml -@@ -74,3 +74,7 @@ template: - name: audit_rules_dac_modification - vars: - attr: fchmodat -+ syscall_grouping: -+ - chmod -+ - fchmod -+ - fchmodat - -From eaaaa86b8a07082cdc92d967af09e0908ef22905 Mon Sep 17 00:00:00 2001 -From: Watson Sato -Date: Wed, 4 Aug 2021 15:32:52 +0200 -Subject: [PATCH 03/31] Set syscall grouping for chown rules - ---- - .../audit_rules_dac_modification_chown/rule.yml | 5 +++++ - .../audit_rules_dac_modification_fchown/rule.yml | 5 +++++ - .../audit_rules_dac_modification_fchownat/rule.yml | 5 +++++ - .../audit_rules_dac_modification_lchown/rule.yml | 5 +++++ - 4 files changed, 20 insertions(+) - -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_chown/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_chown/rule.yml -index 6b3236cf953..e2d9944a3bb 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_chown/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_chown/rule.yml -@@ -74,3 +74,8 @@ template: - name: audit_rules_dac_modification - vars: - attr: chown -+ syscall_grouping: -+ - chown -+ - fchown -+ - fchownat -+ - lchown -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fchown/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fchown/rule.yml -index 37dfb89ef29..d89875fcaab 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fchown/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fchown/rule.yml -@@ -77,3 +77,8 @@ template: - name: audit_rules_dac_modification - vars: - attr: fchown -+ syscall_grouping: -+ - chown -+ - fchown -+ - fchownat -+ - lchown -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fchownat/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fchownat/rule.yml -index f75ac769d8d..e6caaeb5c9f 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fchownat/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fchownat/rule.yml -@@ -74,3 +74,8 @@ template: - name: audit_rules_dac_modification - vars: - attr: fchownat -+ syscall_grouping: -+ - chown -+ - fchown -+ - fchownat -+ - lchown -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_lchown/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_lchown/rule.yml -index edc053bfb30..190509c0c8d 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_lchown/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_lchown/rule.yml -@@ -74,3 +74,8 @@ template: - name: audit_rules_dac_modification - vars: - attr: lchown -+ syscall_grouping: -+ - chown -+ - fchown -+ - fchownat -+ - lchown - -From b1d747cb65e6e869be2b3c99d295cb6f75c98b61 Mon Sep 17 00:00:00 2001 -From: Watson Sato -Date: Wed, 4 Aug 2021 15:33:21 +0200 -Subject: [PATCH 04/31] Set syscall groupings for set/remove xattr rules - ---- - .../audit_rules_dac_modification_fremovexattr/rule.yml | 7 +++++++ - .../audit_rules_dac_modification_fsetxattr/rule.yml | 7 +++++++ - .../audit_rules_dac_modification_lremovexattr/rule.yml | 7 +++++++ - .../audit_rules_dac_modification_lsetxattr/rule.yml | 7 +++++++ - .../audit_rules_dac_modification_removexattr/rule.yml | 7 +++++++ - .../audit_rules_dac_modification_setxattr/rule.yml | 7 +++++++ - 6 files changed, 42 insertions(+) - -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fremovexattr/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fremovexattr/rule.yml -index 5bd1b25eafb..b9ad3c7942e 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fremovexattr/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fremovexattr/rule.yml -@@ -93,3 +93,10 @@ template: - attr: fremovexattr - check_root_user@rhel8: "true" - check_root_user@rhel9: "true" -+ syscall_grouping: -+ - fremovexattr -+ - lremovexattr -+ - removexattr -+ - fsetxattr -+ - lsetxattr -+ - setxattr -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fsetxattr/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fsetxattr/rule.yml -index 410dd8a5efa..cedf05f9765 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fsetxattr/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fsetxattr/rule.yml -@@ -88,3 +88,10 @@ template: - attr: fsetxattr - check_root_user@rhel8: "true" - check_root_user@rhel9: "true" -+ syscall_grouping: -+ - fremovexattr -+ - lremovexattr -+ - removexattr -+ - fsetxattr -+ - lsetxattr -+ - setxattr -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_lremovexattr/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_lremovexattr/rule.yml -index 947c768efd8..ffdacdf09e7 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_lremovexattr/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_lremovexattr/rule.yml -@@ -93,3 +93,10 @@ template: - attr: lremovexattr - check_root_user@rhel8: "true" - check_root_user@rhel9: "true" -+ syscall_grouping: -+ - fremovexattr -+ - lremovexattr -+ - removexattr -+ - fsetxattr -+ - lsetxattr -+ - setxattr -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_lsetxattr/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_lsetxattr/rule.yml -index ed1fd3715d2..3662262f674 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_lsetxattr/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_lsetxattr/rule.yml -@@ -86,3 +86,10 @@ template: - attr: lsetxattr - check_root_user@rhel8: "true" - check_root_user@rhel9: "true" -+ syscall_grouping: -+ - fremovexattr -+ - lremovexattr -+ - removexattr -+ - fsetxattr -+ - lsetxattr -+ - setxattr -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_removexattr/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_removexattr/rule.yml -index 61e69432d1a..ac9d3492aad 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_removexattr/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_removexattr/rule.yml -@@ -92,3 +92,10 @@ template: - attr: removexattr - check_root_user@rhel8: "true" - check_root_user@rhel9: "true" -+ syscall_grouping: -+ - fremovexattr -+ - lremovexattr -+ - removexattr -+ - fsetxattr -+ - lsetxattr -+ - setxattr -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_setxattr/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_setxattr/rule.yml -index 12489a74a01..b661a1f99ae 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_setxattr/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_setxattr/rule.yml -@@ -88,3 +88,10 @@ template: - attr: setxattr - check_root_user@rhel8: "true" - check_root_user@rhel9: "true" -+ syscall_grouping: -+ - fremovexattr -+ - lremovexattr -+ - removexattr -+ - fsetxattr -+ - lsetxattr -+ - setxattr - -From 46a087995ffe3d49644d8e8adcbc9b1747947339 Mon Sep 17 00:00:00 2001 -From: Watson Sato -Date: Wed, 4 Aug 2021 15:34:08 +0200 -Subject: [PATCH 05/31] Set syscall groupings for remove and delete rules - ---- - .../audit_rules_file_deletion_events_rename/rule.yml | 6 ++++++ - .../audit_rules_file_deletion_events_renameat/rule.yml | 6 ++++++ - .../audit_rules_file_deletion_events_rmdir/rule.yml | 6 ++++++ - .../audit_rules_file_deletion_events_unlink/rule.yml | 6 ++++++ - .../audit_rules_file_deletion_events_unlinkat/rule.yml | 6 ++++++ - 5 files changed, 30 insertions(+) - -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events_rename/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events_rename/rule.yml -index 9dd83f6dbae..d6dcb8694ad 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events_rename/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events_rename/rule.yml -@@ -59,3 +59,9 @@ template: - name: audit_rules_file_deletion_events - vars: - name: rename -+ syscall_grouping: -+ - unlink -+ - unlinkat -+ - rename -+ - renameat -+ - rmdir -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events_renameat/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events_renameat/rule.yml -index cd9aa9f5e61..5f583992c48 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events_renameat/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events_renameat/rule.yml -@@ -59,3 +59,9 @@ template: - name: audit_rules_file_deletion_events - vars: - name: renameat -+ syscall_grouping: -+ - unlink -+ - unlinkat -+ - rename -+ - renameat -+ - rmdir -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events_rmdir/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events_rmdir/rule.yml -index 6e0bb755b0d..5368c9dad58 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events_rmdir/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events_rmdir/rule.yml -@@ -57,3 +57,9 @@ template: - name: audit_rules_file_deletion_events - vars: - name: rmdir -+ syscall_grouping: -+ - unlink -+ - unlinkat -+ - rename -+ - renameat -+ - rmdir -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events_unlink/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events_unlink/rule.yml -index be4e328b7c8..ecdca27b14d 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events_unlink/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events_unlink/rule.yml -@@ -59,3 +59,9 @@ template: - name: audit_rules_file_deletion_events - vars: - name: unlink -+ syscall_grouping: -+ - unlink -+ - unlinkat -+ - rename -+ - renameat -+ - rmdir -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events_unlinkat/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events_unlinkat/rule.yml -index eaf8f1e08bd..158d24dc708 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events_unlinkat/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events_unlinkat/rule.yml -@@ -59,3 +59,9 @@ template: - name: audit_rules_file_deletion_events - vars: - name: unlinkat -+ syscall_grouping: -+ - unlink -+ - unlinkat -+ - rename -+ - renameat -+ - rmdir - -From 121afe11a8c050b7c07c8a2595da898dc8f7a1b6 Mon Sep 17 00:00:00 2001 -From: Watson Sato -Date: Wed, 4 Aug 2021 15:34:44 +0200 -Subject: [PATCH 06/31] Set syscall grouping for create, open and truncate - rules - ---- - .../rule.yml | 7 +++++++ - .../rule.yml | 7 +++++++ - .../rule.yml | 7 +++++++ - .../rule.yml | 7 +++++++ - .../rule.yml | 7 +++++++ - .../rule.yml | 7 +++++++ - 6 files changed, 42 insertions(+) - -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_creat/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_creat/rule.yml -index 08cc99133a4..5c751cb230e 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_creat/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_creat/rule.yml -@@ -79,3 +79,10 @@ template: - name: audit_rules_unsuccessful_file_modification - vars: - name: creat -+ syscall_grouping: -+ - creat -+ - ftruncate -+ - truncate -+ - open -+ - openat -+ - open_by_handle_at -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_ftruncate/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_ftruncate/rule.yml -index e9b688b9b4e..76bcea154bf 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_ftruncate/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_ftruncate/rule.yml -@@ -82,3 +82,10 @@ template: - name: audit_rules_unsuccessful_file_modification - vars: - name: ftruncate -+ syscall_grouping: -+ - creat -+ - ftruncate -+ - truncate -+ - open -+ - openat -+ - open_by_handle_at -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_open/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_open/rule.yml -index 6e242270074..7c6764d2a01 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_open/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_open/rule.yml -@@ -82,3 +82,10 @@ template: - name: audit_rules_unsuccessful_file_modification - vars: - name: open -+ syscall_grouping: -+ - creat -+ - ftruncate -+ - truncate -+ - open -+ - openat -+ - open_by_handle_at -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_open_by_handle_at/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_open_by_handle_at/rule.yml -index 2b6008fce1f..9bb5ffe3fcb 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_open_by_handle_at/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_open_by_handle_at/rule.yml -@@ -78,3 +78,10 @@ template: - name: audit_rules_unsuccessful_file_modification - vars: - name: open_by_handle_at -+ syscall_grouping: -+ - creat -+ - ftruncate -+ - truncate -+ - open -+ - openat -+ - open_by_handle_at -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_openat/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_openat/rule.yml -index 308e3da789a..c99656cc744 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_openat/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_openat/rule.yml -@@ -82,3 +82,10 @@ template: - name: audit_rules_unsuccessful_file_modification - vars: - name: openat -+ syscall_grouping: -+ - creat -+ - ftruncate -+ - truncate -+ - open -+ - openat -+ - open_by_handle_at -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_truncate/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_truncate/rule.yml -index 6ab8d289176..12771beb7e0 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_truncate/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_truncate/rule.yml -@@ -81,3 +81,10 @@ template: - name: audit_rules_unsuccessful_file_modification - vars: - name: truncate -+ syscall_grouping: -+ - creat -+ - ftruncate -+ - truncate -+ - open -+ - openat -+ - open_by_handle_at - -From 9dd2d39f3b5b6e0ac9f961718d8e3d7e1a02e101 Mon Sep 17 00:00:00 2001 -From: Watson Sato -Date: Wed, 4 Aug 2021 17:15:16 +0200 -Subject: [PATCH 07/31] Print filenames in sed command - -The ";F" was not a typo! -Hopefully this makes it more explicit the function of '-e "F"'. ---- - .../bash_remediation_functions/fix_audit_syscall_rule.sh | 9 ++------- - 1 file changed, 2 insertions(+), 7 deletions(-) - -diff --git a/shared/bash_remediation_functions/fix_audit_syscall_rule.sh b/shared/bash_remediation_functions/fix_audit_syscall_rule.sh -index 6bf5ac15436..791e64d05c1 100644 ---- a/shared/bash_remediation_functions/fix_audit_syscall_rule.sh -+++ b/shared/bash_remediation_functions/fix_audit_syscall_rule.sh -@@ -1,4 +1,3 @@ --# Function to fix syscall audit rule for given system call. It is - # based on example audit syscall rule definitions as outlined in - # /usr/share/doc/audit-2.3.7/stig.rules file provided with the audit - # package. It will combine multiple system calls belonging to the same -@@ -89,18 +88,14 @@ then - # If rule isn't defined yet, add '/etc/audit/rules.d/$key.rules' to the list for inspection - elif [ "$tool" == 'augenrules' ] - then -- matches=() - default_file="/etc/audit/rules.d/${key}.rules" - # As other_filters may include paths, lets use a different delimiter for it -- readarray -t matches < <(sed -s -n -e "/${action_arch_filters}/!d" -e "\#${other_filters}#!d" -e "/${auid_filters}/!d" /etc/audit/rules.d/*.rules) -+ # The "F" script expression tells sed to print the filenames where the expressions matched -+ readarray -t files_to_inspect < <(sed -s -n -e "/${action_arch_filters}/!d" -e "\#${other_filters}#!d" -e "/${auid_filters}/!d" -e "F" /etc/audit/rules.d/*.rules) - if [ $? -ne 0 ] - then - retval=1 - fi -- for match in "${matches[@]}" -- do -- files_to_inspect+=("${match}") -- done - # Case when particular rule isn't defined in /etc/audit/rules.d/*.rules yet - if [ ${#files_to_inspect[@]} -eq "0" ] - then - -From 56194cadf92fdfa020f650bf0152cf65270e4631 Mon Sep 17 00:00:00 2001 -From: Watson Sato -Date: Thu, 5 Aug 2021 00:35:47 +0200 -Subject: [PATCH 08/31] Handle cases where the rule has no syscall - -When syscall is not set, just don't add the -S parameter. -The audit privileged commands use the fix_audit_syscall_rule despite -not adding a -S syscall. -Same situation happens for directory_access_var_log_audit. ---- - .../bash/shared.sh | 13 +++-- - .../fix_audit_syscall_rule.sh | 51 ++++++++++++------- - .../bash.template | 2 +- - 3 files changed, 41 insertions(+), 25 deletions(-) - -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/directory_access_var_log_audit/bash/shared.sh b/linux_os/guide/system/auditing/auditd_configure_rules/directory_access_var_log_audit/bash/shared.sh -index 53f2923d687..0c4e8ffdbd3 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/directory_access_var_log_audit/bash/shared.sh -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/directory_access_var_log_audit/bash/shared.sh -@@ -3,9 +3,12 @@ - # Include source function library. - . /usr/share/scap-security-guide/remediation_functions - --PATTERN="-a always,exit -F path=/var/log/audit/\\s\\+.*" --GROUP="access-audit-trail" --FULL_RULE="-a always,exit -F dir=/var/log/audit/ -F perm=r -F auid>={{{ auid }}} -F auid!=unset -F key=access-audit-trail" -+ACTION_ARCH_FILTERS="-a always,exit -F arch=$ARCH" -+OTHER_FILTERS="-F dir=/var/log/audit/ -F perm=r" -+AUID_FILTERS="-F auid>={{{ auid }}} -F auid!=unset" -+SYSCALL="" -+KEY="access-audit-trail" -+SYSCALL_GROUPING="" - # Perform the remediation for both possible tools: 'auditctl' and 'augenrules' --fix_audit_syscall_rule "auditctl" "$PATTERN" "$GROUP" "$ARCH" "$FULL_RULE" --fix_audit_syscall_rule "augenrules" "$PATTERN" "$GROUP" "$ARCH" "$FULL_RULE" -+fix_audit_syscall_rule "augenrules" "$ACTION_ARCH_FILTERS" "$OTHER_FILTERS" "$AUID_FILTERS" "$SYSCALL" "$SYSCALL_GROUPING" "$KEY" -+fix_audit_syscall_rule "auditctl" "$ACTION_ARCH_FILTERS" "$OTHER_FILTERS" "$AUID_FILTERS" "$SYSCALL" "$SYSCALL_GROUPING" "$KEY" -diff --git a/shared/bash_remediation_functions/fix_audit_syscall_rule.sh b/shared/bash_remediation_functions/fix_audit_syscall_rule.sh -index 791e64d05c1..69430416da3 100644 ---- a/shared/bash_remediation_functions/fix_audit_syscall_rule.sh -+++ b/shared/bash_remediation_functions/fix_audit_syscall_rule.sh -@@ -140,28 +140,37 @@ do - fi - done - -- # Check if the syscall we want is present in any of the similar existing rules -- for rule in "${candidate_rules[@]}" -- do -- rule_syscalls=$(echo "$rule" | grep -o -P '(-S [\w,]+)+' | xargs) -- grep -q -- "\b${syscall}\b" <<< "$rule_syscalls" -- if [ $? -eq 0 ] -- then -- # We found a rule with the syscall we want -- return $retval -- fi -- -- # Check if this rule can be grouped with our target syscall and keep track of it -- for syscall_g in "${syscall_grouping[@]}" -+ if [[ $syscall ]] -+ then -+ # Check if the syscall we want is present in any of the similar existing rules -+ for rule in "${candidate_rules[@]}" - do -- if grep -q -- "\b${syscall_g}\b" <<< "$rule_syscalls" -+ rule_syscalls=$(echo "$rule" | grep -o -P '(-S [\w,]+)+' | xargs) -+ grep -q -- "\b${syscall}\b" <<< "$rule_syscalls" -+ if [ $? -eq 0 ] - then -- local file_to_edit=${audit_file} -- local rule_to_edit=${rule} -- local rule_syscalls_to_edit=${rule_syscalls} -+ # We found a rule with the syscall we want -+ return $retval - fi -+ -+ # Check if this rule can be grouped with our target syscall and keep track of it -+ for syscall_g in "${syscall_grouping[@]}" -+ do -+ if grep -q -- "\b${syscall_g}\b" <<< "$rule_syscalls" -+ then -+ local file_to_edit=${audit_file} -+ local rule_to_edit=${rule} -+ local rule_syscalls_to_edit=${rule_syscalls} -+ fi -+ done - done -- done -+ else -+ # If there is any candidate rule, it is compliant. -+ if [[ $candidate_rules ]] -+ then -+ return $retval -+ fi -+ fi - done - - -@@ -173,7 +182,11 @@ done - if [ -z ${rule_to_edit+x} ] - then - # Build full_rule while avoid adding double spaces when other_filters is empty -- local full_rule="$action_arch_filters -S $syscall $([[ $other_filters ]] && echo "$other_filters ")$auid_filters -F key=$key" -+ if [[ $syscall ]] -+ then -+ local syscall_filters="-S $syscall" -+ fi -+ local full_rule="$action_arch_filters $([[ $syscall_filters ]] && echo "$syscall_filters ")$([[ $other_filters ]] && echo "$other_filters ")$auid_filters -F key=$key" - echo "$full_rule" >> "$default_file" - else - # Check if the syscalls are declared as a comma separated list or -diff --git a/shared/templates/audit_rules_privileged_commands/bash.template b/shared/templates/audit_rules_privileged_commands/bash.template -index bd9d4d12484..b5879085a45 100644 ---- a/shared/templates/audit_rules_privileged_commands/bash.template -+++ b/shared/templates/audit_rules_privileged_commands/bash.template -@@ -9,7 +9,7 @@ - ACTION_ARCH_FILTERS="-a always,exit" - OTHER_FILTERS="-F path={{{ PATH }}}{{{ perm_x }}}" - AUID_FILTERS="-F auid>={{{ auid }}} -F auid!=unset" --SYSCALL="{{{ ATTR }}}" -+SYSCALL="" - KEY="privileged" - SYSCALL_GROUPING="{{{ SYSCALL_GROUPING }}}" - # Perform the remediation for both possible tools: 'auditctl' and 'augenrules' - -From aa3b0ea2f194487c3f270e2f4d32768318c06ffa Mon Sep 17 00:00:00 2001 -From: Watson Sato -Date: Thu, 5 Aug 2021 15:30:46 +0200 -Subject: [PATCH 09/31] Enhance fix_audit_syscall_rule to handle multiple - syscalls - -Some rules deal with single handedly with multiple profiles. -These rules expect to use the fix_audit_syscall_rule to add a rule with -muliple syscalls at a time. ---- - .../bash/shared.sh | 14 +++--- - .../bash/shared.sh | 26 ++++++----- - .../fix_audit_syscall_rule.sh | 44 ++++++++++++++----- - 3 files changed, 58 insertions(+), 26 deletions(-) - -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events/bash/shared.sh b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events/bash/shared.sh -index 02020a84773..2b5e6649680 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events/bash/shared.sh -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events/bash/shared.sh -@@ -9,11 +9,13 @@ - - for ARCH in "${RULE_ARCHS[@]}" - do -- PATTERN="-a always,exit -F arch=$ARCH -S .* -F auid>={{{ auid }}} -F auid!=unset -k *" -- # Use escaped BRE regex to specify rule group -- GROUP="\(rmdir\|unlink\|rename\)" -- FULL_RULE="-a always,exit -F arch=$ARCH -S rmdir -S unlink -S unlinkat -S rename -S renameat -F auid>={{{ auid }}} -F auid!=unset -k delete" -+ ACTION_ARCH_FILTERS="-a always,exit -F arch=$ARCH" -+ OTHER_FILTERS="" -+ AUID_FILTERS="-F auid>={{{ auid }}} -F auid!=unset" -+ SYSCALL="rmdir unlink unlinkat rename renameat" -+ KEY="delete" -+ SYSCALL_GROUPING="rmdir unlink unlinkat rename renameat" - # Perform the remediation for both possible tools: 'auditctl' and 'augenrules' -- fix_audit_syscall_rule "auditctl" "$PATTERN" "$GROUP" "$ARCH" "$FULL_RULE" -- fix_audit_syscall_rule "augenrules" "$PATTERN" "$GROUP" "$ARCH" "$FULL_RULE" -+ fix_audit_syscall_rule "augenrules" "$ACTION_ARCH_FILTERS" "$OTHER_FILTERS" "$AUID_FILTERS" "$SYSCALL" "$SYSCALL_GROUPING" "$KEY" -+ fix_audit_syscall_rule "auditctl" "$ACTION_ARCH_FILTERS" "$OTHER_FILTERS" "$AUID_FILTERS" "$SYSCALL" "$SYSCALL_GROUPING" "$KEY" - done -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification/bash/shared.sh b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification/bash/shared.sh -index cdde2eabe04..bf931e46430 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification/bash/shared.sh -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification/bash/shared.sh -@@ -11,20 +11,26 @@ for ARCH in "${RULE_ARCHS[@]}" - do - - # First fix the -EACCES requirement -- PATTERN="-a always,exit -F arch=$ARCH -S .* -F exit=-EACCES -F auid>={{{ auid }}} -F auid!=unset -k *" -- # Use escaped BRE regex to specify rule group -- GROUP="\(creat\|open\|truncate\)" -- FULL_RULE="-a always,exit -F arch=$ARCH -S creat -S open -S openat -S open_by_handle_at -S truncate -S ftruncate -F exit=-EACCES -F auid>={{{ auid }}} -F auid!=unset -k access" -+ ACTION_ARCH_FILTERS="-a always,exit -F arch=$ARCH" -+ OTHER_FILTERS="-F exit=EACCES" -+ AUID_FILTERS="-F auid>={{{ auid }}} -F auid!=unset" -+ SYSCALL="creat open openat open_by_handle_at truncate ftruncate" -+ KEY="access" -+ SYSCALL_GROUPING="creat open openat open_by_handle_at truncate ftruncate" - # Perform the remediation for both possible tools: 'auditctl' and 'augenrules' -- fix_audit_syscall_rule "auditctl" "$PATTERN" "$GROUP" "$ARCH" "$FULL_RULE" -- fix_audit_syscall_rule "augenrules" "$PATTERN" "$GROUP" "$ARCH" "$FULL_RULE" -+ fix_audit_syscall_rule "augenrules" "$ACTION_ARCH_FILTERS" "$OTHER_FILTERS" "$AUID_FILTERS" "$SYSCALL" "$SYSCALL_GROUPING" "$KEY" -+ fix_audit_syscall_rule "auditctl" "$ACTION_ARCH_FILTERS" "$OTHER_FILTERS" "$AUID_FILTERS" "$SYSCALL" "$SYSCALL_GROUPING" "$KEY" - - # Then fix the -EPERM requirement -- PATTERN="-a always,exit -F arch=$ARCH -S .* -F exit=-EPERM -F auid>={{{ auid }}} -F auid!=unset -k *" - # No need to change content of $GROUP variable - it's the same as for -EACCES case above -- FULL_RULE="-a always,exit -F arch=$ARCH -S creat -S open -S openat -S open_by_handle_at -S truncate -S ftruncate -F exit=-EPERM -F auid>={{{ auid }}} -F auid!=unset -k access" -+ ACTION_ARCH_FILTERS="-a always,exit -F arch=$ARCH" -+ OTHER_FILTERS="-F exit=EPERM" -+ AUID_FILTERS="-F auid>={{{ auid }}} -F auid!=unset" -+ SYSCALL="creat open openat open_by_handle_at truncate ftruncate" -+ KEY="access" -+ SYSCALL_GROUPING="creat open openat open_by_handle_at truncate ftruncate" - # Perform the remediation for both possible tools: 'auditctl' and 'augenrules' -- fix_audit_syscall_rule "auditctl" "$PATTERN" "$GROUP" "$ARCH" "$FULL_RULE" -- fix_audit_syscall_rule "augenrules" "$PATTERN" "$GROUP" "$ARCH" "$FULL_RULE" -+ fix_audit_syscall_rule "augenrules" "$ACTION_ARCH_FILTERS" "$OTHER_FILTERS" "$AUID_FILTERS" "$SYSCALL" "$SYSCALL_GROUPING" "$KEY" -+ fix_audit_syscall_rule "auditctl" "$ACTION_ARCH_FILTERS" "$OTHER_FILTERS" "$AUID_FILTERS" "$SYSCALL" "$SYSCALL_GROUPING" "$KEY" - - done -diff --git a/shared/bash_remediation_functions/fix_audit_syscall_rule.sh b/shared/bash_remediation_functions/fix_audit_syscall_rule.sh -index 69430416da3..c8492149ad9 100644 ---- a/shared/bash_remediation_functions/fix_audit_syscall_rule.sh -+++ b/shared/bash_remediation_functions/fix_audit_syscall_rule.sh -@@ -42,7 +42,8 @@ local tool="$1" - local action_arch_filters="$2" - local other_filters="$3" - local auid_filters="$4" --local syscall="$5" -+local syscall_a -+read -a syscall_a <<< "$5" - local syscall_grouping - read -a syscall_grouping <<< "$6" - local key="$7" -@@ -140,16 +141,25 @@ do - fi - done - -- if [[ $syscall ]] -+ if [[ ${#syscall_a[@]} -ge 1 ]] - then - # Check if the syscall we want is present in any of the similar existing rules - for rule in "${candidate_rules[@]}" - do - rule_syscalls=$(echo "$rule" | grep -o -P '(-S [\w,]+)+' | xargs) -- grep -q -- "\b${syscall}\b" <<< "$rule_syscalls" -- if [ $? -eq 0 ] -+ local all_syscalls_found=0 -+ for syscall in "${syscall_a[@]}" -+ do -+ grep -q -- "\b${syscall}\b" <<< "$rule_syscalls" -+ if [ $? -eq 1 ] -+ then -+ # A syscall was not found in the candidate rule -+ all_syscalls_found=1 -+ fi -+ done -+ if [[ $all_syscalls_found -eq 0 ]] - then -- # We found a rule with the syscall we want -+ # We found a rule with all the syscall(s) we want - return $retval - fi - -@@ -182,21 +192,35 @@ done - if [ -z ${rule_to_edit+x} ] - then - # Build full_rule while avoid adding double spaces when other_filters is empty -- if [[ $syscall ]] -+ if [[ ${syscall_a} ]] - then -- local syscall_filters="-S $syscall" -+ local syscall_filters="" -+ for syscall in "${syscall_a[@]}" -+ do -+ syscall_filters+="-S $syscall " -+ done - fi -- local full_rule="$action_arch_filters $([[ $syscall_filters ]] && echo "$syscall_filters ")$([[ $other_filters ]] && echo "$other_filters ")$auid_filters -F key=$key" -+ local full_rule="$action_arch_filters $([[ $syscall_filters ]] && echo "$syscall_filters")$([[ $other_filters ]] && echo "$other_filters ")$auid_filters -F key=$key" - echo "$full_rule" >> "$default_file" - else - # Check if the syscalls are declared as a comma separated list or - # as multiple -S parameters - if grep -q -- "," <<< "${rule_syscalls_to_edit}" - then -- new_grouped_syscalls="${rule_syscalls_to_edit},${syscall}" -+ delimiter="," - else -- new_grouped_syscalls="${rule_syscalls_to_edit} -S ${syscall}" -+ delimiter=" -S " - fi -+ new_grouped_syscalls="${rule_syscalls_to_edit}" -+ for syscall in "${syscall_a[@]}" -+ do -+ grep -q -- "\b${syscall}\b" <<< "${rule_syscalls_to_edit}" -+ if [ $? -eq 1 ] -+ then -+ # A syscall was not found in the candidate rule -+ new_grouped_syscalls+="${delimiter}${syscall}" -+ fi -+ done - - # Group the syscall in the rule - sed -i -e "\#${rule_to_edit}#s#${rule_syscalls_to_edit}#${new_grouped_syscalls}#" "$file_to_edit" - -From 0b18f68fa86a16f659995736567ed3649bb58ef2 Mon Sep 17 00:00:00 2001 -From: Watson Sato -Date: Thu, 5 Aug 2021 18:56:13 +0200 -Subject: [PATCH 10/31] Enhance fix_audit_syscall_rule to handle rules without - auid - -Enhance the bash function to nicely handle calls without auid filters -defined. -And updated the remediations of rules calling fix_audit_syscall_rule to -the new parameters. ---- - .../bash/shared.sh | 13 ++++++++----- - .../bash/shared.sh | 13 ++++++++----- - .../bash/shared.sh | 13 ++++++++----- - .../bash/shared.sh | 13 ++++++++----- - .../bash/shared.sh | 14 ++++++++------ - .../fix_audit_syscall_rule.sh | 8 +++++--- - 6 files changed, 45 insertions(+), 29 deletions(-) - -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading/bash/shared.sh b/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading/bash/shared.sh -index a89cb10e13d..cee43a0a104 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading/bash/shared.sh -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading/bash/shared.sh -@@ -13,10 +13,13 @@ - - for ARCH in "${RULE_ARCHS[@]}" - do -- GROUP="modules" -- PATTERN="-a always,exit -F arch=$ARCH -S init_module -S delete_module -S finit_module \(-F key=\|-k \).*" -- FULL_RULE="-a always,exit -F arch=$ARCH -S init_module -S delete_module -S finit_module -k modules" -+ ACTION_ARCH_FILTERS="-a always,exit -F arch=$ARCH" -+ OTHER_FILTERS="" -+ AUID_FILTERS="" -+ SYSCALL="init_module finit_module delete_module" -+ KEY="modules" -+ SYSCALL_GROUPING="init_module finit_module delete_module" - # Perform the remediation for both possible tools: 'auditctl' and 'augenrules' -- fix_audit_syscall_rule "auditctl" "$PATTERN" "$GROUP" "$ARCH" "$FULL_RULE" -- fix_audit_syscall_rule "augenrules" "$PATTERN" "$GROUP" "$ARCH" "$FULL_RULE" -+ fix_audit_syscall_rule "augenrules" "$ACTION_ARCH_FILTERS" "$OTHER_FILTERS" "$AUID_FILTERS" "$SYSCALL" "$SYSCALL_GROUPING" "$KEY" -+ fix_audit_syscall_rule "auditctl" "$ACTION_ARCH_FILTERS" "$OTHER_FILTERS" "$AUID_FILTERS" "$SYSCALL" "$SYSCALL_GROUPING" "$KEY" - done -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading_delete/bash/shared.sh b/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading_delete/bash/shared.sh -index 7dabc28d807..7e0e101f754 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading_delete/bash/shared.sh -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading_delete/bash/shared.sh -@@ -13,10 +13,13 @@ - - for ARCH in "${RULE_ARCHS[@]}" - do -- PATTERN="-a always,exit -F arch=$ARCH -S delete_module \(-F key=\|-k \).*" -- GROUP="modules" -- FULL_RULE="-a always,exit -F arch=$ARCH -S delete_module -k modules" -+ ACTION_ARCH_FILTERS="-a always,exit -F arch=$ARCH" -+ OTHER_FILTERS="" -+ AUID_FILTERS="" -+ SYSCALL="delete_module" -+ KEY="modules" -+ SYSCALL_GROUPING="delete_module" - # Perform the remediation for both possible tools: 'auditctl' and 'augenrules' -- fix_audit_syscall_rule "auditctl" "$PATTERN" "$GROUP" "$ARCH" "$FULL_RULE" -- fix_audit_syscall_rule "augenrules" "$PATTERN" "$GROUP" "$ARCH" "$FULL_RULE" -+ fix_audit_syscall_rule "augenrules" "$ACTION_ARCH_FILTERS" "$OTHER_FILTERS" "$AUID_FILTERS" "$SYSCALL" "$SYSCALL_GROUPING" "$KEY" -+ fix_audit_syscall_rule "auditctl" "$ACTION_ARCH_FILTERS" "$OTHER_FILTERS" "$AUID_FILTERS" "$SYSCALL" "$SYSCALL_GROUPING" "$KEY" - done -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading_finit/bash/shared.sh b/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading_finit/bash/shared.sh -index 6e8df8c5095..1b2854d9c61 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading_finit/bash/shared.sh -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading_finit/bash/shared.sh -@@ -13,10 +13,13 @@ - - for ARCH in "${RULE_ARCHS[@]}" - do -- PATTERN="-a always,exit -F arch=$ARCH -S finit_module \(-F key=\|-k \).*" -- GROUP="modules" -- FULL_RULE="-a always,exit -F arch=$ARCH -S finit_module -k modules" -+ ACTION_ARCH_FILTERS="-a always,exit -F arch=$ARCH" -+ OTHER_FILTERS="" -+ AUID_FILTERS="" -+ SYSCALL="finit_module" -+ KEY="modules" -+ SYSCALL_GROUPING="init_module finit_module" - # Perform the remediation for both possible tools: 'auditctl' and 'augenrules' -- fix_audit_syscall_rule "auditctl" "$PATTERN" "$GROUP" "$ARCH" "$FULL_RULE" -- fix_audit_syscall_rule "augenrules" "$PATTERN" "$GROUP" "$ARCH" "$FULL_RULE" -+ fix_audit_syscall_rule "augenrules" "$ACTION_ARCH_FILTERS" "$OTHER_FILTERS" "$AUID_FILTERS" "$SYSCALL" "$SYSCALL_GROUPING" "$KEY" -+ fix_audit_syscall_rule "auditctl" "$ACTION_ARCH_FILTERS" "$OTHER_FILTERS" "$AUID_FILTERS" "$SYSCALL" "$SYSCALL_GROUPING" "$KEY" - done -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading_init/bash/shared.sh b/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading_init/bash/shared.sh -index 437127f4553..3bb7f89d37c 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading_init/bash/shared.sh -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading_init/bash/shared.sh -@@ -13,10 +13,13 @@ - - for ARCH in "${RULE_ARCHS[@]}" - do -- PATTERN="-a always,exit -F arch=$ARCH -S init_module \(-F key=\|-k \).*" -- GROUP="modules" -- FULL_RULE="-a always,exit -F arch=$ARCH -S init_module -k modules" -+ ACTION_ARCH_FILTERS="-a always,exit -F arch=$ARCH" -+ OTHER_FILTERS="" -+ AUID_FILTERS="" -+ SYSCALL="init_module" -+ KEY="modules" -+ SYSCALL_GROUPING="init_module finit_module" - # Perform the remediation for both possible tools: 'auditctl' and 'augenrules' -- fix_audit_syscall_rule "auditctl" "$PATTERN" "$GROUP" "$ARCH" "$FULL_RULE" -- fix_audit_syscall_rule "augenrules" "$PATTERN" "$GROUP" "$ARCH" "$FULL_RULE" -+ fix_audit_syscall_rule "augenrules" "$ACTION_ARCH_FILTERS" "$OTHER_FILTERS" "$AUID_FILTERS" "$SYSCALL" "$SYSCALL_GROUPING" "$KEY" -+ fix_audit_syscall_rule "auditctl" "$ACTION_ARCH_FILTERS" "$OTHER_FILTERS" "$AUID_FILTERS" "$SYSCALL" "$SYSCALL_GROUPING" "$KEY" - done -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_networkconfig_modification/bash/shared.sh b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_networkconfig_modification/bash/shared.sh -index 4e4869a83a7..3c5e593dc5e 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_networkconfig_modification/bash/shared.sh -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_networkconfig_modification/bash/shared.sh -@@ -9,13 +9,15 @@ - - for ARCH in "${RULE_ARCHS[@]}" - do -- PATTERN="-a always,exit -F arch=$ARCH -S .* -k *" -- # Use escaped BRE regex to specify rule group -- GROUP="set\(host\|domain\)name" -- FULL_RULE="-a always,exit -F arch=$ARCH -S sethostname -S setdomainname -k audit_rules_networkconfig_modification" -+ ACTION_ARCH_FILTERS="-a always,exit -F arch=$ARCH" -+ OTHER_FILTERS="" -+ AUID_FILTERS="" -+ SYSCALL="sethostname setdomainname" -+ KEY="audit_rules_networkconfig_modification" -+ SYSCALL_GROUPING="sethostname setdomainname" - # Perform the remediation for both possible tools: 'auditctl' and 'augenrules' -- fix_audit_syscall_rule "auditctl" "$PATTERN" "$GROUP" "$ARCH" "$FULL_RULE" -- fix_audit_syscall_rule "augenrules" "$PATTERN" "$GROUP" "$ARCH" "$FULL_RULE" -+ fix_audit_syscall_rule "augenrules" "$ACTION_ARCH_FILTERS" "$OTHER_FILTERS" "$AUID_FILTERS" "$SYSCALL" "$SYSCALL_GROUPING" "$KEY" -+ fix_audit_syscall_rule "auditctl" "$ACTION_ARCH_FILTERS" "$OTHER_FILTERS" "$AUID_FILTERS" "$SYSCALL" "$SYSCALL_GROUPING" "$KEY" - done - - # Then perform the remediations for the watch rules -diff --git a/shared/bash_remediation_functions/fix_audit_syscall_rule.sh b/shared/bash_remediation_functions/fix_audit_syscall_rule.sh -index c8492149ad9..5cc130a0236 100644 ---- a/shared/bash_remediation_functions/fix_audit_syscall_rule.sh -+++ b/shared/bash_remediation_functions/fix_audit_syscall_rule.sh -@@ -194,13 +194,15 @@ then - # Build full_rule while avoid adding double spaces when other_filters is empty - if [[ ${syscall_a} ]] - then -- local syscall_filters="" -+ local syscall_string="" - for syscall in "${syscall_a[@]}" - do -- syscall_filters+="-S $syscall " -+ syscall_string+=" -S $syscall" - done - fi -- local full_rule="$action_arch_filters $([[ $syscall_filters ]] && echo "$syscall_filters")$([[ $other_filters ]] && echo "$other_filters ")$auid_filters -F key=$key" -+ local other_string=$([[ $other_filters ]] && echo " $other_filters") -+ local auid_string=$([[ $auid_filters ]] && echo " $auid_filters") -+ local full_rule="${action_arch_filters}${syscall_string}${other_string}${auid_string} -F key=${key}" - echo "$full_rule" >> "$default_file" - else - # Check if the syscalls are declared as a comma separated list or - -From 8c4984428445376dd1ddb03947deda2d73321972 Mon Sep 17 00:00:00 2001 -From: Watson Sato -Date: Thu, 5 Aug 2021 18:59:47 +0200 -Subject: [PATCH 11/31] Move suid_privileged_function to new - fix_audit_sycall_rule - -The OVAL check was also updated to accept the key as a Field parameter. ---- - .../bash/shared.sh | 26 ++++++++++++------- - .../oval/shared.xml | 16 ++++++------ - 2 files changed, 24 insertions(+), 18 deletions(-) - -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_suid_privilege_function/bash/shared.sh b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_suid_privilege_function/bash/shared.sh -index 561c8f74a8f..3976979360c 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_suid_privilege_function/bash/shared.sh -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_suid_privilege_function/bash/shared.sh -@@ -9,20 +9,26 @@ - - for ARCH in "${RULE_ARCHS[@]}" - do -- PATTERN="-a always,exit -F arch=$ARCH -S execve -C uid!=euid -F euid=0" -- GROUP="privileged" -- FULL_RULE="-a always,exit -F arch=$ARCH -S execve -C uid!=euid -F euid=0 -k setuid" -+ ACTION_ARCH_FILTERS="-a always,exit -F arch=$ARCH" -+ OTHER_FILTERS="-C uid!=euid -F euid=0" -+ AUID_FILTERS="" -+ SYSCALL="execve" -+ KEY="setuid" -+ SYSCALL_GROUPING="" - # Perform the remediation for both possible tools: 'auditctl' and 'augenrules' -- fix_audit_syscall_rule "auditctl" "$PATTERN" "$GROUP" "$ARCH" "$FULL_RULE" -- fix_audit_syscall_rule "augenrules" "$PATTERN" "$GROUP" "$ARCH" "$FULL_RULE" -+ fix_audit_syscall_rule "augenrules" "$ACTION_ARCH_FILTERS" "$OTHER_FILTERS" "$AUID_FILTERS" "$SYSCALL" "$SYSCALL_GROUPING" "$KEY" -+ fix_audit_syscall_rule "auditctl" "$ACTION_ARCH_FILTERS" "$OTHER_FILTERS" "$AUID_FILTERS" "$SYSCALL" "$SYSCALL_GROUPING" "$KEY" - done - - for ARCH in "${RULE_ARCHS[@]}" - do -- PATTERN="-a always,exit -F arch=$ARCH -S execve -C gid!=egid -F egid=0" -- GROUP="privileged" -- FULL_RULE="-a always,exit -F arch=$ARCH -S execve -C gid!=egid -F egid=0 -k setgid" -+ ACTION_ARCH_FILTERS="-a always,exit -F arch=$ARCH" -+ OTHER_FILTERS="-C gid!=egid -F egid=0" -+ AUID_FILTERS="" -+ SYSCALL="execve" -+ KEY="setgid" -+ SYSCALL_GROUPING="" - # Perform the remediation for both possible tools: 'auditctl' and 'augenrules' -- fix_audit_syscall_rule "auditctl" "$PATTERN" "$GROUP" "$ARCH" "$FULL_RULE" -- fix_audit_syscall_rule "augenrules" "$PATTERN" "$GROUP" "$ARCH" "$FULL_RULE" -+ fix_audit_syscall_rule "augenrules" "$ACTION_ARCH_FILTERS" "$OTHER_FILTERS" "$AUID_FILTERS" "$SYSCALL" "$SYSCALL_GROUPING" "$KEY" -+ fix_audit_syscall_rule "auditctl" "$ACTION_ARCH_FILTERS" "$OTHER_FILTERS" "$AUID_FILTERS" "$SYSCALL" "$SYSCALL_GROUPING" "$KEY" - done -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_suid_privilege_function/oval/shared.xml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_suid_privilege_function/oval/shared.xml -index 9247d81b89c..5115eb6c8c4 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_suid_privilege_function/oval/shared.xml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_suid_privilege_function/oval/shared.xml -@@ -30,7 +30,7 @@ - - - ^/etc/audit/rules\.d/.*\.rules$ -- ^[\s]*-a[\s]+always,exit[\s]+-F[\s]+arch=b32[\s]+-S[\s]+execve[\s]+-C[\s]uid!=euid[\s]+-F[\s]euid=0[\s]+-k[\s]setuid[\s]*$ -+ ^[\s]*-a[\s]+always,exit[\s]+-F[\s]+arch=b32[\s]+-S[\s]+execve[\s]+-C[\s]uid!=euid[\s]+-F[\s]euid=0[\s]+(-k[\s]+|-F[\s]+key=)setuid[\s]*$ - 1 - - -@@ -39,7 +39,7 @@ - - - ^/etc/audit/rules\.d/.*\.rules$ -- ^[\s]*-a[\s]+always,exit[\s]+-F[\s]+arch=b64[\s]+-S[\s]+execve[\s]+-C[\s]uid!=euid[\s]+-F[\s]euid=0[\s]+-k[\s]setuid[\s]*$ -+ ^[\s]*-a[\s]+always,exit[\s]+-F[\s]+arch=b64[\s]+-S[\s]+execve[\s]+-C[\s]uid!=euid[\s]+-F[\s]euid=0[\s]+(-k[\s]+|-F[\s]+key=)setuid[\s]*$ - 1 - - -@@ -48,7 +48,7 @@ - - - /etc/audit/audit.rules -- ^[\s]*-a[\s]+always,exit[\s]+-F[\s]+arch=b32[\s]+-S[\s]+execve[\s]+-C[\s]uid!=euid[\s]+-F[\s]euid=0[\s]+-k[\s]setuid[\s]*$ -+ ^[\s]*-a[\s]+always,exit[\s]+-F[\s]+arch=b32[\s]+-S[\s]+execve[\s]+-C[\s]uid!=euid[\s]+-F[\s]euid=0[\s]+(-k[\s]+|-F[\s]+key=)setuid[\s]*$ - 1 - - -@@ -57,7 +57,7 @@ - - - /etc/audit/audit.rules -- ^[\s]*-a[\s]+always,exit[\s]+-F[\s]+arch=b64[\s]+-S[\s]+execve[\s]+-C[\s]uid!=euid[\s]+-F[\s]euid=0[\s]+-k[\s]setuid[\s]*$ -+ ^[\s]*-a[\s]+always,exit[\s]+-F[\s]+arch=b64[\s]+-S[\s]+execve[\s]+-C[\s]uid!=euid[\s]+-F[\s]euid=0[\s]+(-k[\s]+|-F[\s]+key=)setuid[\s]*$ - 1 - - -@@ -66,7 +66,7 @@ - - - ^/etc/audit/rules\.d/.*\.rules$ -- ^[\s]*-a[\s]+always,exit[\s]+-F[\s]+arch=b32[\s]+-S[\s]+execve[\s]+-C[\s]gid!=egid[\s]+-F[\s]egid=0[\s]+-k[\s]setgid[\s]*$ -+ ^[\s]*-a[\s]+always,exit[\s]+-F[\s]+arch=b32[\s]+-S[\s]+execve[\s]+-C[\s]gid!=egid[\s]+-F[\s]egid=0[\s]+(-k[\s]+|-F[\s]+key=)setgid[\s]*$ - 1 - - -@@ -75,7 +75,7 @@ - - - ^/etc/audit/rules\.d/.*\.rules$ -- ^[\s]*-a[\s]+always,exit[\s]+-F[\s]+arch=b64[\s]+-S[\s]+execve[\s]+-C[\s]gid!=egid[\s]+-F[\s]egid=0[\s]+-k[\s]setgid[\s]*$ -+ ^[\s]*-a[\s]+always,exit[\s]+-F[\s]+arch=b64[\s]+-S[\s]+execve[\s]+-C[\s]gid!=egid[\s]+-F[\s]egid=0[\s]+(-k[\s]+|-F[\s]+key=)setgid[\s]*$ - 1 - - -@@ -84,7 +84,7 @@ - - - /etc/audit/audit.rules -- ^[\s]*-a[\s]+always,exit[\s]+-F[\s]+arch=b32[\s]+-S[\s]+execve[\s]+-C[\s]gid!=egid[\s]+-F[\s]egid=0[\s]+-k[\s]setgid[\s]*$ -+ ^[\s]*-a[\s]+always,exit[\s]+-F[\s]+arch=b32[\s]+-S[\s]+execve[\s]+-C[\s]gid!=egid[\s]+-F[\s]egid=0[\s]+(-k[\s]+|-F[\s]+key=)setgid[\s]*$ - 1 - - -@@ -93,7 +93,7 @@ - - - /etc/audit/audit.rules -- ^[\s]*-a[\s]+always,exit[\s]+-F[\s]+arch=b64[\s]+-S[\s]+execve[\s]+-C[\s]gid!=egid[\s]+-F[\s]egid=0[\s]+-k[\s]setgid[\s]*$ -+ ^[\s]*-a[\s]+always,exit[\s]+-F[\s]+arch=b64[\s]+-S[\s]+execve[\s]+-C[\s]gid!=egid[\s]+-F[\s]egid=0[\s]+(-k[\s]+|-F[\s]+key=)setgid[\s]*$ - 1 - - - -From ed948b76b8ce20179a00622b9e04a4d4cd32850f Mon Sep 17 00:00:00 2001 -From: Watson Sato -Date: Fri, 6 Aug 2021 09:45:42 +0200 -Subject: [PATCH 12/31] Update remediarions for time syscalls rules - -Update rules audit_rules_time_clock_settime and bash shared -remediation perform_audit_adjtimex_settimeofday_stime_remediation -to group their syscalls. ---- - .../bash/shared.sh | 13 ++++++++----- - ..._adjtimex_settimeofday_stime_remediation.sh | 18 +++++++++++------- - 2 files changed, 19 insertions(+), 12 deletions(-) - -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_time_rules/audit_rules_time_clock_settime/bash/shared.sh b/linux_os/guide/system/auditing/auditd_configure_rules/audit_time_rules/audit_rules_time_clock_settime/bash/shared.sh -index ffddb94df69..0d51b6b9400 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_time_rules/audit_rules_time_clock_settime/bash/shared.sh -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_time_rules/audit_rules_time_clock_settime/bash/shared.sh -@@ -9,10 +9,13 @@ - - for ARCH in "${RULE_ARCHS[@]}" - do -- PATTERN="-a always,exit -F arch=$ARCH -S clock_settime -F a0=.* \(-F key=\|-k \).*" -- GROUP="clock_settime" -- FULL_RULE="-a always,exit -F arch=$ARCH -S clock_settime -F a0=0x0 -k time-change" -+ ACTION_ARCH_FILTERS="-a always,exit -F arch=$ARCH" -+ OTHER_FILTERS="-F a0=0x0" -+ AUID_FILTERS="" -+ SYSCALL="clock_settime" -+ KEY="time-change" -+ SYSCALL_GROUPING="" - # Perform the remediation for both possible tools: 'auditctl' and 'augenrules' -- fix_audit_syscall_rule "auditctl" "$PATTERN" "$GROUP" "$ARCH" "$FULL_RULE" -- fix_audit_syscall_rule "augenrules" "$PATTERN" "$GROUP" "$ARCH" "$FULL_RULE" -+ fix_audit_syscall_rule "augenrules" "$ACTION_ARCH_FILTERS" "$OTHER_FILTERS" "$AUID_FILTERS" "$SYSCALL" "$SYSCALL_GROUPING" "$KEY" -+ fix_audit_syscall_rule "auditctl" "$ACTION_ARCH_FILTERS" "$OTHER_FILTERS" "$AUID_FILTERS" "$SYSCALL" "$SYSCALL_GROUPING" "$KEY" - done -diff --git a/shared/bash_remediation_functions/perform_audit_adjtimex_settimeofday_stime_remediation.sh b/shared/bash_remediation_functions/perform_audit_adjtimex_settimeofday_stime_remediation.sh -index be1425b454c..ca3ccc37513 100644 ---- a/shared/bash_remediation_functions/perform_audit_adjtimex_settimeofday_stime_remediation.sh -+++ b/shared/bash_remediation_functions/perform_audit_adjtimex_settimeofday_stime_remediation.sh -@@ -19,24 +19,28 @@ function perform_audit_adjtimex_settimeofday_stime_remediation { - for ARCH in "${RULE_ARCHS[@]}" - do - -- PATTERN="-a always,exit -F arch=${ARCH} -S .* -k *" - # Create expected audit group and audit rule form for particular system call & architecture - if [ ${ARCH} = "b32" ] - then -+ ACTION_ARCH_FILTERS="-a always,exit -F arch=$ARCH" - # stime system call is known at 32-bit arch (see e.g "$ ausyscall i386 stime" 's output) - # so append it to the list of time group system calls to be audited -- GROUP="\(adjtimex\|settimeofday\|stime\)" -- FULL_RULE="-a always,exit -F arch=${ARCH} -S adjtimex -S settimeofday -S stime -k audit_time_rules" -+ SYSCALL="adjtimex settimeofday stime" -+ SYSCALL_GROUPING="adjtimex settimeofday stime" - elif [ ${ARCH} = "b64" ] - then -+ ACTION_ARCH_FILTERS="-a always,exit -F arch=$ARCH" - # stime system call isn't known at 64-bit arch (see "$ ausyscall x86_64 stime" 's output) - # therefore don't add it to the list of time group system calls to be audited -- GROUP="\(adjtimex\|settimeofday\)" -- FULL_RULE="-a always,exit -F arch=${ARCH} -S adjtimex -S settimeofday -k audit_time_rules" -+ SYSCALL="adjtimex settimeofday" -+ SYSCALL_GROUPING="adjtimex settimeofday" - fi -+ OTHER_FILTERS="" -+ AUID_FILTERS="" -+ KEY="audit_time_rules" - # Perform the remediation for both possible tools: 'auditctl' and 'augenrules' -- fix_audit_syscall_rule "auditctl" "$PATTERN" "$GROUP" "$ARCH" "$FULL_RULE" -- fix_audit_syscall_rule "augenrules" "$PATTERN" "$GROUP" "$ARCH" "$FULL_RULE" -+ fix_audit_syscall_rule "augenrules" "$ACTION_ARCH_FILTERS" "$OTHER_FILTERS" "$AUID_FILTERS" "$SYSCALL" "$SYSCALL_GROUPING" "$KEY" -+ fix_audit_syscall_rule "auditctl" "$ACTION_ARCH_FILTERS" "$OTHER_FILTERS" "$AUID_FILTERS" "$SYSCALL" "$SYSCALL_GROUPING" "$KEY" - done - - } - -From 8af4ced71baa5794bfa9be2cfcf9a9519066e597 Mon Sep 17 00:00:00 2001 -From: Watson Sato -Date: Tue, 17 Aug 2021 11:50:46 +0200 -Subject: [PATCH 13/31] Improve audit syscall rule macro to group syscalls - -The macros now group the syscall rule according to the grouping argument -The Ansible macros follow same argument pattern as the Bash remediations -(soon to become macros). ---- - .../ansible/shared.yml | 36 ++- - .../ansible/shared.yml | 36 ++- - .../ansible/shared.yml | 36 ++- - .../ansible/shared.yml | 36 ++- - .../ansible/shared.yml | 36 ++- - .../audit_rules_time_stime/ansible/shared.yml | 18 +- - shared/macros-ansible.jinja | 220 +++++++++--------- - 7 files changed, 292 insertions(+), 126 deletions(-) - -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading/ansible/shared.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading/ansible/shared.yml -index 8421076fbb3..905c14feb82 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading/ansible/shared.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading/ansible/shared.yml -@@ -15,11 +15,39 @@ - - - name: Perform remediation of Audit rules for kernel module loading for x86 platform - block: -- {{{ ansible_audit_augenrules_add_syscall_rule(arch="b32", syscalls=audit_syscalls, key="modules")|indent(4) }}} -- {{{ ansible_audit_auditctl_add_syscall_rule(arch="b32", syscalls=audit_syscalls, key="modules")|indent(4) }}} -+ {{{ ansible_audit_augenrules_add_syscall_rule( -+ action_arch_filters="-a always,exit -F arch=b32", -+ other_filters="", -+ auid_filters="", -+ syscalls=audit_syscalls, -+ key="modules", -+ syscall_grouping=audit_syscalls, -+ )|indent(4) }}} -+ {{{ ansible_audit_auditctl_add_syscall_rule( -+ action_arch_filters="-a always,exit -F arch=b32", -+ other_filters="", -+ auid_filters="", -+ syscalls=audit_syscalls, -+ key="modules", -+ syscall_grouping=audit_syscalls, -+ )|indent(4) }}} - - - name: Perform remediation of Audit rules for kernel module loading for x86_64 platform - block: -- {{{ ansible_audit_augenrules_add_syscall_rule(arch="b64", syscalls=audit_syscalls, key="modules")|indent(4) }}} -- {{{ ansible_audit_auditctl_add_syscall_rule(arch="b64", syscalls=audit_syscalls, key="modules")|indent(4) }}} -+ {{{ ansible_audit_augenrules_add_syscall_rule( -+ action_arch_filters="-a always,exit -F arch=b64", -+ other_filters="", -+ auid_filters="", -+ syscalls=audit_syscalls, -+ key="modules", -+ syscall_grouping=audit_syscalls, -+ )|indent(4) }}} -+ {{{ ansible_audit_auditctl_add_syscall_rule( -+ action_arch_filters="-a always,exit -F arch=b64", -+ other_filters="", -+ auid_filters="", -+ syscalls=audit_syscalls, -+ key="modules", -+ syscall_grouping=audit_syscalls, -+ )|indent(4) }}} - when: audit_arch == "b64" -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_networkconfig_modification/ansible/shared.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_networkconfig_modification/ansible/shared.yml -index fa07d5bf944..b5262d795c6 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_networkconfig_modification/ansible/shared.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_rules_networkconfig_modification/ansible/shared.yml -@@ -13,13 +13,41 @@ - - - name: Remediate audit rules for network configuration for x86 - block: -- {{{ ansible_audit_augenrules_add_syscall_rule(arch="b32", syscalls=["sethostname", "setdomainname"], key="audit_rules_networkconfig_modification")|indent(4) }}} -- {{{ ansible_audit_auditctl_add_syscall_rule(arch="b32", syscalls=["sethostname", "setdomainname"], key="audit_rules_networkconfig_modification")|indent(4) }}} -+ {{{ ansible_audit_augenrules_add_syscall_rule( -+ action_arch_filters="-a always,exit -F arch=b32", -+ other_filters="", -+ auid_filters="", -+ syscalls=["sethostname", "setdomainname"], -+ key="audit_rules_networkconfig_modification", -+ syscall_grouping=["sethostname", "setdomainname"], -+ )|indent(4) }}} -+ {{{ ansible_audit_auditctl_add_syscall_rule( -+ action_arch_filters="-a always,exit -F arch=b32", -+ other_filters="", -+ auid_filters="", -+ syscalls=["sethostname", "setdomainname"], -+ key="audit_rules_networkconfig_modification", -+ syscall_grouping=["sethostname", "setdomainname"], -+ )|indent(4) }}} - - - name: Remediate audit rules for network configuration for x86_64 - block: -- {{{ ansible_audit_augenrules_add_syscall_rule(arch="b64", syscalls=["sethostname", "setdomainname"], key="audit_rules_networkconfig_modification")|indent(4) }}} -- {{{ ansible_audit_auditctl_add_syscall_rule(arch="b64", syscalls=["sethostname", "setdomainname"], key="audit_rules_networkconfig_modification")|indent(4) }}} -+ {{{ ansible_audit_augenrules_add_syscall_rule( -+ action_arch_filters="-a always,exit -F arch=b64", -+ other_filters="", -+ auid_filters="", -+ syscalls=["sethostname", "setdomainname"], -+ key="audit_rules_networkconfig_modification", -+ syscall_grouping=["sethostname", "setdomainname"], -+ )|indent(4) }}} -+ {{{ ansible_audit_auditctl_add_syscall_rule( -+ action_arch_filters="-a always,exit -F arch=b64", -+ other_filters="", -+ auid_filters="", -+ syscalls=["sethostname", "setdomainname"], -+ key="audit_rules_networkconfig_modification", -+ syscall_grouping=["sethostname", "setdomainname"], -+ )|indent(4) }}} - when: audit_arch == "b64" - - # remediate watches -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_time_rules/audit_rules_time_adjtimex/ansible/shared.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_time_rules/audit_rules_time_adjtimex/ansible/shared.yml -index 921b8e34cb2..a5d7cc5e0aa 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_time_rules/audit_rules_time_adjtimex/ansible/shared.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_time_rules/audit_rules_time_adjtimex/ansible/shared.yml -@@ -10,11 +10,39 @@ - - - name: Perform remediation of Audit rules for adjtimex for x86 platform - block: -- {{{ ansible_audit_augenrules_add_syscall_rule(arch="b32", syscalls=["adjtimex"], key="audit_time_rules")|indent(4) }}} -- {{{ ansible_audit_auditctl_add_syscall_rule(arch="b32", syscalls=["adjtimex"], key="audit_time_rules")|indent(4) }}} -+ {{{ ansible_audit_augenrules_add_syscall_rule( -+ action_arch_filters="-a always,exit -F arch=b32", -+ other_filters="", -+ auid_filters="", -+ syscalls=["adjtimex"], -+ key="audit_time_rules", -+ syscall_grouping=["adjtimex", "settimeofday", "stime"], -+ )|indent(4) }}} -+ {{{ ansible_audit_auditctl_add_syscall_rule( -+ action_arch_filters="-a always,exit -F arch=b32", -+ other_filters="", -+ auid_filters="", -+ syscalls=["adjtimex"], -+ key="audit_time_rules", -+ syscall_grouping=["adjtimex", "settimeofday", "stime"], -+ )|indent(4) }}} - - - name: Perform remediation of Audit rules for adjtimex for x86_64 platform - block: -- {{{ ansible_audit_augenrules_add_syscall_rule(arch="b64", syscalls=["adjtimex"], key="audit_time_rules")|indent(4) }}} -- {{{ ansible_audit_auditctl_add_syscall_rule(arch="b64", syscalls=["adjtimex"], key="audit_time_rules")|indent(4) }}} -+ {{{ ansible_audit_augenrules_add_syscall_rule( -+ action_arch_filters="-a always,exit -F arch=b64", -+ other_filters="", -+ auid_filters="", -+ syscalls=["adjtimex"], -+ key="audit_time_rules", -+ syscall_grouping=["adjtimex", "settimeofday"], -+ )|indent(4) }}} -+ {{{ ansible_audit_auditctl_add_syscall_rule( -+ action_arch_filters="-a always,exit -F arch=b64", -+ other_filters="", -+ auid_filters="", -+ syscalls=["adjtimex"], -+ key="audit_time_rules", -+ syscall_grouping=["adjtimex", "settimeofday", "stime"], -+ )|indent(4) }}} - when: audit_arch == "b64" -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_time_rules/audit_rules_time_clock_settime/ansible/shared.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_time_rules/audit_rules_time_clock_settime/ansible/shared.yml -index e77850fa251..c07ee41fe03 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_time_rules/audit_rules_time_clock_settime/ansible/shared.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_time_rules/audit_rules_time_clock_settime/ansible/shared.yml -@@ -12,11 +12,39 @@ - - - name: Perform remediation of Audit rules for clock_settime for x86 platform - block: -- {{{ ansible_audit_augenrules_add_syscall_rule(arch="b32", syscalls=["clock_settime"], key="time-change", fields=["a0=0x0"])|indent(4) }}} -- {{{ ansible_audit_auditctl_add_syscall_rule(arch="b32", syscalls=["clock_settime"], key="time-change", fields=["a0=0x0"])|indent(4) }}} -+ {{{ ansible_audit_augenrules_add_syscall_rule( -+ action_arch_filters="-a always,exit -F arch=b32", -+ other_filters="-F a0=0x0", -+ auid_filters="", -+ syscalls=["clock_settime"], -+ key="time-change", -+ syscall_grouping=[], -+ )|indent(4) }}} -+ {{{ ansible_audit_auditctl_add_syscall_rule( -+ action_arch_filters="-a always,exit -F arch=b32", -+ other_filters="-F a0=0x0", -+ auid_filters="", -+ syscalls=["clock_settime"], -+ key="time-change", -+ syscall_grouping=[], -+ )|indent(4) }}} - - - name: Perform remediation of Audit rules for clock_settime for x86_64 platform - block: -- {{{ ansible_audit_augenrules_add_syscall_rule(arch="b64", syscalls=["clock_settime"], key="time-change", fields=["a0=0x0"])|indent(4) }}} -- {{{ ansible_audit_auditctl_add_syscall_rule(arch="b64", syscalls=["clock_settime"], key="time-change", fields=["a0=0x0"])|indent(4) }}} -+ {{{ ansible_audit_augenrules_add_syscall_rule( -+ action_arch_filters="-a always,exit -F arch=b64", -+ other_filters="-F a0=0x0", -+ auid_filters="", -+ syscalls=["clock_settime"], -+ key="time-change", -+ syscall_grouping=[], -+ )|indent(4) }}} -+ {{{ ansible_audit_auditctl_add_syscall_rule( -+ action_arch_filters="-a always,exit -F arch=b64", -+ other_filters="-F a0=0x0", -+ auid_filters="", -+ syscalls=["clock_settime"], -+ key="time-change", -+ syscall_grouping=[], -+ )|indent(4) }}} - when: audit_arch == "b64" -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_time_rules/audit_rules_time_settimeofday/ansible/shared.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_time_rules/audit_rules_time_settimeofday/ansible/shared.yml -index b1a25c2776d..e4be5e2406f 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_time_rules/audit_rules_time_settimeofday/ansible/shared.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_time_rules/audit_rules_time_settimeofday/ansible/shared.yml -@@ -10,11 +10,39 @@ - - - name: Perform remediation of Audit rules for settimeofday for x86 platform - block: -- {{{ ansible_audit_augenrules_add_syscall_rule(arch="b32", syscalls=["settimeofday"], key="audit_time_rules")|indent(4) }}} -- {{{ ansible_audit_auditctl_add_syscall_rule(arch="b32", syscalls=["settimeofday"], key="audit_time_rules")|indent(4) }}} -+ {{{ ansible_audit_augenrules_add_syscall_rule( -+ action_arch_filters="-a always,exit -F arch=b32", -+ other_filters="", -+ auid_filters="", -+ syscalls=["settimeofday"], -+ key="audit_time_rules", -+ syscall_grouping=["adjtimex", "settimeofday", "stime"], -+ )|indent(4) }}} -+ {{{ ansible_audit_auditctl_add_syscall_rule( -+ action_arch_filters="-a always,exit -F arch=b32", -+ other_filters="", -+ auid_filters="", -+ syscalls=["settimeofday"], -+ key="audit_time_rules", -+ syscall_grouping=["adjtimex", "settimeofday", "stime"], -+ )|indent(4) }}} - - - name: Perform remediation of Audit rules for settimeofday for x86_64 platform - block: -- {{{ ansible_audit_augenrules_add_syscall_rule(arch="b64", syscalls=["settimeofday"], key="audit_time_rules")|indent(4) }}} -- {{{ ansible_audit_auditctl_add_syscall_rule(arch="b64", syscalls=["settimeofday"], key="audit_time_rules")|indent(4) }}} -+ {{{ ansible_audit_augenrules_add_syscall_rule( -+ action_arch_filters="-a always,exit -F arch=b64", -+ other_filters="", -+ auid_filters="", -+ syscalls=["settimeofday"], -+ key="audit_time_rules", -+ syscall_grouping=["adjtimex", "settimeofday", "stime"], -+ )|indent(4) }}} -+ {{{ ansible_audit_auditctl_add_syscall_rule( -+ action_arch_filters="-a always,exit -F arch=b64", -+ other_filters="", -+ auid_filters="", -+ syscalls=["settimeofday"], -+ key="audit_time_rules", -+ syscall_grouping=["adjtimex", "settimeofday", "stime"], -+ )|indent(4) }}} - when: audit_arch == "b64" -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_time_rules/audit_rules_time_stime/ansible/shared.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_time_rules/audit_rules_time_stime/ansible/shared.yml -index b57c71ce21f..96fc5c15655 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_time_rules/audit_rules_time_stime/ansible/shared.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_time_rules/audit_rules_time_stime/ansible/shared.yml -@@ -6,5 +6,19 @@ - - - name: Perform remediation of Audit rules for stime syscall for x86 platform - block: -- {{{ ansible_audit_augenrules_add_syscall_rule(arch="b32", syscalls=["stime"], key="audit_time_rules")|indent(4) }}} -- {{{ ansible_audit_auditctl_add_syscall_rule(arch="b32", syscalls=["stime"], key="audit_time_rules")|indent(4) }}} -+ {{{ ansible_audit_augenrules_add_syscall_rule( -+ action_arch_filters="-a always,exit -F arch=b32", -+ other_filters="", -+ auid_filters="", -+ syscalls=["stime"], -+ key="audit_time_rules", -+ syscall_grouping=["adjtimex", "settimeofday", "stime"], -+ )|indent(4) }}} -+ {{{ ansible_audit_auditctl_add_syscall_rule( -+ action_arch_filters="-a always,exit -F arch=b32", -+ other_filters="", -+ auid_filters="", -+ syscalls=["stime"], -+ key="audit_time_rules", -+ syscall_grouping=["adjtimex", "settimeofday", "stime"], -+ )|indent(4) }}} -diff --git a/shared/macros-ansible.jinja b/shared/macros-ansible.jinja -index 116077b9a52..5e120deee58 100644 ---- a/shared/macros-ansible.jinja -+++ b/shared/macros-ansible.jinja -@@ -385,135 +385,147 @@ The macro requires following parameters: - {{# - The following macro remediates Audit syscall rule in /etc/audit/rules.d directory. - The macro requires following parameters: --- arch: an architecture to be used in the Audit rule (b32, b64) --- syscalls: list of syscalls supplied as a list ["syscall1", "syscall2"] etc. --- key: a key to use as rule identifier. --- fields (optional): list of syscall fields to add (e.g.: auid=unset, exit=-EPERM, a0&0100); -- Add them in the order you expect them to be in the audit rule. --Note that if there already exists a rule wit the same key in the /etc/audit/rules.d directory, the rule will be placed in the same file. -+- action_arch_filters: The action and arch filters of the rule -+ For example, "-a always,exit -F arch=b64" -+- other_filters: Other filters that may characterize the rule: -+ For example, "-F a2&03 -F path=/etc/passwd" -+- auid_filters: The auid filters of the rule -+ For example, "-F auid>=1000 -F auid!=unset" -+- syscalls: List of syscalls to ensure presense among audit rules -+ For example, "['fchown', 'lchown', 'fchownat']" -+- syscall_groupings: List of other syscalls that can be grouped with 'syscalls' -+ For example, "['fchown', 'lchown', 'fchownat']" -+- key: The key to use when appending a new rule - #}} --{{% macro ansible_audit_augenrules_add_syscall_rule(arch="", syscalls=[], key="", fields=[]) -%}} --- name: Declare list of syscals -+{{% macro ansible_audit_augenrules_add_syscall_rule(action_arch_filters="", other_filters="", auid_filters="", syscalls=[], key="", syscall_grouping=[]) -%}} -+{{% if other_filters != "" %}} -+ {{% set other_filters = " " ~ other_filters %}} -+{{% endif %}} -+{{% if auid_filters != "" %}} -+ {{% set auid_filters = " " ~ auid_filters %}} -+{{% endif %}} -+- name: Declare list of syscalls - set_fact: - syscalls: {{{ syscalls }}} -+ syscall_grouping: {{{ syscall_grouping }}} - --- name: Declare number of syscalls -- set_fact: audit_syscalls_number_of_syscalls="{{ syscalls|length|int }}" -+- name: Check existence of syscalls for in /etc/audit/rules.d/ -+ find: -+ paths: /etc/audit/rules.d -+ contains: '{{{ action_arch_filters }}}(( -S |,)\w+)*(( -S |,){{ item }})+(( -S |,)\w+)*{{{ other_filters }}}{{{ auid_filters }}} (-k\s+|-F\s+key=)\S+\s*$' -+ patterns: '*.rules' -+ register: find_command -+ loop: '{{ syscall_grouping }}' - --{{# --This dictionary is a Jinja2 trick to allow loops to change variables defined out of its scope. --See official documentation: https://jinja.palletsprojects.com/en/2.11.x/templates/#assignments --#}} --{{% set fields_data = { 'regex' : "", 'plain_text': "" } %}} --{{% for field in fields %}} -- {{% set not_used = fields_data.update({'regex': fields_data.regex + '(?:-F[\s]+' + field + '[\s]+)'}) %}} -- {{% set not_used = fields_data.update({'plain_text': fields_data.plain_text + ' -F ' + field }) %}} --{{% endfor %}} -+- name: Declare syscalls found per file -+ set_fact: syscalls_per_file="{{ syscalls_per_file | default({}) | combine( {item.files[0].path :[item.item]+(syscalls_per_file | default({})).get(item.files[0].path, []) } ) }}" -+ loop: "{{ find_command.results | selectattr('matched') | list}}" - --- name: Check existence of syscalls for architecture {{{ arch }}} in /etc/audit/rules.d/ -- find: -- paths: "/etc/audit/rules.d" -- contains: '^[\s]*-a[\s]+always,exit[\s]+(?:.*-F[\s]+arch={{{ arch }}}[\s]+)(?:.*(-S[\s]+{{ item }}[\s]+|([\s]+|[,]){{ item }}([\s]+|[,]))).*{{{ fields_data.regex }}}(-k[\s]+|-F[\s]+key=)[\S]+[\s]*$' -- patterns: "*.rules" -- register: audit_syscalls_found_{{{ arch }}}_rules_d -- loop: "{{ syscalls }}" -+- name: Declare files where syscalls where found -+ set_fact: found_paths="{{ find_command.results | map(attribute='files') | flatten | map(attribute='path') | list }}" - --- name: Get number of matched syscalls for architecture {{{ arch }}} in /etc/audit/rules.d/ -- set_fact: audit_syscalls_matched_{{{ arch }}}_rules_d="{{ audit_syscalls_found_{{{ arch }}}_rules_d.results|sum(attribute='matched')|int }}" -+- name: Count occurrences of syscalls in paths -+ set_fact: found_paths_dict="{{ found_paths_dict | default({}) | combine({ item:1+(found_paths_dict | default({})).get(item, 0) }) }}" -+ loop: "{{ find_command.results | map(attribute='files') | flatten | map(attribute='path') | list }}" - --- name: Search /etc/audit/rules.d for other rules with the key {{{ key }}} -- find: -- paths: "/etc/audit/rules.d" -- contains: '^.*(?:-F key=|-k\s+){{{ key }}}$' -- patterns: "*.rules" -- register: find_syscalls_files -+- name: Get path with most syscalls -+ set_fact: audit_file="{{ (found_paths_dict | dict2items() | sort(attribute='value') | last).key }}" -+ when: found_paths | length >= 1 - --- name: Use /etc/audit/rules.d/{{{ key }}}.rules as the recipient for the rule -- set_fact: -- all_files: -- - /etc/audit/rules.d/{{{ key }}}.rules -- when: find_syscalls_files.matched is defined and find_syscalls_files.matched == 0 -+- name: No file with syscall found, set path to /etc/audit/rules.d/{{{ key }}}.rules -+ set_fact: audit_file="/etc/audit/rules.d/{{{ key }}}.rules" -+ when: found_paths | length == 0 - --- name: Use matched file as the recipient for the rule -+- name: Declare found syscalls -+ set_fact: syscalls_found="{{ find_command.results | selectattr('matched') | map(attribute='item') | list }}" -+ -+- name: Declare missing syscalls - set_fact: -- all_files: -- - "{{ find_syscalls_files.files | map(attribute='path') | list | first }}" -- when: find_syscalls_files.matched is defined and find_syscalls_files.matched > 0 -+ missing_syscalls="{{ syscalls | difference(syscalls_found) }}" - --- name: "Insert the syscall rule in {{ all_files[0] }}" -- block: -- - name: "Construct rule: add rule list, action and arch" -- set_fact: tmpline="-a always,exit -F arch={{{ arch }}}" -- - name: "Construct rule: add syscalls" -- set_fact: tmpline="{{ tmpline + ' -S ' + item.item }}" -- loop: "{{ audit_syscalls_found_{{{ arch }}}_rules_d.results }}" -- when: item.matched is defined and item.matched == 0 -- - name: "Construct rule: add fields and key" -- set_fact: tmpline="{{ tmpline + '{{{ fields_data.plain_text }}} -k {{{ key }}}' }}" -- - name: "Insert the line in {{ all_files[0] }}" -- lineinfile: -- path: "{{ all_files[0] }}" -- line: "{{ tmpline }}" -- create: true -- state: present -- when: audit_syscalls_matched_{{{ arch }}}_rules_d < audit_syscalls_number_of_syscalls -+- name: Replace the audit rule in {{ audit_file }} -+ lineinfile: -+ path: '{{ audit_file }}' -+ regexp: '({{{ action_arch_filters }}})(?=.*(?:(?:-S |,)(?:{{ syscalls_per_file[audit_file] | join("|") }}))\b)((?:( -S |,)\w+)+)({{{ other_filters }}}{{{ auid_filters }}} (?:-k |-F key=)\w+)' -+ line: '\1\2\3{{ missing_syscalls | join("\3") }}\4' -+ backrefs: yes -+ state: present -+ when: syscalls_found | length > 0 and missing_syscalls | length > 0 -+ -+- name: Add the audit rule to {{ audit_file }} -+ lineinfile: -+ path: '{{ audit_file }}' -+ line: "{{{ action_arch_filters }}} -S {{ syscalls | join(',') }}{{{ other_filters }}}{{{ auid_filters}}} -F key={{{ key }}}" -+ create: true -+ state: present -+ when: syscalls_found | length == 0 - {{%- endmacro %}} - - {{# - The following macro remediates Audit syscall rule in /etc/audit/audit.rules file. - The macro requires following parameters: --- arch: an architecture to be used in the Audit rule (b32, b64) --- syscalls: list of syscalls supplied as a list ["syscall1", "syscall2"] etc. --- key: a key to use as rule identifier. --- fields (optional): list of syscall fields to add (e.g.: auid=unset, exit=-EPERM, a0&0100); -- Add them in the order you expect them to be in the audit rule. -+- action_arch_filters: The action and arch filters of the rule -+ For example, "-a always,exit -F arch=b64" -+- other_filters: Other filters that may characterize the rule: -+ For example, "-F a2&03 -F path=/etc/passwd" -+- auid_filters: The auid filters of the rule -+ For example, "-F auid>=1000 -F auid!=unset" -+- syscalls: List of syscalls to ensure presense among audit rules -+ For example, "['fchown', 'lchown', 'fchownat']" -+- syscall_groupings: List of other syscalls that can be grouped with 'syscalls' -+ For example, "['fchown', 'lchown', 'fchownat']" -+- key: The key to use when appending a new rule - #}} --{{% macro ansible_audit_auditctl_add_syscall_rule(arch="", syscalls=[], key="", fields=[]) -%}} --- name: Declare list of syscals -+{{% macro ansible_audit_auditctl_add_syscall_rule(action_arch_filters="", other_filters="", auid_filters="", syscalls=[], key="", syscall_grouping=[]) -%}} -+{{% if other_filters!= "" %}} -+ {{% set other_filters = " " ~ other_filters %}} -+{{% endif %}} -+{{% if auid_filters!= "" %}} -+ {{% set auid_filters = " " ~ auid_filters %}} -+{{% endif %}} -+- name: Declare list of syscalls - set_fact: - syscalls: {{{ syscalls }}} -+ syscall_grouping: {{{ syscall_grouping }}} -+ -+- name: Check existence of syscalls for in /etc/audit/rules.d/ -+ find: -+ paths: /etc/audit -+ contains: '{{{ action_arch_filters }}}(( -S |,)\w+)*(( -S |,){{ item }})+(( -S |,)\w+)*{{{ other_filters }}}{{{ auid_filters }}} (-k\s+|-F\s+key=)\S+\s*$' -+ patterns: 'audit.rules' -+ register: find_command -+ loop: '{{ syscall_grouping }}' - --- name: Declare number of syscalls -- set_fact: audit_syscalls_number_of_syscalls="{{ syscalls|length|int }}" -+- name: Set path to /etc/audit/rules.d/{{{ key }}}.rules -+ set_fact: audit_file="/etc/audit/audit.rules" - --{{# --This dictionary is a Jinja2 trick to allow loops to change variables defined out of its scope. --See official documentation: https://jinja.palletsprojects.com/en/2.11.x/templates/#assignments --#}} --{{% set fields_data = { 'regex' : "", 'plain_text': "" } %}} --{{% for field in fields %}} -- {{% set not_used = fields_data.update({'regex': fields_data.regex + '(?:-F[\s]+' + field + '[\s]+)'}) %}} -- {{% set not_used = fields_data.update({'plain_text': fields_data.plain_text + ' -F ' + field }) %}} --{{% endfor %}} -+- name: Declare found syscalls -+ set_fact: syscalls_found="{{ find_command.results | selectattr('matched') | map(attribute='item') | list }}" - --- name: Check existence of syscalls for architecture {{{ arch }}} in /etc/audit/audit.rules -- find: -- paths: "/etc/audit" -- contains: '^[\s]*-a[\s]+always,exit[\s]+(?:.*-F[\s]+arch={{{ arch }}}[\s]+)(?:.*(-S[\s]+{{ item }}[\s]+|([\s]+|[,]){{ item }}([\s]+|[,]))).*{{{ fields_data.regex }}}(-k[\s]+|-F[\s]+key=)[\S]+[\s]*$' -- patterns: "audit.rules" -- register: audit_syscalls_found_{{{ arch }}}_audit_rules -- loop: "{{ syscalls }}" -+- name: Declare missing syscalls -+ set_fact: -+ missing_syscalls="{{ syscalls | difference(syscalls_found) }}" - --- name: Get number of matched syscalls for architecture {{{ arch }}} in /etc/audit/audit.rules -- set_fact: audit_syscalls_matched_{{{ arch }}}_audit_rules="{{ audit_syscalls_found_{{{ arch }}}_audit_rules.results|sum(attribute='matched')|int }}" -+- name: Replace the audit rule in {{ audit_file }} -+ lineinfile: -+ path: '{{ audit_file }}' -+ regexp: '({{{ action_arch_filters }}})(?=.*(?:(?:-S |,)(?:{{ syscalls_found | join("|") }}))\b)((?:( -S |,)\w+)+)({{{ other_filters }}}{{{ auid_filters }}} (?:-k |-F key=)\w+)' -+ line: '\1\2\3{{ missing_syscalls | join("\3") }}\4' -+ backrefs: yes -+ state: present -+ when: syscalls_found | length > 0 and missing_syscalls | length > 0 -+ -+- name: Add the audit rule to {{ audit_file }} -+ lineinfile: -+ path: '{{ audit_file }}' -+ line: "{{{ action_arch_filters }}} -S {{ syscalls | join(',') }}{{{ other_filters }}}{{{ auid_filters}}} -F key={{{ key }}}" -+ create: true -+ state: present -+ when: syscalls_found | length == 0 -+- name: Declare list of syscals -+ set_fact: -+ syscalls: {{{ syscalls }}} - --- name: Insert the syscall rule in /etc/audit/audit.rules -- block: -- - name: "Construct rule: add rule list, action and arch" -- set_fact: tmpline="-a always,exit -F arch={{{ arch }}}" -- - name: "Construct rule: add syscalls" -- set_fact: tmpline="{{ tmpline + ' -S ' + item.item }}" -- loop: "{{ audit_syscalls_found_{{{ arch }}}_audit_rules.results }}" -- when: item.matched is defined and item.matched == 0 -- - name: "Construct rule: add fields and key" -- set_fact: tmpline="{{ tmpline + '{{{ fields_data.plain_text }}} -k {{{ key }}}' }}" -- - name: Insert the line in /etc/audit/audit.rules -- lineinfile: -- path: "/etc/audit/audit.rules" -- line: "{{ tmpline }}" -- create: true -- state: present -- when: audit_syscalls_matched_{{{ arch }}}_audit_rules < audit_syscalls_number_of_syscalls - {{%- endmacro %}} - - {{% macro ansible_sssd_ldap_config(parameter, value) -%}} - -From a355d5b5578477a4464023dccccdb474ff571768 Mon Sep 17 00:00:00 2001 -From: Watson Sato -Date: Tue, 17 Aug 2021 14:35:17 +0200 -Subject: [PATCH 14/31] Move template audit_rules_path_syscall to Ansible macro - ---- - .../audit_rules_path_syscall/ansible.template | 100 +++++++----------- - .../audit_rules_path_syscall/template.py | 7 ++ - 2 files changed, 44 insertions(+), 63 deletions(-) - -diff --git a/shared/templates/audit_rules_path_syscall/ansible.template b/shared/templates/audit_rules_path_syscall/ansible.template -index d519609fa02..20440a36237 100644 ---- a/shared/templates/audit_rules_path_syscall/ansible.template -+++ b/shared/templates/audit_rules_path_syscall/ansible.template -@@ -11,67 +11,41 @@ - set_fact: - audit_arch: "b{{ ansible_architecture | regex_replace('.*(\\d\\d$)','\\1') }}" - --# --# Inserts/replaces the rule in /etc/audit/rules.d --# --- name: Search /etc/audit/rules.d for other DAC audit rules -- find: -- paths: "/etc/audit/rules.d" -- recurse: no -- contains: ".*{{{ SYSCALL }}}(,[\\S]+)?[\\s]+-F[\\s]+{{{ POS }}}&03[\\s]+-F[\\s]+path={{{ PATH }}}.*" -- patterns: "*.rules" -- register: find_{{{ SYSCALL }}} -- --- name: If existing DAC ruleset not found, use /etc/audit/rules.d/modify.rules as the recipient for the rule -- set_fact: -- all_files: -- - /etc/audit/rules.d/modify.rules -- when: find_{{{ SYSCALL }}}.matched is defined and find_{{{ SYSCALL }}}.matched == 0 -- --- name: Use matched file as the recipient for the rule -- set_fact: -- all_files: -- - "{{ find_{{{ SYSCALL }}}.files | map(attribute='path') | list | first }}" -- when: find_{{{ SYSCALL }}}.matched is defined and find_{{{ SYSCALL }}}.matched > 0 -- --- name: Inserts/replaces the {{{ SYSCALL }}} rule in rules.d when on x86 -- lineinfile: -- path: "{{ all_files[0] }}" -- line: "{{ item }}" -- create: yes -- regexp: "-a always,exit -F arch=b32 -S {{{ SYSCALL }}} -F {{{ POS }}}&03 -F path={{{ PATH }}} -F auid>={{{ auid }}} -F auid!=unset -F key=[\\S]+" -- with_items: -- - "-a always,exit -F arch=b32 -S {{{ SYSCALL }}} -F {{{ POS }}}&03 -F path={{{ PATH }}} -F auid>={{{ auid }}} -F auid!=unset -F key=modify" -- --- name: Inserts/replaces the {{{ SYSCALL }}} rule in rules.d when on x86_64 -- lineinfile: -- path: "{{ all_files[0] }}" -- line: "{{ item }}" -- create: yes -- regexp: "-a always,exit -F arch=b64 -S {{{ SYSCALL }}} -F {{{ POS }}}&03 -F path={{{ PATH }}} -F auid>={{{ auid }}} -F auid!=unset -F key=[\\S]+" -- with_items: -- - "-a always,exit -F arch=b64 -S {{{ SYSCALL }}} -F {{{ POS }}}&03 -F path={{{ PATH }}} -F auid>={{{ auid }}} -F auid!=unset -F key=modify" -- when: audit_arch is defined and audit_arch == 'b64' --# --# Inserts/replaces the rule in /etc/audit/audit.rules --# --- name: Inserts/replaces the {{{ SYSCALL }}} rule in /etc/audit/audit.rules when on x86 -- lineinfile: -- line: "{{ item }}" -- state: present -- dest: /etc/audit/audit.rules -- create: yes -- regexp: "-a always,exit -F arch=b32 -S {{{ SYSCALL }}} -F {{{ POS }}}&03 -F path={{{ PATH }}} -F auid>={{{ auid }}} -F auid!=unset -F key=[\\S]+" -- with_items: -- - "-a always,exit -F arch=b32 -S {{{ SYSCALL }}} -F {{{ POS }}}&03 -F path={{{ PATH }}} -F auid>={{{ auid }}} -F auid!=unset -F key=modify" -+- name: Perform remediattion of Audit rules for {{{ SYSCALL }}} for x86 platform -+ block: -+ {{{ ansible_audit_augenrules_add_syscall_rule( -+ action_arch_filters="-a always,exit -F arch=b32", -+ other_filters="-F "~POS~"&03 -F path="~PATH, -+ auid_filters="-F auid>="~auid~" -F auid!=unset", -+ syscalls=SYSCALL, -+ key="modify", -+ syscall_grouping=SYSCALL_GROUPING, -+ )|indent(4) }}} -+ {{{ ansible_audit_auditctl_add_syscall_rule( -+ action_arch_filters="-a always,exit -F arch=b32", -+ other_filters="-F "~POS~"&03 -F path="~PATH, -+ auid_filters="-F auid>="~auid~" -F auid!=unset", -+ syscalls=SYSCALL, -+ key="modify", -+ syscall_grouping=SYSCALL_GROUPING, -+ )|indent(4) }}} - --- name: Inserts/replaces the {{{ SYSCALL }}} rule in audit.rules when on x86_64 -- lineinfile: -- line: "{{ item }}" -- state: present -- dest: /etc/audit/audit.rules -- create: yes -- regexp: "-a always,exit -F arch=b64 -S {{{ SYSCALL }}} -F {{{ POS }}}&03 -F path={{{ PATH }}} -F auid>={{{ auid }}} -F auid!=unset -F key=[\\S]+" -- with_items: -- - "-a always,exit -F arch=b64 -S {{{ SYSCALL }}} -F {{{ POS }}}&03 -F path={{{ PATH }}} -F auid>={{{ auid }}} -F auid!=unset -F key=modify" -- when: audit_arch is defined and audit_arch == 'b64' -+- name: Perform remediattion of Audit rules for {{{ SYSCALL }}} for x86_64 platform -+ block: -+ {{{ ansible_audit_augenrules_add_syscall_rule( -+ action_arch_filters="-a always,exit -F arch=b64", -+ other_filters="-F "~POS~"&03 -F path="~PATH, -+ auid_filters="-F auid>="~auid~" -F auid!=unset", -+ syscalls=SYSCALL, -+ key="modify", -+ syscall_grouping=SYSCALL_GROUPING, -+ )|indent(4) }}} -+ {{{ ansible_audit_auditctl_add_syscall_rule( -+ action_arch_filters="-a always,exit -F arch=b64", -+ other_filters="-F "~POS~"&03 -F path="~PATH, -+ auid_filters="-F auid>="~auid~" -F auid!=unset", -+ syscalls=SYSCALL, -+ key="modify", -+ syscall_grouping=SYSCALL_GROUPING, -+ )|indent(4) }}} -+ when: audit_arch == "b64" -diff --git a/shared/templates/audit_rules_path_syscall/template.py b/shared/templates/audit_rules_path_syscall/template.py -index 7e0877a02b9..c13f34b94e0 100644 ---- a/shared/templates/audit_rules_path_syscall/template.py -+++ b/shared/templates/audit_rules_path_syscall/template.py -@@ -11,4 +11,11 @@ def preprocess(data, lang): - if "syscall_grouping" in data: - # Make it easier to tranform the syscall_grouping into a Bash array - data["syscall_grouping"] = " ".join(data["syscall_grouping"]) -+ elif lang == "ansible": -+ if "syscall" in data: -+ # Tranform the syscall into a Ansible list -+ data["syscall"] = [ data["syscall"] ] -+ if "syscall_grouping" not in data: -+ # Ensure that syscall_grouping is a list -+ data["syscall_grouping"] = [] - return data - -From 27d64329d2d9d3cdac03f0a46866f99c299b430d Mon Sep 17 00:00:00 2001 -From: Watson Sato -Date: Tue, 17 Aug 2021 16:37:12 +0200 -Subject: [PATCH 15/31] Move template audit_rules_dac_modification to Ansible - macro - -Use Ansible macro ansible_audit_augenrules_add_syscall_rule and -ansible_audit_auditctl_add_syscall_rule that group the syscalls -according to defined grouping. ---- - .../ansible.template | 152 ++++++++---------- - .../audit_rules_dac_modification/template.py | 7 + - 2 files changed, 76 insertions(+), 83 deletions(-) - -diff --git a/shared/templates/audit_rules_dac_modification/ansible.template b/shared/templates/audit_rules_dac_modification/ansible.template -index d048978456d..d2ce6c50052 100644 ---- a/shared/templates/audit_rules_dac_modification/ansible.template -+++ b/shared/templates/audit_rules_dac_modification/ansible.template -@@ -11,91 +11,77 @@ - set_fact: - audit_arch: "b{{ ansible_architecture | regex_replace('.*(\\d\\d$)','\\1') }}" - --# --# Inserts/replaces the rule in /etc/audit/rules.d --# --- name: Search /etc/audit/rules.d for other DAC audit rules -- find: -- paths: "/etc/audit/rules.d" -- recurse: no -- contains: "-F key=perm_mod$" -- patterns: "*.rules" -- register: find_{{{ ATTR }}} -- --- name: If existing DAC ruleset not found, use /etc/audit/rules.d/privileged.rules as the recipient for the rule -- set_fact: -- all_files: -- - /etc/audit/rules.d/privileged.rules -- when: find_{{{ ATTR }}}.matched is defined and find_{{{ ATTR }}}.matched == 0 -- --- name: Use matched file as the recipient for the rule -- set_fact: -- all_files: -- - "{{ find_{{{ ATTR }}}.files | map(attribute='path') | list | first }}" -- when: find_{{{ ATTR }}}.matched is defined and find_{{{ ATTR }}}.matched > 0 -- --- name: Inserts/replaces the {{{ ATTR }}} rule in rules.d when on x86 -- lineinfile: -- path: "{{ all_files[0] }}" -- line: "-a always,exit -F arch=b32 -S {{{ ATTR }}} -F auid>={{{ auid }}} -F auid!=unset -F key=perm_mod" -- create: yes -- -+- name: Perform remediattion of Audit rules for {{{ ATTR }}} for x86 platform -+ block: -+ {{{ ansible_audit_augenrules_add_syscall_rule( -+ action_arch_filters="-a always,exit -F arch=b32", -+ other_filters="", -+ auid_filters="-F auid>="~auid~" -F auid!=unset", -+ syscalls=ATTR, -+ key="perm_mod", -+ syscall_grouping=SYSCALL_GROUPING, -+ )|indent(4) }}} -+ {{{ ansible_audit_auditctl_add_syscall_rule( -+ action_arch_filters="-a always,exit -F arch=b32", -+ other_filters="", -+ auid_filters="-F auid>="~auid~" -F auid!=unset", -+ syscalls=ATTR, -+ key="perm_mod", -+ syscall_grouping=SYSCALL_GROUPING, -+ )|indent(4) }}} - {{%- if CHECK_ROOT_USER %}} --- name: Inserts/replaces the {{{ ATTR }}} rule with auid=0 in rules.d when on x86 -- lineinfile: -- path: "{{ all_files[0] }}" -- line: "-a always,exit -F arch=b32 -S {{{ ATTR }}} -F auid=0 -F key=perm_mod" -- create: yes -+ {{{ ansible_audit_augenrules_add_syscall_rule( -+ action_arch_filters="-a always,exit -F arch=b32", -+ other_filters="", -+ auid_filters="-F auid=0", -+ syscalls=ATTR, -+ key="perm_mod", -+ syscall_grouping=SYSCALL_GROUPING, -+ )|indent(4) }}} -+ {{{ ansible_audit_auditctl_add_syscall_rule( -+ action_arch_filters="-a always,exit -F arch=b32", -+ other_filters="", -+ auid_filters="-F auid=0", -+ syscalls=ATTR, -+ key="perm_mod", -+ syscall_grouping=SYSCALL_GROUPING, -+ )|indent(4) }}} - {{%- endif %}} - --- name: Inserts/replaces the {{{ ATTR }}} rule in rules.d when on x86_64 -- lineinfile: -- path: "{{ all_files[0] }}" -- line: "-a always,exit -F arch=b64 -S {{{ ATTR }}} -F auid>={{{ auid }}} -F auid!=unset -F key=perm_mod" -- create: yes -- when: audit_arch is defined and audit_arch == 'b64' -- --{{%- if CHECK_ROOT_USER %}} --- name: Inserts/replaces the {{{ ATTR }}} rule with auid=0 in rules.d when on x86_64 -- lineinfile: -- path: "{{ all_files[0] }}" -- line: "-a always,exit -F arch=b64 -S {{{ ATTR }}} -F auid=0 -F key=perm_mod" -- create: yes -- when: audit_arch is defined and audit_arch == 'b64' --{{%- endif %}} --# --# Inserts/replaces the rule in /etc/audit/audit.rules --# --- name: Inserts/replaces the {{{ ATTR }}} rule in /etc/audit/audit.rules when on x86 -- lineinfile: -- line: "-a always,exit -F arch=b32 -S {{{ ATTR }}} -F auid>={{{ auid }}} -F auid!=unset -F key=perm_mod" -- state: present -- dest: /etc/audit/audit.rules -- create: yes -- --{{%- if CHECK_ROOT_USER %}} --- name: Inserts/replaces the {{{ ATTR }}} rule with auid=0 in /etc/audit/audit.rules when on x86 -- lineinfile: -- line: "-a always,exit -F arch=b32 -S {{{ ATTR }}} -F auid=0 -F key=perm_mod" -- state: present -- dest: /etc/audit/audit.rules -- create: yes --{{%- endif %}} -- --- name: Inserts/replaces the {{{ ATTR }}} rule in audit.rules when on x86_64 -- lineinfile: -- line: "-a always,exit -F arch=b64 -S {{{ ATTR }}} -F auid>={{{ auid }}} -F auid!=unset -F key=perm_mod" -- state: present -- dest: /etc/audit/audit.rules -- create: yes -- when: audit_arch is defined and audit_arch == 'b64' -- -+- name: Perform remediattion of Audit rules for {{{ ATTR }}} for x86_64 platform -+ block: -+ {{{ ansible_audit_augenrules_add_syscall_rule( -+ action_arch_filters="-a always,exit -F arch=b64", -+ other_filters="", -+ auid_filters="-F auid>="~auid~" -F auid!=unset", -+ syscalls=ATTR, -+ key="perm_mod", -+ syscall_grouping=SYSCALL_GROUPING, -+ )|indent(4) }}} -+ {{{ ansible_audit_auditctl_add_syscall_rule( -+ action_arch_filters="-a always,exit -F arch=b64", -+ other_filters="", -+ auid_filters="-F auid>="~auid~" -F auid!=unset", -+ syscalls=ATTR, -+ key="perm_mod", -+ syscall_grouping=SYSCALL_GROUPING, -+ )|indent(4) }}} - {{%- if CHECK_ROOT_USER %}} --- name: Inserts/replaces the {{{ ATTR }}} rule with auid=0 in audit.rules when on x86_64 -- lineinfile: -- line: "-a always,exit -F arch=b64 -S {{{ ATTR }}} -F auid=0 -F auid!=unset -F key=perm_mod" -- state: present -- dest: /etc/audit/audit.rules -- create: yes -- when: audit_arch is defined and audit_arch == 'b64' -+ {{{ ansible_audit_augenrules_add_syscall_rule( -+ action_arch_filters="-a always,exit -F arch=b64", -+ other_filters="", -+ auid_filters="-F auid=0", -+ syscalls=ATTR, -+ key="perm_mod", -+ syscall_grouping=SYSCALL_GROUPING, -+ )|indent(4) }}} -+ {{{ ansible_audit_auditctl_add_syscall_rule( -+ action_arch_filters="-a always,exit -F arch=b64", -+ other_filters="", -+ auid_filters="-F auid=0", -+ syscalls=ATTR, -+ key="perm_mod", -+ syscall_grouping=SYSCALL_GROUPING, -+ )|indent(4) }}} - {{%- endif %}} -+ when: audit_arch == "b64" -diff --git a/shared/templates/audit_rules_dac_modification/template.py b/shared/templates/audit_rules_dac_modification/template.py -index 7dc53e81f7d..eebd0b6f4ee 100644 ---- a/shared/templates/audit_rules_dac_modification/template.py -+++ b/shared/templates/audit_rules_dac_modification/template.py -@@ -7,5 +7,12 @@ def preprocess(data, lang): - if "syscall_grouping" in data: - # Make it easier to tranform the syscall_grouping into a Bash array - data["syscall_grouping"] = " ".join(data["syscall_grouping"]) -+ elif lang == "ansible": -+ if "attr" in data: -+ # Tranform the syscall into a Ansible list -+ data["attr"] = [ data["attr"] ] -+ if "syscall_grouping" not in data: -+ # Ensure that syscall_grouping is a list -+ data["syscall_grouping"] = [] - - return data - -From cd507f507d3fb756c49e4ca19d47f17d951e1a9f Mon Sep 17 00:00:00 2001 -From: Watson Sato -Date: Tue, 17 Aug 2021 16:59:48 +0200 -Subject: [PATCH 16/31] Move template - audit_rules_unsuccessfull_file_modification to Ansible macro - -Use Ansible macro ansible_audit_augenrules_add_syscall_rule and -ansible_audit_auditctl_add_syscall_rule that group the syscalls -according to defined grouping. ---- - .../ansible.template | 102 +++++++----------- - .../template.py | 8 ++ - 2 files changed, 47 insertions(+), 63 deletions(-) - -diff --git a/shared/templates/audit_rules_unsuccessful_file_modification/ansible.template b/shared/templates/audit_rules_unsuccessful_file_modification/ansible.template -index 8e8e003a5b0..cb5decc6a6e 100644 ---- a/shared/templates/audit_rules_unsuccessful_file_modification/ansible.template -+++ b/shared/templates/audit_rules_unsuccessful_file_modification/ansible.template -@@ -11,67 +11,43 @@ - set_fact: - audit_arch: "b{{ ansible_architecture | regex_replace('.*(\\d\\d$)','\\1') }}" - --# --# Inserts/replaces the rule in /etc/audit/rules.d --# --- name: Search /etc/audit/rules.d for other DAC audit rules -- find: -- paths: "/etc/audit/rules.d" -- recurse: no -- contains: "-F key=perm_mod$" -- patterns: "*.rules" -- register: find_{{{ NAME }}} -- --- name: If existing DAC ruleset not found, use /etc/audit/rules.d/access.rules as the recipient for the rule -- set_fact: -- all_files: -- - /etc/audit/rules.d/access.rules -- when: find_{{{ NAME }}}.matched is defined and find_{{{ NAME }}}.matched == 0 -- --- name: Use matched file as the recipient for the rule -- set_fact: -- all_files: -- - "{{ find_{{{ NAME }}}.files | map(attribute='path') | list | first }}" -- when: find_{{{ NAME }}}.matched is defined and find_{{{ NAME }}}.matched > 0 -- --- name: Inserts/replaces the {{{ NAME }}} rule in rules.d when on x86 -- lineinfile: -- path: "{{ all_files[0] }}" -- line: "{{ item }}" -- create: yes -- with_items: -- - "-a always,exit -F arch=b32 -S {{{ NAME }}} -F exit=-EACCES -F auid>={{{ auid }}} -F auid!=unset -F key=access" -- - "-a always,exit -F arch=b32 -S {{{ NAME }}} -F exit=-EPERM -F auid>={{{ auid }}} -F auid!=unset -F key=access" -- --- name: Inserts/replaces the {{{ NAME }}} rule in rules.d when on x86_64 -- lineinfile: -- path: "{{ all_files[0] }}" -- line: "{{ item }}" -- create: yes -- with_items: -- - "-a always,exit -F arch=b64 -S {{{ NAME }}} -F exit=-EACCES -F auid>={{{ auid }}} -F auid!=unset -F key=access" -- - "-a always,exit -F arch=b64 -S {{{ NAME }}} -F exit=-EPERM -F auid>={{{ auid }}} -F auid!=unset -F key=access" -- when: audit_arch is defined and audit_arch == 'b64' --# --# Inserts/replaces the rule in /etc/audit/audit.rules --# --- name: Inserts/replaces the {{{ NAME }}} rule in /etc/audit/audit.rules when on x86 -- lineinfile: -- line: "{{ item }}" -- state: present -- dest: /etc/audit/audit.rules -- create: yes -- with_items: -- - "-a always,exit -F arch=b32 -S {{{ NAME }}} -F exit=-EACCES -F auid>={{{ auid }}} -F auid!=unset -F key=access" -- - "-a always,exit -F arch=b32 -S {{{ NAME }}} -F exit=-EPERM -F auid>={{{ auid }}} -F auid!=unset -F key=access" -+{{% for EXIT_CODE in ["EACCES","EPERM"] %}} -+- name: Perform remediation of Audit rules for {{{ NAME }}} {{{ EXIT_CODE}}} for x86 platform -+ block: -+ {{{ ansible_audit_augenrules_add_syscall_rule( -+ action_arch_filters="-a always,exit -F arch=b32", -+ other_filters="-F exit=-"~EXIT_CODE, -+ auid_filters="-F auid>="~auid~" -F auid!=unset", -+ syscalls=NAME, -+ key="access", -+ syscall_grouping=SYSCALL_GROUPING, -+ )|indent(4) }}} -+ {{{ ansible_audit_auditctl_add_syscall_rule( -+ action_arch_filters="-a always,exit -F arch=b32", -+ other_filters="-F exit=-"~EXIT_CODE, -+ auid_filters="-F auid>="~auid~" -F auid!=unset", -+ syscalls=NAME, -+ key="access", -+ syscall_grouping=SYSCALL_GROUPING, -+ )|indent(4) }}} - --- name: Inserts/replaces the {{{ NAME }}} rule in audit.rules when on x86_64 -- lineinfile: -- line: "{{ item }}" -- state: present -- dest: /etc/audit/audit.rules -- create: yes -- with_items: -- - "-a always,exit -F arch=b64 -S {{{ NAME }}} -F exit=-EACCES -F auid>={{{ auid }}} -F auid!=unset -F key=access" -- - "-a always,exit -F arch=b64 -S {{{ NAME }}} -F exit=-EPERM -F auid>={{{ auid }}} -F auid!=unset -F key=access" -- when: audit_arch is defined and audit_arch == 'b64' -+- name: Perform remediattion of Audit rules for {{{ NAME }}} {{{ EXIT_CODE }}} for x86_64 platform -+ block: -+ {{{ ansible_audit_augenrules_add_syscall_rule( -+ action_arch_filters="-a always,exit -F arch=b64", -+ other_filters="-F exit=-"~EXIT_CODE, -+ auid_filters="-F auid>="~auid~" -F auid!=unset", -+ syscalls=NAME, -+ key="access", -+ syscall_grouping=SYSCALL_GROUPING, -+ )|indent(4) }}} -+ {{{ ansible_audit_auditctl_add_syscall_rule( -+ action_arch_filters="-a always,exit -F arch=b64", -+ other_filters="-F exit=-"~EXIT_CODE, -+ auid_filters="-F auid>="~auid~" -F auid!=unset", -+ syscalls=NAME, -+ key="access", -+ syscall_grouping=SYSCALL_GROUPING, -+ )|indent(4) }}} -+ when: audit_arch == "b64" -+{{% endfor %}} -diff --git a/shared/templates/audit_rules_unsuccessful_file_modification/template.py b/shared/templates/audit_rules_unsuccessful_file_modification/template.py -index a4e58609f66..62abfad9a2c 100644 ---- a/shared/templates/audit_rules_unsuccessful_file_modification/template.py -+++ b/shared/templates/audit_rules_unsuccessful_file_modification/template.py -@@ -6,6 +6,14 @@ def _audit_rules_unsuccessful_file_modification(data, lang): - if "syscall_grouping" in data: - # Make it easier to tranform the syscall_grouping into a Bash array - data["syscall_grouping"] = " ".join(data["syscall_grouping"]) -+ elif lang == "ansible": -+ if "name" in data: -+ # Tranform the syscall into a Ansible list -+ # The syscall is under 'name' -+ data["name"] = [ data["name"] ] -+ if "syscall_grouping" not in data: -+ # Ensure that syscall_grouping is a list -+ data["syscall_grouping"] = [] - return data - - - -From 52dcdb4be6c1b450bfb074684b4657a40963e752 Mon Sep 17 00:00:00 2001 -From: Watson Sato -Date: Tue, 17 Aug 2021 17:34:26 +0200 -Subject: [PATCH 17/31] Add syscall_groups to unsuccessful_file_mofication - rules - -The groupings were based on the rule description. ---- - .../rule.yml | 7 +++++++ - .../rule.yml | 5 +++++ - .../rule.yml | 7 +++++++ - .../rule.yml | 7 +++++++ - .../rule.yml | 5 +++++ - .../rule.yml | 5 +++++ - .../rule.yml | 7 +++++++ - .../rule.yml | 5 +++++ - .../rule.yml | 7 +++++++ - .../rule.yml | 5 +++++ - .../rule.yml | 5 +++++ - .../rule.yml | 6 ++++++ - .../rule.yml | 7 +++++++ - .../rule.yml | 5 +++++ - .../rule.yml | 5 +++++ - 15 files changed, 88 insertions(+) - -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_chmod/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_chmod/rule.yml -index 7cf5855bcae..ddfe1e9d6c3 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_chmod/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_chmod/rule.yml -@@ -51,3 +51,10 @@ template: - name: audit_rules_unsuccessful_file_modification - vars: - name: chmod -+ syscall_grouping: -+ - chmod -+ - fchmod -+ - fchmodat -+ - fsetxattr -+ - lsetxattr -+ - setxattr -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_chown/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_chown/rule.yml -index 090463bd402..6ca6e27b24d 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_chown/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_chown/rule.yml -@@ -51,3 +51,8 @@ template: - name: audit_rules_unsuccessful_file_modification - vars: - name: chown -+ syscall_grouping: -+ - chown -+ - fchown -+ - fchownat -+ - lchown -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_fchmod/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_fchmod/rule.yml -index fc2b945ef9b..1a93b4537e0 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_fchmod/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_fchmod/rule.yml -@@ -51,3 +51,10 @@ template: - name: audit_rules_unsuccessful_file_modification - vars: - name: fchmod -+ syscall_grouping: -+ - chmod -+ - fchmod -+ - fchmodat -+ - fsetxattr -+ - lsetxattr -+ - setxattr -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_fchmodat/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_fchmodat/rule.yml -index e4da28ec070..dd77cd60639 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_fchmodat/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_fchmodat/rule.yml -@@ -51,3 +51,10 @@ template: - name: audit_rules_unsuccessful_file_modification - vars: - name: fchmodat -+ syscall_grouping: -+ - chmod -+ - fchmod -+ - fchmodat -+ - fsetxattr -+ - lsetxattr -+ - setxattr -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_fchown/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_fchown/rule.yml -index 69a9ddf72b1..3e5da890340 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_fchown/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_fchown/rule.yml -@@ -51,3 +51,8 @@ template: - name: audit_rules_unsuccessful_file_modification - vars: - name: fchown -+ syscall_grouping: -+ - chown -+ - fchown -+ - fchownat -+ - lchown -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_fchownat/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_fchownat/rule.yml -index 7da6b8a4d73..76f0e177b67 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_fchownat/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_fchownat/rule.yml -@@ -51,3 +51,8 @@ template: - name: audit_rules_unsuccessful_file_modification - vars: - name: fchownat -+ syscall_grouping: -+ - chown -+ - fchown -+ - fchownat -+ - lchown -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_fsetxattr/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_fsetxattr/rule.yml -index eaa9f32081f..bf1ff86737c 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_fsetxattr/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_fsetxattr/rule.yml -@@ -51,3 +51,10 @@ template: - name: audit_rules_unsuccessful_file_modification - vars: - name: fsetxattr -+ syscall_grouping: -+ - chmod -+ - fchmod -+ - fchmodat -+ - fsetxattr -+ - lsetxattr -+ - setxattr -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_lchown/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_lchown/rule.yml -index 84c71963545..3d42cea2ac1 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_lchown/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_lchown/rule.yml -@@ -55,3 +55,8 @@ template: - name: audit_rules_unsuccessful_file_modification - vars: - name: lchown -+ syscall_grouping: -+ - chown -+ - fchown -+ - fchownat -+ - lchown -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_lsetxattr/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_lsetxattr/rule.yml -index 1de114c65d5..e388ec2d69e 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_lsetxattr/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_lsetxattr/rule.yml -@@ -51,3 +51,10 @@ template: - name: audit_rules_unsuccessful_file_modification - vars: - name: lsetxattr -+ syscall_grouping: -+ - chmod -+ - fchmod -+ - fchmodat -+ - fsetxattr -+ - lsetxattr -+ - setxattr -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_rename/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_rename/rule.yml -index 0aac53c1d2f..ae390fc9904 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_rename/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_rename/rule.yml -@@ -64,3 +64,8 @@ template: - name: audit_rules_unsuccessful_file_modification - vars: - name: rename -+ syscall_grouping: -+ - rename -+ - renameat -+ - unlink -+ - unlinkat -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_renameat/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_renameat/rule.yml -index 81bb79b5589..ab5d3b8d7b3 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_renameat/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_renameat/rule.yml -@@ -64,3 +64,8 @@ template: - name: audit_rules_unsuccessful_file_modification - vars: - name: renameat -+ syscall_grouping: -+ - rename -+ - renameat -+ - unlink -+ - unlinkat -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_renameat2/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_renameat2/rule.yml -index 57dc243760d..f0c7e1a9ca9 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_renameat2/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_renameat2/rule.yml -@@ -49,3 +49,9 @@ template: - name: audit_rules_unsuccessful_file_modification - vars: - name: renameat2 -+ syscall_grouping: -+ - rename -+ - renameat -+ - renameat2 -+ - unlink -+ - unlinkat -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_setxattr/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_setxattr/rule.yml -index a406dba0e8d..a45d0cdac86 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_setxattr/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_setxattr/rule.yml -@@ -51,3 +51,10 @@ template: - name: audit_rules_unsuccessful_file_modification - vars: - name: setxattr -+ syscall_grouping: -+ - chmod -+ - fchmod -+ - fchmodat -+ - fsetxattr -+ - lsetxattr -+ - setxattr -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_unlink/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_unlink/rule.yml -index 55f4582ba74..c78957bab21 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_unlink/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_unlink/rule.yml -@@ -66,3 +66,8 @@ template: - name: audit_rules_unsuccessful_file_modification - vars: - name: unlink -+ syscall_grouping: -+ - rename -+ - renameat -+ - unlink -+ - unlinkat -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_unlinkat/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_unlinkat/rule.yml -index 0a672366fe8..8fa62518cb5 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_unlinkat/rule.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_unlinkat/rule.yml -@@ -66,3 +66,8 @@ template: - name: audit_rules_unsuccessful_file_modification - vars: - name: unlinkat -+ syscall_grouping: -+ - rename -+ - renameat -+ - unlink -+ - unlinkat - -From bc7152399c205b25c9a471deffc0497d26896cd7 Mon Sep 17 00:00:00 2001 -From: Watson Sato -Date: Tue, 17 Aug 2021 17:45:45 +0200 -Subject: [PATCH 18/31] Move template audit_rules_privileged_commands to - Ansible macro - -Update the macros to handle better empty syscalls parameter. - -Use Ansible macro ansible_audit_augenrules_add_syscall_rule and -ansible_audit_auditctl_add_syscall_rule that group the syscalls -according to defined grouping. ---- - shared/macros-ansible.jinja | 14 ++++- - .../ansible.template | 56 +++++++------------ - .../template.py | 4 ++ - 3 files changed, 35 insertions(+), 39 deletions(-) - -diff --git a/shared/macros-ansible.jinja b/shared/macros-ansible.jinja -index 5e120deee58..a067742b1f4 100644 ---- a/shared/macros-ansible.jinja -+++ b/shared/macros-ansible.jinja -@@ -404,6 +404,11 @@ The macro requires following parameters: - {{% if auid_filters != "" %}} - {{% set auid_filters = " " ~ auid_filters %}} - {{% endif %}} -+{{% if syscalls == [] %}} -+ {{% set syscall_flag = "" %}} -+{{% else %}} -+ {{% set syscall_flag = " -S " %}} -+{{% endif %}} - - name: Declare list of syscalls - set_fact: - syscalls: {{{ syscalls }}} -@@ -455,7 +460,7 @@ The macro requires following parameters: - - name: Add the audit rule to {{ audit_file }} - lineinfile: - path: '{{ audit_file }}' -- line: "{{{ action_arch_filters }}} -S {{ syscalls | join(',') }}{{{ other_filters }}}{{{ auid_filters}}} -F key={{{ key }}}" -+ line: "{{{ action_arch_filters }}}{{{ syscall_flag }}}{{ syscalls | join(',') }}{{{ other_filters }}}{{{ auid_filters}}} -F key={{{ key }}}" - create: true - state: present - when: syscalls_found | length == 0 -@@ -483,6 +488,11 @@ The macro requires following parameters: - {{% if auid_filters!= "" %}} - {{% set auid_filters = " " ~ auid_filters %}} - {{% endif %}} -+{{% if syscalls == [] %}} -+ {{% set syscall_flag = "" %}} -+{{% else %}} -+ {{% set syscall_flag = " -S " %}} -+{{% endif %}} - - name: Declare list of syscalls - set_fact: - syscalls: {{{ syscalls }}} -@@ -518,7 +528,7 @@ The macro requires following parameters: - - name: Add the audit rule to {{ audit_file }} - lineinfile: - path: '{{ audit_file }}' -- line: "{{{ action_arch_filters }}} -S {{ syscalls | join(',') }}{{{ other_filters }}}{{{ auid_filters}}} -F key={{{ key }}}" -+ line: "{{{ action_arch_filters }}}{{{ syscall_flag }}}{{ syscalls | join(',') }}{{{ other_filters }}}{{{ auid_filters}}} -F key={{{ key }}}" - create: true - state: present - when: syscalls_found | length == 0 -diff --git a/shared/templates/audit_rules_privileged_commands/ansible.template b/shared/templates/audit_rules_privileged_commands/ansible.template -index 06154e10ceb..b1788b59b8a 100644 ---- a/shared/templates/audit_rules_privileged_commands/ansible.template -+++ b/shared/templates/audit_rules_privileged_commands/ansible.template -@@ -1,5 +1,5 @@ - {{%- if product in ["rhel8", "rhel9", "sle12", "sle15"] %}} -- {{%- set perm_x="-F perm=x " %}} -+ {{%- set perm_x=" -F perm=x" %}} - {{%- endif %}} - # platform = multi_platform_rhel,multi_platform_fedora,multi_platform_ol,multi_platform_rhv,multi_platform_sle - # reboot = false -@@ -7,39 +7,21 @@ - # complexity = low - # disruption = low - --# Inserts/replaces the rule in /etc/audit/rules.d -- --- name: Search /etc/audit/rules.d for audit rule entries -- find: -- paths: "/etc/audit/rules.d" -- recurse: no -- contains: "^.*path={{{ PATH }}}.*$" -- patterns: "*.rules" -- register: find_{{{ NAME }}} -- --- name: Use /etc/audit/rules.d/privileged.rules as the recipient for the rule -- set_fact: -- all_files: -- - /etc/audit/rules.d/privileged.rules -- when: find_{{{ NAME }}}.matched is defined and find_{{{ NAME }}}.matched == 0 -- --- name: Use matched file as the recipient for the rule -- set_fact: -- all_files: -- - "{{ find_{{{ NAME }}}.files | map(attribute='path') | list | first }}" -- when: find_{{{ NAME }}}.matched is defined and find_{{{ NAME }}}.matched > 0 -- -- --- name: Inserts/replaces the {{{ NAME }}} rule in rules.d -- lineinfile: -- path: "{{ all_files[0] }}" -- line: '-a always,exit -F path={{{ PATH }}} {{{ perm_x }}}-F auid>={{{ auid }}} -F auid!=unset -F key=privileged' -- create: yes -- --# Inserts/replaces the {{{ NAME }}} rule in /etc/audit/audit.rules -- --- name: Inserts/replaces the {{{ NAME }}} rule in audit.rules -- lineinfile: -- path: /etc/audit/audit.rules -- line: '-a always,exit -F path={{{ PATH }}} {{{ perm_x }}}-F auid>={{{ auid }}} -F auid!=unset -F key=privileged' -- create: yes -+- name: Perform remediattion of Audit rules for {{{ PATH }}} -+ block: -+ {{{ ansible_audit_augenrules_add_syscall_rule( -+ action_arch_filters="-a always,exit", -+ other_filters="-F path="~PATH~perm_x, -+ auid_filters="-F auid>="~auid~" -F auid!=unset", -+ syscalls=SYSCALL, -+ key="privileged", -+ syscall_grouping=SYSCALL_GROUPING, -+ )|indent(4) }}} -+ {{{ ansible_audit_auditctl_add_syscall_rule( -+ action_arch_filters="-a always,exit", -+ other_filters="-F path="~PATH~perm_x, -+ auid_filters="-F auid>="~auid~" -F auid!=unset", -+ syscalls=SYSCALL, -+ key="privileged", -+ syscall_grouping=SYSCALL_GROUPING, -+ )|indent(4) }}} -diff --git a/shared/templates/audit_rules_privileged_commands/template.py b/shared/templates/audit_rules_privileged_commands/template.py -index 43302a6690a..0cf6cba79cc 100644 ---- a/shared/templates/audit_rules_privileged_commands/template.py -+++ b/shared/templates/audit_rules_privileged_commands/template.py -@@ -19,4 +19,8 @@ def preprocess(data, lang): - if "syscall_grouping" in data: - # Make it easier to tranform the syscall_grouping into a Bash array - data["syscall_grouping"] = " ".join(data["syscall_grouping"]) -+ elif lang == "ansible": -+ # This template does not use the 'syscall' parameters -+ data["syscall"] = [] -+ data["syscall_grouping"] = [] - return data - -From 93e082296abbaa4f62e1352e4240c72ade510740 Mon Sep 17 00:00:00 2001 -From: Watson Sato -Date: Tue, 17 Aug 2021 18:15:50 +0200 -Subject: [PATCH 19/31] Move template audit_rules_file_deletion_events to - Ansible macro - -Use Ansible macro ansible_audit_augenrules_add_syscall_rule and -ansible_audit_auditctl_add_syscall_rule that group the syscalls -according to defined grouping. ---- - .../ansible.template | 88 ++++++++----------- - .../template.py | 8 ++ - 2 files changed, 45 insertions(+), 51 deletions(-) - -diff --git a/shared/templates/audit_rules_file_deletion_events/ansible.template b/shared/templates/audit_rules_file_deletion_events/ansible.template -index 12d6088ecea..ec732133838 100644 ---- a/shared/templates/audit_rules_file_deletion_events/ansible.template -+++ b/shared/templates/audit_rules_file_deletion_events/ansible.template -@@ -11,55 +11,41 @@ - set_fact: - audit_arch: "b{{ ansible_architecture | regex_replace('.*(\\d\\d$)','\\1') }}" - --# --# Inserts/replaces the rule in /etc/audit/rules.d --# --- name: Search /etc/audit/rules.d for other DAC audit rules -- find: -- paths: "/etc/audit/rules.d" -- recurse: no -- contains: "-F key=delete$" -- patterns: "*.rules" -- register: find_{{{ NAME }}} -- --- name: If existing DAC ruleset not found, use /etc/audit/rules.d/delete.rules as the recipient for the rule -- set_fact: -- all_files: -- - /etc/audit/rules.d/delete.rules -- when: find_{{{ NAME }}}.matched is defined and find_{{{ NAME }}}.matched == 0 -- --- name: Use matched file as the recipient for the rule -- set_fact: -- all_files: -- - "{{ find_{{{ NAME }}}.files | map(attribute='path') | list | first }}" -- when: find_{{{ NAME }}}.matched is defined and find_{{{ NAME }}}.matched > 0 -- --- name: Inserts/replaces the {{{ NAME }}} rule in rules.d when on x86 -- lineinfile: -- path: "{{ all_files[0] }}" -- line: "-a always,exit -F arch=b32 -S {{{ NAME }}} -F auid>={{{ auid }}} -F auid!=unset -F key=delete" -- create: yes -- --- name: Inserts/replaces the {{{ NAME }}} rule in rules.d when on x86_64 -- lineinfile: -- path: "{{ all_files[0] }}" -- line: "-a always,exit -F arch=b64 -S {{{ NAME }}} -F auid>={{{ auid }}} -F auid!=unset -F key=delete" -- create: yes -- when: audit_arch is defined and audit_arch == 'b64' --# --# Inserts/replaces the rule in /etc/audit/audit.rules --# --- name: Inserts/replaces the {{{ NAME }}} rule in /etc/audit/audit.rules when on x86 -- lineinfile: -- line: "-a always,exit -F arch=b32 -S {{{ NAME }}} -F auid>={{{ auid }}} -F auid!=unset -F key=delete" -- state: present -- dest: /etc/audit/audit.rules -- create: yes -+- name: Perform remediattion of Audit rules for {{{ NAME }}} for x86 platform -+ block: -+ {{{ ansible_audit_augenrules_add_syscall_rule( -+ action_arch_filters="-a always,exit -F arch=b32", -+ other_filters="", -+ auid_filters="-F auid>="~auid~" -F auid!=unset", -+ syscalls=NAME, -+ key="delete", -+ syscall_grouping=SYSCALL_GROUPING, -+ )|indent(4) }}} -+ {{{ ansible_audit_auditctl_add_syscall_rule( -+ action_arch_filters="-a always,exit -F arch=b32", -+ other_filters="", -+ auid_filters="-F auid>="~auid~" -F auid!=unset", -+ syscalls=NAME, -+ key="delete", -+ syscall_grouping=SYSCALL_GROUPING, -+ )|indent(4) }}} - --- name: Inserts/replaces the {{{ NAME }}} rule in audit.rules when on x86_64 -- lineinfile: -- line: "-a always,exit -F arch=b64 -S {{{ NAME }}} -F auid>={{{ auid }}} -F auid!=unset -F key=delete" -- state: present -- dest: /etc/audit/audit.rules -- create: yes -- when: audit_arch is defined and audit_arch == 'b64' -+- name: Perform remediattion of Audit rules for {{{ NAME }}} for x86_64 platform -+ block: -+ {{{ ansible_audit_augenrules_add_syscall_rule( -+ action_arch_filters="-a always,exit -F arch=b64", -+ other_filters="", -+ auid_filters="-F auid>="~auid~" -F auid!=unset", -+ syscalls=NAME, -+ key="delete", -+ syscall_grouping=SYSCALL_GROUPING, -+ )|indent(4) }}} -+ {{{ ansible_audit_auditctl_add_syscall_rule( -+ action_arch_filters="-a always,exit -F arch=b64", -+ other_filters="", -+ auid_filters="-F auid>="~auid~" -F auid!=unset", -+ syscalls=NAME, -+ key="delete", -+ syscall_grouping=SYSCALL_GROUPING, -+ )|indent(4) }}} -+ when: audit_arch == "b64" -diff --git a/shared/templates/audit_rules_file_deletion_events/template.py b/shared/templates/audit_rules_file_deletion_events/template.py -index 7be137c1eb9..1141a99826b 100644 ---- a/shared/templates/audit_rules_file_deletion_events/template.py -+++ b/shared/templates/audit_rules_file_deletion_events/template.py -@@ -6,6 +6,14 @@ def _audit_rules_file_deletion_events(data, lang): - if "syscall_grouping" in data: - # Make it easier to tranform the syscall_grouping into a Bash array - data["syscall_grouping"] = " ".join(data["syscall_grouping"]) -+ elif lang == "ansible": -+ if "name" in data: -+ # Tranform the syscall into a Ansible list -+ # The syscall is under 'name' -+ data["name"] = [ data["name"] ] -+ if "syscall_grouping" not in data: -+ # Ensure that syscall_grouping is a list -+ data["syscall_grouping"] = [] - return data - - - -From 5db4692a9efd86713e79c6fb72f87bf4898338e9 Mon Sep 17 00:00:00 2001 -From: Watson Sato -Date: Tue, 17 Aug 2021 19:16:54 +0200 -Subject: [PATCH 20/31] Update Ansible audit_rules_kernel_module_loading_* to - use macros - -Update remediation of following rules to use Ansible macro syscall rule -- audit_rules_kernel_module_loading_delete -- audit_rules_kernel_module_loading_finit -- audit_rules_kernel_module_loading_init ---- - .../ansible/shared.yml | 89 ++++++++----------- - .../ansible/shared.yml | 89 ++++++++----------- - .../ansible/shared.yml | 88 ++++++++---------- - 3 files changed, 114 insertions(+), 152 deletions(-) - -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading_delete/ansible/shared.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading_delete/ansible/shared.yml -index 60f477ac355..863ba6f0134 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading_delete/ansible/shared.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading_delete/ansible/shared.yml -@@ -10,54 +10,41 @@ - set_fact: - audit_arch: "b{{ ansible_architecture | regex_replace('.*(\\d\\d$)','\\1') }}" - --# Inserts/replaces the rule in /etc/audit/rules.d -- --- name: Search /etc/audit/rules.d for audit rule entries -- find: -- paths: /etc/audit/rules.d -- recurse: false -- contains: ^.*delete_module.*$ -- patterns: '*.rules' -- register: find_delete_module -- --- name: Use /etc/audit/rules.d/privileged.rules as the recipient for the rule -- set_fact: -- all_files: -- - /etc/audit/rules.d/privileged.rules -- when: find_delete_module.matched is defined and find_delete_module.matched == 0 -- --- name: Use matched file as the recipient for the rule -- set_fact: -- all_files: -- - '{{ find_delete_module.files | map(attribute=''path'') | list | first }}' -- when: find_delete_module.matched is defined and find_delete_module.matched > 0 -- --- name: Inserts/replaces the delete_module rule in rules.d -- lineinfile: -- path: '{{ all_files[0] }}' -- line: '-a always,exit -F arch=b32 -S delete_module -k module-change' -- state: present -- create: true -- --- name: Inserts/replaces the delete_module rule in rules.d on x86_64 -- lineinfile: -- path: '{{ all_files[0] }}' -- line: '-a always,exit -F arch=b64 -S delete_module -k module-change' -- state: present -- create: true -- when: audit_arch is defined and audit_arch == 'b64' -- --# Inserts/replaces the delete_modules rule in /etc/audit/audit.rules -- --- name: Inserts/replaces the delete_module rule in audit.rules -- lineinfile: -- path: /etc/audit/audit.rules -- line: '-a always,exit -F arch=b32 -S delete_module -k module-change' -- create: true -- --- name: Inserts/replaces the delete_module rule in audit.rules when on x86_64 -- lineinfile: -- path: /etc/audit/audit.rules -- line: '-a always,exit -F arch=b64 -S delete_module -k module-change' -- create: true -- when: audit_arch is defined and audit_arch == 'b64' -+- name: Perform remediattion of Audit rules for delete_module for x86 platform -+ block: -+ {{{ ansible_audit_augenrules_add_syscall_rule( -+ action_arch_filters="-a always,exit -F arch=b32", -+ other_filters="", -+ auid_filters="", -+ syscalls=["delete_module"], -+ key="module-change", -+ syscall_grouping=[], -+ )|indent(4) }}} -+ {{{ ansible_audit_auditctl_add_syscall_rule( -+ action_arch_filters="-a always,exit -F arch=b32", -+ other_filters="", -+ auid_filters="", -+ syscalls=["delete_module"], -+ key="module-change", -+ syscall_grouping=[], -+ )|indent(4) }}} -+ -+- name: Perform remediattion of Audit rules for delete_module for x86_64 platform -+ block: -+ {{{ ansible_audit_augenrules_add_syscall_rule( -+ action_arch_filters="-a always,exit -F arch=b64", -+ other_filters="", -+ auid_filters="", -+ syscalls=["delete_module"], -+ key="module-change", -+ syscall_grouping=[], -+ )|indent(4) }}} -+ {{{ ansible_audit_auditctl_add_syscall_rule( -+ action_arch_filters="-a always,exit -F arch=b64", -+ other_filters="", -+ auid_filters="", -+ syscalls=["delete_module"], -+ key="module-change", -+ syscall_grouping=[], -+ )|indent(4) }}} -+ when: audit_arch == "b64" -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading_finit/ansible/shared.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading_finit/ansible/shared.yml -index 3f3c3e3d947..268f0a57f11 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading_finit/ansible/shared.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading_finit/ansible/shared.yml -@@ -10,54 +10,41 @@ - set_fact: - audit_arch: "b{{ ansible_architecture | regex_replace('.*(\\d\\d$)','\\1') }}" - --# Inserts/replaces the rule in /etc/audit/rules.d -- --- name: Search /etc/audit/rules.d for audit rule entries -- find: -- paths: /etc/audit/rules.d -- recurse: false -- contains: ^.*finit_module.*$ -- patterns: '*.rules' -- register: find_finit_module -- --- name: Use /etc/audit/rules.d/privileged.rules as the recipient for the rule -- set_fact: -- all_files: -- - /etc/audit/rules.d/privileged.rules -- when: find_finit_module.matched is defined and find_finit_module.matched == 0 -- --- name: Use matched file as the recipient for the rule -- set_fact: -- all_files: -- - '{{ find_finit_module.files | map(attribute=''path'') | list | first }}' -- when: find_finit_module.matched is defined and find_finit_module.matched > 0 -- --- name: Inserts/replaces the finit_module rule in rules.d -- lineinfile: -- path: '{{ all_files[0] }}' -- line: '-a always,exit -F arch=b32 -S finit_module -k module-change' -- state: present -- create: true -- --- name: Inserts/replaces the finit_module rule in rules.d on x86_64 -- lineinfile: -- path: '{{ all_files[0] }}' -- line: '-a always,exit -F arch=b64 -S finit_module -k module-change' -- state: present -- create: true -- when: audit_arch is defined and audit_arch == 'b64' -- --# Inserts/replaces the finit_modules rule in /etc/audit/audit.rules -- --- name: Inserts/replaces the finit_module rule in audit.rules -- lineinfile: -- path: /etc/audit/audit.rules -- line: '-a always,exit -F arch=b32 -S finit_module -k module-change' -- create: true -- --- name: Inserts/replaces the finit_module rule in audit.rules when on x86_64 -- lineinfile: -- path: /etc/audit/audit.rules -- line: '-a always,exit -F arch=b64 -S finit_module -k module-change' -- create: true -- when: audit_arch is defined and audit_arch == 'b64' -+- name: Perform remediattion of Audit rules for finit_module for x86 platform -+ block: -+ {{{ ansible_audit_augenrules_add_syscall_rule( -+ action_arch_filters="-a always,exit -F arch=b32", -+ other_filters="", -+ auid_filters="", -+ syscalls=["finit_module"], -+ key="module-change", -+ syscall_grouping=["init_module","finit_module"], -+ )|indent(4) }}} -+ {{{ ansible_audit_auditctl_add_syscall_rule( -+ action_arch_filters="-a always,exit -F arch=b32", -+ other_filters="", -+ auid_filters="", -+ syscalls=["finit_module"], -+ key="module-change", -+ syscall_grouping=["init_module","finit_module"], -+ )|indent(4) }}} -+ -+- name: Perform remediattion of Audit rules for finit_module for x86_64 platform -+ block: -+ {{{ ansible_audit_augenrules_add_syscall_rule( -+ action_arch_filters="-a always,exit -F arch=b64", -+ other_filters="", -+ auid_filters="", -+ syscalls=["finit_module"], -+ key="module-change", -+ syscall_grouping=["init_module","finit_module"], -+ )|indent(4) }}} -+ {{{ ansible_audit_auditctl_add_syscall_rule( -+ action_arch_filters="-a always,exit -F arch=b64", -+ other_filters="", -+ auid_filters="", -+ syscalls=["finit_module"], -+ key="module-change", -+ syscall_grouping=["init_module","finit_module"], -+ )|indent(4) }}} -+ when: audit_arch == "b64" -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading_init/ansible/shared.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading_init/ansible/shared.yml -index 3f58125065b..2155a1835c6 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading_init/ansible/shared.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading_init/ansible/shared.yml -@@ -10,53 +10,41 @@ - set_fact: - audit_arch: "b{{ ansible_architecture | regex_replace('.*(\\d\\d$)','\\1') }}" - --# Inserts/replaces the rule in /etc/audit/rules.d -- --- name: Search /etc/audit/rules.d for audit rule entries -- find: -- paths: /etc/audit/rules.d -- recurse: false -- contains: ^.*init_module.*$ -- patterns: '*.rules' -- register: find_init_module -- --- name: Use /etc/audit/rules.d/privileged.rules as the recipient for the rule -- set_fact: -- all_files: -- - /etc/audit/rules.d/privileged.rules -- when: find_init_module.matched is defined and find_init_module.matched == 0 -- --- name: Use matched file as the recipient for the rule -- set_fact: -- all_files: -- - '{{ find_init_module.files | map(attribute=''path'') | list | first }}' -- when: find_init_module.matched is defined and find_init_module.matched > 0 -- --- name: Inserts/replaces the init_module rule in rules.d -- lineinfile: -- path: '{{ all_files[0] }}' -- line: '-a always,exit -F arch=b32 -S init_module -k module-change' -- state: present -- create: true -- --- name: Inserts/replaces the init_module rule in rules.d on x86_64 -- lineinfile: -- path: '{{ all_files[0] }}' -- line: '-a always,exit -F arch=b64 -S init_module -k module-change' -- state: present -- create: true -- when: audit_arch is defined and audit_arch == 'b64' -- --# Inserts/replaces the init_modules rule in /etc/audit/audit.rules -- --- name: Inserts/replaces the init_module rule in audit.rules -- lineinfile: -- path: /etc/audit/audit.rules -- line: '-a always,exit -F arch=b32 -S init_module -k module-change' -- create: true --- name: Inserts/replaces the init_module rule in audit.rules when on x86_64 -- lineinfile: -- path: /etc/audit/audit.rules -- line: '-a always,exit -F arch=b64 -S init_module -k module-change' -- create: true -- when: audit_arch is defined and audit_arch == 'b64' -+- name: Perform remediattion of Audit rules for init_module for x86 platform -+ block: -+ {{{ ansible_audit_augenrules_add_syscall_rule( -+ action_arch_filters="-a always,exit -F arch=b32", -+ other_filters="", -+ auid_filters="", -+ syscalls=["init_module"], -+ key="module-change", -+ syscall_grouping=["init_module","finit_module"], -+ )|indent(4) }}} -+ {{{ ansible_audit_auditctl_add_syscall_rule( -+ action_arch_filters="-a always,exit -F arch=b32", -+ other_filters="", -+ auid_filters="", -+ syscalls=["init_module"], -+ key="module-change", -+ syscall_grouping=["init_module","finit_module"], -+ )|indent(4) }}} -+ -+- name: Perform remediattion of Audit rules for init_module for x86_64 platform -+ block: -+ {{{ ansible_audit_augenrules_add_syscall_rule( -+ action_arch_filters="-a always,exit -F arch=b64", -+ other_filters="", -+ auid_filters="", -+ syscalls=["init_module"], -+ key="module-change", -+ syscall_grouping=["init_module","finit_module"], -+ )|indent(4) }}} -+ {{{ ansible_audit_auditctl_add_syscall_rule( -+ action_arch_filters="-a always,exit -F arch=b64", -+ other_filters="", -+ auid_filters="", -+ syscalls=["init_module"], -+ key="module-change", -+ syscall_grouping=["init_module","finit_module"], -+ )|indent(4) }}} -+ when: audit_arch == "b64" - -From 98843a14147ea7db9d6ef96580ed4b8e9c15f67f Mon Sep 17 00:00:00 2001 -From: Watson Sato -Date: Tue, 17 Aug 2021 19:31:15 +0200 -Subject: [PATCH 21/31] Update directory_access_var_log_audit to use Ansible - macro - -Also fix a bug in Bash remediation, there should be no arch. ---- - .../ansible/shared.yml | 51 +++++++------------ - .../bash/shared.sh | 2 +- - 2 files changed, 19 insertions(+), 34 deletions(-) - -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/directory_access_var_log_audit/ansible/shared.yml b/linux_os/guide/system/auditing/auditd_configure_rules/directory_access_var_log_audit/ansible/shared.yml -index 31b65a0833c..bc6e929372f 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/directory_access_var_log_audit/ansible/shared.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/directory_access_var_log_audit/ansible/shared.yml -@@ -3,36 +3,21 @@ - # strategy = restrict - # complexity = low - # disruption = low --- name: Search /etc/audit/rules.d for audit rule entries -- find: -- paths: /etc/audit/rules.d -- recurse: false -- contains: ^.*dir=/var/log/audit/.*$ -- patterns: '*.rules' -- register: find_var_log_audit -- --- name: Use /etc/audit/rules.d/access-audit-trail.rules as the recipient for the rule -- set_fact: -- all_files: -- - /etc/audit/rules.d/access-audit-trail.rules -- when: find_var_log_audit.matched == 0 -- --- name: Use matched file as the recipient for the rule -- set_fact: -- all_files: -- - '{{ find_var_log_audit.files | map(attribute=''path'') | list | first }}' -- when: find_var_log_audit.matched > 0 -- --- name: Inserts/replaces the /var/log/audit/ rule in rules.d -- lineinfile: -- path: '{{ all_files[0] }}' -- line: -a always,exit -F dir=/var/log/audit/ -F perm=r -F auid>={{{ auid }}} -F auid!=unset -- -F key=access-audit-trail -- create: true -- --- name: Inserts/replaces the /var/log/audit/ rule in audit.rules -- lineinfile: -- path: /etc/audit/audit.rules -- line: -a always,exit -F dir=/var/log/audit/ -F perm=r -F auid>={{{ auid }}} -F auid!=unset -- -F key=access-audit-trail -- create: true -+- name: Perform remediattion of Audit rules for /var/log/audit -+ block: -+ {{{ ansible_audit_augenrules_add_syscall_rule( -+ action_arch_filters="-a always,exit", -+ other_filters="-F dir=/var/log/audit/ -F perm=r", -+ auid_filters="-F auid>="~auid~" -F auid!=unset", -+ syscalls=[], -+ key="access-audit-trail", -+ syscall_grouping=[], -+ )|indent(4) }}} -+ {{{ ansible_audit_auditctl_add_syscall_rule( -+ action_arch_filters="-a always,exit", -+ other_filters="-F dir=/var/log/audit/ -F perm=r", -+ auid_filters="-F auid>="~auid~" -F auid!=unset", -+ syscalls=[], -+ key="access-audit-trail", -+ syscall_grouping=[], -+ )|indent(4) }}} -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/directory_access_var_log_audit/bash/shared.sh b/linux_os/guide/system/auditing/auditd_configure_rules/directory_access_var_log_audit/bash/shared.sh -index 0c4e8ffdbd3..a8e4a71a9f8 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/directory_access_var_log_audit/bash/shared.sh -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/directory_access_var_log_audit/bash/shared.sh -@@ -3,7 +3,7 @@ - # Include source function library. - . /usr/share/scap-security-guide/remediation_functions - --ACTION_ARCH_FILTERS="-a always,exit -F arch=$ARCH" -+ACTION_ARCH_FILTERS="-a always,exit" - OTHER_FILTERS="-F dir=/var/log/audit/ -F perm=r" - AUID_FILTERS="-F auid>={{{ auid }}} -F auid!=unset" - SYSCALL="" - -From 78664de349a993b36f02c17e25c5042ed075d9a7 Mon Sep 17 00:00:00 2001 -From: Watson Sato -Date: Tue, 17 Aug 2021 19:38:39 +0200 -Subject: [PATCH 22/31] Python style fixes - ---- - shared/templates/audit_rules_dac_modification/template.py | 2 +- - shared/templates/audit_rules_file_deletion_events/template.py | 3 +-- - shared/templates/audit_rules_path_syscall/template.py | 2 +- - .../audit_rules_unsuccessful_file_modification/template.py | 3 +-- - 4 files changed, 4 insertions(+), 6 deletions(-) - -diff --git a/shared/templates/audit_rules_dac_modification/template.py b/shared/templates/audit_rules_dac_modification/template.py -index eebd0b6f4ee..17187826e62 100644 ---- a/shared/templates/audit_rules_dac_modification/template.py -+++ b/shared/templates/audit_rules_dac_modification/template.py -@@ -10,7 +10,7 @@ def preprocess(data, lang): - elif lang == "ansible": - if "attr" in data: - # Tranform the syscall into a Ansible list -- data["attr"] = [ data["attr"] ] -+ data["attr"] = [data["attr"]] - if "syscall_grouping" not in data: - # Ensure that syscall_grouping is a list - data["syscall_grouping"] = [] -diff --git a/shared/templates/audit_rules_file_deletion_events/template.py b/shared/templates/audit_rules_file_deletion_events/template.py -index 1141a99826b..4916d892521 100644 ---- a/shared/templates/audit_rules_file_deletion_events/template.py -+++ b/shared/templates/audit_rules_file_deletion_events/template.py -@@ -10,7 +10,7 @@ def _audit_rules_file_deletion_events(data, lang): - if "name" in data: - # Tranform the syscall into a Ansible list - # The syscall is under 'name' -- data["name"] = [ data["name"] ] -+ data["name"] = [data["name"]] - if "syscall_grouping" not in data: - # Ensure that syscall_grouping is a list - data["syscall_grouping"] = [] -@@ -19,4 +19,3 @@ def _audit_rules_file_deletion_events(data, lang): - - def preprocess(data, lang): - return _audit_rules_file_deletion_events(data, lang) -- -diff --git a/shared/templates/audit_rules_path_syscall/template.py b/shared/templates/audit_rules_path_syscall/template.py -index c13f34b94e0..0f2966335b0 100644 ---- a/shared/templates/audit_rules_path_syscall/template.py -+++ b/shared/templates/audit_rules_path_syscall/template.py -@@ -14,7 +14,7 @@ def preprocess(data, lang): - elif lang == "ansible": - if "syscall" in data: - # Tranform the syscall into a Ansible list -- data["syscall"] = [ data["syscall"] ] -+ data["syscall"] = [data["syscall"]] - if "syscall_grouping" not in data: - # Ensure that syscall_grouping is a list - data["syscall_grouping"] = [] -diff --git a/shared/templates/audit_rules_unsuccessful_file_modification/template.py b/shared/templates/audit_rules_unsuccessful_file_modification/template.py -index 62abfad9a2c..dd9714457a2 100644 ---- a/shared/templates/audit_rules_unsuccessful_file_modification/template.py -+++ b/shared/templates/audit_rules_unsuccessful_file_modification/template.py -@@ -10,7 +10,7 @@ def _audit_rules_unsuccessful_file_modification(data, lang): - if "name" in data: - # Tranform the syscall into a Ansible list - # The syscall is under 'name' -- data["name"] = [ data["name"] ] -+ data["name"] = [data["name"]] - if "syscall_grouping" not in data: - # Ensure that syscall_grouping is a list - data["syscall_grouping"] = [] -@@ -19,4 +19,3 @@ def _audit_rules_unsuccessful_file_modification(data, lang): - - def preprocess(data, lang): - return _audit_rules_unsuccessful_file_modification(data, lang) -- - -From 16df69710c8872bd6d348a60a0542fb2cafb0dc3 Mon Sep 17 00:00:00 2001 -From: Watson Sato -Date: Wed, 18 Aug 2021 10:22:32 +0200 -Subject: [PATCH 23/31] Fix typo in Ansible remediarion for - unsuccessful_file_modification - ---- - .../audit_rules_unsuccessful_file_modification/bash/shared.sh | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification/bash/shared.sh b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification/bash/shared.sh -index bf931e46430..5cb4dbe6f4a 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification/bash/shared.sh -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification/bash/shared.sh -@@ -12,7 +12,7 @@ do - - # First fix the -EACCES requirement - ACTION_ARCH_FILTERS="-a always,exit -F arch=$ARCH" -- OTHER_FILTERS="-F exit=EACCES" -+ OTHER_FILTERS="-F exit=-EACCES" - AUID_FILTERS="-F auid>={{{ auid }}} -F auid!=unset" - SYSCALL="creat open openat open_by_handle_at truncate ftruncate" - KEY="access" -@@ -24,7 +24,7 @@ do - # Then fix the -EPERM requirement - # No need to change content of $GROUP variable - it's the same as for -EACCES case above - ACTION_ARCH_FILTERS="-a always,exit -F arch=$ARCH" -- OTHER_FILTERS="-F exit=EPERM" -+ OTHER_FILTERS="-F exit=-EPERM" - AUID_FILTERS="-F auid>={{{ auid }}} -F auid!=unset" - SYSCALL="creat open openat open_by_handle_at truncate ftruncate" - KEY="access" - -From d761a6498f8e3e64810e7b06cbf04837d0ae8975 Mon Sep 17 00:00:00 2001 -From: Watson Sato -Date: Wed, 18 Aug 2021 10:23:50 +0200 -Subject: [PATCH 24/31] Check all relevant syscalls in Ansible macro - -The Ansible macros for audit syscall rules should check the target -syscall and the groupable syscalls during 'find' task. - -When 'syscall_grouping' was empty, the remediation would simply -execute the 'Add a new rule' task. -If the key was different, a new duplicate rule would be added. - -Also removes extra syscalls declaration task. ---- - shared/macros-ansible.jinja | 8 ++------ - 1 file changed, 2 insertions(+), 6 deletions(-) - -diff --git a/shared/macros-ansible.jinja b/shared/macros-ansible.jinja -index a067742b1f4..1af5ed3dd95 100644 ---- a/shared/macros-ansible.jinja -+++ b/shared/macros-ansible.jinja -@@ -420,7 +420,7 @@ The macro requires following parameters: - contains: '{{{ action_arch_filters }}}(( -S |,)\w+)*(( -S |,){{ item }})+(( -S |,)\w+)*{{{ other_filters }}}{{{ auid_filters }}} (-k\s+|-F\s+key=)\S+\s*$' - patterns: '*.rules' - register: find_command -- loop: '{{ syscall_grouping }}' -+ loop: '{{ (syscall_grouping + syscalls) | unique }}' - - - name: Declare syscalls found per file - set_fact: syscalls_per_file="{{ syscalls_per_file | default({}) | combine( {item.files[0].path :[item.item]+(syscalls_per_file | default({})).get(item.files[0].path, []) } ) }}" -@@ -504,7 +504,7 @@ The macro requires following parameters: - contains: '{{{ action_arch_filters }}}(( -S |,)\w+)*(( -S |,){{ item }})+(( -S |,)\w+)*{{{ other_filters }}}{{{ auid_filters }}} (-k\s+|-F\s+key=)\S+\s*$' - patterns: 'audit.rules' - register: find_command -- loop: '{{ syscall_grouping }}' -+ loop: '{{ (syscall_grouping + syscalls) | unique }}' - - - name: Set path to /etc/audit/rules.d/{{{ key }}}.rules - set_fact: audit_file="/etc/audit/audit.rules" -@@ -532,10 +532,6 @@ The macro requires following parameters: - create: true - state: present - when: syscalls_found | length == 0 --- name: Declare list of syscals -- set_fact: -- syscalls: {{{ syscalls }}} -- - {{%- endmacro %}} - - {{% macro ansible_sssd_ldap_config(parameter, value) -%}} - -From 2a2697e49809f14c0f1af81940c6198691e9af94 Mon Sep 17 00:00:00 2001 -From: Watson Sato -Date: Wed, 18 Aug 2021 10:35:10 +0200 -Subject: [PATCH 25/31] Improve task titles of audit macros and templates - ---- - shared/macros-ansible.jinja | 6 +++--- - .../templates/audit_rules_dac_modification/ansible.template | 6 +++--- - .../audit_rules_file_deletion_events/ansible.template | 6 +++--- - shared/templates/audit_rules_path_syscall/ansible.template | 6 +++--- - .../ansible.template | 6 +++--- - 5 files changed, 15 insertions(+), 15 deletions(-) - -diff --git a/shared/macros-ansible.jinja b/shared/macros-ansible.jinja -index 1af5ed3dd95..b5574da29ac 100644 ---- a/shared/macros-ansible.jinja -+++ b/shared/macros-ansible.jinja -@@ -414,7 +414,7 @@ The macro requires following parameters: - syscalls: {{{ syscalls }}} - syscall_grouping: {{{ syscall_grouping }}} - --- name: Check existence of syscalls for in /etc/audit/rules.d/ -+- name: Check existence of {{{ syscalls | join(", ") }}} in /etc/audit/rules.d/ - find: - paths: /etc/audit/rules.d - contains: '{{{ action_arch_filters }}}(( -S |,)\w+)*(( -S |,){{ item }})+(( -S |,)\w+)*{{{ other_filters }}}{{{ auid_filters }}} (-k\s+|-F\s+key=)\S+\s*$' -@@ -498,7 +498,7 @@ The macro requires following parameters: - syscalls: {{{ syscalls }}} - syscall_grouping: {{{ syscall_grouping }}} - --- name: Check existence of syscalls for in /etc/audit/rules.d/ -+- name: Check existence of {{{ syscalls | join(", ") }}} in /etc/audit/audit.rules - find: - paths: /etc/audit - contains: '{{{ action_arch_filters }}}(( -S |,)\w+)*(( -S |,){{ item }})+(( -S |,)\w+)*{{{ other_filters }}}{{{ auid_filters }}} (-k\s+|-F\s+key=)\S+\s*$' -@@ -506,7 +506,7 @@ The macro requires following parameters: - register: find_command - loop: '{{ (syscall_grouping + syscalls) | unique }}' - --- name: Set path to /etc/audit/rules.d/{{{ key }}}.rules -+- name: Set path to /etc/audit/audit.rules - set_fact: audit_file="/etc/audit/audit.rules" - - - name: Declare found syscalls -diff --git a/shared/templates/audit_rules_dac_modification/ansible.template b/shared/templates/audit_rules_dac_modification/ansible.template -index d2ce6c50052..ea6fd94ff4b 100644 ---- a/shared/templates/audit_rules_dac_modification/ansible.template -+++ b/shared/templates/audit_rules_dac_modification/ansible.template -@@ -7,11 +7,11 @@ - # - # What architecture are we on? - # --- name: Set architecture for audit {{{ ATTR }}} tasks -+- name: Set architecture for audit {{{ ATTR | join(", ") }}} tasks - set_fact: - audit_arch: "b{{ ansible_architecture | regex_replace('.*(\\d\\d$)','\\1') }}" - --- name: Perform remediattion of Audit rules for {{{ ATTR }}} for x86 platform -+- name: Perform remediattion of Audit rules for {{{ ATTR | join(", ") }}} for x86 platform - block: - {{{ ansible_audit_augenrules_add_syscall_rule( - action_arch_filters="-a always,exit -F arch=b32", -@@ -48,7 +48,7 @@ - )|indent(4) }}} - {{%- endif %}} - --- name: Perform remediattion of Audit rules for {{{ ATTR }}} for x86_64 platform -+- name: Perform remediattion of Audit rules for {{{ ATTR | join(", ") }}} for x86_64 platform - block: - {{{ ansible_audit_augenrules_add_syscall_rule( - action_arch_filters="-a always,exit -F arch=b64", -diff --git a/shared/templates/audit_rules_file_deletion_events/ansible.template b/shared/templates/audit_rules_file_deletion_events/ansible.template -index ec732133838..0044dc459dc 100644 ---- a/shared/templates/audit_rules_file_deletion_events/ansible.template -+++ b/shared/templates/audit_rules_file_deletion_events/ansible.template -@@ -7,11 +7,11 @@ - # - # What architecture are we on? - # --- name: Set architecture for audit {{{ NAME }}} tasks -+- name: Set architecture for audit {{{ NAME| join(", ") }}} tasks - set_fact: - audit_arch: "b{{ ansible_architecture | regex_replace('.*(\\d\\d$)','\\1') }}" - --- name: Perform remediattion of Audit rules for {{{ NAME }}} for x86 platform -+- name: Perform remediattion of Audit rules for {{{ NAME| join(", ") }}} for x86 platform - block: - {{{ ansible_audit_augenrules_add_syscall_rule( - action_arch_filters="-a always,exit -F arch=b32", -@@ -30,7 +30,7 @@ - syscall_grouping=SYSCALL_GROUPING, - )|indent(4) }}} - --- name: Perform remediattion of Audit rules for {{{ NAME }}} for x86_64 platform -+- name: Perform remediattion of Audit rules for {{{ NAME| join(", ") }}} for x86_64 platform - block: - {{{ ansible_audit_augenrules_add_syscall_rule( - action_arch_filters="-a always,exit -F arch=b64", -diff --git a/shared/templates/audit_rules_path_syscall/ansible.template b/shared/templates/audit_rules_path_syscall/ansible.template -index 20440a36237..2875aff3573 100644 ---- a/shared/templates/audit_rules_path_syscall/ansible.template -+++ b/shared/templates/audit_rules_path_syscall/ansible.template -@@ -7,11 +7,11 @@ - # - # What architecture are we on? - # --- name: Set architecture for audit {{{ SYSCALL }}} tasks -+- name: Set architecture for audit {{{ SYSCALL | join(", ") }}} tasks - set_fact: - audit_arch: "b{{ ansible_architecture | regex_replace('.*(\\d\\d$)','\\1') }}" - --- name: Perform remediattion of Audit rules for {{{ SYSCALL }}} for x86 platform -+- name: Perform remediattion of Audit rules for {{{ SYSCALL | join(", ") }}} for x86 platform - block: - {{{ ansible_audit_augenrules_add_syscall_rule( - action_arch_filters="-a always,exit -F arch=b32", -@@ -30,7 +30,7 @@ - syscall_grouping=SYSCALL_GROUPING, - )|indent(4) }}} - --- name: Perform remediattion of Audit rules for {{{ SYSCALL }}} for x86_64 platform -+- name: Perform remediattion of Audit rules for {{{ SYSCALL | join(", ") }}} for x86_64 platform - block: - {{{ ansible_audit_augenrules_add_syscall_rule( - action_arch_filters="-a always,exit -F arch=b64", -diff --git a/shared/templates/audit_rules_unsuccessful_file_modification/ansible.template b/shared/templates/audit_rules_unsuccessful_file_modification/ansible.template -index cb5decc6a6e..a8fdc3978b1 100644 ---- a/shared/templates/audit_rules_unsuccessful_file_modification/ansible.template -+++ b/shared/templates/audit_rules_unsuccessful_file_modification/ansible.template -@@ -7,12 +7,12 @@ - # - # What architecture are we on? - # --- name: Set architecture for audit {{{ NAME }}} tasks -+- name: Set architecture for audit {{{ NAME | join(", ") }}} tasks - set_fact: - audit_arch: "b{{ ansible_architecture | regex_replace('.*(\\d\\d$)','\\1') }}" - - {{% for EXIT_CODE in ["EACCES","EPERM"] %}} --- name: Perform remediation of Audit rules for {{{ NAME }}} {{{ EXIT_CODE}}} for x86 platform -+- name: Perform remediation of Audit rules for {{{ NAME | join(", ") }}} {{{ EXIT_CODE}}} for x86 platform - block: - {{{ ansible_audit_augenrules_add_syscall_rule( - action_arch_filters="-a always,exit -F arch=b32", -@@ -31,7 +31,7 @@ - syscall_grouping=SYSCALL_GROUPING, - )|indent(4) }}} - --- name: Perform remediattion of Audit rules for {{{ NAME }}} {{{ EXIT_CODE }}} for x86_64 platform -+- name: Perform remediattion of Audit rules for {{{ NAME | join(", ") }}} {{{ EXIT_CODE }}} for x86_64 platform - block: - {{{ ansible_audit_augenrules_add_syscall_rule( - action_arch_filters="-a always,exit -F arch=b64", - -From 6dd2a0388e025bbbb00bea15c999cc09e140afce Mon Sep 17 00:00:00 2001 -From: Watson Sato -Date: Wed, 18 Aug 2021 13:49:07 +0200 -Subject: [PATCH 26/31] Fix typo in audit task block title - ---- - .../ansible/shared.yml | 4 ++-- - .../ansible/shared.yml | 4 ++-- - .../audit_rules_kernel_module_loading_init/ansible/shared.yml | 4 ++-- - .../directory_access_var_log_audit/ansible/shared.yml | 2 +- - .../templates/audit_rules_dac_modification/ansible.template | 4 ++-- - .../audit_rules_file_deletion_events/ansible.template | 4 ++-- - shared/templates/audit_rules_path_syscall/ansible.template | 4 ++-- - .../audit_rules_privileged_commands/ansible.template | 2 +- - .../ansible.template | 2 +- - 9 files changed, 15 insertions(+), 15 deletions(-) - -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading_delete/ansible/shared.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading_delete/ansible/shared.yml -index 863ba6f0134..f5469c0ebf9 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading_delete/ansible/shared.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading_delete/ansible/shared.yml -@@ -10,7 +10,7 @@ - set_fact: - audit_arch: "b{{ ansible_architecture | regex_replace('.*(\\d\\d$)','\\1') }}" - --- name: Perform remediattion of Audit rules for delete_module for x86 platform -+- name: Perform remediation of Audit rules for delete_module for x86 platform - block: - {{{ ansible_audit_augenrules_add_syscall_rule( - action_arch_filters="-a always,exit -F arch=b32", -@@ -29,7 +29,7 @@ - syscall_grouping=[], - )|indent(4) }}} - --- name: Perform remediattion of Audit rules for delete_module for x86_64 platform -+- name: Perform remediation of Audit rules for delete_module for x86_64 platform - block: - {{{ ansible_audit_augenrules_add_syscall_rule( - action_arch_filters="-a always,exit -F arch=b64", -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading_finit/ansible/shared.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading_finit/ansible/shared.yml -index 268f0a57f11..2e0780af564 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading_finit/ansible/shared.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading_finit/ansible/shared.yml -@@ -10,7 +10,7 @@ - set_fact: - audit_arch: "b{{ ansible_architecture | regex_replace('.*(\\d\\d$)','\\1') }}" - --- name: Perform remediattion of Audit rules for finit_module for x86 platform -+- name: Perform remediation of Audit rules for finit_module for x86 platform - block: - {{{ ansible_audit_augenrules_add_syscall_rule( - action_arch_filters="-a always,exit -F arch=b32", -@@ -29,7 +29,7 @@ - syscall_grouping=["init_module","finit_module"], - )|indent(4) }}} - --- name: Perform remediattion of Audit rules for finit_module for x86_64 platform -+- name: Perform remediation of Audit rules for finit_module for x86_64 platform - block: - {{{ ansible_audit_augenrules_add_syscall_rule( - action_arch_filters="-a always,exit -F arch=b64", -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading_init/ansible/shared.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading_init/ansible/shared.yml -index 2155a1835c6..6f6bd1826bc 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading_init/ansible/shared.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading_init/ansible/shared.yml -@@ -10,7 +10,7 @@ - set_fact: - audit_arch: "b{{ ansible_architecture | regex_replace('.*(\\d\\d$)','\\1') }}" - --- name: Perform remediattion of Audit rules for init_module for x86 platform -+- name: Perform remediation of Audit rules for init_module for x86 platform - block: - {{{ ansible_audit_augenrules_add_syscall_rule( - action_arch_filters="-a always,exit -F arch=b32", -@@ -29,7 +29,7 @@ - syscall_grouping=["init_module","finit_module"], - )|indent(4) }}} - --- name: Perform remediattion of Audit rules for init_module for x86_64 platform -+- name: Perform remediation of Audit rules for init_module for x86_64 platform - block: - {{{ ansible_audit_augenrules_add_syscall_rule( - action_arch_filters="-a always,exit -F arch=b64", -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/directory_access_var_log_audit/ansible/shared.yml b/linux_os/guide/system/auditing/auditd_configure_rules/directory_access_var_log_audit/ansible/shared.yml -index bc6e929372f..ec17adf5525 100644 ---- a/linux_os/guide/system/auditing/auditd_configure_rules/directory_access_var_log_audit/ansible/shared.yml -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/directory_access_var_log_audit/ansible/shared.yml -@@ -3,7 +3,7 @@ - # strategy = restrict - # complexity = low - # disruption = low --- name: Perform remediattion of Audit rules for /var/log/audit -+- name: Perform remediation of Audit rules for /var/log/audit - block: - {{{ ansible_audit_augenrules_add_syscall_rule( - action_arch_filters="-a always,exit", -diff --git a/shared/templates/audit_rules_dac_modification/ansible.template b/shared/templates/audit_rules_dac_modification/ansible.template -index ea6fd94ff4b..2c006b451c4 100644 ---- a/shared/templates/audit_rules_dac_modification/ansible.template -+++ b/shared/templates/audit_rules_dac_modification/ansible.template -@@ -11,7 +11,7 @@ - set_fact: - audit_arch: "b{{ ansible_architecture | regex_replace('.*(\\d\\d$)','\\1') }}" - --- name: Perform remediattion of Audit rules for {{{ ATTR | join(", ") }}} for x86 platform -+- name: Perform remediation of Audit rules for {{{ ATTR | join(", ") }}} for x86 platform - block: - {{{ ansible_audit_augenrules_add_syscall_rule( - action_arch_filters="-a always,exit -F arch=b32", -@@ -48,7 +48,7 @@ - )|indent(4) }}} - {{%- endif %}} - --- name: Perform remediattion of Audit rules for {{{ ATTR | join(", ") }}} for x86_64 platform -+- name: Perform remediation of Audit rules for {{{ ATTR | join(", ") }}} for x86_64 platform - block: - {{{ ansible_audit_augenrules_add_syscall_rule( - action_arch_filters="-a always,exit -F arch=b64", -diff --git a/shared/templates/audit_rules_file_deletion_events/ansible.template b/shared/templates/audit_rules_file_deletion_events/ansible.template -index 0044dc459dc..3bb07579463 100644 ---- a/shared/templates/audit_rules_file_deletion_events/ansible.template -+++ b/shared/templates/audit_rules_file_deletion_events/ansible.template -@@ -11,7 +11,7 @@ - set_fact: - audit_arch: "b{{ ansible_architecture | regex_replace('.*(\\d\\d$)','\\1') }}" - --- name: Perform remediattion of Audit rules for {{{ NAME| join(", ") }}} for x86 platform -+- name: Perform remediation of Audit rules for {{{ NAME| join(", ") }}} for x86 platform - block: - {{{ ansible_audit_augenrules_add_syscall_rule( - action_arch_filters="-a always,exit -F arch=b32", -@@ -30,7 +30,7 @@ - syscall_grouping=SYSCALL_GROUPING, - )|indent(4) }}} - --- name: Perform remediattion of Audit rules for {{{ NAME| join(", ") }}} for x86_64 platform -+- name: Perform remediation of Audit rules for {{{ NAME| join(", ") }}} for x86_64 platform - block: - {{{ ansible_audit_augenrules_add_syscall_rule( - action_arch_filters="-a always,exit -F arch=b64", -diff --git a/shared/templates/audit_rules_path_syscall/ansible.template b/shared/templates/audit_rules_path_syscall/ansible.template -index 2875aff3573..fcd2bda3bab 100644 ---- a/shared/templates/audit_rules_path_syscall/ansible.template -+++ b/shared/templates/audit_rules_path_syscall/ansible.template -@@ -11,7 +11,7 @@ - set_fact: - audit_arch: "b{{ ansible_architecture | regex_replace('.*(\\d\\d$)','\\1') }}" - --- name: Perform remediattion of Audit rules for {{{ SYSCALL | join(", ") }}} for x86 platform -+- name: Perform remediation of Audit rules for {{{ SYSCALL | join(", ") }}} for x86 platform - block: - {{{ ansible_audit_augenrules_add_syscall_rule( - action_arch_filters="-a always,exit -F arch=b32", -@@ -30,7 +30,7 @@ - syscall_grouping=SYSCALL_GROUPING, - )|indent(4) }}} - --- name: Perform remediattion of Audit rules for {{{ SYSCALL | join(", ") }}} for x86_64 platform -+- name: Perform remediation of Audit rules for {{{ SYSCALL | join(", ") }}} for x86_64 platform - block: - {{{ ansible_audit_augenrules_add_syscall_rule( - action_arch_filters="-a always,exit -F arch=b64", -diff --git a/shared/templates/audit_rules_privileged_commands/ansible.template b/shared/templates/audit_rules_privileged_commands/ansible.template -index b1788b59b8a..e9ef084984a 100644 ---- a/shared/templates/audit_rules_privileged_commands/ansible.template -+++ b/shared/templates/audit_rules_privileged_commands/ansible.template -@@ -7,7 +7,7 @@ - # complexity = low - # disruption = low - --- name: Perform remediattion of Audit rules for {{{ PATH }}} -+- name: Perform remediation of Audit rules for {{{ PATH }}} - block: - {{{ ansible_audit_augenrules_add_syscall_rule( - action_arch_filters="-a always,exit", -diff --git a/shared/templates/audit_rules_unsuccessful_file_modification/ansible.template b/shared/templates/audit_rules_unsuccessful_file_modification/ansible.template -index a8fdc3978b1..6cf90e11863 100644 ---- a/shared/templates/audit_rules_unsuccessful_file_modification/ansible.template -+++ b/shared/templates/audit_rules_unsuccessful_file_modification/ansible.template -@@ -31,7 +31,7 @@ - syscall_grouping=SYSCALL_GROUPING, - )|indent(4) }}} - --- name: Perform remediattion of Audit rules for {{{ NAME | join(", ") }}} {{{ EXIT_CODE }}} for x86_64 platform -+- name: Perform remediation of Audit rules for {{{ NAME | join(", ") }}} {{{ EXIT_CODE }}} for x86_64 platform - block: - {{{ ansible_audit_augenrules_add_syscall_rule( - action_arch_filters="-a always,exit -F arch=b64", - -From fe88dfbf2b4c7acd0a196512d2868f19b9b89f33 Mon Sep 17 00:00:00 2001 -From: Watson Sato -Date: Wed, 18 Aug 2021 17:21:32 +0200 -Subject: [PATCH 27/31] Reset the tracking of syscalls found per file - -When running a playbook profile, they were accumulating over the entire -run. ---- - shared/macros-ansible.jinja | 9 +++++++-- - 1 file changed, 7 insertions(+), 2 deletions(-) - -diff --git a/shared/macros-ansible.jinja b/shared/macros-ansible.jinja -index b5574da29ac..b26966238a2 100644 ---- a/shared/macros-ansible.jinja -+++ b/shared/macros-ansible.jinja -@@ -422,15 +422,20 @@ The macro requires following parameters: - register: find_command - loop: '{{ (syscall_grouping + syscalls) | unique }}' - -+- name: Reset syscalls found per file -+ set_fact: -+ syscalls_per_file: {} -+ found_paths_dict: {} -+ - - name: Declare syscalls found per file -- set_fact: syscalls_per_file="{{ syscalls_per_file | default({}) | combine( {item.files[0].path :[item.item]+(syscalls_per_file | default({})).get(item.files[0].path, []) } ) }}" -+ set_fact: syscalls_per_file="{{ syscalls_per_file | combine( {item.files[0].path :[item.item] + syscalls_per_file.get(item.files[0].path, []) } ) }}" - loop: "{{ find_command.results | selectattr('matched') | list}}" - - - name: Declare files where syscalls where found - set_fact: found_paths="{{ find_command.results | map(attribute='files') | flatten | map(attribute='path') | list }}" - - - name: Count occurrences of syscalls in paths -- set_fact: found_paths_dict="{{ found_paths_dict | default({}) | combine({ item:1+(found_paths_dict | default({})).get(item, 0) }) }}" -+ set_fact: found_paths_dict="{{ found_paths_dict | combine({ item:1+found_paths_dict.get(item, 0) }) }}" - loop: "{{ find_command.results | map(attribute='files') | flatten | map(attribute='path') | list }}" - - - name: Get path with most syscalls - -From 34a66912886e979fac132346074e556c36336b0c Mon Sep 17 00:00:00 2001 -From: Watson Sato -Date: Thu, 19 Aug 2021 12:32:25 +0200 -Subject: [PATCH 28/31] Create audit rules without permissions for others - ---- - shared/bash_remediation_functions/fix_audit_syscall_rule.sh | 1 + - shared/macros-ansible.jinja | 2 ++ - 2 files changed, 3 insertions(+) - -diff --git a/shared/bash_remediation_functions/fix_audit_syscall_rule.sh b/shared/bash_remediation_functions/fix_audit_syscall_rule.sh -index 5cc130a0236..d95aedba395 100644 ---- a/shared/bash_remediation_functions/fix_audit_syscall_rule.sh -+++ b/shared/bash_remediation_functions/fix_audit_syscall_rule.sh -@@ -204,6 +204,7 @@ then - local auid_string=$([[ $auid_filters ]] && echo " $auid_filters") - local full_rule="${action_arch_filters}${syscall_string}${other_string}${auid_string} -F key=${key}" - echo "$full_rule" >> "$default_file" -+ chmod o-rwx ${default_file} - else - # Check if the syscalls are declared as a comma separated list or - # as multiple -S parameters -diff --git a/shared/macros-ansible.jinja b/shared/macros-ansible.jinja -index b26966238a2..6c9c53a07db 100644 ---- a/shared/macros-ansible.jinja -+++ b/shared/macros-ansible.jinja -@@ -467,6 +467,7 @@ The macro requires following parameters: - path: '{{ audit_file }}' - line: "{{{ action_arch_filters }}}{{{ syscall_flag }}}{{ syscalls | join(',') }}{{{ other_filters }}}{{{ auid_filters}}} -F key={{{ key }}}" - create: true -+ mode: o-rwx - state: present - when: syscalls_found | length == 0 - {{%- endmacro %}} -@@ -535,6 +536,7 @@ The macro requires following parameters: - path: '{{ audit_file }}' - line: "{{{ action_arch_filters }}}{{{ syscall_flag }}}{{ syscalls | join(',') }}{{{ other_filters }}}{{{ auid_filters}}} -F key={{{ key }}}" - create: true -+ mode: o-rwx - state: present - when: syscalls_found | length == 0 - {{%- endmacro %}} - -From 181a0f9aacbcf7340ce0931907bd7ae1db0cf478 Mon Sep 17 00:00:00 2001 -From: Watson Sato -Date: Thu, 19 Aug 2021 14:48:08 +0200 -Subject: [PATCH 29/31] Remove trailing space from perm field - -Otherwise the rule will be added with two spaces between other_filters -and auid_filters. ---- - shared/templates/audit_rules_privileged_commands/bash.template | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/shared/templates/audit_rules_privileged_commands/bash.template b/shared/templates/audit_rules_privileged_commands/bash.template -index b5879085a45..5af362df800 100644 ---- a/shared/templates/audit_rules_privileged_commands/bash.template -+++ b/shared/templates/audit_rules_privileged_commands/bash.template -@@ -1,5 +1,5 @@ - {{%- if product in ["rhel8", "rhel9", "sle12", "sle15"] %}} -- {{%- set perm_x=" -F perm=x " %}} -+ {{%- set perm_x=" -F perm=x" %}} - {{%- endif %}} - # platform = multi_platform_rhel,multi_platform_fedora,multi_platform_ol,multi_platform_rhv - - -From c94454fd4409b69e24012b006266637e17982be8 Mon Sep 17 00:00:00 2001 -From: Watson Sato -Date: Thu, 19 Aug 2021 14:54:57 +0200 -Subject: [PATCH 30/31] Fix typos in task titles - ---- - shared/macros-ansible.jinja | 2 +- - .../audit_rules_file_deletion_events/ansible.template | 6 +++--- - 2 files changed, 4 insertions(+), 4 deletions(-) - -diff --git a/shared/macros-ansible.jinja b/shared/macros-ansible.jinja -index 6c9c53a07db..ed3881d054c 100644 ---- a/shared/macros-ansible.jinja -+++ b/shared/macros-ansible.jinja -@@ -431,7 +431,7 @@ The macro requires following parameters: - set_fact: syscalls_per_file="{{ syscalls_per_file | combine( {item.files[0].path :[item.item] + syscalls_per_file.get(item.files[0].path, []) } ) }}" - loop: "{{ find_command.results | selectattr('matched') | list}}" - --- name: Declare files where syscalls where found -+- name: Declare files where syscalls were found - set_fact: found_paths="{{ find_command.results | map(attribute='files') | flatten | map(attribute='path') | list }}" - - - name: Count occurrences of syscalls in paths -diff --git a/shared/templates/audit_rules_file_deletion_events/ansible.template b/shared/templates/audit_rules_file_deletion_events/ansible.template -index 3bb07579463..f09ce12d87a 100644 ---- a/shared/templates/audit_rules_file_deletion_events/ansible.template -+++ b/shared/templates/audit_rules_file_deletion_events/ansible.template -@@ -7,11 +7,11 @@ - # - # What architecture are we on? - # --- name: Set architecture for audit {{{ NAME| join(", ") }}} tasks -+- name: Set architecture for audit {{{ NAME | join(", ") }}} tasks - set_fact: - audit_arch: "b{{ ansible_architecture | regex_replace('.*(\\d\\d$)','\\1') }}" - --- name: Perform remediation of Audit rules for {{{ NAME| join(", ") }}} for x86 platform -+- name: Perform remediation of Audit rules for {{{ NAME | join(", ") }}} for x86 platform - block: - {{{ ansible_audit_augenrules_add_syscall_rule( - action_arch_filters="-a always,exit -F arch=b32", -@@ -30,7 +30,7 @@ - syscall_grouping=SYSCALL_GROUPING, - )|indent(4) }}} - --- name: Perform remediation of Audit rules for {{{ NAME| join(", ") }}} for x86_64 platform -+- name: Perform remediation of Audit rules for {{{ NAME | join(", ") }}} for x86_64 platform - block: - {{{ ansible_audit_augenrules_add_syscall_rule( - action_arch_filters="-a always,exit -F arch=b64", - -From a5e99060b4856298ffc9f2a75a611a2eefb9b4de Mon Sep 17 00:00:00 2001 -From: Watson Sato -Date: Thu, 19 Aug 2021 15:35:25 +0200 -Subject: [PATCH 31/31] Fix Ansible linter issue - -Variables should have spaces before and after ---- - shared/macros-ansible.jinja | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/shared/macros-ansible.jinja b/shared/macros-ansible.jinja -index ed3881d054c..b9536439c50 100644 ---- a/shared/macros-ansible.jinja -+++ b/shared/macros-ansible.jinja -@@ -429,7 +429,7 @@ The macro requires following parameters: - - - name: Declare syscalls found per file - set_fact: syscalls_per_file="{{ syscalls_per_file | combine( {item.files[0].path :[item.item] + syscalls_per_file.get(item.files[0].path, []) } ) }}" -- loop: "{{ find_command.results | selectattr('matched') | list}}" -+ loop: "{{ find_command.results | selectattr('matched') | list }}" - - - name: Declare files where syscalls were found - set_fact: found_paths="{{ find_command.results | map(attribute='files') | flatten | map(attribute='path') | list }}" diff --git a/SOURCES/scap-security-guide-0.1.58-ism_ks-PR_7392.patch b/SOURCES/scap-security-guide-0.1.58-ism_ks-PR_7392.patch deleted file mode 100644 index e38943c..0000000 --- a/SOURCES/scap-security-guide-0.1.58-ism_ks-PR_7392.patch +++ /dev/null @@ -1,256 +0,0 @@ -From 86e1556555fde19d3b6bfa7e280c8d9faf6243d3 Mon Sep 17 00:00:00 2001 -From: Matej Tyc -Date: Mon, 16 Aug 2021 13:08:10 +0200 -Subject: [PATCH] Add ISM Official kickstarts - ---- - .../rhel8/kickstart/ssg-rhel8-ism_o-ks.cfg | 116 ++++++++++++++++++ - .../rhel9/kickstart/ssg-rhel9-ism_o-ks.cfg | 116 ++++++++++++++++++ - 2 files changed, 232 insertions(+) - create mode 100644 products/rhel8/kickstart/ssg-rhel8-ism_o-ks.cfg - create mode 100644 products/rhel9/kickstart/ssg-rhel9-ism_o-ks.cfg - -diff --git a/products/rhel8/kickstart/ssg-rhel8-ism_o-ks.cfg b/products/rhel8/kickstart/ssg-rhel8-ism_o-ks.cfg -new file mode 100644 -index 0000000000..d84d98b12d ---- /dev/null -+++ b/products/rhel8/kickstart/ssg-rhel8-ism_o-ks.cfg -@@ -0,0 +1,116 @@ -+# SCAP Security Guide ISM Official profile kickstart for Red Hat Enterprise Linux 8 Server -+# Version: 0.0.1 -+# Date: 2021-08-16 -+# -+# Based on: -+# https://pykickstart.readthedocs.io/en/latest/ -+# https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-single/performing_an_advanced_rhel_installation/index#performing_an_automated_installation_using_kickstart -+ -+# Specify installation method to use for installation -+# To use a different one comment out the 'url' one below, update -+# the selected choice with proper options & un-comment it -+# -+# Install from an installation tree on a remote server via FTP or HTTP: -+# --url the URL to install from -+# -+# Example: -+# -+# url --url=http://192.168.122.1/image -+# -+# Modify concrete URL in the above example appropriately to reflect the actual -+# environment machine is to be installed in -+# -+# Other possible / supported installation methods: -+# * install from the first CD-ROM/DVD drive on the system: -+# -+# cdrom -+# -+# * install from a directory of ISO images on a local drive: -+# -+# harddrive --partition=hdb2 --dir=/tmp/install-tree -+# -+# * install from provided NFS server: -+# -+# nfs --server= --dir= [--opts=] -+# -+ -+# Set language to use during installation and the default language to use on the installed system (required) -+lang en_US.UTF-8 -+ -+# Set system keyboard type / layout (required) -+keyboard us -+ -+# Configure network information for target system and activate network devices in the installer environment (optional) -+# --onboot enable device at a boot time -+# --device device to be activated and / or configured with the network command -+# --bootproto method to obtain networking configuration for device (default dhcp) -+# --noipv6 disable IPv6 on this device -+# -+# -+network --onboot yes --device eth0 --bootproto dhcp --noipv6 -+ -+# Set the system's root password (required) -+# Plaintext password is: server -+# Refer to e.g. https://pykickstart.readthedocs.io/en/latest/commands.html#rootpw to see how to create -+# encrypted password form for different plaintext password -+rootpw --iscrypted $6$/0RYeeRdK70ynvYz$jH2ZN/80HM6DjndHMxfUF9KIibwipitvizzXDH1zW.fTjyD3RD3tkNdNUaND18B/XqfAUW3vy1uebkBybCuIm0 -+ -+# The selected profile will restrict root login -+# Add a user that can login and escalate privileges -+# Plaintext password is: admin123 -+user --name=admin --groups=wheel --password=$6$Ga6ZnIlytrWpuCzO$q0LqT1USHpahzUafQM9jyHCY9BiE5/ahXLNWUMiVQnFGblu0WWGZ1e6icTaCGO4GNgZNtspp1Let/qpM7FMVB0 --iscrypted -+ -+# Configure firewall settings for the system (optional) -+# --enabled reject incoming connections that are not in response to outbound requests -+# --ssh allow sshd service through the firewall -+firewall --enabled --ssh -+ -+# Set up the authentication options for the system (required) -+# sssd profile sets sha512 to hash passwords -+# passwords are shadowed by default -+# See the manual page for authselect-profile for a complete list of possible options. -+authselect select sssd -+ -+# State of SELinux on the installed system (optional) -+# Defaults to enforcing -+selinux --enforcing -+ -+# Set the system time zone (required) -+timezone --utc America/New_York -+ -+# Specify how the bootloader should be installed (required) -+bootloader --location=mbr --append="crashkernel=auto rhgb quiet" -+ -+# Initialize (format) all disks (optional) -+zerombr -+ -+# The following partition layout scheme assumes disk of size 20GB or larger -+# Modify size of partitions appropriately to reflect actual machine's hardware -+# -+# Remove Linux partitions from the system prior to creating new ones (optional) -+# --linux erase all Linux partitions -+# --initlabel initialize the disk label to the default based on the underlying architecture -+clearpart --linux --initlabel -+ -+# Create primary system partitions (required for installs) -+autopart -+ -+# Harden installation with Essential Eight profile -+# For more details and configuration options see -+# https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-single/performing_an_advanced_rhel_installation/index#addon-org_fedora_oscap_kickstart-commands-for-addons-supplied-with-the-rhel-installation-program -+%addon org_fedora_oscap -+ content-type = scap-security-guide -+ profile = xccdf_org.ssgproject.content_profile_ism_o -+%end -+ -+# Packages selection (%packages section is required) -+%packages -+ -+# Require @Base -+@Base -+ -+%end # End of %packages section -+ -+# Reboot after the installation is complete (optional) -+# --eject attempt to eject CD or DVD media before rebooting -+reboot --eject -diff --git a/products/rhel9/kickstart/ssg-rhel9-ism_o-ks.cfg b/products/rhel9/kickstart/ssg-rhel9-ism_o-ks.cfg -new file mode 100644 -index 0000000000..517919539a ---- /dev/null -+++ b/products/rhel9/kickstart/ssg-rhel9-ism_o-ks.cfg -@@ -0,0 +1,116 @@ -+# SCAP Security Guide ISM Official profile kickstart for Red Hat Enterprise Linux 9 Server -+# Version: 0.0.1 -+# Date: 2021-08-16 -+# -+# Based on: -+# https://pykickstart.readthedocs.io/en/latest/ -+# https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-single/performing_an_advanced_rhel_installation/index#performing_an_automated_installation_using_kickstart -+ -+# Specify installation method to use for installation -+# To use a different one comment out the 'url' one below, update -+# the selected choice with proper options & un-comment it -+# -+# Install from an installation tree on a remote server via FTP or HTTP: -+# --url the URL to install from -+# -+# Example: -+# -+# url --url=http://192.168.122.1/image -+# -+# Modify concrete URL in the above example appropriately to reflect the actual -+# environment machine is to be installed in -+# -+# Other possible / supported installation methods: -+# * install from the first CD-ROM/DVD drive on the system: -+# -+# cdrom -+# -+# * install from a directory of ISO images on a local drive: -+# -+# harddrive --partition=hdb2 --dir=/tmp/install-tree -+# -+# * install from provided NFS server: -+# -+# nfs --server= --dir= [--opts=] -+# -+ -+# Set language to use during installation and the default language to use on the installed system (required) -+lang en_US.UTF-8 -+ -+# Set system keyboard type / layout (required) -+keyboard us -+ -+# Configure network information for target system and activate network devices in the installer environment (optional) -+# --onboot enable device at a boot time -+# --device device to be activated and / or configured with the network command -+# --bootproto method to obtain networking configuration for device (default dhcp) -+# --noipv6 disable IPv6 on this device -+# -+# -+network --onboot yes --device eth0 --bootproto dhcp --noipv6 -+ -+# Set the system's root password (required) -+# Plaintext password is: server -+# Refer to e.g. https://pykickstart.readthedocs.io/en/latest/commands.html#rootpw to see how to create -+# encrypted password form for different plaintext password -+rootpw --iscrypted $6$/0RYeeRdK70ynvYz$jH2ZN/80HM6DjndHMxfUF9KIibwipitvizzXDH1zW.fTjyD3RD3tkNdNUaND18B/XqfAUW3vy1uebkBybCuIm0 -+ -+# The selected profile will restrict root login -+# Add a user that can login and escalate privileges -+# Plaintext password is: admin123 -+user --name=admin --groups=wheel --password=$6$Ga6ZnIlytrWpuCzO$q0LqT1USHpahzUafQM9jyHCY9BiE5/ahXLNWUMiVQnFGblu0WWGZ1e6icTaCGO4GNgZNtspp1Let/qpM7FMVB0 --iscrypted -+ -+# Configure firewall settings for the system (optional) -+# --enabled reject incoming connections that are not in response to outbound requests -+# --ssh allow sshd service through the firewall -+firewall --enabled --ssh -+ -+# Set up the authentication options for the system (required) -+# sssd profile sets sha512 to hash passwords -+# passwords are shadowed by default -+# See the manual page for authselect-profile for a complete list of possible options. -+authselect select sssd -+ -+# State of SELinux on the installed system (optional) -+# Defaults to enforcing -+selinux --enforcing -+ -+# Set the system time zone (required) -+timezone --utc America/New_York -+ -+# Specify how the bootloader should be installed (required) -+bootloader --location=mbr --append="crashkernel=auto rhgb quiet" -+ -+# Initialize (format) all disks (optional) -+zerombr -+ -+# The following partition layout scheme assumes disk of size 20GB or larger -+# Modify size of partitions appropriately to reflect actual machine's hardware -+# -+# Remove Linux partitions from the system prior to creating new ones (optional) -+# --linux erase all Linux partitions -+# --initlabel initialize the disk label to the default based on the underlying architecture -+clearpart --linux --initlabel -+ -+# Create primary system partitions (required for installs) -+autopart -+ -+# Harden installation with Essential Eight profile -+# For more details and configuration options see -+# https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-single/performing_an_advanced_rhel_installation/index#addon-org_fedora_oscap_kickstart-commands-for-addons-supplied-with-the-rhel-installation-program -+%addon com_redhat_oscap -+ content-type = scap-security-guide -+ profile = xccdf_org.ssgproject.content_profile_ism_o -+%end -+ -+# Packages selection (%packages section is required) -+%packages -+ -+# Require @Base -+@Base -+ -+%end # End of %packages section -+ -+# Reboot after the installation is complete (optional) -+# --eject attempt to eject CD or DVD media before rebooting -+reboot --eject diff --git a/SOURCES/scap-security-guide-0.1.58-ism_usb_hid-PR_7493.patch b/SOURCES/scap-security-guide-0.1.58-ism_usb_hid-PR_7493.patch deleted file mode 100644 index bdf85b5..0000000 --- a/SOURCES/scap-security-guide-0.1.58-ism_usb_hid-PR_7493.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 7189a9f4aa319b823e241ca11a798762bd62515f Mon Sep 17 00:00:00 2001 -From: Matej Tyc -Date: Tue, 31 Aug 2021 13:58:00 +0200 -Subject: [PATCH] Allow HID USB in the ISM profile - -The usbguard is too strict without this rule, -and its default setting blocks keyboard and mouse. ---- - products/rhel8/profiles/ism_o.profile | 1 + - products/rhel9/profiles/ism_o.profile | 1 + - 2 files changed, 2 insertions(+) - -diff --git a/products/rhel8/profiles/ism_o.profile b/products/rhel8/profiles/ism_o.profile -index 95cdfc4ede..2e78dc8776 100644 ---- a/products/rhel8/profiles/ism_o.profile -+++ b/products/rhel8/profiles/ism_o.profile -@@ -52,6 +52,7 @@ selections: - ## Identifiers 1418 - - package_usbguard_installed - - service_usbguard_enabled -+ - usbguard_allow_hid_and_hub - - ## Authentication hardening - ## Identifiers 1546 / 0974 / 1173 / 1504 / 1505 / 1401 / 1559 / 1560 -diff --git a/products/rhel9/profiles/ism_o.profile b/products/rhel9/profiles/ism_o.profile -index 6fc919da12..b395b0e9cb 100644 ---- a/products/rhel9/profiles/ism_o.profile -+++ b/products/rhel9/profiles/ism_o.profile -@@ -52,6 +52,7 @@ selections: - ## Identifiers 1418 - - package_usbguard_installed - - service_usbguard_enabled -+ - usbguard_allow_hid_and_hub - - ## Authentication hardening - ## Identifiers 1546 / 0974 / 1173 / 1504 / 1505 / 1401 / 1559 / 1560 diff --git a/SOURCES/scap-security-guide-0.1.58-mark_rule_as_machine_only-PR_7442.patch b/SOURCES/scap-security-guide-0.1.58-mark_rule_as_machine_only-PR_7442.patch deleted file mode 100644 index b27575c..0000000 --- a/SOURCES/scap-security-guide-0.1.58-mark_rule_as_machine_only-PR_7442.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 0d04f65d53b83690769f7baee48ec64e785b0e00 Mon Sep 17 00:00:00 2001 -From: Gabriel Becker -Date: Mon, 23 Aug 2021 11:33:28 +0200 -Subject: [PATCH] Mark agent_mfetpd_running as machine only. - ---- - .../mcafee_endpoint_security_software/group.yml | 2 ++ - .../package_mcafeetp_installed/rule.yml | 2 -- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/linux_os/guide/system/software/integrity/endpoint_security_software/mcafee_security_software/mcafee_endpoint_security_software/group.yml b/linux_os/guide/system/software/integrity/endpoint_security_software/mcafee_security_software/mcafee_endpoint_security_software/group.yml -index f2e4e89851..b915311533 100644 ---- a/linux_os/guide/system/software/integrity/endpoint_security_software/mcafee_security_software/mcafee_endpoint_security_software/group.yml -+++ b/linux_os/guide/system/software/integrity/endpoint_security_software/mcafee_security_software/mcafee_endpoint_security_software/group.yml -@@ -5,3 +5,5 @@ title: 'McAfee Endpoint Security for Linux (ENSL)' - description: |- - McAfee Endpoint Security for Linux (ENSL) is a suite of software applications - used to monitor, detect, and defend computer networks and systems. -+ -+platform: machine -diff --git a/linux_os/guide/system/software/integrity/endpoint_security_software/mcafee_security_software/mcafee_endpoint_security_software/package_mcafeetp_installed/rule.yml b/linux_os/guide/system/software/integrity/endpoint_security_software/mcafee_security_software/mcafee_endpoint_security_software/package_mcafeetp_installed/rule.yml -index 16587792ef..4c7dc8d7a2 100644 ---- a/linux_os/guide/system/software/integrity/endpoint_security_software/mcafee_security_software/mcafee_endpoint_security_software/package_mcafeetp_installed/rule.yml -+++ b/linux_os/guide/system/software/integrity/endpoint_security_software/mcafee_security_software/mcafee_endpoint_security_software/package_mcafeetp_installed/rule.yml -@@ -37,8 +37,6 @@ warnings: - Due to McAfee Endpoint Security for Linux (ENSL) being 3rd party software, - automated remediation is not available for this configuration check. - --platform: machine -- - template: - name: package_installed - vars: diff --git a/SOURCES/scap-security-guide-0.1.58-remove_RHEL_08_040162-PR_7369.patch b/SOURCES/scap-security-guide-0.1.58-remove_RHEL_08_040162-PR_7369.patch deleted file mode 100644 index f14e270..0000000 --- a/SOURCES/scap-security-guide-0.1.58-remove_RHEL_08_040162-PR_7369.patch +++ /dev/null @@ -1,63 +0,0 @@ -From 8fa9ca61649a36dd1f3d5e5c72c0162a4dbfe694 Mon Sep 17 00:00:00 2001 -From: Gabriel Becker -Date: Tue, 10 Aug 2021 09:45:56 +0200 -Subject: [PATCH] Remove RHEL-08-040162 from STIG profile. - -This item has been removed in version RHEL8 DISA STIG V1R3. ---- - .../services/ssh/ssh_client/ssh_client_rekey_limit/rule.yml | 1 - - products/rhel8/profiles/stig.profile | 3 --- - tests/data/profile_stability/rhel8/stig.profile | 1 - - tests/data/profile_stability/rhel8/stig_gui.profile | 1 - - 4 files changed, 6 deletions(-) - -diff --git a/linux_os/guide/services/ssh/ssh_client/ssh_client_rekey_limit/rule.yml b/linux_os/guide/services/ssh/ssh_client/ssh_client_rekey_limit/rule.yml -index 1852313216a..f43f92c2f15 100644 ---- a/linux_os/guide/services/ssh/ssh_client/ssh_client_rekey_limit/rule.yml -+++ b/linux_os/guide/services/ssh/ssh_client/ssh_client_rekey_limit/rule.yml -@@ -32,7 +32,6 @@ references: - disa: CCI-000068 - ospp: FCS_SSHS_EXT.1 - srg: SRG-OS-000423-GPOS-00187,SRG-OS-000033-GPOS-00014 -- stigid@rhel8: RHEL-08-040162 - - ocil_clause: 'it is commented out or is not set' - -diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index a358f61dba5..9d4d1965141 100644 ---- a/products/rhel8/profiles/stig.profile -+++ b/products/rhel8/profiles/stig.profile -@@ -1071,9 +1071,6 @@ selections: - # RHEL-08-040161 - - sshd_rekey_limit - -- # RHEL-08-040162 -- - ssh_client_rekey_limit -- - # RHEL-08-040170 - - disable_ctrlaltdel_reboot - -diff --git a/tests/data/profile_stability/rhel8/stig.profile b/tests/data/profile_stability/rhel8/stig.profile -index 7d54a7505fb..fca5842cf22 100644 ---- a/tests/data/profile_stability/rhel8/stig.profile -+++ b/tests/data/profile_stability/rhel8/stig.profile -@@ -323,7 +323,6 @@ selections: - - service_usbguard_enabled - - set_password_hashing_algorithm_logindefs - - set_password_hashing_algorithm_systemauth --- ssh_client_rekey_limit - - sshd_disable_compression - - sshd_disable_empty_passwords - - sshd_disable_gssapi_auth -diff --git a/tests/data/profile_stability/rhel8/stig_gui.profile b/tests/data/profile_stability/rhel8/stig_gui.profile -index 97291230e7c..35fa9ddea2b 100644 ---- a/tests/data/profile_stability/rhel8/stig_gui.profile -+++ b/tests/data/profile_stability/rhel8/stig_gui.profile -@@ -334,7 +334,6 @@ selections: - - service_usbguard_enabled - - set_password_hashing_algorithm_logindefs - - set_password_hashing_algorithm_systemauth --- ssh_client_rekey_limit - - sshd_disable_compression - - sshd_disable_empty_passwords - - sshd_disable_gssapi_auth diff --git a/SOURCES/scap-security-guide-0.1.58-rhel7_cis_kickstarts-PR_7382.patch b/SOURCES/scap-security-guide-0.1.58-rhel7_cis_kickstarts-PR_7382.patch deleted file mode 100644 index 2d7e09b..0000000 --- a/SOURCES/scap-security-guide-0.1.58-rhel7_cis_kickstarts-PR_7382.patch +++ /dev/null @@ -1,490 +0,0 @@ -From ee2da171d5a76202b2aef8231c5af6f97ef156ef Mon Sep 17 00:00:00 2001 -From: Vojtech Polasek -Date: Thu, 12 Aug 2021 10:36:30 +0200 -Subject: [PATCH 1/2] add rhel7 kickstarts for cis - ---- - products/rhel7/kickstart/ssg-rhel7-cis-ks.cfg | 4 +- - .../kickstart/ssg-rhel7-cis_server_l1-ks.cfg | 136 ++++++++++++++++ - .../ssg-rhel7-cis_workstation_l1-ks.cfg | 137 ++++++++++++++++ - .../ssg-rhel7-cis_workstation_l2-ks.cfg | 147 ++++++++++++++++++ - 4 files changed, 422 insertions(+), 2 deletions(-) - create mode 100644 products/rhel7/kickstart/ssg-rhel7-cis_server_l1-ks.cfg - create mode 100644 products/rhel7/kickstart/ssg-rhel7-cis_workstation_l1-ks.cfg - create mode 100644 products/rhel7/kickstart/ssg-rhel7-cis_workstation_l2-ks.cfg - -diff --git a/products/rhel7/kickstart/ssg-rhel7-cis-ks.cfg b/products/rhel7/kickstart/ssg-rhel7-cis-ks.cfg -index 6ead435b978..00edb9d536c 100644 ---- a/products/rhel7/kickstart/ssg-rhel7-cis-ks.cfg -+++ b/products/rhel7/kickstart/ssg-rhel7-cis-ks.cfg -@@ -1,6 +1,6 @@ --# SCAP Security Guide CIS profile kickstart for Red Hat Enterprise Linux 7 Server -+# SCAP Security Guide CIS profile (Leve 2 - Server) kickstart for Red Hat Enterprise Linux 7 Server - # Version: 0.0.1 --# Date: 2020-03-30 -+# Date: 2021-08-12 - # - # Based on: - # https://pykickstart.readthedocs.io/en/latest/ -diff --git a/products/rhel7/kickstart/ssg-rhel7-cis_server_l1-ks.cfg b/products/rhel7/kickstart/ssg-rhel7-cis_server_l1-ks.cfg -new file mode 100644 -index 00000000000..333105c4f9e ---- /dev/null -+++ b/products/rhel7/kickstart/ssg-rhel7-cis_server_l1-ks.cfg -@@ -0,0 +1,136 @@ -+# SCAP Security Guide CIS profile (Level 1 - Server) kickstart for Red Hat Enterprise Linux 7 Server -+# Version: 0.0.1 -+# Date: 2021-08-12 -+# -+# Based on: -+# https://pykickstart.readthedocs.io/en/latest/ -+# https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Installation_Guide/sect-kickstart-syntax.html -+ -+# Install a fresh new system (optional) -+install -+ -+# Specify installation method to use for installation -+# To use a different one comment out the 'url' one below, update -+# the selected choice with proper options & un-comment it -+# -+# Install from an installation tree on a remote server via FTP or HTTP: -+# --url the URL to install from -+# -+# Example: -+# -+# url --url=http://192.168.122.1/image -+# -+# Modify concrete URL in the above example appropriately to reflect the actual -+# environment machine is to be installed in -+# -+# Other possible / supported installation methods: -+# * install from the first CD-ROM/DVD drive on the system: -+# -+# cdrom -+# -+# * install from a directory of ISO images on a local drive: -+# -+# harddrive --partition=hdb2 --dir=/tmp/install-tree -+# -+# * install from provided NFS server: -+# -+# nfs --server= --dir= [--opts=] -+# -+ -+# Set language to use during installation and the default language to use on the installed system (required) -+lang en_US.UTF-8 -+ -+# Set system keyboard type / layout (required) -+keyboard us -+ -+# Configure network information for target system and activate network devices in the installer environment (optional) -+# --onboot enable device at a boot time -+# --device device to be activated and / or configured with the network command -+# --bootproto method to obtain networking configuration for device (default dhcp) -+# --noipv6 disable IPv6 on this device -+# -+# NOTE: Usage of DHCP will fail CCE-27021-5 (DISA FSO RHEL-06-000292). To use static IP configuration, -+# "--bootproto=static" must be used. For example: -+# network --bootproto=static --ip=10.0.2.15 --netmask=255.255.255.0 --gateway=10.0.2.254 --nameserver 192.168.2.1,192.168.3.1 -+# -+network --onboot yes --device eth0 --bootproto dhcp --noipv6 -+ -+# Set the system's root password (required) -+# Plaintext password is: server -+# Refer to e.g. https://pykickstart.readthedocs.io/en/latest/commands.html#rootpw to see how to create -+# encrypted password form for different plaintext password -+rootpw --iscrypted $6$/0RYeeRdK70ynvYz$jH2ZN/80HM6DjndHMxfUF9KIibwipitvizzXDH1zW.fTjyD3RD3tkNdNUaND18B/XqfAUW3vy1uebkBybCuIm0 -+ -+# The selected profile will restrict root login -+# Add a user that can login and escalate privileges -+# Plaintext password is: admin123 -+user --name=admin --groups=wheel --password=$6$Ga6ZnIlytrWpuCzO$q0LqT1USHpahzUafQM9jyHCY9BiE5/ahXLNWUMiVQnFGblu0WWGZ1e6icTaCGO4GNgZNtspp1Let/qpM7FMVB0 --iscrypted -+ -+# Configure firewall settings for the system (optional) -+# --enabled reject incoming connections that are not in response to outbound requests -+# --ssh allow sshd service through the firewall -+firewall --enabled --ssh -+ -+# Set up the authentication options for the system (required) -+# --enableshadow enable shadowed passwords by default -+# --passalgo hash / crypt algorithm for new passwords -+# See the manual page for authconfig for a complete list of possible options. -+authconfig --enableshadow --passalgo=sha512 -+ -+# State of SELinux on the installed system (optional) -+# Defaults to enforcing -+selinux --enforcing -+ -+# Set the system time zone (required) -+timezone --utc America/New_York -+ -+# Specify how the bootloader should be installed (required) -+# Plaintext password is: password -+# Refer to e.g. https://pykickstart.readthedocs.io/en/latest/commands.html#rootpw to see how to create -+# encrypted password form for different plaintext password -+bootloader --location=mbr --append="crashkernel=auto rhgb quiet" --password=$6$zCPaBARiNlBYUAS7$40phthWpqvaPVz3QUeIK6n5qoazJDJD5Nlc9OKy5SyYoX9Rt4jFaLjzqJCwpgR4RVAEFSADsqQot0WKs5qNto0 -+ -+# Initialize (format) all disks (optional) -+zerombr -+ -+# The following partition layout scheme assumes disk of size 20GB or larger -+# Modify size of partitions appropriately to reflect actual machine's hardware -+# -+# Remove Linux partitions from the system prior to creating new ones (optional) -+# --linux erase all Linux partitions -+# --initlabel initialize the disk label to the default based on the underlying architecture -+clearpart --linux --initlabel -+ -+# Create primary system partitions (required for installs) -+part /boot --fstype=xfs --size=512 -+part pv.01 --grow --size=1 -+ -+# Create a Logical Volume Management (LVM) group (optional) -+volgroup VolGroup --pesize=4096 pv.01 -+ -+# Create particular logical volumes (optional) -+logvol / --fstype=xfs --name=LogVol06 --vgname=VolGroup --size=11264 --grow -+# Ensure /tmp Located On Separate Partition -+logvol /tmp --fstype=xfs --name=LogVol01 --vgname=VolGroup --size=1024 --fsoptions="nodev,noexec,nosuid" -+logvol swap --name=lv_swap --vgname=VolGroup --size=2016 -+ -+ -+# Harden installation with CIS profile -+# For more details and configuration options see command %addon org_fedora_oscap in -+# https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/installation_guide/sect-kickstart-syntax#sect-kickstart-commands -+%addon org_fedora_oscap -+ content-type = scap-security-guide -+ profile = xccdf_org.ssgproject.content_profile_cis_server_l1 -+%end -+ -+# Packages selection (%packages section is required) -+%packages -+ -+# Require @Base -+@Base -+ -+%end # End of %packages section -+ -+# Reboot after the installation is complete (optional) -+# --eject attempt to eject CD or DVD media before rebooting -+reboot --eject -diff --git a/products/rhel7/kickstart/ssg-rhel7-cis_workstation_l1-ks.cfg b/products/rhel7/kickstart/ssg-rhel7-cis_workstation_l1-ks.cfg -new file mode 100644 -index 00000000000..7ca9fe8558b ---- /dev/null -+++ b/products/rhel7/kickstart/ssg-rhel7-cis_workstation_l1-ks.cfg -@@ -0,0 +1,137 @@ -+# SCAP Security Guide CIS profile (Level 1 - Workstation) kickstart for Red Hat Enterprise Linux 7 Server -+# Version: 0.0.1 -+# Date: 2021-08-12 -+# -+# Based on: -+# https://pykickstart.readthedocs.io/en/latest/ -+# https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Installation_Guide/sect-kickstart-syntax.html -+ -+# Install a fresh new system (optional) -+install -+ -+# Specify installation method to use for installation -+# To use a different one comment out the 'url' one below, update -+# the selected choice with proper options & un-comment it -+# -+# Install from an installation tree on a remote server via FTP or HTTP: -+# --url the URL to install from -+# -+# Example: -+# -+# url --url=http://192.168.122.1/image -+# -+# Modify concrete URL in the above example appropriately to reflect the actual -+# environment machine is to be installed in -+# -+# Other possible / supported installation methods: -+# * install from the first CD-ROM/DVD drive on the system: -+# -+# cdrom -+# -+# * install from a directory of ISO images on a local drive: -+# -+# harddrive --partition=hdb2 --dir=/tmp/install-tree -+# -+# * install from provided NFS server: -+# -+# nfs --server= --dir= [--opts=] -+# -+ -+# Set language to use during installation and the default language to use on the installed system (required) -+lang en_US.UTF-8 -+ -+# Set system keyboard type / layout (required) -+keyboard us -+ -+# Configure network information for target system and activate network devices in the installer environment (optional) -+# --onboot enable device at a boot time -+# --device device to be activated and / or configured with the network command -+# --bootproto method to obtain networking configuration for device (default dhcp) -+# --noipv6 disable IPv6 on this device -+# -+# NOTE: Usage of DHCP will fail CCE-27021-5 (DISA FSO RHEL-06-000292). To use static IP configuration, -+# "--bootproto=static" must be used. For example: -+# network --bootproto=static --ip=10.0.2.15 --netmask=255.255.255.0 --gateway=10.0.2.254 --nameserver 192.168.2.1,192.168.3.1 -+# -+network --onboot yes --device eth0 --bootproto dhcp --noipv6 -+ -+# Set the system's root password (required) -+# Plaintext password is: server -+# Refer to e.g. https://pykickstart.readthedocs.io/en/latest/commands.html#rootpw to see how to create -+# encrypted password form for different plaintext password -+rootpw --iscrypted $6$/0RYeeRdK70ynvYz$jH2ZN/80HM6DjndHMxfUF9KIibwipitvizzXDH1zW.fTjyD3RD3tkNdNUaND18B/XqfAUW3vy1uebkBybCuIm0 -+ -+# The selected profile will restrict root login -+# Add a user that can login and escalate privileges -+# Plaintext password is: admin123 -+user --name=admin --groups=wheel --password=$6$Ga6ZnIlytrWpuCzO$q0LqT1USHpahzUafQM9jyHCY9BiE5/ahXLNWUMiVQnFGblu0WWGZ1e6icTaCGO4GNgZNtspp1Let/qpM7FMVB0 --iscrypted -+ -+# Configure firewall settings for the system (optional) -+# --enabled reject incoming connections that are not in response to outbound requests -+# --ssh allow sshd service through the firewall -+firewall --enabled --ssh -+ -+# Set up the authentication options for the system (required) -+# --enableshadow enable shadowed passwords by default -+# --passalgo hash / crypt algorithm for new passwords -+# See the manual page for authconfig for a complete list of possible options. -+authconfig --enableshadow --passalgo=sha512 -+ -+# State of SELinux on the installed system (optional) -+# Defaults to enforcing -+selinux --enforcing -+ -+# Set the system time zone (required) -+timezone --utc America/New_York -+ -+# Specify how the bootloader should be installed (required) -+# Plaintext password is: password -+# Refer to e.g. https://pykickstart.readthedocs.io/en/latest/commands.html#rootpw to see how to create -+# encrypted password form for different plaintext password -+bootloader --location=mbr --append="crashkernel=auto rhgb quiet" --password=$6$zCPaBARiNlBYUAS7$40phthWpqvaPVz3QUeIK6n5qoazJDJD5Nlc9OKy5SyYoX9Rt4jFaLjzqJCwpgR4RVAEFSADsqQot0WKs5qNto0 -+ -+# Initialize (format) all disks (optional) -+zerombr -+ -+# The following partition layout scheme assumes disk of size 20GB or larger -+# Modify size of partitions appropriately to reflect actual machine's hardware -+# -+# Remove Linux partitions from the system prior to creating new ones (optional) -+# --linux erase all Linux partitions -+# --initlabel initialize the disk label to the default based on the underlying architecture -+clearpart --linux --initlabel -+ -+# Create primary system partitions (required for installs) -+part /boot --fstype=xfs --size=512 -+part pv.01 --grow --size=1 -+ -+# Create a Logical Volume Management (LVM) group (optional) -+volgroup VolGroup --pesize=4096 pv.01 -+ -+# Create particular logical volumes (optional) -+logvol / --fstype=xfs --name=LogVol06 --vgname=VolGroup --size=11264 --grow -+# Ensure /tmp Located On Separate Partition -+logvol /tmp --fstype=xfs --name=LogVol01 --vgname=VolGroup --size=1024 --fsoptions="nodev,noexec,nosuid" -+logvol swap --name=lv_swap --vgname=VolGroup --size=2016 -+ -+ -+ -+# Harden installation with CIS profile -+# For more details and configuration options see command %addon org_fedora_oscap in -+# https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/installation_guide/sect-kickstart-syntax#sect-kickstart-commands -+%addon org_fedora_oscap -+ content-type = scap-security-guide -+ profile = xccdf_org.ssgproject.content_profile_cis_workstation_l1 -+%end -+ -+# Packages selection (%packages section is required) -+%packages -+ -+# Require @Base -+@Base -+ -+%end # End of %packages section -+ -+# Reboot after the installation is complete (optional) -+# --eject attempt to eject CD or DVD media before rebooting -+reboot --eject -diff --git a/products/rhel7/kickstart/ssg-rhel7-cis_workstation_l2-ks.cfg b/products/rhel7/kickstart/ssg-rhel7-cis_workstation_l2-ks.cfg -new file mode 100644 -index 00000000000..b9bff5f390e ---- /dev/null -+++ b/products/rhel7/kickstart/ssg-rhel7-cis_workstation_l2-ks.cfg -@@ -0,0 +1,147 @@ -+# SCAP Security Guide CIS profile (Level 2 - Workstation) kickstart for Red Hat Enterprise Linux 7 Server -+# Version: 0.0.1 -+# Date: 2021-08-12 -+# -+# Based on: -+# https://pykickstart.readthedocs.io/en/latest/ -+# https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Installation_Guide/sect-kickstart-syntax.html -+ -+# Install a fresh new system (optional) -+install -+ -+# Specify installation method to use for installation -+# To use a different one comment out the 'url' one below, update -+# the selected choice with proper options & un-comment it -+# -+# Install from an installation tree on a remote server via FTP or HTTP: -+# --url the URL to install from -+# -+# Example: -+# -+# url --url=http://192.168.122.1/image -+# -+# Modify concrete URL in the above example appropriately to reflect the actual -+# environment machine is to be installed in -+# -+# Other possible / supported installation methods: -+# * install from the first CD-ROM/DVD drive on the system: -+# -+# cdrom -+# -+# * install from a directory of ISO images on a local drive: -+# -+# harddrive --partition=hdb2 --dir=/tmp/install-tree -+# -+# * install from provided NFS server: -+# -+# nfs --server= --dir= [--opts=] -+# -+ -+# Set language to use during installation and the default language to use on the installed system (required) -+lang en_US.UTF-8 -+ -+# Set system keyboard type / layout (required) -+keyboard us -+ -+# Configure network information for target system and activate network devices in the installer environment (optional) -+# --onboot enable device at a boot time -+# --device device to be activated and / or configured with the network command -+# --bootproto method to obtain networking configuration for device (default dhcp) -+# --noipv6 disable IPv6 on this device -+# -+# NOTE: Usage of DHCP will fail CCE-27021-5 (DISA FSO RHEL-06-000292). To use static IP configuration, -+# "--bootproto=static" must be used. For example: -+# network --bootproto=static --ip=10.0.2.15 --netmask=255.255.255.0 --gateway=10.0.2.254 --nameserver 192.168.2.1,192.168.3.1 -+# -+network --onboot yes --device eth0 --bootproto dhcp --noipv6 -+ -+# Set the system's root password (required) -+# Plaintext password is: server -+# Refer to e.g. https://pykickstart.readthedocs.io/en/latest/commands.html#rootpw to see how to create -+# encrypted password form for different plaintext password -+rootpw --iscrypted $6$/0RYeeRdK70ynvYz$jH2ZN/80HM6DjndHMxfUF9KIibwipitvizzXDH1zW.fTjyD3RD3tkNdNUaND18B/XqfAUW3vy1uebkBybCuIm0 -+ -+# The selected profile will restrict root login -+# Add a user that can login and escalate privileges -+# Plaintext password is: admin123 -+user --name=admin --groups=wheel --password=$6$Ga6ZnIlytrWpuCzO$q0LqT1USHpahzUafQM9jyHCY9BiE5/ahXLNWUMiVQnFGblu0WWGZ1e6icTaCGO4GNgZNtspp1Let/qpM7FMVB0 --iscrypted -+ -+# Configure firewall settings for the system (optional) -+# --enabled reject incoming connections that are not in response to outbound requests -+# --ssh allow sshd service through the firewall -+firewall --enabled --ssh -+ -+# Set up the authentication options for the system (required) -+# --enableshadow enable shadowed passwords by default -+# --passalgo hash / crypt algorithm for new passwords -+# See the manual page for authconfig for a complete list of possible options. -+authconfig --enableshadow --passalgo=sha512 -+ -+# State of SELinux on the installed system (optional) -+# Defaults to enforcing -+selinux --enforcing -+ -+# Set the system time zone (required) -+timezone --utc America/New_York -+ -+# Specify how the bootloader should be installed (required) -+# Plaintext password is: password -+# Refer to e.g. https://pykickstart.readthedocs.io/en/latest/commands.html#rootpw to see how to create -+# encrypted password form for different plaintext password -+bootloader --location=mbr --append="crashkernel=auto rhgb quiet" --password=$6$zCPaBARiNlBYUAS7$40phthWpqvaPVz3QUeIK6n5qoazJDJD5Nlc9OKy5SyYoX9Rt4jFaLjzqJCwpgR4RVAEFSADsqQot0WKs5qNto0 -+ -+# Initialize (format) all disks (optional) -+zerombr -+ -+# The following partition layout scheme assumes disk of size 20GB or larger -+# Modify size of partitions appropriately to reflect actual machine's hardware -+# -+# Remove Linux partitions from the system prior to creating new ones (optional) -+# --linux erase all Linux partitions -+# --initlabel initialize the disk label to the default based on the underlying architecture -+clearpart --linux --initlabel -+ -+# Create primary system partitions (required for installs) -+part /boot --fstype=xfs --size=512 -+part pv.01 --grow --size=1 -+ -+# Create a Logical Volume Management (LVM) group (optional) -+volgroup VolGroup --pesize=4096 pv.01 -+ -+# Create particular logical volumes (optional) -+logvol / --fstype=xfs --name=LogVol06 --vgname=VolGroup --size=11264 --grow -+# Ensure /home Located On Separate Partition -+logvol /home --fstype=xfs --name=LogVol02 --vgname=VolGroup --size=1024 --fsoptions="nodev" -+# Ensure /tmp Located On Separate Partition -+logvol /tmp --fstype=xfs --name=LogVol01 --vgname=VolGroup --size=1024 --fsoptions="nodev,noexec,nosuid" -+# Ensure /var/tmp Located On Separate Partition -+logvol /var/tmp --fstype=xfs --name=LogVol7 --vgname=VolGroup --size=1024 --fsoptions="nodev,nosuid,noexec" -+# Ensure /var Located On Separate Partition -+logvol /var --fstype=xfs --name=LogVol03 --vgname=VolGroup --size=2048 -+# Ensure /var/log Located On Separate Partition -+logvol /var/log --fstype=xfs --name=LogVol04 --vgname=VolGroup --size=1024 -+# Ensure /var/log/audit Located On Separate Partition -+logvol /var/log/audit --fstype=xfs --name=LogVol05 --vgname=VolGroup --size=512 -+logvol swap --name=lv_swap --vgname=VolGroup --size=2016 -+ -+ -+ -+# Harden installation with CIS profile -+# For more details and configuration options see command %addon org_fedora_oscap in -+# https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/installation_guide/sect-kickstart-syntax#sect-kickstart-commands -+%addon org_fedora_oscap -+ content-type = scap-security-guide -+ profile = xccdf_org.ssgproject.content_profile_cis_workstation_l2 -+%end -+ -+# Packages selection (%packages section is required) -+%packages -+ -+# Require @Base -+@Base -+ -+%end # End of %packages section -+ -+# Reboot after the installation is complete (optional) -+# --eject attempt to eject CD or DVD media before rebooting -+reboot --eject - -From 92e84a2c1b302291aa8ffbc08ae3e4ffabd5dfe7 Mon Sep 17 00:00:00 2001 -From: Gabriel Becker -Date: Wed, 18 Aug 2021 14:24:34 +0200 -Subject: [PATCH 2/2] Fix typo in the CIS kickstart -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Co-authored-by: Jan Černý ---- - products/rhel7/kickstart/ssg-rhel7-cis-ks.cfg | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/products/rhel7/kickstart/ssg-rhel7-cis-ks.cfg b/products/rhel7/kickstart/ssg-rhel7-cis-ks.cfg -index 00edb9d536c..7062e2974ad 100644 ---- a/products/rhel7/kickstart/ssg-rhel7-cis-ks.cfg -+++ b/products/rhel7/kickstart/ssg-rhel7-cis-ks.cfg -@@ -1,4 +1,4 @@ --# SCAP Security Guide CIS profile (Leve 2 - Server) kickstart for Red Hat Enterprise Linux 7 Server -+# SCAP Security Guide CIS profile (Level 2 - Server) kickstart for Red Hat Enterprise Linux 7 Server - # Version: 0.0.1 - # Date: 2021-08-12 - # diff --git a/SOURCES/scap-security-guide-0.1.58-rhel8_cis_identifier_update_1-PR_7356.patch b/SOURCES/scap-security-guide-0.1.58-rhel8_cis_identifier_update_1-PR_7356.patch deleted file mode 100644 index 05430fe..0000000 --- a/SOURCES/scap-security-guide-0.1.58-rhel8_cis_identifier_update_1-PR_7356.patch +++ /dev/null @@ -1,302 +0,0 @@ -From 5f8264ed7c5580fdd013810a713ab9b3b296bf4a Mon Sep 17 00:00:00 2001 -From: Alex Haydock -Date: Mon, 9 Aug 2021 11:46:22 +0100 -Subject: [PATCH] Update RHEL 8 CIS references to match benchmark 1.0.1 - ---- - .../file_groupowner_backup_etc_group/rule.yml | 2 +- - .../file_groupowner_backup_etc_gshadow/rule.yml | 2 +- - .../file_groupowner_backup_etc_passwd/rule.yml | 2 +- - .../file_groupowner_backup_etc_shadow/rule.yml | 2 +- - .../file_groupowner_etc_group/rule.yml | 2 +- - .../file_groupowner_etc_gshadow/rule.yml | 2 +- - .../file_groupowner_etc_shadow/rule.yml | 2 +- - .../file_owner_backup_etc_group/rule.yml | 2 +- - .../file_owner_backup_etc_gshadow/rule.yml | 2 +- - .../file_owner_backup_etc_passwd/rule.yml | 2 +- - .../file_owner_backup_etc_shadow/rule.yml | 2 +- - .../file_owner_etc_group/rule.yml | 2 +- - .../file_owner_etc_gshadow/rule.yml | 2 +- - .../file_owner_etc_shadow/rule.yml | 2 +- - .../file_permissions_backup_etc_group/rule.yml | 2 +- - .../file_permissions_backup_etc_gshadow/rule.yml | 2 +- - .../file_permissions_backup_etc_passwd/rule.yml | 2 +- - .../file_permissions_backup_etc_shadow/rule.yml | 2 +- - .../file_permissions_etc_group/rule.yml | 2 +- - .../file_permissions_etc_gshadow/rule.yml | 2 +- - .../file_permissions_etc_shadow/rule.yml | 2 +- - 21 files changed, 21 insertions(+), 21 deletions(-) - -diff --git a/linux_os/guide/system/permissions/files/permissions_important_account_files/file_groupowner_backup_etc_group/rule.yml b/linux_os/guide/system/permissions/files/permissions_important_account_files/file_groupowner_backup_etc_group/rule.yml -index c4a7f19b94..fdbdbb08ad 100644 ---- a/linux_os/guide/system/permissions/files/permissions_important_account_files/file_groupowner_backup_etc_group/rule.yml -+++ b/linux_os/guide/system/permissions/files/permissions_important_account_files/file_groupowner_backup_etc_group/rule.yml -@@ -18,7 +18,7 @@ identifiers: - - references: - cis@rhel7: 6.1.9 -- cis@rhel8: 6.1.8 -+ cis@rhel8: 6.1.9 - cis@ubuntu2004: 6.1.8 - - ocil_clause: '{{{ ocil_clause_file_group_owner(file="/etc/group-", group="root") }}}' -diff --git a/linux_os/guide/system/permissions/files/permissions_important_account_files/file_groupowner_backup_etc_gshadow/rule.yml b/linux_os/guide/system/permissions/files/permissions_important_account_files/file_groupowner_backup_etc_gshadow/rule.yml -index 5348e80954..f1f7c7a4d6 100644 ---- a/linux_os/guide/system/permissions/files/permissions_important_account_files/file_groupowner_backup_etc_gshadow/rule.yml -+++ b/linux_os/guide/system/permissions/files/permissions_important_account_files/file_groupowner_backup_etc_gshadow/rule.yml -@@ -23,7 +23,7 @@ identifiers: - - references: - cis@rhel7: 6.1.6 -- cis@rhel8: 6.1.9 -+ cis@rhel8: 6.1.7 - cis@ubuntu2004: 6.1.3 - - ocil_clause: '{{{ ocil_clause_file_group_owner(file="/etc/gshadow-", group=target_group) }}}' -diff --git a/linux_os/guide/system/permissions/files/permissions_important_account_files/file_groupowner_backup_etc_passwd/rule.yml b/linux_os/guide/system/permissions/files/permissions_important_account_files/file_groupowner_backup_etc_passwd/rule.yml -index 170f6412cf..26ff82fb51 100644 ---- a/linux_os/guide/system/permissions/files/permissions_important_account_files/file_groupowner_backup_etc_passwd/rule.yml -+++ b/linux_os/guide/system/permissions/files/permissions_important_account_files/file_groupowner_backup_etc_passwd/rule.yml -@@ -18,7 +18,7 @@ identifiers: - - references: - cis@rhel7: 6.1.3 -- cis@rhel8: 6.1.6 -+ cis@rhel8: 6.1.3 - cis@ubuntu2004: 6.1.6 - - ocil_clause: '{{{ ocil_clause_file_group_owner(file="/etc/passwd-", group="root") }}}' -diff --git a/linux_os/guide/system/permissions/files/permissions_important_account_files/file_groupowner_backup_etc_shadow/rule.yml b/linux_os/guide/system/permissions/files/permissions_important_account_files/file_groupowner_backup_etc_shadow/rule.yml -index ce50f98e3f..07a3d919e2 100644 ---- a/linux_os/guide/system/permissions/files/permissions_important_account_files/file_groupowner_backup_etc_shadow/rule.yml -+++ b/linux_os/guide/system/permissions/files/permissions_important_account_files/file_groupowner_backup_etc_shadow/rule.yml -@@ -24,7 +24,7 @@ identifiers: - - references: - cis@rhel7: 6.1.5 -- cis@rhel8: 6.1.7 -+ cis@rhel8: 6.1.5 - cis@ubuntu2004: 6.1.7 - - ocil_clause: '{{{ ocil_clause_file_group_owner(file="/etc/shadow-", group=target_group) }}}' -diff --git a/linux_os/guide/system/permissions/files/permissions_important_account_files/file_groupowner_etc_group/rule.yml b/linux_os/guide/system/permissions/files/permissions_important_account_files/file_groupowner_etc_group/rule.yml -index 050dd198c3..7c3c3ac1d2 100644 ---- a/linux_os/guide/system/permissions/files/permissions_important_account_files/file_groupowner_etc_group/rule.yml -+++ b/linux_os/guide/system/permissions/files/permissions_important_account_files/file_groupowner_etc_group/rule.yml -@@ -18,7 +18,7 @@ identifiers: - references: - cis-csc: 12,13,14,15,16,18,3,5 - cis@rhel7: 6.1.8 -- cis@rhel8: 6.1.4 -+ cis@rhel8: 6.1.8 - cis@ubuntu2004: 6.1.5 - cjis: 5.5.2.2 - cobit5: APO01.06,DSS05.04,DSS05.07,DSS06.02 -diff --git a/linux_os/guide/system/permissions/files/permissions_important_account_files/file_groupowner_etc_gshadow/rule.yml b/linux_os/guide/system/permissions/files/permissions_important_account_files/file_groupowner_etc_gshadow/rule.yml -index 4d4e3ff788..ca65dbc5af 100644 ---- a/linux_os/guide/system/permissions/files/permissions_important_account_files/file_groupowner_etc_gshadow/rule.yml -+++ b/linux_os/guide/system/permissions/files/permissions_important_account_files/file_groupowner_etc_gshadow/rule.yml -@@ -24,7 +24,7 @@ identifiers: - references: - cis-csc: 12,13,14,15,16,18,3,5 - cis@rhel7: 6.1.7 -- cis@rhel8: 6.1.5 -+ cis@rhel8: 6.1.6 - cis@ubuntu2004: 6.1.9 - cobit5: APO01.06,DSS05.04,DSS05.07,DSS06.02 - isa-62443-2009: 4.3.3.7.3 -diff --git a/linux_os/guide/system/permissions/files/permissions_important_account_files/file_groupowner_etc_shadow/rule.yml b/linux_os/guide/system/permissions/files/permissions_important_account_files/file_groupowner_etc_shadow/rule.yml -index 2af088f528..d59a34ef04 100644 ---- a/linux_os/guide/system/permissions/files/permissions_important_account_files/file_groupowner_etc_shadow/rule.yml -+++ b/linux_os/guide/system/permissions/files/permissions_important_account_files/file_groupowner_etc_shadow/rule.yml -@@ -24,7 +24,7 @@ identifiers: - references: - cis-csc: 12,13,14,15,16,18,3,5 - cis@rhel7: 6.1.4 -- cis@rhel8: 6.1.3 -+ cis@rhel8: 6.1.4 - cis@ubuntu2004: 6.1.4 - cjis: 5.5.2.2 - cobit5: APO01.06,DSS05.04,DSS05.07,DSS06.02 -diff --git a/linux_os/guide/system/permissions/files/permissions_important_account_files/file_owner_backup_etc_group/rule.yml b/linux_os/guide/system/permissions/files/permissions_important_account_files/file_owner_backup_etc_group/rule.yml -index 9021403357..2f2f475abf 100644 ---- a/linux_os/guide/system/permissions/files/permissions_important_account_files/file_owner_backup_etc_group/rule.yml -+++ b/linux_os/guide/system/permissions/files/permissions_important_account_files/file_owner_backup_etc_group/rule.yml -@@ -18,7 +18,7 @@ identifiers: - - references: - cis@rhel7: 6.1.9 -- cis@rhel8: 6.1.8 -+ cis@rhel8: 6.1.9 - cis@ubuntu2004: 6.1.8 - - ocil_clause: '{{{ ocil_clause_file_owner(file="/etc/group-", owner="root") }}}' -diff --git a/linux_os/guide/system/permissions/files/permissions_important_account_files/file_owner_backup_etc_gshadow/rule.yml b/linux_os/guide/system/permissions/files/permissions_important_account_files/file_owner_backup_etc_gshadow/rule.yml -index 3f25afef5f..afbcd11696 100644 ---- a/linux_os/guide/system/permissions/files/permissions_important_account_files/file_owner_backup_etc_gshadow/rule.yml -+++ b/linux_os/guide/system/permissions/files/permissions_important_account_files/file_owner_backup_etc_gshadow/rule.yml -@@ -17,7 +17,7 @@ identifiers: - - references: - cis@rhel7: 6.1.6 -- cis@rhel8: 6.1.9 -+ cis@rhel8: 6.1.7 - cis@ubuntu2004: 6.1.3 - - ocil_clause: '{{{ ocil_clause_file_owner(file="/etc/gshadow-", owner="root") }}}' -diff --git a/linux_os/guide/system/permissions/files/permissions_important_account_files/file_owner_backup_etc_passwd/rule.yml b/linux_os/guide/system/permissions/files/permissions_important_account_files/file_owner_backup_etc_passwd/rule.yml -index d16f370572..8a3af3ae70 100644 ---- a/linux_os/guide/system/permissions/files/permissions_important_account_files/file_owner_backup_etc_passwd/rule.yml -+++ b/linux_os/guide/system/permissions/files/permissions_important_account_files/file_owner_backup_etc_passwd/rule.yml -@@ -18,7 +18,7 @@ identifiers: - - references: - cis@rhel7: 6.1.3 -- cis@rhel8: 6.1.6 -+ cis@rhel8: 6.1.3 - cis@ubuntu2004: 6.1.6 - - ocil_clause: '{{{ ocil_clause_file_owner(file="/etc/passwd-", owner="root") }}}' -diff --git a/linux_os/guide/system/permissions/files/permissions_important_account_files/file_owner_backup_etc_shadow/rule.yml b/linux_os/guide/system/permissions/files/permissions_important_account_files/file_owner_backup_etc_shadow/rule.yml -index 7ef757c006..508bc355c3 100644 ---- a/linux_os/guide/system/permissions/files/permissions_important_account_files/file_owner_backup_etc_shadow/rule.yml -+++ b/linux_os/guide/system/permissions/files/permissions_important_account_files/file_owner_backup_etc_shadow/rule.yml -@@ -18,7 +18,7 @@ identifiers: - - references: - cis@rhel7: 6.1.5 -- cis@rhel8: 6.1.7 -+ cis@rhel8: 6.1.5 - cis@ubuntu2004: 6.1.7 - - ocil_clause: '{{{ ocil_clause_file_owner(file="/etc/shadow-", owner="root") }}}' -diff --git a/linux_os/guide/system/permissions/files/permissions_important_account_files/file_owner_etc_group/rule.yml b/linux_os/guide/system/permissions/files/permissions_important_account_files/file_owner_etc_group/rule.yml -index 90fd7b08eb..8e2cb53c67 100644 ---- a/linux_os/guide/system/permissions/files/permissions_important_account_files/file_owner_etc_group/rule.yml -+++ b/linux_os/guide/system/permissions/files/permissions_important_account_files/file_owner_etc_group/rule.yml -@@ -18,7 +18,7 @@ identifiers: - references: - cis-csc: 12,13,14,15,16,18,3,5 - cis@rhel7: 6.1.8 -- cis@rhel8: 6.1.4 -+ cis@rhel8: 6.1.8 - cis@sle15: 6.1.6 - cis@ubuntu2004: 6.1.5 - cjis: 5.5.2.2 -diff --git a/linux_os/guide/system/permissions/files/permissions_important_account_files/file_owner_etc_gshadow/rule.yml b/linux_os/guide/system/permissions/files/permissions_important_account_files/file_owner_etc_gshadow/rule.yml -index cb16d61e88..fb91cee6d7 100644 ---- a/linux_os/guide/system/permissions/files/permissions_important_account_files/file_owner_etc_gshadow/rule.yml -+++ b/linux_os/guide/system/permissions/files/permissions_important_account_files/file_owner_etc_gshadow/rule.yml -@@ -19,7 +19,7 @@ references: - anssi: BP28(R36) - cis-csc: 12,13,14,15,16,18,3,5 - cis@rhel7: 6.1.7 -- cis@rhel8: 6.1.5 -+ cis@rhel8: 6.1.6 - cis@ubuntu2004: 6.1.9 - cobit5: APO01.06,DSS05.04,DSS05.07,DSS06.02 - isa-62443-2009: 4.3.3.7.3 -diff --git a/linux_os/guide/system/permissions/files/permissions_important_account_files/file_owner_etc_shadow/rule.yml b/linux_os/guide/system/permissions/files/permissions_important_account_files/file_owner_etc_shadow/rule.yml -index 7c56014953..1099e5e7cc 100644 ---- a/linux_os/guide/system/permissions/files/permissions_important_account_files/file_owner_etc_shadow/rule.yml -+++ b/linux_os/guide/system/permissions/files/permissions_important_account_files/file_owner_etc_shadow/rule.yml -@@ -22,7 +22,7 @@ references: - anssi: BP28(R36) - cis-csc: 12,13,14,15,16,18,3,5 - cis@rhel7: 6.1.4 -- cis@rhel8: 6.1.3 -+ cis@rhel8: 6.1.4 - cis@ubuntu2004: 6.1.4 - cjis: 5.5.2.2 - cobit5: APO01.06,DSS05.04,DSS05.07,DSS06.02 -diff --git a/linux_os/guide/system/permissions/files/permissions_important_account_files/file_permissions_backup_etc_group/rule.yml b/linux_os/guide/system/permissions/files/permissions_important_account_files/file_permissions_backup_etc_group/rule.yml -index 11f3818332..5d165a606e 100644 ---- a/linux_os/guide/system/permissions/files/permissions_important_account_files/file_permissions_backup_etc_group/rule.yml -+++ b/linux_os/guide/system/permissions/files/permissions_important_account_files/file_permissions_backup_etc_group/rule.yml -@@ -19,7 +19,7 @@ identifiers: - - references: - cis@rhel7: 6.1.9 -- cis@rhel8: 6.1.8 -+ cis@rhel8: 6.1.9 - cis@sle15: 6.1.9 - cis@ubuntu2004: 6.1.8 - -diff --git a/linux_os/guide/system/permissions/files/permissions_important_account_files/file_permissions_backup_etc_gshadow/rule.yml b/linux_os/guide/system/permissions/files/permissions_important_account_files/file_permissions_backup_etc_gshadow/rule.yml -index 05208fee37..9fd8981485 100644 ---- a/linux_os/guide/system/permissions/files/permissions_important_account_files/file_permissions_backup_etc_gshadow/rule.yml -+++ b/linux_os/guide/system/permissions/files/permissions_important_account_files/file_permissions_backup_etc_gshadow/rule.yml -@@ -26,7 +26,7 @@ identifiers: - - references: - cis@rhel7: 6.1.6 -- cis@rhel8: 6.1.9 -+ cis@rhel8: 6.1.7 - cis@sle15: 6.1.3 - cis@ubuntu2004: 6.1.3 - -diff --git a/linux_os/guide/system/permissions/files/permissions_important_account_files/file_permissions_backup_etc_passwd/rule.yml b/linux_os/guide/system/permissions/files/permissions_important_account_files/file_permissions_backup_etc_passwd/rule.yml -index 6de0c5f703..67191c872d 100644 ---- a/linux_os/guide/system/permissions/files/permissions_important_account_files/file_permissions_backup_etc_passwd/rule.yml -+++ b/linux_os/guide/system/permissions/files/permissions_important_account_files/file_permissions_backup_etc_passwd/rule.yml -@@ -19,7 +19,7 @@ identifiers: - - references: - cis@rhel7: 6.1.3 -- cis@rhel8: 6.1.6 -+ cis@rhel8: 6.1.3 - cis@sle15: 6.1.7 - cis@ubuntu2004: 6.1.6 - -diff --git a/linux_os/guide/system/permissions/files/permissions_important_account_files/file_permissions_backup_etc_shadow/rule.yml b/linux_os/guide/system/permissions/files/permissions_important_account_files/file_permissions_backup_etc_shadow/rule.yml -index c9a4fce34c..685427c0a0 100644 ---- a/linux_os/guide/system/permissions/files/permissions_important_account_files/file_permissions_backup_etc_shadow/rule.yml -+++ b/linux_os/guide/system/permissions/files/permissions_important_account_files/file_permissions_backup_etc_shadow/rule.yml -@@ -27,7 +27,7 @@ identifiers: - - references: - cis@rhel7: 6.1.5 -- cis@rhel8: 6.1.7 -+ cis@rhel8: 6.1.5 - cis@sle15: 6.1.8 - cis@ubuntu2004: 6.1.7 - -diff --git a/linux_os/guide/system/permissions/files/permissions_important_account_files/file_permissions_etc_group/rule.yml b/linux_os/guide/system/permissions/files/permissions_important_account_files/file_permissions_etc_group/rule.yml -index 1333bcb57b..fbf650b26d 100644 ---- a/linux_os/guide/system/permissions/files/permissions_important_account_files/file_permissions_etc_group/rule.yml -+++ b/linux_os/guide/system/permissions/files/permissions_important_account_files/file_permissions_etc_group/rule.yml -@@ -20,7 +20,7 @@ references: - anssi: BP28(R36) - cis-csc: 12,13,14,15,16,18,3,5 - cis@rhel7: 6.1.8 -- cis@rhel8: 6.1.4 -+ cis@rhel8: 6.1.8 - cis@sle15: 6.1.6 - cis@ubuntu2004: 6.1.5 - cjis: 5.5.2.2 -diff --git a/linux_os/guide/system/permissions/files/permissions_important_account_files/file_permissions_etc_gshadow/rule.yml b/linux_os/guide/system/permissions/files/permissions_important_account_files/file_permissions_etc_gshadow/rule.yml -index c9b3495381..02404617c1 100644 ---- a/linux_os/guide/system/permissions/files/permissions_important_account_files/file_permissions_etc_gshadow/rule.yml -+++ b/linux_os/guide/system/permissions/files/permissions_important_account_files/file_permissions_etc_gshadow/rule.yml -@@ -28,7 +28,7 @@ references: - anssi: BP28(R36) - cis-csc: 12,13,14,15,16,18,3,5 - cis@rhel7: 6.1.7 -- cis@rhel8: 6.1.5 -+ cis@rhel8: 6.1.6 - cis@sle15: 6.1.2 - cis@ubuntu2004: 6.1.9 - cobit5: APO01.06,DSS05.04,DSS05.07,DSS06.02 -diff --git a/linux_os/guide/system/permissions/files/permissions_important_account_files/file_permissions_etc_shadow/rule.yml b/linux_os/guide/system/permissions/files/permissions_important_account_files/file_permissions_etc_shadow/rule.yml -index acbc478ce9..ff4db782f0 100644 ---- a/linux_os/guide/system/permissions/files/permissions_important_account_files/file_permissions_etc_shadow/rule.yml -+++ b/linux_os/guide/system/permissions/files/permissions_important_account_files/file_permissions_etc_shadow/rule.yml -@@ -31,7 +31,7 @@ references: - anssi: BP28(R36) - cis-csc: 12,13,14,15,16,18,3,5 - cis@rhel7: 6.1.4 -- cis@rhel8: 6.1.3 -+ cis@rhel8: 6.1.4 - cis@sle15: 6.1.5 - cis@ubuntu2004: 6.1.4 - cjis: 5.5.2.2 diff --git a/SOURCES/scap-security-guide-0.1.58-rhel8_cis_kickstarts-PR_7383.patch b/SOURCES/scap-security-guide-0.1.58-rhel8_cis_kickstarts-PR_7383.patch deleted file mode 100644 index 28dcffd..0000000 --- a/SOURCES/scap-security-guide-0.1.58-rhel8_cis_kickstarts-PR_7383.patch +++ /dev/null @@ -1,455 +0,0 @@ -From b3dc8273ded33d8357239482cf07186b14e3cdd2 Mon Sep 17 00:00:00 2001 -From: Vojtech Polasek -Date: Thu, 12 Aug 2021 10:54:59 +0200 -Subject: [PATCH] add kickstarts for rhel8 CIS profiles - ---- - products/rhel8/kickstart/ssg-rhel8-cis-ks.cfg | 4 +- - .../kickstart/ssg-rhel8-cis_server_l1-ks.cfg | 133 ++++++++++++++++ - .../ssg-rhel8-cis_workstation_l1-ks.cfg | 133 ++++++++++++++++ - .../ssg-rhel8-cis_workstation_l2-ks.cfg | 143 ++++++++++++++++++ - 4 files changed, 411 insertions(+), 2 deletions(-) - create mode 100644 products/rhel8/kickstart/ssg-rhel8-cis_server_l1-ks.cfg - create mode 100644 products/rhel8/kickstart/ssg-rhel8-cis_workstation_l1-ks.cfg - create mode 100644 products/rhel8/kickstart/ssg-rhel8-cis_workstation_l2-ks.cfg - -diff --git a/products/rhel8/kickstart/ssg-rhel8-cis-ks.cfg b/products/rhel8/kickstart/ssg-rhel8-cis-ks.cfg -index c3f31429036..d1bbb09c422 100644 ---- a/products/rhel8/kickstart/ssg-rhel8-cis-ks.cfg -+++ b/products/rhel8/kickstart/ssg-rhel8-cis-ks.cfg -@@ -1,6 +1,6 @@ --# SCAP Security Guide CIS profile kickstart for Red Hat Enterprise Linux 8 Server -+# SCAP Security Guide CIS profile (Level 2 - Server) kickstart for Red Hat Enterprise Linux 8 Server - # Version: 0.0.1 --# Date: 2020-03-30 -+# Date: 2021-08-12 - # - # Based on: - # https://pykickstart.readthedocs.io/en/latest/ -diff --git a/products/rhel8/kickstart/ssg-rhel8-cis_server_l1-ks.cfg b/products/rhel8/kickstart/ssg-rhel8-cis_server_l1-ks.cfg -new file mode 100644 -index 00000000000..b73d5c12d21 ---- /dev/null -+++ b/products/rhel8/kickstart/ssg-rhel8-cis_server_l1-ks.cfg -@@ -0,0 +1,133 @@ -+# SCAP Security Guide CIS profile (Level 1 - Server) kickstart for Red Hat Enterprise Linux 8 Server -+# Version: 0.0.1 -+# Date: 2021-08-12 -+# -+# Based on: -+# https://pykickstart.readthedocs.io/en/latest/ -+# https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-single/performing_an_advanced_rhel_installation/index#performing_an_automated_installation_using_kickstart -+ -+# Specify installation method to use for installation -+# To use a different one comment out the 'url' one below, update -+# the selected choice with proper options & un-comment it -+# -+# Install from an installation tree on a remote server via FTP or HTTP: -+# --url the URL to install from -+# -+# Example: -+# -+# url --url=http://192.168.122.1/image -+# -+# Modify concrete URL in the above example appropriately to reflect the actual -+# environment machine is to be installed in -+# -+# Other possible / supported installation methods: -+# * install from the first CD-ROM/DVD drive on the system: -+# -+# cdrom -+# -+# * install from a directory of ISO images on a local drive: -+# -+# harddrive --partition=hdb2 --dir=/tmp/install-tree -+# -+# * install from provided NFS server: -+# -+# nfs --server= --dir= [--opts=] -+# -+ -+# Set language to use during installation and the default language to use on the installed system (required) -+lang en_US.UTF-8 -+ -+# Set system keyboard type / layout (required) -+keyboard us -+ -+# Configure network information for target system and activate network devices in the installer environment (optional) -+# --onboot enable device at a boot time -+# --device device to be activated and / or configured with the network command -+# --bootproto method to obtain networking configuration for device (default dhcp) -+# --noipv6 disable IPv6 on this device -+# -+# NOTE: Usage of DHCP will fail CCE-27021-5 (DISA FSO RHEL-06-000292). To use static IP configuration, -+# "--bootproto=static" must be used. For example: -+# network --bootproto=static --ip=10.0.2.15 --netmask=255.255.255.0 --gateway=10.0.2.254 --nameserver 192.168.2.1,192.168.3.1 -+# -+network --onboot yes --device eth0 --bootproto dhcp --noipv6 -+ -+# Set the system's root password (required) -+# Plaintext password is: server -+# Refer to e.g. https://pykickstart.readthedocs.io/en/latest/commands.html#rootpw to see how to create -+# encrypted password form for different plaintext password -+rootpw --iscrypted $6$/0RYeeRdK70ynvYz$jH2ZN/80HM6DjndHMxfUF9KIibwipitvizzXDH1zW.fTjyD3RD3tkNdNUaND18B/XqfAUW3vy1uebkBybCuIm0 -+ -+# The selected profile will restrict root login -+# Add a user that can login and escalate privileges -+# Plaintext password is: admin123 -+user --name=admin --groups=wheel --password=$6$Ga6ZnIlytrWpuCzO$q0LqT1USHpahzUafQM9jyHCY9BiE5/ahXLNWUMiVQnFGblu0WWGZ1e6icTaCGO4GNgZNtspp1Let/qpM7FMVB0 --iscrypted -+ -+# Configure firewall settings for the system (optional) -+# --enabled reject incoming connections that are not in response to outbound requests -+# --ssh allow sshd service through the firewall -+firewall --enabled --ssh -+ -+# Set up the authentication options for the system (required) -+# sssd profile sets sha512 to hash passwords -+# passwords are shadowed by default -+# See the manual page for authselect-profile for a complete list of possible options. -+authselect select sssd -+ -+# State of SELinux on the installed system (optional) -+# Defaults to enforcing -+selinux --enforcing -+ -+# Set the system time zone (required) -+timezone --utc America/New_York -+ -+# Specify how the bootloader should be installed (required) -+# Plaintext password is: password -+# Refer to e.g. https://pykickstart.readthedocs.io/en/latest/commands.html#rootpw to see how to create -+# encrypted password form for different plaintext password -+bootloader --location=mbr --append="crashkernel=auto rhgb quiet" --password=$6$zCPaBARiNlBYUAS7$40phthWpqvaPVz3QUeIK6n5qoazJDJD5Nlc9OKy5SyYoX9Rt4jFaLjzqJCwpgR4RVAEFSADsqQot0WKs5qNto0 -+ -+# Initialize (format) all disks (optional) -+zerombr -+ -+# The following partition layout scheme assumes disk of size 20GB or larger -+# Modify size of partitions appropriately to reflect actual machine's hardware -+# -+# Remove Linux partitions from the system prior to creating new ones (optional) -+# --linux erase all Linux partitions -+# --initlabel initialize the disk label to the default based on the underlying architecture -+clearpart --linux --initlabel -+ -+# Create primary system partitions (required for installs) -+part /boot --fstype=xfs --size=512 -+part pv.01 --grow --size=1 -+ -+# Create a Logical Volume Management (LVM) group (optional) -+volgroup VolGroup --pesize=4096 pv.01 -+ -+# Create particular logical volumes (optional) -+logvol / --fstype=xfs --name=LogVol06 --vgname=VolGroup --size=10240 --grow -+# Ensure /tmp Located On Separate Partition -+logvol /tmp --fstype=xfs --name=LogVol01 --vgname=VolGroup --size=1024 --fsoptions="nodev,noexec,nosuid" -+logvol swap --name=lv_swap --vgname=VolGroup --size=2016 -+ -+ -+# Harden installation with CIS profile -+# For more details and configuration options see -+# https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-single/performing_an_advanced_rhel_installation/index#addon-org_fedora_oscap_kickstart-commands-for-addons-supplied-with-the-rhel-installation-program -+%addon org_fedora_oscap -+ content-type = scap-security-guide -+ profile = xccdf_org.ssgproject.content_profile_cis_server_l1 -+%end -+ -+# Packages selection (%packages section is required) -+%packages -+ -+# Require @Base -+@Base -+ -+%end # End of %packages section -+ -+# Reboot after the installation is complete (optional) -+# --eject attempt to eject CD or DVD media before rebooting -+reboot --eject -diff --git a/products/rhel8/kickstart/ssg-rhel8-cis_workstation_l1-ks.cfg b/products/rhel8/kickstart/ssg-rhel8-cis_workstation_l1-ks.cfg -new file mode 100644 -index 00000000000..33bd9dd2560 ---- /dev/null -+++ b/products/rhel8/kickstart/ssg-rhel8-cis_workstation_l1-ks.cfg -@@ -0,0 +1,133 @@ -+# SCAP Security Guide CIS profile (Level 1 - Workstation) kickstart for Red Hat Enterprise Linux 8 Server -+# Version: 0.0.1 -+# Date: 2021-08-12 -+# -+# Based on: -+# https://pykickstart.readthedocs.io/en/latest/ -+# https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-single/performing_an_advanced_rhel_installation/index#performing_an_automated_installation_using_kickstart -+ -+# Specify installation method to use for installation -+# To use a different one comment out the 'url' one below, update -+# the selected choice with proper options & un-comment it -+# -+# Install from an installation tree on a remote server via FTP or HTTP: -+# --url the URL to install from -+# -+# Example: -+# -+# url --url=http://192.168.122.1/image -+# -+# Modify concrete URL in the above example appropriately to reflect the actual -+# environment machine is to be installed in -+# -+# Other possible / supported installation methods: -+# * install from the first CD-ROM/DVD drive on the system: -+# -+# cdrom -+# -+# * install from a directory of ISO images on a local drive: -+# -+# harddrive --partition=hdb2 --dir=/tmp/install-tree -+# -+# * install from provided NFS server: -+# -+# nfs --server= --dir= [--opts=] -+# -+ -+# Set language to use during installation and the default language to use on the installed system (required) -+lang en_US.UTF-8 -+ -+# Set system keyboard type / layout (required) -+keyboard us -+ -+# Configure network information for target system and activate network devices in the installer environment (optional) -+# --onboot enable device at a boot time -+# --device device to be activated and / or configured with the network command -+# --bootproto method to obtain networking configuration for device (default dhcp) -+# --noipv6 disable IPv6 on this device -+# -+# NOTE: Usage of DHCP will fail CCE-27021-5 (DISA FSO RHEL-06-000292). To use static IP configuration, -+# "--bootproto=static" must be used. For example: -+# network --bootproto=static --ip=10.0.2.15 --netmask=255.255.255.0 --gateway=10.0.2.254 --nameserver 192.168.2.1,192.168.3.1 -+# -+network --onboot yes --device eth0 --bootproto dhcp --noipv6 -+ -+# Set the system's root password (required) -+# Plaintext password is: server -+# Refer to e.g. https://pykickstart.readthedocs.io/en/latest/commands.html#rootpw to see how to create -+# encrypted password form for different plaintext password -+rootpw --iscrypted $6$/0RYeeRdK70ynvYz$jH2ZN/80HM6DjndHMxfUF9KIibwipitvizzXDH1zW.fTjyD3RD3tkNdNUaND18B/XqfAUW3vy1uebkBybCuIm0 -+ -+# The selected profile will restrict root login -+# Add a user that can login and escalate privileges -+# Plaintext password is: admin123 -+user --name=admin --groups=wheel --password=$6$Ga6ZnIlytrWpuCzO$q0LqT1USHpahzUafQM9jyHCY9BiE5/ahXLNWUMiVQnFGblu0WWGZ1e6icTaCGO4GNgZNtspp1Let/qpM7FMVB0 --iscrypted -+ -+# Configure firewall settings for the system (optional) -+# --enabled reject incoming connections that are not in response to outbound requests -+# --ssh allow sshd service through the firewall -+firewall --enabled --ssh -+ -+# Set up the authentication options for the system (required) -+# sssd profile sets sha512 to hash passwords -+# passwords are shadowed by default -+# See the manual page for authselect-profile for a complete list of possible options. -+authselect select sssd -+ -+# State of SELinux on the installed system (optional) -+# Defaults to enforcing -+selinux --enforcing -+ -+# Set the system time zone (required) -+timezone --utc America/New_York -+ -+# Specify how the bootloader should be installed (required) -+# Plaintext password is: password -+# Refer to e.g. https://pykickstart.readthedocs.io/en/latest/commands.html#rootpw to see how to create -+# encrypted password form for different plaintext password -+bootloader --location=mbr --append="crashkernel=auto rhgb quiet" --password=$6$zCPaBARiNlBYUAS7$40phthWpqvaPVz3QUeIK6n5qoazJDJD5Nlc9OKy5SyYoX9Rt4jFaLjzqJCwpgR4RVAEFSADsqQot0WKs5qNto0 -+ -+# Initialize (format) all disks (optional) -+zerombr -+ -+# The following partition layout scheme assumes disk of size 20GB or larger -+# Modify size of partitions appropriately to reflect actual machine's hardware -+# -+# Remove Linux partitions from the system prior to creating new ones (optional) -+# --linux erase all Linux partitions -+# --initlabel initialize the disk label to the default based on the underlying architecture -+clearpart --linux --initlabel -+ -+# Create primary system partitions (required for installs) -+part /boot --fstype=xfs --size=512 -+part pv.01 --grow --size=1 -+ -+# Create a Logical Volume Management (LVM) group (optional) -+volgroup VolGroup --pesize=4096 pv.01 -+ -+# Create particular logical volumes (optional) -+logvol / --fstype=xfs --name=LogVol06 --vgname=VolGroup --size=10240 --grow -+# Ensure /tmp Located On Separate Partition -+logvol /tmp --fstype=xfs --name=LogVol01 --vgname=VolGroup --size=1024 --fsoptions="nodev,noexec,nosuid" -+logvol swap --name=lv_swap --vgname=VolGroup --size=2016 -+ -+ -+# Harden installation with CIS profile -+# For more details and configuration options see -+# https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-single/performing_an_advanced_rhel_installation/index#addon-org_fedora_oscap_kickstart-commands-for-addons-supplied-with-the-rhel-installation-program -+%addon org_fedora_oscap -+ content-type = scap-security-guide -+ profile = xccdf_org.ssgproject.content_profile_cis_workstation_l1 -+%end -+ -+# Packages selection (%packages section is required) -+%packages -+ -+# Require @Base -+@Base -+ -+%end # End of %packages section -+ -+# Reboot after the installation is complete (optional) -+# --eject attempt to eject CD or DVD media before rebooting -+reboot --eject -diff --git a/products/rhel8/kickstart/ssg-rhel8-cis_workstation_l2-ks.cfg b/products/rhel8/kickstart/ssg-rhel8-cis_workstation_l2-ks.cfg -new file mode 100644 -index 00000000000..79ca7fbc201 ---- /dev/null -+++ b/products/rhel8/kickstart/ssg-rhel8-cis_workstation_l2-ks.cfg -@@ -0,0 +1,143 @@ -+# SCAP Security Guide CIS profile (Level 2 - Workstation) kickstart for Red Hat Enterprise Linux 8 Server -+# Version: 0.0.1 -+# Date: 2021-08-12 -+# -+# Based on: -+# https://pykickstart.readthedocs.io/en/latest/ -+# https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-single/performing_an_advanced_rhel_installation/index#performing_an_automated_installation_using_kickstart -+ -+# Specify installation method to use for installation -+# To use a different one comment out the 'url' one below, update -+# the selected choice with proper options & un-comment it -+# -+# Install from an installation tree on a remote server via FTP or HTTP: -+# --url the URL to install from -+# -+# Example: -+# -+# url --url=http://192.168.122.1/image -+# -+# Modify concrete URL in the above example appropriately to reflect the actual -+# environment machine is to be installed in -+# -+# Other possible / supported installation methods: -+# * install from the first CD-ROM/DVD drive on the system: -+# -+# cdrom -+# -+# * install from a directory of ISO images on a local drive: -+# -+# harddrive --partition=hdb2 --dir=/tmp/install-tree -+# -+# * install from provided NFS server: -+# -+# nfs --server= --dir= [--opts=] -+# -+ -+# Set language to use during installation and the default language to use on the installed system (required) -+lang en_US.UTF-8 -+ -+# Set system keyboard type / layout (required) -+keyboard us -+ -+# Configure network information for target system and activate network devices in the installer environment (optional) -+# --onboot enable device at a boot time -+# --device device to be activated and / or configured with the network command -+# --bootproto method to obtain networking configuration for device (default dhcp) -+# --noipv6 disable IPv6 on this device -+# -+# NOTE: Usage of DHCP will fail CCE-27021-5 (DISA FSO RHEL-06-000292). To use static IP configuration, -+# "--bootproto=static" must be used. For example: -+# network --bootproto=static --ip=10.0.2.15 --netmask=255.255.255.0 --gateway=10.0.2.254 --nameserver 192.168.2.1,192.168.3.1 -+# -+network --onboot yes --device eth0 --bootproto dhcp --noipv6 -+ -+# Set the system's root password (required) -+# Plaintext password is: server -+# Refer to e.g. https://pykickstart.readthedocs.io/en/latest/commands.html#rootpw to see how to create -+# encrypted password form for different plaintext password -+rootpw --iscrypted $6$/0RYeeRdK70ynvYz$jH2ZN/80HM6DjndHMxfUF9KIibwipitvizzXDH1zW.fTjyD3RD3tkNdNUaND18B/XqfAUW3vy1uebkBybCuIm0 -+ -+# The selected profile will restrict root login -+# Add a user that can login and escalate privileges -+# Plaintext password is: admin123 -+user --name=admin --groups=wheel --password=$6$Ga6ZnIlytrWpuCzO$q0LqT1USHpahzUafQM9jyHCY9BiE5/ahXLNWUMiVQnFGblu0WWGZ1e6icTaCGO4GNgZNtspp1Let/qpM7FMVB0 --iscrypted -+ -+# Configure firewall settings for the system (optional) -+# --enabled reject incoming connections that are not in response to outbound requests -+# --ssh allow sshd service through the firewall -+firewall --enabled --ssh -+ -+# Set up the authentication options for the system (required) -+# sssd profile sets sha512 to hash passwords -+# passwords are shadowed by default -+# See the manual page for authselect-profile for a complete list of possible options. -+authselect select sssd -+ -+# State of SELinux on the installed system (optional) -+# Defaults to enforcing -+selinux --enforcing -+ -+# Set the system time zone (required) -+timezone --utc America/New_York -+ -+# Specify how the bootloader should be installed (required) -+# Plaintext password is: password -+# Refer to e.g. https://pykickstart.readthedocs.io/en/latest/commands.html#rootpw to see how to create -+# encrypted password form for different plaintext password -+bootloader --location=mbr --append="crashkernel=auto rhgb quiet" --password=$6$zCPaBARiNlBYUAS7$40phthWpqvaPVz3QUeIK6n5qoazJDJD5Nlc9OKy5SyYoX9Rt4jFaLjzqJCwpgR4RVAEFSADsqQot0WKs5qNto0 -+ -+# Initialize (format) all disks (optional) -+zerombr -+ -+# The following partition layout scheme assumes disk of size 20GB or larger -+# Modify size of partitions appropriately to reflect actual machine's hardware -+# -+# Remove Linux partitions from the system prior to creating new ones (optional) -+# --linux erase all Linux partitions -+# --initlabel initialize the disk label to the default based on the underlying architecture -+clearpart --linux --initlabel -+ -+# Create primary system partitions (required for installs) -+part /boot --fstype=xfs --size=512 -+part pv.01 --grow --size=1 -+ -+# Create a Logical Volume Management (LVM) group (optional) -+volgroup VolGroup --pesize=4096 pv.01 -+ -+# Create particular logical volumes (optional) -+logvol / --fstype=xfs --name=LogVol06 --vgname=VolGroup --size=10240 --grow -+# Ensure /home Located On Separate Partition -+logvol /home --fstype=xfs --name=LogVol02 --vgname=VolGroup --size=1024 --fsoptions="nodev" -+# Ensure /tmp Located On Separate Partition -+logvol /tmp --fstype=xfs --name=LogVol01 --vgname=VolGroup --size=1024 --fsoptions="nodev,noexec,nosuid" -+# Ensure /var/tmp Located On Separate Partition -+logvol /var/tmp --fstype=xfs --name=LogVol7 --vgname=VolGroup --size=1024 --fsoptions="nodev,nosuid,noexec" -+# Ensure /var Located On Separate Partition -+logvol /var --fstype=xfs --name=LogVol03 --vgname=VolGroup --size=3072 -+# Ensure /var/log Located On Separate Partition -+logvol /var/log --fstype=xfs --name=LogVol04 --vgname=VolGroup --size=1024 -+# Ensure /var/log/audit Located On Separate Partition -+logvol /var/log/audit --fstype=xfs --name=LogVol05 --vgname=VolGroup --size=512 -+logvol swap --name=lv_swap --vgname=VolGroup --size=2016 -+ -+ -+# Harden installation with CIS profile -+# For more details and configuration options see -+# https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-single/performing_an_advanced_rhel_installation/index#addon-org_fedora_oscap_kickstart-commands-for-addons-supplied-with-the-rhel-installation-program -+%addon org_fedora_oscap -+ content-type = scap-security-guide -+ profile = xccdf_org.ssgproject.content_profile_cis_workstation_l2 -+%end -+ -+# Packages selection (%packages section is required) -+%packages -+ -+# Require @Base -+@Base -+ -+%end # End of %packages section -+ -+# Reboot after the installation is complete (optional) -+# --eject attempt to eject CD or DVD media before rebooting -+reboot --eject diff --git a/SOURCES/scap-security-guide-0.1.58-rhel8_stig_08_010290-PR_7151.patch b/SOURCES/scap-security-guide-0.1.58-rhel8_stig_08_010290-PR_7151.patch deleted file mode 100644 index e1deac7..0000000 --- a/SOURCES/scap-security-guide-0.1.58-rhel8_stig_08_010290-PR_7151.patch +++ /dev/null @@ -1,687 +0,0 @@ -diff --git a/linux_os/guide/services/ssh/ssh_server/sshd_use_approved_macs_ordered_stig/rule.yml b/linux_os/guide/services/ssh/ssh_server/sshd_use_approved_macs_ordered_stig/rule.yml -index 194d7dfe2dc..b6c5e7f4b0d 100644 ---- a/linux_os/guide/services/ssh/ssh_server/sshd_use_approved_macs_ordered_stig/rule.yml -+++ b/linux_os/guide/services/ssh/ssh_server/sshd_use_approved_macs_ordered_stig/rule.yml -@@ -37,7 +37,7 @@ ocil: |- - MACs are in use, run the following command: -
      $ sudo grep -i macs /etc/ssh/sshd_config
      - The output should contain only following MACs (or a subset) in the exact order: --
      hmac-sha2-512,hmac-sha2-256
      -+
      MACs {{{ xccdf_value("sshd_approved_macs") }}}
      - - warnings: - - general: |- -diff --git a/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_openssh_conf_crypto_policy/ansible/shared.yml b/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_openssh_conf_crypto_policy/ansible/shared.yml -new file mode 100644 -index 00000000000..1c9dde77ee2 ---- /dev/null -+++ b/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_openssh_conf_crypto_policy/ansible/shared.yml -@@ -0,0 +1,16 @@ -+# platform = Red Hat Enterprise Linux 8,multi_platform_fedora -+# reboot = true -+# strategy = restrict -+# complexity = low -+# disruption = low -+{{{ ansible_instantiate_variables("sshd_approved_macs") }}} -+ -+{{{ ansible_set_config_file( -+ msg='Configure SSH Daemon to Use FIPS 140-2 Validated MACs: openssh.config', -+ file='/etc/crypto-policies/back-ends/openssh.config', -+ parameter='MACs', -+ value="{{ sshd_approved_macs }}", -+ create='yes', -+ prefix_regex='^.*' -+ ) -+}}} -diff --git a/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_openssh_conf_crypto_policy/bash/shared.sh b/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_openssh_conf_crypto_policy/bash/shared.sh -new file mode 100644 -index 00000000000..b26992ce183 ---- /dev/null -+++ b/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_openssh_conf_crypto_policy/bash/shared.sh -@@ -0,0 +1,13 @@ -+# platform = Red Hat Enterprise Linux 8,multi_platform_fedora -+. /usr/share/scap-security-guide/remediation_functions -+{{{ bash_instantiate_variables("sshd_approved_macs") }}} -+ -+{{{ set_config_file( -+ path="/etc/crypto-policies/back-ends/openssh.config", -+ parameter="MACs", -+ value="${sshd_approved_macs}", -+ create=true, -+ insensitive=false, -+ prefix_regex="^.*" -+ ) -+}}} -diff --git a/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_openssh_conf_crypto_policy/oval/shared.xml b/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_openssh_conf_crypto_policy/oval/shared.xml -new file mode 100644 -index 00000000000..5239af10612 ---- /dev/null -+++ b/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_openssh_conf_crypto_policy/oval/shared.xml -@@ -0,0 +1,35 @@ -+{{%- set PATH = "/etc/crypto-policies/back-ends/openssh.config" -%}} -+ -+ -+ {{{ oval_metadata("Limit the Message Authentication Codes (MACs) to those which are FIPS-approved.") }}} -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ {{{ PATH }}} -+ ^MACs.*$ -+ 1 -+ -+ -+ -+ -+ -+ -+ -+ -+ MACs -+ -+ -+ -+ -+ -+ -diff --git a/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_openssh_conf_crypto_policy/rule.yml b/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_openssh_conf_crypto_policy/rule.yml -new file mode 100644 -index 00000000000..1aeb987db2d ---- /dev/null -+++ b/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_openssh_conf_crypto_policy/rule.yml -@@ -0,0 +1,60 @@ -+documentation_complete: true -+ -+prodtype: fedora,rhel8 -+ -+title: 'Configure SSH Client to Use FIPS 140-2 Validated MACs: openssh.config' -+ -+description: |- -+ Crypto Policies provide a centralized control over crypto algorithms usage of many packages. -+ OpenSSH is supported by system crypto policy, but the OpenSSH configuration may be -+ set up incorrectly. -+ -+ To check that Crypto Policies settings are configured correctly, ensure that -+ /etc/crypto-policies/back-ends/openssh.config contains the following -+ line and is not commented out: -+ MACs hmac-sha2-512,hmac-sha2-256 -+ -+rationale: |- -+ Overriding the system crypto policy makes the behavior of the OpenSSH -+ client violate expectations, and makes system configuration more -+ fragmented. -+ -+severity: medium -+ -+identifiers: -+ cce@rhel8: CCE-85870-4 -+ -+references: -+ disa: CCI-001453 -+ nist: AC-17(2) -+ srg: SRG-OS-000250-GPOS-00093 -+ stigid@rhel8: RHEL-08-010290 -+ -+ocil_clause: 'Crypto Policy for OpenSSH client is not configured correctly' -+ -+ocil: |- -+ To verify if the OpenSSH client uses defined MACs in the Crypto Policy, run: -+
      $ grep -i macs /etc/crypto-policies/back-ends/openssh.config
      -+ and verify that the line matches: -+
      MACs hmac-sha2-512,hmac-sha2-256
      -+ -+warnings: -+ - general: |- -+ The system needs to be rebooted for these changes to take effect. -+ - regulatory: |- -+ System Crypto Modules must be provided by a vendor that undergoes -+ FIPS-140 certifications. -+ FIPS-140 is applicable to all Federal agencies that use -+ cryptographic-based security systems to protect sensitive information -+ in computer and telecommunication systems (including voice systems) as -+ defined in Section 5131 of the Information Technology Management Reform -+ Act of 1996, Public Law 104-106. This standard shall be used in -+ designing and implementing cryptographic modules that Federal -+ departments and agencies operate or are operated for them under -+ contract. See {{{ weblink(link="https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.140-2.pdf") }}} -+ To meet this, the system has to have cryptographic software provided by -+ a vendor that has undergone this certification. This means providing -+ documentation, test results, design information, and independent third -+ party review by an accredited lab. While open source software is -+ capable of meeting this, it does not meet FIPS-140 unless the vendor -+ submits to this process. -diff --git a/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_openssh_conf_crypto_policy/tests/stig_correct.pass.sh b/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_openssh_conf_crypto_policy/tests/stig_correct.pass.sh -new file mode 100644 -index 00000000000..5a4b6887cba ---- /dev/null -+++ b/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_openssh_conf_crypto_policy/tests/stig_correct.pass.sh -@@ -0,0 +1,15 @@ -+#!/bin/bash -+# platform = multi_platform_fedora,Red Hat Enterprise Linux 8 -+# profiles = xccdf_org.ssgproject.content_profile_stig -+ -+sshd_approved_macs=hmac-sha2-512,hmac-sha2-256 -+configfile=/etc/crypto-policies/back-ends/openssh.config -+ -+# Ensure directory + file is there -+test -d /etc/crypto-policies/back-ends || mkdir -p /etc/crypto-policies/back-ends -+ -+if [[ -f $configfile ]]; then -+ sed -i "s/^.*MACs.*$/MACs ${sshd_approved_macs}/" $configfile -+else -+ echo "MACs ${sshd_approved_macs}" > "$configfile" -+fi -diff --git a/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_openssh_conf_crypto_policy/tests/stig_correct_commented.fail.sh b/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_openssh_conf_crypto_policy/tests/stig_correct_commented.fail.sh -new file mode 100644 -index 00000000000..e713d254f9c ---- /dev/null -+++ b/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_openssh_conf_crypto_policy/tests/stig_correct_commented.fail.sh -@@ -0,0 +1,15 @@ -+#!/bin/bash -+# platform = multi_platform_fedora,Red Hat Enterprise Linux 8 -+# profiles = xccdf_org.ssgproject.content_profile_stig -+ -+sshd_approved_macs=hmac-sha2-512,hmac-sha2-256 -+configfile=/etc/crypto-policies/back-ends/openssh.config -+ -+# Ensure directory + file is there -+test -d /etc/crypto-policies/back-ends || mkdir -p /etc/crypto-policies/back-ends -+ -+if [[ -f $configfile ]]; then -+ sed -i "s/^.*MACs.*$/#MACs ${sshd_approved_macs}/" $configfile -+else -+ echo "#MACs ${sshd_approved_macs}" > "$configfile" -+fi -diff --git a/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_openssh_conf_crypto_policy/tests/stig_correct_followed_by_incorrect_commented.pass.sh b/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_openssh_conf_crypto_policy/tests/stig_correct_followed_by_incorrect_commented.pass.sh -new file mode 100644 -index 00000000000..b8a63bec194 ---- /dev/null -+++ b/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_openssh_conf_crypto_policy/tests/stig_correct_followed_by_incorrect_commented.pass.sh -@@ -0,0 +1,18 @@ -+#!/bin/bash -+# platform = multi_platform_fedora,Red Hat Enterprise Linux 8 -+# profiles = xccdf_org.ssgproject.content_profile_stig -+ -+sshd_approved_macs=hmac-sha2-512,hmac-sha2-256 -+configfile=/etc/crypto-policies/back-ends/openssh.config -+ -+# Ensure directory + file is there -+test -d /etc/crypto-policies/back-ends || mkdir -p /etc/crypto-policies/back-ends -+ -+if [[ -f $configfile ]]; then -+ sed -i "s/^.*MACs.*$/MACs ${sshd_approved_macs}/" $configfile -+else -+ echo "MACs ${sshd_approved_macs}" > "$configfile" -+fi -+ -+# follow up with incorrect -+echo "#MACs hmac-sha2-256-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha2-256,hmac-sha1,umac-128@openssh.com,hmac-sha2-512" >> $configfile -diff --git a/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_openssh_conf_crypto_policy/tests/stig_empty_file.fail.sh b/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_openssh_conf_crypto_policy/tests/stig_empty_file.fail.sh -new file mode 100644 -index 00000000000..55ef3f58422 ---- /dev/null -+++ b/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_openssh_conf_crypto_policy/tests/stig_empty_file.fail.sh -@@ -0,0 +1,10 @@ -+#!/bin/bash -+# platform = multi_platform_fedora,Red Hat Enterprise Linux 8 -+# profiles = xccdf_org.ssgproject.content_profile_stig -+ -+configfile=/etc/crypto-policies/back-ends/openssh.config -+ -+# Ensure directory + file is there -+test -d /etc/crypto-policies/back-ends || mkdir -p /etc/crypto-policies/back-ends -+ -+echo "" > $configfile -diff --git a/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_openssh_conf_crypto_policy/tests/stig_empty_policy.fail.sh b/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_openssh_conf_crypto_policy/tests/stig_empty_policy.fail.sh -new file mode 100644 -index 00000000000..9980a45681c ---- /dev/null -+++ b/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_openssh_conf_crypto_policy/tests/stig_empty_policy.fail.sh -@@ -0,0 +1,14 @@ -+#!/bin/bash -+# platform = multi_platform_fedora,Red Hat Enterprise Linux 8 -+# profiles = xccdf_org.ssgproject.content_profile_stig -+ -+configfile=/etc/crypto-policies/back-ends/openssh.config -+ -+# Ensure directory + file is there -+test -d /etc/crypto-policies/back-ends || mkdir -p /etc/crypto-policies/back-ends -+ -+if [[ -f $configfile ]]; then -+ sed -i "s/^.*MACs.*$/MACs /" $configfile -+else -+ echo "MACs " > "$configfile" -+fi -diff --git a/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_openssh_conf_crypto_policy/tests/stig_incorrect_followed_by_correct_commented.fail.sh b/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_openssh_conf_crypto_policy/tests/stig_incorrect_followed_by_correct_commented.fail.sh -new file mode 100644 -index 00000000000..d1303d60746 ---- /dev/null -+++ b/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_openssh_conf_crypto_policy/tests/stig_incorrect_followed_by_correct_commented.fail.sh -@@ -0,0 +1,19 @@ -+#!/bin/bash -+# platform = multi_platform_fedora,Red Hat Enterprise Linux 8 -+# profiles = xccdf_org.ssgproject.content_profile_stig -+ -+sshd_approved_macs=hmac-sha2-512,hmac-sha2-256 -+incorrect_sshd_approved_macs=hmac-sha2-256-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha2-256,hmac-sha1,umac-128@openssh.com,hmac-sha2-512 -+configfile=/etc/crypto-policies/back-ends/openssh.config -+ -+# Ensure directory + file is there -+test -d /etc/crypto-policies/back-ends || mkdir -p /etc/crypto-policies/back-ends -+ -+if [[ -f $configfile ]]; then -+ sed -i "s/^.*MACs.*$/MACs ${incorrect_sshd_approved_macs}/" $configfile -+else -+ echo "MACs ${incorrect_sshd_approved_macs}" > "$configfile" -+fi -+ -+# follow up with correct value -+echo "MACs ${sshd_approved_macs}" >> $configfile -diff --git a/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_openssh_conf_crypto_policy/tests/stig_incorrect_policy.fail.sh b/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_openssh_conf_crypto_policy/tests/stig_incorrect_policy.fail.sh -new file mode 100644 -index 00000000000..8b21af46896 ---- /dev/null -+++ b/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_openssh_conf_crypto_policy/tests/stig_incorrect_policy.fail.sh -@@ -0,0 +1,14 @@ -+#!/bin/bash -+# platform = multi_platform_fedora,Red Hat Enterprise Linux 8 -+# profiles = xccdf_org.ssgproject.content_profile_stig -+ -+configfile=/etc/crypto-policies/back-ends/openssh.config -+ -+# Ensure directory + file is there -+test -d /etc/crypto-policies/back-ends || mkdir -p /etc/crypto-policies/back-ends -+ -+if [[ -f $configfile ]]; then -+ sed -i "s/^.*MACs.*$/MACs hmac-sha2-256-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha2-256,hmac-sha1,umac-128@openssh.com,hmac-sha2-512/" $configfile -+else -+ echo "MACs hmac-sha2-256-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha2-256,hmac-sha1,umac-128@openssh.com,hmac-sha2-512" > "$configfile" -+fi -diff --git a/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_openssh_conf_crypto_policy/tests/stig_missing_file.fail.sh b/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_openssh_conf_crypto_policy/tests/stig_missing_file.fail.sh -new file mode 100644 -index 00000000000..2138caad319 ---- /dev/null -+++ b/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_openssh_conf_crypto_policy/tests/stig_missing_file.fail.sh -@@ -0,0 +1,11 @@ -+#!/bin/bash -+# platform = multi_platform_fedora,Red Hat Enterprise Linux 8 -+# profiles = xccdf_org.ssgproject.content_profile_stig -+ -+configfile=/etc/crypto-policies/back-ends/openssh.config -+ -+# Ensure directory + file is there -+test -d /etc/crypto-policies/back-ends || mkdir -p /etc/crypto-policies/back-ends -+ -+# If file exists, remove it -+test -f $configfile && rm -f $configfile -diff --git a/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_opensshserver_conf_crypto_policy/ansible/shared.yml b/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_opensshserver_conf_crypto_policy/ansible/shared.yml -new file mode 100644 -index 00000000000..5ed618586ae ---- /dev/null -+++ b/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_opensshserver_conf_crypto_policy/ansible/shared.yml -@@ -0,0 +1,45 @@ -+# platform = Red Hat Enterprise Linux 8,multi_platform_fedora -+# reboot = true -+# strategy = restrict -+# complexity = low -+# disruption = low -+{{{ ansible_instantiate_variables("sshd_approved_macs") }}} -+ -+- name: "{{{ rule_title }}}: Set facts" -+ set_fact: -+ path: /etc/crypto-policies/back-ends/opensshserver.config -+ correct_value: "-oMACs={{ sshd_approved_macs }}" -+ -+- name: "{{{ rule_title }}}: Stat" -+ stat: -+ path: "{{ path }}" -+ follow: yes -+ register: opensshserver_file -+ -+- name: "{{{ rule_title }}}: Create" -+ lineinfile: -+ path: "{{ path }}" -+ line: "CRYPTO_POLICY='{{ correct_value }}'" -+ create: yes -+ when: not opensshserver_file.stat.exists or opensshserver_file.stat.size <= correct_value|length -+ -+- name: "{{{ rule_title }}}" -+ block: -+ - name: "Existing value check" -+ lineinfile: -+ path: "{{ path }}" -+ create: false -+ regexp: "{{ correct_value }}" -+ state: absent -+ check_mode: true -+ changed_when: false -+ register: opensshserver -+ -+ - name: "Update/Correct value" -+ replace: -+ path: "{{ path }}" -+ regexp: (-oMACs=\S+) -+ replace: "{{ correct_value }}" -+ when: opensshserver.found is defined and opensshserver.found != 1 -+ -+ when: opensshserver_file.stat.exists and opensshserver_file.stat.size > correct_value|length -diff --git a/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_opensshserver_conf_crypto_policy/bash/shared.sh b/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_opensshserver_conf_crypto_policy/bash/shared.sh -new file mode 100644 -index 00000000000..790a2951bab ---- /dev/null -+++ b/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_opensshserver_conf_crypto_policy/bash/shared.sh -@@ -0,0 +1,31 @@ -+# platform = Red Hat Enterprise Linux 8,multi_platform_fedora -+. /usr/share/scap-security-guide/remediation_functions -+{{{ bash_instantiate_variables("sshd_approved_macs") }}} -+ -+CONF_FILE=/etc/crypto-policies/back-ends/opensshserver.config -+correct_value="-oMACs=${sshd_approved_macs}" -+ -+# Test if file exists -+test -f ${CONF_FILE} || touch ${CONF_FILE} -+ -+# Ensure CRYPTO_POLICY is not commented out -+sed -i 's/#CRYPTO_POLICY=/CRYPTO_POLICY=/' ${CONF_FILE} -+ -+grep -q "'${correct_value}'" ${CONF_FILE} -+ -+if [[ $? -ne 0 ]]; then -+ # We need to get the existing value, using PCRE to maintain same regex -+ existing_value=$(grep -Po '(-oMACs=\S+)' ${CONF_FILE}) -+ -+ if [[ ! -z ${existing_value} ]]; then -+ # replace existing_value with correct_value -+ sed -i "s/${existing_value}/${correct_value}/g" ${CONF_FILE} -+ else -+ # ***NOTE*** # -+ # This probably means this file is not here or it's been modified -+ # unintentionally. -+ # ********** # -+ # echo correct_value to end -+ echo "CRYPTO_POLICY='${correct_value}'" >> ${CONF_FILE} -+ fi -+fi -diff --git a/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_opensshserver_conf_crypto_policy/oval/shared.xml b/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_opensshserver_conf_crypto_policy/oval/shared.xml -new file mode 100644 -index 00000000000..18028157032 ---- /dev/null -+++ b/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_opensshserver_conf_crypto_policy/oval/shared.xml -@@ -0,0 +1,35 @@ -+{{%- set PATH = "/etc/crypto-policies/back-ends/opensshserver.config" -%}} -+ -+ -+ {{{ oval_metadata("Limit the Message Authentication Codes (MACs) to those which are FIPS-approved.") }}} -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ {{{ PATH }}} -+ ^(?!#).*(-oMACs=\S+).+$ -+ 1 -+ -+ -+ -+ -+ -+ -+ -+ -+ -oMACs= -+ -+ -+ -+ -+ -+ -diff --git a/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_opensshserver_conf_crypto_policy/rule.yml b/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_opensshserver_conf_crypto_policy/rule.yml -new file mode 100644 -index 00000000000..0fd107a1bbe ---- /dev/null -+++ b/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_opensshserver_conf_crypto_policy/rule.yml -@@ -0,0 +1,60 @@ -+documentation_complete: true -+ -+prodtype: rhel8 -+ -+title: 'Configure SSH Server to Use FIPS 140-2 Validated MACs: opensshserver.config' -+ -+description: |- -+ Crypto Policies provide a centralized control over crypto algorithms usage of many packages. -+ OpenSSH is supported by system crypto policy, but the OpenSSH configuration may be -+ set up incorrectly. -+ -+ To check that Crypto Policies settings are configured correctly, ensure that -+ /etc/crypto-policies/back-ends/opensshserver.config contains the following -+ text and is not commented out: -+ -oMACS=hmac-sha2-512,hmac-sha2-256 -+ -+rationale: |- -+ Overriding the system crypto policy makes the behavior of the OpenSSH -+ server violate expectations, and makes system configuration more -+ fragmented. -+ -+severity: medium -+ -+identifiers: -+ cce@rhel8: CCE-85899-3 -+ -+references: -+ disa: CCI-001453 -+ nist: AC-17(2) -+ srg: SRG-OS-000250-GPOS-00093 -+ stigid@rhel8: RHEL-08-010290 -+ -+ocil_clause: 'Crypto Policy for OpenSSH Server is not configured correctly' -+ -+ocil: |- -+ To verify if the OpenSSH server uses defined MACs in the Crypto Policy, run: -+
      $ grep -Po '(-oMACs=\S+)' /etc/crypto-policies/back-ends/opensshserver.config
      -+ and verify that the line matches: -+
      -oMACS=hmac-sha2-512,hmac-sha2-256
      -+ -+warnings: -+ - general: |- -+ The system needs to be rebooted for these changes to take effect. -+ - regulatory: |- -+ System Crypto Modules must be provided by a vendor that undergoes -+ FIPS-140 certifications. -+ FIPS-140 is applicable to all Federal agencies that use -+ cryptographic-based security systems to protect sensitive information -+ in computer and telecommunication systems (including voice systems) as -+ defined in Section 5131 of the Information Technology Management Reform -+ Act of 1996, Public Law 104-106. This standard shall be used in -+ designing and implementing cryptographic modules that Federal -+ departments and agencies operate or are operated for them under -+ contract. See {{{ weblink(link="https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.140-2.pdf") }}} -+ To meet this, the system has to have cryptographic software provided by -+ a vendor that has undergone this certification. This means providing -+ documentation, test results, design information, and independent third -+ party review by an accredited lab. While open source software is -+ capable of meeting this, it does not meet FIPS-140 unless the vendor -+ submits to this process. -diff --git a/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_opensshserver_conf_crypto_policy/tests/rhel8_stig_correct.pass.sh b/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_opensshserver_conf_crypto_policy/tests/rhel8_stig_correct.pass.sh -new file mode 100644 -index 00000000000..14da92218dc ---- /dev/null -+++ b/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_opensshserver_conf_crypto_policy/tests/rhel8_stig_correct.pass.sh -@@ -0,0 +1,17 @@ -+#!/bin/bash -+# platform = Red Hat Enterprise Linux 8 -+# profiles = xccdf_org.ssgproject.content_profile_stig -+ -+sshd_approved_macs=hmac-sha2-512,hmac-sha2-256 -+configfile=/etc/crypto-policies/back-ends/opensshserver.config -+correct_value="-oMACs=${sshd_approved_macs}" -+ -+# Ensure directory + file is there -+test -d /etc/crypto-policies/back-ends || mkdir -p /etc/crypto-policies/back-ends -+ -+# Proceed when file exists -+if [[ -f $configfile ]]; then -+ sed -i -r "s/-oMACs=\S+/${correct_value}/" $configfile -+else -+ echo "${correct_value}" > "$configfile" -+fi -diff --git a/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_opensshserver_conf_crypto_policy/tests/rhel8_stig_empty_policy.fail.sh b/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_opensshserver_conf_crypto_policy/tests/rhel8_stig_empty_policy.fail.sh -new file mode 100644 -index 00000000000..3dde1479296 ---- /dev/null -+++ b/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_opensshserver_conf_crypto_policy/tests/rhel8_stig_empty_policy.fail.sh -@@ -0,0 +1,7 @@ -+#!/bin/bash -+# platform = Red Hat Enterprise Linux 8 -+# profiles = xccdf_org.ssgproject.content_profile_stig -+ -+configfile=/etc/crypto-policies/back-ends/opensshserver.config -+ -+echo "" > "$configfile" -diff --git a/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_opensshserver_conf_crypto_policy/tests/rhel8_stig_incorrect_policy.fail.sh b/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_opensshserver_conf_crypto_policy/tests/rhel8_stig_incorrect_policy.fail.sh -new file mode 100644 -index 00000000000..a50a0fc02bf ---- /dev/null -+++ b/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_opensshserver_conf_crypto_policy/tests/rhel8_stig_incorrect_policy.fail.sh -@@ -0,0 +1,14 @@ -+#!/bin/bash -+# platform = Red Hat Enterprise Linux 8 -+# profiles = xccdf_org.ssgproject.content_profile_stig -+ -+configfile=/etc/crypto-policies/back-ends/opensshserver.config -+ -+# Ensure directory + file is there -+test -d /etc/crypto-policies/back-ends || mkdir -p /etc/crypto-policies/back-ends -+ -+if [[ -f $configfile ]]; then -+ sed -i -r "s/-oMACs=\S+/-oMACs=hmac-sha2-256-etm@openssh.com,hmac-sha1-etm@openssh.com/" $configfile -+else -+ echo "-oMACs=hmac-sha2-256-etm@openssh.com,hmac-sha1-etm@openssh.com" > "$configfile" -+fi -diff --git a/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_opensshserver_conf_crypto_policy/tests/rhel8_stig_missing_file.fail.sh b/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_opensshserver_conf_crypto_policy/tests/rhel8_stig_missing_file.fail.sh -new file mode 100644 -index 00000000000..11e596ced87 ---- /dev/null -+++ b/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_opensshserver_conf_crypto_policy/tests/rhel8_stig_missing_file.fail.sh -@@ -0,0 +1,11 @@ -+#!/bin/bash -+# platform = Red Hat Enterprise Linux 8 -+# profiles = xccdf_org.ssgproject.content_profile_stig -+ -+configfile=/etc/crypto-policies/back-ends/opensshserver.config -+ -+# Ensure directory + file is there -+test -d /etc/crypto-policies/back-ends || mkdir -p /etc/crypto-policies/back-ends -+ -+# If file exists, remove it -+test -f $configfile && rm -f $configfile -diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index 6372d13cfc9..28b47cca487 100644 ---- a/products/rhel8/profiles/stig.profile -+++ b/products/rhel8/profiles/stig.profile -@@ -50,6 +50,7 @@ selections: - - var_password_pam_retry=3 - - var_password_pam_minlen=15 - - var_sshd_set_keepalive=0 -+ - sshd_approved_macs=stig - - sshd_idle_timeout_value=10_minutes - - var_accounts_passwords_pam_faillock_deny=3 - - var_accounts_passwords_pam_faillock_fail_interval=900 -@@ -174,11 +175,17 @@ selections: - # RHEL-08-010260 - - file_groupowner_var_log - -+ # *** SHARED *** # - # RHEL-08-010290 && RHEL-08-010291 -- ### NOTE: This will get split out in future STIG releases, as well as we will break -- ### these rules up to be more flexible in meeting the requirements. -+ # *** SHARED *** # - - configure_ssh_crypto_policy - -+ # RHEL-08-010290 -+ - harden_sshd_macs_openssh_conf_crypto_policy -+ - harden_sshd_macs_opensshserver_conf_crypto_policy -+ -+ # RHEL-08-010291 -+ - # RHEL-08-010292 - - sshd_use_strong_rng - -diff --git a/shared/references/cce-redhat-avail.txt b/shared/references/cce-redhat-avail.txt -index 24e81491683..036d34cea1d 100644 ---- a/shared/references/cce-redhat-avail.txt -+++ b/shared/references/cce-redhat-avail.txt -@@ -10,7 +10,6 @@ CCE-85866-2 - CCE-85867-0 - CCE-85868-8 - CCE-85869-6 --CCE-85870-4 - CCE-85872-0 - CCE-85873-8 - CCE-85874-6 -@@ -36,7 +35,6 @@ CCE-85895-1 - CCE-85896-9 - CCE-85897-7 - CCE-85898-5 --CCE-85899-3 - CCE-85900-9 - CCE-85901-7 - CCE-85902-5 -diff --git a/tests/data/profile_stability/rhel8/stig.profile b/tests/data/profile_stability/rhel8/stig.profile -index 32f1a24a7a4..393051a34ea 100644 ---- a/tests/data/profile_stability/rhel8/stig.profile -+++ b/tests/data/profile_stability/rhel8/stig.profile -@@ -145,6 +145,8 @@ selections: - - grub2_uefi_admin_username - - grub2_uefi_password - - grub2_vsyscall_argument -+- harden_sshd_macs_openssh_conf_crypto_policy -+- harden_sshd_macs_opensshserver_conf_crypto_policy - - install_smartcard_packages - - installed_OS_is_vendor_supported - - kerberos_disable_no_keytab -@@ -325,6 +327,7 @@ selections: - - var_password_pam_lcredit=1 - - var_password_pam_retry=3 - - var_sshd_set_keepalive=0 -+- sshd_approved_macs=stig - - sshd_idle_timeout_value=10_minutes - - var_accounts_passwords_pam_faillock_deny=3 - - var_accounts_passwords_pam_faillock_fail_interval=900 -diff --git a/tests/data/profile_stability/rhel8/stig_gui.profile b/tests/data/profile_stability/rhel8/stig_gui.profile -index d6a27c67dc0..de82fb34518 100644 ---- a/tests/data/profile_stability/rhel8/stig_gui.profile -+++ b/tests/data/profile_stability/rhel8/stig_gui.profile -@@ -156,6 +156,8 @@ selections: - - grub2_uefi_admin_username - - grub2_uefi_password - - grub2_vsyscall_argument -+- harden_sshd_macs_openssh_conf_crypto_policy -+- harden_sshd_macs_opensshserver_conf_crypto_policy - - install_smartcard_packages - - installed_OS_is_vendor_supported - - kerberos_disable_no_keytab -@@ -335,6 +337,7 @@ selections: - - var_password_pam_lcredit=1 - - var_password_pam_retry=3 - - var_sshd_set_keepalive=0 -+- sshd_approved_macs=stig - - sshd_idle_timeout_value=10_minutes - - var_accounts_passwords_pam_faillock_deny=3 - - var_accounts_passwords_pam_faillock_fail_interval=900 diff --git a/SOURCES/scap-security-guide-0.1.58-rhel8_stig_08_010291-PR_7169.patch b/SOURCES/scap-security-guide-0.1.58-rhel8_stig_08_010291-PR_7169.patch deleted file mode 100644 index 13149fd..0000000 --- a/SOURCES/scap-security-guide-0.1.58-rhel8_stig_08_010291-PR_7169.patch +++ /dev/null @@ -1,1057 +0,0 @@ -From 7da420a853591a6e994439a9ada2b88d6793e3e7 Mon Sep 17 00:00:00 2001 -From: Carlos Matos -Date: Tue, 29 Jun 2021 14:00:14 -0400 -Subject: [PATCH 1/5] New rules for RHEL-08-010291 - ---- - .../services/ssh/sshd_approved_ciphers.var | 2 +- - .../ansible/shared.yml | 16 +++++ - .../bash/shared.sh | 13 ++++ - .../oval/shared.xml | 35 +++++++++++ - .../rule.yml | 62 +++++++++++++++++++ - .../tests/stig_correct.pass.sh | 15 +++++ - .../tests/stig_correct_commented.fail.sh | 15 +++++ - ...ct_followed_by_incorrect_commented.pass.sh | 18 ++++++ - .../tests/stig_empty_file.fail.sh | 10 +++ - .../tests/stig_empty_policy.fail.sh | 14 +++++ - ...rect_followed_by_correct_commented.fail.sh | 19 ++++++ - .../tests/stig_incorrect_policy.fail.sh | 15 +++++ - .../tests/stig_missing_file.fail.sh | 11 ++++ - .../ansible/shared.yml | 45 ++++++++++++++ - .../bash/shared.sh | 25 ++++++++ - .../oval/shared.xml | 35 +++++++++++ - .../rule.yml | 62 +++++++++++++++++++ - .../tests/rhel8_stig_correct.pass.sh | 17 +++++ - .../tests/rhel8_stig_empty_policy.fail.sh | 7 +++ - .../tests/rhel8_stig_incorrect_policy.fail.sh | 14 +++++ - .../tests/rhel8_stig_missing_file.fail.sh | 11 ++++ - products/rhel8/profiles/stig.profile | 6 ++ - .../data/profile_stability/rhel8/stig.profile | 3 + - .../profile_stability/rhel8/stig_gui.profile | 3 + - 24 files changed, 472 insertions(+), 1 deletion(-) - create mode 100644 linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/ansible/shared.yml - create mode 100644 linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/bash/shared.sh - create mode 100644 linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/oval/shared.xml - create mode 100644 linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/rule.yml - create mode 100644 linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/tests/stig_correct.pass.sh - create mode 100644 linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/tests/stig_correct_commented.fail.sh - create mode 100644 linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/tests/stig_correct_followed_by_incorrect_commented.pass.sh - create mode 100644 linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/tests/stig_empty_file.fail.sh - create mode 100644 linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/tests/stig_empty_policy.fail.sh - create mode 100644 linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/tests/stig_incorrect_followed_by_correct_commented.fail.sh - create mode 100644 linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/tests/stig_incorrect_policy.fail.sh - create mode 100644 linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/tests/stig_missing_file.fail.sh - create mode 100644 linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/ansible/shared.yml - create mode 100644 linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/bash/shared.sh - create mode 100644 linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/oval/shared.xml - create mode 100644 linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/rule.yml - create mode 100644 linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/tests/rhel8_stig_correct.pass.sh - create mode 100644 linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/tests/rhel8_stig_empty_policy.fail.sh - create mode 100644 linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/tests/rhel8_stig_incorrect_policy.fail.sh - create mode 100644 linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/tests/rhel8_stig_missing_file.fail.sh - -diff --git a/linux_os/guide/services/ssh/sshd_approved_ciphers.var b/linux_os/guide/services/ssh/sshd_approved_ciphers.var -index 46891daa619..a240bbbfaef 100644 ---- a/linux_os/guide/services/ssh/sshd_approved_ciphers.var -+++ b/linux_os/guide/services/ssh/sshd_approved_ciphers.var -@@ -11,6 +11,6 @@ operator: equals - interactive: false - - options: -- stig: aes128-ctr,aes192-ctr,aes256-ctr -+ stig: aes256-ctr,aes192-ctr,aes128-ctr - default: aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se - cis_rhel7: chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes128-cbc,aes192-cbc,aes256-cbc,blowfish-cbc,cast128-cbc,3des-cbc -diff --git a/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/ansible/shared.yml b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/ansible/shared.yml -new file mode 100644 -index 00000000000..badb5896cf2 ---- /dev/null -+++ b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/ansible/shared.yml -@@ -0,0 +1,16 @@ -+# platform = Red Hat Enterprise Linux 8,multi_platform_fedora -+# reboot = true -+# strategy = restrict -+# complexity = low -+# disruption = low -+{{{ ansible_instantiate_variables("sshd_approved_ciphers") }}} -+ -+{{{ ansible_set_config_file( -+ msg='Configure SSH Daemon to Use FIPS 140-2 Validated MACs: openssh.config', -+ file='/etc/crypto-policies/back-ends/openssh.config', -+ parameter='Ciphers', -+ value="{{ sshd_approved_ciphers }}", -+ create='yes', -+ prefix_regex='^.*' -+ ) -+}}} -diff --git a/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/bash/shared.sh b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/bash/shared.sh -new file mode 100644 -index 00000000000..cdc66a8aac6 ---- /dev/null -+++ b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/bash/shared.sh -@@ -0,0 +1,13 @@ -+# platform = Red Hat Enterprise Linux 8,multi_platform_fedora -+. /usr/share/scap-security-guide/remediation_functions -+{{{ bash_instantiate_variables("sshd_approved_ciphers") }}} -+ -+{{{ set_config_file( -+ path="/etc/crypto-policies/back-ends/openssh.config", -+ parameter="Ciphers", -+ value="${sshd_approved_ciphers}", -+ create=true, -+ insensitive=false, -+ prefix_regex="^.*" -+ ) -+}}} -diff --git a/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/oval/shared.xml b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/oval/shared.xml -new file mode 100644 -index 00000000000..1879e77398b ---- /dev/null -+++ b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/oval/shared.xml -@@ -0,0 +1,35 @@ -+{{%- set PATH = "/etc/crypto-policies/back-ends/openssh.config" -%}} -+ -+ -+ {{{ oval_metadata("Limit the Message Authentication Codes (MACs) to those which are FIPS-approved.") }}} -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ {{{ PATH }}} -+ ^Ciphers.*$ -+ 1 -+ -+ -+ -+ -+ -+ -+ -+ -+ Ciphers -+ -+ -+ -+ -+ -+ -diff --git a/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/rule.yml b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/rule.yml -new file mode 100644 -index 00000000000..cd1553dbdb3 ---- /dev/null -+++ b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/rule.yml -@@ -0,0 +1,62 @@ -+documentation_complete: true -+ -+prodtype: fedora,rhel8 -+ -+title: 'Configure SSH Daemon to Use FIPS 140-2 Validated Ciphers: openssh.config' -+ -+description: |- -+ Crypto Policies provide a centralized control over crypto algorithms usage of many packages. -+ OpenSSH is supported by system crypto policy, but the OpenSSH configuration may be -+ set up incorrectly. -+ -+ To check that Crypto Policies settings for ciphers are configured correctly, ensure that -+ /etc/crypto-policies/back-ends/openssh.config contains the following -+ line and is not commented out: -+
      Ciphers {{{ xccdf_value("sshd_approved_ciphers") }}}
      -+ -+rationale: |- -+ Overriding the system crypto policy makes the behavior of the OpenSSH daemon -+ violate expectations, and makes system configuration more fragmented. By -+ specifying a cipher list with the order of ciphers being in a “strongest to -+ weakest” orientation, the system will automatically attempt to use the -+ strongest cipher for securing SSH connections. -+ -+severity: medium -+ -+identifiers: -+ cce@rhel8: CCE-85870-4 -+ -+references: -+ nist: AC-17(2) -+ srg: SRG-OS-000250-GPOS-00093 -+ disa: CCI-001453 -+ stigid@rhel8: RHEL-08-010291 -+ -+ocil_clause: 'Crypto Policy for OpenSSH Server is not configured correctly' -+ -+ocil: |- -+ To verify if the OpenSSH daemon uses defined Cipher suite in the Crypto Policy, run: -+
      $ grep -i ciphers /etc/crypto-policies/back-ends/openssh.config
      -+ and verify that the line matches: -+
      Ciphers {{{ xccdf_value("sshd_approved_ciphers") }}}
      -+ -+warnings: -+ - general: |- -+ The system needs to be rebooted for these changes to take effect. -+ - regulatory: |- -+ System Crypto Modules must be provided by a vendor that undergoes -+ FIPS-140 certifications. -+ FIPS-140 is applicable to all Federal agencies that use -+ cryptographic-based security systems to protect sensitive information -+ in computer and telecommunication systems (including voice systems) as -+ defined in Section 5131 of the Information Technology Management Reform -+ Act of 1996, Public Law 104-106. This standard shall be used in -+ designing and implementing cryptographic modules that Federal -+ departments and agencies operate or are operated for them under -+ contract. See {{{ weblink(link="https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.140-2.pdf") }}} -+ To meet this, the system has to have cryptographic software provided by -+ a vendor that has undergone this certification. This means providing -+ documentation, test results, design information, and independent third -+ party review by an accredited lab. While open source software is -+ capable of meeting this, it does not meet FIPS-140 unless the vendor -+ submits to this process. -diff --git a/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/tests/stig_correct.pass.sh b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/tests/stig_correct.pass.sh -new file mode 100644 -index 00000000000..0a27a7e0984 ---- /dev/null -+++ b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/tests/stig_correct.pass.sh -@@ -0,0 +1,15 @@ -+#!/bin/bash -+# platform = multi_platform_fedora,Red Hat Enterprise Linux 8 -+# profiles = xccdf_org.ssgproject.content_profile_stig -+ -+sshd_approved_ciphers=aes256-ctr,aes192-ctr,aes128-ctr -+configfile=/etc/crypto-policies/back-ends/openssh.config -+ -+# Ensure directory + file is there -+test -d /etc/crypto-policies/back-ends || mkdir -p /etc/crypto-policies/back-ends -+ -+if [[ -f $configfile ]]; then -+ sed -i "s/^.*Ciphers.*$/Ciphers ${sshd_approved_ciphers}/" $configfile -+else -+ echo "Ciphers ${sshd_approved_ciphers}" > "$configfile" -+fi -diff --git a/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/tests/stig_correct_commented.fail.sh b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/tests/stig_correct_commented.fail.sh -new file mode 100644 -index 00000000000..5cadd95ba38 ---- /dev/null -+++ b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/tests/stig_correct_commented.fail.sh -@@ -0,0 +1,15 @@ -+#!/bin/bash -+# platform = multi_platform_fedora,Red Hat Enterprise Linux 8 -+# profiles = xccdf_org.ssgproject.content_profile_stig -+ -+sshd_approved_ciphers=aes256-ctr,aes192-ctr,aes128-ctr -+configfile=/etc/crypto-policies/back-ends/openssh.config -+ -+# Ensure directory + file is there -+test -d /etc/crypto-policies/back-ends || mkdir -p /etc/crypto-policies/back-ends -+ -+if [[ -f $configfile ]]; then -+ sed -i "s/^.*Ciphers.*$/#Ciphers ${sshd_approved_ciphers}/" $configfile -+else -+ echo "#Ciphers ${sshd_approved_ciphers}" > "$configfile" -+fi -diff --git a/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/tests/stig_correct_followed_by_incorrect_commented.pass.sh b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/tests/stig_correct_followed_by_incorrect_commented.pass.sh -new file mode 100644 -index 00000000000..26220063757 ---- /dev/null -+++ b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/tests/stig_correct_followed_by_incorrect_commented.pass.sh -@@ -0,0 +1,18 @@ -+#!/bin/bash -+# platform = multi_platform_fedora,Red Hat Enterprise Linux 8 -+# profiles = xccdf_org.ssgproject.content_profile_stig -+ -+sshd_approved_ciphers=aes256-ctr,aes192-ctr,aes128-ctr -+configfile=/etc/crypto-policies/back-ends/openssh.config -+ -+# Ensure directory + file is there -+test -d /etc/crypto-policies/back-ends || mkdir -p /etc/crypto-policies/back-ends -+ -+if [[ -f $configfile ]]; then -+ sed -i "s/^.*Ciphers.*$/Ciphers ${sshd_approved_ciphers}/" $configfile -+else -+ echo "Ciphers ${sshd_approved_ciphers}" > "$configfile" -+fi -+ -+# follow up with incorrect -+echo "#Ciphers aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr" >> $configfile -diff --git a/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/tests/stig_empty_file.fail.sh b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/tests/stig_empty_file.fail.sh -new file mode 100644 -index 00000000000..55ef3f58422 ---- /dev/null -+++ b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/tests/stig_empty_file.fail.sh -@@ -0,0 +1,10 @@ -+#!/bin/bash -+# platform = multi_platform_fedora,Red Hat Enterprise Linux 8 -+# profiles = xccdf_org.ssgproject.content_profile_stig -+ -+configfile=/etc/crypto-policies/back-ends/openssh.config -+ -+# Ensure directory + file is there -+test -d /etc/crypto-policies/back-ends || mkdir -p /etc/crypto-policies/back-ends -+ -+echo "" > $configfile -diff --git a/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/tests/stig_empty_policy.fail.sh b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/tests/stig_empty_policy.fail.sh -new file mode 100644 -index 00000000000..7105441ad80 ---- /dev/null -+++ b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/tests/stig_empty_policy.fail.sh -@@ -0,0 +1,14 @@ -+#!/bin/bash -+# platform = multi_platform_fedora,Red Hat Enterprise Linux 8 -+# profiles = xccdf_org.ssgproject.content_profile_stig -+ -+configfile=/etc/crypto-policies/back-ends/openssh.config -+ -+# Ensure directory + file is there -+test -d /etc/crypto-policies/back-ends || mkdir -p /etc/crypto-policies/back-ends -+ -+if [[ -f $configfile ]]; then -+ sed -i "s/^.*Ciphers.*$/Ciphers /" $configfile -+else -+ echo "Ciphers " > "$configfile" -+fi -diff --git a/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/tests/stig_incorrect_followed_by_correct_commented.fail.sh b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/tests/stig_incorrect_followed_by_correct_commented.fail.sh -new file mode 100644 -index 00000000000..195f5e8d8ed ---- /dev/null -+++ b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/tests/stig_incorrect_followed_by_correct_commented.fail.sh -@@ -0,0 +1,19 @@ -+#!/bin/bash -+# platform = multi_platform_fedora,Red Hat Enterprise Linux 8 -+# profiles = xccdf_org.ssgproject.content_profile_stig -+ -+sshd_approved_ciphers=aes256-ctr,aes192-ctr,aes128-ctr -+incorrect_sshd_approved_ciphers=aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr -+configfile=/etc/crypto-policies/back-ends/openssh.config -+ -+# Ensure directory + file is there -+test -d /etc/crypto-policies/back-ends || mkdir -p /etc/crypto-policies/back-ends -+ -+if [[ -f $configfile ]]; then -+ sed -i "s/^.*Ciphers.*$/Ciphers ${incorrect_sshd_approved_ciphers}/" $configfile -+else -+ echo "Ciphers ${incorrect_sshd_approved_ciphers}" > "$configfile" -+fi -+ -+# follow up with correct value -+echo "Ciphers ${sshd_approved_ciphers}" >> $configfile -diff --git a/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/tests/stig_incorrect_policy.fail.sh b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/tests/stig_incorrect_policy.fail.sh -new file mode 100644 -index 00000000000..92bd4ed9c5a ---- /dev/null -+++ b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/tests/stig_incorrect_policy.fail.sh -@@ -0,0 +1,15 @@ -+#!/bin/bash -+# platform = multi_platform_fedora,Red Hat Enterprise Linux 8 -+# profiles = xccdf_org.ssgproject.content_profile_stig -+ -+incorrect_sshd_approved_ciphers=aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes256-cbc -+configfile=/etc/crypto-policies/back-ends/openssh.config -+ -+# Ensure directory + file is there -+test -d /etc/crypto-policies/back-ends || mkdir -p /etc/crypto-policies/back-ends -+ -+if [[ -f $configfile ]]; then -+ sed -i "s/^.*Ciphers.*$/Ciphers ${incorrect_sshd_approved_ciphers}/" $configfile -+else -+ echo "Ciphers ${incorrect_sshd_approved_ciphers}" > "$configfile" -+fi -diff --git a/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/tests/stig_missing_file.fail.sh b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/tests/stig_missing_file.fail.sh -new file mode 100644 -index 00000000000..2138caad319 ---- /dev/null -+++ b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/tests/stig_missing_file.fail.sh -@@ -0,0 +1,11 @@ -+#!/bin/bash -+# platform = multi_platform_fedora,Red Hat Enterprise Linux 8 -+# profiles = xccdf_org.ssgproject.content_profile_stig -+ -+configfile=/etc/crypto-policies/back-ends/openssh.config -+ -+# Ensure directory + file is there -+test -d /etc/crypto-policies/back-ends || mkdir -p /etc/crypto-policies/back-ends -+ -+# If file exists, remove it -+test -f $configfile && rm -f $configfile -diff --git a/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/ansible/shared.yml b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/ansible/shared.yml -new file mode 100644 -index 00000000000..7532ba51639 ---- /dev/null -+++ b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/ansible/shared.yml -@@ -0,0 +1,45 @@ -+# platform = Red Hat Enterprise Linux 8,multi_platform_fedora -+# reboot = true -+# strategy = restrict -+# complexity = low -+# disruption = low -+{{{ ansible_instantiate_variables("sshd_approved_ciphers") }}} -+ -+- name: "{{{ rule_title }}}: Set facts" -+ set_fact: -+ path: /etc/crypto-policies/back-ends/opensshserver.config -+ correct_value: "-oCiphers={{ sshd_approved_ciphers }}" -+ -+- name: "{{{ rule_title }}}: Stat" -+ stat: -+ path: "{{ path }}" -+ follow: yes -+ register: opensshserver_file -+ -+- name: "{{{ rule_title }}}: Create" -+ lineinfile: -+ path: "{{ path }}" -+ line: "{{ correct_value }}" -+ create: yes -+ when: not opensshserver_file.stat.exists or opensshserver_file.stat.size <= correct_value|length -+ -+- name: "{{{ rule_title }}}" -+ block: -+ - name: "Existing value check" -+ lineinfile: -+ path: "{{ path }}" -+ create: false -+ regexp: "{{ correct_value }}" -+ state: absent -+ check_mode: true -+ changed_when: false -+ register: opensshserver -+ -+ - name: "Update/Correct value" -+ replace: -+ path: "{{ path }}" -+ regexp: (-oCiphers=\S+) -+ replace: "{{ correct_value }}" -+ when: opensshserver.found is defined and opensshserver.found != 1 -+ -+ when: opensshserver_file.stat.exists and opensshserver_file.stat.size > correct_value|length -diff --git a/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/bash/shared.sh b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/bash/shared.sh -new file mode 100644 -index 00000000000..1bc022f93b6 ---- /dev/null -+++ b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/bash/shared.sh -@@ -0,0 +1,25 @@ -+# platform = Red Hat Enterprise Linux 8,multi_platform_fedora -+. /usr/share/scap-security-guide/remediation_functions -+{{{ bash_instantiate_variables("sshd_approved_ciphers") }}} -+ -+CONF_FILE=/etc/crypto-policies/back-ends/opensshserver.config -+correct_value="-oCiphers=${sshd_approved_ciphers}" -+ -+grep -q ${correct_value} ${CONF_FILE} -+ -+if [[ $? -ne 0 ]]; then -+ # We need to get the existing value, using PCRE to maintain same regex -+ existing_value=$(grep -Po '(-oCiphers=\S+)' ${CONF_FILE}) -+ -+ if [[ ! -z ${existing_value} ]]; then -+ # replace existing_value with correct_value -+ sed -i "s/${existing_value}/${correct_value}/g" ${CONF_FILE} -+ else -+ # ***NOTE*** # -+ # This probably means this file is not here or it's been modified -+ # unintentionally. -+ # ********** # -+ # echo correct_value to end -+ echo ${correct_value} >> ${CONF_FILE} -+ fi -+fi -diff --git a/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/oval/shared.xml b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/oval/shared.xml -new file mode 100644 -index 00000000000..92ad7ce3d3f ---- /dev/null -+++ b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/oval/shared.xml -@@ -0,0 +1,35 @@ -+{{%- set PATH = "/etc/crypto-policies/back-ends/opensshserver.config" -%}} -+ -+ -+ {{{ oval_metadata("Limit the Message Authentication Codes (Ciphers) to those which are FIPS-approved.") }}} -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ {{{ PATH }}} -+ ^.*(-oCiphers=\S+).*$ -+ 1 -+ -+ -+ -+ -+ -+ -+ -+ -+ -oCiphers= -+ -+ -+ -+ -+ -+ -diff --git a/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/rule.yml b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/rule.yml -new file mode 100644 -index 00000000000..877c6f38db0 ---- /dev/null -+++ b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/rule.yml -@@ -0,0 +1,62 @@ -+documentation_complete: true -+ -+prodtype: rhel8 -+ -+title: 'Configure SSH Daemon to Use FIPS 140-2 Validated MACs: opensshserver.config' -+ -+description: |- -+ Crypto Policies provide a centralized control over crypto algorithms usage of many packages. -+ OpenSSH is supported by system crypto policy, but the OpenSSH configuration may be -+ set up incorrectly. -+ -+ To check that Crypto Policies settings for ciphers are configured correctly, ensure that -+ /etc/crypto-policies/back-ends/opensshserver.config contains the following -+ text and is not commented out: -+
      -oCiphers={{{ xccdf_value("sshd_approved_ciphers") }}}
      -+ -+rationale: |- -+ Overriding the system crypto policy makes the behavior of the OpenSSH daemon -+ violate expectations, and makes system configuration more fragmented. By -+ specifying a cipher list with the order of ciphers being in a “strongest to -+ weakest” orientation, the system will automatically attempt to use the -+ strongest cipher for securing SSH connections. -+ -+severity: medium -+ -+identifiers: -+ cce@rhel8: CCE-85871-2 -+ -+references: -+ nist: AC-17(2) -+ srg: SRG-OS-000250-GPOS-00093 -+ disa: CCI-001453 -+ stigid@rhel8: RHEL-08-010290 -+ -+ocil_clause: 'Crypto Policy for OpenSSH Server is not configured correctly' -+ -+ocil: |- -+ To verify if the OpenSSH daemon uses defined MACs in the Crypto Policy, run: -+
      $ grep -Po '(-oCiphers=\S+)' /etc/crypto-policies/back-ends/opensshserver.config
      -+ and verify that the line matches: -+
      -oCiphers={{{ xccdf_value("sshd_approved_ciphers") }}}
      -+ -+warnings: -+ - general: |- -+ The system needs to be rebooted for these changes to take effect. -+ - regulatory: |- -+ System Crypto Modules must be provided by a vendor that undergoes -+ FIPS-140 certifications. -+ FIPS-140 is applicable to all Federal agencies that use -+ cryptographic-based security systems to protect sensitive information -+ in computer and telecommunication systems (including voice systems) as -+ defined in Section 5131 of the Information Technology Management Reform -+ Act of 1996, Public Law 104-106. This standard shall be used in -+ designing and implementing cryptographic modules that Federal -+ departments and agencies operate or are operated for them under -+ contract. See {{{ weblink(link="https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.140-2.pdf") }}} -+ To meet this, the system has to have cryptographic software provided by -+ a vendor that has undergone this certification. This means providing -+ documentation, test results, design information, and independent third -+ party review by an accredited lab. While open source software is -+ capable of meeting this, it does not meet FIPS-140 unless the vendor -+ submits to this process. -diff --git a/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/tests/rhel8_stig_correct.pass.sh b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/tests/rhel8_stig_correct.pass.sh -new file mode 100644 -index 00000000000..1a8911d523c ---- /dev/null -+++ b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/tests/rhel8_stig_correct.pass.sh -@@ -0,0 +1,17 @@ -+#!/bin/bash -+# platform = Red Hat Enterprise Linux 8 -+# profiles = xccdf_org.ssgproject.content_profile_stig -+ -+sshd_approved_ciphers=aes256-ctr,aes192-ctr,aes128-ctr -+configfile=/etc/crypto-policies/back-ends/opensshserver.config -+correct_value="-oCiphers=${sshd_approved_ciphers}" -+ -+# Ensure directory + file is there -+test -d /etc/crypto-policies/back-ends || mkdir -p /etc/crypto-policies/back-ends -+ -+# Proceed when file exists -+if [[ -f $configfile ]]; then -+ sed -i -r "s/-oCiphers=\S+/${correct_value}/" $configfile -+else -+ echo "${correct_value}" > "$configfile" -+fi -diff --git a/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/tests/rhel8_stig_empty_policy.fail.sh b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/tests/rhel8_stig_empty_policy.fail.sh -new file mode 100644 -index 00000000000..3dde1479296 ---- /dev/null -+++ b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/tests/rhel8_stig_empty_policy.fail.sh -@@ -0,0 +1,7 @@ -+#!/bin/bash -+# platform = Red Hat Enterprise Linux 8 -+# profiles = xccdf_org.ssgproject.content_profile_stig -+ -+configfile=/etc/crypto-policies/back-ends/opensshserver.config -+ -+echo "" > "$configfile" -diff --git a/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/tests/rhel8_stig_incorrect_policy.fail.sh b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/tests/rhel8_stig_incorrect_policy.fail.sh -new file mode 100644 -index 00000000000..f97f54db502 ---- /dev/null -+++ b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/tests/rhel8_stig_incorrect_policy.fail.sh -@@ -0,0 +1,14 @@ -+#!/bin/bash -+# platform = Red Hat Enterprise Linux 8 -+# profiles = xccdf_org.ssgproject.content_profile_stig -+ -+configfile=/etc/crypto-policies/back-ends/opensshserver.config -+ -+# Ensure directory + file is there -+test -d /etc/crypto-policies/back-ends || mkdir -p /etc/crypto-policies/back-ends -+ -+if [[ -f $configfile ]]; then -+ sed -i -r "s/-oCiphers=\S+/-oCiphers=aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes256-cbc/" $configfile -+else -+ echo "-oCiphers=aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes256-cbc" > "$configfile" -+fi -diff --git a/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/tests/rhel8_stig_missing_file.fail.sh b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/tests/rhel8_stig_missing_file.fail.sh -new file mode 100644 -index 00000000000..11e596ced87 ---- /dev/null -+++ b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/tests/rhel8_stig_missing_file.fail.sh -@@ -0,0 +1,11 @@ -+#!/bin/bash -+# platform = Red Hat Enterprise Linux 8 -+# profiles = xccdf_org.ssgproject.content_profile_stig -+ -+configfile=/etc/crypto-policies/back-ends/opensshserver.config -+ -+# Ensure directory + file is there -+test -d /etc/crypto-policies/back-ends || mkdir -p /etc/crypto-policies/back-ends -+ -+# If file exists, remove it -+test -f $configfile && rm -f $configfile -diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index 28b47cca487..a3783efafd6 100644 ---- a/products/rhel8/profiles/stig.profile -+++ b/products/rhel8/profiles/stig.profile -@@ -50,7 +50,11 @@ selections: - - var_password_pam_retry=3 - - var_password_pam_minlen=15 - - var_sshd_set_keepalive=0 -+<<<<<<< HEAD - - sshd_approved_macs=stig -+======= -+ - sshd_approved_ciphers=stig -+>>>>>>> 4d62df6b2 (New rules for RHEL-08-010291) - - sshd_idle_timeout_value=10_minutes - - var_accounts_passwords_pam_faillock_deny=3 - - var_accounts_passwords_pam_faillock_fail_interval=900 -@@ -185,6 +189,8 @@ selections: - - harden_sshd_macs_opensshserver_conf_crypto_policy - - # RHEL-08-010291 -+ - harden_sshd_ciphers_openssh_conf_crypto_policy -+ - harden_sshd_ciphers_opensshserver_conf_crypto_policy - - # RHEL-08-010292 - - sshd_use_strong_rng -diff --git a/tests/data/profile_stability/rhel8/stig.profile b/tests/data/profile_stability/rhel8/stig.profile -index 393051a34ea..05335cc38fb 100644 ---- a/tests/data/profile_stability/rhel8/stig.profile -+++ b/tests/data/profile_stability/rhel8/stig.profile -@@ -147,6 +147,8 @@ selections: - - grub2_vsyscall_argument - - harden_sshd_macs_openssh_conf_crypto_policy - - harden_sshd_macs_opensshserver_conf_crypto_policy -+- harden_sshd_ciphers_openssh_conf_crypto_policy -+- harden_sshd_ciphers_opensshserver_conf_crypto_policy - - install_smartcard_packages - - installed_OS_is_vendor_supported - - kerberos_disable_no_keytab -@@ -328,6 +330,7 @@ selections: - - var_password_pam_retry=3 - - var_sshd_set_keepalive=0 - - sshd_approved_macs=stig -+- sshd_approved_ciphers=stig - - sshd_idle_timeout_value=10_minutes - - var_accounts_passwords_pam_faillock_deny=3 - - var_accounts_passwords_pam_faillock_fail_interval=900 -diff --git a/tests/data/profile_stability/rhel8/stig_gui.profile b/tests/data/profile_stability/rhel8/stig_gui.profile -index de82fb34518..a0adc835a0d 100644 ---- a/tests/data/profile_stability/rhel8/stig_gui.profile -+++ b/tests/data/profile_stability/rhel8/stig_gui.profile -@@ -158,6 +158,8 @@ selections: - - grub2_vsyscall_argument - - harden_sshd_macs_openssh_conf_crypto_policy - - harden_sshd_macs_opensshserver_conf_crypto_policy -+- harden_sshd_ciphers_openssh_conf_crypto_policy -+- harden_sshd_ciphers_opensshserver_conf_crypto_policy - - install_smartcard_packages - - installed_OS_is_vendor_supported - - kerberos_disable_no_keytab -@@ -338,6 +340,7 @@ selections: - - var_password_pam_retry=3 - - var_sshd_set_keepalive=0 - - sshd_approved_macs=stig -+- sshd_approved_ciphers=stig - - sshd_idle_timeout_value=10_minutes - - var_accounts_passwords_pam_faillock_deny=3 - - var_accounts_passwords_pam_faillock_fail_interval=900 - -From c943e715615de1aa957d62d239e532f86ef0959e Mon Sep 17 00:00:00 2001 -From: Carlos Matos -Date: Tue, 29 Jun 2021 14:04:49 -0400 -Subject: [PATCH 2/5] replaced MACs with Ciphers - ---- - .../ansible/shared.yml | 2 +- - .../oval/shared.xml | 2 +- - .../oval/shared.xml | 2 +- - 3 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/ansible/shared.yml b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/ansible/shared.yml -index badb5896cf2..956a19f3025 100644 ---- a/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/ansible/shared.yml -+++ b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/ansible/shared.yml -@@ -6,7 +6,7 @@ - {{{ ansible_instantiate_variables("sshd_approved_ciphers") }}} - - {{{ ansible_set_config_file( -- msg='Configure SSH Daemon to Use FIPS 140-2 Validated MACs: openssh.config', -+ msg='Configure SSH Daemon to Use FIPS 140-2 Validated Ciphers: openssh.config', - file='/etc/crypto-policies/back-ends/openssh.config', - parameter='Ciphers', - value="{{ sshd_approved_ciphers }}", -diff --git a/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/oval/shared.xml b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/oval/shared.xml -index 1879e77398b..9b3b4f1995d 100644 ---- a/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/oval/shared.xml -+++ b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/oval/shared.xml -@@ -1,7 +1,7 @@ - {{%- set PATH = "/etc/crypto-policies/back-ends/openssh.config" -%}} - - -- {{{ oval_metadata("Limit the Message Authentication Codes (MACs) to those which are FIPS-approved.") }}} -+ {{{ oval_metadata("Limit the Ciphers to those which are FIPS-approved.") }}} - - - -diff --git a/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/oval/shared.xml b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/oval/shared.xml -index 92ad7ce3d3f..3afbc1619a4 100644 ---- a/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/oval/shared.xml -+++ b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/oval/shared.xml -@@ -1,7 +1,7 @@ - {{%- set PATH = "/etc/crypto-policies/back-ends/opensshserver.config" -%}} - - -- {{{ oval_metadata("Limit the Message Authentication Codes (Ciphers) to those which are FIPS-approved.") }}} -+ {{{ oval_metadata("Limit the Ciphers to those which are FIPS-approved.") }}} - - - - -From 26383895dfffc5e643295301c052ccd3d77cb906 Mon Sep 17 00:00:00 2001 -From: Carlos Matos -Date: Mon, 19 Jul 2021 09:33:38 -0400 -Subject: [PATCH 3/5] Fixed issue with oval not checking for commented out - line, and updated remediations - ---- - .../rule.yml | 8 ++++---- - .../ansible/shared.yml | 2 +- - .../bash/shared.sh | 10 ++++++++-- - .../oval/shared.xml | 2 +- - .../rule.yml | 6 +++--- - 5 files changed, 17 insertions(+), 11 deletions(-) - -diff --git a/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/rule.yml b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/rule.yml -index cd1553dbdb3..d626ec6e260 100644 ---- a/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/rule.yml -+++ b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/rule.yml -@@ -2,7 +2,7 @@ documentation_complete: true - - prodtype: fedora,rhel8 - --title: 'Configure SSH Daemon to Use FIPS 140-2 Validated Ciphers: openssh.config' -+title: 'Configure SSH Client to Use FIPS 140-2 Validated Ciphers: openssh.config' - - description: |- - Crypto Policies provide a centralized control over crypto algorithms usage of many packages. -@@ -15,7 +15,7 @@ description: |- -
      Ciphers {{{ xccdf_value("sshd_approved_ciphers") }}}
      - - rationale: |- -- Overriding the system crypto policy makes the behavior of the OpenSSH daemon -+ Overriding the system crypto policy makes the behavior of the OpenSSH client - violate expectations, and makes system configuration more fragmented. By - specifying a cipher list with the order of ciphers being in a “strongest to - weakest” orientation, the system will automatically attempt to use the -@@ -32,10 +32,10 @@ references: - disa: CCI-001453 - stigid@rhel8: RHEL-08-010291 - --ocil_clause: 'Crypto Policy for OpenSSH Server is not configured correctly' -+ocil_clause: 'Crypto Policy for OpenSSH client is not configured correctly' - - ocil: |- -- To verify if the OpenSSH daemon uses defined Cipher suite in the Crypto Policy, run: -+ To verify if the OpenSSH client uses defined Cipher suite in the Crypto Policy, run: -
      $ grep -i ciphers /etc/crypto-policies/back-ends/openssh.config
      - and verify that the line matches: -
      Ciphers {{{ xccdf_value("sshd_approved_ciphers") }}}
      -diff --git a/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/ansible/shared.yml b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/ansible/shared.yml -index 7532ba51639..3e637f37e69 100644 ---- a/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/ansible/shared.yml -+++ b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/ansible/shared.yml -@@ -19,7 +19,7 @@ - - name: "{{{ rule_title }}}: Create" - lineinfile: - path: "{{ path }}" -- line: "{{ correct_value }}" -+ line: "CRYPTO_POLICY='{{ correct_value }}'" - create: yes - when: not opensshserver_file.stat.exists or opensshserver_file.stat.size <= correct_value|length - -diff --git a/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/bash/shared.sh b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/bash/shared.sh -index 1bc022f93b6..eaa4463caad 100644 ---- a/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/bash/shared.sh -+++ b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/bash/shared.sh -@@ -5,7 +5,13 @@ - CONF_FILE=/etc/crypto-policies/back-ends/opensshserver.config - correct_value="-oCiphers=${sshd_approved_ciphers}" - --grep -q ${correct_value} ${CONF_FILE} -+# Test if file exists -+test -f ${CONF_FILE} || touch ${CONF_FILE} -+ -+# Ensure CRYPTO_POLICY is not commented out -+sed -i 's/#CRYPTO_POLICY=/CRYPTO_POLICY=/' ${CONF_FILE} -+ -+grep -q "'${correct_value}'" ${CONF_FILE} - - if [[ $? -ne 0 ]]; then - # We need to get the existing value, using PCRE to maintain same regex -@@ -20,6 +26,6 @@ if [[ $? -ne 0 ]]; then - # unintentionally. - # ********** # - # echo correct_value to end -- echo ${correct_value} >> ${CONF_FILE} -+ echo "CRYPTO_POLICY='${correct_value}'" >> ${CONF_FILE} - fi - fi -diff --git a/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/oval/shared.xml b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/oval/shared.xml -index 3afbc1619a4..53919eaae7f 100644 ---- a/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/oval/shared.xml -+++ b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/oval/shared.xml -@@ -16,7 +16,7 @@ - - - {{{ PATH }}} -- ^.*(-oCiphers=\S+).*$ -+ ^(?!#).*(-oCiphers=\S+).*$ - 1 - - -diff --git a/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/rule.yml b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/rule.yml -index 877c6f38db0..0aac8e2038d 100644 ---- a/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/rule.yml -+++ b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/rule.yml -@@ -2,7 +2,7 @@ documentation_complete: true - - prodtype: rhel8 - --title: 'Configure SSH Daemon to Use FIPS 140-2 Validated MACs: opensshserver.config' -+title: 'Configure SSH Server to Use FIPS 140-2 Validated MACs: opensshserver.config' - - description: |- - Crypto Policies provide a centralized control over crypto algorithms usage of many packages. -@@ -15,7 +15,7 @@ description: |- -
      -oCiphers={{{ xccdf_value("sshd_approved_ciphers") }}}
      - - rationale: |- -- Overriding the system crypto policy makes the behavior of the OpenSSH daemon -+ Overriding the system crypto policy makes the behavior of the OpenSSH server - violate expectations, and makes system configuration more fragmented. By - specifying a cipher list with the order of ciphers being in a “strongest to - weakest” orientation, the system will automatically attempt to use the -@@ -35,7 +35,7 @@ references: - ocil_clause: 'Crypto Policy for OpenSSH Server is not configured correctly' - - ocil: |- -- To verify if the OpenSSH daemon uses defined MACs in the Crypto Policy, run: -+ To verify if the OpenSSH server uses defined MACs in the Crypto Policy, run: -
      $ grep -Po '(-oCiphers=\S+)' /etc/crypto-policies/back-ends/opensshserver.config
      - and verify that the line matches: -
      -oCiphers={{{ xccdf_value("sshd_approved_ciphers") }}}
      - -From 7967125f58de7e6843002d674fab90c4429452f3 Mon Sep 17 00:00:00 2001 -From: Carlos Matos -Date: Mon, 19 Jul 2021 09:53:28 -0400 -Subject: [PATCH 4/5] Replace MACs verbiage with ciphers - ---- - .../rule.yml | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/rule.yml b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/rule.yml -index 0aac8e2038d..81ee763831d 100644 ---- a/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/rule.yml -+++ b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/rule.yml -@@ -2,7 +2,7 @@ documentation_complete: true - - prodtype: rhel8 - --title: 'Configure SSH Server to Use FIPS 140-2 Validated MACs: opensshserver.config' -+title: 'Configure SSH Server to Use FIPS 140-2 Validated Ciphers: opensshserver.config' - - description: |- - Crypto Policies provide a centralized control over crypto algorithms usage of many packages. -@@ -35,7 +35,7 @@ references: - ocil_clause: 'Crypto Policy for OpenSSH Server is not configured correctly' - - ocil: |- -- To verify if the OpenSSH server uses defined MACs in the Crypto Policy, run: -+ To verify if the OpenSSH server uses defined ciphers in the Crypto Policy, run: -
      $ grep -Po '(-oCiphers=\S+)' /etc/crypto-policies/back-ends/opensshserver.config
      - and verify that the line matches: -
      -oCiphers={{{ xccdf_value("sshd_approved_ciphers") }}}
      - -From ab21f2d59db725f07b70e3e748ebc96c34e23b79 Mon Sep 17 00:00:00 2001 -From: Carlos Matos -Date: Tue, 20 Jul 2021 09:01:50 -0400 -Subject: [PATCH 5/5] Sorted refs, updated test scenario, fixed duplicate CCE - ---- - .../harden_sshd_ciphers_openssh_conf_crypto_policy/rule.yml | 4 ++-- - .../stig_incorrect_followed_by_correct_commented.fail.sh | 2 +- - .../rule.yml | 4 ++-- - products/rhel8/profiles/stig.profile | 3 --- - shared/references/cce-redhat-avail.txt | 2 -- - tests/data/profile_stability/rhel8/stig.profile | 4 ++-- - tests/data/profile_stability/rhel8/stig_gui.profile | 4 ++-- - 7 files changed, 9 insertions(+), 14 deletions(-) - -diff --git a/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/rule.yml b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/rule.yml -index d626ec6e260..0aa310d9245 100644 ---- a/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/rule.yml -+++ b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/rule.yml -@@ -24,12 +24,12 @@ rationale: |- - severity: medium - - identifiers: -- cce@rhel8: CCE-85870-4 -+ cce@rhel8: CCE-85902-5 - - references: -+ disa: CCI-001453 - nist: AC-17(2) - srg: SRG-OS-000250-GPOS-00093 -- disa: CCI-001453 - stigid@rhel8: RHEL-08-010291 - - ocil_clause: 'Crypto Policy for OpenSSH client is not configured correctly' -diff --git a/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/tests/stig_incorrect_followed_by_correct_commented.fail.sh b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/tests/stig_incorrect_followed_by_correct_commented.fail.sh -index 195f5e8d8ed..6ad1f4fd0f3 100644 ---- a/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/tests/stig_incorrect_followed_by_correct_commented.fail.sh -+++ b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/tests/stig_incorrect_followed_by_correct_commented.fail.sh -@@ -16,4 +16,4 @@ else - fi - - # follow up with correct value --echo "Ciphers ${sshd_approved_ciphers}" >> $configfile -+echo "#Ciphers ${sshd_approved_ciphers}" >> $configfile -diff --git a/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/rule.yml b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/rule.yml -index 81ee763831d..b56f2421f22 100644 ---- a/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/rule.yml -+++ b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_opensshserver_conf_crypto_policy/rule.yml -@@ -24,12 +24,12 @@ rationale: |- - severity: medium - - identifiers: -- cce@rhel8: CCE-85871-2 -+ cce@rhel8: CCE-85897-7 - - references: -+ disa: CCI-001453 - nist: AC-17(2) - srg: SRG-OS-000250-GPOS-00093 -- disa: CCI-001453 - stigid@rhel8: RHEL-08-010290 - - ocil_clause: 'Crypto Policy for OpenSSH Server is not configured correctly' -diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index a3783efafd6..7270a8f91f2 100644 ---- a/products/rhel8/profiles/stig.profile -+++ b/products/rhel8/profiles/stig.profile -@@ -50,11 +50,8 @@ selections: - - var_password_pam_retry=3 - - var_password_pam_minlen=15 - - var_sshd_set_keepalive=0 --<<<<<<< HEAD - - sshd_approved_macs=stig --======= - - sshd_approved_ciphers=stig -->>>>>>> 4d62df6b2 (New rules for RHEL-08-010291) - - sshd_idle_timeout_value=10_minutes - - var_accounts_passwords_pam_faillock_deny=3 - - var_accounts_passwords_pam_faillock_fail_interval=900 -diff --git a/shared/references/cce-redhat-avail.txt b/shared/references/cce-redhat-avail.txt -index 036d34cea1d..665f903ead4 100644 ---- a/shared/references/cce-redhat-avail.txt -+++ b/shared/references/cce-redhat-avail.txt -@@ -33,11 +33,9 @@ CCE-85892-8 - CCE-85893-6 - CCE-85895-1 - CCE-85896-9 --CCE-85897-7 - CCE-85898-5 - CCE-85900-9 - CCE-85901-7 --CCE-85902-5 - CCE-85903-3 - CCE-85904-1 - CCE-85905-8 -diff --git a/tests/data/profile_stability/rhel8/stig.profile b/tests/data/profile_stability/rhel8/stig.profile -index 05335cc38fb..7d59cfff625 100644 ---- a/tests/data/profile_stability/rhel8/stig.profile -+++ b/tests/data/profile_stability/rhel8/stig.profile -@@ -145,10 +145,10 @@ selections: - - grub2_uefi_admin_username - - grub2_uefi_password - - grub2_vsyscall_argument --- harden_sshd_macs_openssh_conf_crypto_policy --- harden_sshd_macs_opensshserver_conf_crypto_policy - - harden_sshd_ciphers_openssh_conf_crypto_policy - - harden_sshd_ciphers_opensshserver_conf_crypto_policy -+- harden_sshd_macs_openssh_conf_crypto_policy -+- harden_sshd_macs_opensshserver_conf_crypto_policy - - install_smartcard_packages - - installed_OS_is_vendor_supported - - kerberos_disable_no_keytab -diff --git a/tests/data/profile_stability/rhel8/stig_gui.profile b/tests/data/profile_stability/rhel8/stig_gui.profile -index a0adc835a0d..2c2daad6f6d 100644 ---- a/tests/data/profile_stability/rhel8/stig_gui.profile -+++ b/tests/data/profile_stability/rhel8/stig_gui.profile -@@ -156,10 +156,10 @@ selections: - - grub2_uefi_admin_username - - grub2_uefi_password - - grub2_vsyscall_argument --- harden_sshd_macs_openssh_conf_crypto_policy --- harden_sshd_macs_opensshserver_conf_crypto_policy - - harden_sshd_ciphers_openssh_conf_crypto_policy - - harden_sshd_ciphers_opensshserver_conf_crypto_policy -+- harden_sshd_macs_openssh_conf_crypto_policy -+- harden_sshd_macs_opensshserver_conf_crypto_policy - - install_smartcard_packages - - installed_OS_is_vendor_supported - - kerberos_disable_no_keytab diff --git a/SOURCES/scap-security-guide-0.1.58-rhel8_stig_08_010350-PR_7231.patch b/SOURCES/scap-security-guide-0.1.58-rhel8_stig_08_010350-PR_7231.patch deleted file mode 100644 index 1d46ab4..0000000 --- a/SOURCES/scap-security-guide-0.1.58-rhel8_stig_08_010350-PR_7231.patch +++ /dev/null @@ -1,546 +0,0 @@ -From f7bb6fc32091ad9d10ec8253505086670eb135ba Mon Sep 17 00:00:00 2001 -From: Carlos Matos -Date: Mon, 12 Jul 2021 10:06:41 -0400 -Subject: [PATCH 1/4] Initial commit for RHEL-08-010350 STIG rule - ---- - .../ansible/shared.yml | 2 +- - .../bash/shared.sh | 2 +- - .../oval/shared.xml | 44 +++++++++++++------ - .../rule.yml | 26 ++++++----- - .../tests/correct_group.pass.sh | 2 +- - .../tests/incorrect_group.fail.sh | 8 +++- - products/rhel8/profiles/stig.profile | 1 + - shared/references/cce-redhat-avail.txt | 1 - - .../data/profile_stability/rhel8/stig.profile | 1 + - .../profile_stability/rhel8/stig_gui.profile | 1 + - 10 files changed, 57 insertions(+), 31 deletions(-) - -diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/ansible/shared.yml b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/ansible/shared.yml -index f90c8e26b15..e0bb6b0dc1a 100644 ---- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/ansible/shared.yml -+++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/ansible/shared.yml -@@ -1,4 +1,4 @@ --# platform = multi_platform_sle -+# platform = multi_platform_sle,Red Hat Enterprise Linux 8,multi_platform_fedora - # reboot = false - # strategy = restrict - # complexity = high -diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/bash/shared.sh b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/bash/shared.sh -index fba25be6132..d5fb89487d5 100644 ---- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/bash/shared.sh -+++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/bash/shared.sh -@@ -1,4 +1,4 @@ --# platform = multi_platform_sle -+# platform = multi_platform_sle,Red Hat Enterprise Linux 8,multi_platform_fedora - - find /lib \ - /lib64 \ -diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/oval/shared.xml b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/oval/shared.xml -index 00f733ddc78..e3d64a8390e 100644 ---- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/oval/shared.xml -+++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/oval/shared.xml -@@ -1,27 +1,45 @@ - -- -+ - {{{ oval_metadata(" -- Checks that system-wide library files in /lib, /lib64, /usr/lib, /usr/lib64 -- are owned by root. -+ Checks that /lib, /lib64, /usr/lib, /usr/lib64, and -+ objects therein, are group-owned by root. - ") }}} -- -- -+ -+ -+ - - - -- -- -+ -+ - - -- -- -- ^\/lib(64)?|^\/usr\/lib(64)? -+ -+ -+ -+ -+ -+ -+ ^\/lib(|64)?\/|^\/usr\/lib(|64)?\/ -+ -+ state_group_ownership_libraries_not_root -+ group_dir_perms_state_symlink -+ -+ -+ -+ -+ ^\/lib(|64)?\/|^\/usr\/lib(|64)?\/ - ^.*$ -- group_permissions_for_system_wide_files_are_not_root -+ state_group_ownership_libraries_not_root -+ group_dir_perms_state_symlink - - -- -+ - 0 - -+ -+ -+ symbolic link -+ -+ - -diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/rule.yml b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/rule.yml -index ff905dd08d..83371b8b9b 100644 ---- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/rule.yml -+++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/rule.yml -@@ -1,6 +1,6 @@ - documentation_complete: true - --prodtype: sle12,sle15 -+prodtype: sle12,sle15,rhel8,fedora - - title: |- - Verify the system-wide library files in directories -@@ -17,18 +17,18 @@ description: |- - All system-wide shared library files should be protected from unauthorised - access. If any of these files is not owned by root, correct its owner with - the following command: --
      $ sudo chgrp root DIR
      -+
      $ sudo chgrp root FILE
      - - rationale: |- -- If the operating system 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. -+ If the operating system 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 operating systems with software libraries that are -- accessible and configurable, as in the case of interpreted languages. Software libraries -- also include privileged programs which execute with escalated privileges. Only qualified -- and authorized individuals must be allowed to obtain access to information system components -- for purposes of initiating changes, including upgrades and modifications. -+ This requirement applies to operating systems with software libraries that are -+ accessible and configurable, as in the case of interpreted languages. Software libraries -+ also include privileged programs which execute with escalated privileges. Only qualified -+ and authorized individuals must be allowed to obtain access to information system components -+ for purposes of initiating changes, including upgrades and modifications. - - severity: medium - -@@ -45,7 +45,7 @@ references: - stigid@sle12: SLES-12-010875 - stigid@sle15: SLES-15-010355 - --ocil_clause: 'any system wide library directory is returned' -+ocil_clause: 'system wide library files are not group owned by root' - - ocil: |- - System-wide library files are stored in the following directories: -@@ -54,6 +54,6 @@ ocil: |- - /usr/lib - /usr/lib64 - -- To find if system-wide library files stored in these directories are group-owned by -+ To find if system-wide library files stored in these directories are not group-owned by - root run the following command for each directory DIR: -
      $ sudo find -L DIR ! -group root -type f 
      -diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/correct_group.pass.sh b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/correct_group.pass.sh -index 7a8e65b4f3a..8722c2add65 100644 ---- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/correct_group.pass.sh -+++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/correct_group.pass.sh -@@ -4,6 +4,6 @@ for SYSLIBDIRS in /lib /lib64 /usr/lib /usr/lib64 - do - if [[ -d $SYSLIBDIRS ]] - then -- find $SYSLIBDIRS ! -group root -type f -exec chgrp root '{}' \; -+ find $SYSLIBDIRS ! -group root -exec chgrp root '{}' \; - fi - done -diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/incorrect_group.fail.sh b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/incorrect_group.fail.sh -index a4b99a9da14..1079046d14e 100644 ---- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/incorrect_group.fail.sh -+++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/incorrect_group.fail.sh -@@ -1,6 +1,10 @@ - #!/bin/bash -- --for TESTFILE in /lib/test_me /lib64/test_me /usr/lib/test_me /usr/lib64/test_me -+ -+# There is a high probability that there will be nested subdirectories within the -+# shared system library directories, therefore we should test to make sure we -+# cover this. - cmm -+test -d /usr/lib/test_dir || mkdir -p /usr/lib/test_dir && chown nobody.nobody /usr/lib/test_dir -+for TESTFILE in /lib/test_me /lib64/test_me /usr/lib/test_me /usr/lib64/test_me /usr/lib/test_dir/test_me - do - if [[ ! -f $TESTFILE ]] - then -diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index 2508008d511..9569b2ad629 100644 ---- a/products/rhel8/profiles/stig.profile -+++ b/products/rhel8/profiles/stig.profile -@@ -207,6 +207,7 @@ selections: - - file_ownership_library_dirs - - # RHEL-08-010350 -+ - root_permissions_syslibrary_files - - # RHEL-08-010360 - - package_aide_installed -diff --git a/shared/references/cce-redhat-avail.txt b/shared/references/cce-redhat-avail.txt -index f139d2ed76f..e0eb5ac045c 100644 ---- a/shared/references/cce-redhat-avail.txt -+++ b/shared/references/cce-redhat-avail.txt -@@ -662,7 +662,6 @@ CCE-86518-8 - CCE-86520-4 - CCE-86521-2 - CCE-86522-0 --CCE-86523-8 - CCE-86524-6 - CCE-86525-3 - CCE-86526-1 -diff --git a/tests/data/profile_stability/rhel8/stig.profile b/tests/data/profile_stability/rhel8/stig.profile -index 765487c6f16..ebe7a91f45d 100644 ---- a/tests/data/profile_stability/rhel8/stig.profile -+++ b/tests/data/profile_stability/rhel8/stig.profile -@@ -221,6 +221,7 @@ selections: - - postfix_client_configure_mail_alias - - require_emergency_target_auth - - require_singleuser_auth -+- root_permissions_syslibrary_files - - rsyslog_cron_logging - - rsyslog_remote_access_monitoring - - rsyslog_remote_loghost -diff --git a/tests/data/profile_stability/rhel8/stig_gui.profile b/tests/data/profile_stability/rhel8/stig_gui.profile -index 9fd80aac727..97f940dc9ed 100644 ---- a/tests/data/profile_stability/rhel8/stig_gui.profile -+++ b/tests/data/profile_stability/rhel8/stig_gui.profile -@@ -232,6 +232,7 @@ selections: - - postfix_client_configure_mail_alias - - require_emergency_target_auth - - require_singleuser_auth -+- root_permissions_syslibrary_files - - rsyslog_cron_logging - - rsyslog_remote_access_monitoring - - rsyslog_remote_loghost - -From f16c085894e4dc7974637d44bf226d3acf19f3d1 Mon Sep 17 00:00:00 2001 -From: Carlos Matos -Date: Mon, 12 Jul 2021 16:17:23 -0400 -Subject: [PATCH 2/4] Updated existing rules for syslibrary files/dirs - ---- - .../ansible/shared.yml | 6 ++- - .../bash/shared.sh | 7 +++ - .../dir_group_ownership_library_dirs/rule.yml | 4 ++ - .../tests/all_dirs_ok.pass.sh | 3 +- - .../nobody_group_owned_dir_on_lib.fail.sh | 3 +- - .../ansible/shared.yml | 23 ++++++++-- - .../oval/shared.xml | 44 ++++++------------- - .../tests/correct_group.pass.sh | 4 +- - .../tests/incorrect_group.fail.sh | 8 +--- - products/rhel8/profiles/stig.profile | 1 + - shared/references/cce-redhat-avail.txt | 1 - - .../data/profile_stability/rhel8/stig.profile | 1 + - .../profile_stability/rhel8/stig_gui.profile | 1 + - 13 files changed, 59 insertions(+), 47 deletions(-) - create mode 100644 linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/bash/shared.sh - -diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/ansible/shared.yml b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/ansible/shared.yml -index 80562991ac5..f6f2ab48afd 100644 ---- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/ansible/shared.yml -+++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/ansible/shared.yml -@@ -1,4 +1,4 @@ --# platform = multi_platform_sle -+# platform = multi_platform_sle,Red Hat Enterprise Linux 8,multi_platform_fedora - # reboot = false - # strategy = restrict - # complexity = medium -@@ -20,4 +20,6 @@ - state: "directory" - mode: "{{ item.mode }}" - with_items: "{{ library_dirs_not_group_owned_by_root.files }}" -- when: library_dirs_not_group_owned_by_root.matched > 0 -+ when: -+ - library_dirs_not_group_owned_by_root.matched > 0 -+ - item.gid != 0 -diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/bash/shared.sh b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/bash/shared.sh -new file mode 100644 -index 00000000000..365b9833188 ---- /dev/null -+++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/bash/shared.sh -@@ -0,0 +1,7 @@ -+# platform = multi_platform_sle,Red Hat Enterprise Linux 8,multi_platform_fedora -+ -+find /lib \ -+/lib64 \ -+/usr/lib \ -+/usr/lib64 \ -+\! -group root -type d -exec chgrp root '{}' \; -diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/rule.yml b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/rule.yml -index 4ff043270c8..cd02d95cb1c 100644 ---- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/rule.yml -+++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/rule.yml -@@ -1,5 +1,7 @@ - documentation_complete: true - -+prodtype: sle12,sle15,rhel8,fedora -+ - title: 'Verify that Shared Library Directories Have Root Group Ownership' - - description: |- -diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/tests/all_dirs_ok.pass.sh b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/tests/all_dirs_ok.pass.sh -index 2a38e9a88bc..50fdb17bd2e 100644 ---- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/tests/all_dirs_ok.pass.sh -+++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/tests/all_dirs_ok.pass.sh -@@ -1,4 +1,5 @@ --# platform = multi_platform_sle -+# platform = multi_platform_sle,Red Hat Enterprise Linux 8,multi_platform_fedora -+ - DIRS="/lib /lib64 /usr/lib /usr/lib64" - for dirPath in $DIRS; do - find "$dirPath" -type d -exec chgrp root '{}' \; -diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/tests/nobody_group_owned_dir_on_lib.fail.sh b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/tests/nobody_group_owned_dir_on_lib.fail.sh -index f794d9e878f..277bd7d60de 100644 ---- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/tests/nobody_group_owned_dir_on_lib.fail.sh -+++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/tests/nobody_group_owned_dir_on_lib.fail.sh -@@ -1,4 +1,5 @@ --# platform = multi_platform_sle -+# platform = multi_platform_sle,Red Hat Enterprise Linux 8,multi_platform_fedora -+ - DIRS="/lib /lib64" - for dirPath in $DIRS; do - mkdir -p "$dirPath/testme" && chown root:nogroup "$dirPath/testme" -diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/ansible/shared.yml b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/ansible/shared.yml -index e0bb6b0dc1a..ab3e85c4f7c 100644 ---- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/ansible/shared.yml -+++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/ansible/shared.yml -@@ -4,7 +4,24 @@ - # complexity = high - # disruption = medium - --- name: "Set ownership to root of system-wide library files" -- command: "find {{ item }} ! -group root -type f -exec chgrp root '{}' \\;" -- with_items: [ '/lib', '/lib64', '/usr/lib', '/usr/lib64' ] -+- name: "Read list libraries without root ownership" -+ find: -+ paths: -+ - "/usr/lib" -+ - "/usr/lib64" -+ - "/lib" -+ - "/lib64" -+ file_type: "file" -+ register: library_files_not_group_owned_by_root -+ -+- name: "Set group ownership of system library files to root" -+ file: -+ path: "{{ item.path }}" -+ group: "root" -+ state: "file" -+ mode: "{{ item.mode }}" -+ with_items: "{{ library_files_not_group_owned_by_root.files }}" -+ when: -+ - library_files_not_group_owned_by_root.matched > 0 -+ - item.gid != 0 - -diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/oval/shared.xml b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/oval/shared.xml -index e3d64a8390e..926ff70d1e4 100644 ---- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/oval/shared.xml -+++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/oval/shared.xml -@@ -1,45 +1,27 @@ - -- -+ - {{{ oval_metadata(" -- Checks that /lib, /lib64, /usr/lib, /usr/lib64, and -- objects therein, are group-owned by root. -+ Checks that system-wide library files in /lib, /lib64, /usr/lib, /usr/lib64 -+ are owned by root. - ") }}} -- -- -- -+ -+ - - - -- -- -+ -+ - - -- -- -- -- -- -- -- ^\/lib(|64)?\/|^\/usr\/lib(|64)?\/ -- -- state_group_ownership_libraries_not_root -- group_dir_perms_state_symlink -- -- -- -- -- ^\/lib(|64)?\/|^\/usr\/lib(|64)?\/ -+ -+ -+ ^\/lib\/|^\/lib64\/|^\/usr\/lib\/|^\/usr\/lib64\/ - ^.*$ -- state_group_ownership_libraries_not_root -- group_dir_perms_state_symlink -+ group_permissions_for_system_wide_files_are_not_root - - -- -+ - 0 - -- -- -- symbolic link -- -- - -diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/correct_group.pass.sh b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/correct_group.pass.sh -index 8722c2add65..a4ae2854db1 100644 ---- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/correct_group.pass.sh -+++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/correct_group.pass.sh -@@ -1,9 +1,9 @@ --#!/bin/bash -+# platform = multi_platform_sle,Red Hat Enterprise Linux 8,multi_platform_fedora - - for SYSLIBDIRS in /lib /lib64 /usr/lib /usr/lib64 - do - if [[ -d $SYSLIBDIRS ]] - then -- find $SYSLIBDIRS ! -group root -exec chgrp root '{}' \; -+ find $SYSLIBDIRS ! -group root -type f -exec chgrp root '{}' \; - fi - done -diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/incorrect_group.fail.sh b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/incorrect_group.fail.sh -index 1079046d14e..c96f65b989c 100644 ---- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/incorrect_group.fail.sh -+++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/incorrect_group.fail.sh -@@ -1,10 +1,6 @@ --#!/bin/bash -+# platform = multi_platform_sle,Red Hat Enterprise Linux 8,multi_platform_fedora - --# There is a high probability that there will be nested subdirectories within the --# shared system library directories, therefore we should test to make sure we --# cover this. - cmm --test -d /usr/lib/test_dir || mkdir -p /usr/lib/test_dir && chown nobody.nobody /usr/lib/test_dir --for TESTFILE in /lib/test_me /lib64/test_me /usr/lib/test_me /usr/lib64/test_me /usr/lib/test_dir/test_me -+for TESTFILE in /lib/test_me /lib64/test_me /usr/lib/test_me /usr/lib64/test_me - do - if [[ ! -f $TESTFILE ]] - then -diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index 9569b2ad629..059750f59d0 100644 ---- a/products/rhel8/profiles/stig.profile -+++ b/products/rhel8/profiles/stig.profile -@@ -208,6 +208,7 @@ selections: - - # RHEL-08-010350 - - root_permissions_syslibrary_files -+ - dir_group_ownership_library_dirs - - # RHEL-08-010360 - - package_aide_installed -diff --git a/shared/references/cce-redhat-avail.txt b/shared/references/cce-redhat-avail.txt -index e0eb5ac045c..ae3375fd4d4 100644 ---- a/shared/references/cce-redhat-avail.txt -+++ b/shared/references/cce-redhat-avail.txt -@@ -34,7 +34,6 @@ CCE-85890-2 - CCE-85891-0 - CCE-85892-8 - CCE-85893-6 --CCE-85894-4 - CCE-85895-1 - CCE-85896-9 - CCE-85897-7 -diff --git a/tests/data/profile_stability/rhel8/stig.profile b/tests/data/profile_stability/rhel8/stig.profile -index ebe7a91f45d..49cce4d81cc 100644 ---- a/tests/data/profile_stability/rhel8/stig.profile -+++ b/tests/data/profile_stability/rhel8/stig.profile -@@ -99,6 +99,7 @@ selections: - - dconf_gnome_login_banner_text - - dconf_gnome_screensaver_idle_delay - - dconf_gnome_screensaver_lock_enabled -+- dir_group_ownership_library_dirs - - dir_perms_world_writable_root_owned - - dir_perms_world_writable_sticky_bits - - directory_permissions_var_log_audit -diff --git a/tests/data/profile_stability/rhel8/stig_gui.profile b/tests/data/profile_stability/rhel8/stig_gui.profile -index 97f940dc9ed..943a57d3eb8 100644 ---- a/tests/data/profile_stability/rhel8/stig_gui.profile -+++ b/tests/data/profile_stability/rhel8/stig_gui.profile -@@ -110,6 +110,7 @@ selections: - - dconf_gnome_login_banner_text - - dconf_gnome_screensaver_idle_delay - - dconf_gnome_screensaver_lock_enabled -+- dir_group_ownership_library_dirs - - dir_perms_world_writable_root_owned - - dir_perms_world_writable_sticky_bits - - directory_permissions_var_log_audit - -From 71deac482753a13a9f98d6d7382b13e9031a2ce4 Mon Sep 17 00:00:00 2001 -From: Carlos Matos -Date: Tue, 13 Jul 2021 13:40:25 -0400 -Subject: [PATCH 3/4] Updated test for nobody_group_owned_dir rule - ---- - .../tests/nobody_group_owned_dir_on_lib.fail.sh | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/tests/nobody_group_owned_dir_on_lib.fail.sh b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/tests/nobody_group_owned_dir_on_lib.fail.sh -index 277bd7d60de..043ad6b2dee 100644 ---- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/tests/nobody_group_owned_dir_on_lib.fail.sh -+++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/tests/nobody_group_owned_dir_on_lib.fail.sh -@@ -1,6 +1,6 @@ - # platform = multi_platform_sle,Red Hat Enterprise Linux 8,multi_platform_fedora - --DIRS="/lib /lib64" -+DIRS="/lib /lib64 /usr/lib /usr/lib64" - for dirPath in $DIRS; do -- mkdir -p "$dirPath/testme" && chown root:nogroup "$dirPath/testme" -+ mkdir -p "$dirPath/testme" && chgrp nobody "$dirPath/testme" - done - -From 087359679e4f6794054b6772df6c84c4cd1fee94 Mon Sep 17 00:00:00 2001 -From: Carlos Matos -Date: Wed, 14 Jul 2021 10:04:25 -0400 -Subject: [PATCH 4/4] Added recommended $ to end of regex pattern to properly - match dirs - ---- - .../root_permissions_syslibrary_files/oval/shared.xml | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/oval/shared.xml b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/oval/shared.xml -index 926ff70d1e4..f5ca9380b55 100644 ---- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/oval/shared.xml -+++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/oval/shared.xml -@@ -16,7 +16,7 @@ - - -- ^\/lib\/|^\/lib64\/|^\/usr\/lib\/|^\/usr\/lib64\/ -+ ^\/lib(|64)?$|^\/usr\/lib(|64)?$ - ^.*$ - group_permissions_for_system_wide_files_are_not_root - diff --git a/SOURCES/scap-security-guide-0.1.58-rhel8_stig_08_020270-PR_7276.patch b/SOURCES/scap-security-guide-0.1.58-rhel8_stig_08_020270-PR_7276.patch deleted file mode 100644 index eef1f38..0000000 --- a/SOURCES/scap-security-guide-0.1.58-rhel8_stig_08_020270-PR_7276.patch +++ /dev/null @@ -1,120 +0,0 @@ -From eed29b1db9dd62d014842340abb8601570fe6655 Mon Sep 17 00:00:00 2001 -From: Carlos Matos -Date: Thu, 22 Jul 2021 14:26:49 -0400 -Subject: [PATCH] New rule for RHEL-08-020270 - ---- - .../account_emergency_expire_date/rule.yml | 52 +++++++++++++++++++ - products/rhel8/profiles/stig.profile | 1 + - shared/references/cce-redhat-avail.txt | 1 - - .../data/profile_stability/rhel8/stig.profile | 1 + - .../profile_stability/rhel8/stig_gui.profile | 1 + - 5 files changed, 55 insertions(+), 1 deletion(-) - create mode 100644 linux_os/guide/system/accounts/accounts-restrictions/account_expiration/account_emergency_expire_date/rule.yml - -diff --git a/linux_os/guide/system/accounts/accounts-restrictions/account_expiration/account_emergency_expire_date/rule.yml b/linux_os/guide/system/accounts/accounts-restrictions/account_expiration/account_emergency_expire_date/rule.yml -new file mode 100644 -index 0000000000..a47c7f39bc ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-restrictions/account_expiration/account_emergency_expire_date/rule.yml -@@ -0,0 +1,52 @@ -+documentation_complete: true -+ -+prodtype: fedora,rhel8 -+ -+title: 'Assign Expiration Date to Emergency Accounts' -+ -+description: |- -+ Emergency accounts are privileged accounts established in response to -+ crisis situations where the need for rapid account activation is required. -+ In the event emergency accounts are required, configure the system to -+ terminate them after a documented time period. For every emergency account, -+ run the following command to set an expiration date on it, substituting -+ ACCOUNT_NAME and YYYY-MM-DD -+ appropriately: -+
      $ sudo chage -E YYYY-MM-DD ACCOUNT_NAME
      -+ YYYY-MM-DD indicates the documented expiration date for the -+ account. For U.S. Government systems, the operating system must be -+ configured to automatically terminate these types of accounts after a -+ period of 72 hours. -+ -+rationale: |- -+ If emergency 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 emergency accounts -+ must be set upon account creation. -+
      -+ -+severity: medium -+ -+identifiers: -+ cce@rhel8: CCE-85910-8 -+ -+references: -+ cis-csc: 1,12,13,14,15,16,18,3,5,7,8 -+ cobit5: DSS01.03,DSS03.05,DSS05.04,DSS05.05,DSS05.07,DSS06.03 -+ disa: CCI-000016,CCI-001682 -+ isa-62443-2009: 4.3.3.2.2,4.3.3.5.1,4.3.3.5.2,4.3.3.7.2,4.3.3.7.3,4.3.3.7.4 -+ isa-62443-2013: 'SR 1.1,SR 1.2,SR 1.3,SR 1.4,SR 1.5,SR 1.7,SR 1.8,SR 1.9,SR 2.1,SR 6.2' -+ iso27001-2013: A.12.4.1,A.12.4.3,A.6.1.2,A.7.1.1,A.9.1.2,A.9.2.1,A.9.2.2,A.9.2.3,A.9.2.4,A.9.2.6,A.9.3.1,A.9.4.1,A.9.4.2,A.9.4.3,A.9.4.4,A.9.4.5 -+ nist: AC-2(2),AC-2(3),CM-6(a) -+ nist-csf: DE.CM-1,DE.CM-3,PR.AC-1,PR.AC-4,PR.AC-6 -+ srg: SRG-OS-000123-GPOS-00064,SRG-OS-000002-GPOS-00002 -+ stigid@rhel8: RHEL-08-020270 -+ vmmsrg: SRG-OS-000002-VMM-000020,SRG-OS-000123-VMM-000620 -+ -+ocil_clause: 'any emergency accounts have no expiration date set or do not expire within a documented time frame' -+ -+ocil: |- -+ For every emergency account, run the following command -+ to obtain its account aging and expiration information: -+
      $ sudo chage -l ACCOUNT_NAME
      -+ Verify each of these accounts has an expiration date set as documented. -diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index 7270a8f91f..c4b9d02af5 100644 ---- a/products/rhel8/profiles/stig.profile -+++ b/products/rhel8/profiles/stig.profile -@@ -558,6 +558,7 @@ selections: - - account_disable_post_pw_expiration - - # RHEL-08-020270 -+ - account_emergency_expire_date - - # RHEL-08-020280 - - accounts_password_pam_ocredit -diff --git a/shared/references/cce-redhat-avail.txt b/shared/references/cce-redhat-avail.txt -index 665f903ead..f500179292 100644 ---- a/shared/references/cce-redhat-avail.txt -+++ b/shared/references/cce-redhat-avail.txt -@@ -43,7 +43,6 @@ CCE-85906-6 - CCE-85907-4 - CCE-85908-2 - CCE-85909-0 --CCE-85910-8 - CCE-85911-6 - CCE-85912-4 - CCE-85913-2 -diff --git a/tests/data/profile_stability/rhel8/stig.profile b/tests/data/profile_stability/rhel8/stig.profile -index 7d59cfff62..72e205b695 100644 ---- a/tests/data/profile_stability/rhel8/stig.profile -+++ b/tests/data/profile_stability/rhel8/stig.profile -@@ -24,6 +24,7 @@ documentation_complete: true - reference: https://public.cyber.mil/stigs/downloads/?_dl_facet_stigs=operating-systems%2Cunix-linux - selections: - - account_disable_post_pw_expiration -+- account_emergency_expire_date - - account_temp_expire_date - - accounts_have_homedir_login_defs - - accounts_logon_fail_delay -diff --git a/tests/data/profile_stability/rhel8/stig_gui.profile b/tests/data/profile_stability/rhel8/stig_gui.profile -index 2c2daad6f6..cc21621617 100644 ---- a/tests/data/profile_stability/rhel8/stig_gui.profile -+++ b/tests/data/profile_stability/rhel8/stig_gui.profile -@@ -35,6 +35,7 @@ documentation_complete: true - reference: https://public.cyber.mil/stigs/downloads/?_dl_facet_stigs=operating-systems%2Cunix-linux - selections: - - account_disable_post_pw_expiration -+- account_emergency_expire_date - - account_temp_expire_date - - accounts_have_homedir_login_defs - - accounts_logon_fail_delay diff --git a/SOURCES/scap-security-guide-0.1.58-rhel_modular_cis-PR_6976.patch b/SOURCES/scap-security-guide-0.1.58-rhel_modular_cis-PR_6976.patch deleted file mode 100644 index 4bd97db..0000000 --- a/SOURCES/scap-security-guide-0.1.58-rhel_modular_cis-PR_6976.patch +++ /dev/null @@ -1,5348 +0,0 @@ -From 7f366ca6916df9dd3cc3b50e3118adad77bcc04c Mon Sep 17 00:00:00 2001 -From: Alex Haydock -Date: Tue, 29 Jun 2021 14:37:28 +0100 -Subject: [PATCH 01/55] Split RHEL 8 CIS profile into modular files - per-benchmark - ---- - products/rhel8/profiles/cis.profile | 1080 +---------------- - products/rhel8/profiles/cis_server_l1.profile | 22 + - .../rhel8/profiles/cis_workstation_l1.profile | 22 + - .../rhel8/profiles/cis_workstation_l2.profile | 22 + - 4 files changed, 72 insertions(+), 1074 deletions(-) - create mode 100644 products/rhel8/profiles/cis_server_l1.profile - create mode 100644 products/rhel8/profiles/cis_workstation_l1.profile - create mode 100644 products/rhel8/profiles/cis_workstation_l2.profile - -diff --git a/products/rhel8/profiles/cis.profile b/products/rhel8/profiles/cis.profile -index c22ae86d076..4a00c24e0f7 100644 ---- a/products/rhel8/profiles/cis.profile -+++ b/products/rhel8/profiles/cis.profile -@@ -1,1090 +1,22 @@ - documentation_complete: true - - metadata: -- version: 1.0.0 -+ version: 1.0.1 - SMEs: - - vojtapolasek - - yuumasato - - reference: https://www.cisecurity.org/benchmark/red_hat_linux/ - --title: 'CIS Red Hat Enterprise Linux 8 Benchmark' -+title: 'CIS Red Hat Enterprise Linux 8 Benchmark for Level 2 - Server' - - description: |- -- This profile defines a baseline that aligns to the Center for Internet Security® -- Red Hat Enterprise Linux 8 Benchmark™, v1.0.0, released 09-30-2019. -+ This profile defines a baseline that aligns to the "Level 2 - Server" -+ configuration from the Center for Internet Security® Red Hat Enterprise -+ Linux 8 Benchmark™, v1.0.1, released 2021-05-19. - - This profile includes Center for Internet Security® - Red Hat Enterprise Linux 8 CIS Benchmarks™ content. - - selections: -- # Necessary for dconf rules -- - dconf_db_up_to_date -- -- ### Partitioning -- - mount_option_home_nodev -- -- ## 1.1 Filesystem Configuration -- -- ### 1.1.1 Disable unused filesystems -- -- #### 1.1.1.1 Ensure mounting cramfs filesystems is disabled (Scored) -- - kernel_module_cramfs_disabled -- -- #### 1.1.1.2 Ensure mounting of vFAT filesystems is limited (Not Scored) -- -- -- #### 1.1.1.3 Ensure mounting of squashfs filesystems is disabled (Scored) -- - kernel_module_squashfs_disabled -- -- #### 1.1.1.4 Ensure mounting of udf filesystems is disabled (Scored) -- - kernel_module_udf_disabled -- -- ### 1.1.2 Ensure /tmp is configured (Scored) -- - partition_for_tmp -- -- ### 1.1.3 Ensure nodev option set on /tmp partition (Scored) -- - mount_option_tmp_nodev -- -- ### 1.1.4 Ensure nosuid option set on /tmp partition (Scored) -- - mount_option_tmp_nosuid -- -- ### 1.1.5 Ensure noexec option set on /tmp partition (Scored) -- - mount_option_tmp_noexec -- -- ### 1.1.6 Ensure separate partition exists for /var (Scored) -- - partition_for_var -- -- ### 1.1.7 Ensure separate partition exists for /var/tmp (Scored) -- - partition_for_var_tmp -- -- ### 1.1.8 Ensure nodev option set on /var/tmp partition (Scored) -- - mount_option_var_tmp_nodev -- -- ### 1.1.9 Ensure nosuid option set on /var/tmp partition (Scored) -- - mount_option_var_tmp_nosuid -- -- ### 1.1.10 Ensure noexec option set on /var/tmp partition (Scored) -- - mount_option_var_tmp_noexec -- -- ### 1.1.11 Ensure separate partition exists for /var/log (Scored) -- - partition_for_var_log -- -- ### 1.1.12 Ensure separate partition exists for /var/log/audit (Scored) -- - partition_for_var_log_audit -- -- ### 1.1.13 Ensure separate partition exists for /home (Scored) -- - partition_for_home -- -- ### 1.1.14 Ensure nodev option set on /home partition (Scored) -- - mount_option_home_nodev -- -- ### 1.1.15 Ensure nodev option set on /dev/shm partition (Scored) -- - mount_option_dev_shm_nodev -- -- ### 1.1.16 Ensure nosuid option set on /dev/shm partition (Scored) -- - mount_option_dev_shm_nosuid -- -- ### 1.1.17 Ensure noexec option set on /dev/shm partition (Scored) -- - mount_option_dev_shm_noexec -- -- ### 1.1.18 Ensure nodev option set on removable media partitions (Not Scored) -- - mount_option_nodev_removable_partitions -- -- ### 1.1.19 Ensure nosuid option set on removable media partitions (Not Scored) -- - mount_option_nosuid_removable_partitions -- -- ### 1.1.20 Ensure noexec option set on removable media partitions (Not Scored) -- - mount_option_noexec_removable_partitions -- -- ### 1.1.21 Ensure sticky bit is set on all world-writable directories (Scored) -- - dir_perms_world_writable_sticky_bits -- -- ### 1.1.22 Disable Automounting (Scored) -- - service_autofs_disabled -- -- ### 1.1.23 Disable USB Storage (Scored) -- - kernel_module_usb-storage_disabled -- -- ## 1.2 Configure Software Updates -- -- ### 1.2.1 Ensure Red Hat Subscription Manager connection is configured (Not Scored) -- # NEEDS RULE - https://github.com/ComplianceAsCode/content/issues/5218 -- -- ### 1.2.2 Disable the rhnsd Daemon (Not Scored) -- - service_rhnsd_disabled -- -- ### 1.2.3 Ensure GPG keys are configured (Not Scored) -- - ensure_redhat_gpgkey_installed -- -- ### 1.2.4 Ensure gpgcheck is globally activated (Scored) -- - ensure_gpgcheck_globally_activated -- -- ### 1.2.5 Ensure package manager repositories are configured (Scored) -- # NEEDS RULE - https://github.com/ComplianceAsCode/content/issues/5219 -- -- ## 1.3 Configure sudo -- -- ### 1.3.1 Ensure sudo is installed (Scored) -- - package_sudo_installed -- -- ### 1.3.2 Ensure sudo commands use pty (Scored) -- - sudo_add_use_pty -- -- ### 1.3.3 Ensure sudo log file exists (Scored) -- - sudo_custom_logfile -- -- ## 1.4 Filesystem Integrity Checking -- -- ### 1.4.1 Ensure AIDE is installed (Scored) -- - package_aide_installed -- -- ### 1.4.2 Ensure filesystem integrity is regularly checked (Scored) -- - aide_periodic_cron_checking -- -- ## Secure Boot Settings -- -- ### 1.5.1 Ensure permissions on bootloader config are configured (Scored) -- #### chown root:root /boot/grub2/grub.cfg -- - file_owner_grub2_cfg -- - file_groupowner_grub2_cfg -- -- #### chmod og-rwx /boot/grub2/grub.cfg -- - file_permissions_grub2_cfg -- -- #### chown root:root /boot/grub2/grubenv -- # NEED RULE - https://github.com/ComplianceAsCode/content/issues/5222 -- -- #### chmod og-rwx /boot/grub2/grubenv -- # NEED RULE - https://github.com/ComplianceAsCode/content/issues/5222 -- -- ### 1.5.2 Ensure bootloader password is set (Scored) -- - grub2_password -- -- ### 1.5.3 Ensure authentication required for single user mode (Scored) -- #### ExecStart=-/usr/lib/systemd/systemd-sulogin-shell rescue -- - require_singleuser_auth -- -- #### ExecStart=-/usr/lib/systemd/systemd-sulogin-shell emergency -- - require_emergency_target_auth -- -- ## 1.6 Additional Process Hardening -- -- ### 1.6.1 Ensure core dumps are restricted (Scored) -- #### * hard core 0 -- - disable_users_coredumps -- -- #### fs.suid_dumpable = 0 -- - sysctl_fs_suid_dumpable -- -- #### ProcessSizeMax=0 -- - coredump_disable_backtraces -- -- #### Storage=none -- - coredump_disable_storage -- -- ### 1.6.2 Ensure address space layout randomization (ASLR) is enabled -- - sysctl_kernel_randomize_va_space -- -- ## 1.7 Mandatory Access Control -- -- ### 1.7.1 Configure SELinux -- -- #### 1.7.1.1 Ensure SELinux is installed (Scored) -- - package_libselinux_installed -- -- #### 1.7.1.2 Ensure SELinux is not disabled in bootloader configuration (Scored) -- - grub2_enable_selinux -- -- #### 1.7.1.3 Ensure SELinux policy is configured (Scored) -- - var_selinux_policy_name=targeted -- - selinux_policytype -- -- #### 1.7.1.4 Ensure the SELinux state is enforcing (Scored) -- - var_selinux_state=enforcing -- - selinux_state -- -- #### 1.7.1.5 Ensure no unconfied services exist (Scored) -- - selinux_confinement_of_daemons -- -- #### 1.7.1.6 Ensure SETroubleshoot is not installed (Scored) -- - package_setroubleshoot_removed -- -- #### 1.7.1.7 Ensure the MCS Translation Service (mcstrans) is not installed (Scored) -- - package_mcstrans_removed -- -- ## Warning Banners -- -- ### 1.8.1 Command Line Warning Baners -- -- #### 1.8.1.1 Ensure message of the day is configured properly (Scored) -- - banner_etc_motd -- -- #### 1.8.1.2 Ensure local login warning banner is configured properly (Scored) -- - banner_etc_issue -- -- #### 1.8.1.3 Ensure remote login warning banner is configured properly (Scored) -- # NEEDS RULE - https://github.com/ComplianceAsCode/content/issues/5225 -- -- #### 1.8.1.4 Ensure permissions on /etc/motd are configured (Scored) -- # chmod u-x,go-wx /etc/motd -- - file_permissions_etc_motd -- -- #### 1.8.1.5 Ensure permissions on /etc/issue are configured (Scored) -- # chmod u-x,go-wx /etc/issue -- - file_permissions_etc_issue -- -- #### 1.8.1.6 Ensure permissions on /etc/issue.net are configured (Scored) -- # Previously addressed via 'rpm_verify_permissions' rule -- -- ### 1.8.2 Ensure GDM login banner is configured (Scored) -- #### banner-message-enable=true -- - dconf_gnome_banner_enabled -- -- #### banner-message-text='' -- - dconf_gnome_login_banner_text -- -- ## 1.9 Ensure updates, patches, and additional security software are installed (Scored) -- - security_patches_up_to_date -- -- ## 1.10 Ensure system-wide crypto policy is not legacy (Scored) -- - var_system_crypto_policy=future -- - configure_crypto_policy -- -- ## 1.11 Ensure system-wide crytpo policy is FUTURE or FIPS (Scored) -- # Previously addressed via 'configure_crypto_policy' rule -- -- # Services -- -- ## 2.1 inetd Services -- -- ### 2.1.1 Ensure xinetd is not installed (Scored) -- - package_xinetd_removed -- -- ## 2.2 Special Purpose Services -- -- ### 2.2.1 Time Synchronization -- -- #### 2.2.1.1 Ensure time synchronization is in use (Not Scored) -- - package_chrony_installed -- -- #### 2.2.1.2 Ensure chrony is configured (Scored) -- - service_chronyd_enabled -- - chronyd_specify_remote_server -- - chronyd_run_as_chrony_user -- -- ### 2.2.2 Ensure X Window System is not installed (Scored) -- - package_xorg-x11-server-common_removed -- - xwindows_runlevel_target -- -- ### 2.2.3 Ensure rsync service is not enabled (Scored) -- - service_rsyncd_disabled -- -- ### 2.2.4 Ensure Avahi Server is not enabled (Scored) -- - service_avahi-daemon_disabled -- -- ### 2.2.5 Ensure SNMP Server is not enabled (Scored) -- - service_snmpd_disabled -- -- ### 2.2.6 Ensure HTTP Proxy Server is not enabled (Scored) -- - package_squid_removed -- -- ### 2.2.7 Ensure Samba is not enabled (Scored) -- - service_smb_disabled -- -- ### 2.2.8 Ensure IMAP and POP3 server is not enabled (Scored) -- - service_dovecot_disabled -- -- ### 2.2.9 Ensure HTTP server is not enabled (Scored) -- - service_httpd_disabled -- -- ### 2.2.10 Ensure FTP Server is not enabled (Scored) -- - service_vsftpd_disabled -- -- ### 2.2.11 Ensure DNS Server is not enabled (Scored) -- - service_named_disabled -- -- ### 2.2.12 Ensure NFS is not enabled (Scored) -- - service_nfs_disabled -- -- ### 2.2.13 Ensure RPC is not enabled (Scored) -- - service_rpcbind_disabled -- -- ### 2.2.14 Ensure LDAP service is not enabled (Scored) -- # NEEDS RULE - https://github.com/ComplianceAsCode/content/issues/5231 -- -- ### 2.2.15 Ensure DHCP Server is not enabled (Scored) -- - service_dhcpd_disabled -- -- ### 2.2.16 Ensure CUPS is not enabled (Scored) -- - service_cups_disabled -- -- ### 2.2.17 Ensure NIS Server is not enabled (Scored) -- # NEEDS RULE - https://github.com/ComplianceAsCode/content/issues/5232 -- -- ### 2.2.18 Ensure mail transfer agent is configured for -- ### local-only mode (Scored) -- - postfix_network_listening_disabled -- -- ## 2.3 Service Clients -- -- ### 2.3.1 Ensure NIS Client is not installed (Scored) -- - package_ypbind_removed -- -- ### 2.3.2 Ensure telnet client is not installed (Scored) -- - package_telnet_removed -- -- ### Ensure LDAP client is not installed -- - package_openldap-clients_removed -- -- # 3 Network Configuration -- -- ## 3.1 Network Parameters (Host Only) -- -- ### 3.1.1 Ensure IP forwarding is disabled (Scored) -- #### net.ipv4.ip_forward = 0 -- - sysctl_net_ipv4_ip_forward -- -- #### net.ipv6.conf.all.forwarding = 0 -- - sysctl_net_ipv6_conf_all_forwarding -- -- ### 3.1.2 Ensure packet redirect sending is disabled (Scored) -- #### net.ipv4.conf.all.send_redirects = 0 -- - sysctl_net_ipv4_conf_all_send_redirects -- -- #### net.ipv4.conf.default.send_redirects = 0 -- - sysctl_net_ipv4_conf_default_send_redirects -- -- ## 3.2 Network Parameters (Host and Router) -- -- ### 3.2.1 Ensure source routed packets are not accepted (Scored) -- #### net.ipv4.conf.all.accept_source_route = 0 -- - sysctl_net_ipv4_conf_all_accept_source_route -- -- #### net.ipv4.conf.default.accept_source_route = 0 -- - sysctl_net_ipv4_conf_default_accept_source_route -- -- #### net.ipv6.conf.all.accept_source_route = 0 -- - sysctl_net_ipv6_conf_all_accept_source_route -- -- #### net.ipv6.conf.default.accept_source_route = 0 -- - sysctl_net_ipv6_conf_default_accept_source_route -- -- ### 3.2.2 Ensure ICMP redirects are not accepted (Scored) -- #### net.ipv4.conf.all.accept_redirects = 0 -- - sysctl_net_ipv4_conf_all_accept_redirects -- -- #### net.ipv4.conf.default.accept_redirects -- - sysctl_net_ipv4_conf_default_accept_redirects -- -- #### net.ipv6.conf.all.accept_redirects = 0 -- - sysctl_net_ipv6_conf_all_accept_redirects -- -- #### net.ipv6.conf.defaults.accept_redirects = 0 -- - sysctl_net_ipv6_conf_default_accept_redirects -- -- ### 3.2.3 Ensure secure ICMP redirects are not accepted (Scored) -- #### net.ipv4.conf.all.secure_redirects = 0 -- - sysctl_net_ipv4_conf_all_secure_redirects -- -- #### net.ipv4.cof.default.secure_redirects = 0 -- - sysctl_net_ipv4_conf_default_secure_redirects -- -- ### 3.2.4 Ensure suspicious packets are logged (Scored) -- #### net.ipv4.conf.all.log_martians = 1 -- - sysctl_net_ipv4_conf_all_log_martians -- -- #### net.ipv4.conf.default.log_martians = 1 -- - sysctl_net_ipv4_conf_default_log_martians -- -- ### 3.2.5 Ensure broadcast ICMP requests are ignored (Scored) -- - sysctl_net_ipv4_icmp_echo_ignore_broadcasts -- -- ### 3.2.6 Ensure bogus ICMP responses are ignored (Scored) -- - sysctl_net_ipv4_icmp_ignore_bogus_error_responses -- -- ### 3.2.7 Ensure Reverse Path Filtering is enabled (Scored) -- #### net.ipv4.conf.all.rp_filter = 1 -- - sysctl_net_ipv4_conf_all_rp_filter -- -- #### net.ipv4.conf.default.rp_filter = 1 -- - sysctl_net_ipv4_conf_default_rp_filter -- -- ### 3.2.8 Ensure TCP SYN Cookies is enabled (Scored) -- - sysctl_net_ipv4_tcp_syncookies -- -- ### 3.2.9 Ensure IPv6 router advertisements are not accepted (Scored) -- #### net.ipv6.conf.all.accept_ra = 0 -- - sysctl_net_ipv6_conf_all_accept_ra -- -- #### net.ipv6.conf.default.accept_ra = 0 -- - sysctl_net_ipv6_conf_default_accept_ra -- -- ## 3.3 Uncommon Network Protocols -- -- ### 3.3.1 Ensure DCCP is disabled (Scored) -- - kernel_module_dccp_disabled -- -- ### Ensure SCTP is disabled (Scored) -- - kernel_module_sctp_disabled -- -- ### 3.3.3 Ensure RDS is disabled (Scored) -- - kernel_module_rds_disabled -- -- ### 3.3.4 Ensure TIPC is disabled (Scored) -- - kernel_module_tipc_disabled -- -- ## 3.4 Firewall Configuration -- -- ### 3.4.1 Ensure Firewall software is installed -- -- #### 3.4.1.1 Ensure a Firewall package is installed (Scored) -- ##### firewalld -- - package_firewalld_installed -- -- ##### nftables -- #NEED RULE - https://github.com/ComplianceAsCode/content/issues/5237 -- -- ##### iptables -- #- package_iptables_installed -- -- ### 3.4.2 Configure firewalld -- -- #### 3.4.2.1 Ensure firewalld service is enabled and running (Scored) -- - service_firewalld_enabled -- -- #### 3.4.2.2 Ensure iptables is not enabled (Scored) -- # NEEDS RULE - https://github.com/ComplianceAsCode/content/issues/5238 -- -- #### 3.4.2.3 Ensure nftables is not enabled (Scored) -- # NEEDS RULE - https://github.com/ComplianceAsCode/content/issues/5239 -- -- #### 3.4.2.4 Ensure default zone is set (Scored) -- - set_firewalld_default_zone -- -- #### 3.4.2.5 Ensure network interfaces are assigned to -- #### appropriate zone (Not Scored) -- # NEEDS RULE - https://github.com/ComplianceAsCode/content/issues/5240 -- -- #### 3.4.2.6 Ensure unnecessary services and ports are not -- #### accepted (Not Scored) -- # NEEDS RULE - https://github.com/ComplianceAsCode/content/issues/5241 -- -- ### 3.4.3 Configure nftables -- # NEEDS RULE - https://github.com/ComplianceAsCode/content/issues/5242 -- -- #### 3.4.3.1 Ensure iptables are flushed (Not Scored) -- # NEEDS RULE - https://github.com/ComplianceAsCode/content/issues/5243 -- -- #### 3.4.3.2 Ensure a table exists (Scored) -- # NEEDS RULE - https://github.com/ComplianceAsCode/content/issues/5244 -- -- #### 3.4.3.3 Ensure base chains exist (Scored) -- # NEEDS RULE - https://github.com/ComplianceAsCode/content/issues/5245 -- -- #### 3.4.3.4 Ensure loopback traffic is configured (Scored) -- # NEEDS RULE - https://github.com/ComplianceAsCode/content/issues/5246 -- -- #### 3.4.3.5 Ensure outbound and established connections are -- #### configured (Not Scored) -- # NEEDS RULE - https://github.com/ComplianceAsCode/content/issues/5247 -- -- #### 3.4.3.6 Ensure default deny firewall policy (Scored) -- # NEEDS RULE - https://github.com/ComplianceAsCode/content/issues/5248 -- -- #### 3.4.3.7 Ensure nftables service is enabled (Scored) -- # NEEDS RULE - https://github.com/ComplianceAsCode/content/issues/5249 -- -- #### 3.4.3.8 Ensure nftables rules are permanent (Scored) -- # NEEDS RULE - https://github.com/ComplianceAsCode/content/issues/5250 -- -- ### 3.4.4 Configure iptables -- -- #### 3.4.4.1 Configure IPv4 iptables -- # NEEDS RULE - https://github.com/ComplianceAsCode/content/issues/5251 -- -- ##### 3.4.4.1.1 Ensure default deny firewall policy (Scored) -- # NEEDS RULE - https://github.com/ComplianceAsCode/content/issues/5252 -- -- ##### 3.4.4.1.2 Ensure loopback traffic is configured (Scored) -- # NEEDS RULE - https://github.com/ComplianceAsCode/content/issues/5253 -- -- ##### 3.4.4.1.3 Ensure outbound and established connections are -- ##### configured (Not Scored) -- # NEEDS RULE - https://github.com/ComplianceAsCode/content/issues/5254 -- -- ##### 3.4.4.1.4 Ensure firewall rules exist for all open ports (Scored) -- # NEEDS RULE - https://github.com/ComplianceAsCode/content/issues/5255 -- -- #### 3.4.4.2 Configure IPv6 ip6tables -- # NEEDS RULE - https://github.com/ComplianceAsCode/content/issues/5256 -- -- ##### 3.4.4.2.1 Ensure IPv6 default deny firewall policy (Scored) -- # NEEDS RULE - https://github.com/ComplianceAsCode/content/issues/5257 -- -- ##### 3.4.4.2.2 Ensure IPv6 loopback traffic is configured (Scored) -- # NEEDS RULE - https://github.com/ComplianceAsCode/content/issues/5258 -- -- ##### 3.4.4.2.3 Ensure IPv6 outbound and established connections are -- ##### configured (Not Scored) -- # NEEDS RULE - https://github.com/ComplianceAsCode/content/issues/5260 -- -- ## 3.5 Ensure wireless interfaces are disabled (Scored) -- - wireless_disable_interfaces -- -- ## 3.6 Disable IPv6 (Not Scored) -- - kernel_module_ipv6_option_disabled -- -- # Logging and Auditing -- -- ## 4.1 Configure System Accounting (auditd) -- -- ### 4.1.1 Ensure auditing is enabled -- -- #### 4.1.1.1 Ensure auditd is installed (Scored) -- - package_audit_installed -- -- #### 4.1.1.2 Ensure auditd service is enabled (Scored) -- - service_auditd_enabled -- -- #### 4.1.1.3 Ensure auditing for processes that start prior to audit -- #### is enabled (Scored) -- - grub2_audit_argument -- -- #### 4.1.1.4 Ensure audit_backlog_limit is sufficient (Scored) -- - grub2_audit_backlog_limit_argument -- -- ### 4.1.2 Configure Data Retention -- -- #### 4.1.2.1 Ensure audit log storage size is configured (Scored) -- - auditd_data_retention_max_log_file -- -- #### 4.1.2.2 Ensure audit logs are not automatically deleted (Scored) -- - auditd_data_retention_max_log_file_action -- -- #### 4.1.2.3 Ensure system is disabled when audit logs are full (Scored) -- - var_auditd_space_left_action=email -- - auditd_data_retention_space_left_action -- -- ##### action_mail_acct = root -- - var_auditd_action_mail_acct=root -- - auditd_data_retention_action_mail_acct -- -- ##### admin_space_left_action = halt -- - var_auditd_admin_space_left_action=halt -- - auditd_data_retention_admin_space_left_action -- -- ### 4.1.3 Ensure changes to system administration scope -- ### (sudoers) is collected (Scored) -- - audit_rules_sysadmin_actions -- -- ### 4.1.4 Ensure login and logout events are collected (Scored) -- - audit_rules_login_events_faillock -- - audit_rules_login_events_lastlog -- -- ### 4.1.5 Ensure session initiation information is collected (Scored) -- - audit_rules_session_events -- -- ### 4.1.6 Ensure events that modify date and time information -- ### are collected (Scored) -- #### adjtimex -- - audit_rules_time_adjtimex -- -- #### settimeofday -- - audit_rules_time_settimeofday -- -- #### stime -- - audit_rules_time_stime -- -- #### clock_settime -- - audit_rules_time_clock_settime -- -- #### -w /etc/localtime -p wa -- - audit_rules_time_watch_localtime -- -- ### 4.1.7 Ensure events that modify the system's Mandatory -- ### Access Control are collected (Scored) -- #### -w /etc/selinux/ -p wa -- - audit_rules_mac_modification -- -- #### -w /usr/share/selinux/ -p wa -- # NEED RULE - https://github.com/ComplianceAsCode/content/issues/5264 -- -- ### 4.1.8 Ensure events that modify the system's network -- ### enironment are collected (Scored) -- - audit_rules_networkconfig_modification -- -- ### 4.1.9 Ensure discretionary access control permission modification -- ### events are collected (Scored) -- - audit_rules_dac_modification_chmod -- - audit_rules_dac_modification_fchmod -- - audit_rules_dac_modification_fchmodat -- - audit_rules_dac_modification_chown -- - audit_rules_dac_modification_fchown -- - audit_rules_dac_modification_fchownat -- - audit_rules_dac_modification_lchown -- - audit_rules_dac_modification_setxattr -- - audit_rules_dac_modification_lsetxattr -- - audit_rules_dac_modification_fsetxattr -- - audit_rules_dac_modification_removexattr -- - audit_rules_dac_modification_lremovexattr -- - audit_rules_dac_modification_fremovexattr -- -- ### 4.1.10 Ensure unsuccessful unauthorized file access attempts are -- ### collected (Scored) -- - audit_rules_unsuccessful_file_modification_creat -- - audit_rules_unsuccessful_file_modification_open -- - audit_rules_unsuccessful_file_modification_openat -- - audit_rules_unsuccessful_file_modification_truncate -- - audit_rules_unsuccessful_file_modification_ftruncate -- # Opinionated selection -- - audit_rules_unsuccessful_file_modification_open_by_handle_at -- -- ### 4.1.11 Ensure events that modify user/group information are -- ### collected (Scored) -- - audit_rules_usergroup_modification_passwd -- - audit_rules_usergroup_modification_group -- - audit_rules_usergroup_modification_gshadow -- - audit_rules_usergroup_modification_shadow -- - audit_rules_usergroup_modification_opasswd -- -- ### 4.1.12 Ensure successful file system mounts are collected (Scored) -- - audit_rules_media_export -- -- ### 4.1.13 Ensure use of privileged commands is collected (Scored) -- - audit_rules_privileged_commands -- -- ### 4.1.14 Ensure file deletion events by users are collected -- ### (Scored) -- - audit_rules_file_deletion_events_unlink -- - audit_rules_file_deletion_events_unlinkat -- - audit_rules_file_deletion_events_rename -- - audit_rules_file_deletion_events_renameat -- # Opinionated selection -- - audit_rules_file_deletion_events_rmdir -- -- ### 4.1.15 Ensure kernel module loading and unloading is collected -- ### (Scored) -- - audit_rules_kernel_module_loading -- -- ### 4.1.16 Ensure system administrator actions (sudolog) are -- ### collected (Scored) -- # NEEDS RULE - https://github.com/ComplianceAsCode/content/issues/5516 -- -- ### 4.1.17 Ensure the audit configuration is immutable (Scored) -- - audit_rules_immutable -- -- ## 4.2 Configure Logging -- -- ### 4.2.1 Configure rsyslog -- -- #### 4.2.1.1 Ensure rsyslog is installed (Scored) -- - package_rsyslog_installed -- -- #### 4.2.1.2 Ensure rsyslog Service is enabled (Scored) -- - service_rsyslog_enabled -- -- #### 4.2.1.3 Ensure rsyslog default file permissions configured (Scored) -- - rsyslog_files_permissions -- -- #### 4.2.1.4 Ensure logging is configured (Not Scored) -- # NEEDS RULE - https://github.com/ComplianceAsCode/content/issues/5519 -- -- #### 4.2.1.5 Ensure rsyslog is configured to send logs to a remote -- #### log host (Scored) -- - rsyslog_remote_loghost -- -- #### 4.2.1.6 Ensure remote rsyslog messages are only accepted on -- #### designated log hosts (Not Scored) -- - rsyslog_nolisten -- -- ### 4.2.2 Configure journald -- -- #### 4.2.2.1 Ensure journald is configured to send logs to -- #### rsyslog (Scored) -- # NEEDS RULE - https://github.com/ComplianceAsCode/content/issues/5520 -- -- #### 4.2.2.2 Ensure journald is configured to compress large -- #### log files (Scored) -- # NEEDS RULE - https://github.com/ComplianceAsCode/content/issues/5521 -- -- -- #### 4.2.2.3 Ensure journald is configured to write logfiles to -- #### persistent disk (Scored) -- # NEEDS RULE - https://github.com/ComplianceAsCode/content/issues/5522 -- -- ### 4.2.3 Ensure permissions on all logfiles are configured (Scored) -- # NEEDS RULE - https://github.com/ComplianceAsCode/content/issues/5523 -- -- ## 4.3 Ensure logrotate is configured (Not Scored) -- -- # 5 Access, Authentication and Authorization -- -- ## 5.1 Configure cron -- -- ### 5.1.1 Ensure cron daemon is enabled (Scored) -- - service_crond_enabled -- -- -- ### 5.1.2 Ensure permissions on /etc/crontab are configured (Scored) -- # chown root:root /etc/crontab -- - file_owner_crontab -- - file_groupowner_crontab -- # chmod og-rwx /etc/crontab -- - file_permissions_crontab -- -- ### 5.1.3 Ensure permissions on /etc/cron.hourly are configured (Scored) -- # chown root:root /etc/cron.hourly -- - file_owner_cron_hourly -- - file_groupowner_cron_hourly -- # chmod og-rwx /etc/cron.hourly -- - file_permissions_cron_hourly -- -- ### 5.1.4 Ensure permissions on /etc/cron.daily are configured (Scored) -- # chown root:root /etc/cron.daily -- - file_owner_cron_daily -- - file_groupowner_cron_daily -- # chmod og-rwx /etc/cron.daily -- - file_permissions_cron_daily -- -- ### 5.1.5 Ensure permissions on /etc/cron.weekly are configured (Scored) -- # chown root:root /etc/cron.weekly -- - file_owner_cron_weekly -- - file_groupowner_cron_weekly -- # chmod og-rwx /etc/cron.weekly -- - file_permissions_cron_weekly -- -- ### 5.1.6 Ensure permissions on /etc/cron.monthly are configured (Scored) -- # chown root:root /etc/cron.monthly -- - file_owner_cron_monthly -- - file_groupowner_cron_monthly -- # chmod og-rwx /etc/cron.monthly -- - file_permissions_cron_monthly -- -- ### 5.1.7 Ensure permissions on /etc/cron.d are configured (Scored) -- # chown root:root /etc/cron.d -- - file_owner_cron_d -- - file_groupowner_cron_d -- # chmod og-rwx /etc/cron.d -- - file_permissions_cron_d -- -- ### 5.1.8 Ensure at/cron is restricted to authorized users (Scored) -- -- -- ## 5.2 SSH Server Configuration -- -- ### 5.2.1 Ensure permissions on /etc/ssh/sshd_config are configured (Scored) -- # chown root:root /etc/ssh/sshd_config -- - file_owner_sshd_config -- - file_groupowner_sshd_config -- -- # chmod og-rwx /etc/ssh/sshd_config -- - file_permissions_sshd_config -- -- ### 5.2.2 Ensure SSH access is limited (Scored) -- -- -- ### 5.2.3 Ensure permissions on SSH private host key files are -- ### configured (Scored) -- # TO DO: The rule sets to 640, but benchmark wants 600 -- - file_permissions_sshd_private_key -- # TO DO: check owner of private keys in /etc/ssh is root:root -- -- ### 5.2.4 Ensure permissions on SSH public host key files are configured -- ### (Scored) -- - file_permissions_sshd_pub_key -- # TO DO: check owner of pub keys in /etc/ssh is root:root -- -- ### 5.2.5 Ensure SSH LogLevel is appropriate (Scored) -- - sshd_set_loglevel_info -- -- ### 5.2.6 Ensure SSH X11 forward is disabled (Scored) -- - sshd_disable_x11_forwarding -- -- ### 5.2.7 Ensure SSH MaxAuthTries is set to 4 or less (Scored) -- - sshd_max_auth_tries_value=4 -- - sshd_set_max_auth_tries -- -- ### 5.2.8 Ensure SSH IgnoreRhosts is enabled (Scored) -- - sshd_disable_rhosts -- -- ### 5.2.9 Ensure SSH HostbasedAuthentication is disabled (Scored) -- - disable_host_auth -- -- ### 5.2.10 Ensure SSH root login is disabled (Scored) -- - sshd_disable_root_login -- -- ### 5.2.11 Ensure SSH PermitEmptyPasswords is disabled (Scored) -- - sshd_disable_empty_passwords -- -- ### 5.2.12 Ensure SSH PermitUserEnvironment is disabled (Scored) -- - sshd_do_not_permit_user_env -- -- ### 5.2.13 Ensure SSH Idle Timeout Interval is configured (Scored) -- # ClientAliveInterval 300 -- - sshd_idle_timeout_value=5_minutes -- - sshd_set_idle_timeout -- -- # ClientAliveCountMax 0 -- - var_sshd_set_keepalive=0 -- - sshd_set_keepalive_0 -- -- ### 5.2.14 Ensure SSH LoginGraceTime is set to one minute -- ### or less (Scored) -- # NEEDS RULE - https://github.com/ComplianceAsCode/content/issues/5525 -- -- ### 5.2.15 Ensure SSH warning banner is configured (Scored) -- - sshd_enable_warning_banner -- -- ### 5.2.16 Ensure SSH PAM is enabled (Scored) -- # NEEDS RULE - https://github.com/ComplianceAsCode/content/issues/5526 -- -- ### 5.2.17 Ensure SSH AllowTcpForwarding is disabled (Scored) -- - sshd_disable_tcp_forwarding -- -- ### 5.2.18 Ensure SSH MaxStartups is configured (Scored) -- - sshd_set_maxstartups -- - var_sshd_set_maxstartups=10:30:60 -- -- ### 5.2.19 Ensure SSH MaxSessions is set to 4 or less (Scored) -- - sshd_set_max_sessions -- - var_sshd_max_sessions=4 -- -- ### 5.2.20 Ensure system-wide crypto policy is not over-ridden (Scored) -- - configure_ssh_crypto_policy -- -- ## 5.3 Configure authselect -- -- -- ### 5.3.1 Create custom authselectet profile (Scored) -- # NEEDS RULE - https://github.com/ComplianceAsCode/content/issues/5530 -- -- ### 5.3.2 Select authselect profile (Scored) -- # NEEDS RULE - https://github.com/ComplianceAsCode/content/issues/5531 -- -- ### 5.3.3 Ensure authselect includes with-faillock (Scored) -- # NEEDS RULE - https://github.com/ComplianceAsCode/content/issues/5532 -- -- ## 5.4 Configure PAM -- -- ### 5.4.1 Ensure password creation requirements are configured (Scored) -- # NEEDS RULE: try_first_pass - https://github.com/ComplianceAsCode/content/issues/5533 -- - accounts_password_pam_retry -- - var_password_pam_minlen=14 -- - accounts_password_pam_minlen -- - var_password_pam_minclass=4 -- - accounts_password_pam_minclass -- -- ### 5.4.2 Ensure lockout for failed password attempts is -- ### configured (Scored) -- - var_accounts_passwords_pam_faillock_unlock_time=900 -- - var_accounts_passwords_pam_faillock_deny=5 -- - accounts_passwords_pam_faillock_unlock_time -- - accounts_passwords_pam_faillock_deny -- -- ### 5.4.3 Ensure password reuse is limited (Scored) -- - var_password_pam_unix_remember=5 -- - accounts_password_pam_unix_remember -- -- ### 5.4.4 Ensure password hashing algorithm is SHA-512 (Scored) -- - set_password_hashing_algorithm_systemauth -- -- ## 5.5 User Accounts and Environment -- -- ### 5.5.1 Set Shadow Password Suite Parameters -- -- #### 5.5.1 Ensure password expiration is 365 days or less (Scored) -- - var_accounts_maximum_age_login_defs=365 -- - accounts_maximum_age_login_defs -- -- #### 5.5.1.2 Ensure minimum days between password changes is 7 -- #### or more (Scored) -- - var_accounts_minimum_age_login_defs=7 -- - accounts_minimum_age_login_defs -- -- #### 5.5.1.3 Ensure password expiration warning days is -- #### 7 or more (Scored) -- - var_accounts_password_warn_age_login_defs=7 -- - accounts_password_warn_age_login_defs -- -- #### 5.5.1.4 Ensure inactive password lock is 30 days or less (Scored) -- # TODO: Rule doesn't check list of users -- # https://github.com/ComplianceAsCode/content/issues/5536 -- - var_account_disable_post_pw_expiration=30 -- - account_disable_post_pw_expiration -- -- #### 5.5.1.5 Ensure all users last password change date is -- #### in the past (Scored) -- # NEEDS RULE - https://github.com/ComplianceAsCode/content/issues/5537 -- -- ### 5.5.2 Ensure system accounts are secured (Scored) -- - no_shelllogin_for_systemaccounts -- -- ### 5.5.3 Ensure default user shell timeout is 900 seconds -- ### or less (Scored) -- - var_accounts_tmout=15_min -- - accounts_tmout -- -- ### 5.5.4 Ensure default group for the root account is -- ### GID 0 (Scored) -- # NEEDS RULE - https://github.com/ComplianceAsCode/content/issues/5539 -- -- ### 5.5.5 Ensure default user mask is 027 or more restrictive (Scored) -- - var_accounts_user_umask=027 -- - accounts_umask_etc_bashrc -- - accounts_umask_etc_profile -- -- ## 5.6 Ensure root login is restricted to system console (Not Scored) -- - securetty_root_login_console_only -- - no_direct_root_logins -- -- ## 5.7 Ensure access to the su command is restricted (Scored) -- # NEEDS RULE - https://github.com/ComplianceAsCode/content/issues/5541 -- -- # System Maintenance -- -- ## 6.1 System File Permissions -- -- ### 6.1.1 Audit system file permissions (Not Scored) -- - rpm_verify_permissions -- - rpm_verify_ownership -- -- ### 6.1.2 Ensure permissions on /etc/passwd are configured (Scored) -- # chown root:root /etc/passwd -- - file_owner_etc_passwd -- - file_groupowner_etc_passwd -- -- # chmod 644 /etc/passwd -- - file_permissions_etc_passwd -- -- ### 6.1.3 Ensure permissions on /etc/shadow are configured (Scored) -- # chown root:root /etc/shadow -- - file_owner_etc_shadow -- - file_groupowner_etc_shadow -- -- # chmod o-rwx,g-wx /etc/shadow -- - file_permissions_etc_shadow -- -- ### 6.1.4 Ensure permissions on /etc/group are configured (Scored) -- # chown root:root /etc/group -- - file_owner_etc_group -- - file_groupowner_etc_group -- -- # chmod 644 /etc/group -- - file_permissions_etc_group -- -- ### 6.1.5 Ensure permissions on /etc/gshadow are configured (Scored) -- # chown root:root /etc/gshadow -- - file_owner_etc_gshadow -- - file_groupowner_etc_gshadow -- -- # chmod o-rwx,g-rw /etc/gshadow -- - file_permissions_etc_gshadow -- -- ### 6.1.6 Ensure permissions on /etc/passwd- are configured (Scored) -- # chown root:root /etc/passwd- -- - file_owner_backup_etc_passwd -- - file_groupowner_backup_etc_passwd -- -- # chmod 644 /etc/passwd- -- - file_permissions_backup_etc_passwd -- -- ### 6.1.7 Ensure permissions on /etc/shadow- are configured (Scored) -- # chown root:root /etc/shadow- -- - file_owner_backup_etc_shadow -- - file_groupowner_backup_etc_shadow -- -- # chmod 0000 /etc/shadow- -- - file_permissions_backup_etc_shadow -- -- ### 6.1.8 Ensure permissions on /etc/group- are configured (Scored) -- # chown root:root /etc/group- -- - file_owner_backup_etc_group -- - file_groupowner_backup_etc_group -- -- # chmod 644 /etc/group- -- - file_permissions_backup_etc_group -- -- ### 6.1.9 Ensure permissions on /etc/gshadow- are configured (Scored) -- # chown root:root /etc/gshadow- -- - file_owner_backup_etc_gshadow -- - file_groupowner_backup_etc_gshadow -- -- # chmod 0000 /etc/gshadow- -- - file_permissions_backup_etc_gshadow -- -- ### 6.1.10 Ensure no world writable files exist (Scored) -- - file_permissions_unauthorized_world_writable -- -- ### 6.1.11 Ensure no unowned files or directories exist (Scored) -- - no_files_unowned_by_user -- -- ### 6.1.12 Ensure no ungrouped files or directories exist (Scored) -- - file_permissions_ungroupowned -- -- ### 6.1.13 Audit SUID executables (Not Scored) -- - file_permissions_unauthorized_suid -- -- ### 6.1.14 Audit SGID executables (Not Scored) -- - file_permissions_unauthorized_sgid -- -- ## 6.2 User and Group Settings -- -- ### 6.2.2 Ensure no legacy "+" entries exist in /etc/passwd (Scored) -- - no_legacy_plus_entries_etc_passwd -- -- ### 6.2.4 Ensure no legacy "+" entries exist in /etc/shadow (Scored) -- - no_legacy_plus_entries_etc_shadow -- -- ### 6.2.5 Ensure no legacy "+" entries exist in /etc/group (Scored) -- - no_legacy_plus_entries_etc_group -- -- ### 6.2.6 Ensure root is the only UID 0 account (Scored) -- - accounts_no_uid_except_zero -- -- ### 6.2.7 Ensure users' home directories permissions are 750 -- ### or more restrictive (Scored) -- - file_permissions_home_dirs -- -- ### 6.2.8 Ensure users own their home directories (Scored) -- # NEEDS RULE for user owner @ https://github.com/ComplianceAsCode/content/issues/5507 -- - file_groupownership_home_directories -- -- ### 6.2.9 Ensure users' dot files are not group or world -- ### writable (Scored) -- # NEEDS RULE - https://github.com/ComplianceAsCode/content/issues/5506 -- -- ### 6.2.10 Ensure no users have .forward files (Scored) -- # NEEDS RULE - https://github.com/ComplianceAsCode/content/issues/5505 -- -- ### 6.2.11 Ensure no users have .netrc files (Scored) -- - no_netrc_files -- -- ### 6.2.12 Ensure users' .netrc Files are not group or -- ### world accessible (Scored) -- # NEEDS RULE - https://github.com/ComplianceAsCode/content/issues/5504 -- -- ### 6.2.13 Ensure no users have .rhosts files (Scored) -- - no_rsh_trust_files -- -- ### 6.2.14 Ensure all groups in /etc/passwd exist in -- ### /etc/group (Scored) -- # NEEDS RULE - https://github.com/ComplianceAsCode/content/issues/5503 -- -- ### 6.2.15 Ensure no duplicate UIDs exist (Scored) -- # NEEDS RULE - https://github.com/ComplianceAsCode/content/issues/5502 -- -- ### 6.2.16 Ensure no duplicate GIDs exist (Scored) -- # NEEDS RULE - https://github.com/ComplianceAsCode/content/issues/5501 -- -- ### 6.2.17 Ensure no duplicate user names exist (Scored) -- - account_unique_name -- -- ### 6.2.18 Ensure no duplicate group names exist (Scored) -- # NEEDS RULE - https://github.com/ComplianceAsCode/content/issues/5500 -- -- ### 6.2.19 Ensure shadow group is empty (Scored) -- # NEEDS RULE - https://github.com/ComplianceAsCode/content/issues/5499 -- -- ### 6.2.20 Ensure all users' home directories exist (Scored) -- - accounts_user_interactive_home_directory_exists -+ - cis_rhel8:all:l2_server -diff --git a/products/rhel8/profiles/cis_server_l1.profile b/products/rhel8/profiles/cis_server_l1.profile -new file mode 100644 -index 00000000000..7b4518e15a5 ---- /dev/null -+++ b/products/rhel8/profiles/cis_server_l1.profile -@@ -0,0 +1,22 @@ -+documentation_complete: true -+ -+metadata: -+ version: 1.0.1 -+ SMEs: -+ - vojtapolasek -+ - yuumasato -+ -+reference: https://www.cisecurity.org/benchmark/red_hat_linux/ -+ -+title: 'CIS Red Hat Enterprise Linux 8 Benchmark for Level 1 - Server' -+ -+description: |- -+ This profile defines a baseline that aligns to the "Level 1 - Server" -+ configuration from the Center for Internet Security® Red Hat Enterprise -+ Linux 8 Benchmark™, v1.0.1, released 2021-05-19. -+ -+ This profile includes Center for Internet Security® -+ Red Hat Enterprise Linux 8 CIS Benchmarks™ content. -+ -+selections: -+ - cis_rhel8:all:l1_server -diff --git a/products/rhel8/profiles/cis_workstation_l1.profile b/products/rhel8/profiles/cis_workstation_l1.profile -new file mode 100644 -index 00000000000..230e4c2f0ba ---- /dev/null -+++ b/products/rhel8/profiles/cis_workstation_l1.profile -@@ -0,0 +1,22 @@ -+documentation_complete: true -+ -+metadata: -+ version: 1.0.1 -+ SMEs: -+ - vojtapolasek -+ - yuumasato -+ -+reference: https://www.cisecurity.org/benchmark/red_hat_linux/ -+ -+title: 'CIS Red Hat Enterprise Linux 8 Benchmark for Level 1 - Workstation' -+ -+description: |- -+ This profile defines a baseline that aligns to the "Level 1 - Workstation" -+ configuration from the Center for Internet Security® Red Hat Enterprise -+ Linux 8 Benchmark™, v1.0.1, released 2021-05-19. -+ -+ This profile includes Center for Internet Security® -+ Red Hat Enterprise Linux 8 CIS Benchmarks™ content. -+ -+selections: -+ - cis_rhel8:all:l1_workstation -diff --git a/products/rhel8/profiles/cis_workstation_l2.profile b/products/rhel8/profiles/cis_workstation_l2.profile -new file mode 100644 -index 00000000000..c0d1698c2f0 ---- /dev/null -+++ b/products/rhel8/profiles/cis_workstation_l2.profile -@@ -0,0 +1,22 @@ -+documentation_complete: true -+ -+metadata: -+ version: 1.0.1 -+ SMEs: -+ - vojtapolasek -+ - yuumasato -+ -+reference: https://www.cisecurity.org/benchmark/red_hat_linux/ -+ -+title: 'CIS Red Hat Enterprise Linux 8 Benchmark for Level 2 - Workstation' -+ -+description: |- -+ This profile defines a baseline that aligns to the "Level 2 - Workstation" -+ configuration from the Center for Internet Security® Red Hat Enterprise -+ Linux 8 Benchmark™, v1.0.1, released 2021-05-19. -+ -+ This profile includes Center for Internet Security® -+ Red Hat Enterprise Linux 8 CIS Benchmarks™ content. -+ -+selections: -+ - cis_rhel8:all:l2_workstation - -From e53bf4c6b479608b155bcfcc8426ac20ca4c9291 Mon Sep 17 00:00:00 2001 -From: Alex Haydock -Date: Thu, 1 Jul 2021 16:35:19 +0100 -Subject: [PATCH 02/55] Add CIS control file for RHEL 8 - ---- - controls/cis_rhel8.yml | 758 +++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 758 insertions(+) - create mode 100644 controls/cis_rhel8.yml - -diff --git a/controls/cis_rhel8.yml b/controls/cis_rhel8.yml -new file mode 100644 -index 00000000000..a84bb078e34 ---- /dev/null -+++ b/controls/cis_rhel8.yml -@@ -0,0 +1,758 @@ -+policy: 'CIS Benchmark for Red Hat Enterprise Linux 8' -+title: 'CIS Benchmark for Red Hat Enterprise Linux 8' -+id: cis_rhel8 -+version: '1.0.1' -+source: https://www.cisecurity.org/cis-benchmarks/#red_hat_linux -+levels: -+ - id: l1_server -+ - id: l2_server -+ inherits_from: -+ - l1_server -+ - id: l1_workstation -+ - id: l2_workstation -+ inherits_from: -+ - l1_workstation -+ -+controls: -+ - id: reload_dconf_db -+ title: Reload Dconf database -+ levels: -+ - l1_server -+ - l1_workstation -+ notes: <- -+ This is a helper rule to reload Dconf datbase correctly. -+ automated: yes -+ rules: -+ - dconf_db_up_to_date -+ -+ - id: 1.1.1.1 -+ title: Ensure mounting of cramfs filesystems is disabled (Automated) -+ levels: -+ - l1_workstation -+ - l1_server -+ automated: yes -+ rules: -+ - kernel_module_cramfs_disabled -+ -+ - id: 1.1.1.2 -+ title: Ensure mounting of vFAT filesystems is limited (Manual) -+ levels: -+ - l2_workstation -+ - l2_server -+ automated: no -+ related_rules: -+ - kernel_module_vfat_disabled -+ -+ - id: 1.1.1.3 -+ title: Ensure mounting of squashfs filesystems is disabled (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - kernel_module_squashfs_disabled -+ -+ - id: 1.1.1.4 -+ title: Ensure mounting of udf filesystems is disabled (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - kernel_module_udf_disabled -+ -+ - id: 1.1.2 -+ title: Ensure /tmp is configured (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - partition_for_tmp -+ -+ - id: 1.1.3 -+ title: Ensure nodev option set on /tmp partition (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - mount_option_tmp_nodev -+ -+ - id: 1.1.4 -+ title: Ensure nosuid option set on /tmp partition (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - mount_option_tmp_nosuid -+ -+ - id: 1.1.5 -+ title: Ensure noexec option set on /tmp partition (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - mount_option_tmp_noexec -+ -+ - id: 1.1.6 -+ title: Ensure separate partition exists for /var (Automated) -+ levels: -+ - l2_server -+ - l2_workstation -+ automated: yes -+ rules: -+ - partition_for_var -+ -+ - id: 1.1.7 -+ title: Ensure separate partition exists for /var/tmp (Automated) -+ levels: -+ - l2_server -+ - l2_workstation -+ automated: yes -+ rules: -+ - partition_for_var_tmp -+ -+ - id: 1.1.8 -+ title: Ensure nodev option set on /var/tmp partition (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - mount_option_var_tmp_nodev -+ -+ - id: 1.1.9 -+ title: Ensure nosuid option set on /var/tmp partition (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - mount_option_var_tmp_nosuid -+ -+ - id: 1.1.10 -+ title: Ensure noexec option set on /var/tmp partition (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - mount_option_var_tmp_noexec -+ -+ - id: 1.1.11 -+ title: Ensure separate partition exists for /var/log (Automated) -+ levels: -+ - l2_server -+ - l2_workstation -+ automated: yes -+ rules: -+ - partition_for_var_log -+ -+ - id: 1.1.12 -+ title: Ensure separate partition exists for /var/log/audit (Automated) -+ levels: -+ - l2_server -+ - l2_workstation -+ automated: yes -+ rules: -+ - partition_for_var_log_audit -+ -+ - id: 1.1.13 -+ title: Ensure separate partition exists for /home (Automated) -+ levels: -+ - l2_server -+ - l2_workstation -+ automated: yes -+ rules: -+ - partition_for_home -+ -+ - id: 1.1.18 -+ title: Ensure nodev option set on /home partition (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - mount_option_home_nodev -+ -+ - id: 1.1.15 -+ title: Ensure nodev option set on /dev/shm partition (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - mount_option_dev_shm_nodev -+ -+ - id: 1.1.16 -+ title: Ensure nosuid option set on /dev/shm partition (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - mount_option_dev_shm_nosuid -+ -+ - id: 1.1.17 -+ title: Ensure noexec option set on /dev/shm partition (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - mount_option_dev_shm_noexec -+ -+ - id: 1.1.18 -+ title: Ensure nodev option set on removable media partitions (Manual) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ rules: -+ - mount_option_nodev_removable_partitions -+ -+ - id: 1.1.19 -+ title: Ensure nosuid option set on removable media partitions (Manual) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ rules: -+ - mount_option_nosuid_removable_partitions -+ -+ - id: 1.1.20 -+ title: Ensure noexec option set on removable media partitions (Manual) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ rules: -+ - mount_option_noexec_removable_partitions -+ -+ - id: 1.1.22 -+ title: Disable Automounting (Automated) -+ levels: -+ - l1_server -+ - l2_workstation -+ automated: yes -+ rules: -+ - service_autofs_disabled -+ -+ - id: 1.1.23 -+ title: Disable USB Storage (Automated) -+ levels: -+ - l1_server -+ - l2_workstation -+ automated: yes -+ rules: -+ - kernel_module_usb-storage_disabled -+ -+ - id: 1.2.1 -+ title: Ensure Red Hat Subscription Manager connection is configured (Manual) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ -+ - id: 1.2.2 -+ title: Disable the rhnsd Daemon (Manual) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ related_rules: -+ - service_rhnsd_disabled -+ -+ - id: 1.2.3 -+ title: Ensure GPG keys are configured (Manual) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ related_rules: -+ - ensure_redhat_gpgkey_installed -+ -+ - id: 1.2.4 -+ title: Ensure gpgcheck is globally activated (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - ensure_gpgcheck_globally_activated -+ -+ - id: 1.2.5 -+ title: Ensure package manager repositories are configured (Manual) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ -+ - id: 1.3.1 -+ title: Ensure sudo is installed (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - package_sudo_installed -+ -+ - id: 1.3.2 -+ title: Ensure sudo commands use pty (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - sudo_add_use_pty -+ -+ - id: 1.3.3 -+ title: Ensure sudo log file exists (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - sudo_custom_logfile -+ -+ - id: 1.4.1 -+ title: Ensure AIDE is installed (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - package_aide_installed -+ -+ - id: 1.4.2 -+ title: Ensure filesystem integrity is regularly checked (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - aide_periodic_cron_checking -+ -+ - id: 1.5.1 -+ title: Ensure permissions on bootloader config are configured (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - file_owner_grub2_cfg -+ - file_groupowner_grub2_cfg -+ - file_permissions_grub2_cfg -+ -+ - id: 1.5.1 -+ title: Ensure bootloader password is set (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - grub2_password -+ -+ - id: 1.5.3 -+ title: Ensure authentication required for single user mode (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - require_singleuser_auth -+ - require_emergency_target_auth -+ -+ - id: 1.6.1 -+ title: Ensure core dumps are restricted (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - disable_users_coredumps -+ - sysctl_fs_suid_dumpable -+ - coredump_disable_backtraces -+ - coredump_disable_storage -+ -+ - id: 1.6.2 -+ title: Ensure address space layout randomization (ASLR) is enabled (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - sysctl_kernel_randomize_va_space -+ -+ - id: 1.7.1.1 -+ title: Ensure SELinux is installed (Automated) -+ levels: -+ - l2_server -+ - l2_workstation -+ automated: yes -+ rules: -+ - package_libselinux_installed -+ -+ - id: 1.7.1.1 -+ title: Ensure SELinux is installed (Automated) -+ levels: -+ - l2_server -+ - l2_workstation -+ automated: yes -+ rules: -+ - package_libselinux_installed -+ -+ - id: 1.7.1.2 -+ title: Ensure SELinux is not disabled in bootloader configuration (Automated) -+ levels: -+ - l2_server -+ - l2_workstation -+ automated: yes -+ rules: -+ - grub2_enable_selinux -+ -+ - id: 1.7.1.3 -+ title: Ensure SELinux policy is configured (Automated) -+ levels: -+ - l2_server -+ - l2_workstation -+ automated: yes -+ rules: -+ - var_selinux_policy_name=targeted -+ - selinux_policytype -+ -+ - id: 1.7.1.4 -+ title: Ensure the SELinux state is enforcing (Automated) -+ levels: -+ - l2_server -+ - l2_workstation -+ automated: yes -+ rules: -+ - var_selinux_state=enforcing -+ - selinux_state -+ -+ - id: 1.7.1.5 -+ title: Ensure no unconfined services exist (Automated) -+ levels: -+ - l2_server -+ - l2_workstation -+ automated: yes -+ rules: -+ - selinux_confinement_of_daemons -+ -+ - id: 1.7.1.6 -+ title: Ensure SETroubleshoot is not installed (Automated) -+ levels: -+ - l2_server -+ automated: yes -+ rules: -+ - package_setroubleshoot_removed -+ -+ - id: 1.7.1.7 -+ title: Ensure the MCS Translation Service (mcstrans) is not installed (Automated) -+ levels: -+ - l2_server -+ - l2_workstation -+ automated: yes -+ rules: -+ - package_mcstrans_removed -+ -+ - id: 1.8.1.1 -+ title: Ensure message of the day is configured properly (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - banner_etc_motd -+ -+ - id: 1.8.1.2 -+ title: Ensure local login warning banner is configured properly (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - banner_etc_issue -+ -+ # NEEDS RULE -+ # https://github.com/ComplianceAsCode/content/issues/5225 -+ - id: 1.8.1.3 -+ title: Ensure remote login warning banner is configured properly (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ -+ - id: 1.8.1.4 -+ title: Ensure permissions on /etc/motd are configured (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - file_permissions_etc_motd -+ -+ - id: 1.8.1.5 -+ title: Ensure permissions on /etc/issue are configured (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - file_permissions_etc_issue -+ -+ - id: 1.8.2 -+ title: Ensure GDM login banner is configured (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - dconf_gnome_banner_enabled -+ - dconf_gnome_login_banner_text -+ -+ - id: 1.9 -+ title: Ensure updates, patches, and additional security software are installed (Manual) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ related_rules: -+ - security_patches_up_to_date -+ -+ - id: 1.10 -+ title: Ensure system-wide crypto policy is not legacy (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - configure_crypto_policy -+ -+ # This rule works in conjunction with the configure_crypto_policy above. -+ # If a system is remediated to CIS Level 1, just the rule above will apply -+ # and will enforce the default value for var_system_crypto_policy (DEFAULT). -+ # If the system is remediated to Level 2 then this rule will be selected, -+ # and the value applied by the rule above will will be overridden to -+ # FUTURE through the var_system_crypto_policy variable. -+ - id: 1.11 -+ title: Ensure system-wide crypto policy is FUTURE or FIPS (Automated) -+ levels: -+ - l2_server -+ - l2_workstation -+ automated: yes -+ rules: -+ - var_system_crypto_policy=future -+ -+ - id: 2.1.1 -+ title: Ensure xinetd is not installed (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - package_xinetd_removed -+ -+ - id: 2.2.1.1 -+ title: Ensure time synchronization is in use (Manual) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ related_rules: -+ - package_chrony_installed -+ -+ - id: 2.1.1 -+ title: Ensure chrony is configured (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - service_chronyd_enabled -+ - chronyd_specify_remote_server -+ - chronyd_run_as_chrony_user -+ -+ - id: 2.2.2 -+ title: Ensure chrony is configured (Automated) -+ levels: -+ - l1_server -+ automated: yes -+ rules: -+ - package_xorg-x11-server-common_removed -+ - xwindows_runlevel_target -+ -+ - id: 2.2.3 -+ title: Ensure rsync service is not enabled (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - service_rsyncd_disabled -+ -+ - id: 2.2.4 -+ title: Ensure Avahi Server is not enabled (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - service_avahi-daemon_disabled -+ -+ - id: 2.2.5 -+ title: Ensure SNMP Server is not enabled (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - service_snmpd_disabled -+ -+ - id: 2.2.6 -+ title: Ensure HTTP Proxy Server is not enabled (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - package_squid_removed -+ -+ - id: 2.2.7 -+ title: Ensure Samba is not enabled (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - service_smb_disabled -+ -+ - id: 2.2.8 -+ title: Ensure IMAP and POP3 server is not enabled (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - service_dovecot_disabled -+ -+ - id: 2.2.9 -+ title: Ensure HTTP server is not enabled (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - service_httpd_disabled -+ -+ - id: 2.2.10 -+ title: Ensure FTP Server is not enabled (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - service_vsftpd_disabled -+ -+ - id: 2.2.11 -+ title: Ensure DNS Server is not enabled (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - service_named_disabled -+ -+ - id: 2.2.12 -+ title: Ensure NFS is not enabled (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - service_nfs_disabled -+ -+ - id: 2.2.13 -+ title: Ensure RPC is not enabled (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - service_rpcbind_disabled -+ -+ # NEEDS RULE -+ # https://github.com/ComplianceAsCode/content/issues/5231 -+ - id: 2.2.14 -+ title: Ensure RPC is not enabled (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ -+ - id: 2.2.15 -+ title: Ensure DHCP Server is not enabled (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - service_dhcpd_disabled -+ -+ - id: 2.2.16 -+ title: Ensure CUPS is not enabled (Automated) -+ levels: -+ - l1_server -+ - l2_workstation -+ automated: yes -+ rules: -+ - service_cups_disabled -+ -+ # NEEDS RULE -+ # https://github.com/ComplianceAsCode/content/issues/5232 -+ - id: 2.2.17 -+ title: Ensure NIS Server is not enabled (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ -+ - id: 2.2.18 -+ title: Ensure mail transfer agent is configured for local-only mode (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - postfix_network_listening_disabled -+ -+ - id: 2.3.1 -+ title: Ensure NIS Client is not installed (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - package_ypbind_removed -+ -+ - id: 2.3.2 -+ title: Ensure telnet client is not installed (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - package_telnet_removed -+ -+ - id: 2.3.3 -+ title: Ensure LDAP client is not installed (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - package_openldap-clients_removed - -From 7cb13c16162f057e8cf7d9f140c9b27abadce947 Mon Sep 17 00:00:00 2001 -From: Alex Haydock -Date: Fri, 2 Jul 2021 20:47:49 +0100 -Subject: [PATCH 03/55] Add RHEL 8 Sections 3 & 4 to CIS control file - ---- - controls/cis_rhel8.yml | 728 ++++++++++++++++++++++++++++++++++++++++- - 1 file changed, 726 insertions(+), 2 deletions(-) - -diff --git a/controls/cis_rhel8.yml b/controls/cis_rhel8.yml -index a84bb078e34..b63dc6cf9e1 100644 ---- a/controls/cis_rhel8.yml -+++ b/controls/cis_rhel8.yml -@@ -712,8 +712,8 @@ controls: - rules: - - service_cups_disabled - -- # NEEDS RULE -- # https://github.com/ComplianceAsCode/content/issues/5232 -+ # NEEDS RULE -+ # https://github.com/ComplianceAsCode/content/issues/5232 - - id: 2.2.17 - title: Ensure NIS Server is not enabled (Automated) - levels: -@@ -756,3 +756,727 @@ controls: - automated: yes - rules: - - package_openldap-clients_removed -+ -+ - id: 3.1.1 -+ title: Ensure IP forwarding is disabled (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - sysctl_net_ipv4_ip_forward -+ - sysctl_net_ipv6_conf_all_forwarding -+ -+ - id: 3.1.2 -+ title: Ensure packet redirect sending is disabled (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - sysctl_net_ipv4_conf_all_send_redirects -+ - sysctl_net_ipv4_conf_default_send_redirects -+ -+ - id: 3.2.1 -+ title: Ensure source routed packets are not accepted (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - sysctl_net_ipv4_conf_all_accept_source_route -+ - sysctl_net_ipv4_conf_default_accept_source_route -+ - sysctl_net_ipv6_conf_all_accept_source_route -+ - sysctl_net_ipv6_conf_default_accept_source_route -+ -+ - id: 3.2.2 -+ title: Ensure ICMP redirects are not accepted (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - sysctl_net_ipv4_conf_all_accept_redirects -+ - sysctl_net_ipv4_conf_default_accept_redirects -+ - sysctl_net_ipv6_conf_all_accept_redirects -+ - sysctl_net_ipv6_conf_default_accept_redirects -+ -+ - id: 3.2.3 -+ title: Ensure secure ICMP redirects are not accepted (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - sysctl_net_ipv4_conf_all_secure_redirects -+ - sysctl_net_ipv4_conf_default_secure_redirects -+ -+ - id: 3.2.4 -+ title: Ensure suspicious packets are logged (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - sysctl_net_ipv4_conf_all_log_martians -+ - sysctl_net_ipv4_conf_default_log_martians -+ -+ - id: 3.2.5 -+ title: Ensure broadcast ICMP requests are ignored (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - sysctl_net_ipv4_icmp_echo_ignore_broadcasts -+ -+ - id: 3.2.6 -+ title: Ensure bogus ICMP responses are ignored (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - sysctl_net_ipv4_icmp_ignore_bogus_error_responses -+ -+ - id: 3.2.7 -+ title: Ensure Reverse Path Filtering is enabled (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - sysctl_net_ipv4_conf_all_rp_filter -+ - sysctl_net_ipv4_conf_default_rp_filter -+ -+ - id: 3.2.8 -+ title: Ensure TCP SYN Cookies is enabled (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - sysctl_net_ipv4_tcp_syncookies -+ -+ - id: 3.2.8 -+ title: Ensure TCP SYN Cookies is enabled (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - sysctl_net_ipv4_tcp_syncookies -+ -+ - id: 3.2.9 -+ title: Ensure IPv6 router advertisements are not accepted (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - sysctl_net_ipv6_conf_all_accept_ra -+ - sysctl_net_ipv6_conf_default_accept_ra -+ -+ - id: 3.3.1 -+ title: Ensure DCCP is disabled (Automated) -+ levels: -+ - l2_server -+ - l2_workstation -+ automated: yes -+ rules: -+ - kernel_module_dccp_disabled -+ -+ - id: 3.3.2 -+ title: Ensure SCTP is disabled (Automated) -+ levels: -+ - l2_server -+ - l2_workstation -+ automated: yes -+ rules: -+ - kernel_module_sctp_disabled -+ -+ - id: 3.3.3 -+ title: Ensure RDS is disabled (Automated) -+ levels: -+ - l2_server -+ - l2_workstation -+ automated: yes -+ rules: -+ - kernel_module_rds_disabled -+ -+ - id: 3.3.4 -+ title: Ensure TIPC is disabled (Automated) -+ levels: -+ - l2_server -+ - l2_workstation -+ automated: yes -+ rules: -+ - kernel_module_tipc_disabled -+ -+ # NEEDS RULE -+ # This rule is currently quite opinionated and expects firewalld -+ # as the installed firewall package. But, as per the CIS control, -+ # this rule should also be satisfied by nftables or iptables. -+ - id: 3.4.1.1 -+ title: Ensure a Firewall package is installed (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - package_firewalld_installed -+ -+ - id: 3.4.2.1 -+ title: Ensure firewalld service is enabled and running (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - service_firewalld_enabled -+ -+ # NEEDS RULE -+ # https://github.com/ComplianceAsCode/content/issues/5238 -+ - id: 3.4.2.2 -+ title: Ensure iptables service is not enabled with firewalld (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ -+ # NEEDS RULE -+ # https://github.com/ComplianceAsCode/content/issues/5239 -+ - id: 3.4.2.3 -+ title: Ensure nftables is not enabled with firewalld (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ -+ - id: 3.4.2.4 -+ title: Ensure firewalld default zone is set (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - set_firewalld_default_zone -+ -+ - id: 3.4.2.5 -+ title: Ensure network interfaces are assigned to appropriate zone (Manual) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ -+ - id: 3.4.2.6 -+ title: Ensure firewalld drops unnecessary services and ports (Manual) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ -+ - id: 3.4.3.1 -+ title: Ensure iptables are flushed with nftables (Manual) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ -+ # NEEDS RULE -+ # https://github.com/ComplianceAsCode/content/issues/5244 -+ - id: 3.4.3.2 -+ title: Ensure an nftables table exists (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ -+ # NEEDS RULE -+ # https://github.com/ComplianceAsCode/content/issues/5245 -+ - id: 3.4.3.3 -+ title: Ensure nftables base chains exist (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ -+ # NEEDS RULE -+ # https://github.com/ComplianceAsCode/content/issues/5246 -+ - id: 3.4.3.4 -+ title: Ensure nftables loopback traffic is configured (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ -+ - id: 3.4.3.5 -+ title: Ensure nftables outbound and established connections are configured (Manual) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ -+ # NEEDS RULE -+ # https://github.com/ComplianceAsCode/content/issues/5248 -+ - id: 3.4.3.6 -+ title: Ensure nftables default deny firewall policy (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ -+ # NEEDS RULE -+ # https://github.com/ComplianceAsCode/content/issues/5249 -+ - id: 3.4.3.7 -+ title: Ensure nftables service is enabled (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ -+ # NEEDS RULE -+ # https://github.com/ComplianceAsCode/content/issues/5250 -+ - id: 3.4.3.8 -+ title: Ensure nftables rules are permanent (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ -+ # NEEDS RULE -+ # https://github.com/ComplianceAsCode/content/issues/5252 -+ - id: 3.4.4.1.1 -+ title: Ensure iptables default deny firewall policy (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ -+ # NEEDS RULE -+ # https://github.com/ComplianceAsCode/content/issues/5253 -+ - id: 3.4.4.1.2 -+ title: Ensure iptables loopback traffic is configured (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ -+ - id: 3.4.4.1.3 -+ title: Ensure iptables outbound and established connections are configured (Manual) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ -+ # NEEDS RULE -+ # https://github.com/ComplianceAsCode/content/issues/5255 -+ - id: 3.4.4.1.4 -+ title: Ensure iptables firewall rules exist for all open ports (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ -+ # NEEDS RULE -+ # https://github.com/ComplianceAsCode/content/issues/7190 -+ - id: 3.4.4.1.5 -+ title: Ensure iptables is enabled and active (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ -+ # NEEDS RULE -+ # https://github.com/ComplianceAsCode/content/issues/5257 -+ - id: 3.4.4.2.1 -+ title: Ensure ip6tables default deny firewall policy (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ -+ # NEEDS RULE -+ # https://github.com/ComplianceAsCode/content/issues/5258 -+ - id: 3.4.4.2.2 -+ title: Ensure ip6tables loopback traffic is configured (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ -+ - id: 3.4.4.2.3 -+ title: Ensure ip6tables outbound and established connections are configured (Manual) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ -+ # NEEDS RULE -+ # https://github.com/ComplianceAsCode/content/issues/7191 -+ - id: 3.4.4.2.4 -+ title: Ensure ip6tables firewall rules exist for all open ports (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ -+ # NEEDS RULE -+ # https://github.com/ComplianceAsCode/content/issues/7192 -+ - id: 3.4.4.2.5 -+ title: Ensure ip6tables is enabled and active (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ -+ - id: 3.5 -+ title: Ensure wireless interfaces are disabled (Automated) -+ levels: -+ - l1_server -+ - l2_workstation -+ automated: yes -+ rules: -+ - wireless_disable_interfaces -+ -+ - id: 3.6 -+ title: Disable IPv6 (Manual) -+ levels: -+ - l2_server -+ - l2_workstation -+ automated: yes -+ rules: -+ - kernel_module_ipv6_option_disabled -+ -+ - id: 4.1.1.1 -+ title: Ensure auditd is installed (Automated) -+ levels: -+ - l2_server -+ - l2_workstation -+ automated: yes -+ rules: -+ - package_audit_installed -+ -+ - id: 4.1.1.2 -+ title: Ensure auditd service is enabled (Automated) -+ levels: -+ - l2_server -+ - l2_workstation -+ automated: yes -+ rules: -+ - service_auditd_enabled -+ -+ - id: 4.1.1.3 -+ title: Ensure auditing for processes that start prior to auditd is enabled (Automated) -+ levels: -+ - l2_server -+ - l2_workstation -+ automated: yes -+ rules: -+ - grub2_audit_argument -+ -+ - id: 4.1.1.4 -+ title: Ensure audit_backlog_limit is sufficient (Automated) -+ levels: -+ - l2_server -+ - l2_workstation -+ automated: yes -+ rules: -+ - grub2_audit_backlog_limit_argument -+ -+ - id: 4.1.2.1 -+ title: Ensure audit log storage size is configured (Automated) -+ levels: -+ - l2_server -+ - l2_workstation -+ automated: yes -+ rules: -+ - auditd_data_retention_max_log_file -+ -+ - id: 4.1.2.2 -+ title: Ensure audit logs are not automatically deleted (Automated) -+ levels: -+ - l2_server -+ - l2_workstation -+ automated: yes -+ rules: -+ - auditd_data_retention_max_log_file_action -+ -+ - id: 4.1.2.3 -+ title: Ensure system is disabled when audit logs are full (Automated) -+ levels: -+ - l2_server -+ - l2_workstation -+ automated: yes -+ rules: -+ - auditd_data_retention_action_mail_acct -+ - auditd_data_retention_admin_space_left_action -+ - auditd_data_retention_space_left_action -+ - var_auditd_action_mail_acct=root -+ - var_auditd_admin_space_left_action=halt -+ - var_auditd_space_left_action=email -+ -+ - id: 4.1.3 -+ title: Ensure changes to system administration scope (sudoers) is collected (Automated) -+ levels: -+ - l2_server -+ - l2_workstation -+ automated: yes -+ rules: -+ - audit_rules_sysadmin_actions -+ -+ - id: 4.1.4 -+ title: Ensure login and logout events are collected (Automated) -+ levels: -+ - l2_server -+ - l2_workstation -+ automated: yes -+ rules: -+ - audit_rules_login_events_faillock -+ - audit_rules_login_events_lastlog -+ -+ - id: 4.1.5 -+ title: Ensure session initiation information is collected (Automated) -+ levels: -+ - l2_server -+ - l2_workstation -+ automated: yes -+ rules: -+ - audit_rules_session_events -+ -+ - id: 4.1.6 -+ title: Ensure events that modify date and time information are collected (Automated) -+ levels: -+ - l2_server -+ - l2_workstation -+ automated: yes -+ rules: -+ - audit_rules_time_adjtimex -+ - audit_rules_time_clock_settime -+ - audit_rules_time_settimeofday -+ - audit_rules_time_stime -+ - audit_rules_time_watch_localtime -+ -+ # NEEDS RULE -+ # -w /usr/share/selinux/ -p wa -+ # https://github.com/ComplianceAsCode/content/issues/5264 -+ - id: 4.1.7 -+ title: Ensure events that modify the system's Mandatory Access Controls are collected (Automated) -+ levels: -+ - l2_server -+ - l2_workstation -+ automated: yes -+ rules: -+ - audit_rules_mac_modification -+ -+ - id: 4.1.8 -+ title: Ensure events that modify the system's network environment are collected (Automated) -+ levels: -+ - l2_server -+ - l2_workstation -+ automated: yes -+ rules: -+ - audit_rules_networkconfig_modification -+ -+ - id: 4.1.9 -+ title: Ensure discretionary access control permission modification events are collected (Automated) -+ levels: -+ - l2_server -+ - l2_workstation -+ automated: yes -+ rules: -+ - audit_rules_dac_modification_chmod -+ - audit_rules_dac_modification_chown -+ - audit_rules_dac_modification_fchmod -+ - audit_rules_dac_modification_fchmodat -+ - audit_rules_dac_modification_fchown -+ - audit_rules_dac_modification_fchownat -+ - audit_rules_dac_modification_fremovexattr -+ - audit_rules_dac_modification_fsetxattr -+ - audit_rules_dac_modification_lchown -+ - audit_rules_dac_modification_lremovexattr -+ - audit_rules_dac_modification_lsetxattr -+ - audit_rules_dac_modification_removexattr -+ - audit_rules_dac_modification_setxattr -+ -+ - id: 4.1.10 -+ title: Ensure unsuccessful unauthorized file access attempts are collected (Automated) -+ levels: -+ - l2_server -+ - l2_workstation -+ automated: yes -+ rules: -+ - audit_rules_unsuccessful_file_modification_creat -+ - audit_rules_unsuccessful_file_modification_ftruncate -+ - audit_rules_unsuccessful_file_modification_open -+ - audit_rules_unsuccessful_file_modification_openat -+ - audit_rules_unsuccessful_file_modification_truncate -+ # Opinionated selection -+ - audit_rules_unsuccessful_file_modification_open_by_handle_at -+ -+ - id: 4.1.11 -+ title: Ensure events that modify user/group information are collected (Automated) -+ levels: -+ - l2_server -+ - l2_workstation -+ automated: yes -+ rules: -+ - audit_rules_usergroup_modification_group -+ - audit_rules_usergroup_modification_gshadow -+ - audit_rules_usergroup_modification_opasswd -+ - audit_rules_usergroup_modification_passwd -+ - audit_rules_usergroup_modification_shadow -+ -+ - id: 4.1.12 -+ title: Ensure successful file system mounts are collected (Automated) -+ levels: -+ - l2_server -+ - l2_workstation -+ automated: yes -+ rules: -+ - audit_rules_media_export -+ -+ - id: 4.1.13 -+ title: Ensure use of privileged commands is collected (Automated) -+ levels: -+ - l2_server -+ - l2_workstation -+ automated: yes -+ rules: -+ - audit_rules_privileged_commands -+ -+ - id: 4.1.14 -+ title: Ensure file deletion events by users are collected (Automated) -+ levels: -+ - l2_server -+ - l2_workstation -+ automated: yes -+ rules: -+ - audit_rules_file_deletion_events_rename -+ - audit_rules_file_deletion_events_renameat -+ - audit_rules_file_deletion_events_unlink -+ - audit_rules_file_deletion_events_unlinkat -+ # Opinionated selection -+ - audit_rules_file_deletion_events_rmdir -+ -+ - id: 4.1.15 -+ title: Ensure kernel module loading and unloading is collected (Automated) -+ levels: -+ - l2_server -+ - l2_workstation -+ automated: yes -+ rules: -+ - audit_rules_kernel_module_loading -+ -+ # NEEDS RULE -+ # https://github.com/ComplianceAsCode/content/issues/5516 -+ - id: 4.1.16 -+ title: Ensure system administrator actions (sudolog) are collected (Automated) -+ levels: -+ - l2_server -+ - l2_workstation -+ automated: no -+ -+ - id: 4.1.17 -+ title: Ensure the audit configuration is immutable (Automated) -+ levels: -+ - l2_server -+ - l2_workstation -+ automated: yes -+ rules: -+ - audit_rules_immutable -+ -+ - id: 4.2.1.1 -+ title: Ensure rsyslog is installed (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - package_rsyslog_installed -+ -+ - id: 4.2.1.2 -+ title: Ensure rsyslog Service is enabled (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - service_rsyslog_enabled -+ -+ - id: 4.2.1.3 -+ title: Ensure rsyslog default file permissions configured (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - rsyslog_files_permissions -+ -+ - id: 4.2.1.4 -+ title: Ensure logging is configured (Manual) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ -+ - id: 4.2.1.5 -+ title: Ensure rsyslog is configured to send logs to a remote log host (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - rsyslog_remote_loghost -+ -+ - id: 4.2.1.6 -+ title: Ensure remote rsyslog messages are only accepted on designated log hosts. (Manual) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ related_rules: -+ - rsyslog_nolisten -+ -+ # NEEDS RULE -+ # https://github.com/ComplianceAsCode/content/issues/5520 -+ - id: 4.2.2.1 -+ title: Ensure journald is configured to send logs to rsyslog (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ -+ # NEEDS RULE -+ # https://github.com/ComplianceAsCode/content/issues/5521 -+ - id: 4.2.2.2 -+ title: Ensure journald is configured to compress large log files (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ -+ # NEEDS RULE -+ # https://github.com/ComplianceAsCode/content/issues/5522 -+ - id: 4.2.2.3 -+ title: Ensure journald is configured to write logfiles to persistent disk (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ -+ # NEEDS RULE -+ # https://github.com/ComplianceAsCode/content/issues/5523 -+ - id: 4.2.3 -+ title: Ensure permissions on all logfiles are configured (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ -+ - id: 4.3 -+ title: Ensure logrotate is configured (Manual) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no - -From e10bc6354fdbc73b0270e52673e0b688d21386a8 Mon Sep 17 00:00:00 2001 -From: Alex Haydock -Date: Sat, 3 Jul 2021 12:08:31 +0100 -Subject: [PATCH 04/55] Add RHEL 8 Section 5 to CIS control file - ---- - controls/cis_rhel8.yml | 460 +++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 460 insertions(+) - -diff --git a/controls/cis_rhel8.yml b/controls/cis_rhel8.yml -index b63dc6cf9e1..85c821bc60d 100644 ---- a/controls/cis_rhel8.yml -+++ b/controls/cis_rhel8.yml -@@ -1480,3 +1480,463 @@ controls: - - l1_server - - l1_workstation - automated: no -+ -+ - id: 5.1.1 -+ title: Ensure cron daemon is enabled (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - service_crond_enabled -+ -+ - id: 5.1.2 -+ title: Ensure permissions on /etc/crontab are configured (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - file_groupowner_crontab -+ - file_owner_crontab -+ - file_permissions_crontab -+ -+ - id: 5.1.3 -+ title: Ensure permissions on /etc/cron.hourly are configured (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - file_groupowner_cron_hourly -+ - file_owner_cron_hourly -+ - file_permissions_cron_hourly -+ -+ - id: 5.1.4 -+ title: Ensure permissions on /etc/cron.daily are configured (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - file_groupowner_cron_daily -+ - file_owner_cron_daily -+ - file_permissions_cron_daily -+ -+ - id: 5.1.5 -+ title: Ensure permissions on /etc/cron.weekly are configured (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - file_groupowner_cron_weekly -+ - file_owner_cron_weekly -+ - file_permissions_cron_weekly -+ -+ - id: 5.1.6 -+ title: Ensure permissions on /etc/cron.monthly are configured (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - file_groupowner_cron_monthly -+ - file_owner_cron_monthly -+ - file_permissions_cron_monthly -+ -+ - id: 5.1.7 -+ title: Ensure permissions on /etc/cron.d are configured (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - file_groupowner_cron_d -+ - file_owner_cron_d -+ - file_permissions_cron_d -+ -+ # NEEDS RULE -+ # https://github.com/ComplianceAsCode/content/issues/7195 -+ - id: 5.1.8 -+ title: Ensure at/cron is restricted to authorized users (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ -+ - id: 5.2.1 -+ title: Ensure permissions on /etc/ssh/sshd_config are configured (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - file_groupowner_sshd_config -+ - file_owner_sshd_config -+ - file_permissions_sshd_config -+ -+ # NEEDS RULE -+ # https://github.com/ComplianceAsCode/content/issues/7196 -+ - id: 5.2.2 -+ title: Ensure SSH access is limited (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ -+ # TODO -+ # Rule sets permissions to 0640 but benchmark wants it to be 0600 -+ # -+ # TODO -+ # Check owner of private keys in /etc/ssh is root:root -+ - id: 5.2.3 -+ title: Ensure permissions on SSH private host key files are configured (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - file_permissions_sshd_private_key -+ -+ # TODO -+ # Check owner of public keys in /etc/ssh is root:root -+ - id: 5.2.4 -+ title: Ensure permissions on SSH public host key files are configured (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - file_permissions_sshd_pub_key -+ -+ - id: 5.2.5 -+ title: Ensure SSH LogLevel is appropriate (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - sshd_set_loglevel_info -+ -+ - id: 5.2.6 -+ title: Ensure SSH X11 forwarding is disabled (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - sshd_disable_x11_forwarding -+ -+ - id: 5.2.7 -+ title: Ensure SSH MaxAuthTries is set to 4 or less (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - sshd_max_auth_tries_value=4 -+ - sshd_set_max_auth_tries -+ -+ - id: 5.2.8 -+ title: Ensure SSH IgnoreRhosts is enabled (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - sshd_disable_rhosts -+ -+ - id: 5.2.9 -+ title: Ensure SSH HostbasedAuthentication is disabled (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - disable_host_auth -+ -+ - id: 5.2.10 -+ title: Ensure SSH root login is disabled (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - sshd_disable_root_login -+ -+ - id: 5.2.11 -+ title: Ensure SSH PermitEmptyPasswords is disabled (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - sshd_disable_empty_passwords -+ -+ - id: 5.2.12 -+ title: Ensure SSH PermitUserEnvironment is disabled (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - sshd_do_not_permit_user_env -+ -+ - id: 5.2.13 -+ title: Ensure SSH Idle Timeout Interval is configured (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - sshd_idle_timeout_value=5_minutes -+ - sshd_set_idle_timeout -+ - sshd_set_keepalive_0 -+ - var_sshd_set_keepalive=0 -+ -+ # NEEDS RULE -+ # https://github.com/ComplianceAsCode/content/issues/5525 -+ - id: 5.2.14 -+ title: Ensure SSH LoginGraceTime is set to one minute or less (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ -+ - id: 5.2.15 -+ title: Ensure SSH warning banner is configured (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - sshd_enable_warning_banner -+ -+ # NEEDS RULE -+ # https://github.com/ComplianceAsCode/content/issues/5526 -+ - id: 5.2.16 -+ title: Ensure SSH PAM is enabled (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ -+ - id: 5.2.17 -+ title: Ensure SSH AllowTcpForwarding is disabled (Automated) -+ levels: -+ - l2_server -+ - l2_workstation -+ automated: yes -+ rules: -+ - sshd_disable_tcp_forwarding -+ -+ - id: 5.2.18 -+ title: Ensure SSH MaxStartups is configured (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - sshd_set_maxstartups -+ -+ - id: 5.2.19 -+ title: Ensure SSH MaxSessions is set to 4 or less (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - sshd_set_max_sessions -+ - var_sshd_max_sessions=4 -+ -+ - id: 5.2.20 -+ title: Ensure system-wide crypto policy is not over-ridden (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - configure_ssh_crypto_policy -+ -+ # NEEDS RULE -+ # https://github.com/ComplianceAsCode/content/issues/5530 -+ - id: 5.3.1 -+ title: Create custom authselect profile (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ -+ # NEEDS RULE -+ # https://github.com/ComplianceAsCode/content/issues/5531 -+ - id: 5.3.2 -+ title: Select authselect profile (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ -+ # NEEDS RULE -+ # https://github.com/ComplianceAsCode/content/issues/5532 -+ - id: 5.3.2 -+ title: Ensure authselect includes with-faillock (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ -+ # NEEDS RULE: try_first_pass -+ # https://github.com/ComplianceAsCode/content/issues/5533 -+ - id: 5.4.1 -+ title: Ensure password creation requirements are configured (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - accounts_password_pam_minclass -+ - accounts_password_pam_minlen -+ - accounts_password_pam_retry -+ - var_password_pam_minclass=4 -+ - var_password_pam_minlen=14 -+ -+ - id: 5.4.2 -+ title: Ensure lockout for failed password attempts is configured (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - accounts_passwords_pam_faillock_deny -+ - accounts_passwords_pam_faillock_unlock_time -+ - var_accounts_passwords_pam_faillock_deny=5 -+ - var_accounts_passwords_pam_faillock_unlock_time=900 -+ -+ - id: 5.4.3 -+ title: Ensure password reuse is limited (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - accounts_password_pam_unix_remember -+ - var_password_pam_unix_remember=5 -+ -+ - id: 5.4.4 -+ title: Ensure password hashing algorithm is SHA-512 (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - set_password_hashing_algorithm_systemauth -+ -+ - id: 5.5.1.1 -+ title: Ensure password expiration is 365 days or less (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - accounts_maximum_age_login_defs -+ - var_accounts_maximum_age_login_defs=365 -+ -+ - id: 5.5.1.2 -+ title: Ensure minimum days between password changes is 7 or more (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - accounts_minimum_age_login_defs -+ - var_accounts_minimum_age_login_defs=7 -+ -+ - id: 5.5.1.3 -+ title: Ensure password expiration warning days is 7 or more (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - accounts_password_warn_age_login_defs -+ - var_accounts_password_warn_age_login_defs=7 -+ -+ # TODO -+ # Rule doesn't check list of users -+ - id: 5.5.1.4 -+ title: Ensure inactive password lock is 30 days or less (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - account_disable_post_pw_expiration -+ - var_account_disable_post_pw_expiration=30 -+ -+ # NEEDS RULE -+ # https://github.com/ComplianceAsCode/content/issues/5537 -+ - id: 5.5.1.5 -+ title: Ensure all users last password change date is in the past (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ -+ - id: 5.5.2 -+ title: Ensure system accounts are secured (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - no_shelllogin_for_systemaccounts -+ -+ - id: 5.5.3 -+ title: Ensure default user shell timeout is 900 seconds or less (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - accounts_tmout -+ - var_accounts_tmout=15_min -+ -+ # NEEDS RULE -+ # https://github.com/ComplianceAsCode/content/issues/5539 -+ - id: 5.5.4 -+ title: Ensure default group for the root account is GID 0 (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ -+ - id: 5.5.5 -+ title: Ensure default user umask is 027 or more restrictive (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - accounts_umask_etc_bashrc -+ - accounts_umask_etc_profile -+ - var_accounts_user_umask=027 -+ -+ - id: 5.6 -+ title: Ensure root login is restricted to system console (Manual) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ related_rules: -+ - no_direct_root_logins -+ - securetty_root_login_console_only -+ -+ # NEEDS RULE -+ # https://github.com/ComplianceAsCode/content/issues/5541 -+ - id: 5.7 -+ title: Ensure access to the su command is restricted (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no - -From 9aa351c0c0104ec07ee9f23ceb072233992b1a5a Mon Sep 17 00:00:00 2001 -From: Alex Haydock -Date: Sat, 3 Jul 2021 12:33:15 +0100 -Subject: [PATCH 05/55] Add RHEL 8 Section 6 to CIS control file - ---- - controls/cis_rhel8.yml | 325 +++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 325 insertions(+) - -diff --git a/controls/cis_rhel8.yml b/controls/cis_rhel8.yml -index 85c821bc60d..bc77e25d122 100644 ---- a/controls/cis_rhel8.yml -+++ b/controls/cis_rhel8.yml -@@ -1940,3 +1940,328 @@ controls: - - l1_server - - l1_workstation - automated: no -+ -+ - id: 6.1.1 -+ title: Audit system file permissions (Manual) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ related_rules: -+ - rpm_verify_permissions -+ - rpm_verify_ownership -+ -+ - id: 6.1.2 -+ title: Ensure permissions on /etc/passwd are configured (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - file_groupowner_etc_passwd -+ - file_owner_etc_passwd -+ - file_permissions_etc_passwd -+ -+ - id: 6.1.3 -+ title: Ensure permissions on /etc/passwd- are configured (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - file_groupowner_backup_etc_passwd -+ - file_owner_backup_etc_passwd -+ - file_permissions_backup_etc_passwd -+ -+ - id: 6.1.4 -+ title: Ensure permissions on /etc/shadow are configured (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - file_owner_etc_shadow -+ - file_groupowner_etc_shadow -+ - file_permissions_etc_shadow -+ -+ - id: 6.1.5 -+ title: Ensure permissions on /etc/shadow- are configured (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - file_groupowner_backup_etc_shadow -+ - file_owner_backup_etc_shadow -+ - file_permissions_backup_etc_shadow -+ -+ - id: 6.1.6 -+ title: Ensure permissions on /etc/gshadow are configured (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - file_groupowner_etc_gshadow -+ - file_owner_etc_gshadow -+ - file_permissions_etc_gshadow -+ -+ - id: 6.1.7 -+ title: Ensure permissions on /etc/gshadow- are configured (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - file_groupowner_backup_etc_gshadow -+ - file_owner_backup_etc_gshadow -+ - file_permissions_backup_etc_gshadow -+ -+ - id: 6.1.8 -+ title: Ensure permissions on /etc/group are configured (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - file_groupowner_etc_group -+ - file_owner_etc_group -+ - file_permissions_etc_group -+ -+ - id: 6.1.9 -+ title: Ensure permissions on /etc/group- are configured (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - file_groupowner_backup_etc_group -+ - file_owner_backup_etc_group -+ - file_permissions_backup_etc_group -+ -+ - id: 6.1.10 -+ title: Ensure no world writable files exist (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - file_permissions_unauthorized_world_writable -+ -+ - id: 6.1.11 -+ title: Ensure no unowned files or directories exist (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - no_files_unowned_by_user -+ -+ - id: 6.1.12 -+ title: Ensure no ungrouped files or directories exist (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - file_permissions_ungroupowned -+ -+ - id: 6.1.13 -+ title: Audit SUID executables (Manual) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ rules: -+ - file_permissions_unauthorized_suid -+ -+ - id: 6.1.14 -+ title: Audit SGID executables (Manual) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ rules: -+ - file_permissions_unauthorized_sgid -+ -+ # NEEDS RULE -+ # https://github.com/ComplianceAsCode/content/issues/7197 -+ - id: 6.2.1 -+ title: Ensure password fields are not empty (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ -+ - id: 6.2.2 -+ title: Ensure no legacy "+" entries exist in /etc/passwd (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - no_legacy_plus_entries_etc_passwd -+ -+ # NEEDS RULE -+ # https://github.com/ComplianceAsCode/content/issues/7198 -+ - id: 6.2.3 -+ title: Ensure root PATH Integrity (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ -+ - id: 6.2.4 -+ title: Ensure no legacy "+" entries exist in /etc/shadow (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - no_legacy_plus_entries_etc_shadow -+ -+ - id: 6.2.5 -+ title: Ensure no legacy "+" entries exist in /etc/group (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - no_legacy_plus_entries_etc_group -+ -+ - id: 6.2.6 -+ title: Ensure root is the only UID 0 account (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - accounts_no_uid_except_zero -+ -+ - id: 6.2.7 -+ title: Ensure users' home directories permissions are 750 or more restrictive (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - file_permissions_home_dirs -+ -+ # NEEDS RULE (for user ownership) -+ # https://github.com/ComplianceAsCode/content/issues/5507 -+ - id: 6.2.8 -+ title: Ensure users own their home directories (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - file_groupownership_home_directories -+ -+ # NEEDS RULE -+ # https://github.com/ComplianceAsCode/content/issues/5506 -+ - id: 6.2.9 -+ title: Ensure users' dot files are not group or world writable (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ -+ # NEEDS RULE -+ # https://github.com/ComplianceAsCode/content/issues/5505 -+ - id: 6.2.10 -+ title: Ensure no users have .forward files (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ -+ - id: 6.2.11 -+ title: Ensure no users have .netrc files (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - no_netrc_files -+ -+ # NEEDS RULE -+ # https://github.com/ComplianceAsCode/content/issues/5504 -+ - id: 6.2.12 -+ title: Ensure users' .netrc Files are not group or world accessible (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ -+ - id: 6.2.13 -+ title: Ensure no users have .rhosts files (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - no_rsh_trust_files -+ -+ # NEEDS RULE -+ # https://github.com/ComplianceAsCode/content/issues/5503 -+ - id: 6.2.14 -+ title: Ensure all groups in /etc/passwd exist in /etc/group (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ -+ # NEEDS RULE -+ # https://github.com/ComplianceAsCode/content/issues/5502 -+ - id: 6.2.15 -+ title: Ensure no duplicate UIDs exist (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ -+ # NEEDS RULE -+ # https://github.com/ComplianceAsCode/content/issues/5501 -+ - id: 6.2.16 -+ title: Ensure no duplicate GIDs exist (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ -+ - id: 6.2.17 -+ title: Ensure no duplicate user names exist (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - account_unique_name -+ -+ # NEEDS RULE -+ # https://github.com/ComplianceAsCode/content/issues/5500 -+ - id: 6.2.18 -+ title: Ensure no duplicate group names exist (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ -+ # NEEDS RULE -+ # https://github.com/ComplianceAsCode/content/issues/5499 -+ - id: 6.2.19 -+ title: Ensure shadow group is empty (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ -+ - id: 6.2.20 -+ title: Ensure shadow group is empty (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - accounts_user_interactive_home_directory_exists - -From 9328919d45d46d2402e6a6cfb8bf726c8d24b7ec Mon Sep 17 00:00:00 2001 -From: Alex Haydock -Date: Sat, 3 Jul 2021 12:36:01 +0100 -Subject: [PATCH 06/55] Tweak RHEL8 CIS control file to satisfy yamllint - ---- - controls/cis_rhel8.yml | 9 +++++---- - 1 file changed, 5 insertions(+), 4 deletions(-) - -diff --git a/controls/cis_rhel8.yml b/controls/cis_rhel8.yml -index bc77e25d122..161a2aac58e 100644 ---- a/controls/cis_rhel8.yml -+++ b/controls/cis_rhel8.yml -@@ -1,3 +1,4 @@ -+--- - policy: 'CIS Benchmark for Red Hat Enterprise Linux 8' - title: 'CIS Benchmark for Red Hat Enterprise Linux 8' - id: cis_rhel8 -@@ -1597,7 +1598,7 @@ controls: - - l1_workstation - automated: yes - rules: -- - file_permissions_sshd_private_key -+ - file_permissions_sshd_private_key - - # TODO - # Check owner of public keys in /etc/ssh is root:root -@@ -1608,7 +1609,7 @@ controls: - - l1_workstation - automated: yes - rules: -- - file_permissions_sshd_pub_key -+ - file_permissions_sshd_pub_key - - - id: 5.2.5 - title: Ensure SSH LogLevel is appropriate (Automated) -@@ -1617,7 +1618,7 @@ controls: - - l1_workstation - automated: yes - rules: -- - sshd_set_loglevel_info -+ - sshd_set_loglevel_info - - - id: 5.2.6 - title: Ensure SSH X11 forwarding is disabled (Automated) -@@ -1626,7 +1627,7 @@ controls: - - l1_workstation - automated: yes - rules: -- - sshd_disable_x11_forwarding -+ - sshd_disable_x11_forwarding - - - id: 5.2.7 - title: Ensure SSH MaxAuthTries is set to 4 or less (Automated) - -From 035dd0b7d79159f1c67ef53baf5a5d284ab79aed Mon Sep 17 00:00:00 2001 -From: Alex Haydock -Date: Fri, 9 Jul 2021 00:11:57 +0100 -Subject: [PATCH 07/55] Updates to address comments on RHEL 8 CIS PR - ---- - controls/cis_rhel8.yml | 45 +++++++++++++++++++++++++++++------------- - 1 file changed, 31 insertions(+), 14 deletions(-) - -diff --git a/controls/cis_rhel8.yml b/controls/cis_rhel8.yml -index 161a2aac58e..c93d6128ca4 100644 ---- a/controls/cis_rhel8.yml -+++ b/controls/cis_rhel8.yml -@@ -170,7 +170,7 @@ controls: - rules: - - partition_for_home - -- - id: 1.1.18 -+ - id: 1.1.14 - title: Ensure nodev option set on /home partition (Automated) - levels: - - l1_server -@@ -212,7 +212,7 @@ controls: - - l1_server - - l1_workstation - automated: no -- rules: -+ related_rules: - - mount_option_nodev_removable_partitions - - - id: 1.1.19 -@@ -221,7 +221,7 @@ controls: - - l1_server - - l1_workstation - automated: no -- rules: -+ related_rules: - - mount_option_nosuid_removable_partitions - - - id: 1.1.20 -@@ -230,9 +230,18 @@ controls: - - l1_server - - l1_workstation - automated: no -- rules: -+ related_rules: - - mount_option_noexec_removable_partitions - -+ - id: 1.1.21 -+ title: Ensure sticky bit is set on all world-writable directories (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: yes -+ rules: -+ - dir_perms_world_writable_sticky_bits -+ - - id: 1.1.22 - title: Disable Automounting (Automated) - levels: -@@ -348,7 +357,7 @@ controls: - - file_groupowner_grub2_cfg - - file_permissions_grub2_cfg - -- - id: 1.5.1 -+ - id: 1.5.2 - title: Ensure bootloader password is set (Automated) - levels: - - l1_server -@@ -356,6 +365,7 @@ controls: - automated: yes - rules: - - grub2_password -+ - grub2_uefi_password - - - id: 1.5.3 - title: Ensure authentication required for single user mode (Automated) -@@ -397,15 +407,6 @@ controls: - rules: - - package_libselinux_installed - -- - id: 1.7.1.1 -- title: Ensure SELinux is installed (Automated) -- levels: -- - l2_server -- - l2_workstation -- automated: yes -- rules: -- - package_libselinux_installed -- - - id: 1.7.1.2 - title: Ensure SELinux is not disabled in bootloader configuration (Automated) - levels: -@@ -469,6 +470,7 @@ controls: - automated: yes - rules: - - banner_etc_motd -+ - login_banner_text=usgcb_default - - - id: 1.8.1.2 - title: Ensure local login warning banner is configured properly (Automated) -@@ -478,6 +480,7 @@ controls: - automated: yes - rules: - - banner_etc_issue -+ - login_banner_text=usgcb_default - - # NEEDS RULE - # https://github.com/ComplianceAsCode/content/issues/5225 -@@ -495,6 +498,8 @@ controls: - - l1_workstation - automated: yes - rules: -+ - file_groupowner_etc_motd -+ - file_owner_etc_motd - - file_permissions_etc_motd - - - id: 1.8.1.5 -@@ -504,8 +509,19 @@ controls: - - l1_workstation - automated: yes - rules: -+ - file_groupowner_etc_issue -+ - file_owner_etc_issue - - file_permissions_etc_issue - -+ # NEEDS RULE -+ # https://github.com/ComplianceAsCode/content/issues/7225 -+ - id: 1.8.1.6 -+ title: Ensure permissions on /etc/issue.net are configured (Automated) -+ levels: -+ - l1_server -+ - l1_workstation -+ automated: no -+ - - id: 1.8.2 - title: Ensure GDM login banner is configured (Automated) - levels: -@@ -515,6 +531,7 @@ controls: - rules: - - dconf_gnome_banner_enabled - - dconf_gnome_login_banner_text -+ - login_banner_text=usgcb_default - - - id: 1.9 - title: Ensure updates, patches, and additional security software are installed (Manual) - -From 0d2d6a378e8ce767959ffbe8b1c41c9e5ca22d01 Mon Sep 17 00:00:00 2001 -From: Alex Haydock -Date: Fri, 16 Jul 2021 14:21:02 +0100 -Subject: [PATCH 08/55] Allow DEFAULT crypto policy for RHEL 8 CIS (conditional - on merge of #7226) - ---- - controls/cis_rhel8.yml | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/controls/cis_rhel8.yml b/controls/cis_rhel8.yml -index c93d6128ca4..9140711fb66 100644 ---- a/controls/cis_rhel8.yml -+++ b/controls/cis_rhel8.yml -@@ -550,6 +550,7 @@ controls: - automated: yes - rules: - - configure_crypto_policy -+ - var_system_crypto_policy=default - - # This rule works in conjunction with the configure_crypto_policy above. - # If a system is remediated to CIS Level 1, just the rule above will apply - -From 85befb58973da869943ad45b80b495c0061df01b Mon Sep 17 00:00:00 2001 -From: Alex Haydock -Date: Fri, 16 Jul 2021 14:34:41 +0100 -Subject: [PATCH 09/55] Update RHEL 8 CIS Section 2 rules - ---- - controls/cis_rhel8.yml | 12 ++++++------ - 1 file changed, 6 insertions(+), 6 deletions(-) - -diff --git a/controls/cis_rhel8.yml b/controls/cis_rhel8.yml -index 9140711fb66..782dc7666f3 100644 ---- a/controls/cis_rhel8.yml -+++ b/controls/cis_rhel8.yml -@@ -585,7 +585,7 @@ controls: - related_rules: - - package_chrony_installed - -- - id: 2.1.1 -+ - id: 2.2.1.2 - title: Ensure chrony is configured (Automated) - levels: - - l1_server -@@ -597,13 +597,12 @@ controls: - - chronyd_run_as_chrony_user - - - id: 2.2.2 -- title: Ensure chrony is configured (Automated) -+ title: Ensure X Window System is not installed (Automated) - levels: - - l1_server - automated: yes - rules: -- - package_xorg-x11-server-common_removed -- - xwindows_runlevel_target -+ - xwindows_remove_packages - - - id: 2.2.3 - title: Ensure rsync service is not enabled (Automated) -@@ -639,7 +638,7 @@ controls: - - l1_workstation - automated: yes - rules: -- - package_squid_removed -+ - package_squid_disabled - - - id: 2.2.7 - title: Ensure Samba is not enabled (Automated) -@@ -707,7 +706,7 @@ controls: - # NEEDS RULE - # https://github.com/ComplianceAsCode/content/issues/5231 - - id: 2.2.14 -- title: Ensure RPC is not enabled (Automated) -+ title: Ensure LDAP server is not enabled (Automated) - levels: - - l1_server - - l1_workstation -@@ -748,6 +747,7 @@ controls: - automated: yes - rules: - - postfix_network_listening_disabled -+ - var_postfix_inet_interfaces=loopback-only - - - id: 2.3.1 - title: Ensure NIS Client is not installed (Automated) - -From fc72716acbbb503abb094a36f0cb17ab3ee58de3 Mon Sep 17 00:00:00 2001 -From: Alex Haydock -Date: Fri, 16 Jul 2021 15:03:09 +0100 -Subject: [PATCH 10/55] Update RHEL 8 CIS Section 3 rules - ---- - controls/cis_rhel8.yml | 29 ++++++++++++++++++++--------- - 1 file changed, 20 insertions(+), 9 deletions(-) - -diff --git a/controls/cis_rhel8.yml b/controls/cis_rhel8.yml -index 782dc7666f3..1d34337411f 100644 ---- a/controls/cis_rhel8.yml -+++ b/controls/cis_rhel8.yml -@@ -785,6 +785,7 @@ controls: - rules: - - sysctl_net_ipv4_ip_forward - - sysctl_net_ipv6_conf_all_forwarding -+ - sysctl_net_ipv6_conf_all_forwarding_value=disabled - - - id: 3.1.2 - title: Ensure packet redirect sending is disabled (Automated) -@@ -804,9 +805,13 @@ controls: - automated: yes - rules: - - sysctl_net_ipv4_conf_all_accept_source_route -+ - sysctl_net_ipv4_conf_all_accept_source_route_value=disabled - - sysctl_net_ipv4_conf_default_accept_source_route -+ - sysctl_net_ipv4_conf_default_accept_source_route_value=disabled - - sysctl_net_ipv6_conf_all_accept_source_route -+ - sysctl_net_ipv6_conf_all_accept_source_route_value=disabled - - sysctl_net_ipv6_conf_default_accept_source_route -+ - sysctl_net_ipv6_conf_default_accept_source_route_value=disabled - - - id: 3.2.2 - title: Ensure ICMP redirects are not accepted (Automated) -@@ -816,9 +821,13 @@ controls: - automated: yes - rules: - - sysctl_net_ipv4_conf_all_accept_redirects -+ - sysctl_net_ipv4_conf_all_accept_redirects_value=disabled - - sysctl_net_ipv4_conf_default_accept_redirects -+ - sysctl_net_ipv4_conf_default_accept_redirects_value=disabled - - sysctl_net_ipv6_conf_all_accept_redirects -+ - sysctl_net_ipv6_conf_all_accept_redirects_value=disabled - - sysctl_net_ipv6_conf_default_accept_redirects -+ - sysctl_net_ipv6_conf_default_accept_redirects_value=disabled - - - id: 3.2.3 - title: Ensure secure ICMP redirects are not accepted (Automated) -@@ -828,7 +837,9 @@ controls: - automated: yes - rules: - - sysctl_net_ipv4_conf_all_secure_redirects -+ - sysctl_net_ipv4_conf_all_secure_redirects_value=disabled - - sysctl_net_ipv4_conf_default_secure_redirects -+ - sysctl_net_ipv4_conf_default_secure_redirects_value=disabled - - - id: 3.2.4 - title: Ensure suspicious packets are logged (Automated) -@@ -838,7 +849,9 @@ controls: - automated: yes - rules: - - sysctl_net_ipv4_conf_all_log_martians -+ - sysctl_net_ipv4_conf_all_log_martians_value=enabled - - sysctl_net_ipv4_conf_default_log_martians -+ - sysctl_net_ipv4_conf_default_log_martians_value=enabled - - - id: 3.2.5 - title: Ensure broadcast ICMP requests are ignored (Automated) -@@ -848,6 +861,7 @@ controls: - automated: yes - rules: - - sysctl_net_ipv4_icmp_echo_ignore_broadcasts -+ - sysctl_net_ipv4_icmp_echo_ignore_broadcasts_value=enabled - - - id: 3.2.6 - title: Ensure bogus ICMP responses are ignored (Automated) -@@ -857,6 +871,7 @@ controls: - automated: yes - rules: - - sysctl_net_ipv4_icmp_ignore_bogus_error_responses -+ - sysctl_net_ipv4_icmp_ignore_bogus_error_responses_value=enabled - - - id: 3.2.7 - title: Ensure Reverse Path Filtering is enabled (Automated) -@@ -866,7 +881,9 @@ controls: - automated: yes - rules: - - sysctl_net_ipv4_conf_all_rp_filter -+ - sysctl_net_ipv4_conf_all_rp_filter_value=enabled - - sysctl_net_ipv4_conf_default_rp_filter -+ - sysctl_net_ipv4_conf_default_rp_filter_value=enabled - - - id: 3.2.8 - title: Ensure TCP SYN Cookies is enabled (Automated) -@@ -876,15 +893,7 @@ controls: - automated: yes - rules: - - sysctl_net_ipv4_tcp_syncookies -- -- - id: 3.2.8 -- title: Ensure TCP SYN Cookies is enabled (Automated) -- levels: -- - l1_server -- - l1_workstation -- automated: yes -- rules: -- - sysctl_net_ipv4_tcp_syncookies -+ - sysctl_net_ipv4_tcp_syncookies_value=enabled - - - id: 3.2.9 - title: Ensure IPv6 router advertisements are not accepted (Automated) -@@ -894,7 +903,9 @@ controls: - automated: yes - rules: - - sysctl_net_ipv6_conf_all_accept_ra -+ - sysctl_net_ipv6_conf_all_accept_ra_value=disabled - - sysctl_net_ipv6_conf_default_accept_ra -+ - sysctl_net_ipv6_conf_default_accept_ra_value=disabled - - - id: 3.3.1 - title: Ensure DCCP is disabled (Automated) - -From 35206714177e9fac308589041449fc484254c29b Mon Sep 17 00:00:00 2001 -From: Alex Haydock -Date: Tue, 20 Jul 2021 08:43:10 +0100 -Subject: [PATCH 11/55] Update controls/cis_rhel8.yml - -Co-authored-by: vojtapolasek ---- - controls/cis_rhel8.yml | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/controls/cis_rhel8.yml b/controls/cis_rhel8.yml -index 1d34337411f..2acf9aef28d 100644 ---- a/controls/cis_rhel8.yml -+++ b/controls/cis_rhel8.yml -@@ -638,7 +638,7 @@ controls: - - l1_workstation - automated: yes - rules: -- - package_squid_disabled -+ - service_squid_disabled - - - id: 2.2.7 - title: Ensure Samba is not enabled (Automated) - -From 0d1ff0c4d6ecdd1fcb3043d7e7237ef9159322ac Mon Sep 17 00:00:00 2001 -From: Alex Haydock -Date: Fri, 30 Jul 2021 22:13:25 +0100 -Subject: [PATCH 12/55] RHEL 8 CIS 1.5.1 is only partially automated currently - ---- - controls/cis_rhel8.yml | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/controls/cis_rhel8.yml b/controls/cis_rhel8.yml -index 2acf9aef28d..e63fc57ddea 100644 ---- a/controls/cis_rhel8.yml -+++ b/controls/cis_rhel8.yml -@@ -351,7 +351,7 @@ controls: - levels: - - l1_server - - l1_workstation -- automated: yes -+ automated: partially # This rule, as implemented here, does not check for a user.cfg file - rules: - - file_owner_grub2_cfg - - file_groupowner_grub2_cfg - -From 60e7bde2e888abd847505e8f2179aadae8ee8e1a Mon Sep 17 00:00:00 2001 -From: Alex Haydock -Date: Fri, 30 Jul 2021 22:19:14 +0100 -Subject: [PATCH 13/55] Add EFI GRUB rules to RHEL 8 CIS control 1.5.1 - ---- - controls/cis_rhel8.yml | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/controls/cis_rhel8.yml b/controls/cis_rhel8.yml -index e63fc57ddea..2163655d9d3 100644 ---- a/controls/cis_rhel8.yml -+++ b/controls/cis_rhel8.yml -@@ -353,8 +353,11 @@ controls: - - l1_workstation - automated: partially # This rule, as implemented here, does not check for a user.cfg file - rules: -- - file_owner_grub2_cfg -+ - file_groupowner_efi_grub2_cfg - - file_groupowner_grub2_cfg -+ - file_owner_efi_grub2_cfg -+ - file_owner_grub2_cfg -+ - file_permissions_efi_grub2_cfg - - file_permissions_grub2_cfg - - - id: 1.5.2 - -From 3be000366701a2772c7fe3ba7807e63fd4c03b24 Mon Sep 17 00:00:00 2001 -From: Alex Haydock -Date: Wed, 4 Aug 2021 16:11:38 +0100 -Subject: [PATCH 14/55] Update controls/cis_rhel8.yml - -Co-authored-by: vojtapolasek ---- - controls/cis_rhel8.yml | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/controls/cis_rhel8.yml b/controls/cis_rhel8.yml -index 2163655d9d3..aa9c2b6c809 100644 ---- a/controls/cis_rhel8.yml -+++ b/controls/cis_rhel8.yml -@@ -1655,7 +1655,7 @@ controls: - - id: 5.2.6 - title: Ensure SSH X11 forwarding is disabled (Automated) - levels: -- - l1_server -+ - l2_server - - l1_workstation - automated: yes - rules: - -From c62def9e1764d06aacb75b50886c7f4d08fe751b Mon Sep 17 00:00:00 2001 -From: Alex Haydock -Date: Wed, 4 Aug 2021 16:22:44 +0100 -Subject: [PATCH 15/55] Explicitly set var_auditd_max_log_file_action - ---- - controls/cis_rhel8.yml | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/controls/cis_rhel8.yml b/controls/cis_rhel8.yml -index aa9c2b6c809..af874fd789e 100644 ---- a/controls/cis_rhel8.yml -+++ b/controls/cis_rhel8.yml -@@ -1234,6 +1234,7 @@ controls: - automated: yes - rules: - - auditd_data_retention_max_log_file_action -+ - var_auditd_max_log_file_action=keep_logs - - - id: 4.1.2.3 - title: Ensure system is disabled when audit logs are full (Automated) - -From 860425b14b8637123b3f96aa9be319e9448f15a6 Mon Sep 17 00:00:00 2001 -From: Alex Haydock -Date: Wed, 4 Aug 2021 16:31:20 +0100 -Subject: [PATCH 16/55] Explicitly set the number of auditd logs to keep to 6 - ---- - controls/cis_rhel8.yml | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/controls/cis_rhel8.yml b/controls/cis_rhel8.yml -index af874fd789e..af1314325ab 100644 ---- a/controls/cis_rhel8.yml -+++ b/controls/cis_rhel8.yml -@@ -1225,6 +1225,7 @@ controls: - automated: yes - rules: - - auditd_data_retention_max_log_file -+ - var_auditd_max_log_file=6 - - - id: 4.1.2.2 - title: Ensure audit logs are not automatically deleted (Automated) - -From 28cad027f42c4bf0f5570bf16766a7b1d402d5fe Mon Sep 17 00:00:00 2001 -From: Alex Haydock -Date: Wed, 4 Aug 2021 16:36:48 +0100 -Subject: [PATCH 17/55] The audit_rules_time_settimeofday rule does not - directly align with CIS - ---- - controls/cis_rhel8.yml | 3 +-- - 1 file changed, 1 insertion(+), 2 deletions(-) - -diff --git a/controls/cis_rhel8.yml b/controls/cis_rhel8.yml -index af1314325ab..a81a9ef4605 100644 ---- a/controls/cis_rhel8.yml -+++ b/controls/cis_rhel8.yml -@@ -1284,11 +1284,10 @@ controls: - levels: - - l2_server - - l2_workstation -- automated: yes -+ automated: partial # The CAC rule audit_rules_time_settimeofday uses additional parameters compared to the CIS benchmark and so is not used here. As a result, automated coverage is only partial for this control. - rules: - - audit_rules_time_adjtimex - - audit_rules_time_clock_settime -- - audit_rules_time_settimeofday - - audit_rules_time_stime - - audit_rules_time_watch_localtime - - -From fe542405de5e73479ca8377b80fbbb7ac32be1d7 Mon Sep 17 00:00:00 2001 -From: Alex Haydock -Date: Wed, 4 Aug 2021 16:37:25 +0100 -Subject: [PATCH 18/55] RHEL CIS control 4.1.7 is missing a rule to achieve - full automation - ---- - controls/cis_rhel8.yml | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/controls/cis_rhel8.yml b/controls/cis_rhel8.yml -index a81a9ef4605..cba86f40c9e 100644 ---- a/controls/cis_rhel8.yml -+++ b/controls/cis_rhel8.yml -@@ -1299,7 +1299,7 @@ controls: - levels: - - l2_server - - l2_workstation -- automated: yes -+ automated: partial - rules: - - audit_rules_mac_modification - - -From ed087900ecf7230d2797a483e07a753f1733317e Mon Sep 17 00:00:00 2001 -From: Alex Haydock -Date: Wed, 4 Aug 2021 16:38:54 +0100 -Subject: [PATCH 19/55] Remove opinionated rule from CIS 4.1.10 as it does not - align with the benchmark - ---- - controls/cis_rhel8.yml | 2 -- - 1 file changed, 2 deletions(-) - -diff --git a/controls/cis_rhel8.yml b/controls/cis_rhel8.yml -index cba86f40c9e..6e8c5cf10f0 100644 ---- a/controls/cis_rhel8.yml -+++ b/controls/cis_rhel8.yml -@@ -1345,8 +1345,6 @@ controls: - - audit_rules_unsuccessful_file_modification_open - - audit_rules_unsuccessful_file_modification_openat - - audit_rules_unsuccessful_file_modification_truncate -- # Opinionated selection -- - audit_rules_unsuccessful_file_modification_open_by_handle_at - - - id: 4.1.11 - title: Ensure events that modify user/group information are collected (Automated) - -From 47bf486ddadd79bade733fd444f3aadca4a82ad7 Mon Sep 17 00:00:00 2001 -From: Alex Haydock -Date: Wed, 4 Aug 2021 16:41:13 +0100 -Subject: [PATCH 20/55] Use "partially" rather than "partial" for automation - key - ---- - controls/cis_rhel8.yml | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/controls/cis_rhel8.yml b/controls/cis_rhel8.yml -index 6e8c5cf10f0..829f0515cb0 100644 ---- a/controls/cis_rhel8.yml -+++ b/controls/cis_rhel8.yml -@@ -1284,7 +1284,7 @@ controls: - levels: - - l2_server - - l2_workstation -- automated: partial # The CAC rule audit_rules_time_settimeofday uses additional parameters compared to the CIS benchmark and so is not used here. As a result, automated coverage is only partial for this control. -+ automated: partially # The CAC rule audit_rules_time_settimeofday uses additional parameters compared to the CIS benchmark and so is not used here. As a result, automated coverage is only partial for this control. - rules: - - audit_rules_time_adjtimex - - audit_rules_time_clock_settime -@@ -1299,7 +1299,7 @@ controls: - levels: - - l2_server - - l2_workstation -- automated: partial -+ automated: partially - rules: - - audit_rules_mac_modification - - -From 42e08ddcb1575fccf3ff0f0a4094a15fb445bdf1 Mon Sep 17 00:00:00 2001 -From: Alex Haydock -Date: Wed, 4 Aug 2021 16:42:57 +0100 -Subject: [PATCH 21/55] Disable automation for control 4.1.13 as it does not - align exactly with the benchmark - ---- - controls/cis_rhel8.yml | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git a/controls/cis_rhel8.yml b/controls/cis_rhel8.yml -index 829f0515cb0..76a7c8bbfa9 100644 ---- a/controls/cis_rhel8.yml -+++ b/controls/cis_rhel8.yml -@@ -1373,8 +1373,9 @@ controls: - levels: - - l2_server - - l2_workstation -- automated: yes -- rules: -+ automated: no -+ related_rules: -+ # The rule below is almost correct but cannot be used as it does not set the perm=x flag. - - audit_rules_privileged_commands - - - id: 4.1.14 - -From 769029ec6639f26afdbb9d595f67e692dec368c2 Mon Sep 17 00:00:00 2001 -From: Alex Haydock -Date: Wed, 4 Aug 2021 16:44:03 +0100 -Subject: [PATCH 22/55] Remove opinionated rule from CIS 4.1.14 as it does not - align with the benchmark - ---- - controls/cis_rhel8.yml | 2 -- - 1 file changed, 2 deletions(-) - -diff --git a/controls/cis_rhel8.yml b/controls/cis_rhel8.yml -index 76a7c8bbfa9..e6a53516666 100644 ---- a/controls/cis_rhel8.yml -+++ b/controls/cis_rhel8.yml -@@ -1389,8 +1389,6 @@ controls: - - audit_rules_file_deletion_events_renameat - - audit_rules_file_deletion_events_unlink - - audit_rules_file_deletion_events_unlinkat -- # Opinionated selection -- - audit_rules_file_deletion_events_rmdir - - - id: 4.1.15 - title: Ensure kernel module loading and unloading is collected (Automated) - -From fe163c10596ab3e24fb805267cb762cc40fd5ed0 Mon Sep 17 00:00:00 2001 -From: Alex Haydock -Date: Wed, 4 Aug 2021 16:47:53 +0100 -Subject: [PATCH 23/55] Disable the rsyslog_files_permissions rule as it does - not align with the benchmark - ---- - controls/cis_rhel8.yml | 7 ++++--- - 1 file changed, 4 insertions(+), 3 deletions(-) - -diff --git a/controls/cis_rhel8.yml b/controls/cis_rhel8.yml -index e6a53516666..327400abd65 100644 ---- a/controls/cis_rhel8.yml -+++ b/controls/cis_rhel8.yml -@@ -1435,14 +1435,15 @@ controls: - rules: - - service_rsyslog_enabled - -+ # NEEDS RULE -+ # The rsyslog_files_permissions rule is not sufficient -+ # https://github.com/ComplianceAsCode/content/issues/7332 - - id: 4.2.1.3 - title: Ensure rsyslog default file permissions configured (Automated) - levels: - - l1_server - - l1_workstation -- automated: yes -- rules: -- - rsyslog_files_permissions -+ automated: no - - - id: 4.2.1.4 - title: Ensure logging is configured (Manual) - -From 404aef23030c6286f6b3d465ca84295c5252fe7c Mon Sep 17 00:00:00 2001 -From: Alex Haydock -Date: Wed, 4 Aug 2021 16:52:17 +0100 -Subject: [PATCH 24/55] Disable 4.2.1.5 and 5.2.3 as they do not align - perfectly with the benchmark - ---- - controls/cis_rhel8.yml | 19 ++++++++----------- - 1 file changed, 8 insertions(+), 11 deletions(-) - -diff --git a/controls/cis_rhel8.yml b/controls/cis_rhel8.yml -index 327400abd65..f5a8ce45848 100644 ---- a/controls/cis_rhel8.yml -+++ b/controls/cis_rhel8.yml -@@ -1452,14 +1452,15 @@ controls: - - l1_workstation - automated: no - -+ # NEEDS RULE -+ # The rsyslog_remote_loghost rule is not sufficient -+ # https://github.com/ComplianceAsCode/content/issues/7333 - - id: 4.2.1.5 - title: Ensure rsyslog is configured to send logs to a remote log host (Automated) - levels: - - l1_server - - l1_workstation -- automated: yes -- rules: -- - rsyslog_remote_loghost -+ automated: no - - - id: 4.2.1.6 - title: Ensure remote rsyslog messages are only accepted on designated log hosts. (Manual) -@@ -1617,19 +1618,15 @@ controls: - - l1_workstation - automated: no - -- # TODO -- # Rule sets permissions to 0640 but benchmark wants it to be 0600 -- # -- # TODO -- # Check owner of private keys in /etc/ssh is root:root -+ # NEEDS RULE -+ # The file_permissions_sshd_private_key rule is not aligned with the benchmark -+ # https://github.com/ComplianceAsCode/content/issues/7334 - - id: 5.2.3 - title: Ensure permissions on SSH private host key files are configured (Automated) - levels: - - l1_server - - l1_workstation -- automated: yes -- rules: -- - file_permissions_sshd_private_key -+ automated: no - - # TODO - # Check owner of public keys in /etc/ssh is root:root - -From 012d4f8df6c68e8a7a3c2efcd139a7f9ce8ab6bb Mon Sep 17 00:00:00 2001 -From: Alex Haydock -Date: Wed, 4 Aug 2021 16:53:10 +0100 -Subject: [PATCH 25/55] 5.2.4 is only partially automated - ---- - controls/cis_rhel8.yml | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/controls/cis_rhel8.yml b/controls/cis_rhel8.yml -index f5a8ce45848..0e3fa99d32e 100644 ---- a/controls/cis_rhel8.yml -+++ b/controls/cis_rhel8.yml -@@ -1635,7 +1635,7 @@ controls: - levels: - - l1_server - - l1_workstation -- automated: yes -+ automated: partially - rules: - - file_permissions_sshd_pub_key - - -From e5cfc29ca52446f494a539010af31e54af51d58a Mon Sep 17 00:00:00 2001 -From: Alex Haydock -Date: Wed, 4 Aug 2021 16:55:32 +0100 -Subject: [PATCH 26/55] Ensure var_sshd_set_keepalive variable gets used - properly - ---- - controls/cis_rhel8.yml | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/controls/cis_rhel8.yml b/controls/cis_rhel8.yml -index 0e3fa99d32e..439b3265fe9 100644 ---- a/controls/cis_rhel8.yml -+++ b/controls/cis_rhel8.yml -@@ -1721,7 +1721,7 @@ controls: - rules: - - sshd_idle_timeout_value=5_minutes - - sshd_set_idle_timeout -- - sshd_set_keepalive_0 -+ - sshd_set_keepalive - - var_sshd_set_keepalive=0 - - # NEEDS RULE - -From d21ea1b769d31bfbdcb97d1af5de9969be835ace Mon Sep 17 00:00:00 2001 -From: Alex Haydock -Date: Thu, 5 Aug 2021 08:47:24 +0100 -Subject: [PATCH 27/55] Align RHEL 8 Chrony configuration rule more closely - with CIS benchmark - ---- - controls/cis_rhel8.yml | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/controls/cis_rhel8.yml b/controls/cis_rhel8.yml -index 439b3265fe9..92ac0dd85c5 100644 ---- a/controls/cis_rhel8.yml -+++ b/controls/cis_rhel8.yml -@@ -595,9 +595,9 @@ controls: - - l1_workstation - automated: yes - rules: -- - service_chronyd_enabled - - chronyd_specify_remote_server - - chronyd_run_as_chrony_user -+ - var_multiple_time_servers=rhel - - - id: 2.2.2 - title: Ensure X Window System is not installed (Automated) - -From ade74cf232a649645b91da9d7c007b1106e25fb4 Mon Sep 17 00:00:00 2001 -From: Alex Haydock -Date: Thu, 5 Aug 2021 08:54:14 +0100 -Subject: [PATCH 28/55] Set SSH loglevel to VERBOSE in RHEL 8 CIS controls file - ---- - controls/cis_rhel8.yml | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/controls/cis_rhel8.yml b/controls/cis_rhel8.yml -index 92ac0dd85c5..565974817f1 100644 ---- a/controls/cis_rhel8.yml -+++ b/controls/cis_rhel8.yml -@@ -1645,7 +1645,12 @@ controls: - - l1_server - - l1_workstation - automated: yes -+ # The CIS benchmark is not opinionated about which loglevel is selected -+ # here. Here, this profile uses VERBOSE by default, as it allows for -+ # the capture of login and logout activity as well as key fingerprints. - rules: -+ - sshd_set_loglevel_verbose -+ related_rules: - - sshd_set_loglevel_info - - - id: 5.2.6 - -From 723681dedf1d88c4924684e34ea4c5e7fb8be24d Mon Sep 17 00:00:00 2001 -From: Alex Haydock -Date: Thu, 5 Aug 2021 09:00:17 +0100 -Subject: [PATCH 29/55] Disable SSH warning banner rule in RHEL 8 CIS (uses - wrong path) - ---- - controls/cis_rhel8.yml | 8 +++++--- - 1 file changed, 5 insertions(+), 3 deletions(-) - -diff --git a/controls/cis_rhel8.yml b/controls/cis_rhel8.yml -index 565974817f1..53f024fffea 100644 ---- a/controls/cis_rhel8.yml -+++ b/controls/cis_rhel8.yml -@@ -1738,14 +1738,16 @@ controls: - - l1_workstation - automated: no - -+ # NEEDS RULE -+ # The current sshd_enable_warning_banner rule uses /etc/issue instead -+ # of the /etc/issue.net that the benchmark expects. -+ # - - id: 5.2.15 - title: Ensure SSH warning banner is configured (Automated) - levels: - - l1_server - - l1_workstation -- automated: yes -- rules: -- - sshd_enable_warning_banner -+ automated: no - - # NEEDS RULE - # https://github.com/ComplianceAsCode/content/issues/5526 - -From b0615c26dd852bf817aa919752f543802ff707b0 Mon Sep 17 00:00:00 2001 -From: Alex Haydock -Date: Thu, 5 Aug 2021 09:00:48 +0100 -Subject: [PATCH 30/55] Add explicit variable definition for SSH MaxStartups - rule in RHEL 8 CIS profile - ---- - controls/cis_rhel8.yml | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/controls/cis_rhel8.yml b/controls/cis_rhel8.yml -index 53f024fffea..3345a37d098 100644 ---- a/controls/cis_rhel8.yml -+++ b/controls/cis_rhel8.yml -@@ -1775,6 +1775,7 @@ controls: - automated: yes - rules: - - sshd_set_maxstartups -+ - var_sshd_set_maxstartups=10:30:60 - - - id: 5.2.19 - title: Ensure SSH MaxSessions is set to 4 or less (Automated) - -From 03504b065edbaa7f23352943adc3650e59771ba1 Mon Sep 17 00:00:00 2001 -From: Alex Haydock -Date: Thu, 5 Aug 2021 09:19:43 +0100 -Subject: [PATCH 31/55] Update SSH MaxSessions to match the value CIS audits - for vs the one in the control title - ---- - controls/cis_rhel8.yml | 9 ++++++++- - 1 file changed, 8 insertions(+), 1 deletion(-) - -diff --git a/controls/cis_rhel8.yml b/controls/cis_rhel8.yml -index 3345a37d098..3b6219f3296 100644 ---- a/controls/cis_rhel8.yml -+++ b/controls/cis_rhel8.yml -@@ -1777,6 +1777,13 @@ controls: - - sshd_set_maxstartups - - var_sshd_set_maxstartups=10:30:60 - -+ # The title of this control does not appear to match the suggested audit and -+ # remediation in the CIS Benchmark version 1.0.1 - this profile uses the -+ # value from the audit and remediation sections of the benchmark rather than -+ # from the title. -+ # -+ # An upstream ticket has been opened about this issue: -+ # https://workbench.cisecurity.org/community/14/tickets/13414 - - id: 5.2.19 - title: Ensure SSH MaxSessions is set to 4 or less (Automated) - levels: -@@ -1785,7 +1792,7 @@ controls: - automated: yes - rules: - - sshd_set_max_sessions -- - var_sshd_max_sessions=4 -+ - var_sshd_max_sessions=10 - - - id: 5.2.20 - title: Ensure system-wide crypto policy is not over-ridden (Automated) - -From 0ef85e84670e72afb2842414369b12a1c72cd273 Mon Sep 17 00:00:00 2001 -From: Alex Haydock -Date: Thu, 5 Aug 2021 09:20:45 +0100 -Subject: [PATCH 32/55] Fix rule ID for 5.3.3 - ---- - controls/cis_rhel8.yml | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/controls/cis_rhel8.yml b/controls/cis_rhel8.yml -index 3b6219f3296..55c8378529d 100644 ---- a/controls/cis_rhel8.yml -+++ b/controls/cis_rhel8.yml -@@ -1823,7 +1823,7 @@ controls: - - # NEEDS RULE - # https://github.com/ComplianceAsCode/content/issues/5532 -- - id: 5.3.2 -+ - id: 5.3.3 - title: Ensure authselect includes with-faillock (Automated) - levels: - - l1_server - -From 85c2fcf29b1c71f4528fabeed8c6556cf02312e7 Mon Sep 17 00:00:00 2001 -From: Alex Haydock -Date: Thu, 5 Aug 2021 09:23:40 +0100 -Subject: [PATCH 33/55] Remove misaligned rules from RHEL 8 CIS 5.4.2 - ---- - controls/cis_rhel8.yml | 9 +++------ - 1 file changed, 3 insertions(+), 6 deletions(-) - -diff --git a/controls/cis_rhel8.yml b/controls/cis_rhel8.yml -index 55c8378529d..c7f651994d6 100644 ---- a/controls/cis_rhel8.yml -+++ b/controls/cis_rhel8.yml -@@ -1845,17 +1845,14 @@ controls: - - var_password_pam_minclass=4 - - var_password_pam_minlen=14 - -+ # NEEDS RULE -+ # https://github.com/ComplianceAsCode/content/issues/7337 - - id: 5.4.2 - title: Ensure lockout for failed password attempts is configured (Automated) - levels: - - l1_server - - l1_workstation -- automated: yes -- rules: -- - accounts_passwords_pam_faillock_deny -- - accounts_passwords_pam_faillock_unlock_time -- - var_accounts_passwords_pam_faillock_deny=5 -- - var_accounts_passwords_pam_faillock_unlock_time=900 -+ automated: no - - - id: 5.4.3 - title: Ensure password reuse is limited (Automated) - -From edbd2b2264252ab1a35f872b816947e289c7d4a5 Mon Sep 17 00:00:00 2001 -From: Alex Haydock -Date: Thu, 5 Aug 2021 09:29:15 +0100 -Subject: [PATCH 34/55] RHEL 8 CIS 5.4.1 is only partially automated - ---- - controls/cis_rhel8.yml | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git a/controls/cis_rhel8.yml b/controls/cis_rhel8.yml -index c7f651994d6..10816e1ba35 100644 ---- a/controls/cis_rhel8.yml -+++ b/controls/cis_rhel8.yml -@@ -1830,14 +1830,15 @@ controls: - - l1_workstation - automated: no - -- # NEEDS RULE: try_first_pass -+ # NEEDS RULE -+ # try_first_pass - # https://github.com/ComplianceAsCode/content/issues/5533 - - id: 5.4.1 - title: Ensure password creation requirements are configured (Automated) - levels: - - l1_server - - l1_workstation -- automated: yes -+ automated: partially - rules: - - accounts_password_pam_minclass - - accounts_password_pam_minlen - -From e32f46528ef2c46986fca31e700b40949096d48f Mon Sep 17 00:00:00 2001 -From: Alex Haydock -Date: Thu, 5 Aug 2021 09:37:15 +0100 -Subject: [PATCH 35/55] Import logic for the "Ensure password reuse is limited" - rule from RHEL 7 - ---- - controls/cis_rhel8.yml | 12 +++++++++--- - 1 file changed, 9 insertions(+), 3 deletions(-) - -diff --git a/controls/cis_rhel8.yml b/controls/cis_rhel8.yml -index 10816e1ba35..0ea36362832 100644 ---- a/controls/cis_rhel8.yml -+++ b/controls/cis_rhel8.yml -@@ -1861,9 +1861,15 @@ controls: - - l1_server - - l1_workstation - automated: yes -- rules: -- - accounts_password_pam_unix_remember -- - var_password_pam_unix_remember=5 -+ notes: |- -+ Usage of pam_unix.so module together with "remember" option is deprecated and is not supported by this policy interpretation. -+ See here for more details about pam_unix.so: -+ https://bugzilla.redhat.com/show_bug.cgi?id=1778929 -+ rules: -+ - accounts_password_pam_pwhistory_remember_password_auth -+ - accounts_password_pam_pwhistory_remember_system_auth -+ - var_password_pam_remember_control_flag=required -+ - var_password_pam_remember=5 - - - id: 5.4.4 - title: Ensure password hashing algorithm is SHA-512 (Automated) - -From c77bbff67b5e700b6785264bee3c973c343364d1 Mon Sep 17 00:00:00 2001 -From: Alex Haydock -Date: Thu, 5 Aug 2021 09:41:13 +0100 -Subject: [PATCH 36/55] RHEL 8 CIS 5.4.4 is only partially automated - ---- - controls/cis_rhel8.yml | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/controls/cis_rhel8.yml b/controls/cis_rhel8.yml -index 0ea36362832..be46d870965 100644 ---- a/controls/cis_rhel8.yml -+++ b/controls/cis_rhel8.yml -@@ -1876,7 +1876,7 @@ controls: - levels: - - l1_server - - l1_workstation -- automated: yes -+ automated: partially # The rule below does not check the /etc/pam.d/password-auth file mentioned in the benchmark. - rules: - - set_password_hashing_algorithm_systemauth - - -From be706084b1cae588b2799b38e9cea615ce8dc22f Mon Sep 17 00:00:00 2001 -From: Alex Haydock -Date: Thu, 5 Aug 2021 09:42:57 +0100 -Subject: [PATCH 37/55] RHEL 8 CIS 5.5.1.1 is only partially automated - ---- - controls/cis_rhel8.yml | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/controls/cis_rhel8.yml b/controls/cis_rhel8.yml -index be46d870965..e41c2eb4dae 100644 ---- a/controls/cis_rhel8.yml -+++ b/controls/cis_rhel8.yml -@@ -1885,7 +1885,7 @@ controls: - levels: - - l1_server - - l1_workstation -- automated: yes -+ automated: partially # The rule below does not validate whether all current users' PASS_MAX_DAYS setting conforms to the control. - rules: - - accounts_maximum_age_login_defs - - var_accounts_maximum_age_login_defs=365 - -From 075eb337ef12d1610626e6b92eb6b207f89e7054 Mon Sep 17 00:00:00 2001 -From: Alex Haydock -Date: Thu, 5 Aug 2021 09:44:17 +0100 -Subject: [PATCH 38/55] RHEL 8 CIS 5.5.1.2 is only partially automated - ---- - controls/cis_rhel8.yml | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/controls/cis_rhel8.yml b/controls/cis_rhel8.yml -index e41c2eb4dae..0b2b3d04621 100644 ---- a/controls/cis_rhel8.yml -+++ b/controls/cis_rhel8.yml -@@ -1895,7 +1895,7 @@ controls: - levels: - - l1_server - - l1_workstation -- automated: yes -+ automated: partially # The rule below does not validate whether all current users' PASS_MIN_DAYS setting conforms to the control. - rules: - - accounts_minimum_age_login_defs - - var_accounts_minimum_age_login_defs=7 - -From 1e3c17e5c1f81582bf891664dd7bc7c6000030b2 Mon Sep 17 00:00:00 2001 -From: Alex Haydock -Date: Thu, 5 Aug 2021 09:47:22 +0100 -Subject: [PATCH 39/55] RHEL 8 CIS 5.5.1.3 is only partially automated - ---- - controls/cis_rhel8.yml | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/controls/cis_rhel8.yml b/controls/cis_rhel8.yml -index 0b2b3d04621..70312f6399a 100644 ---- a/controls/cis_rhel8.yml -+++ b/controls/cis_rhel8.yml -@@ -1905,7 +1905,7 @@ controls: - levels: - - l1_server - - l1_workstation -- automated: yes -+ automated: partially # The rule below does not validate whether all current users' PASS_WARN_AGE setting conforms to the control. - rules: - - accounts_password_warn_age_login_defs - - var_accounts_password_warn_age_login_defs=7 - -From 97c5ff8a7096b04c2ebdac6af58047a9b0ee194b Mon Sep 17 00:00:00 2001 -From: Alex Haydock -Date: Thu, 5 Aug 2021 09:47:54 +0100 -Subject: [PATCH 40/55] RHEL 8 CIS 5.5.1.4 is only partially automated - ---- - controls/cis_rhel8.yml | 4 +--- - 1 file changed, 1 insertion(+), 3 deletions(-) - -diff --git a/controls/cis_rhel8.yml b/controls/cis_rhel8.yml -index 70312f6399a..42dbf14c816 100644 ---- a/controls/cis_rhel8.yml -+++ b/controls/cis_rhel8.yml -@@ -1910,14 +1910,12 @@ controls: - - accounts_password_warn_age_login_defs - - var_accounts_password_warn_age_login_defs=7 - -- # TODO -- # Rule doesn't check list of users - - id: 5.5.1.4 - title: Ensure inactive password lock is 30 days or less (Automated) - levels: - - l1_server - - l1_workstation -- automated: yes -+ automated: partially # The rule below does not validate wheter all current users' INACTIVE setting conforms to the control. - rules: - - account_disable_post_pw_expiration - - var_account_disable_post_pw_expiration=30 - -From 2d5603c3e25f376b0351364c05b3eaccc5b36368 Mon Sep 17 00:00:00 2001 -From: Alex Haydock -Date: Fri, 6 Aug 2021 15:17:53 +0100 -Subject: [PATCH 41/55] Set SSH idle timeout to 15 minutes - ---- - controls/cis_rhel8.yml | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/controls/cis_rhel8.yml b/controls/cis_rhel8.yml -index 42dbf14c816..e8e340e0c36 100644 ---- a/controls/cis_rhel8.yml -+++ b/controls/cis_rhel8.yml -@@ -1724,7 +1724,7 @@ controls: - - l1_workstation - automated: yes - rules: -- - sshd_idle_timeout_value=5_minutes -+ - sshd_idle_timeout_value=15_minutes - - sshd_set_idle_timeout - - sshd_set_keepalive - - var_sshd_set_keepalive=0 - -From da63d392814f48f17436e975cf8ccc3215eb917c Mon Sep 17 00:00:00 2001 -From: Alex Haydock -Date: Fri, 6 Aug 2021 16:12:47 +0100 -Subject: [PATCH 42/55] RHEL 8 CIS 5.5.2 is only partially automated - ---- - controls/cis_rhel8.yml | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/controls/cis_rhel8.yml b/controls/cis_rhel8.yml -index e8e340e0c36..2d534d95072 100644 ---- a/controls/cis_rhel8.yml -+++ b/controls/cis_rhel8.yml -@@ -1929,12 +1929,15 @@ controls: - - l1_workstation - automated: no - -+ # NEEDS RULE -+ # We are missing the component of this control which locks non-root system accounts -+ # https://github.com/ComplianceAsCode/content/issues/7352 - - id: 5.5.2 - title: Ensure system accounts are secured (Automated) - levels: - - l1_server - - l1_workstation -- automated: yes -+ automated: partially - rules: - - no_shelllogin_for_systemaccounts - - -From d07ec30f6cde2e6a3875170ced9004a81af6dee4 Mon Sep 17 00:00:00 2001 -From: Alex Haydock -Date: Fri, 6 Aug 2021 16:17:13 +0100 -Subject: [PATCH 43/55] RHEL 8 CIS 5.5.3 is only partially automated - ---- - controls/cis_rhel8.yml | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/controls/cis_rhel8.yml b/controls/cis_rhel8.yml -index 2d534d95072..784af3e0fe9 100644 ---- a/controls/cis_rhel8.yml -+++ b/controls/cis_rhel8.yml -@@ -1946,7 +1946,7 @@ controls: - levels: - - l1_server - - l1_workstation -- automated: yes -+ automated: partially # The remediation for this rule does not implement the "TMOUT" variable as readonly so does not align fully with the benchmark - rules: - - accounts_tmout - - var_accounts_tmout=15_min - -From cd867062192bb635422d1f72261d4e8fbdc841e6 Mon Sep 17 00:00:00 2001 -From: Alex Haydock -Date: Fri, 6 Aug 2021 16:21:39 +0100 -Subject: [PATCH 44/55] RHEL 8 CIS 5.5.5 is only partially automated - ---- - controls/cis_rhel8.yml | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/controls/cis_rhel8.yml b/controls/cis_rhel8.yml -index 784af3e0fe9..045e219d90f 100644 ---- a/controls/cis_rhel8.yml -+++ b/controls/cis_rhel8.yml -@@ -1965,9 +1965,10 @@ controls: - levels: - - l1_server - - l1_workstation -- automated: yes -+ automated: partially # The rules below do not take /etc/profile.d/* into account so are not perfectly aligned with the benchmark - rules: - - accounts_umask_etc_bashrc -+ - accounts_umask_etc_login_defs - - accounts_umask_etc_profile - - var_accounts_user_umask=027 - - -From ec2d43b53d75627fd9ac33721fb8f04a5c2574df Mon Sep 17 00:00:00 2001 -From: Alex Haydock -Date: Fri, 6 Aug 2021 16:23:32 +0100 -Subject: [PATCH 45/55] RHEL 8 CIS 5.7 can be partially satisfied by - use_pam_wheel_for_su - ---- - controls/cis_rhel8.yml | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/controls/cis_rhel8.yml b/controls/cis_rhel8.yml -index 045e219d90f..84a3269afc6 100644 ---- a/controls/cis_rhel8.yml -+++ b/controls/cis_rhel8.yml -@@ -1989,7 +1989,9 @@ controls: - levels: - - l1_server - - l1_workstation -- automated: no -+ automated: partially -+ rules: -+ - use_pam_wheel_for_su - - - id: 6.1.1 - title: Audit system file permissions (Manual) - -From ca3b471ce283691f423a427c84845ab55860ecfa Mon Sep 17 00:00:00 2001 -From: Alex Haydock -Date: Fri, 6 Aug 2021 16:31:56 +0100 -Subject: [PATCH 46/55] Rules exist which satisfy RHEL 8 CIS 6.2.3 - ---- - controls/cis_rhel8.yml | 7 ++++--- - 1 file changed, 4 insertions(+), 3 deletions(-) - -diff --git a/controls/cis_rhel8.yml b/controls/cis_rhel8.yml -index 84a3269afc6..d02f2cbbf86 100644 ---- a/controls/cis_rhel8.yml -+++ b/controls/cis_rhel8.yml -@@ -2154,14 +2154,15 @@ controls: - rules: - - no_legacy_plus_entries_etc_passwd - -- # NEEDS RULE -- # https://github.com/ComplianceAsCode/content/issues/7198 - - id: 6.2.3 - title: Ensure root PATH Integrity (Automated) - levels: - - l1_server - - l1_workstation -- automated: no -+ automated: yes -+ rules: -+ - accounts_root_path_dirs_no_write -+ - root_path_no_dot - - - id: 6.2.4 - title: Ensure no legacy "+" entries exist in /etc/shadow (Automated) - -From 92adfbb1ca271105aee1be7044b617227e0ef93e Mon Sep 17 00:00:00 2001 -From: Alex Haydock -Date: Fri, 6 Aug 2021 16:34:47 +0100 -Subject: [PATCH 47/55] Rules exist for RHEL 8 CIS 6.2.7 and 6.2.8 but without - OVAL checks or remediations - ---- - controls/cis_rhel8.yml | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/controls/cis_rhel8.yml b/controls/cis_rhel8.yml -index d02f2cbbf86..a3f3d4e6d4f 100644 ---- a/controls/cis_rhel8.yml -+++ b/controls/cis_rhel8.yml -@@ -2196,8 +2196,8 @@ controls: - levels: - - l1_server - - l1_workstation -- automated: yes -- rules: -+ automated: no # The rule below exists, but does not have any OVAL checks or remediations. -+ related_rules: - - file_permissions_home_dirs - - # NEEDS RULE (for user ownership) -@@ -2207,7 +2207,7 @@ controls: - levels: - - l1_server - - l1_workstation -- automated: yes -+ automated: no # The rule below exists, but does not have any OVAL checks or remediations. - rules: - - file_groupownership_home_directories - - -From 25b0bbb11fc07f16bada862c99eb01c2d76fb582 Mon Sep 17 00:00:00 2001 -From: Alex Haydock -Date: Fri, 6 Aug 2021 16:35:23 +0100 -Subject: [PATCH 48/55] Rules exist for RHEL 8 CIS 6.2.20 but without OVAL - checks or remediations - ---- - controls/cis_rhel8.yml | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/controls/cis_rhel8.yml b/controls/cis_rhel8.yml -index a3f3d4e6d4f..cfefd245300 100644 ---- a/controls/cis_rhel8.yml -+++ b/controls/cis_rhel8.yml -@@ -2311,10 +2311,10 @@ controls: - automated: no - - - id: 6.2.20 -- title: Ensure shadow group is empty (Automated) -+ title: Ensure all users' home directories exist (Automated) - levels: - - l1_server - - l1_workstation -- automated: yes -- rules: -+ automated: no # The rule below exists, but does not have any OVAL checks or remediations. -+ related_rules: - - accounts_user_interactive_home_directory_exists - -From c8d07e3ace333c4aa0098d64836596a4e4f7b772 Mon Sep 17 00:00:00 2001 -From: Alex Haydock -Date: Fri, 6 Aug 2021 16:38:11 +0100 -Subject: [PATCH 49/55] We cannot use audit_rules_kernel_module_loading because - it also checks for finit_module syscall - ---- - controls/cis_rhel8.yml | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) - -diff --git a/controls/cis_rhel8.yml b/controls/cis_rhel8.yml -index cfefd245300..e8d3f24ccbb 100644 ---- a/controls/cis_rhel8.yml -+++ b/controls/cis_rhel8.yml -@@ -1397,7 +1397,11 @@ controls: - - l2_workstation - automated: yes - rules: -- - audit_rules_kernel_module_loading -+ - audit_rules_kernel_module_loading_delete -+ - audit_rules_kernel_module_loading_init -+ - audit_rules_privileged_commands_insmod -+ - audit_rules_privileged_commands_modprobe -+ - audit_rules_privileged_commands_rmmod - - # NEEDS RULE - # https://github.com/ComplianceAsCode/content/issues/5516 - -From b3a579bc7aed5519923ce99252210e4d88beda91 Mon Sep 17 00:00:00 2001 -From: Alex Haydock -Date: Mon, 9 Aug 2021 11:49:56 +0100 -Subject: [PATCH 50/55] Use only 'related_rules' and not 'rules' when a control - is not automated - ---- - controls/cis_rhel8.yml | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/controls/cis_rhel8.yml b/controls/cis_rhel8.yml -index e8d3f24ccbb..a624d06cb56 100644 ---- a/controls/cis_rhel8.yml -+++ b/controls/cis_rhel8.yml -@@ -2128,7 +2128,7 @@ controls: - - l1_server - - l1_workstation - automated: no -- rules: -+ related_rules: - - file_permissions_unauthorized_suid - - - id: 6.1.14 -@@ -2137,7 +2137,7 @@ controls: - - l1_server - - l1_workstation - automated: no -- rules: -+ related_rules: - - file_permissions_unauthorized_sgid - - # NEEDS RULE -@@ -2212,7 +2212,7 @@ controls: - - l1_server - - l1_workstation - automated: no # The rule below exists, but does not have any OVAL checks or remediations. -- rules: -+ related_rules: - - file_groupownership_home_directories - - # NEEDS RULE - -From 3f6766beb261a309eacb788bdd21fa54e800b43c Mon Sep 17 00:00:00 2001 -From: Alex Haydock -Date: Tue, 10 Aug 2021 09:12:18 +0100 -Subject: [PATCH 51/55] Correct value of SSH MaxSessions based on upstream - Draft Benchmark 1.1.0 - ---- - controls/cis_rhel8.yml | 10 +++++----- - 1 file changed, 5 insertions(+), 5 deletions(-) - -diff --git a/controls/cis_rhel8.yml b/controls/cis_rhel8.yml -index a624d06cb56..bff2200ce12 100644 ---- a/controls/cis_rhel8.yml -+++ b/controls/cis_rhel8.yml -@@ -1782,11 +1782,11 @@ controls: - - var_sshd_set_maxstartups=10:30:60 - - # The title of this control does not appear to match the suggested audit and -- # remediation in the CIS Benchmark version 1.0.1 - this profile uses the -- # value from the audit and remediation sections of the benchmark rather than -- # from the title. -+ # remediation in the CIS Benchmark version 1.0.1 -+ # -+ # As noted in the ticket below, this is resolved in Draft Benchmark 1.1.0 -+ # which confirms that '4' is the intended value for this control. - # -- # An upstream ticket has been opened about this issue: - # https://workbench.cisecurity.org/community/14/tickets/13414 - - id: 5.2.19 - title: Ensure SSH MaxSessions is set to 4 or less (Automated) -@@ -1796,7 +1796,7 @@ controls: - automated: yes - rules: - - sshd_set_max_sessions -- - var_sshd_max_sessions=10 -+ - var_sshd_max_sessions=4 - - - id: 5.2.20 - title: Ensure system-wide crypto policy is not over-ridden (Automated) - -From e9ca1baec39ff010e63a99ac479e15b7fb73c352 Mon Sep 17 00:00:00 2001 -From: Alex Haydock -Date: Wed, 11 Aug 2021 10:37:23 +0100 -Subject: [PATCH 52/55] Control to disable IPv6 should not be automated - ---- - controls/cis_rhel8.yml | 4 +--- - 1 file changed, 1 insertion(+), 3 deletions(-) - -diff --git a/controls/cis_rhel8.yml b/controls/cis_rhel8.yml -index bff2200ce12..29d972427cf 100644 ---- a/controls/cis_rhel8.yml -+++ b/controls/cis_rhel8.yml -@@ -1177,9 +1177,7 @@ controls: - levels: - - l2_server - - l2_workstation -- automated: yes -- rules: -- - kernel_module_ipv6_option_disabled -+ automated: no - - - id: 4.1.1.1 - title: Ensure auditd is installed (Automated) - -From a7b6c13f927d9494f65c314ea6f3ba71b9b350cb Mon Sep 17 00:00:00 2001 -From: Alex Haydock -Date: Tue, 17 Aug 2021 13:09:48 +0100 -Subject: [PATCH 53/55] Fix rules with missing CCEs for RHEL8 - ---- - .../accounts-session/root_paths/root_path_no_dot/rule.yml | 1 + - .../uefi/file_groupowner_efi_grub2_cfg/rule.yml | 1 + - .../bootloader-grub2/uefi/file_owner_efi_grub2_cfg/rule.yml | 1 + - .../uefi/file_permissions_efi_grub2_cfg/rule.yml | 1 + - shared/references/cce-redhat-avail.txt | 4 ---- - 5 files changed, 4 insertions(+), 4 deletions(-) - -diff --git a/linux_os/guide/system/accounts/accounts-session/root_paths/root_path_no_dot/rule.yml b/linux_os/guide/system/accounts/accounts-session/root_paths/root_path_no_dot/rule.yml -index 24a0feaf0aa..748d9d9d188 100644 ---- a/linux_os/guide/system/accounts/accounts-session/root_paths/root_path_no_dot/rule.yml -+++ b/linux_os/guide/system/accounts/accounts-session/root_paths/root_path_no_dot/rule.yml -@@ -21,6 +21,7 @@ severity: unknown - - identifiers: - cce@rhel7: CCE-80199-3 -+ cce@rhel8: CCE-85914-0 - - references: - cis-csc: 11,3,9 -diff --git a/linux_os/guide/system/bootloader-grub2/uefi/file_groupowner_efi_grub2_cfg/rule.yml b/linux_os/guide/system/bootloader-grub2/uefi/file_groupowner_efi_grub2_cfg/rule.yml -index 288b6706b03..f44e85a059a 100644 ---- a/linux_os/guide/system/bootloader-grub2/uefi/file_groupowner_efi_grub2_cfg/rule.yml -+++ b/linux_os/guide/system/bootloader-grub2/uefi/file_groupowner_efi_grub2_cfg/rule.yml -@@ -25,6 +25,7 @@ severity: medium - - identifiers: - cce@rhel7: CCE-83430-9 -+ cce@rhel8: CCE-85915-7 - - references: - cis-csc: 12,13,14,15,16,18,3,5 -diff --git a/linux_os/guide/system/bootloader-grub2/uefi/file_owner_efi_grub2_cfg/rule.yml b/linux_os/guide/system/bootloader-grub2/uefi/file_owner_efi_grub2_cfg/rule.yml -index edcda693591..a9468d00ddc 100644 ---- a/linux_os/guide/system/bootloader-grub2/uefi/file_owner_efi_grub2_cfg/rule.yml -+++ b/linux_os/guide/system/bootloader-grub2/uefi/file_owner_efi_grub2_cfg/rule.yml -@@ -23,6 +23,7 @@ severity: medium - - identifiers: - cce@rhel7: CCE-83429-1 -+ cce@rhel8: CCE-85913-2 - - references: - cis-csc: 12,13,14,15,16,18,3,5 -diff --git a/linux_os/guide/system/bootloader-grub2/uefi/file_permissions_efi_grub2_cfg/rule.yml b/linux_os/guide/system/bootloader-grub2/uefi/file_permissions_efi_grub2_cfg/rule.yml -index 6e636a7caf7..bc4fdcc7e04 100644 ---- a/linux_os/guide/system/bootloader-grub2/uefi/file_permissions_efi_grub2_cfg/rule.yml -+++ b/linux_os/guide/system/bootloader-grub2/uefi/file_permissions_efi_grub2_cfg/rule.yml -@@ -21,6 +21,7 @@ severity: medium - - identifiers: - cce@rhel7: CCE-83431-7 -+ cce@rhel8: CCE-85912-4 - - references: - cis-csc: 12,13,14,15,16,18,3,5 -diff --git a/shared/references/cce-redhat-avail.txt b/shared/references/cce-redhat-avail.txt -index 3b24e19da06..179412e8961 100644 ---- a/shared/references/cce-redhat-avail.txt -+++ b/shared/references/cce-redhat-avail.txt -@@ -42,10 +42,6 @@ CCE-85907-4 - CCE-85908-2 - CCE-85909-0 - CCE-85911-6 --CCE-85912-4 --CCE-85913-2 --CCE-85914-0 --CCE-85915-7 - CCE-85916-5 - CCE-85917-3 - CCE-85918-1 - -From b2a35c50c402267c8e77db287187e594fe917e77 Mon Sep 17 00:00:00 2001 -From: Alex Haydock -Date: Tue, 17 Aug 2021 13:15:15 +0100 -Subject: [PATCH 54/55] Add missing CIS references for RHEL 8 rules - ---- - .../services/ssh/ssh_server/sshd_set_loglevel_verbose/rule.yml | 1 + - .../disabling_xwindows/xwindows_remove_packages/rule.yml | 1 + - .../root_logins/use_pam_wheel_for_su/rule.yml | 1 + - .../root_paths/accounts_root_path_dirs_no_write/rule.yml | 1 + - .../accounts-session/root_paths/root_path_no_dot/rule.yml | 1 + - .../user_umask/accounts_umask_etc_login_defs/rule.yml | 1 + - 6 files changed, 6 insertions(+) - -diff --git a/linux_os/guide/services/ssh/ssh_server/sshd_set_loglevel_verbose/rule.yml b/linux_os/guide/services/ssh/ssh_server/sshd_set_loglevel_verbose/rule.yml -index 2ffb01a3983..ee54a53dfd4 100644 ---- a/linux_os/guide/services/ssh/ssh_server/sshd_set_loglevel_verbose/rule.yml -+++ b/linux_os/guide/services/ssh/ssh_server/sshd_set_loglevel_verbose/rule.yml -@@ -27,6 +27,7 @@ identifiers: - - references: - cis@rhel7: 5.3.5 -+ cis@rhel8: 5.2.5 - disa: CCI-000067 - nerc-cip: CIP-007-3 R7.1 - nist: AC-17(a),AC-17(1),CM-6(a) -diff --git a/linux_os/guide/services/xwindows/disabling_xwindows/xwindows_remove_packages/rule.yml b/linux_os/guide/services/xwindows/disabling_xwindows/xwindows_remove_packages/rule.yml -index c548b1e3ea2..935766db26d 100644 ---- a/linux_os/guide/services/xwindows/disabling_xwindows/xwindows_remove_packages/rule.yml -+++ b/linux_os/guide/services/xwindows/disabling_xwindows/xwindows_remove_packages/rule.yml -@@ -41,6 +41,7 @@ identifiers: - - references: - cis@rhel7: 2.2.2 -+ cis@rhel8: 2.2.2 - disa: CCI-000366 - nist: CM-6(b) - srg: SRG-OS-000480-GPOS-00227 -diff --git a/linux_os/guide/system/accounts/accounts-restrictions/root_logins/use_pam_wheel_for_su/rule.yml b/linux_os/guide/system/accounts/accounts-restrictions/root_logins/use_pam_wheel_for_su/rule.yml -index 984a8cf333e..616a0aa0052 100644 ---- a/linux_os/guide/system/accounts/accounts-restrictions/root_logins/use_pam_wheel_for_su/rule.yml -+++ b/linux_os/guide/system/accounts/accounts-restrictions/root_logins/use_pam_wheel_for_su/rule.yml -@@ -24,6 +24,7 @@ identifiers: - - references: - cis@rhel7: "5.7" -+ cis@rhel8: 5.7 - cis@sle15: '5.6' - cis@ubuntu2004: '5.6' - ospp: FMT_SMF_EXT.1.1 -diff --git a/linux_os/guide/system/accounts/accounts-session/root_paths/accounts_root_path_dirs_no_write/rule.yml b/linux_os/guide/system/accounts/accounts-session/root_paths/accounts_root_path_dirs_no_write/rule.yml -index 81c30174c71..057701075e5 100644 ---- a/linux_os/guide/system/accounts/accounts-session/root_paths/accounts_root_path_dirs_no_write/rule.yml -+++ b/linux_os/guide/system/accounts/accounts-session/root_paths/accounts_root_path_dirs_no_write/rule.yml -@@ -23,6 +23,7 @@ identifiers: - references: - cis-csc: 11,3,9 - cis@rhel7: 6.2.10 -+ cis@rhel8: 6.2.3 - cis@sle15: 6.2.4 - cis@ubuntu2004: 6.2.3 - cobit5: BAI10.01,BAI10.02,BAI10.03,BAI10.05 -diff --git a/linux_os/guide/system/accounts/accounts-session/root_paths/root_path_no_dot/rule.yml b/linux_os/guide/system/accounts/accounts-session/root_paths/root_path_no_dot/rule.yml -index 748d9d9d188..c94de8fa3e6 100644 ---- a/linux_os/guide/system/accounts/accounts-session/root_paths/root_path_no_dot/rule.yml -+++ b/linux_os/guide/system/accounts/accounts-session/root_paths/root_path_no_dot/rule.yml -@@ -26,6 +26,7 @@ identifiers: - references: - cis-csc: 11,3,9 - cis@rhel7: 6.2.10 -+ cis@rhel8: 6.2.3 - cobit5: BAI10.01,BAI10.02,BAI10.03,BAI10.05 - disa: CCI-000366 - isa-62443-2009: 4.3.4.3.2,4.3.4.3.3 -diff --git a/linux_os/guide/system/accounts/accounts-session/user_umask/accounts_umask_etc_login_defs/rule.yml b/linux_os/guide/system/accounts/accounts-session/user_umask/accounts_umask_etc_login_defs/rule.yml -index 46e81737199..51f8e51fa6a 100644 ---- a/linux_os/guide/system/accounts/accounts-session/user_umask/accounts_umask_etc_login_defs/rule.yml -+++ b/linux_os/guide/system/accounts/accounts-session/user_umask/accounts_umask_etc_login_defs/rule.yml -@@ -25,6 +25,7 @@ references: - anssi: BP28(R35) - cis-csc: 11,18,3,9 - cis@rhel7: 5.5.5 -+ cis@rhel8: 5.5.5 - cis@ubuntu2004: 5.4.4 - cobit5: APO13.01,BAI03.01,BAI03.02,BAI03.03,BAI10.01,BAI10.02,BAI10.03,BAI10.05 - disa: CCI-000366 - -From 379910b8185590bed1c620dcb07cbb28ee41ecd7 Mon Sep 17 00:00:00 2001 -From: Alex Haydock -Date: Tue, 17 Aug 2021 13:25:45 +0100 -Subject: [PATCH 55/55] Quote reference to avoid it being interpreted as an - integer - ---- - .../root_logins/use_pam_wheel_for_su/rule.yml | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/linux_os/guide/system/accounts/accounts-restrictions/root_logins/use_pam_wheel_for_su/rule.yml b/linux_os/guide/system/accounts/accounts-restrictions/root_logins/use_pam_wheel_for_su/rule.yml -index 616a0aa0052..08677cbb7dc 100644 ---- a/linux_os/guide/system/accounts/accounts-restrictions/root_logins/use_pam_wheel_for_su/rule.yml -+++ b/linux_os/guide/system/accounts/accounts-restrictions/root_logins/use_pam_wheel_for_su/rule.yml -@@ -24,7 +24,7 @@ identifiers: - - references: - cis@rhel7: "5.7" -- cis@rhel8: 5.7 -+ cis@rhel8: "5.7" - cis@sle15: '5.6' - cis@ubuntu2004: '5.6' - ospp: FMT_SMF_EXT.1.1 diff --git a/SOURCES/scap-security-guide-0.1.58-split_file_ownership_var_log_audit-PR_7129.patch b/SOURCES/scap-security-guide-0.1.58-split_file_ownership_var_log_audit-PR_7129.patch deleted file mode 100644 index 3b7f835..0000000 --- a/SOURCES/scap-security-guide-0.1.58-split_file_ownership_var_log_audit-PR_7129.patch +++ /dev/null @@ -1,699 +0,0 @@ -From ad2267a48db738fe69bed6cc009d8be7bbc61c87 Mon Sep 17 00:00:00 2001 -From: Gabriel Becker -Date: Thu, 17 Jun 2021 17:46:26 +0200 -Subject: [PATCH] Add /var/log/audit individual ownership rules. - ---- - .../bash/shared.sh | 12 +++++ - .../oval/shared.xml | 44 +++++++++++++++++++ - .../rule.yml | 39 ++++++++++++++++ - .../tests/correct_value.pass.sh | 5 +++ - .../correct_value_non-root_group.pass.sh | 8 ++++ - .../tests/wrong_value.fail.sh | 6 +++ - .../bash/shared.sh | 3 ++ - .../oval/shared.xml | 24 ++++++++++ - .../rule.yml | 37 ++++++++++++++++ - .../tests/correct_value.pass.sh | 3 ++ - .../tests/wrong_value.fail.sh | 4 ++ - .../bash/shared.sh | 12 +++++ - .../oval/shared.xml | 44 +++++++++++++++++++ - .../rule.yml | 39 ++++++++++++++++ - .../tests/correct_value.pass.sh | 5 +++ - .../correct_value_non-root_group.pass.sh | 8 ++++ - .../tests/wrong_value.fail.sh | 7 +++ - .../bash/shared.sh | 3 ++ - .../oval/shared.xml | 24 ++++++++++ - .../rule.yml | 36 +++++++++++++++ - .../tests/correct_value.pass.sh | 3 ++ - .../tests/wrong_value.fail.sh | 5 +++ - products/rhel8/profiles/stig.profile | 15 +++++-- - .../oval/auditd_conf_log_group_not_root.xml | 20 ++++++++- - shared/references/cce-redhat-avail.txt | 4 -- - .../data/profile_stability/rhel8/stig.profile | 5 ++- - .../profile_stability/rhel8/stig_gui.profile | 5 ++- - 27 files changed, 409 insertions(+), 11 deletions(-) - create mode 100644 linux_os/guide/system/auditing/auditd_configure_rules/directory_group_ownership_var_log_audit/bash/shared.sh - create mode 100644 linux_os/guide/system/auditing/auditd_configure_rules/directory_group_ownership_var_log_audit/oval/shared.xml - create mode 100644 linux_os/guide/system/auditing/auditd_configure_rules/directory_group_ownership_var_log_audit/rule.yml - create mode 100644 linux_os/guide/system/auditing/auditd_configure_rules/directory_group_ownership_var_log_audit/tests/correct_value.pass.sh - create mode 100644 linux_os/guide/system/auditing/auditd_configure_rules/directory_group_ownership_var_log_audit/tests/correct_value_non-root_group.pass.sh - create mode 100644 linux_os/guide/system/auditing/auditd_configure_rules/directory_group_ownership_var_log_audit/tests/wrong_value.fail.sh - create mode 100644 linux_os/guide/system/auditing/auditd_configure_rules/directory_ownership_var_log_audit/bash/shared.sh - create mode 100644 linux_os/guide/system/auditing/auditd_configure_rules/directory_ownership_var_log_audit/oval/shared.xml - create mode 100644 linux_os/guide/system/auditing/auditd_configure_rules/directory_ownership_var_log_audit/rule.yml - create mode 100644 linux_os/guide/system/auditing/auditd_configure_rules/directory_ownership_var_log_audit/tests/correct_value.pass.sh - create mode 100644 linux_os/guide/system/auditing/auditd_configure_rules/directory_ownership_var_log_audit/tests/wrong_value.fail.sh - create mode 100644 linux_os/guide/system/auditing/auditd_configure_rules/file_group_ownership_var_log_audit/bash/shared.sh - create mode 100644 linux_os/guide/system/auditing/auditd_configure_rules/file_group_ownership_var_log_audit/oval/shared.xml - create mode 100644 linux_os/guide/system/auditing/auditd_configure_rules/file_group_ownership_var_log_audit/rule.yml - create mode 100644 linux_os/guide/system/auditing/auditd_configure_rules/file_group_ownership_var_log_audit/tests/correct_value.pass.sh - create mode 100644 linux_os/guide/system/auditing/auditd_configure_rules/file_group_ownership_var_log_audit/tests/correct_value_non-root_group.pass.sh - create mode 100644 linux_os/guide/system/auditing/auditd_configure_rules/file_group_ownership_var_log_audit/tests/wrong_value.fail.sh - create mode 100644 linux_os/guide/system/auditing/auditd_configure_rules/file_ownership_var_log_audit_stig/bash/shared.sh - create mode 100644 linux_os/guide/system/auditing/auditd_configure_rules/file_ownership_var_log_audit_stig/oval/shared.xml - create mode 100644 linux_os/guide/system/auditing/auditd_configure_rules/file_ownership_var_log_audit_stig/rule.yml - create mode 100644 linux_os/guide/system/auditing/auditd_configure_rules/file_ownership_var_log_audit_stig/tests/correct_value.pass.sh - create mode 100644 linux_os/guide/system/auditing/auditd_configure_rules/file_ownership_var_log_audit_stig/tests/wrong_value.fail.sh - -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/directory_group_ownership_var_log_audit/bash/shared.sh b/linux_os/guide/system/auditing/auditd_configure_rules/directory_group_ownership_var_log_audit/bash/shared.sh -new file mode 100644 -index 00000000000..685aa0cf3f2 ---- /dev/null -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/directory_group_ownership_var_log_audit/bash/shared.sh -@@ -0,0 +1,12 @@ -+# platform = multi_platform_all -+ -+if LC_ALL=C grep -m 1 -q ^log_group /etc/audit/auditd.conf; then -+ GROUP=$(awk -F "=" '/log_group/ {print $2}' /etc/audit/auditd.conf | tr -d ' ') -+ if ! [ "${GROUP}" == 'root' ] ; then -+ chgrp ${GROUP} /var/log/audit -+ else -+ chgrp root /var/log/audit -+ fi -+else -+ chgrp root /var/log/audit -+fi -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/directory_group_ownership_var_log_audit/oval/shared.xml b/linux_os/guide/system/auditing/auditd_configure_rules/directory_group_ownership_var_log_audit/oval/shared.xml -new file mode 100644 -index 00000000000..4d6eee02a30 ---- /dev/null -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/directory_group_ownership_var_log_audit/oval/shared.xml -@@ -0,0 +1,44 @@ -+ -+ -+ {{{ oval_metadata("Checks that all /var/log/audit directories are group owned by the root user.") }}} -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ /var/log/audit -+ -+ state_group_owner_not_root_var_log_audit_directories -+ -+ -+ -+ 0 -+ -+ -+ -+ -+ -+ -+ -+ -+ /var/log/audit -+ -+ state_group_owner_not_root_var_log_audit_directories-non_root -+ -+ -+ -+ 0 -+ -+ -+ -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/directory_group_ownership_var_log_audit/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/directory_group_ownership_var_log_audit/rule.yml -new file mode 100644 -index 00000000000..3915300c106 ---- /dev/null -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/directory_group_ownership_var_log_audit/rule.yml -@@ -0,0 +1,39 @@ -+documentation_complete: true -+ -+prodtype: rhel8 -+ -+title: 'System Audit Directories Must Be Group Owned By Root' -+ -+description: |- -+ All audit directories must be group owned by root user. By default, the path for audit log is
      /var/log/audit/
      . -+ {{{ describe_file_group_owner(file="/var/log/audit", group="root") }}} -+ If log_group in /etc/audit/auditd.conf is set to a group other than the root -+ group account, change the group ownership of the audit directories to this specific group. -+ -+rationale: |- -+ Unauthorized disclosure of audit records can reveal system and configuration data to -+ attackers, thus compromising its confidentiality. -+ -+severity: medium -+ -+identifiers: -+ cce@rhel8: CCE-88225-8 -+ -+references: -+ cis-csc: 1,11,12,13,14,15,16,18,19,3,4,5,6,7,8 -+ cjis: 5.4.1.1 -+ cobit5: APO01.06,APO11.04,APO12.06,BAI03.05,BAI08.02,DSS02.02,DSS02.04,DSS02.07,DSS03.01,DSS05.04,DSS05.07,DSS06.02,MEA02.01 -+ cui: 3.3.1 -+ disa: CCI-000162,CCI-000163,CCI-000164,CCI-001314 -+ isa-62443-2009: 4.2.3.10,4.3.3.3.9,4.3.3.5.8,4.3.3.7.3,4.3.4.4.7,4.3.4.5.6,4.3.4.5.7,4.3.4.5.8,4.4.2.1,4.4.2.2,4.4.2.4 -+ isa-62443-2013: 'SR 2.1,SR 2.10,SR 2.11,SR 2.12,SR 2.8,SR 2.9,SR 5.2,SR 6.1' -+ iso27001-2013: A.10.1.1,A.11.1.4,A.11.1.5,A.11.2.1,A.12.4.1,A.12.4.2,A.12.4.3,A.12.4.4,A.12.7.1,A.13.1.1,A.13.1.3,A.13.2.1,A.13.2.3,A.13.2.4,A.14.1.2,A.14.1.3,A.16.1.4,A.16.1.5,A.16.1.7,A.6.1.2,A.7.1.1,A.7.1.2,A.7.3.1,A.8.2.2,A.8.2.3,A.9.1.1,A.9.1.2,A.9.2.3,A.9.4.1,A.9.4.4,A.9.4.5 -+ nist: CM-6(a),AC-6(1),AU-9(4) -+ nist-csf: DE.AE-3,DE.AE-5,PR.AC-4,PR.DS-5,PR.PT-1,RS.AN-1,RS.AN-4 -+ pcidss: Req-10.5.1 -+ srg: SRG-OS-000057-GPOS-00027,SRG-OS-000058-GPOS-00028,SRG-OS-000059-GPOS-00029,SRG-OS-000206-GPOS-00084 -+ stigid@rhel8: RHEL-08-030110 -+ -+ocil: |- -+ {{{ describe_file_group_owner(file="/var/log/audit", group="root") }}} -+ -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/directory_group_ownership_var_log_audit/tests/correct_value.pass.sh b/linux_os/guide/system/auditing/auditd_configure_rules/directory_group_ownership_var_log_audit/tests/correct_value.pass.sh -new file mode 100644 -index 00000000000..4e68a450c3d ---- /dev/null -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/directory_group_ownership_var_log_audit/tests/correct_value.pass.sh -@@ -0,0 +1,5 @@ -+#!/bin/bash -+ -+sed -i "/\s*log_group.*/d" /etc/audit/auditd.conf -+echo "log_group = root" >> /etc/audit/auditd.conf -+chgrp root /var/log/audit -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/directory_group_ownership_var_log_audit/tests/correct_value_non-root_group.pass.sh b/linux_os/guide/system/auditing/auditd_configure_rules/directory_group_ownership_var_log_audit/tests/correct_value_non-root_group.pass.sh -new file mode 100644 -index 00000000000..89995b11954 ---- /dev/null -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/directory_group_ownership_var_log_audit/tests/correct_value_non-root_group.pass.sh -@@ -0,0 +1,8 @@ -+#!/bin/bash -+ -+groupadd group_test -+ -+sed -i "/\s*log_group.*/d" /etc/audit/auditd.conf -+echo "log_group = group_test" >> /etc/audit/auditd.conf -+ -+chgrp group_test /var/log/audit -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/directory_group_ownership_var_log_audit/tests/wrong_value.fail.sh b/linux_os/guide/system/auditing/auditd_configure_rules/directory_group_ownership_var_log_audit/tests/wrong_value.fail.sh -new file mode 100644 -index 00000000000..13d22ca8361 ---- /dev/null -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/directory_group_ownership_var_log_audit/tests/wrong_value.fail.sh -@@ -0,0 +1,6 @@ -+#!/bin/bash -+ -+sed -i "/\s*log_group.*/d" /etc/audit/auditd.conf -+echo "log_group = root" >> /etc/audit/auditd.conf -+groupadd group_test -+chgrp group_test /var/log/audit -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/directory_ownership_var_log_audit/bash/shared.sh b/linux_os/guide/system/auditing/auditd_configure_rules/directory_ownership_var_log_audit/bash/shared.sh -new file mode 100644 -index 00000000000..de63152c410 ---- /dev/null -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/directory_ownership_var_log_audit/bash/shared.sh -@@ -0,0 +1,3 @@ -+# platform = multi_platform_all -+ -+chown root /var/log/audit -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/directory_ownership_var_log_audit/oval/shared.xml b/linux_os/guide/system/auditing/auditd_configure_rules/directory_ownership_var_log_audit/oval/shared.xml -new file mode 100644 -index 00000000000..fad17abe39a ---- /dev/null -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/directory_ownership_var_log_audit/oval/shared.xml -@@ -0,0 +1,24 @@ -+ -+ -+ {{{ oval_metadata("Checks that all /var/log/audit directories are owned by the root user.") }}} -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ /var/log/audit -+ -+ state_owner_not_root_var_log_audit_directories -+ -+ -+ -+ 0 -+ -+ -+ -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/directory_ownership_var_log_audit/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/directory_ownership_var_log_audit/rule.yml -new file mode 100644 -index 00000000000..cd6c45e249b ---- /dev/null -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/directory_ownership_var_log_audit/rule.yml -@@ -0,0 +1,37 @@ -+documentation_complete: true -+ -+prodtype: rhel8 -+ -+title: 'System Audit Directories Must Be Owned By Root' -+ -+description: |- -+ All audit directories must be owned by root user. By default, the path for audit log is
      /var/log/audit/
      . -+ {{{ describe_file_owner(file="/var/log/audit", owner="root") }}} -+ -+rationale: |- -+ Unauthorized disclosure of audit records can reveal system and configuration data to -+ attackers, thus compromising its confidentiality. -+ -+severity: medium -+ -+identifiers: -+ cce@rhel8: CCE-88226-6 -+ -+references: -+ cis-csc: 1,11,12,13,14,15,16,18,19,3,4,5,6,7,8 -+ cjis: 5.4.1.1 -+ cobit5: APO01.06,APO11.04,APO12.06,BAI03.05,BAI08.02,DSS02.02,DSS02.04,DSS02.07,DSS03.01,DSS05.04,DSS05.07,DSS06.02,MEA02.01 -+ cui: 3.3.1 -+ disa: CCI-000162,CCI-000163,CCI-000164,CCI-001314 -+ isa-62443-2009: 4.2.3.10,4.3.3.3.9,4.3.3.5.8,4.3.3.7.3,4.3.4.4.7,4.3.4.5.6,4.3.4.5.7,4.3.4.5.8,4.4.2.1,4.4.2.2,4.4.2.4 -+ isa-62443-2013: 'SR 2.1,SR 2.10,SR 2.11,SR 2.12,SR 2.8,SR 2.9,SR 5.2,SR 6.1' -+ iso27001-2013: A.10.1.1,A.11.1.4,A.11.1.5,A.11.2.1,A.12.4.1,A.12.4.2,A.12.4.3,A.12.4.4,A.12.7.1,A.13.1.1,A.13.1.3,A.13.2.1,A.13.2.3,A.13.2.4,A.14.1.2,A.14.1.3,A.16.1.4,A.16.1.5,A.16.1.7,A.6.1.2,A.7.1.1,A.7.1.2,A.7.3.1,A.8.2.2,A.8.2.3,A.9.1.1,A.9.1.2,A.9.2.3,A.9.4.1,A.9.4.4,A.9.4.5 -+ nist: CM-6(a),AC-6(1),AU-9(4) -+ nist-csf: DE.AE-3,DE.AE-5,PR.AC-4,PR.DS-5,PR.PT-1,RS.AN-1,RS.AN-4 -+ pcidss: Req-10.5.1 -+ srg: SRG-OS-000057-GPOS-00027,SRG-OS-000058-GPOS-00028,SRG-OS-000059-GPOS-00029,SRG-OS-000206-GPOS-00084 -+ stigid@rhel8: RHEL-08-030100 -+ -+ocil: |- -+ {{{ describe_file_owner(file="/var/log/audit", owner="root") }}} -+ -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/directory_ownership_var_log_audit/tests/correct_value.pass.sh b/linux_os/guide/system/auditing/auditd_configure_rules/directory_ownership_var_log_audit/tests/correct_value.pass.sh -new file mode 100644 -index 00000000000..fa70fdc9494 ---- /dev/null -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/directory_ownership_var_log_audit/tests/correct_value.pass.sh -@@ -0,0 +1,3 @@ -+#!/bin/bash -+ -+chown root /var/log/audit -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/directory_ownership_var_log_audit/tests/wrong_value.fail.sh b/linux_os/guide/system/auditing/auditd_configure_rules/directory_ownership_var_log_audit/tests/wrong_value.fail.sh -new file mode 100644 -index 00000000000..f65a1e67241 ---- /dev/null -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/directory_ownership_var_log_audit/tests/wrong_value.fail.sh -@@ -0,0 +1,4 @@ -+#!/bin/bash -+ -+useradd testuser_123 -+chown testuser_123 /var/log/audit -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/file_group_ownership_var_log_audit/bash/shared.sh b/linux_os/guide/system/auditing/auditd_configure_rules/file_group_ownership_var_log_audit/bash/shared.sh -new file mode 100644 -index 00000000000..3f53de5ba26 ---- /dev/null -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/file_group_ownership_var_log_audit/bash/shared.sh -@@ -0,0 +1,12 @@ -+# platform = multi_platform_all -+ -+if LC_ALL=C grep -m 1 -q ^log_group /etc/audit/auditd.conf; then -+ GROUP=$(awk -F "=" '/log_group/ {print $2}' /etc/audit/auditd.conf | tr -d ' ') -+ if ! [ "${GROUP}" == 'root' ] ; then -+ chgrp ${GROUP} /var/log/audit/audit.log* -+ else -+ chgrp root /var/log/audit/audit.log* -+ fi -+else -+ chgrp root /var/log/audit/audit.log* -+fi -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/file_group_ownership_var_log_audit/oval/shared.xml b/linux_os/guide/system/auditing/auditd_configure_rules/file_group_ownership_var_log_audit/oval/shared.xml -new file mode 100644 -index 00000000000..af5414a6c9c ---- /dev/null -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/file_group_ownership_var_log_audit/oval/shared.xml -@@ -0,0 +1,44 @@ -+ -+ -+ {{{ oval_metadata("Checks that all /var/log/audit files are group owned by the root user.") }}} -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ /var/log/audit -+ ^.*$ -+ state_group_owner_not_root_var_log_audit -+ -+ -+ -+ 0 -+ -+ -+ -+ -+ -+ -+ -+ -+ /var/log/audit -+ ^.*$ -+ state_group_owner_not_root_var_log_audit-non_root -+ -+ -+ -+ 0 -+ -+ -+ -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/file_group_ownership_var_log_audit/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/file_group_ownership_var_log_audit/rule.yml -new file mode 100644 -index 00000000000..767c8c89bf7 ---- /dev/null -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/file_group_ownership_var_log_audit/rule.yml -@@ -0,0 +1,39 @@ -+documentation_complete: true -+ -+prodtype: rhel8 -+ -+title: 'System Audit Logs Must Be Group Owned By Root' -+ -+description: |- -+ All audit logs must be group owned by root user. By default, the path for audit log is
      /var/log/audit/
      . -+ {{{ describe_file_group_owner(file="/var/log/audit/*", group="root") }}} -+ If log_group in /etc/audit/auditd.conf is set to a group other than the root -+ group account, change the group ownership of the audit logs to this specific group. -+ -+rationale: |- -+ Unauthorized disclosure of audit records can reveal system and configuration data to -+ attackers, thus compromising its confidentiality. -+ -+severity: medium -+ -+identifiers: -+ cce@rhel8: CCE-88227-4 -+ -+references: -+ cis-csc: 1,11,12,13,14,15,16,18,19,3,4,5,6,7,8 -+ cjis: 5.4.1.1 -+ cobit5: APO01.06,APO11.04,APO12.06,BAI03.05,BAI08.02,DSS02.02,DSS02.04,DSS02.07,DSS03.01,DSS05.04,DSS05.07,DSS06.02,MEA02.01 -+ cui: 3.3.1 -+ disa: CCI-000162,CCI-000163,CCI-000164,CCI-001314 -+ isa-62443-2009: 4.2.3.10,4.3.3.3.9,4.3.3.5.8,4.3.3.7.3,4.3.4.4.7,4.3.4.5.6,4.3.4.5.7,4.3.4.5.8,4.4.2.1,4.4.2.2,4.4.2.4 -+ isa-62443-2013: 'SR 2.1,SR 2.10,SR 2.11,SR 2.12,SR 2.8,SR 2.9,SR 5.2,SR 6.1' -+ iso27001-2013: A.10.1.1,A.11.1.4,A.11.1.5,A.11.2.1,A.12.4.1,A.12.4.2,A.12.4.3,A.12.4.4,A.12.7.1,A.13.1.1,A.13.1.3,A.13.2.1,A.13.2.3,A.13.2.4,A.14.1.2,A.14.1.3,A.16.1.4,A.16.1.5,A.16.1.7,A.6.1.2,A.7.1.1,A.7.1.2,A.7.3.1,A.8.2.2,A.8.2.3,A.9.1.1,A.9.1.2,A.9.2.3,A.9.4.1,A.9.4.4,A.9.4.5 -+ nist: CM-6(a),AC-6(1),AU-9(4) -+ nist-csf: DE.AE-3,DE.AE-5,PR.AC-4,PR.DS-5,PR.PT-1,RS.AN-1,RS.AN-4 -+ pcidss: Req-10.5.1 -+ srg: SRG-OS-000057-GPOS-00027,SRG-OS-000058-GPOS-00028,SRG-OS-000059-GPOS-00029,SRG-OS-000206-GPOS-00084 -+ stigid@rhel8: RHEL-08-030090 -+ -+ocil: |- -+ {{{ describe_file_group_owner(file="/var/log/audit/*", group="root") }}} -+ -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/file_group_ownership_var_log_audit/tests/correct_value.pass.sh b/linux_os/guide/system/auditing/auditd_configure_rules/file_group_ownership_var_log_audit/tests/correct_value.pass.sh -new file mode 100644 -index 00000000000..e4e69bff538 ---- /dev/null -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/file_group_ownership_var_log_audit/tests/correct_value.pass.sh -@@ -0,0 +1,5 @@ -+#!/bin/bash -+ -+sed -i "/\s*log_group.*/d" /etc/audit/auditd.conf -+echo "log_group = root" >> /etc/audit/auditd.conf -+chgrp root /var/log/audit/audit.log* -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/file_group_ownership_var_log_audit/tests/correct_value_non-root_group.pass.sh b/linux_os/guide/system/auditing/auditd_configure_rules/file_group_ownership_var_log_audit/tests/correct_value_non-root_group.pass.sh -new file mode 100644 -index 00000000000..89995b11954 ---- /dev/null -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/file_group_ownership_var_log_audit/tests/correct_value_non-root_group.pass.sh -@@ -0,0 +1,8 @@ -+#!/bin/bash -+ -+groupadd group_test -+ -+sed -i "/\s*log_group.*/d" /etc/audit/auditd.conf -+echo "log_group = group_test" >> /etc/audit/auditd.conf -+ -+chgrp group_test /var/log/audit -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/file_group_ownership_var_log_audit/tests/wrong_value.fail.sh b/linux_os/guide/system/auditing/auditd_configure_rules/file_group_ownership_var_log_audit/tests/wrong_value.fail.sh -new file mode 100644 -index 00000000000..37c0f070ae1 ---- /dev/null -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/file_group_ownership_var_log_audit/tests/wrong_value.fail.sh -@@ -0,0 +1,7 @@ -+#!/bin/bash -+ -+sed -i "/\s*log_group.*/d" /etc/audit/auditd.conf -+echo "log_group = root" >> /etc/audit/auditd.conf -+touch /var/log/audit/audit.log.1 -+groupadd group_test -+chgrp group_test /var/log/audit/audit.log.1 -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/file_ownership_var_log_audit_stig/bash/shared.sh b/linux_os/guide/system/auditing/auditd_configure_rules/file_ownership_var_log_audit_stig/bash/shared.sh -new file mode 100644 -index 00000000000..ee2364a4a69 ---- /dev/null -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/file_ownership_var_log_audit_stig/bash/shared.sh -@@ -0,0 +1,3 @@ -+# platform = multi_platform_all -+ -+chown root /var/log/audit/audit.log* -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/file_ownership_var_log_audit_stig/oval/shared.xml b/linux_os/guide/system/auditing/auditd_configure_rules/file_ownership_var_log_audit_stig/oval/shared.xml -new file mode 100644 -index 00000000000..c20353b5926 ---- /dev/null -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/file_ownership_var_log_audit_stig/oval/shared.xml -@@ -0,0 +1,24 @@ -+ -+ -+ {{{ oval_metadata("Checks that all /var/log/audit files are owned by the root user.") }}} -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ /var/log/audit -+ ^.*$ -+ state_group_user_owner_not_root_var_log_audit -+ -+ -+ -+ 0 -+ -+ -+ -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/file_ownership_var_log_audit_stig/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/file_ownership_var_log_audit_stig/rule.yml -new file mode 100644 -index 00000000000..7f895759486 ---- /dev/null -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/file_ownership_var_log_audit_stig/rule.yml -@@ -0,0 +1,36 @@ -+documentation_complete: true -+ -+prodtype: rhel8 -+ -+title: 'System Audit Logs Must Be Owned By Root' -+ -+description: |- -+ All audit logs must be owned by root user. By default, the path for audit log is
      /var/log/audit/
      . -+ {{{ describe_file_owner(file="/var/log/audit/*", owner="root") }}} -+ -+rationale: |- -+ Unauthorized disclosure of audit records can reveal system and configuration data to -+ attackers, thus compromising its confidentiality. -+ -+severity: medium -+ -+identifiers: -+ cce@rhel8: CCE-88228-2 -+ -+references: -+ cis-csc: 1,11,12,13,14,15,16,18,19,3,4,5,6,7,8 -+ cjis: 5.4.1.1 -+ cobit5: APO01.06,APO11.04,APO12.06,BAI03.05,BAI08.02,DSS02.02,DSS02.04,DSS02.07,DSS03.01,DSS05.04,DSS05.07,DSS06.02,MEA02.01 -+ cui: 3.3.1 -+ disa: CCI-000162,CCI-000163,CCI-000164,CCI-001314 -+ isa-62443-2009: 4.2.3.10,4.3.3.3.9,4.3.3.5.8,4.3.3.7.3,4.3.4.4.7,4.3.4.5.6,4.3.4.5.7,4.3.4.5.8,4.4.2.1,4.4.2.2,4.4.2.4 -+ isa-62443-2013: 'SR 2.1,SR 2.10,SR 2.11,SR 2.12,SR 2.8,SR 2.9,SR 5.2,SR 6.1' -+ iso27001-2013: A.10.1.1,A.11.1.4,A.11.1.5,A.11.2.1,A.12.4.1,A.12.4.2,A.12.4.3,A.12.4.4,A.12.7.1,A.13.1.1,A.13.1.3,A.13.2.1,A.13.2.3,A.13.2.4,A.14.1.2,A.14.1.3,A.16.1.4,A.16.1.5,A.16.1.7,A.6.1.2,A.7.1.1,A.7.1.2,A.7.3.1,A.8.2.2,A.8.2.3,A.9.1.1,A.9.1.2,A.9.2.3,A.9.4.1,A.9.4.4,A.9.4.5 -+ nist: CM-6(a),AC-6(1),AU-9(4) -+ nist-csf: DE.AE-3,DE.AE-5,PR.AC-4,PR.DS-5,PR.PT-1,RS.AN-1,RS.AN-4 -+ pcidss: Req-10.5.1 -+ srg: SRG-OS-000057-GPOS-00027,SRG-OS-000058-GPOS-00028,SRG-OS-000059-GPOS-00029,SRG-OS-000206-GPOS-00084 -+ stigid@rhel8: RHEL-08-030080 -+ -+ocil: |- -+ {{{ describe_file_owner(file="/var/log/audit/*", owner="root") }}} -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/file_ownership_var_log_audit_stig/tests/correct_value.pass.sh b/linux_os/guide/system/auditing/auditd_configure_rules/file_ownership_var_log_audit_stig/tests/correct_value.pass.sh -new file mode 100644 -index 00000000000..eed3164eb31 ---- /dev/null -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/file_ownership_var_log_audit_stig/tests/correct_value.pass.sh -@@ -0,0 +1,3 @@ -+#!/bin/bash -+ -+chown root /var/log/audit/audit.log* -diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/file_ownership_var_log_audit_stig/tests/wrong_value.fail.sh b/linux_os/guide/system/auditing/auditd_configure_rules/file_ownership_var_log_audit_stig/tests/wrong_value.fail.sh -new file mode 100644 -index 00000000000..32a678562cf ---- /dev/null -+++ b/linux_os/guide/system/auditing/auditd_configure_rules/file_ownership_var_log_audit_stig/tests/wrong_value.fail.sh -@@ -0,0 +1,5 @@ -+#!/bin/bash -+ -+touch /var/log/audit/audit.log.1 -+useradd testuser_123 -+chown testuser_123 /var/log/audit/audit.log.1 -diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index 7270a8f91f2..7d2d386604e 100644 ---- a/products/rhel8/profiles/stig.profile -+++ b/products/rhel8/profiles/stig.profile -@@ -625,10 +625,17 @@ selections: - # RHEL-08-030070 - - file_permissions_var_log_audit - -- # RHEL-08-030080, RHEL-08-030090, RHEL-08-030100, RHEL-08-030110 -- ### NOTE: These might get broken up, but currently the following -- ### rule accounts for these STIG ID's -- - file_ownership_var_log_audit -+ # RHEL-08-030080 -+ - file_ownership_var_log_audit_stig -+ -+ # RHEL-08-030090 -+ - file_group_ownership_var_log_audit -+ -+ # RHEL-08-030100 -+ - directory_ownership_var_log_audit -+ -+ # RHEL-08-030110 -+ - directory_group_ownership_var_log_audit - - # RHEL-08-030120 - - directory_permissions_var_log_audit -diff --git a/shared/checks/oval/auditd_conf_log_group_not_root.xml b/shared/checks/oval/auditd_conf_log_group_not_root.xml -index 93e47d119ef..2871052796e 100644 ---- a/shared/checks/oval/auditd_conf_log_group_not_root.xml -+++ b/shared/checks/oval/auditd_conf_log_group_not_root.xml -@@ -8,9 +8,11 @@ - Verify 'log_group' is not set to 'root' in - /etc/audit/auditd.conf. - -- -+ - -+ - -
      - -@@ -26,4 +28,20 @@ - 1 - - -+ -+ -+ -+ -+ -+ -+ /etc/audit/auditd.conf -+ ^[ ]*log_group[ ]+=.*$ -+ 1 -+ -+ -
      -diff --git a/shared/references/cce-redhat-avail.txt b/shared/references/cce-redhat-avail.txt -index 665f903ead4..b77e9abeb0b 100644 ---- a/shared/references/cce-redhat-avail.txt -+++ b/shared/references/cce-redhat-avail.txt -@@ -2355,10 +2355,6 @@ CCE-88221-7 - CCE-88222-5 - CCE-88223-3 - CCE-88224-1 --CCE-88225-8 --CCE-88226-6 --CCE-88227-4 --CCE-88228-2 - CCE-88229-0 - CCE-88230-8 - CCE-88231-6 -diff --git a/tests/data/profile_stability/rhel8/stig.profile b/tests/data/profile_stability/rhel8/stig.profile -index 7d59cfff625..6c97a5a8ca3 100644 ---- a/tests/data/profile_stability/rhel8/stig.profile -+++ b/tests/data/profile_stability/rhel8/stig.profile -@@ -103,6 +103,8 @@ selections: - - dir_group_ownership_library_dirs - - dir_perms_world_writable_root_owned - - dir_perms_world_writable_sticky_bits -+- directory_group_ownership_var_log_audit -+- directory_ownership_var_log_audit - - directory_permissions_var_log_audit - - disable_ctrlaltdel_burstaction - - disable_ctrlaltdel_reboot -@@ -113,6 +115,7 @@ selections: - - encrypt_partitions - - ensure_gpgcheck_globally_activated - - ensure_gpgcheck_local_packages -+- file_group_ownership_var_log_audit - - file_groupowner_var_log - - file_groupowner_var_log_messages - - file_groupownership_home_directories -@@ -121,7 +124,7 @@ selections: - - file_owner_var_log_messages - - file_ownership_binary_dirs - - file_ownership_library_dirs --- file_ownership_var_log_audit -+- file_ownership_var_log_audit_stig - - file_permission_user_init_files - - file_permissions_binary_dirs - - file_permissions_etc_audit_auditd -diff --git a/tests/data/profile_stability/rhel8/stig_gui.profile b/tests/data/profile_stability/rhel8/stig_gui.profile -index 2c2daad6f6d..d026a40a02b 100644 ---- a/tests/data/profile_stability/rhel8/stig_gui.profile -+++ b/tests/data/profile_stability/rhel8/stig_gui.profile -@@ -114,6 +114,8 @@ selections: - - dir_group_ownership_library_dirs - - dir_perms_world_writable_root_owned - - dir_perms_world_writable_sticky_bits -+- directory_group_ownership_var_log_audit -+- directory_ownership_var_log_audit - - directory_permissions_var_log_audit - - disable_ctrlaltdel_burstaction - - disable_ctrlaltdel_reboot -@@ -124,6 +126,7 @@ selections: - - encrypt_partitions - - ensure_gpgcheck_globally_activated - - ensure_gpgcheck_local_packages -+- file_group_ownership_var_log_audit - - file_groupowner_var_log - - file_groupowner_var_log_messages - - file_groupownership_home_directories -@@ -132,7 +135,7 @@ selections: - - file_owner_var_log_messages - - file_ownership_binary_dirs - - file_ownership_library_dirs --- file_ownership_var_log_audit -+- file_ownership_var_log_audit_stig - - file_permission_user_init_files - - file_permissions_binary_dirs - - file_permissions_etc_audit_auditd diff --git a/SOURCES/scap-security-guide-0.1.58-sshd_directory_config-PR_6926.patch b/SOURCES/scap-security-guide-0.1.58-sshd_directory_config-PR_6926.patch deleted file mode 100644 index a131424..0000000 --- a/SOURCES/scap-security-guide-0.1.58-sshd_directory_config-PR_6926.patch +++ /dev/null @@ -1,664 +0,0 @@ -From b951a896d3ef1e678e5d6b580521053e7a076ab0 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Mat=C4=9Bj=20T=C3=BD=C4=8D?= -Date: Thu, 29 Apr 2021 16:54:03 +0200 -Subject: [PATCH 1/6] Updated checks and remediations of the sshd template. - -Configuration of sshd moves from one config file to a config directory. -Therefore, checks should consider all those files, and the remediation should aim -to deliver fixes to one of those files in the config directory. - -Tests that interact with this behavior have been added and are applicable for Fedora and RHEL9 products. ---- - .../tests/commented.fail.sh | 7 ++ - .../tests/conflict.fail.sh | 15 ++++ - .../tests/correct_value_directory.pass.sh | 14 ++++ - shared/macros-bash.jinja | 9 +++ - shared/macros-oval.jinja | 61 +++++++++++------ - .../templates/sshd_lineinfile/bash.template | 22 ++++++ - .../templates/sshd_lineinfile/oval.template | 68 +++++++++++++++++-- - 7 files changed, 168 insertions(+), 28 deletions(-) - create mode 100644 linux_os/guide/services/ssh/ssh_server/sshd_disable_pubkey_auth/tests/commented.fail.sh - create mode 100644 linux_os/guide/services/ssh/ssh_server/sshd_disable_pubkey_auth/tests/conflict.fail.sh - create mode 100644 linux_os/guide/services/ssh/ssh_server/sshd_disable_pubkey_auth/tests/correct_value_directory.pass.sh - -diff --git a/linux_os/guide/services/ssh/ssh_server/sshd_disable_pubkey_auth/tests/commented.fail.sh b/linux_os/guide/services/ssh/ssh_server/sshd_disable_pubkey_auth/tests/commented.fail.sh -new file mode 100644 -index 00000000000..484c2165532 ---- /dev/null -+++ b/linux_os/guide/services/ssh/ssh_server/sshd_disable_pubkey_auth/tests/commented.fail.sh -@@ -0,0 +1,7 @@ -+#!/bin/bash -+ -+if grep -q "^PubkeyAuthentication" /etc/ssh/sshd_config; then -+ sed -i "s/^PubkeyAuthentication.*/# PubkeyAuthentication no/" /etc/ssh/sshd_config -+else -+ echo "# PubkeyAuthentication no" >> /etc/ssh/sshd_config -+fi -diff --git a/linux_os/guide/services/ssh/ssh_server/sshd_disable_pubkey_auth/tests/conflict.fail.sh b/linux_os/guide/services/ssh/ssh_server/sshd_disable_pubkey_auth/tests/conflict.fail.sh -new file mode 100644 -index 00000000000..177a99e0b82 ---- /dev/null -+++ b/linux_os/guide/services/ssh/ssh_server/sshd_disable_pubkey_auth/tests/conflict.fail.sh -@@ -0,0 +1,15 @@ -+#!/bin/bash -+ -+# platform = Fedora,Red Hat Enterprise Linux 9 -+ -+mkdir -p /etc/ssh/sshd_config.d -+touch /etc/ssh/sshd_config.d/nothing -+ -+if grep -q "^PubkeyAuthentication" /etc/ssh/sshd_config /etc/ssh/sshd_config.d/* ; then -+ sed -i "s/^PubkeyAuthentication.*/# PubkeyAuthentication no/" /etc/ssh/sshd_config /etc/ssh/sshd_config.d/* -+else -+ echo "# PubkeyAuthentication no" >> /etc/ssh/sshd_config -+fi -+ -+echo "PubkeyAuthentication no" > /etc/ssh/sshd_config.d/good_config -+echo "PubkeyAuthentication yes" > /etc/ssh/sshd_config.d/rogue_config -diff --git a/linux_os/guide/services/ssh/ssh_server/sshd_disable_pubkey_auth/tests/correct_value_directory.pass.sh b/linux_os/guide/services/ssh/ssh_server/sshd_disable_pubkey_auth/tests/correct_value_directory.pass.sh -new file mode 100644 -index 00000000000..0aa2e775dbe ---- /dev/null -+++ b/linux_os/guide/services/ssh/ssh_server/sshd_disable_pubkey_auth/tests/correct_value_directory.pass.sh -@@ -0,0 +1,14 @@ -+#!/bin/bash -+ -+# platform = Fedora,Red Hat Enterprise Linux 9 -+ -+mkdir -p /etc/ssh/sshd_config.d -+touch /etc/ssh/sshd_config.d/nothing -+ -+if grep -q "^PubkeyAuthentication" /etc/ssh/sshd_config /etc/ssh/sshd_config.d/* ; then -+ sed -i "s/^PubkeyAuthentication.*/# PubkeyAuthentication no/" /etc/ssh/sshd_config /etc/ssh/sshd_config.d/* -+else -+ echo "# PubkeyAuthentication no" >> /etc/ssh/sshd_config -+fi -+ -+echo "PubkeyAuthentication no" > /etc/ssh/sshd_config.d/correct -diff --git a/shared/macros-bash.jinja b/shared/macros-bash.jinja -index 1cd2c62b5e0..b4518d83c19 100644 ---- a/shared/macros-bash.jinja -+++ b/shared/macros-bash.jinja -@@ -471,6 +471,15 @@ fi - LC_ALL=C sed -i "/{{{ regex }}}/{{{ modifier }}}" "{{{ path }}}" - {{%- endmacro -%}} - -+{{%- macro lineinfile_absent_in_directory(dirname, regex, insensitive=true) -%}} -+ {{%- if insensitive -%}} -+ {{%- set modifier="Id" -%}} -+ {{%- else -%}} -+ {{%- set modifier="d" -%}} -+ {{%- endif -%}} -+LC_ALL=C sed -i "/{{{ regex }}}/{{{ modifier }}}" "{{{ dirname }}}"/* -+{{%- endmacro -%}} -+ - {{%- macro lineinfile_present(path, line, insert_after="", insert_before="", insensitive=true) -%}} - {{%- if insensitive -%}} - {{%- set grep_args="-q -m 1 -i" -%}} -diff --git a/shared/macros-oval.jinja b/shared/macros-oval.jinja -index be2ac268206..d38db96d9e3 100644 ---- a/shared/macros-oval.jinja -+++ b/shared/macros-oval.jinja -@@ -92,15 +92,18 @@ - - parameter (String): The parameter to be checked in the configuration file. - - missing_parameter_pass (boolean): If set, the check will also pass if the parameter is not present in the configuration file (default is applied). - #}} --{{%- macro oval_line_in_file_criterion(path='', parameter='', missing_parameter_pass=false) -%}} -+{{%- macro oval_line_in_file_criterion(path='', parameter='', missing_parameter_pass=false, comment='', id_stem=rule_id) -%}} - {{%- set suffix_id = "" -%}} - {{%- set prefix_text = "Check the" -%}} - {{%- if missing_parameter_pass %}} - {{%- set suffix_id = suffix_id_default_not_overriden -%}} - {{%- set prefix_text = prefix_text + " absence of" -%}} - {{%- endif %}} -- -+{{%- if not comment -%}} -+{{%- set comment = prefix_text ~ " " ~ parameter ~ " in " ~ path -%}} -+{{%- endif -%}} -+ - {{%- endmacro %}} - - {{# -@@ -110,7 +113,7 @@ - - parameter (String): The parameter to be checked in the configuration file. - - missing_parameter_pass (boolean): If set, the check will also pass if the parameter is not present in the configuration file (default is applied). - #}} --{{%- macro oval_line_in_file_test(path='', parameter='', missing_parameter_pass=false) -%}} -+{{%- macro oval_line_in_file_test(path='', parameter='', missing_parameter_pass=false, id_stem=rule_id) -%}} - {{%- set suffix_id = "" -%}} - {{%- if missing_parameter_pass %}} - {{%- set check_existence = "none_exist" -%}} -@@ -120,14 +123,14 @@ - {{%- set check_existence = "all_exist" -%}} - {{%- set prefix_text = "value" -%}} - {{%- endif %}} -- -- -+ id="test_{{{ id_stem }}}{{{ suffix_id }}}" version="1"> -+ - {{%- if not missing_parameter_pass %}} -- -+ - {{%- endif %}} -- -+ - {{%- endmacro %}} - - {{# -@@ -141,7 +144,7 @@ - - missing_parameter_pass (boolean): If set, the check will also pass if the parameter is not present in the configuration file (default is applied). - - multi_value (boolean): If set, it means that the parameter can accept multiple values and the expected value must be present in the current list of values. - #}} --{{%- macro oval_line_in_file_object(path='', section='', prefix_regex='^[ \\t]*', parameter='', separator_regex='[ \\t]+', missing_parameter_pass=false, multi_value=false, filepath_regex='') -%}} -+{{%- macro oval_line_in_file_object(path='', section='', prefix_regex='^[ \\t]*', parameter='', separator_regex='[ \\t]+', missing_parameter_pass=false, multi_value=false, filepath_regex='', id_stem=rule_id) -%}} - {{%- set suffix_id = "" -%}} - {{%- if multi_value -%}} - {{%- set group_regex = "([^#]*).*$" -%}} -@@ -173,16 +176,16 @@ - {{%- set regex = prefix_regex+parameter+separator_regex+group_regex -%}} - {{%- endif %}} - {{%- endif %}} -- -+ - {{%- if filepath_regex %}} -- {{{ path }}} -- {{{ filepath_regex }}} -+ {{{ path }}} -+ {{{ filepath_regex }}} - {{%- else %}} -- {{{ path }}} -+ {{{ path }}} - {{%- endif %}} -- {{{ regex }}} -- 1 -- -+ {{{ regex }}} -+ 1 -+ - {{%- endmacro %}} - - {{# -@@ -193,7 +196,7 @@ - - quotes (String): If non-empty, one level of matching quotes is considered when checking the value. Specify one or more quote types as a string. - For example, for shell quoting, specify quotes="'\""), which will make sure that value, 'value' and "value" are matched, but 'value" or '"value"' won't be. - #}} --{{%- macro oval_line_in_file_state(value='', multi_value='', quotes='') -%}} -+{{%- macro oval_line_in_file_state(value='', multi_value='', quotes='', id_stem=rule_id) -%}} - {{%- set regex = value -%}} - {{%- if quotes != "" %}} - {{%- if "\\1" in value > 0 %}} -@@ -206,9 +209,25 @@ - {{%- else %}} - {{%- set regex = "^"+regex+"$" -%}} - {{%- endif %}} -- -- {{{ regex }}} -- -+ -+ {{{ regex }}} -+ -+{{%- endmacro %}} -+ -+{{%- macro oval_line_in_directory_criterion(path='', parameter='', missing_parameter_pass=false) -%}} -+{{{- oval_line_in_file_criterion(path, parameter, missing_parameter_pass, id_stem=rule_id ~ "_config_dir") -}}} -+{{%- endmacro %}} -+ -+{{%- macro oval_line_in_directory_test(path='', parameter='', missing_parameter_pass=false) -%}} -+{{{ oval_line_in_file_test(path, parameter, missing_parameter_pass, id_stem=rule_id ~ "_config_dir") }}} -+{{%- endmacro %}} -+ -+{{%- macro oval_line_in_directory_object(path='', section='', prefix_regex='^[ \\t]*', parameter='', separator_regex='[ \\t]+', missing_parameter_pass=false, multi_value=false) -%}} -+{{{- oval_line_in_file_object(path=path, section=section, prefix_regex=prefix_regex, parameter=parameter, separator_regex=separator_regex, missing_parameter_pass=missing_parameter_pass, multi_value=multi_value, filepath_regex=".*", id_stem=rule_id ~ "_config_dir") -}}} -+{{%- endmacro %}} -+ -+{{%- macro oval_line_in_directory_state(value='', multi_value='', quotes='') -%}} -+{{{- oval_line_in_file_state(value, multi_value, quotes, id_stem=rule_id ~ "_config_dir") -}}} - {{%- endmacro %}} - - {{# -diff --git a/shared/templates/sshd_lineinfile/bash.template b/shared/templates/sshd_lineinfile/bash.template -index ca1b512bb3d..eac758e310b 100644 ---- a/shared/templates/sshd_lineinfile/bash.template -+++ b/shared/templates/sshd_lineinfile/bash.template -@@ -3,4 +3,26 @@ - # strategy = restrict - # complexity = low - # disruption = low -+{{%- if product in ("fedora", "rhel9") %}} -+{{%- set prefix_regex = "^\s*" -%}} -+{{%- set separator_regex = "\s\+" -%}} -+{{%- set line_regex = prefix_regex ~ PARAMETER ~ separator_regex %}} -+mkdir -p /etc/ssh/sshd_config.d -+touch /etc/ssh/sshd_config.d/hardening -+{{{ lineinfile_absent("/etc/ssh/sshd_config", line_regex, insensitive=true) }}} -+{{{ lineinfile_absent_in_directory("/etc/ssh/sshd_config.d", line_regex, insensitive=true) }}} -+{{{ set_config_file( -+ path="/etc/ssh/sshd_config.d/hardening", -+ parameter=PARAMETER, -+ value=VALUE, -+ create=true, -+ insert_after="", -+ insert_before="^Match", -+ insensitive=true, -+ separator=" ", -+ separator_regex=separator_regex, -+ prefix_regex=prefix_regex) -+ }}} -+{{%- else %}} - {{{ bash_sshd_config_set(parameter=PARAMETER, value=VALUE) }}} -+{{%- endif %}} -diff --git a/shared/templates/sshd_lineinfile/oval.template b/shared/templates/sshd_lineinfile/oval.template -index df63d542505..2cc38776eb2 100644 ---- a/shared/templates/sshd_lineinfile/oval.template -+++ b/shared/templates/sshd_lineinfile/oval.template -@@ -1,7 +1,61 @@ --{{{ --oval_sshd_config( -- parameter=PARAMETER, -- value=VALUE, -- missing_parameter_pass=MISSING_PARAMETER_PASS --) --}}} -+{{%- set config_path = "/etc/ssh/sshd_config" %}} -+{{%- set config_dir = "/etc/ssh/sshd_config.d" -%}} -+{{%- set products_with_distributed_configuration = ("rhel9", "fedora") -%}} -+{{%- set description = "Ensure '" ~ PARAMETER ~ "' is configured with value '" ~ VALUE ~ "' in " ~ config_path %}} -+{{%- if product in products_with_distributed_configuration %}} -+{{%- set description = description ~ " and in " ~ config_dir -%}} -+{{%- endif %}} -+{{%- set case_insensitivity_kwargs = dict(prefix_regex="^[ \\t]*(?i)", separator_regex = "(?-i)[ \\t]+") -%}} -+ -+ -+ -+ {{{ oval_metadata(description) }}} -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ {{{- oval_line_in_file_criterion(config_path, PARAMETER) | indent(8) }}} -+ {{%- if MISSING_PARAMETER_PASS %}} -+ -+ {{{- oval_line_in_file_criterion(config_path, PARAMETER, MISSING_PARAMETER_PASS) | indent(10)}}} -+ {{%- if product in products_with_distributed_configuration %}} -+ {{{- oval_line_in_directory_criterion(config_dir, PARAMETER, MISSING_PARAMETER_PASS) | indent(10) }}} -+ {{%- endif %}} -+ -+ {{%- endif %}} -+ {{%- if product in products_with_distributed_configuration %}} -+ {{{- oval_line_in_directory_criterion(config_dir, PARAMETER) | indent(8) }}} -+ {{%- endif %}} -+ -+ -+ -+ -+ {{{ oval_line_in_file_test(config_path, PARAMETER) | indent (2) }}} -+ {{{ oval_line_in_file_object(config_path, parameter=PARAMETER, ** case_insensitivity_kwargs)| indent (2) }}} -+ {{{ oval_line_in_file_state(VALUE) | indent (2) }}} -+ -+ {{%- if MISSING_PARAMETER_PASS %}} -+ {{{ oval_line_in_file_test(config_path, PARAMETER, MISSING_PARAMETER_PASS) | indent(2) }}} -+ {{{ oval_line_in_file_object(config_path, parameter=PARAMETER, missing_parameter_pass=MISSING_PARAMETER_PASS, ** case_insensitivity_kwargs) | indent(2) }}} -+ {{%- endif %}} -+ -+ {{%- if product in products_with_distributed_configuration %}} -+ {{{ oval_line_in_directory_test(config_dir, PARAMETER) | indent (2) }}} -+ {{{ oval_line_in_directory_object(config_dir, parameter=PARAMETER, ** case_insensitivity_kwargs) | indent (2) }}} -+ {{{ oval_line_in_directory_state(VALUE) | indent (2) }}} -+ -+ {{%- if MISSING_PARAMETER_PASS %}} -+ {{{ oval_line_in_directory_test(config_path, PARAMETER, MISSING_PARAMETER_PASS) | indent(2) }}} -+ {{{ oval_line_in_directory_object(config_path, parameter=PARAMETER, missing_parameter_pass=MISSING_PARAMETER_PASS, ** case_insensitivity_kwargs) | indent(2) }}} -+ {{%- endif %}} -+ {{%- endif %}} -+ - -From b0f86c11fa0fb45b32b53833b5d3565c7eb73cfe Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Mat=C4=9Bj=20T=C3=BD=C4=8D?= -Date: Fri, 30 Apr 2021 11:52:22 +0200 -Subject: [PATCH 2/6] Improved the lineinfile template. - -It now escapes the text contents if parts of them could be incorrectly interpreted as regexes. ---- - shared/macros-bash.jinja | 2 +- - shared/templates/lineinfile/oval.template | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/shared/macros-bash.jinja b/shared/macros-bash.jinja -index b4518d83c19..d654a0e0e89 100644 ---- a/shared/macros-bash.jinja -+++ b/shared/macros-bash.jinja -@@ -445,7 +445,7 @@ printf '%s\n' "{{{ message | replace('"', '\\"') }}}" >&2 - # prefix_regex: regular expression describing allowed leading characters at each line - #}} - {{%- macro set_config_file(path, parameter, value, create, insert_after, insert_before, insensitive=true, separator=" ", separator_regex="\s\+", prefix_regex="^\s*") -%}} -- {{%- set line_regex = prefix_regex+parameter+separator_regex -%}} -+ {{%- set line_regex = prefix_regex + ((parameter | escape_regex) | replace("/", "\/")) + separator_regex -%}} - {{%- set new_line = parameter+separator+value -%}} - if [ -e "{{{ path }}}" ] ; then - {{{ lineinfile_absent(path, line_regex, insensitive) | indent(4) }}} -diff --git a/shared/templates/lineinfile/oval.template b/shared/templates/lineinfile/oval.template -index a38856d9177..644327b7d6e 100644 ---- a/shared/templates/lineinfile/oval.template -+++ b/shared/templates/lineinfile/oval.template -@@ -1,4 +1,4 @@ --{{%- set regex = "^[\s]*" + TEXT + "[\s]*$" -%}} -+{{%- set regex = "^[\s]*" ~ (TEXT | escape_regex) ~ "[\s]*$" -%}} - - - {{{ oval_metadata("Check presence of " + TEXT + " in " + PATH) }}} - -From 6953f74d1ab168e7ccc3f28877621edff317fef2 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Mat=C4=9Bj=20T=C3=BD=C4=8D?= -Date: Fri, 30 Apr 2021 11:54:12 +0200 -Subject: [PATCH 3/6] Introduced the sshd_use_directory_configuration rule. - -The rule makes sure that the sshd configuration is distributed in the -/etc/ssh/sshd_config.d/ directory, and therefore it makes sense to scan that directory -in another rules. ---- - .../bash/shared.sh | 15 ++++++++++ - .../oval/shared.xml | 29 +++++++++++++++++++ - .../sshd_use_directory_configuration/rule.yml | 26 +++++++++++++++++ - .../tests/match.fail.sh | 4 +++ - .../tests/simple.fail.sh | 3 ++ - .../tests/simple.pass.sh | 4 +++ - shared/references/cce-redhat-avail.txt | 1 - - shared/templates/extra_ovals.yml | 6 ++++ - 8 files changed, 87 insertions(+), 1 deletion(-) - create mode 100644 linux_os/guide/services/ssh/ssh_server/sshd_use_directory_configuration/bash/shared.sh - create mode 100644 linux_os/guide/services/ssh/ssh_server/sshd_use_directory_configuration/oval/shared.xml - create mode 100644 linux_os/guide/services/ssh/ssh_server/sshd_use_directory_configuration/rule.yml - create mode 100644 linux_os/guide/services/ssh/ssh_server/sshd_use_directory_configuration/tests/match.fail.sh - create mode 100644 linux_os/guide/services/ssh/ssh_server/sshd_use_directory_configuration/tests/simple.fail.sh - create mode 100644 linux_os/guide/services/ssh/ssh_server/sshd_use_directory_configuration/tests/simple.pass.sh - -diff --git a/linux_os/guide/services/ssh/ssh_server/sshd_use_directory_configuration/bash/shared.sh b/linux_os/guide/services/ssh/ssh_server/sshd_use_directory_configuration/bash/shared.sh -new file mode 100644 -index 00000000000..2ff58ec373c ---- /dev/null -+++ b/linux_os/guide/services/ssh/ssh_server/sshd_use_directory_configuration/bash/shared.sh -@@ -0,0 +1,15 @@ -+# platform = multi_platform_all -+ -+{{% set target_file = "/etc/ssh/sshd_config.d/sshd_config_original.conf" -%}} -+if test -f {{{ target_file}}}; then -+ {{{ die("Remediation probably already happened, '" ~ target_file ~ "' already exists, not doing anything.", action="false") }}} -+else -+ mkdir -p /etc/ssh/sshd_config.d -+ mv /etc/ssh/sshd_config {{{ target_file }}} -+cat > /etc/ssh/sshd_config << EOF -+# To modify the system-wide sshd configuration, create a *.conf file under -+# /etc/ssh/sshd_config.d/ which will be automatically included below -+ -+Include /etc/ssh/sshd_config.d/*.conf -+EOF -+fi -diff --git a/linux_os/guide/services/ssh/ssh_server/sshd_use_directory_configuration/oval/shared.xml b/linux_os/guide/services/ssh/ssh_server/sshd_use_directory_configuration/oval/shared.xml -new file mode 100644 -index 00000000000..0ffb429adff ---- /dev/null -+++ b/linux_os/guide/services/ssh/ssh_server/sshd_use_directory_configuration/oval/shared.xml -@@ -0,0 +1,29 @@ -+{{%- set config_path = "/etc/ssh/sshd_config" %}} -+ -+ -+ -+ {{{ oval_metadata("foo") }}} -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ {{{- oval_line_in_file_criterion(config_path, "match", missing_parameter_pass=true) | indent(8) }}} -+ -+ -+ -+ -+ {{{ oval_line_in_file_test(config_path, "match", missing_parameter_pass=true) | indent (2) }}} -+ {{{ oval_line_in_file_object(config_path, parameter="match", missing_parameter_pass=true, prefix_regex="^[ \\t]*(?i)", separator_regex="(?-i)\s+\S+") | indent (2) }}} -+ -+ -diff --git a/linux_os/guide/services/ssh/ssh_server/sshd_use_directory_configuration/rule.yml b/linux_os/guide/services/ssh/ssh_server/sshd_use_directory_configuration/rule.yml -new file mode 100644 -index 00000000000..8c370036e61 ---- /dev/null -+++ b/linux_os/guide/services/ssh/ssh_server/sshd_use_directory_configuration/rule.yml -@@ -0,0 +1,26 @@ -+documentation_complete: true -+ -+prodtype: fedora,rhel9 -+ -+title: 'Distribute the SSH Server configuration to multiple files in a config directory.' -+ -+description: |- -+ Make sure to have the Include /etc/ssh/sshd_config.d/*.conf line in the /etc/ssh/sshd_config file. -+ Ideally, don't have any active configuration directives in that file, and distribute the service configuration -+ to several files in the /etc/ssh/sshd_config.d directory. -+ -+rationale: |- -+ This form of distributed configuration is considered as a good practice, and as other sshd rules assume that directives in files in the /etc/ssh/sshd_config.d config directory are effective, there has to be a rule that ensures this. -+ Aside from that, having multiple configuration files makes the SSH Server configuration changes easier to partition according to the reason that they were introduced, and therefore it should help to perform merges of hardening updates. -+ -+severity: medium -+ -+identifiers: -+ cce@rhel9: CCE-87681-3 -+ -+ocil_clause: "you don't include other configuration files from the main configuration file" -+ -+ocil: |- -+ To determine whether the SSH server includes configuration files from the right directory, run the following command: -+
      $ sudo grep -i '^Include' /etc/ssh/sshd_config
      -+ If a line Include /etc/ssh/sshd_config.d/*.conf is returned, then the configuration file inclusion is set correctly. -diff --git a/linux_os/guide/services/ssh/ssh_server/sshd_use_directory_configuration/tests/match.fail.sh b/linux_os/guide/services/ssh/ssh_server/sshd_use_directory_configuration/tests/match.fail.sh -new file mode 100644 -index 00000000000..fa2ee0654f2 ---- /dev/null -+++ b/linux_os/guide/services/ssh/ssh_server/sshd_use_directory_configuration/tests/match.fail.sh -@@ -0,0 +1,4 @@ -+# platform = multi_platform_all -+ -+echo "Match something" >> /etc/ssh/sshd_config -+echo "Include /etc/ssh/sshd_config.d/*.conf" >> /etc/ssh/sshd_config -diff --git a/linux_os/guide/services/ssh/ssh_server/sshd_use_directory_configuration/tests/simple.fail.sh b/linux_os/guide/services/ssh/ssh_server/sshd_use_directory_configuration/tests/simple.fail.sh -new file mode 100644 -index 00000000000..a6013ad7cfa ---- /dev/null -+++ b/linux_os/guide/services/ssh/ssh_server/sshd_use_directory_configuration/tests/simple.fail.sh -@@ -0,0 +1,3 @@ -+# platform = multi_platform_all -+ -+echo "include /etc/ssh/sshd_config.d/.*" > /etc/ssh/sshd_config -diff --git a/linux_os/guide/services/ssh/ssh_server/sshd_use_directory_configuration/tests/simple.pass.sh b/linux_os/guide/services/ssh/ssh_server/sshd_use_directory_configuration/tests/simple.pass.sh -new file mode 100644 -index 00000000000..7a26f521415 ---- /dev/null -+++ b/linux_os/guide/services/ssh/ssh_server/sshd_use_directory_configuration/tests/simple.pass.sh -@@ -0,0 +1,4 @@ -+# platform = multi_platform_all -+ -+# Handling of case-insensitivity of include is tricky -+echo "Include /etc/ssh/sshd_config.d/*.conf" > /etc/ssh/sshd_config -diff --git a/shared/references/cce-redhat-avail.txt b/shared/references/cce-redhat-avail.txt -index 73d025484e6..40a2b9b5868 100644 ---- a/shared/references/cce-redhat-avail.txt -+++ b/shared/references/cce-redhat-avail.txt -@@ -1780,7 +1780,6 @@ CCE-87677-1 - CCE-87678-9 - CCE-87679-7 - CCE-87680-5 --CCE-87681-3 - CCE-87682-1 - CCE-87683-9 - CCE-87684-7 -diff --git a/shared/templates/extra_ovals.yml b/shared/templates/extra_ovals.yml -index 095d911ee1c..69062ebe541 100644 ---- a/shared/templates/extra_ovals.yml -+++ b/shared/templates/extra_ovals.yml -@@ -57,3 +57,9 @@ service_syslog_disabled: - vars: - servicename: syslog - packagename: rsyslog -+ -+sshd_includes_config_files: -+ name: lineinfile -+ vars: -+ path: /etc/ssh/sshd_config -+ text: "Include /etc/ssh/sshd_config.d/*.conf" - -From d7fcab7ad66e77bb7ccba507e3f024bc892c3864 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Mat=C4=9Bj=20T=C3=BD=C4=8D?= -Date: Tue, 11 May 2021 16:06:29 +0200 -Subject: [PATCH 4/6] Improved error reporting related to macros. - ---- - ssg/jinja.py | 22 +++++++++++++--------- - 1 file changed, 13 insertions(+), 9 deletions(-) - -diff --git a/ssg/jinja.py b/ssg/jinja.py -index a46246ad0fb..28edd9a6dcd 100644 ---- a/ssg/jinja.py -+++ b/ssg/jinja.py -@@ -153,16 +153,20 @@ def load_macros(substitutions_dict=None): - - add_python_functions(substitutions_dict) - try: -- update_substitutions_dict(JINJA_MACROS_BASE_DEFINITIONS, substitutions_dict) -- update_substitutions_dict(JINJA_MACROS_HIGHLEVEL_DEFINITIONS, substitutions_dict) -- update_substitutions_dict(JINJA_MACROS_ANSIBLE_DEFINITIONS, substitutions_dict) -- update_substitutions_dict(JINJA_MACROS_BASH_DEFINITIONS, substitutions_dict) -- update_substitutions_dict(JINJA_MACROS_OVAL_DEFINITIONS, substitutions_dict) -- update_substitutions_dict(JINJA_MACROS_IGNITION_DEFINITIONS, substitutions_dict) -- update_substitutions_dict(JINJA_MACROS_KUBERNETES_DEFINITIONS, substitutions_dict) -+ filenames = [ -+ JINJA_MACROS_BASE_DEFINITIONS, -+ JINJA_MACROS_HIGHLEVEL_DEFINITIONS, -+ JINJA_MACROS_ANSIBLE_DEFINITIONS, -+ JINJA_MACROS_BASH_DEFINITIONS, -+ JINJA_MACROS_OVAL_DEFINITIONS, -+ JINJA_MACROS_IGNITION_DEFINITIONS, -+ JINJA_MACROS_KUBERNETES_DEFINITIONS, -+ ] -+ for filename in filenames: -+ update_substitutions_dict(filename, substitutions_dict) - except Exception as exc: -- msg = ("Error extracting macro definitions: {0}" -- .format(str(exc))) -+ msg = ("Error extracting macro definitions from '{1}': {0}" -+ .format(str(exc), filename)) - raise RuntimeError(msg) - - return substitutions_dict - -From df45c3fa295a2dc5a23cc347657964df6453cbae Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Mat=C4=9Bj=20T=C3=BD=C4=8D?= -Date: Tue, 11 May 2021 16:44:50 +0200 -Subject: [PATCH 5/6] Removed devault values that are variables from Jinja - -Support in older jinja2 packages is not in a good shape. ---- - shared/macros-oval.jinja | 12 ++++++++---- - 1 file changed, 8 insertions(+), 4 deletions(-) - -diff --git a/shared/macros-oval.jinja b/shared/macros-oval.jinja -index d38db96d9e3..87e0fd7d87d 100644 ---- a/shared/macros-oval.jinja -+++ b/shared/macros-oval.jinja -@@ -92,7 +92,8 @@ - - parameter (String): The parameter to be checked in the configuration file. - - missing_parameter_pass (boolean): If set, the check will also pass if the parameter is not present in the configuration file (default is applied). - #}} --{{%- macro oval_line_in_file_criterion(path='', parameter='', missing_parameter_pass=false, comment='', id_stem=rule_id) -%}} -+{{%- macro oval_line_in_file_criterion(path='', parameter='', missing_parameter_pass=false, comment='', id_stem='') -%}} -+{{%- set id_stem = id_stem or rule_id -%}} - {{%- set suffix_id = "" -%}} - {{%- set prefix_text = "Check the" -%}} - {{%- if missing_parameter_pass %}} -@@ -113,7 +114,8 @@ - - parameter (String): The parameter to be checked in the configuration file. - - missing_parameter_pass (boolean): If set, the check will also pass if the parameter is not present in the configuration file (default is applied). - #}} --{{%- macro oval_line_in_file_test(path='', parameter='', missing_parameter_pass=false, id_stem=rule_id) -%}} -+{{%- macro oval_line_in_file_test(path='', parameter='', missing_parameter_pass=false, id_stem='') -%}} -+{{%- set id_stem = id_stem or rule_id -%}} - {{%- set suffix_id = "" -%}} - {{%- if missing_parameter_pass %}} - {{%- set check_existence = "none_exist" -%}} -@@ -144,7 +146,8 @@ - - missing_parameter_pass (boolean): If set, the check will also pass if the parameter is not present in the configuration file (default is applied). - - multi_value (boolean): If set, it means that the parameter can accept multiple values and the expected value must be present in the current list of values. - #}} --{{%- macro oval_line_in_file_object(path='', section='', prefix_regex='^[ \\t]*', parameter='', separator_regex='[ \\t]+', missing_parameter_pass=false, multi_value=false, filepath_regex='', id_stem=rule_id) -%}} -+{{%- macro oval_line_in_file_object(path='', section='', prefix_regex='^[ \\t]*', parameter='', separator_regex='[ \\t]+', missing_parameter_pass=false, multi_value=false, filepath_regex='', id_stem='') -%}} -+{{%- set id_stem = id_stem or rule_id -%}} - {{%- set suffix_id = "" -%}} - {{%- if multi_value -%}} - {{%- set group_regex = "([^#]*).*$" -%}} -@@ -196,7 +199,8 @@ - - quotes (String): If non-empty, one level of matching quotes is considered when checking the value. Specify one or more quote types as a string. - For example, for shell quoting, specify quotes="'\""), which will make sure that value, 'value' and "value" are matched, but 'value" or '"value"' won't be. - #}} --{{%- macro oval_line_in_file_state(value='', multi_value='', quotes='', id_stem=rule_id) -%}} -+{{%- macro oval_line_in_file_state(value='', multi_value='', quotes='', id_stem='') -%}} -+{{%- set id_stem = id_stem or rule_id -%}} - {{%- set regex = value -%}} - {{%- if quotes != "" %}} - {{%- if "\\1" in value > 0 %}} - -From a3ec49f75ac3059d7096985e08e10005db96330a Mon Sep 17 00:00:00 2001 -From: Matej Tyc -Date: Fri, 30 Jul 2021 17:25:25 +0200 -Subject: [PATCH 6/6] Don't remediate when it is inappropriate - -Don't remediate when the config file already contains the include -directive. ---- - .../sshd_use_directory_configuration/bash/shared.sh | 7 +++++-- - 1 file changed, 5 insertions(+), 2 deletions(-) - -diff --git a/linux_os/guide/services/ssh/ssh_server/sshd_use_directory_configuration/bash/shared.sh b/linux_os/guide/services/ssh/ssh_server/sshd_use_directory_configuration/bash/shared.sh -index 2ff58ec373c..9317b23992d 100644 ---- a/linux_os/guide/services/ssh/ssh_server/sshd_use_directory_configuration/bash/shared.sh -+++ b/linux_os/guide/services/ssh/ssh_server/sshd_use_directory_configuration/bash/shared.sh -@@ -1,12 +1,15 @@ - # platform = multi_platform_all - - {{% set target_file = "/etc/ssh/sshd_config.d/sshd_config_original.conf" -%}} -+{{% set base_config = "/etc/ssh/sshd_config" -%}} - if test -f {{{ target_file}}}; then - {{{ die("Remediation probably already happened, '" ~ target_file ~ "' already exists, not doing anything.", action="false") }}} -+elif grep -Eq '^\s*Include\s+/etc/ssh/sshd_config\.d/\*\.conf' {{{ base_config }}} && ! grep -Eq '^\s*Match\s' {{{ base_config }}}; then -+ {{{ die("Remediation probably already happened, '" ~ base_config ~ "' already contains the include directive.", action="false") }}} - else - mkdir -p /etc/ssh/sshd_config.d -- mv /etc/ssh/sshd_config {{{ target_file }}} --cat > /etc/ssh/sshd_config << EOF -+ mv {{{ base_config }}} {{{ target_file }}} -+cat > {{{ base_config }}} << EOF - # To modify the system-wide sshd configuration, create a *.conf file under - # /etc/ssh/sshd_config.d/ which will be automatically included below - diff --git a/SOURCES/scap-security-guide-0.1.58-templated_tests-PR_7211.patch b/SOURCES/scap-security-guide-0.1.58-templated_tests-PR_7211.patch deleted file mode 100644 index 590a222..0000000 --- a/SOURCES/scap-security-guide-0.1.58-templated_tests-PR_7211.patch +++ /dev/null @@ -1,1837 +0,0 @@ -From 1036c6b55b95a27be57b065a4b9acfecc83639b3 Mon Sep 17 00:00:00 2001 -From: Alexander Scheel -Date: Tue, 6 Jul 2021 16:02:03 -0400 -Subject: [PATCH 01/19] Add tests for package_installed template - -Signed-off-by: Alexander Scheel ---- - .../package_installed/tests/package-installed-removed.fail.sh | 4 ++++ - .../package_installed/tests/package-installed.pass.sh | 3 +++ - .../templates/package_installed/tests/package-removed.fail.sh | 3 +++ - 3 files changed, 10 insertions(+) - create mode 100644 shared/templates/package_installed/tests/package-installed-removed.fail.sh - create mode 100644 shared/templates/package_installed/tests/package-installed.pass.sh - create mode 100644 shared/templates/package_installed/tests/package-removed.fail.sh - -diff --git a/shared/templates/package_installed/tests/package-installed-removed.fail.sh b/shared/templates/package_installed/tests/package-installed-removed.fail.sh -new file mode 100644 -index 00000000000..1ce59225303 ---- /dev/null -+++ b/shared/templates/package_installed/tests/package-installed-removed.fail.sh -@@ -0,0 +1,4 @@ -+#!/bin/bash -+ -+{{{ bash_package_install(PKGNAME) }}} -+{{{ bash_package_remove(PKGNAME) }}} -diff --git a/shared/templates/package_installed/tests/package-installed.pass.sh b/shared/templates/package_installed/tests/package-installed.pass.sh -new file mode 100644 -index 00000000000..2a0506c57fd ---- /dev/null -+++ b/shared/templates/package_installed/tests/package-installed.pass.sh -@@ -0,0 +1,3 @@ -+#!/bin/bash -+ -+{{{ bash_package_install(PKGNAME) }}} -diff --git a/shared/templates/package_installed/tests/package-removed.fail.sh b/shared/templates/package_installed/tests/package-removed.fail.sh -new file mode 100644 -index 00000000000..c2838396f56 ---- /dev/null -+++ b/shared/templates/package_installed/tests/package-removed.fail.sh -@@ -0,0 +1,3 @@ -+#!/bin/bash -+ -+{{{ bash_package_remove(PKGNAME) }}} - -From 3008339e7779b144a2b7fa72854d1185e33438f5 Mon Sep 17 00:00:00 2001 -From: Alexander Scheel -Date: Tue, 6 Jul 2021 16:16:56 -0400 -Subject: [PATCH 02/19] Refactor ssg/templates.py generation (SCE) - -This refactors SSG's template generation code to better align between -where we are now upstream and future changes related to templated SCE -support. - -At this point in time, we wish to make some changes to allow building -templated (both in the Jinja and shared/templates senses) test cases, -and many of the SCE-enablement changes are relevant, I chose to pull -them in almost entirely. The original commit message is preserved below: - - Refactor template generation for SCEs - - ssg/templates.py holds the core of template generation logic. We - will need a template_builder for SCE (so we can load SCE metadata - from templated content) but we do not wish to write this SCE content - out immediately; instead, we wish to wait until - build-scripts/build_templated_content.py is run. - - We refactor to make the resolved languages for a rule (the - intersection between theoretical languages allowed by the rule and - the actual languages allowed by the template) accessible to callers, - and, also allow reading just a single templated language artifact - into memory (instead of from disk). - -Notably, this last change is most useful to us; we don't want to put the -file in a template/build-system specified location; we wish to control -its location exactly here. - -Note that no changes to ssg/templates.py for the test suite change were -done here; this was purely a change to sync future changes for SCE -content. - -Signed-off-by: Alexander Scheel ---- - ssg/templates.py | 112 +++++++++++++++++++++++++++++++++++++---------- - 1 file changed, 89 insertions(+), 23 deletions(-) - -diff --git a/ssg/templates.py b/ssg/templates.py -index 6783d0f2d5e..47a8a5eb852 100644 ---- a/ssg/templates.py -+++ b/ssg/templates.py -@@ -107,14 +107,17 @@ def __init__( - self.checks_dir = checks_dir - self.output_dirs = dict() - for lang in languages: -+ lang_dir = lang - if lang == "oval": - # OVAL checks need to be put to a different directory because -- # they are processed differently than remediations later in the -- # build process -+ # they are processed differently than remediations later in -+ # the build process - output_dir = self.checks_dir -+ if lang.startswith("sce-"): -+ lang_dir = "sce" - else: - output_dir = self.remediations_dir -- dir_ = os.path.join(output_dir, lang) -+ dir_ = os.path.join(output_dir, lang_dir) - self.output_dirs[lang] = dir_ - # scan directory structure and dynamically create list of templates - for item in sorted(os.listdir(self.templates_dir)): -@@ -124,25 +127,41 @@ def __init__( - maybe_template.load() - templates[item] = maybe_template - -+ def build_lang_file( -+ self, rule_id, template_name, template_vars, lang, local_env_yaml): -+ """ -+ Builds and returns templated content for a given rule for a given -+ language; does not write the output to disk. -+ """ -+ if lang not in templates[template_name].langs: -+ return None -+ -+ template_file_name = lang + ".template" -+ template_file_path = os.path.join(self.templates_dir, template_name, template_file_name) -+ template_parameters = templates[template_name].preprocess(template_vars, lang) -+ jinja_dict = ssg.utils.merge_dicts(local_env_yaml, template_parameters) -+ filled_template = ssg.jinja.process_file_with_macros( -+ template_file_path, jinja_dict) -+ -+ return filled_template - - def build_lang( -- self, rule_id, template_name, template_vars, lang, local_env_yaml): -+ self, rule_id, template_name, template_vars, lang, local_env_yaml, platforms=None): - """ - Builds templated content for a given rule for a given language. - Writes the output to the correct build directories. - """ - if lang not in templates[template_name].langs: - return -- template_file_name = lang + ".template" -- template_file_path = os.path.join(self.templates_dir, template_name, template_file_name) -+ -+ filled_template = self.build_lang_file(rule_id, template_name, -+ template_vars, lang, local_env_yaml) -+ - ext = lang_to_ext_map[lang] - output_file_name = rule_id + ext - output_filepath = os.path.join( - self.output_dirs[lang], output_file_name) -- template_parameters = templates[template_name].preprocess(template_vars, lang) -- jinja_dict = ssg.utils.merge_dicts(local_env_yaml, template_parameters) -- filled_template = ssg.jinja.process_file_with_macros( -- template_file_path, jinja_dict) -+ - with open(output_filepath, "w") as f: - f.write(filled_template) - -@@ -168,6 +187,37 @@ def get_langs_to_generate(self, rule): - else: - return languages - -+ def get_template_name(self, template): -+ """ -+ Given a template dictionary from a Rule instance, determine the name -+ of the template (from templates) this rule uses. -+ """ -+ try: -+ template_name = template["name"] -+ except KeyError: -+ raise ValueError( -+ "Rule {0} is missing template name under template key".format( -+ rule_id)) -+ if template_name not in templates.keys(): -+ raise ValueError( -+ "Rule {0} uses template {1} which does not exist.".format( -+ rule_id, template_name)) -+ return template_name -+ -+ def get_resolved_langs_to_generate(self, rule): -+ """ -+ Given a specific Rule instance, determine which languages are -+ generated by the combination of the rule's template_backends AND -+ the rule's template keys. -+ """ -+ if rule.template is None: -+ return None -+ -+ rule_langs = set(self.get_langs_to_generate(rule)) -+ template_name = self.get_template_name(rule.template) -+ template_langs = set(templates[template_name].langs) -+ return rule_langs.intersection(template_langs) -+ - def process_product_vars(self, all_variables): - """ - Given a dictionary with the format key[@]=value, filter out -@@ -183,21 +233,12 @@ def process_product_vars(self, all_variables): - - return processed - -- def build_rule(self, rule_id, rule_title, template, langs_to_generate): -+ def build_rule(self, rule_id, rule_title, template, langs_to_generate, platforms=None): - """ - Builds templated content for a given rule for selected languages, - writing the output to the correct build directories. - """ -- try: -- template_name = template["name"] -- except KeyError: -- raise ValueError( -- "Rule {0} is missing template name under template key".format( -- rule_id)) -- if template_name not in templates.keys(): -- raise ValueError( -- "Rule {0} uses template {1} which does not exist.".format( -- rule_id, template_name)) -+ template_name = self.get_template_name(template) - try: - template_vars = self.process_product_vars(template["vars"]) - except KeyError: -@@ -216,11 +257,36 @@ def build_rule(self, rule_id, rule_title, template, langs_to_generate): - for lang in langs_to_generate: - try: - self.build_lang( -- rule_id, template_name, template_vars, lang, local_env_yaml) -+ rule_id, template_name, template_vars, lang, local_env_yaml, platforms) - except Exception as e: - print("Error building templated {0} content for rule {1}".format(lang, rule_id), file=sys.stderr) - raise e - -+ def get_lang_for_rule(self, rule_id, rule_title, template, language): -+ """ -+ For the specified rule, build and return only the specified language -+ content. -+ """ -+ template_name = self.get_template_name(template) -+ try: -+ template_vars = self.process_product_vars(template["vars"]) -+ except KeyError: -+ raise ValueError( -+ "Rule {0} does not contain mandatory 'vars:' key under " -+ "'template:' key.".format(rule_id)) -+ # Add the rule ID which will be reused in OVAL templates as OVAL -+ # definition ID so that the build system matches the generated -+ # check with the rule. -+ template_vars["_rule_id"] = rule_id -+ # checks and remediations are processed with a custom YAML dict -+ local_env_yaml = self.env_yaml.copy() -+ local_env_yaml["rule_id"] = rule_id -+ local_env_yaml["rule_title"] = rule_title -+ local_env_yaml["products"] = self.env_yaml["product"] -+ -+ return self.build_lang_file(rule_id, template_name, template_vars, -+ language, local_env_yaml) -+ - def build_extra_ovals(self): - declaration_path = os.path.join(self.templates_dir, "extra_ovals.yml") - declaration = ssg.yaml.open_raw(declaration_path) -@@ -245,7 +311,7 @@ def build_all_rules(self): - continue - langs_to_generate = self.get_langs_to_generate(rule) - self.build_rule( -- rule.id_, rule.title, rule.template, langs_to_generate) -+ rule.id_, rule.title, rule.template, langs_to_generate, platforms=rule.platforms) - - def build(self): - """ - -From 8da04c6a85d40432a19904b16251885e12b75999 Mon Sep 17 00:00:00 2001 -From: Alexander Scheel -Date: Tue, 6 Jul 2021 16:50:06 -0400 -Subject: [PATCH 03/19] Remove incorrect tests for package installation - -These tests assume that the package manager is yum (and forcibly -installs it) in some cases. This doesn't work on Debian-like systems; -prefer the templated version instead, which uses the -bash_package_install Jinja macro instead (and uses the -bash_package_remove macro for the negative case) - -Signed-off-by: Alexander Scheel ---- - .../ntp/package_chrony_installed/tests/installed.pass.sh | 4 ---- - .../ntp/package_chrony_installed/tests/removed.fail.sh | 3 --- - .../package_audit_installed/tests/installed.pass.sh | 4 ---- - .../package_audit_installed/tests/removed.fail.sh | 3 --- - .../package_rsyslog_installed/tests/installed.pass.sh | 3 --- - .../package_rsyslog_installed/tests/notinstalled.fail.sh | 3 --- - .../package_firewalld_installed/tests/installed.pass.sh | 4 ---- - .../package_firewalld_installed/tests/removed.fail.sh | 3 --- - .../package_libselinux_installed/tests/installed.pass.sh | 4 ---- - .../aide/package_aide_installed/tests/installed.pass.sh | 3 --- - .../aide/package_aide_installed/tests/notinstalled.fail.sh | 3 --- - .../sudo/package_sudo_installed/tests/installed.pass.sh | 4 ---- - .../sudo/package_sudo_installed/tests/removed.fail.sh | 3 --- - 13 files changed, 53 deletions(-) - delete mode 100644 linux_os/guide/services/ntp/package_chrony_installed/tests/installed.pass.sh - delete mode 100644 linux_os/guide/services/ntp/package_chrony_installed/tests/removed.fail.sh - delete mode 100644 linux_os/guide/system/auditing/package_audit_installed/tests/installed.pass.sh - delete mode 100644 linux_os/guide/system/auditing/package_audit_installed/tests/removed.fail.sh - delete mode 100644 linux_os/guide/system/logging/package_rsyslog_installed/tests/installed.pass.sh - delete mode 100644 linux_os/guide/system/logging/package_rsyslog_installed/tests/notinstalled.fail.sh - delete mode 100644 linux_os/guide/system/network/network-firewalld/firewalld_activation/package_firewalld_installed/tests/installed.pass.sh - delete mode 100644 linux_os/guide/system/network/network-firewalld/firewalld_activation/package_firewalld_installed/tests/removed.fail.sh - delete mode 100644 linux_os/guide/system/selinux/package_libselinux_installed/tests/installed.pass.sh - delete mode 100644 linux_os/guide/system/software/integrity/software-integrity/aide/package_aide_installed/tests/installed.pass.sh - delete mode 100644 linux_os/guide/system/software/integrity/software-integrity/aide/package_aide_installed/tests/notinstalled.fail.sh - delete mode 100644 linux_os/guide/system/software/sudo/package_sudo_installed/tests/installed.pass.sh - delete mode 100644 linux_os/guide/system/software/sudo/package_sudo_installed/tests/removed.fail.sh - -diff --git a/linux_os/guide/services/ntp/package_chrony_installed/tests/installed.pass.sh b/linux_os/guide/services/ntp/package_chrony_installed/tests/installed.pass.sh -deleted file mode 100644 -index c692df2b282..00000000000 ---- a/linux_os/guide/services/ntp/package_chrony_installed/tests/installed.pass.sh -+++ /dev/null -@@ -1,4 +0,0 @@ --#!/bin/bash --# package = yum -- --yum install -y chrony -diff --git a/linux_os/guide/services/ntp/package_chrony_installed/tests/removed.fail.sh b/linux_os/guide/services/ntp/package_chrony_installed/tests/removed.fail.sh -deleted file mode 100644 -index eba551f99d4..00000000000 ---- a/linux_os/guide/services/ntp/package_chrony_installed/tests/removed.fail.sh -+++ /dev/null -@@ -1,3 +0,0 @@ --#!/bin/bash -- --yum remove -y chrony -diff --git a/linux_os/guide/system/auditing/package_audit_installed/tests/installed.pass.sh b/linux_os/guide/system/auditing/package_audit_installed/tests/installed.pass.sh -deleted file mode 100644 -index 1c19ce31a87..00000000000 ---- a/linux_os/guide/system/auditing/package_audit_installed/tests/installed.pass.sh -+++ /dev/null -@@ -1,4 +0,0 @@ --#!/bin/bash --# package = yum -- --yum install -y audit -diff --git a/linux_os/guide/system/auditing/package_audit_installed/tests/removed.fail.sh b/linux_os/guide/system/auditing/package_audit_installed/tests/removed.fail.sh -deleted file mode 100644 -index 45dd05a9638..00000000000 ---- a/linux_os/guide/system/auditing/package_audit_installed/tests/removed.fail.sh -+++ /dev/null -@@ -1,3 +0,0 @@ --#!/bin/bash -- --yum remove -y audit -diff --git a/linux_os/guide/system/logging/package_rsyslog_installed/tests/installed.pass.sh b/linux_os/guide/system/logging/package_rsyslog_installed/tests/installed.pass.sh -deleted file mode 100644 -index 6e4107fa3bd..00000000000 ---- a/linux_os/guide/system/logging/package_rsyslog_installed/tests/installed.pass.sh -+++ /dev/null -@@ -1,3 +0,0 @@ --#!/bin/bash --# packages = rsyslog -- -diff --git a/linux_os/guide/system/logging/package_rsyslog_installed/tests/notinstalled.fail.sh b/linux_os/guide/system/logging/package_rsyslog_installed/tests/notinstalled.fail.sh -deleted file mode 100644 -index f64bf1b340a..00000000000 ---- a/linux_os/guide/system/logging/package_rsyslog_installed/tests/notinstalled.fail.sh -+++ /dev/null -@@ -1,3 +0,0 @@ --#!/bin/bash -- --yum remove -y rsyslog -diff --git a/linux_os/guide/system/network/network-firewalld/firewalld_activation/package_firewalld_installed/tests/installed.pass.sh b/linux_os/guide/system/network/network-firewalld/firewalld_activation/package_firewalld_installed/tests/installed.pass.sh -deleted file mode 100644 -index 7a4748863bf..00000000000 ---- a/linux_os/guide/system/network/network-firewalld/firewalld_activation/package_firewalld_installed/tests/installed.pass.sh -+++ /dev/null -@@ -1,4 +0,0 @@ --#!/bin/bash --# package = yum -- --yum install -y firewalld -diff --git a/linux_os/guide/system/network/network-firewalld/firewalld_activation/package_firewalld_installed/tests/removed.fail.sh b/linux_os/guide/system/network/network-firewalld/firewalld_activation/package_firewalld_installed/tests/removed.fail.sh -deleted file mode 100644 -index a9107df7de8..00000000000 ---- a/linux_os/guide/system/network/network-firewalld/firewalld_activation/package_firewalld_installed/tests/removed.fail.sh -+++ /dev/null -@@ -1,3 +0,0 @@ --#!/bin/bash -- --yum remove -y firewalld -diff --git a/linux_os/guide/system/selinux/package_libselinux_installed/tests/installed.pass.sh b/linux_os/guide/system/selinux/package_libselinux_installed/tests/installed.pass.sh -deleted file mode 100644 -index 5d30cf77841..00000000000 ---- a/linux_os/guide/system/selinux/package_libselinux_installed/tests/installed.pass.sh -+++ /dev/null -@@ -1,4 +0,0 @@ --#!/bin/bash --# package = yum -- --yum install -y libselinux -diff --git a/linux_os/guide/system/software/integrity/software-integrity/aide/package_aide_installed/tests/installed.pass.sh b/linux_os/guide/system/software/integrity/software-integrity/aide/package_aide_installed/tests/installed.pass.sh -deleted file mode 100644 -index fa8b85b..0000000 ---- a/linux_os/guide/system/software/integrity/software-integrity/aide/package_aide_installed/tests/installed.pass.sh -+++ /dev/null -@@ -1,3 +0,0 @@ --#!/bin/bash --# packages = aide -- -diff --git a/linux_os/guide/system/software/integrity/software-integrity/aide/package_aide_installed/tests/notinstalled.fail.sh b/linux_os/guide/system/software/integrity/software-integrity/aide/package_aide_installed/tests/notinstalled.fail.sh -deleted file mode 100644 -index 75978b6..0000000 ---- a/linux_os/guide/system/software/integrity/software-integrity/aide/package_aide_installed/tests/notinstalled.fail.sh -+++ /dev/null -@@ -1,3 +0,0 @@ --#!/bin/bash -- --yum remove -y aide -diff --git a/linux_os/guide/system/software/sudo/package_sudo_installed/tests/installed.pass.sh b/linux_os/guide/system/software/sudo/package_sudo_installed/tests/installed.pass.sh -deleted file mode 100644 -index dafc6998a9a..00000000000 ---- a/linux_os/guide/system/software/sudo/package_sudo_installed/tests/installed.pass.sh -+++ /dev/null -@@ -1,4 +0,0 @@ --#!/bin/bash --# package = yum -- --yum install -y sudo -diff --git a/linux_os/guide/system/software/sudo/package_sudo_installed/tests/removed.fail.sh b/linux_os/guide/system/software/sudo/package_sudo_installed/tests/removed.fail.sh -deleted file mode 100644 -index d22b562c15e..00000000000 ---- a/linux_os/guide/system/software/sudo/package_sudo_installed/tests/removed.fail.sh -+++ /dev/null -@@ -1,3 +0,0 @@ --#!/bin/bash -- --rpm -e --nodeps sudo - -From 6c49dcb79aaf5b239f09ecfdac07b443736b5b5e Mon Sep 17 00:00:00 2001 -From: Alexander Scheel -Date: Tue, 6 Jul 2021 16:51:05 -0400 -Subject: [PATCH 04/19] Support templating test content - -We introduced a new method to the template builder in ssg/templates.py -for finding (and building) test content under shared/templates/... -This uses Jinja macros and has the full context of the template present, -so for instance, package_installed tests can use the correct package -name on the target platform. - -Signed-off-by: Alexander Scheel ---- - ssg/templates.py | 46 ++++++++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 46 insertions(+) - -diff --git a/ssg/templates.py b/ssg/templates.py -index 47a8a5eb852..0a39c3ba094 100644 ---- a/ssg/templates.py -+++ b/ssg/templates.py -@@ -145,6 +145,52 @@ def build_lang_file( - - return filled_template - -+ def get_all_tests( -+ self, rule_id, rule_template, local_env_yaml, platforms=None): -+ """ -+ Builds a dictionary of a test case path -> test case value mapping. -+ -+ Here, we want to know what the relative path on disk (under the tests/ -+ subdirectory) is (such as "installed.pass.sh"), along with the actual -+ contents of the test case. -+ -+ Presumably, we'll find the test case we want (all of them when -+ building a test case tarball) and write them to disk in the -+ appropriate location. -+ """ -+ template_name = rule_template['name'] -+ template_vars = rule_template['vars'] -+ -+ base_dir = os.path.abspath(os.path.join(self.templates_dir, template_name, "tests")) -+ results = dict() -+ -+ # If no test cases exist, return an empty dictionary. -+ if not os.path.exists(base_dir): -+ return results -+ -+ # Walk files; note that we don't need to do anything about directories -+ # as only files are recorded in the mapping; directories can be -+ # inferred from the path. -+ for dirpath, _, filenames in os.walk(base_dir): -+ if not filenames: -+ continue -+ -+ for filename in filenames: -+ # Relative path to the file becomes our results key. -+ absolute_path = os.path.abspath(os.path.join(dirpath, filename)) -+ relative_path = os.path.relpath(absolute_path, base_dir) -+ -+ # Load template parameters and apply it to the test case. -+ template_parameters = templates[template_name].preprocess(template_vars, "tests") -+ jinja_dict = ssg.utils.merge_dicts(local_env_yaml, template_parameters) -+ filled_template = ssg.jinja.process_file_with_macros( -+ absolute_path, jinja_dict) -+ -+ # Save the results under the relative path. -+ results[relative_path] = filled_template -+ -+ return results -+ - def build_lang( - self, rule_id, template_name, template_vars, lang, local_env_yaml, platforms=None): - """ - -From 4bd5061ffbb524b09975982fbd6dae26f35770c3 Mon Sep 17 00:00:00 2001 -From: Alexander Scheel -Date: Tue, 6 Jul 2021 16:53:44 -0400 -Subject: [PATCH 05/19] Add templated tests into templated directory - -This extends the existing templated directory generation to also include -tests under shared/templates/.../tests. The complicated portion is in -subdirectory handling: we need to ensure we create all necessary nested -subdirectories that are implicitly implied by the relative paths. This -is a shortcoming in the get_all_tests's return format. - -Signed-off-by: Alexander Scheel ---- - tests/ssg_test_suite/common.py | 43 ++++++++++++++++++++++++++++++++++ - 1 file changed, 43 insertions(+) - -diff --git a/tests/ssg_test_suite/common.py b/tests/ssg_test_suite/common.py -index 3dbeaf304a4..2bd4b2bd1c7 100644 ---- a/tests/ssg_test_suite/common.py -+++ b/tests/ssg_test_suite/common.py -@@ -21,6 +21,9 @@ - from ssg.rule_yaml import parse_prodtype - from ssg_test_suite.log import LogHelper - -+import ssg.templates -+ -+ - Scenario_run = namedtuple( - "Scenario_run", - ("rule_id", "script")) -@@ -39,6 +42,8 @@ - - _SHARED_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), '../shared')) - -+_SHARED_TEMPLATES = os.path.abspath(os.path.join(SSG_ROOT, 'shared/templates')) -+ - REMOTE_USER = "root" - REMOTE_USER_HOME_DIRECTORY = "/root" - REMOTE_TEST_SCENARIOS_DIRECTORY = os.path.join(REMOTE_USER_HOME_DIRECTORY, "ssgts") -@@ -278,6 +283,11 @@ def template_tests(product=None): - yaml_path = product_yaml_path(SSG_ROOT, product) - product_yaml = load_product_yaml(yaml_path) - -+ # Initialize a mock template_builder. -+ empty = "/ssgts/empty/placeholder" -+ template_builder = ssg.templates.Builder(product_yaml, empty, -+ _SHARED_TEMPLATES, empty, empty) -+ - # Below we could run into a DocumentationNotComplete error. However, - # because the test suite isn't executed in the context of a particular - # build (though, ideally it would be linked), we may not know exactly -@@ -299,8 +309,11 @@ def template_tests(product=None): - - # Load rule content in our environment. We use this to satisfy - # some implied properties that might be used in the test suite. -+ # Make sure we normalize to a specific product as well so that -+ # when we load templated content it is correct. - rule_path = get_rule_dir_yaml(dirpath) - rule = RuleYAML.from_yaml(rule_path, product_yaml) -+ rule.normalize(product) - - # Note that most places would check prodtype, but we don't care - # about that here: if the rule is available to the product, we -@@ -320,6 +333,36 @@ def template_tests(product=None): - dest_path = os.path.join(tmpdir, rule.id_) - os.mkdir(dest_path) - -+ # The priority order is rule-specific tests over templated tests. -+ # That is, for any test under rule_id/tests with a name matching a -+ # test under shared/templates//tests/, the former -+ # will preferred. This means we need to process templates first, -+ # so they'll be overwritten later if necessary. -+ if rule.template: -+ templated_tests = template_builder.get_all_tests( -+ rule.id_, rule.template, local_env_yaml) -+ -+ for relative_path in templated_tests: -+ output_path = os.path.join(dest_path, relative_path) -+ -+ # If there's a separator in the file name, it means we -+ # have nested directories to deal with. -+ if os.path.sep in relative_path: -+ parts = os.path.split(relative_path)[:-1] -+ for subdir_index in range(len(parts)): -+ # We need to expand all directories in correct -+ # order, preserving any previous directories (as -+ # they're nested). Use the star operator to splat -+ # array parts into arguments to os.path.join(...). -+ new_directory = os.path.join(dest_path, *parts[:subdir_index]) -+ os.mkdir(new_directory) -+ -+ # Write out the test content to the desired location on -+ # disk. -+ with open(output_path, 'w') as output_fp: -+ test_content = templated_tests[relative_path] -+ print(test_content, file=output_fp) -+ - # Walk the test directory, writing all tests into the output - # directory, recursively. - tests_dir_path = os.path.join(dirpath, "tests") - -From 013b247c1be897bd12ae4cf2bc2443279b1a52c9 Mon Sep 17 00:00:00 2001 -From: Alexander Scheel -Date: Wed, 7 Jul 2021 07:00:37 -0400 -Subject: [PATCH 06/19] Teach iterate_over_rules about templated tests - -There are two parts to rule-based test execution: - - 1. Building the tarball of tests and shipping it over to the remote - machine. - 2. Iterating over these tests to see which scenarios are actually - applicable and any other metadata actions we need to take. - -In particular, item two is controlled by iterate_over_rules. Here we -need to: - - 1. Teach it about the templating system. - 2. Switch it from returning a list of test cases to a dictionary - mapping test case -> contents. This allows us to contain the - templating system to common.py only and not leak it into other parts - of the test suite. - 3. Do a little bit of refactoring to contain shared code between - iterate_over_rules and template_tests. - -Signed-off-by: Alexander Scheel ---- - tests/ssg_test_suite/common.py | 146 ++++++++++++++++++++++++--------- - 1 file changed, 108 insertions(+), 38 deletions(-) - -diff --git a/tests/ssg_test_suite/common.py b/tests/ssg_test_suite/common.py -index 2bd4b2bd1c7..b357f816027 100644 ---- a/tests/ssg_test_suite/common.py -+++ b/tests/ssg_test_suite/common.py -@@ -264,6 +264,62 @@ def _rel_abs_path(current_path, base_path): - return os.path.relpath(current_path, base_path) - - -+def get_product_context(product=None): -+ """ -+ Returns a product YAML context if any product is specified. Hard-coded to -+ assume a debug build. -+ """ -+ # Load product's YAML file if present. This will allow us to parse -+ # tests in the context of the product we're executing under. -+ product_yaml = dict() -+ if product: -+ yaml_path = product_yaml_path(SSG_ROOT, product) -+ product_yaml = load_product_yaml(yaml_path) -+ -+ # We could run into a DocumentationNotComplete error when loading a -+ # rule's YAML contents. However, because the test suite isn't executed -+ # in the context of a particular build (though, ideally it would be -+ # linked), we may not know exactly whether the top-level rule/profile -+ # we're testing is actually completed. Thus, forcibly set the required -+ # property to bypass this error. -+ product_yaml['cmake_build_type'] = 'Debug' -+ -+ return product_yaml -+ -+ -+def load_rule_and_env(rule_dir_path, env_yaml, product=None): -+ """ -+ Loads a rule and returns the combination of the RuleYAML class and -+ the corresponding local environment for that rule. -+ """ -+ -+ # First build the path to the rule.yml file -+ rule_path = get_rule_dir_yaml(rule_dir_path) -+ -+ # Load rule content in our environment. We use this to satisfy -+ # some implied properties that might be used in the test suite. -+ # Make sure we normalize to a specific product as well so that -+ # when we load templated content it is correct. -+ rule = RuleYAML.from_yaml(rule_path, env_yaml) -+ rule.normalize(product) -+ -+ # Note that most places would check prodtype, but we don't care -+ # about that here: if the rule is available to the product, we -+ # load and parse it anyways as we have no knowledge of the -+ # top-level profile or rule passed into the test suite. -+ prodtypes = parse_prodtype(rule.prodtype) -+ -+ # Our local copy of env_yaml needs some properties from rule.yml -+ # for completeness. -+ local_env_yaml = dict() -+ local_env_yaml.update(env_yaml) -+ local_env_yaml['rule_id'] = rule.id_ -+ local_env_yaml['rule_title'] = rule.title -+ local_env_yaml['products'] = prodtypes -+ -+ return rule, local_env_yaml -+ -+ - def template_tests(product=None): - """ - Create a temporary directory with test cases parsed via jinja using -@@ -276,26 +332,14 @@ def template_tests(product=None): - # it on success. Wrap in a try/except block and reraise the original - # exception after removing the temporary directory. - try: -- # Load product's YAML file if present. This will allow us to parse -- # tests in the context of the product we're executing under. -- product_yaml = dict() -- if product: -- yaml_path = product_yaml_path(SSG_ROOT, product) -- product_yaml = load_product_yaml(yaml_path) -+ # Load the product context we're executing under, if any. -+ product_yaml = get_product_context(product) - - # Initialize a mock template_builder. - empty = "/ssgts/empty/placeholder" - template_builder = ssg.templates.Builder(product_yaml, empty, - _SHARED_TEMPLATES, empty, empty) - -- # Below we could run into a DocumentationNotComplete error. However, -- # because the test suite isn't executed in the context of a particular -- # build (though, ideally it would be linked), we may not know exactly -- # whether the top-level rule/profile we're testing is actually -- # completed. Thus, forcibly set the required property to bypass this -- # error. -- product_yaml['cmake_build_type'] = 'Debug' -- - # Note that we're not exactly copying 1-for-1 the contents of the - # directory structure into the temporary one. Instead we want a - # flattened mapping with all rules in a single top-level directory -@@ -307,27 +351,8 @@ def template_tests(product=None): - if "tests" not in dirnames or not is_rule_dir(dirpath): - continue - -- # Load rule content in our environment. We use this to satisfy -- # some implied properties that might be used in the test suite. -- # Make sure we normalize to a specific product as well so that -- # when we load templated content it is correct. -- rule_path = get_rule_dir_yaml(dirpath) -- rule = RuleYAML.from_yaml(rule_path, product_yaml) -- rule.normalize(product) -- -- # Note that most places would check prodtype, but we don't care -- # about that here: if the rule is available to the product, we -- # load and parse it anyways as we have no knowledge of the -- # top-level profile or rule passed into the test suite. -- prodtypes = parse_prodtype(rule.prodtype) -- -- # Our local copy of env_yaml needs some properties from rule.yml -- # for completeness. -- local_env_yaml = dict() -- local_env_yaml.update(product_yaml) -- local_env_yaml['rule_id'] = rule.id_ -- local_env_yaml['rule_title'] = rule.title -- local_env_yaml['products'] = prodtypes -+ # Load the rule and its environment -+ rule, local_env_yaml = load_rule_and_env(dirpath, product_yaml, product) - - # Create the destination directory. - dest_path = os.path.join(tmpdir, rule.id_) -@@ -473,21 +498,66 @@ def iterate_over_rules(product=None): - id -- full rule id as it is present in datastream - short_id -- short rule ID, the same as basename of the directory - containing the test scenarios in Bash -- files -- list of executable .sh files in the "tests" directory -+ files -- list of executable .sh files in the uploaded tarball - """ -+ -+ # Here we need to perform some magic to handle parsing the rule (from a -+ # product perspective) and loading any templated tests. In particular, -+ # identifying which tests to potentially run involves invoking the -+ # templating engine. -+ # -+ # Begin by loading context about our execution environment, if any. -+ product_yaml = get_product_context(product) -+ -+ # Initialize a mock template_builder. -+ empty = "/ssgts/empty/placeholder" -+ template_builder = ssg.templates.Builder(product_yaml, empty, -+ _SHARED_TEMPLATES, empty, empty) -+ - for dirpath, dirnames, filenames in walk_through_benchmark_dirs(product): - if "rule.yml" in filenames and "tests" in dirnames: - short_rule_id = os.path.basename(dirpath) -+ -+ # Load the rule itself to check for a template. -+ rule, local_env_yaml = load_rule_and_env(dirpath, product_yaml, product) -+ -+ # All tests is a mapping from path (in the tarball) to contents -+ # of the test case. This is necessary because later code (which -+ # attempts to parse headers from the test case) don't have easy -+ # access to templated content. By reading it and returning it -+ # here, we can save later code from having to understand the -+ # templating system. -+ all_tests = dict() -+ -+ # Start -+ if rule.template: -+ templated_tests = template_builder.get_all_tests( -+ rule.id_, rule.template, local_env_yaml) -+ all_tests.update(templated_tests) -+ -+ # Add additional tests from the local rule directory. Note that, -+ # like the behavior in template_tests, this will overwrite any -+ # templated tests with the same file name. - tests_dir = os.path.join(dirpath, "tests") - tests_dir_files = os.listdir(tests_dir) -+ for test_case in tests_dir_files: -+ test_path = os.path.join(tests_dir, test_case) -+ if os.path.isdir(test_path): -+ continue -+ -+ with open(test_path) as fp: -+ all_tests[test_case] = fp.read() -+ - # Filter out everything except the shell test scenarios. - # Other files in rule directories are editor swap files - # or other content than a test case. -- scripts = filter(lambda x: x.endswith(".sh"), tests_dir_files) -+ allowed_scripts = filter(lambda x: x.endswith(".sh"), all_tests) -+ content_mapping = {x: all_tests[x] for x in allowed_scripts} -+ - full_rule_id = OSCAP_RULE + short_rule_id - result = Rule( - directory=tests_dir, id=full_rule_id, short_id=short_rule_id, -- files=scripts) -+ files=content_mapping) - yield result - - - -From 84014297a6881610e682ec7d54eca658b6ff127a Mon Sep 17 00:00:00 2001 -From: Alexander Scheel -Date: Wed, 7 Jul 2021 07:05:13 -0400 -Subject: [PATCH 07/19] Update rule execution to support templated tests - -We needed to make a few small changes to rule-based test execution in -order for it to correctly understand templated tests: - - 1. Product selection (from the CLI) needs to be passed down into the - iterate_over_rules helper function. - 2. Scenario loading needs to have knowledge of the returned test data. - 3. Parsing of parameters needs to occur from the returned test data - rather than attempting to re-read it ourselves. - -My assumption is that this will suffice for combined, since that method -of operation uses this method internally. - -Signed-off-by: Alexander Scheel ---- - tests/ssg_test_suite/rule.py | 30 +++++++++++++++--------------- - 1 file changed, 15 insertions(+), 15 deletions(-) - -diff --git a/tests/ssg_test_suite/rule.py b/tests/ssg_test_suite/rule.py -index 9f390749077..5ad7eb8ed27 100644 ---- a/tests/ssg_test_suite/rule.py -+++ b/tests/ssg_test_suite/rule.py -@@ -24,7 +24,7 @@ - - - Scenario = collections.namedtuple( -- "Scenario", ["script", "context", "script_params"]) -+ "Scenario", ["script", "context", "script_params", "contents"]) - - - def get_viable_profiles(selected_profiles, datastream, benchmark, script=None): -@@ -250,7 +250,7 @@ def _prepare_environment(self, scenarios_by_rule): - - def _get_rules_to_test(self, target): - rules_to_test = [] -- for rule in common.iterate_over_rules(): -+ for rule in common.iterate_over_rules(self.test_env.product): - if not self._rule_should_be_tested(rule, target): - continue - if not xml_operations.find_rule_in_benchmark( -@@ -300,7 +300,7 @@ def _modify_parameters(self, script, params): - .format(OSCAP_PROFILE_ALL_ID, script)) - return params - -- def _parse_parameters(self, script): -+ def _parse_parameters(self, script_content): - """Parse parameters from script header""" - params = {'profiles': [], - 'templates': [], -@@ -309,16 +309,15 @@ def _parse_parameters(self, script): - 'remediation': ['all'], - 'variables': [], - } -- with open(script, 'r') as script_file: -- script_content = script_file.read() -- for parameter in params: -- found = re.search(r'^# {0} = (.*)$'.format(parameter), -- script_content, -- re.MULTILINE) -- if found is None: -- continue -- splitted = found.group(1).split(',') -- params[parameter] = [value.strip() for value in splitted] -+ -+ for parameter in params: -+ found = re.search(r'^# {0} = (.*)$'.format(parameter), -+ script_content, re.MULTILINE) -+ if found is None: -+ continue -+ splitted = found.group(1).split(',') -+ params[parameter] = [value.strip() for value in splitted] -+ - return params - - def _get_scenarios(self, rule_dir, scripts, scenarios_regex, benchmark_cpes): -@@ -331,6 +330,7 @@ def _get_scenarios(self, rule_dir, scripts, scenarios_regex, benchmark_cpes): - - scenarios = [] - for script in scripts: -+ script_contents = scripts[script] - if scenarios_regex is not None: - if scenarios_pattern.match(script) is None: - logging.debug("Skipping script %s - it did not match " -@@ -338,10 +338,10 @@ def _get_scenarios(self, rule_dir, scripts, scenarios_regex, benchmark_cpes): - continue - script_context = _get_script_context(script) - if script_context is not None: -- script_params = self._parse_parameters(os.path.join(rule_dir, script)) -+ script_params = self._parse_parameters(script_contents) - script_params = self._modify_parameters(script, script_params) - if common.matches_platform(script_params["platform"], benchmark_cpes): -- scenarios += [Scenario(script, script_context, script_params)] -+ scenarios += [Scenario(script, script_context, script_params, script_contents)] - else: - logging.warning("Script %s is not applicable on given platform" % script) - - -From c763af671037cb9bfd5bfd5bd24f5efe9e4fc4c1 Mon Sep 17 00:00:00 2001 -From: Alexander Scheel -Date: Wed, 7 Jul 2021 07:22:47 -0400 -Subject: [PATCH 08/19] Make sure we read all test contents with Jinja - -Signed-off-by: Alexander Scheel ---- - tests/ssg_test_suite/common.py | 3 +-- - 1 file changed, 1 insertion(+), 2 deletions(-) - -diff --git a/tests/ssg_test_suite/common.py b/tests/ssg_test_suite/common.py -index b357f816027..865c8a8b988 100644 ---- a/tests/ssg_test_suite/common.py -+++ b/tests/ssg_test_suite/common.py -@@ -545,8 +545,7 @@ def iterate_over_rules(product=None): - if os.path.isdir(test_path): - continue - -- with open(test_path) as fp: -- all_tests[test_case] = fp.read() -+ all_tests[test_case] = process_file(test_path, local_env_yaml) - - # Filter out everything except the shell test scenarios. - # Other files in rule directories are editor swap files - -From 1234addaa4f776e3c814192c0aaf8f2137a74481 Mon Sep 17 00:00:00 2001 -From: Alexander Scheel -Date: Thu, 8 Jul 2021 07:44:16 -0400 -Subject: [PATCH 09/19] Fix pep8 issues - -Signed-off-by: Alexander Scheel ---- - ssg/templates.py | 5 +++-- - tests/ssg_test_suite/common.py | 5 +++-- - 2 files changed, 6 insertions(+), 4 deletions(-) - -diff --git a/ssg/templates.py b/ssg/templates.py -index 0a39c3ba094..818b1f79f68 100644 ---- a/ssg/templates.py -+++ b/ssg/templates.py -@@ -201,7 +201,8 @@ def build_lang( - return - - filled_template = self.build_lang_file(rule_id, template_name, -- template_vars, lang, local_env_yaml) -+ template_vars, lang, -+ local_env_yaml) - - ext = lang_to_ext_map[lang] - output_file_name = rule_id + ext -@@ -331,7 +332,7 @@ def get_lang_for_rule(self, rule_id, rule_title, template, language): - local_env_yaml["products"] = self.env_yaml["product"] - - return self.build_lang_file(rule_id, template_name, template_vars, -- language, local_env_yaml) -+ language, local_env_yaml) - - def build_extra_ovals(self): - declaration_path = os.path.join(self.templates_dir, "extra_ovals.yml") -diff --git a/tests/ssg_test_suite/common.py b/tests/ssg_test_suite/common.py -index 865c8a8b988..977e9f52c24 100644 ---- a/tests/ssg_test_suite/common.py -+++ b/tests/ssg_test_suite/common.py -@@ -338,7 +338,8 @@ def template_tests(product=None): - # Initialize a mock template_builder. - empty = "/ssgts/empty/placeholder" - template_builder = ssg.templates.Builder(product_yaml, empty, -- _SHARED_TEMPLATES, empty, empty) -+ _SHARED_TEMPLATES, empty, -+ empty) - - # Note that we're not exactly copying 1-for-1 the contents of the - # directory structure into the temporary one. Instead we want a -@@ -512,7 +513,7 @@ def iterate_over_rules(product=None): - # Initialize a mock template_builder. - empty = "/ssgts/empty/placeholder" - template_builder = ssg.templates.Builder(product_yaml, empty, -- _SHARED_TEMPLATES, empty, empty) -+ _SHARED_TEMPLATES, empty, empty) - - for dirpath, dirnames, filenames in walk_through_benchmark_dirs(product): - if "rule.yml" in filenames and "tests" in dirnames: - -From 81fcdf3e18f83da44b697ef7f47759a8eadd9854 Mon Sep 17 00:00:00 2001 -From: Alexander Scheel -Date: Wed, 14 Jul 2021 08:06:57 -0400 -Subject: [PATCH 10/19] Split template_tests into template_rule_tests - -Signed-off-by: Alexander Scheel ---- - tests/ssg_test_suite/common.py | 146 +++++++++++++++++---------------- - 1 file changed, 77 insertions(+), 69 deletions(-) - -diff --git a/tests/ssg_test_suite/common.py b/tests/ssg_test_suite/common.py -index 977e9f52c24..4e77bd888fe 100644 ---- a/tests/ssg_test_suite/common.py -+++ b/tests/ssg_test_suite/common.py -@@ -320,6 +320,82 @@ def load_rule_and_env(rule_dir_path, env_yaml, product=None): - return rule, local_env_yaml - - -+def template_rule_tests(product, product_yaml, template_builder, tmpdir, dirpath): -+ """ -+ For a given rule directory, templates all contained tests into the output -+ (tmpdir) directory. -+ """ -+ -+ # Load the rule and its environment -+ rule, local_env_yaml = load_rule_and_env(dirpath, product_yaml, product) -+ -+ # Create the destination directory. -+ dest_path = os.path.join(tmpdir, rule.id_) -+ os.mkdir(dest_path) -+ -+ # The priority order is rule-specific tests over templated tests. -+ # That is, for any test under rule_id/tests with a name matching a -+ # test under shared/templates//tests/, the former -+ # will preferred. This means we need to process templates first, -+ # so they'll be overwritten later if necessary. -+ if rule.template: -+ templated_tests = template_builder.get_all_tests(rule.id_, rule.template, -+ local_env_yaml) -+ -+ for relative_path in templated_tests: -+ output_path = os.path.join(dest_path, relative_path) -+ -+ # If there's a separator in the file name, it means we -+ # have nested directories to deal with. -+ if os.path.sep in relative_path: -+ parts = os.path.split(relative_path)[:-1] -+ for subdir_index in range(len(parts)): -+ # We need to expand all directories in correct -+ # order, preserving any previous directories (as -+ # they're nested). Use the star operator to splat -+ # array parts into arguments to os.path.join(...). -+ new_directory = os.path.join(dest_path, *parts[:subdir_index]) -+ os.mkdir(new_directory) -+ -+ # Write out the test content to the desired location on -+ # disk. -+ with open(output_path, 'w') as output_fp: -+ test_content = templated_tests[relative_path] -+ print(test_content, file=output_fp) -+ -+ # Walk the test directory, writing all tests into the output -+ # directory, recursively. -+ tests_dir_path = os.path.join(dirpath, "tests") -+ tests_dir_path = os.path.abspath(tests_dir_path) -+ for dirpath, dirnames, filenames in os.walk(tests_dir_path): -+ for dirname in dirnames: -+ # We want to recreate the correct path under the temporary -+ # directory. Resolve it to a relative path from the tests/ -+ # directory. -+ dir_path = _rel_abs_path(os.path.join(dirpath, dirname), tests_dir_path) -+ assert '../' not in dir_path -+ tmp_dir_path = os.path.join(dest_path, dir_path) -+ os.mkdir(tmp_dir_path) -+ -+ for filename in filenames: -+ # We want to recreate the correct path under the temporary -+ # directory. Resolve it to a relative path from the tests/ -+ # directory. Assumption: directories should be created -+ # prior to recursing into them, so we don't need to handle -+ # if a file's parent directory doesn't yet exist under the -+ # destination. -+ src_test_path = os.path.join(dirpath, filename) -+ rel_test_path = _rel_abs_path(src_test_path, tests_dir_path) -+ dest_test_path = os.path.join(dest_path, rel_test_path) -+ -+ # Rather than performing an OS-level copy, we need to -+ # first parse the test with jinja and then write it back -+ # out to the destination. -+ parsed_test = process_file(src_test_path, local_env_yaml) -+ with open(dest_test_path, 'w') as output_fp: -+ print(parsed_test, file=output_fp) -+ -+ - def template_tests(product=None): - """ - Create a temporary directory with test cases parsed via jinja using -@@ -352,75 +428,7 @@ def template_tests(product=None): - if "tests" not in dirnames or not is_rule_dir(dirpath): - continue - -- # Load the rule and its environment -- rule, local_env_yaml = load_rule_and_env(dirpath, product_yaml, product) -- -- # Create the destination directory. -- dest_path = os.path.join(tmpdir, rule.id_) -- os.mkdir(dest_path) -- -- # The priority order is rule-specific tests over templated tests. -- # That is, for any test under rule_id/tests with a name matching a -- # test under shared/templates//tests/, the former -- # will preferred. This means we need to process templates first, -- # so they'll be overwritten later if necessary. -- if rule.template: -- templated_tests = template_builder.get_all_tests( -- rule.id_, rule.template, local_env_yaml) -- -- for relative_path in templated_tests: -- output_path = os.path.join(dest_path, relative_path) -- -- # If there's a separator in the file name, it means we -- # have nested directories to deal with. -- if os.path.sep in relative_path: -- parts = os.path.split(relative_path)[:-1] -- for subdir_index in range(len(parts)): -- # We need to expand all directories in correct -- # order, preserving any previous directories (as -- # they're nested). Use the star operator to splat -- # array parts into arguments to os.path.join(...). -- new_directory = os.path.join(dest_path, *parts[:subdir_index]) -- os.mkdir(new_directory) -- -- # Write out the test content to the desired location on -- # disk. -- with open(output_path, 'w') as output_fp: -- test_content = templated_tests[relative_path] -- print(test_content, file=output_fp) -- -- # Walk the test directory, writing all tests into the output -- # directory, recursively. -- tests_dir_path = os.path.join(dirpath, "tests") -- tests_dir_path = os.path.abspath(tests_dir_path) -- for dirpath, dirnames, filenames in os.walk(tests_dir_path): -- for dirname in dirnames: -- # We want to recreate the correct path under the temporary -- # directory. Resolve it to a relative path from the tests/ -- # directory. -- dir_path = _rel_abs_path(os.path.join(dirpath, dirname), tests_dir_path) -- assert '../' not in dir_path -- tmp_dir_path = os.path.join(dest_path, dir_path) -- os.mkdir(tmp_dir_path) -- -- for filename in filenames: -- # We want to recreate the correct path under the temporary -- # directory. Resolve it to a relative path from the tests/ -- # directory. Assumption: directories should be created -- # prior to recursing into them, so we don't need to handle -- # if a file's parent directory doesn't yet exist under the -- # destination. -- src_test_path = os.path.join(dirpath, filename) -- rel_test_path = _rel_abs_path(src_test_path, tests_dir_path) -- dest_test_path = os.path.join(dest_path, rel_test_path) -- -- # Rather than performing an OS-level copy, we need to -- # first parse the test with jinja and then write it back -- # out to the destination. -- parsed_test = process_file(src_test_path, local_env_yaml) -- with open(dest_test_path, 'w') as output_fp: -- print(parsed_test, file=output_fp) -- -+ template_rule_tests(product, product_yaml, template_builder, tmpdir, dirpath) - except Exception as exp: - shutil.rmtree(tmpdir, ignore_errors=True) - raise exp - -From 9bd6bf1bb5a51a69dc30d4d6eaa2e159c2ac0446 Mon Sep 17 00:00:00 2001 -From: Alexander Scheel -Date: Wed, 14 Jul 2021 08:23:27 -0400 -Subject: [PATCH 11/19] Refactor template_rule_tests into write_* helpers - -Signed-off-by: Alexander Scheel ---- - tests/ssg_test_suite/common.py | 93 ++++++++++++++++++---------------- - 1 file changed, 50 insertions(+), 43 deletions(-) - -diff --git a/tests/ssg_test_suite/common.py b/tests/ssg_test_suite/common.py -index 4e77bd888fe..1f3cad807e6 100644 ---- a/tests/ssg_test_suite/common.py -+++ b/tests/ssg_test_suite/common.py -@@ -320,49 +320,27 @@ def load_rule_and_env(rule_dir_path, env_yaml, product=None): - return rule, local_env_yaml - - --def template_rule_tests(product, product_yaml, template_builder, tmpdir, dirpath): -- """ -- For a given rule directory, templates all contained tests into the output -- (tmpdir) directory. -- """ -- -- # Load the rule and its environment -- rule, local_env_yaml = load_rule_and_env(dirpath, product_yaml, product) -- -- # Create the destination directory. -- dest_path = os.path.join(tmpdir, rule.id_) -- os.mkdir(dest_path) -- -- # The priority order is rule-specific tests over templated tests. -- # That is, for any test under rule_id/tests with a name matching a -- # test under shared/templates//tests/, the former -- # will preferred. This means we need to process templates first, -- # so they'll be overwritten later if necessary. -- if rule.template: -- templated_tests = template_builder.get_all_tests(rule.id_, rule.template, -- local_env_yaml) -- -- for relative_path in templated_tests: -- output_path = os.path.join(dest_path, relative_path) -- -- # If there's a separator in the file name, it means we -- # have nested directories to deal with. -- if os.path.sep in relative_path: -- parts = os.path.split(relative_path)[:-1] -- for subdir_index in range(len(parts)): -- # We need to expand all directories in correct -- # order, preserving any previous directories (as -- # they're nested). Use the star operator to splat -- # array parts into arguments to os.path.join(...). -- new_directory = os.path.join(dest_path, *parts[:subdir_index]) -- os.mkdir(new_directory) -- -- # Write out the test content to the desired location on -- # disk. -- with open(output_path, 'w') as output_fp: -- test_content = templated_tests[relative_path] -- print(test_content, file=output_fp) -- -+def write_rule_templated_tests(dest_path, relative_path, test_content): -+ output_path = os.path.join(dest_path, relative_path) -+ -+ # If there's a separator in the file name, it means we have nested -+ # directories to deal with. -+ if os.path.sep in relative_path: -+ parts = os.path.split(relative_path)[:-1] -+ for subdir_index in range(len(parts)): -+ # We need to expand all directories in the correct order, -+ # preserving any previous directories (as they're nested). -+ # Use the star operator to splat array parts into arguments -+ # to os.path.join(...). -+ new_directory = os.path.join(dest_path, *parts[:subdir_index]) -+ os.mkdir(new_directory) -+ -+ # Write out the test content to the desired location on disk. -+ with open(output_path, 'w') as output_fp: -+ print(test_content, file=output_fp) -+ -+ -+def write_rule_dir_tests(local_env_yaml, dest_path, dirpath): - # Walk the test directory, writing all tests into the output - # directory, recursively. - tests_dir_path = os.path.join(dirpath, "tests") -@@ -396,6 +374,35 @@ def template_rule_tests(product, product_yaml, template_builder, tmpdir, dirpath - print(parsed_test, file=output_fp) - - -+def template_rule_tests(product, product_yaml, template_builder, tmpdir, dirpath): -+ """ -+ For a given rule directory, templates all contained tests into the output -+ (tmpdir) directory. -+ """ -+ -+ # Load the rule and its environment -+ rule, local_env_yaml = load_rule_and_env(dirpath, product_yaml, product) -+ -+ # Create the destination directory. -+ dest_path = os.path.join(tmpdir, rule.id_) -+ os.mkdir(dest_path) -+ -+ # The priority order is rule-specific tests over templated tests. -+ # That is, for any test under rule_id/tests with a name matching a -+ # test under shared/templates//tests/, the former -+ # will preferred. This means we need to process templates first, -+ # so they'll be overwritten later if necessary. -+ if rule.template: -+ templated_tests = template_builder.get_all_tests(rule.id_, rule.template, -+ local_env_yaml) -+ -+ for relative_path in templated_tests: -+ test_content = templated_tests[relative_path] -+ write_rule_templated_tests(dest_path, relative_path, test_content) -+ -+ write_rule_dir_tests(local_env_yaml, dest_path, dirpath) -+ -+ - def template_tests(product=None): - """ - Create a temporary directory with test cases parsed via jinja using - -From 5b74ff0aa8ef1b085ef9d6c0148283835a2917f8 Mon Sep 17 00:00:00 2001 -From: Alexander Scheel -Date: Wed, 14 Jul 2021 08:24:10 -0400 -Subject: [PATCH 12/19] Remove unnecessary assertion - -Signed-off-by: Alexander Scheel ---- - tests/ssg_test_suite/common.py | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/tests/ssg_test_suite/common.py b/tests/ssg_test_suite/common.py -index 1f3cad807e6..9c232dcad02 100644 ---- a/tests/ssg_test_suite/common.py -+++ b/tests/ssg_test_suite/common.py -@@ -351,7 +351,6 @@ def write_rule_dir_tests(local_env_yaml, dest_path, dirpath): - # directory. Resolve it to a relative path from the tests/ - # directory. - dir_path = _rel_abs_path(os.path.join(dirpath, dirname), tests_dir_path) -- assert '../' not in dir_path - tmp_dir_path = os.path.join(dest_path, dir_path) - os.mkdir(tmp_dir_path) - - -From 0ab1b95de66d60cf135c985697d6269464777de9 Mon Sep 17 00:00:00 2001 -From: Alexander Scheel -Date: Wed, 14 Jul 2021 08:25:26 -0400 -Subject: [PATCH 13/19] Remove unnecessary _rel_abs_path - -As pointed out by Matej, the extra abspath is unnecessary prior to -calling relpath. Remove our helper and switch to calling relpath -directly. - -Signed-off-by: Alexander Scheel ---- - tests/ssg_test_suite/common.py | 15 ++------------- - 1 file changed, 2 insertions(+), 13 deletions(-) - -diff --git a/tests/ssg_test_suite/common.py b/tests/ssg_test_suite/common.py -index 9c232dcad02..04117359203 100644 ---- a/tests/ssg_test_suite/common.py -+++ b/tests/ssg_test_suite/common.py -@@ -253,17 +253,6 @@ def _make_file_root_owned(tarinfo): - return tarinfo - - --def _rel_abs_path(current_path, base_path): -- """ -- Return the value of the current path, relative to the base path, but -- resolving paths absolutely first. This helps when walking a nested -- directory structure and want to get the subtree relative to the original -- path -- """ -- tmp_path = os.path.abspath(current_path) -- return os.path.relpath(current_path, base_path) -- -- - def get_product_context(product=None): - """ - Returns a product YAML context if any product is specified. Hard-coded to -@@ -350,7 +339,7 @@ def write_rule_dir_tests(local_env_yaml, dest_path, dirpath): - # We want to recreate the correct path under the temporary - # directory. Resolve it to a relative path from the tests/ - # directory. -- dir_path = _rel_abs_path(os.path.join(dirpath, dirname), tests_dir_path) -+ dir_path = os.path.relpath(os.path.join(dirpath, dirname), tests_dir_path) - tmp_dir_path = os.path.join(dest_path, dir_path) - os.mkdir(tmp_dir_path) - -@@ -362,7 +351,7 @@ def write_rule_dir_tests(local_env_yaml, dest_path, dirpath): - # if a file's parent directory doesn't yet exist under the - # destination. - src_test_path = os.path.join(dirpath, filename) -- rel_test_path = _rel_abs_path(src_test_path, tests_dir_path) -+ rel_test_path = os.path.relpath(src_test_path, tests_dir_path) - dest_test_path = os.path.join(dest_path, rel_test_path) - - # Rather than performing an OS-level copy, we need to - -From 0d2dadf00682efba465b5378803a68893dc62038 Mon Sep 17 00:00:00 2001 -From: Alexander Scheel -Date: Wed, 14 Jul 2021 14:23:59 -0400 -Subject: [PATCH 14/19] Only template rules with variables - -The audit_rules_privileged_commands_unix2_chkpwd rule lacks variables on -most products, in addition to its limited prodtype. Because the existing -test harness lacks understanding of prodtype (for including rules in the -tarball), we don't check it yet either. This causes issues when the -template is present but has empty variables on the particular product -(such as when this rule is executed under Ubuntu) - -Ultimately we should probably check prodtype in the future, but it -outside the scope of this PR. - -Signed-off-by: Alexander Scheel ---- - tests/ssg_test_suite/common.py | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/tests/ssg_test_suite/common.py b/tests/ssg_test_suite/common.py -index 04117359203..44105e3b7ae 100644 ---- a/tests/ssg_test_suite/common.py -+++ b/tests/ssg_test_suite/common.py -@@ -380,7 +380,7 @@ def template_rule_tests(product, product_yaml, template_builder, tmpdir, dirpath - # test under shared/templates//tests/, the former - # will preferred. This means we need to process templates first, - # so they'll be overwritten later if necessary. -- if rule.template: -+ if rule.template and rule.template['vars']: - templated_tests = template_builder.get_all_tests(rule.id_, rule.template, - local_env_yaml) - -@@ -534,7 +534,7 @@ def iterate_over_rules(product=None): - all_tests = dict() - - # Start -- if rule.template: -+ if rule.template and rule.template['vars']: - templated_tests = template_builder.get_all_tests( - rule.id_, rule.template, local_env_yaml) - all_tests.update(templated_tests) - -From e00262230d86b39d77dc1d75ffce5c048d5a4652 Mon Sep 17 00:00:00 2001 -From: Alexander Scheel -Date: Mon, 19 Jul 2021 09:06:02 -0400 -Subject: [PATCH 15/19] Document new JINJA/Template testing scenarios - -Signed-off-by: Alexander Scheel ---- - tests/README.md | 32 ++++++++++++++++++++++++++++++++ - 1 file changed, 32 insertions(+) - -diff --git a/tests/README.md b/tests/README.md -index 6b5b4497baf..0b3dfabc6f5 100644 ---- a/tests/README.md -+++ b/tests/README.md -@@ -147,6 +147,7 @@ the rule that `oscap` should return when the rule is evaluated. - very important to keep this naming form. - - For example: -+ - * `something.pass.sh`: Success scenario - script is expected to prepare machine - in such way that the rule is expected to pass. - * `something.fail.sh`: Fail scenario - script is expected to break machine so -@@ -200,6 +201,37 @@ Using `platform` and `variables` metadata: - echo "KerberosAuthentication $auth_enabled" >> /etc/ssh/sshd_config - ``` - -+### Augmenting using Jinja macros -+ -+Each scenario script is processed under the same jinja context as the -+corresponding OVAL and remediation content. This means that product-specific -+information is known to the scenario scripts at upload time (for example, -+`{{{ grub2_boot_path }}}`), allowing them to work across products. This -+also means Jinja macros such as `{{{ bash_package_install(...) }}}` work to -+install/remove specific packages during the course of testing (such as, if -+it is desired to both install and remove a package in the same scenario for -+the `package_installed` rules). -+ -+Note that this does have some limitations: knowledge of the profile (and the -+variables it has and the values they take) is still not provided to the test -+scenario. The above `# profiles` or `# variables` directives will still have -+to be used to add any profile-specific information. -+ -+### Augmenting using `shared/templates` -+ -+Additionally, we have enabled test scenarios located under the templated -+directory, `shared/templates/.../tests`. Unlike with build-time content, -+`tests` does not need to be located in the template's manifest (at -+`template.yml`). Instead, SSGTS will automatically parse each rule and -+prefer rule-directory-specific test scenarios over any templated scenarios -+that the rule uses. (E.g., if `installed.pass.sh` is present in the -+template `package_installed` and in the `tests/` subdirectory of the rule -+directory, the latter takes precedence over the former). -+ -+In addition to the Jinja context described above, the contents of the template -+variables (after processing in `template.py`) are also available to the -+test scenario. This enables template-specific checking. -+ - ## Example of adding new test scenarios - - Let's add test scenarios for rule `accounts_password_minlen_login_defs`. - -From c696ebf0001bd6bcced40aafea58cfbc6b870cc1 Mon Sep 17 00:00:00 2001 -From: Alexander Scheel -Date: Tue, 27 Jul 2021 08:17:47 -0400 -Subject: [PATCH 16/19] Correctly handle generation of templated tests - -When rules lacked tests inside the rule directory but had them via a -template, SSGTS would ignore them and claim the rule wasn't found. Fix -this bug to allow template-only tests. - -Signed-off-by: Alexander Scheel ---- - tests/ssg_test_suite/common.py | 30 ++++++++++++++++++++++-------- - 1 file changed, 22 insertions(+), 8 deletions(-) - -diff --git a/tests/ssg_test_suite/common.py b/tests/ssg_test_suite/common.py -index 44105e3b7ae..0cb5451e31b 100644 ---- a/tests/ssg_test_suite/common.py -+++ b/tests/ssg_test_suite/common.py -@@ -334,6 +334,13 @@ def write_rule_dir_tests(local_env_yaml, dest_path, dirpath): - # directory, recursively. - tests_dir_path = os.path.join(dirpath, "tests") - tests_dir_path = os.path.abspath(tests_dir_path) -+ -+ # Note that the tests/ directory may not always exist any more. In -+ # particular, when a rule uses a template, tests may be present there -+ # but not present in the actual rule directory. -+ if not os.path.exists(tests_dir_path): -+ return -+ - for dirpath, dirnames, filenames in os.walk(tests_dir_path): - for dirname in dirnames: - # We want to recreate the correct path under the temporary -@@ -420,7 +427,7 @@ def template_tests(product=None): - # /group_a/rule_a/tests/something.pass.sh -> /rule_a/something.pass.sh - for dirpath, dirnames, _ in walk_through_benchmark_dirs(product): - # Skip anything that isn't obviously a rule. -- if "tests" not in dirnames or not is_rule_dir(dirpath): -+ if not is_rule_dir(dirpath): - continue - - template_rule_tests(product, product_yaml, template_builder, tmpdir, dirpath) -@@ -519,7 +526,7 @@ def iterate_over_rules(product=None): - _SHARED_TEMPLATES, empty, empty) - - for dirpath, dirnames, filenames in walk_through_benchmark_dirs(product): -- if "rule.yml" in filenames and "tests" in dirnames: -+ if is_rule_dir(dirpath): - short_rule_id = os.path.basename(dirpath) - - # Load the rule itself to check for a template. -@@ -543,13 +550,14 @@ def iterate_over_rules(product=None): - # like the behavior in template_tests, this will overwrite any - # templated tests with the same file name. - tests_dir = os.path.join(dirpath, "tests") -- tests_dir_files = os.listdir(tests_dir) -- for test_case in tests_dir_files: -- test_path = os.path.join(tests_dir, test_case) -- if os.path.isdir(test_path): -- continue -+ if os.path.exists(tests_dir): -+ tests_dir_files = os.listdir(tests_dir) -+ for test_case in tests_dir_files: -+ test_path = os.path.join(tests_dir, test_case) -+ if os.path.isdir(test_path): -+ continue - -- all_tests[test_case] = process_file(test_path, local_env_yaml) -+ all_tests[test_case] = process_file(test_path, local_env_yaml) - - # Filter out everything except the shell test scenarios. - # Other files in rule directories are editor swap files -@@ -557,6 +565,12 @@ def iterate_over_rules(product=None): - allowed_scripts = filter(lambda x: x.endswith(".sh"), all_tests) - content_mapping = {x: all_tests[x] for x in allowed_scripts} - -+ # Skip any rules that lack any content. This ensures that if we -+ # end up with rules with a template lacking tests and without any -+ # rule directory tests, we don't include the empty rule here. -+ if not content_mapping: -+ continue -+ - full_rule_id = OSCAP_RULE + short_rule_id - result = Rule( - directory=tests_dir, id=full_rule_id, short_id=short_rule_id, - -From 0661e505c1294a7d5bf6a59813afabff48f31b4c Mon Sep 17 00:00:00 2001 -From: Alexander Scheel -Date: Tue, 27 Jul 2021 12:23:25 -0400 -Subject: [PATCH 17/19] Template tests with matching prodtype - -When prodtype is known to the test system, we can skip templating any -rule that has a prodtype that doesn't match. This saves time during -building the bundle and restricts us to only writing tests we care -about and can potentially use. - -Note that there might be a mismatch between (datastream, rule): if a -rule is updated on disk but the datastream isn't regenerated, you might -run into weird edge cases where this either over- or under-provisions, -but the same issue would likely occur previously. - -Signed-off-by: Alexander Scheel ---- - tests/ssg_test_suite/common.py | 22 ++++++++++++++++++++++ - 1 file changed, 22 insertions(+) - -diff --git a/tests/ssg_test_suite/common.py b/tests/ssg_test_suite/common.py -index 0cb5451e31b..946d7152af1 100644 ---- a/tests/ssg_test_suite/common.py -+++ b/tests/ssg_test_suite/common.py -@@ -378,6 +378,17 @@ def template_rule_tests(product, product_yaml, template_builder, tmpdir, dirpath - # Load the rule and its environment - rule, local_env_yaml = load_rule_and_env(dirpath, product_yaml, product) - -+ # Before we get too far, we wish to search the rule YAML to see if -+ # it is applicable to the current product. If we have a product -+ # and the rule isn't applicable for the product, there's no point -+ # in continuing with the rest of the loading. This should speed up -+ # the loading of the templated tests. Note that we've already -+ # parsed the prodtype into local_env_yaml -+ if product and local_env_yaml['products']: -+ prodtypes = local_env_yaml['products'] -+ if "all" not in prodtypes and product not in prodtypes: -+ return -+ - # Create the destination directory. - dest_path = os.path.join(tmpdir, rule.id_) - os.mkdir(dest_path) -@@ -532,6 +543,17 @@ def iterate_over_rules(product=None): - # Load the rule itself to check for a template. - rule, local_env_yaml = load_rule_and_env(dirpath, product_yaml, product) - -+ # Before we get too far, we wish to search the rule YAML to see if -+ # it is applicable to the current product. If we have a product -+ # and the rule isn't applicable for the product, there's no point -+ # in continuing with the rest of the loading. This should speed up -+ # the loading of the templated tests. Note that we've already -+ # parsed the prodtype into local_env_yaml -+ if product and local_env_yaml['products']: -+ prodtypes = local_env_yaml['products'] -+ if "all" not in prodtypes and product not in prodtypes: -+ continue -+ - # All tests is a mapping from path (in the tarball) to contents - # of the test case. This is necessary because later code (which - # attempts to parse headers from the test case) don't have easy - -From f1c0bbd7fb8af5f0af96bf3d442166724fcc7f94 Mon Sep 17 00:00:00 2001 -From: Alexander Scheel -Date: Tue, 27 Jul 2021 14:51:53 -0400 -Subject: [PATCH 18/19] Use process_file_with_macros rather than process_file - -Signed-off-by: Alexander Scheel ---- - tests/ssg_test_suite/common.py | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/tests/ssg_test_suite/common.py b/tests/ssg_test_suite/common.py -index 946d7152af1..291e0f5c9ad 100644 ---- a/tests/ssg_test_suite/common.py -+++ b/tests/ssg_test_suite/common.py -@@ -15,7 +15,7 @@ - from ssg.constants import MULTI_PLATFORM_MAPPING - from ssg.constants import FULL_NAME_TO_PRODUCT_MAPPING - from ssg.constants import OSCAP_RULE --from ssg.jinja import process_file -+from ssg.jinja import process_file_with_macros - from ssg.products import product_yaml_path, load_product_yaml - from ssg.rules import get_rule_dir_yaml, is_rule_dir - from ssg.rule_yaml import parse_prodtype -@@ -364,7 +364,7 @@ def write_rule_dir_tests(local_env_yaml, dest_path, dirpath): - # Rather than performing an OS-level copy, we need to - # first parse the test with jinja and then write it back - # out to the destination. -- parsed_test = process_file(src_test_path, local_env_yaml) -+ parsed_test = process_file_with_macros(src_test_path, local_env_yaml) - with open(dest_test_path, 'w') as output_fp: - print(parsed_test, file=output_fp) - -@@ -579,7 +579,7 @@ def iterate_over_rules(product=None): - if os.path.isdir(test_path): - continue - -- all_tests[test_case] = process_file(test_path, local_env_yaml) -+ all_tests[test_case] = process_file_with_macros(test_path, local_env_yaml) - - # Filter out everything except the shell test scenarios. - # Other files in rule directories are editor swap files - -From 0f22db3a49bf8ccb14e0ea52e7884a525fa37f6f Mon Sep 17 00:00:00 2001 -From: Alexander Scheel -Date: Thu, 29 Jul 2021 07:45:41 -0400 -Subject: [PATCH 19/19] Add an option to not run duplicate templated tests - -Signed-off-by: Alexander Scheel ---- - tests/ssg_test_suite/combined.py | 4 ++-- - tests/ssg_test_suite/common.py | 9 ++++++--- - tests/ssg_test_suite/rule.py | 19 +++++++++++++++---- - tests/test_suite.py | 10 ++++++++++ - 4 files changed, 33 insertions(+), 9 deletions(-) - -diff --git a/tests/ssg_test_suite/combined.py b/tests/ssg_test_suite/combined.py -index 05270353235..4ef8898f602 100644 ---- a/tests/ssg_test_suite/combined.py -+++ b/tests/ssg_test_suite/combined.py -@@ -39,10 +39,10 @@ def __init__(self, test_env): - self.results = list() - self._current_result = None - -- def _rule_should_be_tested(self, rule, rules_to_be_tested): -+ def _rule_should_be_tested(self, rule, rules_to_be_tested, tested_templates): - if rule.short_id not in rules_to_be_tested: - return False -- return True -+ return not self._rule_template_been_tested(rule, tested_templates) - - def _modify_parameters(self, script, params): - # If there is no profiles metadata in a script we will use -diff --git a/tests/ssg_test_suite/common.py b/tests/ssg_test_suite/common.py -index 291e0f5c9ad..132a004323f 100644 ---- a/tests/ssg_test_suite/common.py -+++ b/tests/ssg_test_suite/common.py -@@ -31,7 +31,7 @@ - "Scenario_conditions", - ("backend", "scanning_mode", "remediated_by", "datastream")) - Rule = namedtuple( -- "Rule", ["directory", "id", "short_id", "files"]) -+ "Rule", ["directory", "id", "short_id", "files", "template"]) - - SSG_ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..')) - -@@ -542,6 +542,7 @@ def iterate_over_rules(product=None): - - # Load the rule itself to check for a template. - rule, local_env_yaml = load_rule_and_env(dirpath, product_yaml, product) -+ template_name = None - - # Before we get too far, we wish to search the rule YAML to see if - # it is applicable to the current product. If we have a product -@@ -562,11 +563,13 @@ def iterate_over_rules(product=None): - # templating system. - all_tests = dict() - -- # Start -+ # Start by checking for templating tests and provision them if -+ # present. - if rule.template and rule.template['vars']: - templated_tests = template_builder.get_all_tests( - rule.id_, rule.template, local_env_yaml) - all_tests.update(templated_tests) -+ template_name = rule.template['name'] - - # Add additional tests from the local rule directory. Note that, - # like the behavior in template_tests, this will overwrite any -@@ -596,7 +599,7 @@ def iterate_over_rules(product=None): - full_rule_id = OSCAP_RULE + short_rule_id - result = Rule( - directory=tests_dir, id=full_rule_id, short_id=short_rule_id, -- files=content_mapping) -+ files=content_mapping, template=template_name) - yield result - - -diff --git a/tests/ssg_test_suite/rule.py b/tests/ssg_test_suite/rule.py -index 5ad7eb8ed27..b707326179f 100644 ---- a/tests/ssg_test_suite/rule.py -+++ b/tests/ssg_test_suite/rule.py -@@ -211,13 +211,23 @@ def _final_scan_went_ok(self, runner, rule_id): - logging.error(msg) - return success - -- def _rule_should_be_tested(self, rule, rules_to_be_tested): -+ def _rule_template_been_tested(self, rule, tested_templates): -+ if rule.template is None: -+ return False -+ if self.test_env.duplicate_templates: -+ return False -+ if rule.template in tested_templates: -+ return True -+ tested_templates.add(rule.template) -+ return False -+ -+ def _rule_should_be_tested(self, rule, rules_to_be_tested, tested_templates): - if 'ALL' in rules_to_be_tested: - # don't select rules that are not present in benchmark - if not xml_operations.find_rule_in_benchmark( - self.datastream, self.benchmark_id, rule.id): - return False -- return True -+ return not self._rule_template_been_tested(rule, tested_templates) - else: - for rule_to_be_tested in rules_to_be_tested: - # we check for a substring -@@ -226,7 +236,7 @@ def _rule_should_be_tested(self, rule, rules_to_be_tested): - else: - pattern = OSCAP_RULE + rule_to_be_tested - if fnmatch.fnmatch(rule.id, pattern): -- return True -+ return not self._rule_template_been_tested(rule, tested_templates) - return False - - def _ensure_package_present_for_all_scenarios(self, scenarios_by_rule): -@@ -250,8 +260,9 @@ def _prepare_environment(self, scenarios_by_rule): - - def _get_rules_to_test(self, target): - rules_to_test = [] -+ tested_templates = set() - for rule in common.iterate_over_rules(self.test_env.product): -- if not self._rule_should_be_tested(rule, target): -+ if not self._rule_should_be_tested(rule, target, tested_templates): - continue - if not xml_operations.find_rule_in_benchmark( - self.datastream, self.benchmark_id, rule.id): -diff --git a/tests/test_suite.py b/tests/test_suite.py -index 00da15329a5..445a53f41d8 100755 ---- a/tests/test_suite.py -+++ b/tests/test_suite.py -@@ -116,6 +116,15 @@ def parse_args(): - "or remediation done by using remediation roles " - "that are saved to disk beforehand.") - -+ common_parser.add_argument( -+ "--duplicate-templates", -+ dest="duplicate_templates", -+ default=False, -+ action="store_true", -+ help="Execute all tests even for tests using shared templates; " -+ "otherwise, executes one test per template type" -+ ) -+ - subparsers = parser.add_subparsers(dest="subparser_name", - help="Subcommands: profile, rule, combined") - subparsers.required = True -@@ -345,6 +354,7 @@ def normalize_passed_arguments(options): - # Add in product to the test environment. This is independent of actual - # test environment type so we do it after creation. - options.test_env.product = options.product -+ options.test_env.duplicate_templates = options.duplicate_templates - - try: - benchmark_cpes = xml_operations.benchmark_get_applicable_platforms( diff --git a/SOURCES/scap-security-guide-0.1.58-tests_for_playbooks_that_change_banners-PR_7376.patch b/SOURCES/scap-security-guide-0.1.58-tests_for_playbooks_that_change_banners-PR_7376.patch deleted file mode 100644 index ddfd484..0000000 --- a/SOURCES/scap-security-guide-0.1.58-tests_for_playbooks_that_change_banners-PR_7376.patch +++ /dev/null @@ -1,524 +0,0 @@ -From bf018e9f8327b231b967db8ec74fabf01802b6a8 Mon Sep 17 00:00:00 2001 -From: Watson Sato -Date: Wed, 11 Aug 2021 09:45:04 +0200 -Subject: [PATCH 1/3] Add test for ansible files removed and readded - -Check if any playbook removes a file and then add it back again. -The file removal is based on the 'file' module with 'state: absent', and -the reintroduction of the file is based on 'lineinfile', 'blockinfile' -and 'copy' modules. ---- - CMakeLists.txt | 2 + - tests/CMakeLists.txt | 8 ++ - tests/test_ansible_file_removed_and_added.py | 97 ++++++++++++++++++++ - 3 files changed, 107 insertions(+) - create mode 100644 tests/test_ansible_file_removed_and_added.py - -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 330b869d0f9..e41f2caa630 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -129,6 +129,7 @@ find_python_module(jinja2 REQUIRED) - find_python_module(pytest) - find_python_module(pytest_cov) - find_python_module(json2html) -+find_python_module(yamlpath) - - # sphinx documentation requirements - find_python_module(sphinx) -@@ -231,6 +232,7 @@ message(STATUS "python pytest module (optional): ${PY_PYTEST}") - message(STATUS "ansible-playbook module (optional): ${ANSIBLE_PLAYBOOK_EXECUTABLE}") - message(STATUS "ansible-lint module (optional): ${ANSIBLE_LINT_EXECUTABLE}") - message(STATUS "yamllint module (optional): ${YAMLLINT_EXECUTABLE}") -+message(STATUS "yamlpath module (optional): ${PY_YAMLPATH}") - message(STATUS "BATS framework (optional): ${BATS_EXECUTABLE}") - message(STATUS "python sphinx module (optional): ${PY_SPHINX}") - message(STATUS "python sphinxcontrib.autojinja module (optional): ${PY_SPHINXCONTRIB.AUTOJINJA}") -diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt -index 3e2d8a4ec31..739cc124035 100644 ---- a/tests/CMakeLists.txt -+++ b/tests/CMakeLists.txt -@@ -121,3 +121,11 @@ add_test( - ) - set_tests_properties("fix_rules-sort_subkeys" PROPERTIES LABELS quick) - set_tests_properties("fix_rules-sort_subkeys" PROPERTIES DEPENDS "test-rule-dir-json") -+ -+if (PY_YAMLPATH) -+ add_test( -+ NAME "ansible-file-removed-and-added" -+ COMMAND env "PYTHONPATH=$ENV{PYTHONPATH}" "${PYTHON_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/test_ansible_file_removed_and_added.py" --ansible_dir "${CMAKE_BINARY_DIR}/ansible" -+ ) -+ set_tests_properties("fix_rules-sort_subkeys" PROPERTIES LABELS quick) -+endif() -diff --git a/tests/test_ansible_file_removed_and_added.py b/tests/test_ansible_file_removed_and_added.py -new file mode 100644 -index 00000000000..23f6f888bda ---- /dev/null -+++ b/tests/test_ansible_file_removed_and_added.py -@@ -0,0 +1,97 @@ -+#!/usr/bin/python3 -+ -+import argparse -+import os -+import sys -+from types import SimpleNamespace -+from yamlpath import Processor -+from yamlpath import YAMLPath -+from yamlpath.common import Parsers -+from yamlpath.exceptions import YAMLPathException -+from yamlpath.wrappers import ConsolePrinter -+ -+ -+def parse_command_line_args(): -+ parser = argparse.ArgumentParser( -+ description="Checks if an Ansible Playbook removes a file and then adds it again.") -+ parser.add_argument("--ansible_dir", required=True, -+ help="Directory containing Ansible Playbooks") -+ args = parser.parse_args() -+ return args -+ -+ -+def check_playbook_file_removed_and_added(playbook_path): -+ playbook_ok = True -+ -+ yaml_parser = Parsers.get_yaml_editor() -+ -+ logging_args = SimpleNamespace(quiet=False, verbose=False, debug=False) -+ log = ConsolePrinter(logging_args) -+ -+ # Find every path removed by a file Task (also matches tasks within blocks) -+ files_absent_string = "tasks.**.file[state=absent][parent()].path" -+ files_absent_yamlpath = YAMLPath(files_absent_string) -+ path_editing_tasks_yamlpath = "" -+ -+ log.info("Info: Evaluating playbook '{}'".format(playbook_path)) -+ (yaml_data, doc_loaded) = Parsers.get_yaml_data(yaml_parser, log, playbook_path) -+ if not doc_loaded: -+ # There was an issue loading the file; an error message has already been -+ # printed via ConsolePrinter. -+ return False -+ -+ processor = Processor(log, yaml_data) -+ try: -+ for node in processor.get_nodes(files_absent_yamlpath, mustexist=False): -+ path = str(node) -+ # 'node' is a NodeCoords. -+ if path == 'None': -+ continue -+ elif "{{" in path: -+ # Identified path is a Jinja expression, unfortunately there is no easy way to get -+ # the actual path without making this test very complicated -+ continue -+ -+ # Check if this paths is used in any of the following ansible modules -+ ansible_modules = ["lineinfile", "blockinfile", "copy"] -+ path_editing_tasks_string = "tasks.**.[.=~/{modules}/][*='{path}'][parent()].name" -+ path_editing_tasks_yamlpath = YAMLPath(path_editing_tasks_string.format( -+ modules="|".join(ansible_modules), -+ path=node) -+ ) -+ for task in processor.get_nodes(path_editing_tasks_yamlpath, mustexist=False): -+ log.info("Error: Task '{}' manipulates a file that is removed by another task" -+ .format(task)) -+ playbook_ok = False -+ except YAMLPathException as ex: -+ no_file_msg = ("Cannot add PathSegmentTypes.TRAVERSE subreference to lists at 'None' " -+ "in '{}'.") -+ if str(ex) == no_file_msg.format(files_absent_string): -+ log.info("Info: Playbook {} has no 'file' tasks.".format(playbook_path)) -+ elif path_editing_tasks_yamlpath and str(ex) == no_file_msg.format( -+ path_editing_tasks_yamlpath): -+ log.info("Info: Playbook {} has no '{}' tasks.".format( -+ playbook_path, " ".join(ansible_modules))) -+ else: -+ log.info("Error: {}.".format(ex)) -+ -+ return playbook_ok -+ -+ -+def main(): -+ args = parse_command_line_args() -+ -+ all_playbooks_ok = True -+ for dir_item in os.listdir(args.ansible_dir): -+ if dir_item.endswith(".yml"): -+ playbook_path = os.path.join(args.ansible_dir, dir_item) -+ -+ if not check_playbook_file_removed_and_added(playbook_path): -+ all_playbooks_ok = False -+ -+ if not all_playbooks_ok: -+ sys.exit(1) -+ -+ -+if __name__ == "__main__": -+ main() - -From e6d727762ba446cad94f1e002fa7a7fef0f1a4cb Mon Sep 17 00:00:00 2001 -From: Watson Sato -Date: Wed, 11 Aug 2021 09:48:14 +0200 -Subject: [PATCH 2/3] Unit tests the function for file removed and added - -Add a unit test for the core function that checks if any playbook -removes a file and then reintroduces it back. ---- - tests/CMakeLists.txt | 6 ++ - .../file_block_removed_and_added.yml | 69 +++++++++++++++++++ - .../file_not_removed_and_added.yml | 49 +++++++++++++ - .../file_removed_and_added.yml | 62 +++++++++++++++++ - .../file_removed_and_not_added.yml | 46 +++++++++++++ - ...t_check_playbook_file_removed_and_added.py | 39 +++++++++++ - 6 files changed, 271 insertions(+) - create mode 100644 tests/ansible_file_removed_and_added/file_block_removed_and_added.yml - create mode 100644 tests/ansible_file_removed_and_added/file_not_removed_and_added.yml - create mode 100644 tests/ansible_file_removed_and_added/file_removed_and_added.yml - create mode 100644 tests/ansible_file_removed_and_added/file_removed_and_not_added.yml - create mode 100644 tests/test_check_playbook_file_removed_and_added.py - -diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt -index 739cc124035..000a1b1385d 100644 ---- a/tests/CMakeLists.txt -+++ b/tests/CMakeLists.txt -@@ -123,6 +123,12 @@ set_tests_properties("fix_rules-sort_subkeys" PROPERTIES LABELS quick) - set_tests_properties("fix_rules-sort_subkeys" PROPERTIES DEPENDS "test-rule-dir-json") - - if (PY_YAMLPATH) -+ if (PY_PYTEST) -+ add_test( -+ NAME "test-function-check_playbook_file_removed_and_added" -+ COMMAND "${PYTHON_EXECUTABLE}" -m pytest ${PYTEST_COVERAGE_OPTIONS} "${CMAKE_CURRENT_SOURCE_DIR}/test_check_playbook_file_removed_and_added.py" -+ ) -+ endif() - add_test( - NAME "ansible-file-removed-and-added" - COMMAND env "PYTHONPATH=$ENV{PYTHONPATH}" "${PYTHON_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/test_ansible_file_removed_and_added.py" --ansible_dir "${CMAKE_BINARY_DIR}/ansible" -diff --git a/tests/ansible_file_removed_and_added/file_block_removed_and_added.yml b/tests/ansible_file_removed_and_added/file_block_removed_and_added.yml -new file mode 100644 -index 00000000000..8863b333129 ---- /dev/null -+++ b/tests/ansible_file_removed_and_added/file_block_removed_and_added.yml -@@ -0,0 +1,69 @@ -+--- -+ -+- hosts: all -+ vars: -+ var_system_crypto_policy: !!str FUTURE -+ var_sudo_logfile: !!str /var/log/sudo.log -+ -+ tasks: -+ - name: Modify the System Login Banner - add correct banner -+ lineinfile: -+ dest: /etc/issue -+ line: '{{ login_banner_text | regex_replace("^\^(.*)\$$", "\1") | regex_replace("^\((.*)\|.*\)$", -+ "\1") | regex_replace("\[\\s\\n\]\+"," ") | regex_replace("\(\?:\[\\n\]\+\|\(\?:\\\\n\)\+\)", -+ "\n") | regex_replace("\\", "") | wordwrap() }}' -+ create: true -+ when: ansible_virtualization_type not in ["docker", "lxc", "openvz", "podman", "container"] -+ tags: -+ - banner_etc_issue -+ - low_complexity -+ - medium_disruption -+ - medium_severity -+ - no_reboot_needed -+ - unknown_strategy -+ -+ - name: Test for existence /etc/issue -+ stat: -+ path: /etc/issue -+ register: file_exists -+ tags: -+ - configure_strategy -+ - file_permissions_etc_issue -+ - low_complexity -+ - low_disruption -+ - medium_severity -+ - no_reboot_needed -+ -+ - name: Ensure permission 0644 on /etc/issue -+ file: -+ path: /etc/issue -+ mode: '0644' -+ when: file_exists.stat is defined and file_exists.stat.exists -+ tags: -+ - configure_strategy -+ - file_permissions_etc_issue -+ - low_complexity -+ - low_disruption -+ - medium_severity -+ - no_reboot_needed -+ -+ - block: -+ -+ - name: Remove Rsh Trust Files -+ file: -+ path: /root/shosts.equiv -+ state: absent -+ -+ - name: Add line to /root/shosts.equiv -+ lineinfile: -+ dest: /root/shosts.equiv -+ line: 'test host' -+ create: true -+ tags: -+ - high_severity -+ - low_complexity -+ - low_disruption -+ - no_reboot_needed -+ - no_rsh_trust_files -+ - restrict_strategy -+ -diff --git a/tests/ansible_file_removed_and_added/file_not_removed_and_added.yml b/tests/ansible_file_removed_and_added/file_not_removed_and_added.yml -new file mode 100644 -index 00000000000..3d3e53b958f ---- /dev/null -+++ b/tests/ansible_file_removed_and_added/file_not_removed_and_added.yml -@@ -0,0 +1,49 @@ -+--- -+ -+- hosts: all -+ vars: -+ var_system_crypto_policy: !!str FUTURE -+ var_sudo_logfile: !!str /var/log/sudo.log -+ -+ tasks: -+ - name: Modify the System Login Banner - add correct banner -+ lineinfile: -+ dest: /etc/issue -+ line: '{{ login_banner_text | regex_replace("^\^(.*)\$$", "\1") | regex_replace("^\((.*)\|.*\)$", -+ "\1") | regex_replace("\[\\s\\n\]\+"," ") | regex_replace("\(\?:\[\\n\]\+\|\(\?:\\\\n\)\+\)", -+ "\n") | regex_replace("\\", "") | wordwrap() }}' -+ create: true -+ when: ansible_virtualization_type not in ["docker", "lxc", "openvz", "podman", "container"] -+ tags: -+ - banner_etc_issue -+ - low_complexity -+ - medium_disruption -+ - medium_severity -+ - no_reboot_needed -+ - unknown_strategy -+ -+ - name: Test for existence /etc/issue -+ stat: -+ path: /etc/issue -+ register: file_exists -+ tags: -+ - configure_strategy -+ - file_permissions_etc_issue -+ - low_complexity -+ - low_disruption -+ - medium_severity -+ - no_reboot_needed -+ -+ - name: Ensure permission 0644 on /etc/issue -+ file: -+ path: /etc/issue -+ mode: '0644' -+ when: file_exists.stat is defined and file_exists.stat.exists -+ tags: -+ - configure_strategy -+ - file_permissions_etc_issue -+ - low_complexity -+ - low_disruption -+ - medium_severity -+ - no_reboot_needed -+ -diff --git a/tests/ansible_file_removed_and_added/file_removed_and_added.yml b/tests/ansible_file_removed_and_added/file_removed_and_added.yml -new file mode 100644 -index 00000000000..a44c39a9db2 ---- /dev/null -+++ b/tests/ansible_file_removed_and_added/file_removed_and_added.yml -@@ -0,0 +1,62 @@ -+--- -+ -+- hosts: all -+ vars: -+ var_system_crypto_policy: !!str FUTURE -+ var_sudo_logfile: !!str /var/log/sudo.log -+ -+ tasks: -+ - name: Modify the System Login Banner - remove incorrect banner -+ file: -+ state: absent -+ path: /etc/issue -+ when: ansible_virtualization_type not in ["docker", "lxc", "openvz", "podman", "container"] -+ tags: -+ - banner_etc_issue -+ - low_complexity -+ - medium_disruption -+ - medium_severity -+ - no_reboot_needed -+ - unknown_strategy -+ -+ - name: Modify the System Login Banner - add correct banner -+ lineinfile: -+ dest: /etc/issue -+ line: '{{ login_banner_text | regex_replace("^\^(.*)\$$", "\1") | regex_replace("^\((.*)\|.*\)$", -+ "\1") | regex_replace("\[\\s\\n\]\+"," ") | regex_replace("\(\?:\[\\n\]\+\|\(\?:\\\\n\)\+\)", -+ "\n") | regex_replace("\\", "") | wordwrap() }}' -+ create: true -+ when: ansible_virtualization_type not in ["docker", "lxc", "openvz", "podman", "container"] -+ tags: -+ - banner_etc_issue -+ - low_complexity -+ - medium_disruption -+ - medium_severity -+ - no_reboot_needed -+ - unknown_strategy -+ -+ - name: Test for existence /etc/issue -+ stat: -+ path: /etc/issue -+ register: file_exists -+ tags: -+ - configure_strategy -+ - file_permissions_etc_issue -+ - low_complexity -+ - low_disruption -+ - medium_severity -+ - no_reboot_needed -+ -+ - name: Ensure permission 0644 on /etc/issue -+ file: -+ path: /etc/issue -+ mode: '0644' -+ when: file_exists.stat is defined and file_exists.stat.exists -+ tags: -+ - configure_strategy -+ - file_permissions_etc_issue -+ - low_complexity -+ - low_disruption -+ - medium_severity -+ - no_reboot_needed -+ -diff --git a/tests/ansible_file_removed_and_added/file_removed_and_not_added.yml b/tests/ansible_file_removed_and_added/file_removed_and_not_added.yml -new file mode 100644 -index 00000000000..08cda7e5063 ---- /dev/null -+++ b/tests/ansible_file_removed_and_added/file_removed_and_not_added.yml -@@ -0,0 +1,46 @@ -+--- -+ -+- hosts: all -+ vars: -+ var_system_crypto_policy: !!str FUTURE -+ var_sudo_logfile: !!str /var/log/sudo.log -+ -+ tasks: -+ - name: Modify the System Login Banner - remove incorrect banner -+ file: -+ state: absent -+ path: /etc/issue -+ when: ansible_virtualization_type not in ["docker", "lxc", "openvz", "podman", "container"] -+ tags: -+ - banner_etc_issue -+ - low_complexity -+ - medium_disruption -+ - medium_severity -+ - no_reboot_needed -+ - unknown_strategy -+ -+ - name: Test for existence /etc/issue -+ stat: -+ path: /etc/issue -+ register: file_exists -+ tags: -+ - configure_strategy -+ - file_permissions_etc_issue -+ - low_complexity -+ - low_disruption -+ - medium_severity -+ - no_reboot_needed -+ -+ - name: Ensure permission 0644 on /etc/issue -+ file: -+ path: /etc/issue -+ mode: '0644' -+ when: file_exists.stat is defined and file_exists.stat.exists -+ tags: -+ - configure_strategy -+ - file_permissions_etc_issue -+ - low_complexity -+ - low_disruption -+ - medium_severity -+ - no_reboot_needed -+ -diff --git a/tests/test_check_playbook_file_removed_and_added.py b/tests/test_check_playbook_file_removed_and_added.py -new file mode 100644 -index 00000000000..181bb14ed46 ---- /dev/null -+++ b/tests/test_check_playbook_file_removed_and_added.py -@@ -0,0 +1,39 @@ -+import os -+import pytest -+ -+from .test_ansible_file_removed_and_added import check_playbook_file_removed_and_added -+ -+ -+def test_file_removed_and_added(): -+ playbook_path = os.path.join(os.path.dirname(__file__), -+ "ansible_file_removed_and_added", -+ "file_removed_and_added.yml") -+ assert not check_playbook_file_removed_and_added(playbook_path) -+ -+ -+def test_file_removed_and_not_added(): -+ playbook_path = os.path.join(os.path.dirname(__file__), -+ "ansible_file_removed_and_added", -+ "file_removed_and_not_added.yml") -+ assert check_playbook_file_removed_and_added(playbook_path) -+ -+ -+def test_file_not_removed_and_added(): -+ playbook_path = os.path.join(os.path.dirname(__file__), -+ "ansible_file_removed_and_added", -+ "file_not_removed_and_added.yml") -+ assert check_playbook_file_removed_and_added(playbook_path) -+ -+ -+def test_file_block_removed_and_added(): -+ playbook_path = os.path.join(os.path.dirname(__file__), -+ "ansible_file_removed_and_added", -+ "file_block_removed_and_added.yml") -+ assert not check_playbook_file_removed_and_added(playbook_path) -+ -+ -+def test_file_block_removed_and_not_added(): -+ playbook_path = os.path.join(os.path.dirname(__file__), -+ "ansible_file_removed_and_added", -+ "file_block_removed_and_not_added.yml") -+ assert check_playbook_file_removed_and_added(playbook_path) - -From 741ec823ac39341f8aa0649031b72d2ac36e8a64 Mon Sep 17 00:00:00 2001 -From: Watson Sato -Date: Thu, 12 Aug 2021 10:36:47 +0200 -Subject: [PATCH 3/3] Mention Ansible static yamlpath test in docs - ---- - .../developer/02_building_complianceascode.md | 14 ++++++++++++++ - 1 file changed, 14 insertions(+) - -diff --git a/docs/manual/developer/02_building_complianceascode.md b/docs/manual/developer/02_building_complianceascode.md -index d536df0a259..87469bf5f9b 100644 ---- a/docs/manual/developer/02_building_complianceascode.md -+++ b/docs/manual/developer/02_building_complianceascode.md -@@ -64,6 +64,20 @@ yum install yamllint ansible-lint - apt-get install yamllint ansible-lint - ``` - -+### Static Ansible Playbooks tests -+ -+Install `yamlpath` and `pytest` to run tests cases that analyse the Ansible -+Playbooks' yaml nodes. -+```bash -+pip3 install yamlpath -+ -+# Fedora/RHEL -+yum install python3-pytest -+ -+# Ubuntu/Debian -+apt-get install python-pytest -+``` -+ - ### Ninja (Faster Builds) - - Install the `ninja` build system if you want to use it instead of diff --git a/SOURCES/scap-security-guide-0.1.58-update_rhel7_stig-PR_7217.patch b/SOURCES/scap-security-guide-0.1.58-update_rhel7_stig-PR_7217.patch deleted file mode 100644 index 83e6804..0000000 --- a/SOURCES/scap-security-guide-0.1.58-update_rhel7_stig-PR_7217.patch +++ /dev/null @@ -1,21 +0,0 @@ -From 2452c1c69e6bda3b6130d8cf80c69c711c438fd0 Mon Sep 17 00:00:00 2001 -From: Gabriel Becker -Date: Wed, 7 Jul 2021 18:59:10 +0200 -Subject: [PATCH] Select two more rules in RHEL7 STIG. - -- sysctl_net_ipv4_conf_all_rp_filter -- sysctl_net_ipv4_conf_default_rp_filter ---- - products/rhel7/profiles/stig.profile | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/products/rhel7/profiles/stig.profile b/products/rhel7/profiles/stig.profile -index 23635ffed91..78133180ecc 100644 ---- a/products/rhel7/profiles/stig.profile -+++ b/products/rhel7/profiles/stig.profile -@@ -314,3 +314,5 @@ selections: - - package_MFEhiplsm_installed - - file_ownership_var_log_audit - - file_permissions_var_log_audit -+ - sysctl_net_ipv4_conf_all_rp_filter -+ - sysctl_net_ipv4_conf_default_rp_filter diff --git a/SOURCES/scap-security-guide-0.1.58-update_stig_benchmark-PR_7326.patch b/SOURCES/scap-security-guide-0.1.58-update_stig_benchmark-PR_7326.patch deleted file mode 100644 index ddc4e0d..0000000 --- a/SOURCES/scap-security-guide-0.1.58-update_stig_benchmark-PR_7326.patch +++ /dev/null @@ -1,3258 +0,0 @@ -From 860ac44b87eb1f5c99cfa83c9b75ca2d1dab1bcd Mon Sep 17 00:00:00 2001 -From: Gabriel Becker -Date: Wed, 4 Aug 2021 12:08:22 +0200 -Subject: [PATCH] Update RHEL8 STIG files to V1R3. - ---- - products/rhel7/profiles/stig.profile | 6 +- - products/rhel8/profiles/stig.profile | 6 +- - products/rhel8/profiles/stig_gui.profile | 6 +- - ... => disa-stig-rhel7-v3r4-xccdf-manual.xml} | 295 ++- - ... => disa-stig-rhel8-v1r3-xccdf-manual.xml} | 1586 ++++++++++------- - .../data/profile_stability/rhel8/stig.profile | 2 +- - .../profile_stability/rhel8/stig_gui.profile | 2 +- - 7 files changed, 1068 insertions(+), 835 deletions(-) - rename shared/references/{disa-stig-rhel7-v3r3-xccdf-manual.xml => disa-stig-rhel7-v3r4-xccdf-manual.xml} (88%) - rename shared/references/{disa-stig-rhel8-v1r2-xccdf-manual.xml => disa-stig-rhel8-v1r3-xccdf-manual.xml} (78%) - -diff --git a/products/rhel7/profiles/stig.profile b/products/rhel7/profiles/stig.profile -index 78133180ecc..f5761c891f2 100644 ---- a/products/rhel7/profiles/stig.profile -+++ b/products/rhel7/profiles/stig.profile -@@ -1,9 +1,9 @@ - documentation_complete: true - - metadata: -- version: V3R3 -+ version: V3R4 - SMEs: -- - carlosmmatos -+ - ggbecker - - reference: https://public.cyber.mil/stigs/downloads/?_dl_facet_stigs=operating-systems%2Cunix-linux - -@@ -11,7 +11,7 @@ title: 'DISA STIG for Red Hat Enterprise Linux 7' - - description: |- - This profile contains configuration checks that align to the -- DISA STIG for Red Hat Enterprise Linux V3R3. -+ DISA STIG for Red Hat Enterprise Linux V3R4. - - In addition to being applicable to Red Hat Enterprise Linux 7, DISA recognizes this - configuration baseline as applicable to the operating system tier of -diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index ec0a3b17537..504e57f6c32 100644 ---- a/products/rhel8/profiles/stig.profile -+++ b/products/rhel8/profiles/stig.profile -@@ -1,9 +1,9 @@ - documentation_complete: true - - metadata: -- version: V1R2 -+ version: V1R3 - SMEs: -- - carlosmmatos -+ - ggbecker - - reference: https://public.cyber.mil/stigs/downloads/?_dl_facet_stigs=operating-systems%2Cunix-linux - -@@ -11,7 +11,7 @@ title: 'DISA STIG for Red Hat Enterprise Linux 8' - - description: |- - This profile contains configuration checks that align to the -- DISA STIG for Red Hat Enterprise Linux 8 V1R2. -+ DISA STIG for Red Hat Enterprise Linux 8 V1R3. - - In addition to being applicable to Red Hat Enterprise Linux 8, DISA recognizes this - configuration baseline as applicable to the operating system tier of -diff --git a/products/rhel8/profiles/stig_gui.profile b/products/rhel8/profiles/stig_gui.profile -index ff9a2833df8..0fdd755652e 100644 ---- a/products/rhel8/profiles/stig_gui.profile -+++ b/products/rhel8/profiles/stig_gui.profile -@@ -1,9 +1,9 @@ - documentation_complete: true - - metadata: -- version: V1R2 -+ version: V1R3 - SMEs: -- - carlosmmatos -+ - ggbecker - - reference: https://public.cyber.mil/stigs/downloads/?_dl_facet_stigs=operating-systems%2Cunix-linux - -@@ -11,7 +11,7 @@ title: 'DISA STIG with GUI for Red Hat Enterprise Linux 8' - - description: |- - This profile contains configuration checks that align to the -- DISA STIG with GUI for Red Hat Enterprise Linux 8 V1R2. -+ DISA STIG with GUI for Red Hat Enterprise Linux 8 V1R3. - - In addition to being applicable to Red Hat Enterprise Linux 8, DISA recognizes this - configuration baseline as applicable to the operating system tier of -diff --git a/shared/references/disa-stig-rhel7-v3r3-xccdf-manual.xml b/shared/references/disa-stig-rhel7-v3r4-xccdf-manual.xml -similarity index 88% -rename from shared/references/disa-stig-rhel7-v3r3-xccdf-manual.xml -rename to shared/references/disa-stig-rhel7-v3r4-xccdf-manual.xml -index f0e75ac1da9..1130d365144 100644 ---- a/shared/references/disa-stig-rhel7-v3r3-xccdf-manual.xml -+++ b/shared/references/disa-stig-rhel7-v3r4-xccdf-manual.xml -@@ -1,4 +1,4 @@ --acceptedRed Hat Enterprise Linux 7 Security Technical Implementation GuideThis 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: disa.stig_spt@mail.mil.DISASTIG.DOD.MILRelease: 3 Benchmark Date: 23 Apr 20213.2.2.360791.10.03I - Mission Critical Classified<ProfileDescription></ProfileDescription>I - Mission Critical Sensitive<ProfileDescription></ProfileDescription>II - Mission Support Public<ProfileDescription></ProfileDescription>III - Administrative Classified<ProfileDescription></ProfileDescription>III - Administrative Sensitive<ProfileDescription></ProfileDescription>I - Mission Critical Public<ProfileDescription></ProfileDescription>II - Mission Support Classified<ProfileDescription></ProfileDescription>II - Mission Support Sensitive<ProfileDescription></ProfileDescription>III - Administrative Public<ProfileDescription></ProfileDescription>SRG-OS-000257-GPOS-00098<GroupDescription></GroupDescription>RHEL-07-010010The Red Hat Enterprise Linux operating system must be configured so that the file permissions, ownership, and group membership of system files and commands match the vendor values.<VulnDiscussion>Discretionary access control is weakened if a user or group has access permissions to system files and directories greater than the default. - - Satisfies: SRG-OS-000257-GPOS-00098, SRG-OS-000278-GPOS-00108</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899V-71849SV-86473CCI-001494CCI-001496CCI-002165CCI-002235Run the following command to determine which package owns the file: - -@@ -924,37 +924,22 @@ Check that the operating system requires authentication upon booting into single - - ExecStart=-/bin/sh -c "/usr/sbin/sulogin; /usr/bin/systemctl --fail --no-block default" - --If "ExecStart" does not have "/usr/sbin/sulogin" as an option, this is a finding.SRG-OS-000080-GPOS-00048<GroupDescription></GroupDescription>RHEL-07-010482Red Hat Enterprise Linux operating systems version 7.2 or newer with a Basic Input/Output System (BIOS) must require authentication upon booting into single-user and maintenance modes.<VulnDiscussion>If the system does not require valid root 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 7 and is designed to require a password to boot into single-user mode or make modifications to the boot menu.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899SV-95717V-81005CCI-000213Configure the system to encrypt the boot password for root. -+If "ExecStart" does not have "/usr/sbin/sulogin" as an option, this is a finding.SRG-OS-000080-GPOS-00048<GroupDescription></GroupDescription>RHEL-07-010482Red Hat Enterprise Linux operating systems version 7.2 or newer with a Basic Input/Output System (BIOS) must require authentication upon booting into single-user and maintenance modes.<VulnDiscussion>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 7 and is designed to require a password to boot into single-user mode or make modifications to the boot menu.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899SV-95717V-81005CCI-000213Configure the system to encrypt the boot 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 root with the following command: -- --Note: The hash generated is an example. -+Generate an encrypted grub2 password for the grub superusers account with the following command: - --# grub2-setpassword -+$ sudo grub2-setpassword - Enter password: --Confirm password: -- --Edit the /boot/grub2/grub.cfg file and add or modify the following lines in the "### BEGIN /etc/grub.d/01_users ###" section: -- --set superusers="root" --export superusersFor systems that use UEFI, this is Not Applicable. -+Confirm password:For systems that use UEFI, this is Not Applicable. - - For systems that are running a version of RHEL prior to 7.2, this is Not Applicable. - --Check to see if an encrypted root password is set. On systems that use a BIOS, use the following command: -+Check to see if an encrypted grub superusers password is set. On systems that use a BIOS, use the following command: - --# grep -iw grub2_password /boot/grub2/user.cfg -+$ sudo grep -iw grub2_password /boot/grub2/user.cfg - GRUB2_PASSWORD=grub.pbkdf2.sha512.[password_hash] - --If the root password does not begin with "grub.pbkdf2.sha512", this is a finding. -- --Verify that the "root" account is set as the "superusers": -- --# grep -iw "superusers" /boot/grub2/grub.cfg -- set superusers="root" -- export superusers -- --If "superusers" is not set to "root", this is a finding.SRG-OS-000080-GPOS-00048<GroupDescription></GroupDescription>RHEL-07-010490Red Hat Enterprise Linux operating systems prior to version 7.2 using Unified Extensible Firmware Interface (UEFI) must require authentication upon booting into single-user and maintenance modes.<VulnDiscussion>If the system does not require valid root 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 7 and is designed to require a password to boot into single-user mode or make modifications to the boot menu.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899V-71963SV-86587CCI-000213Configure the system to encrypt the boot password for root. -+If the grub superusers password does not begin with "grub.pbkdf2.sha512", this is a finding.SRG-OS-000080-GPOS-00048<GroupDescription></GroupDescription>RHEL-07-010490Red Hat Enterprise Linux operating systems prior to version 7.2 using Unified Extensible Firmware Interface (UEFI) must require authentication upon booting into single-user and maintenance modes.<VulnDiscussion>If the system does not require valid root 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 7 and is designed to require a password to boot into single-user mode or make modifications to the boot menu.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899V-71963SV-86587CCI-000213Configure the system to encrypt the boot password for root. - - Generate an encrypted grub2 password for root with the following command: - -@@ -988,37 +973,22 @@ password_pbkdf2 [superusers-account] [password-hash] - - If the root password entry does not begin with "password_pbkdf2", this is a finding. - --If the "superusers-account" is not set to "root", this is a finding.SRG-OS-000080-GPOS-00048<GroupDescription></GroupDescription>RHEL-07-010491Red Hat Enterprise Linux operating systems version 7.2 or newer using Unified Extensible Firmware Interface (UEFI) must require authentication upon booting into single-user and maintenance modes.<VulnDiscussion>If the system does not require valid root 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 7 and is designed to require a password to boot into single-user mode or make modifications to the boot menu.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899SV-95719V-81007CCI-000213Configure the system to encrypt the boot password for root. -+If the "superusers-account" is not set to "root", this is a finding.SRG-OS-000080-GPOS-00048<GroupDescription></GroupDescription>RHEL-07-010491Red Hat Enterprise Linux operating systems version 7.2 or newer using Unified Extensible Firmware Interface (UEFI) must require authentication upon booting into single-user and maintenance modes.<VulnDiscussion>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 7 and is designed to require a password to boot into single-user mode or make modifications to the boot menu.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899SV-95719V-81007CCI-000213Configure the system to encrypt the boot 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 root with the following command: -+Generate an encrypted grub2 password for the grub superusers account with the following command: - --Note: The hash generated is an example. -- --# grub2-setpassword -+$ sudo grub2-setpassword - Enter password: --Confirm password: -- --Edit the /boot/efi/EFI/redhat/grub.cfg file and add or modify the following lines in the "### BEGIN /etc/grub.d/01_users ###" section: -- --set superusers="root" --export superusersFor systems that use BIOS, this is Not Applicable. -+Confirm password:For systems that use BIOS, this is Not Applicable. - - For systems that are running a version of RHEL prior to 7.2, this is Not Applicable. - --Check to see if an encrypted root password is set. On systems that use UEFI, use the following command: -+Check to see if an encrypted grub superusers password is set. On systems that use UEFI, use the following command: - --# grep -iw grub2_password /boot/efi/EFI/redhat/user.cfg -+$ sudo grep -iw grub2_password /boot/efi/EFI/redhat/user.cfg - GRUB2_PASSWORD=grub.pbkdf2.sha512.[password_hash] - --If the root password does not begin with "grub.pbkdf2.sha512", this is a finding. -- --Verify that the "root" account is set as the "superusers": -- --# grep -iw "superusers" /boot/efi/EFI/redhat/grub.cfg -- set superusers="root" -- export superusers -- --If "superusers" is not set to "root", this is a finding.SRG-OS-000104-GPOS-00051<GroupDescription></GroupDescription>RHEL-07-010500The Red Hat Enterprise Linux operating system must uniquely identify and must authenticate organizational users (or processes acting on behalf of organizational users) using multifactor authentication.<VulnDiscussion>To assure accountability and prevent unauthenticated access, organizational users must be identified and authenticated to prevent potential misuse and compromise of the system. -+If the grub superusers password does not begin with "grub.pbkdf2.sha512", this is a finding.SRG-OS-000104-GPOS-00051<GroupDescription></GroupDescription>RHEL-07-010500The Red Hat Enterprise Linux operating system must uniquely identify and must authenticate organizational users (or processes acting on behalf of organizational users) using multifactor authentication.<VulnDiscussion>To assure accountability and prevent unauthenticated access, organizational users must be identified and authenticated to prevent potential misuse and compromise of the system. - - Organizational users include organizational employees or individuals the organization deems to have equivalent status of employees (e.g., contractors). Organizational users (and processes acting on behalf of users) must be uniquely identified and authenticated to all accesses, except for the following: - -@@ -1073,9 +1043,9 @@ Check to see if the "ypserve" package is installed with the following command: - - # yum list installed ypserv - --If the "ypserv" package is installed, this is a finding.SRG-OS-000324-GPOS-00125<GroupDescription></GroupDescription>RHEL-07-020020The Red Hat Enterprise Linux operating system must prevent non-privileged users from executing privileged functions to include disabling, circumventing, or altering implemented security safeguards/countermeasures.<VulnDiscussion>Preventing non-privileged users from executing privileged functions mitigates the risk that unauthorized individuals or processes may gain unnecessary access to information or privileges. -+If the "ypserv" package is installed, this is a finding.SRG-OS-000324-GPOS-00125<GroupDescription></GroupDescription>RHEL-07-020020The Red Hat Enterprise Linux operating system must prevent non-privileged users from executing privileged functions to include disabling, circumventing, or altering implemented security safeguards/countermeasures.<VulnDiscussion>Preventing non-privileged users from executing privileged functions mitigates the risk that unauthorized individuals or processes may gain unnecessary access to information or privileges. - --Privileged functions include, for example, establishing accounts, performing system integrity checks, or administering cryptographic key management activities. Non-privileged users are individuals who do not possess appropriate authorizations. Circumventing intrusion detection and prevention mechanisms or malicious code protection mechanisms are examples of privileged functions that require protection from non-privileged users.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899SV-86595V-71971CCI-002235CCI-002165Configure the operating system to prevent non-privileged users from executing privileged functions to include disabling, circumventing, or altering implemented security safeguards/countermeasures. -+Privileged functions include, for example, establishing accounts, performing system integrity checks, or administering cryptographic key management activities. Non-privileged users are individuals who do not possess appropriate authorizations. Circumventing intrusion detection and prevention mechanisms or malicious code protection mechanisms are examples of privileged functions that require protection from non-privileged users.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899SV-86595V-71971CCI-002165CCI-002235Configure the operating system to prevent non-privileged users from executing privileged functions to include disabling, circumventing, or altering implemented security safeguards/countermeasures. - - Use the following command to map a new user to the "sysadm_u" role: - -@@ -1099,7 +1069,7 @@ Use the following command to map a new user to the "user_u" role: - - Use the following command to map an existing user to the "user_u" role: - --# semanage login -m -s user_u <username>Note: Per OPORD 16-0080, the preferred intrusion detection system is McAfee Host Intrusion Prevention System (HIPS) in conjunction with SELinux. McAfee Endpoint Security for Linux (ENSL) is an approved alternative to McAfee Virus Scan Enterprise (VSE) and HIPS. For RHEL 7 systems, SELinux is an approved alternative to McAfee HIPS. Regardless of whether or not McAfee HIPS or ENSL is installed, SELinux is interoperable with both McAfee products and SELinux is still required. -+# semanage login -m -s user_u <username>Note: Per OPORD 16-0080, the preferred endpoint security tool is Endpoint Security for Linux (ENSL) in conjunction with SELinux. - - Verify the operating system prevents non-privileged users from executing privileged functions to include disabling, circumventing, or altering implemented security safeguards/countermeasures. - -@@ -1215,7 +1185,7 @@ If "localpkg_gpgcheck" is not set to "1", or if options are missing or commented - - If there is no process to validate the signatures of local packages that is approved by the organization, this is a finding.SRG-OS-000114-GPOS-00059<GroupDescription></GroupDescription>RHEL-07-020100The Red Hat Enterprise Linux operating system must be configured to disable USB mass storage.<VulnDiscussion>USB mass storage permits easy introduction of unknown devices, thereby facilitating malicious activity. - --Satisfies: SRG-OS-000114-GPOS-00059, SRG-OS-000378-GPOS-00163, SRG-OS-000480-GPOS-00227</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899SV-86607V-71983CCI-001958CCI-000778CCI-000366Configure the operating system to disable the ability to use the USB Storage kernel module. -+Satisfies: SRG-OS-000114-GPOS-00059, SRG-OS-000378-GPOS-00163, SRG-OS-000480-GPOS-00227</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899SV-86607V-71983CCI-000366CCI-000778CCI-001958Configure the operating system to disable the ability to use the USB Storage kernel module. - - Create a file under "/etc/modprobe.d" with the following command: - -@@ -1280,7 +1250,7 @@ blacklist dccp - - If the command does not return any output or the output is not "blacklist dccp", and use of the dccp kernel module is not documented with the Information System Security Officer (ISSO) as an operational requirement, this is a finding.SRG-OS-000114-GPOS-00059<GroupDescription></GroupDescription>RHEL-07-020110The Red Hat Enterprise Linux operating system must disable the file system automounter unless required.<VulnDiscussion>Automatically mounting file systems permits easy introduction of unknown devices, thereby facilitating malicious activity. - --Satisfies: SRG-OS-000114-GPOS-00059, SRG-OS-000378-GPOS-00163, SRG-OS-000480-GPOS-00227</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899V-71985SV-86609CCI-001958CCI-000366CCI-000778Configure the operating system to disable the ability to automount devices. -+Satisfies: SRG-OS-000114-GPOS-00059, SRG-OS-000378-GPOS-00163, SRG-OS-000480-GPOS-00227</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899V-71985SV-86609CCI-000366CCI-000778CCI-001958Configure the operating system to disable the ability to automount devices. - - Turn off the automount service with the following commands: - -@@ -1307,15 +1277,15 @@ Check if yum is configured to remove unneeded packages with the following comman - # grep -i clean_requirements_on_remove /etc/yum.conf - clean_requirements_on_remove=1 - --If "clean_requirements_on_remove" is not set to "1", "True", or "yes", or is not set in "/etc/yum.conf", this is a finding.SRG-OS-000445-GPOS-00199<GroupDescription></GroupDescription>RHEL-07-020210The Red Hat Enterprise Linux operating system must enable SELinux.<VulnDiscussion>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. -+If "clean_requirements_on_remove" is not set to "1", "True", or "yes", or is not set in "/etc/yum.conf", this is a finding.SRG-OS-000445-GPOS-00199<GroupDescription></GroupDescription>RHEL-07-020210The Red Hat Enterprise Linux operating system must enable SELinux.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899V-71989SV-86613CCI-002696CCI-002165Configure the operating system to verify correct operation of all security functions. -+This requirement applies to operating systems performing security function verification/testing and/or systems and environments that require this functionality.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899V-71989SV-86613CCI-002165CCI-002696Configure 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.Per OPORD 16-0080, the preferred intrusion detection system is McAfee Host Intrusion Prevention System (HIPS) in conjunction with SELinux. McAfee Endpoint Security for Linux (ENSL) is an approved alternative to McAfee Virus Scan Enterprise (VSE) and HIPS. For RHEL 7 systems, SELinux is an approved alternative to McAfee HIPS. Regardless of whether or not McAfee HIPS or ENSL is installed, SELinux is interoperable with both McAfee products and SELinux is still required. -+A reboot is required for the changes to take effect.Per OPORD 16-0080, the preferred endpoint security tool is Endpoint Security for Linux (ENSL) in conjunction with SELinux. - - Verify the operating system verifies correct operation of all security functions. - -@@ -1324,7 +1294,7 @@ Check if "SELinux" is active and in "Enforcing" mode with the following command: - # getenforce - Enforcing - --If "SELinux" is not active and not in "Enforcing" mode, this is a finding.SRG-OS-000445-GPOS-00199<GroupDescription></GroupDescription>RHEL-07-020220The Red Hat Enterprise Linux operating system must enable the SELinux targeted policy.<VulnDiscussion>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. -+If "SELinux" is not active and not in "Enforcing" mode, this is a finding.SRG-OS-000445-GPOS-00199<GroupDescription></GroupDescription>RHEL-07-020220The Red Hat Enterprise Linux operating system must enable the SELinux targeted policy.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899V-71991SV-86615CCI-002165CCI-002696Configure the operating system to verify correct operation of all security functions. - -@@ -1332,7 +1302,7 @@ Set the "SELinuxtype" to the "targeted" policy by modifying the "/etc/selinux/co - - SELINUXTYPE=targeted - --A reboot is required for the changes to take effect.Per OPORD 16-0080, the preferred intrusion detection system is McAfee Host Intrusion Prevention System (HIPS) in conjunction with SELinux. McAfee Endpoint Security for Linux (ENSL) is an approved alternative to McAfee Virus Scan Enterprise (VSE) and HIPS. For RHEL 7 systems, SELinux is an approved alternative to McAfee HIPS. Regardless of whether or not McAfee HIPS or ENSL is installed, SELinux is interoperable with both McAfee products and SELinux is still required. -+A reboot is required for the changes to take effect.Per OPORD 16-0080, the preferred endpoint security tool is Endpoint Security for Linux (ENSL) in conjunction with SELinux. - - Verify the operating system verifies correct operation of all security functions. - -@@ -1410,23 +1380,21 @@ Note: If the value of the "UMASK" parameter is set to "000" in "/etc/login.defs" - # 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.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-07-020250The Red Hat Enterprise Linux operating system must be a vendor supported release.<VulnDiscussion>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. -+If the value for the "UMASK" parameter is not "077", or the "UMASK" parameter is missing or is commented out, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-07-020250The Red Hat Enterprise Linux operating system must be a vendor supported release.<VulnDiscussion>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. RHEL 7.7 marks the final minor release that EUS will be available.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899SV-86621V-71997CCI-000366Upgrade to a supported version of the operating system.Verify the version of the operating system is vendor supported. -+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. RHEL 7.7 marks the final minor release that EUS will be available, while 7.9 is the final minor release overall.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899SV-86621V-71997CCI-000366Upgrade to a supported version of the operating system.Verify the version of the operating system is vendor supported. - - Check the version of the operating system with the following command: - - # cat /etc/redhat-release - --Red Hat Enterprise Linux Server release 7.4 (Maipo) -+Red Hat Enterprise Linux Server release 7.9 (Maipo) - --Current End of Extended Update Support for RHEL 7.6 is 31 October 2020. -+Current End of Extended Update Support for RHEL 7.6 is 31 May 2021. - --Current End of Extended Update Support for RHEL 7.7 is 31 August 2021. -+Current End of Extended Update Support for RHEL 7.7 is 30 August 2021. - --Current End of Maintenance Support for RHEL 7.8 is 31 October 2020. -- --Current End of Maintenance Support for RHEL 7.9 is 30 April 2021. -+Current End of Maintenance Support for RHEL 7.9 is 30 June 2024. - - If the release is not supported by the vendor, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-07-020260The Red Hat Enterprise Linux operating system security patches and updates must be installed and up to date.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899SV-86623V-71999CCI-000366Install the operating system patches or updated packages available from Red Hat within 30 days or sooner as local policy dictates.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). - -@@ -1560,11 +1528,11 @@ Check the home directory assignment for all local interactive users on the syste - - -rwxr-x--- 1 smithj users 18 Mar 5 17:06 /home/smithj - --If any home directories referenced in "/etc/passwd" are not owned by the interactive user, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-07-020650The Red Hat Enterprise Linux operating system must be configured so that all local interactive user home directories are group-owned by the home directory owners primary group.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899SV-86645V-72021CCI-000366Change 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: -+If any home directories referenced in "/etc/passwd" are not owned by the interactive user, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-07-020650The Red Hat Enterprise Linux operating system must be configured so that all local interactive user home directories are group-owned by the home directory owners primary group.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899SV-86645V-72021CCI-000366Change 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. - --# chgrp users /home/smithjVerify the assigned home directory of all local interactive users is group-owned by that user's primary GID. -+# chgrp users /home/smithjVerify the assigned home directory of all local interactive users is group-owned by that user's primary GID. - - Check the home directory assignment for all local interactive users on the system with the following command: - -@@ -1574,26 +1542,26 @@ Check the home directory assignment for all local interactive users on the syste - - Check the user's primary group with the following command: - --# grep users /etc/group -+# grep $(grep smithj /etc/passwd | awk -F: ‘{print $4}’) /etc/group - - users: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.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-07-020660The Red Hat Enterprise Linux operating system must be configured so that all files and directories contained in local interactive user home directories are owned by the owner of the home directory.<VulnDiscussion>If local interactive users do not own the files in their directories, unauthorized users may be able to access them. Additionally, if files are not owned by the user, this could be an indication of system compromise.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899SV-86647V-72023CCI-000366Change the owner of a local interactive user's files and directories to that owner. To change the owner of a local interactive user's files and directories, use the following command: -+If the user home directory referenced in "/etc/passwd" is not group-owned by that user's primary GID, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-07-020660The Red Hat Enterprise Linux operating system must be configured so that all files and directories contained in local interactive user home directories have a valid owner.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899SV-86647V-72023CCI-000366Either 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 7 with the "chown" command: - - Note: The example will be for the user smithj, who has a home directory of "/home/smithj". - --# chown smithj /home/smithj/<file or directory>Verify all files and directories in a local interactive user's home directory are owned by the user. -+$ sudo chown smithj /home/smithj/<file or directory>Verify all files and directories in a local interactive user's home directory have a valid owner. - - Check the owner of all files and directories in a local interactive user's home directory with the following command: - - Note: The example will be for the user "smithj", who has a home directory of "/home/smithj". - --# ls -lLR /home/smithj -+$ sudo ls -lLR /home/smithj - -rw-r--r-- 1 smithj smithj 18 Mar 5 17:06 file1 - -rw-r--r-- 1 smithj smithj 193 Mar 5 17:06 file2 - -rw-r--r-- 1 smithj smithj 231 Mar 5 17:06 file3 - --If any files are found with an owner different than the home directory user, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-07-020670The Red Hat Enterprise Linux operating system must be configured so that all files and directories contained in local interactive user home directories are group-owned by a group of which the home directory owner is a member.<VulnDiscussion>If a local interactive user's files are group-owned by a group of which the user is not a member, unintended users may be able to access them.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899V-72025SV-86649CCI-000366Change the group of a local interactive user's files and directories to a group that the interactive user is a member of. To change the group owner of a local interactive user's files and directories, use the following command: -+If any files or directories are found without an owner, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-07-020670The Red Hat Enterprise Linux operating system must be configured so that all files and directories contained in local interactive user home directories are group-owned by a group of which the home directory owner is a member.<VulnDiscussion>If a local interactive user's files are group-owned by a group of which the user is not a member, unintended users may be able to access them.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899V-72025SV-86649CCI-000366Change the group of a local interactive user's files and directories to a group that the interactive user is a member of. To change the group owner of a local interactive user's files and directories, use the following command: - - Note: The example will be for the user smithj, who has a home directory of "/home/smithj" and is a member of the users group. - -@@ -1722,7 +1690,7 @@ Note: The example will be for a system that is configured to create users' home - - # grep <file> /home/*/.* - --If any local initialization files are found to reference world-writable files, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-07-020900The Red Hat Enterprise Linux operating system must be configured so that all system device files are correctly labeled to prevent unauthorized modification.<VulnDiscussion>If an unauthorized or modified device is allowed to exist on the system, there is the possibility the system may perform unintended or unauthorized operations.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899SV-86663V-72039CCI-000368CCI-001813CCI-001814CCI-001812CCI-000318Run the following command to determine which package owns the device file: -+If any local initialization files are found to reference world-writable files, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-07-020900The Red Hat Enterprise Linux operating system must be configured so that all system device files are correctly labeled to prevent unauthorized modification.<VulnDiscussion>If an unauthorized or modified device is allowed to exist on the system, there is the possibility the system may perform unintended or unauthorized operations.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899SV-86663V-72039CCI-000318CCI-000368CCI-001812CCI-001813CCI-001814Run the following command to determine which package owns the device file: - - # rpm -qf <filename> - -@@ -1814,13 +1782,13 @@ Verify "/dev/shm" is mounted with the "nodev", "nosuid", and "noexec" options: - - tmpfs on /dev/shm type tmpfs (rw,nodev,nosuid,noexec,seclabel) - --If /dev/shm is mounted without secure options "nodev", "nosuid", and "noexec", this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-07-021030The Red Hat Enterprise Linux operating system must be configured so that all world-writable directories are group-owned by root, sys, bin, or an application group.<VulnDiscussion>If a world-writable directory has the sticky bit set and 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. -+If /dev/shm is mounted without secure options "nodev", "nosuid", and "noexec", this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-07-021030The Red Hat Enterprise Linux operating system must be configured so that all world-writable directories are group-owned by root, sys, bin, or an application group.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899V-72047SV-86671CCI-000366All directories in local partitions which are world-writable should be group-owned by root or another system account. If any world-writable directories are not group-owned by a system account, this should be investigated. Following this, the directories should be deleted or assigned to an appropriate group.The following command will discover and print world-writable directories that are not group-owned by a system account, assuming only system accounts have a GID lower than 1000. Run it once for each local partition [PART]: - - # find [PART] -xdev -type d -perm -0002 -gid +999 -print - --If there is output, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-07-021040The Red Hat Enterprise Linux operating system must set the umask value to 077 for all local interactive user accounts.<VulnDiscussion>The umask controls the default access mode assigned to newly created files. A umask of 077 limits new files to mode 700 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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899V-72049SV-86673CCI-000318CCI-000368CCI-001813CCI-001814CCI-001812Remove the umask statement from all local interactive user's initialization files. -+If there is output, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-07-021040The Red Hat Enterprise Linux operating system must set the umask value to 077 for all local interactive user accounts.<VulnDiscussion>The umask controls the default access mode assigned to newly created files. A umask of 077 limits new files to mode 700 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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899V-72049SV-86673CCI-000318CCI-000368CCI-001812CCI-001813CCI-001814Remove 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.Verify that the default umask for all local interactive users is "077". - -@@ -1832,16 +1800,19 @@ Note: The example is for a system that is configured to create users home direct - - # grep -i umask /home/*/.* - --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.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-07-021100The Red Hat Enterprise Linux operating system must have cron logging implemented.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899V-72051SV-86675CCI-000366Configure "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: -+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.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-07-021100The Red Hat Enterprise Linux operating system must have cron logging implemented.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899V-72051SV-86675CCI-000366Configure "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.logVerify that "rsyslog" is configured to log cron events. -+cron.* /var/log/cron -+ -+The rsyslog daemon must be restarted for the changes to take effect: -+$ sudo systemctl restart rsyslog.serviceVerify that "rsyslog" is configured to log cron events. - - Check the configuration of "/etc/rsyslog.conf" or "/etc/rsyslog.d/*.conf" files for the cron facility with the following command: - - Note: If another logging package is used, substitute the utility configuration file for "/etc/rsyslog.conf" or "/etc/rsyslog.d/*.conf" files. - - # grep cron /etc/rsyslog.conf /etc/rsyslog.d/*.conf --cron.* /var/log/cron.log -+cron.* /var/log/cron - - If the command does not return a response, check for cron logging all facilities by inspecting the "/etc/rsyslog.conf" or "/etc/rsyslog.d/*.conf" files. - -@@ -1940,7 +1911,7 @@ UUID=a411dc99-f2a1-4c87-9e05-184977be8539 /tmp ext4 rw,relatime,discard,data - - If "tmp.mount" service is not enabled or the "/tmp" directory is not defined in the fstab with a device and mount point, this is a finding. SRG-OS-000033-GPOS-00014<GroupDescription></GroupDescription>RHEL-07-021350The Red Hat Enterprise Linux operating system 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.<VulnDiscussion>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. - --Satisfies: SRG-OS-000033-GPOS-00014, SRG-OS-000185-GPOS-00079, SRG-OS-000396-GPOS-00176, SRG-OS-000405-GPOS-00184, SRG-OS-000478-GPOS-00223</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899SV-86691V-72067CCI-001199CCI-000068CCI-002450CCI-002476Configure the operating system to implement DoD-approved encryption by installing the dracut-fips package. -+Satisfies: SRG-OS-000033-GPOS-00014, SRG-OS-000185-GPOS-00079, SRG-OS-000396-GPOS-00176, SRG-OS-000405-GPOS-00184, SRG-OS-000478-GPOS-00223</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899SV-86691V-72067CCI-000068CCI-001199CCI-002450CCI-002476Configure the operating system to implement DoD-approved encryption by installing the dracut-fips package. - - To enable strict FIPS compliance, the fips=1 kernel option needs to be added to the kernel command line during system installation so key generation is done with FIPS-approved algorithms and continuous monitoring tests in place. - -@@ -2097,7 +2068,7 @@ All=p+i+n+u+g+s+m+S+sha512+acl+xattrs+selinux - /bin All # apply the custom rule to the files in bin - /sbin All # apply the same custom rule to the files in sbin - --If the "sha512" rule is not being used on all uncommented selection lines in the "/etc/aide.conf" file, or another file integrity tool is not using FIPS 140-2 approved cryptographic hashes for validating file contents and directories, this is a finding.SRG-OS-000364-GPOS-00151<GroupDescription></GroupDescription>RHEL-07-021700The Red Hat Enterprise Linux operating system must not allow removable media to be used as the boot loader unless approved.<VulnDiscussion>Malicious users with removable boot media can gain access to a system configured to use removable media as the boot loader. If removable media is designed to be used as the boot loader, the requirement must be documented with the Information System Security Officer (ISSO).</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899SV-86699V-72075CCI-000368CCI-001812CCI-001814CCI-001813CCI-000318Remove alternate methods of booting the system from removable media or document the configuration to boot from removable media with the ISSO.Verify the system is not configured to use a boot loader on removable media. -+If the "sha512" rule is not being used on all uncommented selection lines in the "/etc/aide.conf" file, or another file integrity tool is not using FIPS 140-2 approved cryptographic hashes for validating file contents and directories, this is a finding.SRG-OS-000364-GPOS-00151<GroupDescription></GroupDescription>RHEL-07-021700The Red Hat Enterprise Linux operating system must not allow removable media to be used as the boot loader unless approved.<VulnDiscussion>Malicious users with removable boot media can gain access to a system configured to use removable media as the boot loader. If removable media is designed to be used as the boot loader, the requirement must be documented with the Information System Security Officer (ISSO).</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899SV-86699V-72075CCI-000318CCI-000368CCI-001812CCI-001813CCI-001814Remove alternate methods of booting the system from removable media or document the configuration to boot from removable media with the ISSO.Verify the system is not configured to use a boot loader on removable media. - - Note: GRUB 2 reads its configuration from the "/boot/grub2/grub.cfg" file on traditional BIOS-based machines and from the "/boot/efi/EFI/redhat/grub.cfg" file on UEFI machines. - -@@ -2314,37 +2285,21 @@ network_failure_action = syslog - - If the value of the "network_failure_action" option is not "syslog", "single", or "halt", or the line is commented out, ask the System Administrator to indicate how the audit logs are off-loaded to a different system or storage media, and to indicate the action taken if there is an error sending audit records to the remote system. - --If there is no evidence that the system is configured to off-load audit logs to a different system or storage media, or if the configuration does not take appropriate action if there is an error sending audit records to the remote system, this is a finding.SRG-OS-000343-GPOS-00134<GroupDescription></GroupDescription>RHEL-07-030330The Red Hat Enterprise Linux operating system must initiate an action to notify the System Administrator (SA) and Information System Security Officer ISSO, at a minimum, when allocated audit record storage volume reaches 75% of the repository maximum audit record storage capacity.<VulnDiscussion>If security personnel are not notified immediately when storage volume reaches 75 percent utilization, they are unable to plan for audit record storage capacity expansion.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899V-72089SV-86713CCI-001855Configure the operating system to initiate an action to notify the SA and ISSO (at a minimum) when allocated audit record storage volume reaches 75 percent of the repository maximum audit record storage capacity. -- --Check the system configuration to determine the partition the audit records are being written to: -+If there is no evidence that the system is configured to off-load audit logs to a different system or storage media, or if the configuration does not take appropriate action if there is an error sending audit records to the remote system, this is a finding.SRG-OS-000343-GPOS-00134<GroupDescription></GroupDescription>RHEL-07-030330The Red Hat Enterprise Linux operating system must initiate an action to notify the System Administrator (SA) and Information System Security Officer ISSO, at a minimum, when allocated audit record storage volume reaches 75% of the repository maximum audit record storage capacity.<VulnDiscussion>If security personnel are not notified immediately when storage volume reaches 75 percent utilization, they are unable to plan for audit record storage capacity expansion.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899V-72089SV-86713CCI-001855Configure the operating system to initiate an action to notify the SA and ISSO (at a minimum) when allocated audit record storage volume reaches 75 percent of the repository maximum audit record storage capacity. - --# grep -iw log_file /etc/audit/auditd.conf -- --Determine the size of the partition that audit records are written to (with the example being "/var/log/audit/"): -- --# df -h /var/log/audit/ -- --Set the value of the "space_left" keyword in "/etc/audit/auditd.conf" to 25 percent of the partition size.Verify the operating system initiates an action to notify the SA and ISSO (at a minimum) when allocated audit record storage volume reaches 75 percent of the repository maximum audit record storage capacity. -+Set the value of the "space_left" keyword in "/etc/audit/auditd.conf" to 25 percent of the partition size. -+space_left = 25% -+Reload the auditd daemon to apply changes made to the "/etc/audit/auditd.conf" file.Verify the operating system initiates an action to notify the SA and ISSO (at a minimum) when allocated audit record storage volume reaches 75 percent of the repository maximum audit record storage capacity. - - Check the system configuration to determine the partition the audit records are being written to with the following command: - --# grep -iw log_file /etc/audit/auditd.conf -+$ sudo grep -iw log_file /etc/audit/auditd.conf - log_file = /var/log/audit/audit.log - --Check the size of the partition that audit records are written to (with the example being "/var/log/audit/"): -- --# df -h /var/log/audit/ --0.9G /var/log/audit -- --If the audit records are not being written to a partition specifically created for audit records (in this example "/var/log/audit" is a separate partition), determine the amount of space other files in the partition are currently occupying with the following command: -- --# du -sh <partition> --1.8G /var -- - Determine what the threshold is for the system to take action when 75 percent of the repository maximum audit record storage capacity is reached: - --# grep -iw space_left /etc/audit/auditd.conf --space_left = 225 -+$ sudo grep -iw space_left /etc/audit/auditd.conf -+space_left = 25% - - If the value of the "space_left" keyword is not set to 25 percent of the total partition size, this is a finding.SRG-OS-000343-GPOS-00134<GroupDescription></GroupDescription>RHEL-07-030340The Red Hat Enterprise Linux operating system must immediately notify the System Administrator (SA) and Information System Security Officer (ISSO) (at a minimum) via email when the threshold for the repository maximum audit record storage capacity is reached.<VulnDiscussion>If security personnel are not notified immediately when the threshold for the repository maximum audit record storage capacity is reached, they are unable to expand the audit record storage capacity before records are lost.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899V-72091SV-86715CCI-001855Configure the operating system to immediately notify the SA and ISSO (at a minimum) when the threshold for the repository maximum audit record storage capacity is reached. - -@@ -2395,7 +2350,7 @@ Audit records can be generated from various components within the information sy - - 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-000064-GPOS-00033, SRG-OS-000392-GPOS-00172, SRG-OS-000458-GPOS-00203, SRG-OS-000474-GPOS-00219</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899SV-86721V-72097CCI-000172CCI-000126Add or update the following rule in "/etc/audit/rules.d/audit.rules": -+Satisfies: SRG-OS-000064-GPOS-00033, SRG-OS-000392-GPOS-00172, SRG-OS-000458-GPOS-00203, SRG-OS-000474-GPOS-00219</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899SV-86721V-72097CCI-000126CCI-000172Add or update the following rule in "/etc/audit/rules.d/audit.rules": - - -a always,exit -F arch=b32 -S chown -F auid>=1000 -F auid!=unset -k perm_mod - -@@ -2993,7 +2948,7 @@ If the command does not return any output, this is a finding.DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899V-72145SV-86769CCI-000172CCI-000126CCI-002884Configure the operating system to generate audit records when unsuccessful account access events occur. -+Satisfies: SRG-OS-000392-GPOS-00172, SRG-OS-000470-GPOS-00214, SRG-OS-000473-GPOS-00218</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899V-72145SV-86769CCI-000126CCI-000172CCI-002884Configure the operating system to generate audit records when unsuccessful account access events occur. - - Add or update the following rule in "/etc/audit/rules.d/audit.rules": - -@@ -3031,7 +2986,7 @@ At a minimum, the organization must audit the full-text recording of privileged - - 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-000042-GPOS-00020, SRG-OS-000392-GPOS-00172, SRG-OS-000471-GPOS-00215</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899SV-86773V-72149CCI-000172CCI-000135CCI-002884Configure the operating system to generate audit records when successful/unsuccessful attempts to use the "passwd" command occur. -+Satisfies: SRG-OS-000042-GPOS-00020, SRG-OS-000392-GPOS-00172, SRG-OS-000471-GPOS-00215</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899SV-86773V-72149CCI-000135CCI-000172CCI-002884Configure the operating system to generate audit records when successful/unsuccessful attempts to use the "passwd" command occur. - - Add or update the following rule in "/etc/audit/rules.d/audit.rules": - -@@ -3071,7 +3026,7 @@ At a minimum, the organization must audit the full-text recording of privileged - - 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-000042-GPOS-00020, SRG-OS-000392-GPOS-00172, SRG-OS-000471-GPOS-00215</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899SV-86777V-72153CCI-000172CCI-000135CCI-002884Configure the operating system to generate audit records when successful/unsuccessful attempts to use the "gpasswd" command occur. -+Satisfies: SRG-OS-000042-GPOS-00020, SRG-OS-000392-GPOS-00172, SRG-OS-000471-GPOS-00215</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899SV-86777V-72153CCI-000135CCI-000172CCI-002884Configure the operating system to generate audit records when successful/unsuccessful attempts to use the "gpasswd" command occur. - - Add or update the following rule in "/etc/audit/rules.d/audit.rules": - -@@ -3111,7 +3066,7 @@ At a minimum, the organization must audit the full-text recording of privileged - - 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-000042-GPOS-00020, SRG-OS-000392-GPOS-00172, SRG-OS-000471-GPOS-00215</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899SV-86781V-72157CCI-000172CCI-000135CCI-002884Configure the operating system to generate audit records when successful/unsuccessful attempts to use the "userhelper" command occur. -+Satisfies: SRG-OS-000042-GPOS-00020, SRG-OS-000392-GPOS-00172, SRG-OS-000471-GPOS-00215</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899SV-86781V-72157CCI-000135CCI-000172CCI-002884Configure the operating system to generate audit records when successful/unsuccessful attempts to use the "userhelper" command occur. - - Add or update the following rule in "/etc/audit/rules.d/audit.rules": - -@@ -3131,7 +3086,7 @@ At a minimum, the organization must audit the full-text recording of privileged - - 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-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899SV-86783V-72159CCI-000135CCI-000172CCI-000130CCI-002884Configure the operating system to generate audit records when successful/unsuccessful attempts to use the "su" command occur. -+Satisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899SV-86783V-72159CCI-000130CCI-000135CCI-000172CCI-002884Configure the operating system to generate audit records when successful/unsuccessful attempts to use the "su" command occur. - - Add or update the following rule in "/etc/audit/rules.d/audit.rules": - -@@ -3169,7 +3124,7 @@ If the command does not return any output, this is a finding.DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899V-72163SV-86787CCI-000172CCI-000135CCI-000130CCI-002884Configure the operating system to generate audit records when successful/unsuccessful attempts to access the "/etc/sudoers" file and files in the "/etc/sudoers.d/" directory. -+Satisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899V-72163SV-86787CCI-000130CCI-000135CCI-000172CCI-002884Configure the operating system to generate audit records when successful/unsuccessful attempts to access the "/etc/sudoers" file and files in the "/etc/sudoers.d/" directory. - - Add or update the following rule in "/etc/audit/rules.d/audit.rules": - -@@ -3215,7 +3170,7 @@ At a minimum, the organization must audit the full-text recording of privileged - - 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-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899SV-86791V-72167CCI-000172CCI-000135CCI-000130CCI-002884Configure the operating system to generate audit records when successful/unsuccessful attempts to use the "chsh" command occur. -+Satisfies: SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899SV-86791V-72167CCI-000130CCI-000135CCI-000172CCI-002884Configure the operating system to generate audit records when successful/unsuccessful attempts to use the "chsh" command occur. - - Add or update the following rule in "/etc/audit/rules.d/audit.rules": - -@@ -3341,7 +3296,7 @@ At a minimum, the organization must audit the full-text recording of privileged - - 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-000042-GPOS-00020, SRG-OS-000392-GPOS-00172, SRG-OS-000471-GPOS-00215</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899SV-86807V-72183CCI-000172CCI-000135CCI-002884Configure the operating system to generate audit records when successful/unsuccessful attempts to use the "crontab" command occur. -+Satisfies: SRG-OS-000042-GPOS-00020, SRG-OS-000392-GPOS-00172, SRG-OS-000471-GPOS-00215</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899SV-86807V-72183CCI-000135CCI-000172CCI-002884Configure the operating system to generate audit records when successful/unsuccessful attempts to use the "crontab" command occur. - - Add or update the following rule in "/etc/audit/rules.d/audit.rules": - -@@ -3483,7 +3438,7 @@ If the command does not return any output, this is a finding.DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899V-72197SV-86821CCI-000018CCI-000172CCI-001403CCI-002130Configure the operating system to generate audit records for all account creations, modifications, disabling, and termination events that affect "/etc/passwd". -+Satisfies: SRG-OS-000004-GPOS-00004, SRG-OS-000239-GPOS-00089, SRG-OS-000240-GPOS-00090, SRG-OS-000241-GPOS-00091, SRG-OS-000303-GPOS-00120, SRG-OS-000476-GPOS-00221</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899SV-86821V-72197CCI-000018CCI-000172CCI-001403CCI-002130Configure the operating system to generate audit records for all account creations, modifications, disabling, and termination events that affect "/etc/passwd". - - Add or update the following rule "/etc/audit/rules.d/audit.rules": - -@@ -3499,7 +3454,7 @@ Check the auditing rules in "/etc/audit/audit.rules" with the following command: - - If the command does not return a line, or the line is commented out, this is a finding.SRG-OS-000004-GPOS-00004<GroupDescription></GroupDescription>RHEL-07-030871The Red Hat Enterprise Linux operating system must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/group.<VulnDiscussion>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).</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899V-73165SV-87817CCI-001403CCI-000018CCI-000172CCI-002130Configure the operating system to generate audit records for all account creations, modifications, disabling, and termination events that affect "/etc/group". -+Audit records can be generated from various components within the information system (e.g., module or policy filter).</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899SV-87817V-73165CCI-000018CCI-000172CCI-001403CCI-002130Configure the operating system to generate audit records for all account creations, modifications, disabling, and termination events that affect "/etc/group". - - Add or update the following rule in "/etc/audit/rules.d/audit.rules": - -@@ -3515,7 +3470,7 @@ Check the auditing rules in "/etc/audit/audit.rules" with the following command: - - If the command does not return a line, or the line is commented out, this is a finding.SRG-OS-000004-GPOS-00004<GroupDescription></GroupDescription>RHEL-07-030872The Red Hat Enterprise Linux operating system must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/gshadow.<VulnDiscussion>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).</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899V-73167SV-87819CCI-000018CCI-000172CCI-001403CCI-002130Configure the operating system to generate audit records for all account creations, modifications, disabling, and termination events that affect "/etc/gshadow". -+Audit records can be generated from various components within the information system (e.g., module or policy filter).</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899SV-87819V-73167CCI-000018CCI-000172CCI-001403CCI-002130Configure the operating system to generate audit records for all account creations, modifications, disabling, and termination events that affect "/etc/gshadow". - - Add or update the following rule in "/etc/audit/rules.d/audit.rules": - -@@ -3531,7 +3486,7 @@ Check the auditing rules in "/etc/audit/audit.rules" with the following command: - - If the command does not return a line, or the line is commented out, this is a finding.SRG-OS-000004-GPOS-00004<GroupDescription></GroupDescription>RHEL-07-030873The Red Hat Enterprise Linux operating system must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/shadow.<VulnDiscussion>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).</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899V-73171SV-87823CCI-001403CCI-000172CCI-000018CCI-002130Configure the operating system to generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/shadow. -+Audit records can be generated from various components within the information system (e.g., module or policy filter).</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899SV-87823V-73171CCI-000018CCI-000172CCI-001403CCI-002130Configure the operating system 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 in "/etc/audit/rules.d/audit.rules": - -@@ -3545,16 +3500,16 @@ Check the auditing rules in "/etc/audit/audit.rules" with the following command: - - -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.SRG-OS-000004-GPOS-00004<GroupDescription></GroupDescription>RHEL-07-030874The Red Hat Enterprise Linux operating system must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/opasswd.<VulnDiscussion>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. -+If the command does not return a line, or the line is commented out, this is a finding.SRG-OS-000004-GPOS-00004<GroupDescription></GroupDescription>RHEL-07-030874The Red Hat Enterprise Linux operating system must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/security/opasswd.<VulnDiscussion>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).</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899SV-87825V-73173CCI-000018CCI-000172CCI-001403CCI-002130Configure the operating system to generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/opasswd. -+Audit records can be generated from various components within the information system (e.g., module or policy filter).</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899SV-87825V-73173CCI-000018CCI-000172CCI-001403CCI-002130Configure the operating system 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 in "/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: --# systemctl restart auditdVerify the operating system must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/opasswd. -+# systemctl restart auditdVerify the operating system must generate 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: - -@@ -3686,7 +3641,7 @@ If there are no lines in the "/etc/rsyslog.conf" or "/etc/rsyslog.d/*.conf" file - - If the lines are commented out or there is no evidence that the audit logs are being sent to another system, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-07-031010The Red Hat Enterprise Linux operating system must be configured so that the rsyslog daemon does not accept log messages from other servers unless the server is being used for log aggregation.<VulnDiscussion>Unintentionally running a rsyslog server accepting remote messages puts the system at increased risk. Malicious rsyslog messages sent to the server could exploit vulnerabilities in the server software itself, could introduce misleading information in to the system's logs, or could fill the system's storage leading to a Denial of Service. - --If the system is intended to be a log aggregation server its use must be documented with the ISSO.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899SV-86835V-72211CCI-000318CCI-001812CCI-001814CCI-001813CCI-000368Modify the "/etc/rsyslog.conf" file to remove the "ModLoad imtcp", "ModLoad imudp", and "ModLoad imrelp" configuration lines, or document the system as being used for log aggregation.Verify that the system is not accepting "rsyslog" messages from other systems unless it is documented as a log aggregation server. -+If the system is intended to be a log aggregation server its use must be documented with the ISSO.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899SV-86835V-72211CCI-000318CCI-000368CCI-001812CCI-001813CCI-001814Modify the "/etc/rsyslog.conf" file to remove the "ModLoad imtcp", "ModLoad imudp", and "ModLoad imrelp" configuration lines, or document the system as being used for log aggregation.Verify that the system is not accepting "rsyslog" messages from other systems unless it is documented as a log aggregation server. - - Check the configuration of "rsyslog" with the following command: - -@@ -3736,15 +3691,15 @@ public (default, active) - - Ask the System Administrator for the site or program PPSM CLSA. Verify the services allowed by the firewall match the PPSM CLSA. - --If there are additional ports, protocols, or services that are not in the PPSM CLSA, or there are ports, protocols, or services that are prohibited by the PPSM Category Assurance List (CAL), this is a finding.SRG-OS-000033-GPOS-00014<GroupDescription></GroupDescription>RHEL-07-040110The Red Hat Enterprise Linux 7 operating system must implement DoD-approved encryption to protect the confidentiality of SSH connections.<VulnDiscussion>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. -+If there are additional ports, protocols, or services that are not in the PPSM CLSA, or there are ports, protocols, or services that are prohibited by the PPSM Category Assurance List (CAL), this is a finding.SRG-OS-000033-GPOS-00014<GroupDescription></GroupDescription>RHEL-07-040110The Red Hat Enterprise Linux 7 operating system must implement DoD-approved encryption to protect the confidentiality of SSH connections.<VulnDiscussion>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. - - Operating 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. - --By specifying a cipher list with the order of ciphers being in a “strongest to weakest” orientation, the system will automatically attempt to use the strongest cipher for securing SSH connections. -+The system will attempt to use the first cipher 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 cipher available to secure the SSH connection. - --Satisfies: SRG-OS-000033-GPOS-00014, SRG-OS-000120-GPOS-00061, SRG-OS-000125-GPOS-00065, SRG-OS-000250-GPOS-00093, SRG-OS-000393-GPOS-00173</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899V-72221SV-86845CCI-000366CCI-000803CCI-000068Configure SSH to use FIPS 140-2 approved cryptographic algorithms. -+Satisfies: SRG-OS-000033-GPOS-00014, SRG-OS-000120-GPOS-00061, SRG-OS-000125-GPOS-00065, SRG-OS-000250-GPOS-00093, SRG-OS-000393-GPOS-00173</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899V-72221SV-86845CCI-000068CCI-000366CCI-000803Configure SSH to use FIPS 140-2 approved cryptographic algorithms. - - Add the following line (or modify the line to have the required value) to the "/etc/ssh/sshd_config" file (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). - -@@ -3797,7 +3752,7 @@ By using this IS (which includes any device attached to this IS), you consent to - - -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-000024-GPOS-00007 , SRG-OS-000228-GPOS-00088</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899V-72225SV-86849CCI-001384CCI-001385CCI-001386CCI-001387CCI-001388CCI-000048CCI-000050Configure the operating system to display the Standard Mandatory DoD Notice and Consent Banner before granting access to the system via the ssh. -+Satisfies: SRG-OS-000023-GPOS-00006, SRG-OS-000024-GPOS-00007 , SRG-OS-000228-GPOS-00088</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899V-72225SV-86849CCI-000048CCI-000050CCI-001384CCI-001385CCI-001386CCI-001387CCI-001388Configure 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: - -@@ -3978,7 +3933,7 @@ This requirement applies to both internal and external networks and all types of - - Protecting the confidentiality and integrity of organizational information can be accomplished by physical means (e.g., employing physical distribution systems) or by logical means (e.g., employing cryptographic techniques). If physical means of protection are employed, logical means (cryptography) do not have to be employed, and vice versa. - --Satisfies: SRG-OS-000423-GPOS-00187, SRG-OS-000424-GPOS-00188, SRG-OS-000425-GPOS-00189, SRG-OS-000426-GPOS-00190</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899SV-86857V-72233CCI-002422CCI-002418CCI-002420CCI-002421Install SSH packages onto the host with the following commands: -+Satisfies: SRG-OS-000423-GPOS-00187, SRG-OS-000424-GPOS-00188, SRG-OS-000425-GPOS-00189, SRG-OS-000426-GPOS-00190</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899SV-86857V-72233CCI-002418CCI-002420CCI-002421CCI-002422Install SSH packages onto the host with the following commands: - - # yum install openssh-server.x86_64Check to see if sshd is installed with the following command: - -@@ -3993,7 +3948,7 @@ This requirement applies to both internal and external networks and all types of - - Protecting the confidentiality and integrity of organizational information can be accomplished by physical means (e.g., employing physical distribution systems) or by logical means (e.g., employing cryptographic techniques). If physical means of protection are employed, then logical means (cryptography) do not have to be employed, and vice versa. - --Satisfies: SRG-OS-000423-GPOS-00187, SRG-OS-000423-GPOS-00188, SRG-OS-000423-GPOS-00189, SRG-OS-000423-GPOS-00190</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899SV-86859V-72235CCI-002421CCI-002422CCI-002418CCI-002420Configure the SSH service to automatically start after reboot with the following command: -+Satisfies: SRG-OS-000423-GPOS-00187, SRG-OS-000423-GPOS-00188, SRG-OS-000423-GPOS-00189, SRG-OS-000423-GPOS-00190</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899SV-86859V-72235CCI-002418CCI-002420CCI-002421CCI-002422Configure the SSH service to automatically start after reboot with the following command: - - # systemctl enable sshd.serviceVerify SSH is loaded and active with the following command: - -@@ -4115,7 +4070,7 @@ IgnoreUserKnownHosts yes - - If the value is returned as "no", the returned line is commented out, or no output is returned, this is a finding.SRG-OS-000074-GPOS-00042<GroupDescription></GroupDescription>RHEL-07-040390The Red Hat Enterprise Linux operating system must be configured so that the SSH daemon is configured to only use the SSHv2 protocol.<VulnDiscussion>SSHv1 is an insecure implementation of the SSH protocol and has many well-known vulnerability exploits. Exploits of the SSH daemon could provide immediate root access to the system. - --Satisfies: SRG-OS-000074-GPOS-00042, SRG-OS-000480-GPOS-00227</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899SV-86875V-72251CCI-000366CCI-000197Remove all Protocol lines that reference version "1" in "/etc/ssh/sshd_config" (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). The "Protocol" line must be as follows: -+Satisfies: SRG-OS-000074-GPOS-00042, SRG-OS-000480-GPOS-00227</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899SV-86875V-72251CCI-000197CCI-000366Remove all Protocol lines that reference version "1" in "/etc/ssh/sshd_config" (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). The "Protocol" line must be as follows: - - Protocol 2 - -@@ -4133,9 +4088,9 @@ Check that the SSH daemon is configured to only use the SSHv2 protocol with the - Protocol 2 - #Protocol 1,2 - --If any protocol line other than "Protocol 2" is uncommented, this is a finding.SRG-OS-000250-GPOS-00093<GroupDescription></GroupDescription>RHEL-07-040400The Red Hat Enterprise Linux operating system must be configured so that the SSH daemon is configured to only use Message Authentication Codes (MACs) employing FIPS 140-2 approved cryptographic hash algorithms.<VulnDiscussion>DoD information systems are required to use FIPS 140-2 approved cryptographic hash functions. The only SSHv2 hash algorithm meeting this requirement is SHA. -+If any protocol line other than "Protocol 2" is uncommented, this is a finding.SRG-OS-000250-GPOS-00093<GroupDescription></GroupDescription>RHEL-07-040400The Red Hat Enterprise Linux operating system must be configured so that the SSH daemon is configured to only use Message Authentication Codes (MACs) employing FIPS 140-2 approved cryptographic hash algorithms.<VulnDiscussion>DoD information systems are required to use FIPS 140-2 approved cryptographic hash functions. The only SSHv2 hash algorithm meeting this requirement is SHA. - --By specifying a hash algorithm list with the order of hashes being in a “strongest to weakest” orientation, the system will automatically attempt to use the strongest hash for securing SSH connections.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899SV-86877V-72253CCI-001453Edit the "/etc/ssh/sshd_config" file to uncomment or add the line for the "MACs" keyword and set its value to "hmac-sha2-512" and/or "hmac-sha2-256" (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): -+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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899SV-86877V-72253CCI-001453Edit the "/etc/ssh/sshd_config" file to uncomment or add the line for the "MACs" keyword and set its value to "hmac-sha2-512" and/or "hmac-sha2-256" (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): - - MACs hmac-sha2-512,hmac-sha2-256 - -@@ -4177,7 +4132,7 @@ The following command will find all SSH private key files on the system and list - -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 file has a mode more permissive than "0640", this is a finding.SRG-OS-000364-GPOS-00151<GroupDescription></GroupDescription>RHEL-07-040430The Red Hat Enterprise Linux operating system must be configured so that the SSH daemon does not permit Generic Security Service Application Program Interface (GSSAPI) authentication unless needed.<VulnDiscussion>GSSAPI authentication is used to provide additional authentication mechanisms to applications. Allowing GSSAPI authentication through SSH exposes the system's GSSAPI to remote hosts, increasing the attack surface of the system. GSSAPI authentication must be disabled unless needed.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899V-72259SV-86883CCI-000318CCI-001812CCI-001813CCI-000368CCI-001814Uncomment the "GSSAPIAuthentication" keyword in "/etc/ssh/sshd_config" (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) and set the value to "no": -+If any file has a mode more permissive than "0640", this is a finding.SRG-OS-000364-GPOS-00151<GroupDescription></GroupDescription>RHEL-07-040430The Red Hat Enterprise Linux operating system must be configured so that the SSH daemon does not permit Generic Security Service Application Program Interface (GSSAPI) authentication unless needed.<VulnDiscussion>GSSAPI authentication is used to provide additional authentication mechanisms to applications. Allowing GSSAPI authentication through SSH exposes the system's GSSAPI to remote hosts, increasing the attack surface of the system. GSSAPI authentication must be disabled unless needed.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899V-72259SV-86883CCI-000318CCI-000368CCI-001812CCI-001813CCI-001814Uncomment the "GSSAPIAuthentication" keyword in "/etc/ssh/sshd_config" (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) and set the value to "no": - - GSSAPIAuthentication no - -@@ -4190,7 +4145,7 @@ Check that the SSH daemon does not permit GSSAPI authentication with the followi - # grep -i gssapiauth /etc/ssh/sshd_config - GSSAPIAuthentication no - --If the "GSSAPIAuthentication" keyword is missing, is set to "yes" and is not documented with the Information System Security Officer (ISSO), or the returned line is commented out, this is a finding.SRG-OS-000364-GPOS-00151<GroupDescription></GroupDescription>RHEL-07-040440The Red Hat Enterprise Linux operating system must be configured so that the SSH daemon does not permit Kerberos authentication unless needed.<VulnDiscussion>Kerberos authentication for SSH is often implemented using Generic Security Service Application Program Interface (GSSAPI). If Kerberos is enabled through SSH, the SSH daemon provides a means of access to the system's Kerberos implementation. Vulnerabilities in the system's Kerberos implementation may then be subject to exploitation. To reduce the attack surface of the system, the Kerberos authentication mechanism within SSH must be disabled for systems not using this capability.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899V-72261SV-86885CCI-000368CCI-001813CCI-001812CCI-001814CCI-000318Uncomment the "KerberosAuthentication" keyword in "/etc/ssh/sshd_config" (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) and set the value to "no": -+If the "GSSAPIAuthentication" keyword is missing, is set to "yes" and is not documented with the Information System Security Officer (ISSO), or the returned line is commented out, this is a finding.SRG-OS-000364-GPOS-00151<GroupDescription></GroupDescription>RHEL-07-040440The Red Hat Enterprise Linux operating system must be configured so that the SSH daemon does not permit Kerberos authentication unless needed.<VulnDiscussion>Kerberos authentication for SSH is often implemented using Generic Security Service Application Program Interface (GSSAPI). If Kerberos is enabled through SSH, the SSH daemon provides a means of access to the system's Kerberos implementation. Vulnerabilities in the system's Kerberos implementation may then be subject to exploitation. To reduce the attack surface of the system, the Kerberos authentication mechanism within SSH must be disabled for systems not using this capability.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899V-72261SV-86885CCI-000318CCI-000368CCI-001812CCI-001813CCI-001814Uncomment the "KerberosAuthentication" keyword in "/etc/ssh/sshd_config" (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) and set the value to "no": - - KerberosAuthentication no - -@@ -4603,7 +4558,7 @@ Check to see if an FTP server has been installed with the following commands: - - vsftpd-3.0.2.el7.x86_64.rpm - --If "vsftpd" is installed and is not documented with the Information System Security Officer (ISSO) as an operational requirement, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-07-040700The Red Hat Enterprise Linux operating system must not have the Trivial File Transfer Protocol (TFTP) server package installed if not required for operational support.<VulnDiscussion>If TFTP is required for operational support (such as the transmission of router configurations) its use must be documented with the Information System Security Officer (ISSO), restricted to only authorized personnel, and have access control rules established.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899SV-86925V-72301CCI-000368CCI-001813CCI-001814CCI-001812CCI-000318Remove the TFTP package from the system with the following command: -+If "vsftpd" is installed and is not documented with the Information System Security Officer (ISSO) as an operational requirement, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-07-040700The Red Hat Enterprise Linux operating system must not have the Trivial File Transfer Protocol (TFTP) server package installed if not required for operational support.<VulnDiscussion>If TFTP is required for operational support (such as the transmission of router configurations) its use must be documented with the Information System Security Officer (ISSO), restricted to only authorized personnel, and have access control rules established.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899SV-86925V-72301CCI-000318CCI-000368CCI-001812CCI-001813CCI-001814Remove the TFTP package from the system with the following command: - - # yum remove tftp-serverVerify a TFTP server has not been installed on the system. - -@@ -4798,7 +4753,7 @@ Remote access is access to DoD nonpublic information systems by an authorized us - - 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). - --Satisfies: SRG-OS-000375-GPOS-00160, SRG-OS-000375-GPOS-00161, SRG-OS-000375-GPOS-00162</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899SV-87041V-72417CCI-001953CCI-001954CCI-001948Configure the operating system to implement multifactor authentication by installing the required packages. -+Satisfies: SRG-OS-000375-GPOS-00160, SRG-OS-000375-GPOS-00161, SRG-OS-000375-GPOS-00162</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899SV-87041V-72417CCI-001948CCI-001953CCI-001954Configure the operating system to implement multifactor authentication by installing the required packages. - - Install the pam_pkcs11 package with the following command: - -@@ -4819,7 +4774,7 @@ Remote access is access to DoD nonpublic information systems by an authorized us - - 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). - --Satisfies: SRG-OS-000375-GPOS-00160, SRG-OS-000375-GPOS-00161, SRG-OS-000375-GPOS-00162</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899V-72427SV-87051CCI-001948CCI-001954CCI-001953Configure the operating system to implement multifactor authentication for remote access to privileged accounts via pluggable authentication modules (PAM). -+Satisfies: SRG-OS-000375-GPOS-00160, SRG-OS-000375-GPOS-00161, SRG-OS-000375-GPOS-00162</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899V-72427SV-87051CCI-001948CCI-001953CCI-001954Configure the operating system to implement multifactor authentication for remote access to privileged accounts via pluggable authentication modules (PAM). - - Modify all of the services lines in "/etc/sssd/sssd.conf" or in configuration files found under "/etc/sssd/conf.d" to include pam.Verify the operating system implements multifactor authentication for remote access to privileged accounts via pluggable authentication modules (PAM). - -@@ -4839,7 +4794,7 @@ Remote access is access to DoD nonpublic information systems by an authorized us - - 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). - --Satisfies: SRG-OS-000375-GPOS-00160, SRG-OS-000375-GPOS-00161, SRG-OS-000375-GPOS-00162</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899V-72433SV-87057CCI-001954CCI-001953CCI-001948Configure the operating system to do certificate status checking for PKI authentication. -+Satisfies: SRG-OS-000375-GPOS-00160, SRG-OS-000375-GPOS-00161, SRG-OS-000375-GPOS-00162</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899V-72433SV-87057CCI-001948CCI-001953CCI-001954Configure the operating system to do certificate status checking for PKI authentication. - - Modify all of the "cert_policy" lines in "/etc/pam_pkcs11/pam_pkcs11.conf" to include "ocsp_on".Verify the operating system implements certificate status checking for PKI authentication. - -@@ -4887,30 +4842,20 @@ Note: System configuration files (indicated by a "c" in the second column) are e - - # rpm -Va --noconfig | grep '^..5' - --If there is any output from the command for system files or binaries, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-07-020019The Red Hat Enterprise Linux operating system must have a host-based intrusion detection tool installed.<VulnDiscussion>Adding host-based intrusion detection tools can provide the capability to automatically take actions in response to malicious behavior, which can provide additional agility in reacting to network threats. These tools also often include a reporting capability to provide network awareness of the system, which may not otherwise exist in an organization's systems management regime.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899V-92255SV-102357CCI-001263Install and enable the latest McAfee HIPS package or McAfee ENSL.Per OPORD 16-0080, the preferred intrusion detection system is McAfee Host Intrusion Prevention System (HIPS) in conjunction with SELinux. McAfee Endpoint Security for Linux (ENSL) is an approved alternative to McAfee Virus Scan Enterprise (VSE) and HIPS. For RHEL 7 systems, SELinux is an approved alternative to McAfee HIPS. -+If there is any output from the command for system files or binaries, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-07-020019The Red Hat Enterprise Linux operating system must implement the Endpoint Security for Linux Threat Prevention tool.<VulnDiscussion>Adding endpoint security tools can provide the capability to automatically take actions in response to malicious behavior, which can provide additional agility in reacting to network threats. These tools also often include a reporting capability to provide network awareness of the system, which may not otherwise exist in an organization's systems management regime.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899V-92255SV-102357CCI-001263Install and enable the latest McAfee ENSLTP package.Per OPORD 16-0080, the preferred endpoint security tool is McAfee Endpoint Security for Linux (ENSL) in conjunction with SELinux. - - Procedure: --Examine the system to determine if the Host Intrusion Prevention System (HIPS) is installed: -- --# rpm -qa | grep MFEhiplsm -- --Verify that the McAfee HIPS module is active on the system: -+Check that the following package has been installed: - --# ps -ef | grep -i “hipclient” -+# rpm -qa | grep -i mcafeetp - --If the MFEhiplsm package is not installed, check for another intrusion detection system: -+If the "mcafeetp" package is not installed, this is a finding. - --# find / -name <daemon name> -+Verify that the daemon is running: - --Where <daemon name> is the name of the primary application daemon to determine if the application is loaded on the system. -+# ps -ef | grep -i mfetpd - --Determine if the application is active on the system: -- --# ps -ef | grep -i <daemon name> -- --If the MFEhiplsm package is not installed and an alternate host-based intrusion detection application has not been documented for use, this is a finding. -- --If no host-based intrusion detection system is installed and running on the system, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-07-032000The Red Hat Enterprise Linux operating system must use a virus scan program.<VulnDiscussion>Virus scanning software can be used to protect a system from penetration from computer viruses and to limit their spread through intermediate systems. -+If the daemon is not running, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-07-032000The Red Hat Enterprise Linux operating system must use a virus scan program.<VulnDiscussion>Virus scanning software can be used to protect a system from penetration from computer viruses and to limit their spread through intermediate systems. - - The virus scanning software should be configured to perform scans dynamically on accessed files. If this capability is not available, the system must be configured to scan, at a minimum, all altered files on the system on a daily basis. - -@@ -4951,7 +4896,7 @@ Note: The example below is using the database "local" for the system, so the pat - If the command does not return a result, this is a finding. - SRG-OS-000114-GPOS-00059<GroupDescription></GroupDescription>RHEL-07-020111The Red Hat Enterprise Linux operating system must disable the graphical user interface automounter unless required.<VulnDiscussion>Automatically mounting file systems permits easy introduction of unknown devices, thereby facilitating malicious activity. - --Satisfies: SRG-OS-000114-GPOS-00059, SRG-OS-000378-GPOS-00163, SRG-OS-000480-GPOS-00227</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899V-100023SV-109127CCI-001958CCI-000778CCI-000366Configure the graphical user interface to disable the ability to automount devices. -+Satisfies: SRG-OS-000114-GPOS-00059, SRG-OS-000378-GPOS-00163, SRG-OS-000480-GPOS-00227</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899V-100023SV-109127CCI-000366CCI-000778CCI-001958Configure the graphical user interface to disable the ability to automount devices. - - 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. - -@@ -5001,19 +4946,19 @@ If the output does not match the example above, this is a finding. - - /org/gnome/desktop/media-handling/autorun-never - --If the output does not match the example, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-07-021031The Red Hat Enterprise Linux operating system must be configured so that all world-writable directories are owned by root, sys, bin, or an application user.<VulnDiscussion>If a world-writable directory has the sticky bit set and 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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899CCI-000366All 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.The following command will discover and print world-writable directories that are not owned by a system account, assuming only system accounts have a UID lower than 1000. Run it once for each local partition [PART]: -- --# find [PART] -xdev -type d -perm -0002 -uid +999 -print -- -+If the output does not match the example, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-07-021031The Red Hat Enterprise Linux operating system must be configured so that all world-writable directories are owned by root, sys, bin, or an application user.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899CCI-000366All 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.The following command will discover and print world-writable directories that are not owned by a system account, assuming only system accounts have a UID lower than 1000. Run it once for each local partition [PART]: -+ -+# find [PART] -xdev -type d -perm -0002 -uid +999 -print -+ - If there is output, this is a finding.SRG-OS-000057-GPOS-00027<GroupDescription></GroupDescription>RHEL-07-910055The Red Hat Enterprise Linux operating system must protect audit information from unauthorized read, modification, or deletion.<VulnDiscussion>If audit information were to become compromised, then forensic analysis and discovery of the true source of potentially malicious system activity is impossible to achieve. - - To ensure the veracity of audit information, the operating system must protect audit information from unauthorized modification. - - Audit information includes all information (e.g., audit records, audit settings, audit reports) needed to successfully audit information system activity. - --Satisfies: SRG-OS-000057-GPOS-00027, SRG-OS-000058-GPOS-00028, SRG-OS-000059-GPOS-00029, SRG-OS-000206-GPOS-00084</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899CCI-001314CCI-000162CCI-000163CCI-000164Change the mode of the audit log files with the following command: -+Satisfies: SRG-OS-000057-GPOS-00027, SRG-OS-000058-GPOS-00028, SRG-OS-000059-GPOS-00029, SRG-OS-000206-GPOS-00084</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899CCI-000162CCI-000163CCI-000164CCI-001314Change the mode of the audit log files with the following command: - - # chmod 0600 [audit_file] - -@@ -5080,4 +5025,36 @@ Note: The "[value]" must be a number that is greater than or equal to "0". -\ No newline at end of file -+If "timestamp_timeout" is set to a negative number, is commented out, or no results are returned, this is a finding.SRG-OS-000080-GPOS-00048<GroupDescription></GroupDescription>RHEL-07-010483Red Hat Enterprise Linux operating systems version 7.2 or newer booted with a BIOS must have a unique name for the grub superusers account when booting into single-user and maintenance modes.<VulnDiscussion>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 7 and is designed to require a password to boot into single-user mode or make modifications to the boot menu.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899CCI-000213Configure the system to have a unique name for the grub superusers account. -+ -+Edit the /boot/grub2/grub.cfg file and add or modify the following lines in the "### BEGIN /etc/grub.d/01_users ###" section: -+ -+set superusers="[someuniquestringhere]" -+export superusers -+password_pbkdf2 [someuniquestringhere] ${GRUB2_PASSWORD}For systems that use UEFI, this is Not Applicable. -+ -+For systems that are running a version of RHEL prior to 7.2, this is Not Applicable. -+ -+Verify that a unique name is set as the "superusers" account: -+ -+# grep -iw "superusers" /boot/grub2/grub.cfg -+ set superusers="[someuniquestringhere]" -+ export superusers -+ -+If "superusers" is not set to a unique name or is missing a name, this is a finding.SRG-OS-000080-GPOS-00048<GroupDescription></GroupDescription>RHEL-07-010492Red Hat Enterprise Linux operating systems version 7.2 or newer booted with United Extensible Firmware Interface (UEFI) must have a unique name for the grub superusers account when booting into single-user mode and maintenance.<VulnDiscussion>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 7 and is designed to require a password to boot into single-user mode or make modifications to the boot menu.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 7DISADPMS TargetRed Hat Enterprise Linux 72899CCI-000213Configure the system to have a unique name for the grub superusers account. -+ -+Edit the /boot/efi/EFI/redhat/grub.cfg file and add or modify the following lines in the "### BEGIN /etc/grub.d/01_users ###" section: -+ -+set superusers="[someuniquestringhere]" -+export superusers -+password_pbkdf2 [someuniquestringhere] ${GRUB2_PASSWORD}For systems that use BIOS, this is Not Applicable. -+ -+For systems that are running a version of RHEL prior to 7.2, this is Not Applicable. -+ -+Verify that a unique name is set as the "superusers" account: -+ -+$ sudo grep -iw "superusers" /boot/efi/EFI/redhat/grub.cfg -+ set superusers="[someuniquestringhere]" -+ export superusers -+ -+If "superusers" is not set to a unique name or is missing a name, this is a finding. -\ No newline at end of file -diff --git a/shared/references/disa-stig-rhel8-v1r2-xccdf-manual.xml b/shared/references/disa-stig-rhel8-v1r3-xccdf-manual.xml -similarity index 78% -rename from shared/references/disa-stig-rhel8-v1r2-xccdf-manual.xml -rename to shared/references/disa-stig-rhel8-v1r3-xccdf-manual.xml -index 1a6d105ee2b..abff501bb0e 100644 ---- a/shared/references/disa-stig-rhel8-v1r2-xccdf-manual.xml -+++ b/shared/references/disa-stig-rhel8-v1r3-xccdf-manual.xml -@@ -1,28 +1,30 @@ --acceptedRed Hat Enterprise Linux 8 Security Technical Implementation GuideThis 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: disa.stig_spt@mail.mil.DISASTIG.DOD.MILRelease: 2 Benchmark Date: 23 Apr 20213.2.2.360791.10.01I - Mission Critical Classified<ProfileDescription></ProfileDescription>I - Mission Critical Sensitive<ProfileDescription></ProfileDescription>II - Mission Support Public<ProfileDescription></ProfileDescription>III - Administrative Classified<ProfileDescription></ProfileDescription>III - Administrative Sensitive<ProfileDescription></ProfileDescription>I - Mission Critical Public<ProfileDescription></ProfileDescription>II - Mission Support Classified<ProfileDescription></ProfileDescription>II - Mission Support Sensitive<ProfileDescription></ProfileDescription>III - Administrative Public<ProfileDescription></ProfileDescription>SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-010000RHEL 8 must be a vendor-supported release.<VulnDiscussion>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) ad-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. For more details on the Red Hat Enterprise Linux Life Cycle visit https://access.redhat.com/support/policy/updates/errata.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Upgrade to a supported version of RHEL 8.Verify the version of the operating system is vendor supported. -+Red Hat offers the Extended Update Support (EUS) ad-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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Upgrade to a supported version of RHEL 8.Verify the version of the operating system is vendor supported. - - Check the version of the operating system with the following command: - - $ sudo cat /etc/redhat-release - --Red Hat Enterprise Linux Server release 8.1 (Ootpa) -+Red Hat Enterprise Linux Server release 8.4 (Ootpa) - --Current End of Maintenance Support for RHEL 8.1 is 30 April 2020. -+Current End of Extended Update Support for RHEL 8.1 is 30 November 2021. - --Current End of Maintenance Support for RHEL 8.2 is 30 November 2020. -+Current End of Extended Update Support for RHEL 8.2 is 30 April 2022. - --Current End of Maintenance Support for RHEL 8.3 is 30 April 2021. -- --Current End of Maintenance Support for RHEL 8.4 is 30 November 2021. -+Current End of Extended Update Support for RHEL 8.4 is 30 April 2023. - - Current End of Maintenance Support for RHEL 8.5 is 30 April 2022. - --Current End of Maintenance Support for RHEL 8.6 is 30 November 2022. -+Current End of Extended Update Support for RHEL 8.6 is 30 April 2024. - - Current End of Maintenance Support for RHEL 8.7 is 30 April 2023. - --Current End of Maintenance Support for RHEL 8.8 is 30 November 2023. -+Current End of Extended Update Support for RHEL 8.8 is 30 April 2025. -+ -+Current End of Maintenance Support for RHEL 8.9 is 30 April 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.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-010010RHEL 8 vendor packaged system security patches and updates must be installed and up to date.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Install the operating system patches or updated packages available from Red Hat within 30 days or sooner as local policy dictates.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). - -@@ -168,7 +170,7 @@ View the file specified by the banner keyword to check that it matches the text - - 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.SRG-OS-000023-GPOS-00006<GroupDescription></GroupDescription>RHEL-08-010050RHEL 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.<VulnDiscussion>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. -+If the text in the file does not match the Standard Mandatory DoD Notice and Consent Banner, this is a finding.SRG-OS-000023-GPOS-00006<GroupDescription></GroupDescription>RHEL-08-010050RHEL 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.<VulnDiscussion>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. - -@@ -188,38 +190,22 @@ By using this IS (which includes any device attached to this IS), you consent to - - -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</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000048Configure the operating system to display the Standard Mandatory DoD Notice and Consent Banner before granting access to the system. -+Satisfies: SRG-OS-000023-GPOS-00006, SRG-OS-000228-GPOS-00088</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000048Configure 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. - --Create a database to contain the system-wide graphical user logon settings (if it does not already exist) with the following command: -- --$ sudo touch /etc/dconf/db/local.d/01-banner-message -- - Add the following lines to the [org/gnome/login-screen] section of the "/etc/dconf/db/local.d/01-banner-message": - --[org/gnome/login-screen] -- --banner-message-enable=true -- - 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 updateVerify RHEL 8 displays the Standard Mandatory DoD Notice and Consent Banner before granting access to the operating system via a graphical user logon. -+$ sudo dconf updateVerify 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 to see if the operating system displays a banner at the logon screen with the following command: -- --$ sudo grep banner-message-enable /etc/dconf/db/local.d/* -- --banner-message-enable=true -- --If "banner-message-enable" is set to "false" or is missing, this is a finding. -- - 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/* -@@ -372,105 +358,71 @@ $ 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.SRG-OS-000073-GPOS-00041<GroupDescription></GroupDescription>RHEL-08-010130RHEL 8 must employ FIPS 140-2 approved cryptographic hashing algorithms for all created passwords.<VulnDiscussion>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. -+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.SRG-OS-000073-GPOS-00041<GroupDescription></GroupDescription>RHEL-08-010130The RHEL 8 password-auth file must be configured to use a sufficient number of hashing rounds.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000196Configure RHEL 8 to encrypt all stored passwords with a strong cryptographic hash. -+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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000196Configure RHEL 8 to encrypt all stored passwords with a strong cryptographic hash. - --Edit/modify the following line in the "/etc/pam.d/password-auth" and "etc/pam.d/system-auth" files and set "rounds" to a value no lower than "5000": -+Edit/modify the following line in the "/etc/pam.d/password-auth" file and set "rounds" to a value no lower than "5000": - --password sufficient pam_unix.so sha512 rounds=5000Check that a minimum number of hash rounds is configured by running the following commands: -+password sufficient pam_unix.so sha512 rounds=5000Check that a minimum number of hash rounds is configured by running the following command: - - $ sudo grep rounds /etc/pam.d/password-auth - - password sufficient pam_unix.so sha512 rounds=5000 - --$ sudo grep rounds /etc/pam.d/system-auth -- --password sufficient pam_unix.so sha512 rounds=5000 -- --If "rounds" has a value below "5000", or is commented out in either file, this is a finding.SRG-OS-000080-GPOS-00048<GroupDescription></GroupDescription>RHEL-08-010140RHEL 8 operating systems booted with United Extensible Firmware Interface (UEFI) implemented must require authentication upon booting into single-user mode and maintenance.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000213Configure the system to require a grub bootloader password for the grub superuser account. -+If "rounds" has a value below "5000", or is commented out, this is a finding.SRG-OS-000080-GPOS-00048<GroupDescription></GroupDescription>RHEL-08-010140RHEL 8 operating systems booted with United Extensible Firmware Interface (UEFI) must require authentication upon booting into single-user mode and maintenance.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000213Configure 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 superuser account with the following command: -+Generate an encrypted grub2 password for the grub superusers account with the following command: - - $ sudo grub2-setpassword - Enter password: --Confirm password: -- --Edit the /boot/efi/EFI/redhat/grub.cfg file and add or modify the following lines in the "### BEGIN /etc/grub.d/01_users ###" section: -- --set superusers="[someuniquestringhere]" --export superusersFor systems that use BIOS, this is Not Applicable. -+Confirm password:For systems that use BIOS, this is Not Applicable. - --Check to see if an encrypted root password is set. On systems that use UEFI, use the following command: -+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 root password does not begin with "grub.pbkdf2.sha512", this is a finding. -- --Verify that a unique account name is set as the "superusers": -- --$ sudo grep -iw "superusers" /boot/efi/EFI/redhat/grub.cfg --set superusers="[someuniquestringhere]" --export superusers -- --If "superusers" is not set to a unique name or is missing a name, this is a finding.SRG-OS-000080-GPOS-00048<GroupDescription></GroupDescription>RHEL-08-010150RHEL 8 operating systems booted with a BIOS must require authentication upon booting into single-user and maintenance modes.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000213Configure the system to require a grub bootloader password for the grub superuser account. -+If the grub superusers password does not begin with "grub.pbkdf2.sha512", this is a finding.SRG-OS-000080-GPOS-00048<GroupDescription></GroupDescription>RHEL-08-010150RHEL 8 operating systems booted with a BIOS must require authentication upon booting into single-user and maintenance modes.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000213Configure 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 superuser account with the following command: -+Generate an encrypted grub2 password for the grub superusers account with the following command: - - $ sudo grub2-setpassword - Enter password: --Confirm password: -- --Edit the /boot/grub2/grub.cfg file and add or modify the following lines in the "### BEGIN /etc/grub.d/01_users ###" section: -+Confirm password:For systems that use UEFI, this is Not Applicable. - --set superusers="[someuniquestringhere]" --export superusersFor systems that use UEFI, this is Not Applicable. -- --Check to see if an encrypted root password is set. On systems that use a BIOS, use the following command: -+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 root password does not begin with "grub.pbkdf2.sha512", this is a finding. -- --Verify that a unique name is set as the "superusers": -- --$ sudo grep -iw "superusers" /boot/grub2/grub.cfg --set superusers="[someuniquestringhere]" --export superusers -- --If "superusers" is not set to a unique name or is missing a name, this is a finding.SRG-OS-000080-GPOS-00048<GroupDescription></GroupDescription>RHEL-08-010151RHEL 8 operating systems must require authentication upon booting into emergency or rescue modes.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000213Configure the system to require authentication upon booting into emergency or rescue mode by adding the following line to the "/usr/lib/systemd/system/rescue.service" file. -+If the grub superusers password does not begin with "grub.pbkdf2.sha512", this is a finding.SRG-OS-000080-GPOS-00048<GroupDescription></GroupDescription>RHEL-08-010151RHEL 8 operating systems must require authentication upon booting into rescue mode.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000213Configure 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 rescueCheck to see if the system requires authentication for rescue or emergency mode with the following command: -+ExecStart=-/usr/lib/systemd/systemd-sulogin-shell rescueCheck 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.SRG-OS-000120-GPOS-00061<GroupDescription></GroupDescription>RHEL-08-010160The RHEL 8 pam_unix.so module must use a FIPS 140-2 approved cryptographic hashing algorithm for system authentication.<VulnDiscussion>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. -+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.SRG-OS-000120-GPOS-00061<GroupDescription></GroupDescription>RHEL-08-010160The 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.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000803Configure RHEL 8 to use a FIPS 140-2 approved cryptographic hashing algorithm for system authentication. -+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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000803Configure RHEL 8 to use a FIPS 140-2 approved cryptographic hashing algorithm for system authentication. - --Edit/modify the following line in the file "/etc/pam.d/password-auth" and "/etc/pam.d/system-auth" files to include the sha512 option for pam_unix.so: -+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 rounds=5000 shadow remember=5Verify that pam_unix.so auth is configured to use sha512. -+password sufficient pam_unix.so sha512 rounds=5000Verify that the pam_unix.so module is configured to use sha512. - --Check that pam_unix.so auth is configured to use sha512 in both /etc/pam.d/password-auth and /etc/pam.d/system-auth with the following command: -+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 rounds=5000 - --$ sudo grep password /etc/pam.d/system-auth | grep pam_unix -- --password sufficient pam_unix.so sha512 rounds=5000 -- --If "sha512" is not an option in both outputs, or is commented out, this is a finding.SRG-OS-000120-GPOS-00061<GroupDescription></GroupDescription>RHEL-08-010161RHEL 8 must prevent system daemons from using Kerberos for authentication.<VulnDiscussion>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. -+If "sha512" is missing, or is commented out, this is a finding.SRG-OS-000120-GPOS-00061<GroupDescription></GroupDescription>RHEL-08-010161RHEL 8 must prevent system daemons from using Kerberos for authentication.<VulnDiscussion>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. - -@@ -558,31 +510,30 @@ $ sudo find / -type d \( -perm -0002 -a ! -perm -1000 \) -print 2>/dev/null - - drwxrwxrwxt 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.SRG-OS-000163-GPOS-00072<GroupDescription></GroupDescription>RHEL-08-010200RHEL 8 must be configured so that all network connections associated with SSH traffic are terminated at the end of the session or after 10 minutes of inactivity, except to fulfill documented and validated mission requirements.<VulnDiscussion>Terminating an idle SSH session within a short time period reduces the window of opportunity for unauthorized personnel to take control of a management session enabled on the console or console port that has been left unattended. In addition, quickly terminating an idle SSH session will also free up resources committed by the managed network element. -+If any of the returned directories are world-writable and do not have the sticky bit set, this is a finding.SRG-OS-000163-GPOS-00072<GroupDescription></GroupDescription>RHEL-08-010200RHEL 8 must be configured so that all network connections associated with SSH traffic are terminated at the end of the session or after 10 minutes of inactivity, except to fulfill documented and validated mission requirements.<VulnDiscussion>Terminating an idle SSH session within a short time period reduces the window of opportunity for unauthorized personnel to take control of a management session enabled on the console or console port that has been left unattended. In addition, quickly terminating an idle SSH session will also free up resources committed by the managed network element. - - 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 that the operating system terminates all sessions or network access; it only ends the inactive session and releases the resources associated with that session. - --RHEL 8 utilizes /etc/ssh/sshd_config for configurations of OpenSSH. Within the sshd_config the product of the values of "ClientAliveInterval" and "ClientAliveCountMax" are used to establish the inactivity threshold. The "ClientAliveInterval" is a timeout interval in seconds after which if no data has been received from the client, sshd will send a message through the encrypted channel to request a response from the client. The "ClientAliveCountMax" is the number of client alive messages that may be sent without sshd receiving any messages back from the client. If this threshold is met, sshd will disconnect the client. The default setting for "ClientAliveCountMax" is "3". If "ClientAliveInterval is set to "15" and "ClientAliveCountMax" is left at the default, unresponsive SSH clients will be disconnected after approximately 45 seconds. -+RHEL 8 utilizes /etc/ssh/sshd_config for configurations of OpenSSH. Within the sshd_config the product of the values of "ClientAliveInterval" and "ClientAliveCountMax" are used to establish the inactivity threshold. The "ClientAliveInterval" is a timeout interval in seconds after which if no data has been received from the client, sshd will send a message through the encrypted channel to request a response from the client. The "ClientAliveCountMax" is the number of client alive messages that may be sent without sshd receiving any messages back from the client. If this threshold is met, sshd will disconnect the client. For more information on these settings and others, refer to the sshd_config man pages. - --Satisfies: SRG-OS-000163-GPOS-00072, SRG-OS-000126-GPOS-00066, SRG-OS-000279-GPOS-00109</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-001133Configure RHEL 8 to automatically terminate all network connections associated with SSH traffic at the end of a session or after 10 minutes of inactivity. -+Satisfies: SRG-OS-000163-GPOS-00072, SRG-OS-000126-GPOS-00066, SRG-OS-000279-GPOS-00109</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-001133Configure RHEL 8 to automatically terminate all network connections associated with SSH traffic at the end of a session or after 10 minutes of inactivity. - --Modify or append the following lines in the "/etc/ssh/sshd_config" file to have a product value of "600" or less: -+Modify or append the following lines in the "/etc/ssh/sshd_config" file: - --ClientAliveInterval 600 - ClientAliveCountMax 0 - - In order for the changes to take effect, the SSH daemon must be restarted. - --$ sudo systemctl restart sshd.serviceVerify all network connections associated with SSH traffic are automatically terminated at the end of the session or after 10 minutes of inactivity. -+$ sudo systemctl restart sshd.serviceVerify all network connections associated with SSH traffic are automatically terminated at the end of the session or after 10 minutes of inactivity. - --Check that the "ClientAliveInterval" variable is set to a value of "600" or less and that the "ClientAliveCountMax" is set to "0" by performing the following command: -+Check that the "ClientAliveCountMax" is set to "0" by performing the following command: - - $ sudo grep -i clientalive /etc/ssh/sshd_config - - ClientAliveInterval 600 - ClientAliveCountMax 0 - --If "ClientAliveInterval" and "ClientAliveCountMax" do not exist, does not have a product value of "600" or less in "/etc/ssh/sshd_config", or is commented out, this is a finding.SRG-OS-000206-GPOS-00084<GroupDescription></GroupDescription>RHEL-08-010210The RHEL 8 /var/log/messages file must have mode 0640 or less permissive.<VulnDiscussion>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. -+If "ClientAliveCountMax" do not exist, is not set to a value of "0" in "/etc/ssh/sshd_config", or is commented out, this is a finding.SRG-OS-000206-GPOS-00084<GroupDescription></GroupDescription>RHEL-08-010210The RHEL 8 /var/log/messages file must have mode 0640 or less permissive.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-001314Change the permissions of the file "/var/log/messages" to "0640" by running the following command: - -@@ -642,96 +593,47 @@ $ sudo stat -c "%G" /var/log - - root - --If "root" is not returned as a result, this is a finding.SRG-OS-000250-GPOS-00093<GroupDescription></GroupDescription>RHEL-08-010290The RHEL 8 SSH daemon must be configured to use only Message Authentication Codes (MACs) employing FIPS 140-2 validated cryptographic hash algorithms.<VulnDiscussion>Without cryptographic integrity protections, information can be altered by unauthorized users without detection. -+If "root" is not returned as a result, this is a finding.SRG-OS-000250-GPOS-00093<GroupDescription></GroupDescription>RHEL-08-010290The RHEL 8 SSH server must be configured to use only Message Authentication Codes (MACs) employing FIPS 140-2 validated cryptographic hash algorithms.<VulnDiscussion>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/openssh.config file. -- --By specifying a hash algorithm list with the order of hashes being in a “strongest to weakest” orientation, the system will automatically attempt to use the strongest hash for securing SSH connections. -- --Satisfies: SRG-OS-000250-GPOS-00093, SRG-OS-000393-GPOS-00173, SRG-OS-000394-GPOS-00174, SRG-OS-000125-GPOS-00065</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-001453Configure the RHEL 8 SSH daemon to use only MACs employing FIPS 140-2-approved algorithms with the following commands: -- --$ sudo fips-mode-setup --enable -- --Next, update the "/etc/crypto-policies/back-ends/openssh.config" --and "/etc/crypto-policies/back-ends/opensshserver.config" files to include these MACs employing FIPS 140-2-approved algorithms: -- --/etc/crypto-policies/back-ends/openssh.config:MACs hmac-sha2-512,hmac-sha2-256 --/etc/crypto-policies/back-ends/opensshserver.config:CRYPTO_POLICY='-oCiphers=aes256-ctr,aes192-ctr,aes128-ctr -oMACS=hmac-sha2-512,hmac-sha2-256' --/etc/crypto-policies/back-ends/opensshserver.config:CRYPTO_POLICY='-oCiphers=aes256-ctr,aes192-ctr,aes128-ctr -oMACS=hmac-sha2-512,hmac-sha2-256' -- --A reboot is required for the changes to take effect.Verify the SSH daemon is configured to use only MACs employing FIPS 140-2-approved algorithms: -- --Verify that system-wide crypto policies are in effect: -- --$ sudo grep -i crypto_policy /etc/sysconfig/sshd -+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. - --# crypto_policy= -- --If the "crypto_policy" is uncommented, this is a finding. -- --Verify which system-wide crypto policy is in use: -+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. - --$ sudo update-crypto-policies --show -+Satisfies: SRG-OS-000250-GPOS-00093, SRG-OS-000393-GPOS-00173, SRG-OS-000394-GPOS-00174, SRG-OS-000125-GPOS-00065</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-001453Configure 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: - --FIPS -+-oMACS=hmac-sha2-512,hmac-sha2-256 - --Check that the MACs in the back-end configurations are FIPS 140-2-approved algorithms with the following command: -+A reboot is required for the changes to take effect.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/openssh.config /etc/crypto-policies/back-ends/opensshserver.config -+$ sudo grep -i macs /etc/crypto-policies/back-ends/opensshserver.config - --/etc/crypto-policies/back-ends/openssh.config:MACs hmac-sha2-512,hmac-sha2-256 --/etc/crypto-policies/back-ends/opensshserver.config:CRYPTO_POLICY='-oCiphers=aes256-ctr,aes192-ctr,aes128-ctr -oMACS=hmac-sha2-512,hmac-sha2-256' --/etc/crypto-policies/back-ends/opensshserver.config:CRYPTO_POLICY='-oCiphers=aes256-ctr,aes192-ctr,aes128-ctr -oMACS=hmac-sha2-512,hmac-sha2-256' -+-oMACS=hmac-sha2-512,hmac-sha2-256 - --If the MAC entries in the "openssh.config" and "opensshserver.config" files have any hashes other than "hmac-sha2-512" and "hmac-sha2-256", the order differs from the example above, if they are missing, or commented out, this is a finding.SRG-OS-000250-GPOS-00093<GroupDescription></GroupDescription>RHEL-08-010291The RHEL 8 operating system must implement DoD-approved encryption to protect the confidentiality of SSH connections.<VulnDiscussion>Without cryptographic integrity protections, information can be altered by unauthorized users without detection. -+If the MACs entries in the "opensshserver.config" file have any hashes other than "hmac-sha2-512" and "hmac-sha2-256", the order differs from the example above, they are missing, or commented out, this is a finding.SRG-OS-000250-GPOS-00093<GroupDescription></GroupDescription>RHEL-08-010291The RHEL 8 operating system must implement DoD-approved encryption to protect the confidentiality of SSH server connections.<VulnDiscussion>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/openssh.config file. -- --By specifying a cipher list with the order of ciphers being in a “strongest to weakest” orientation, the system will automatically attempt to use the strongest cipher for securing SSH connections. -- --Satisfies: SRG-OS-000250-GPOS-00093, SRG-OS-000393-GPOS-00173, SRG-OS-000394-GPOS-00174, SRG-OS-000125-GPOS-00065</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-001453Configure the RHEL 8 SSH daemon to use only ciphers employing FIPS 140-2-approved algorithms with the following command: -+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. - --$ sudo fips-mode-setup --enable -- --Next, update the "/etc/crypto-policies/back-ends/openssh.config" and "/etc/crypto-policies/back-ends/opensshserver.config" files to include these ciphers employing FIPS 140-2-approved algorithms: -- --/etc/crypto-policies/back-ends/openssh.config:Ciphers aes256-ctr,aes192-ctr,aes128-ctr --/etc/crypto-policies/back-ends/opensshserver.config:CRYPTO_POLICY='-oCiphers=aes256-ctr,aes192-ctr,aes128-ctr' --/etc/crypto-policies/back-ends/opensshserver.config:CRYPTO_POLICY='-oCiphers=aes256-ctr,aes192-ctr,aes128-ctr' -- --A reboot is required for the changes to take effect.Verify the SSH daemon is configured to use only ciphers employing FIPS 140-2-approved algorithms: -- --Verify that system-wide crypto policies are in effect: -- --$ sudo grep -i crypto_policy /etc/sysconfig/sshd -+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. - --# crypto_policy= -- --If the "crypto_policy" is uncommented, this is a finding. -- --Verify which system-wide crypto policy is in use: -+Satisfies: SRG-OS-000250-GPOS-00093, SRG-OS-000393-GPOS-00173, SRG-OS-000394-GPOS-00174, SRG-OS-000125-GPOS-00065</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-001453Configure 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: - --$ sudo update-crypto-policies --show -- --FIPS -+-oCiphers=aes256-ctr,aes192-ctr,aes128-ctr - --Check that the ciphers in the back-end configurations are FIPS 140-2-approved algorithms with the following command: -+A reboot is required for the changes to take effect.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/openssh.config /etc/crypto-policies/back-ends/opensshserver.config -+$ sudo grep -i ciphers /etc/crypto-policies/back-ends/opensshserver.config - --/etc/crypto-policies/back-ends/openssh.config:Ciphers aes256-ctr,aes192-ctr,aes128-ctr --/etc/crypto-policies/back-ends/opensshserver.config:CRYPTO_POLICY='-oCiphers=aes256-ctr,aes192-ctr,aes128-ctr' --/etc/crypto-policies/back-ends/opensshserver.config:CRYPTO_POLICY='-oCiphers=aes256-ctr,aes192-ctr,aes128-ctr' -+CRYPTO_POLICY='-oCiphers=aes256-ctr,aes192-ctr,aes128-ctr' - --If the cipher entries in the "openssh.config" and "opensshserver.config" files have any ciphers other than "aes256-ctr,aes192-ctr,aes128-ctr", the order differs from the example above, if they are missing, or commented out, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-010292RHEL 8 must ensure the SSH server uses strong entropy.<VulnDiscussion>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. -+If the cipher entries in the "opensshserver.config" file have any ciphers other than "aes256-ctr,aes192-ctr,aes128-ctr", the order differs from the example above, they are missing, or commented out, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-010292RHEL 8 must ensure the SSH server uses strong entropy.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure the operating system SSH server to use strong entropy. - -@@ -1116,7 +1018,7 @@ Check that the "/etc/sudoers" file has no occurrences of "!authenticate" by runn - - $ sudo grep -i !authenticate /etc/sudoers /etc/sudoers.d/* - --If any occurrences of "!authenticate" return from the command, this is a finding.SRG-OS-000375-GPOS-00160<GroupDescription></GroupDescription>RHEL-08-010390RHEL 8 must have the packages required for multifactor authentication installed.<VulnDiscussion>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. -+If any occurrences of "!authenticate" return from the command, this is a finding.SRG-OS-000375-GPOS-00160<GroupDescription></GroupDescription>RHEL-08-010390RHEL 8 must have the packages required for multifactor authentication installed.<VulnDiscussion>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. - -@@ -1124,16 +1026,15 @@ A privileged account is defined as an information system account with authorizat - - 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).</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-001948Configure the operating system to implement multifactor authentication by installing the required packages with the following command: -+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).</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-001948Configure the operating system to implement multifactor authentication by installing the required package with the following command: - --$ sudo yum install esc openssl-pkcs11Verify the operating system has the packages required for multifactor authentication installed with the following commands: -+$ sudo yum install openssl-pkcs11Verify the operating system has the packages required for multifactor authentication installed with the following commands: - --$ sudo yum list installed esc openssl-pkcs11 -+$ sudo yum list installed openssl-pkcs11 - --esc.x86_64 1.1.2-7.el8 @AppStream - openssl-pkcs11.x86_64 0.4.8-2.el8 @anaconda - --If the "esc" and "openssl-pkcs11" packages are 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.SRG-OS-000375-GPOS-00160<GroupDescription></GroupDescription>RHEL-08-010400RHEL 8 must implement certificate status checking for multifactor authentication.<VulnDiscussion>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. -+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.SRG-OS-000375-GPOS-00160<GroupDescription></GroupDescription>RHEL-08-010400RHEL 8 must implement certificate status checking for multifactor authentication.<VulnDiscussion>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. - -@@ -1149,15 +1050,15 @@ 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.serviceVerify the operating system implements certificate status checking for multifactor authentication. -+$ sudo systemctl restart sssd.serviceVerify the operating system implements certificate status checking for multifactor authentication. - - 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 | grep -v "^#" -+$ 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 "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.SRG-OS-000376-GPOS-00161<GroupDescription></GroupDescription>RHEL-08-010410RHEL 8 must accept Personal Identity Verification (PIV) credentials.<VulnDiscussion>The use of PIV credentials facilitates standardization and reduces the risk of unauthorized access. -+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.SRG-OS-000376-GPOS-00161<GroupDescription></GroupDescription>RHEL-08-010410RHEL 8 must accept Personal Identity Verification (PIV) credentials.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-001953Configure RHEL 8 to accept PIV credentials. - -@@ -1218,17 +1119,17 @@ $ 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.SRG-OS-000134-GPOS-00068<GroupDescription></GroupDescription>RHEL-08-010422RHEL 8 must disable virtual syscalls.<VulnDiscussion>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. -+If "page_poison" is not set to "1", is missing or commented out, this is a finding.SRG-OS-000134-GPOS-00068<GroupDescription></GroupDescription>RHEL-08-010422RHEL 8 must disable virtual syscalls.<VulnDiscussion>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. -+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</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-001084Configure RHEL 8 to disable vsyscalls with the following commands: -+Satisfies: SRG-OS-000134-GPOS-00068, SRG-OS-000433-GPOS-00192</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-001084Document 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"Verify that GRUB 2 is configured to disable vsyscalls with the following commands: -+GRUB_CMDLINE_LINUX="vsyscall=none"Verify that GRUB 2 is configured to disable vsyscalls with the following commands: - - Check that the current GRUB 2 configuration disables vsyscalls: - -@@ -1244,7 +1145,7 @@ $ sudo grep vsyscall /etc/default/grub - - GRUB_CMDLINE_LINUX="vsyscall=none" - --If "vsyscall" is not set to "none", is missing or commented out, this is a finding.SRG-OS-000134-GPOS-00068<GroupDescription></GroupDescription>RHEL-08-010423RHEL 8 must clear SLUB/SLAB objects to prevent use-after-free attacks.<VulnDiscussion>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. -+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.SRG-OS-000134-GPOS-00068<GroupDescription></GroupDescription>RHEL-08-010423RHEL 8 must clear SLUB/SLAB objects to prevent use-after-free attacks.<VulnDiscussion>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. - -@@ -1385,13 +1286,13 @@ $ sudo ls -l /etc/ssh/*.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.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-010490The RHEL 8 SSH private host key files must have mode 0640 or less permissive.<VulnDiscussion>If an unauthorized user obtains the private SSH host key file, the host could be impersonated.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure the mode of SSH private host key files under "/etc/ssh" to "0640" with the following command: -+Note: SSH public key files may be found in other directories on the system depending on the installation.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-010490The RHEL 8 SSH private host key files must have mode 0600 or less permissive.<VulnDiscussion>If an unauthorized user obtains the private SSH host key file, the host could be impersonated.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure the mode of SSH private host key files under "/etc/ssh" to "0600" with the following command: - --$ sudo chmod 0640 /etc/ssh/ssh_host*key -+$ sudo chmod 0600 /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.serviceVerify the SSH private host key files have mode "0640" or less permissive with the following command: -+$ sudo systemctl restart sshd.serviceVerify the SSH private host key files have mode "0600" or less permissive with the following command: - - $ sudo ls -l /etc/ssh/ssh_host*key - -@@ -1399,7 +1300,7 @@ $ sudo ls -l /etc/ssh/ssh_host*key - -rw------- 1 root ssh_keys 582 Nov 28 06:43 ssh_host_key - -rw------- 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.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-010500The RHEL 8 SSH daemon must perform strict mode checking of home directory configuration files.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure 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": -+If any private host key file has a mode more permissive than "0600", this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-010500The RHEL 8 SSH daemon must perform strict mode checking of home directory configuration files.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure 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 - -@@ -1411,17 +1312,17 @@ $ sudo grep -i 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.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-010510The RHEL 8 SSH daemon must not allow compression or must only allow compression after successful authentication.<VulnDiscussion>If compression is allowed in an SSH connection prior to authentication, vulnerabilities in the compression software could result in compromise of the system from an unauthenticated connection, potentially with root privileges.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Uncomment the "Compression" keyword in "/etc/ssh/sshd_config" (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) on the system and set the value to "no": -+If "StrictModes" is set to "no", is missing, or the returned line is commented out, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-010510The RHEL 8 SSH daemon must not allow compression or must only allow compression after successful authentication.<VulnDiscussion>If compression is allowed in an SSH connection prior to authentication, vulnerabilities in the compression software could result in compromise of the system from an unauthenticated connection, potentially with root privileges.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Uncomment the "Compression" keyword in "/etc/ssh/sshd_config" (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) on the system and set the value to "delayed" or "no": - - Compression no - --The SSH service must be restarted for changes to take effect.Verify the SSH daemon performs compression after a user successfully authenticates with the following command: -+The SSH service must be restarted for changes to take effect.Verify the SSH daemon performs compression after a user successfully authenticates with the following command: - - $ sudo grep -i compression /etc/ssh/sshd_config - --Compression no -+Compression delayed - --If the "Compression" keyword is set to "yes", "delayed", is missing, or the returned line is commented out, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-010520The RHEL 8 SSH daemon must not allow authentication using known host’s authentication.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure the SSH daemon to not allow authentication using known host’s authentication. -+If the "Compression" keyword is set to "yes", is missing, or the returned line is commented out, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-010520The RHEL 8 SSH daemon must not allow authentication using known host’s authentication.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure 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": - -@@ -1435,23 +1336,21 @@ $ sudo grep -i 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.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-010521The RHEL 8 SSH daemon must not allow unused methods of authentication.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure the SSH daemon to not allow authentication using unused methods of authentication. -+If the value is returned as "no", the returned line is commented out, or no output is returned, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-010521The RHEL 8 SSH daemon must not allow Kerberos authentication, except to fulfill documented and validated mission requirements.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure 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 --GSSAPIAuthentication 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.serviceVerify the SSH daemon does not allow authentication using unused methods of authentication with the following command: -+$ sudo systemctl restart sshd.serviceVerify the SSH daemon does not allow Kerberos authentication with the following command: - --$ sudo grep -i "KerberosAuthentication\|GSSAPIAuthentication" /etc/ssh/sshd_config -+$ sudo grep -i KerberosAuthentication /etc/ssh/sshd_config - - KerberosAuthentication no --GSSAPIAuthentication no - --If the values are 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.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-010540RHEL 8 must use a separate file system for /var.<VulnDiscussion>The use of separate file systems for different paths can protect the system from failures resulting from a file system becoming full or failing.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Migrate the "/var" path onto a separate file system.Verify that a separate file system/partition has been created for "/var". -+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.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-010540RHEL 8 must use a separate file system for /var.<VulnDiscussion>The use of separate file systems for different paths can protect the system from failures resulting from a file system becoming full or failing.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Migrate the "/var" path onto a separate file system.Verify that a separate file system/partition has been created for "/var". - - Check that a file system/partition has been created for "/var" with the following command: - -@@ -1548,7 +1447,9 @@ $ 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.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-010571RHEL 8 must prevent files with the setuid and setgid bit set from being executed on the /boot directory.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure the "/etc/fstab" to use the "nosuid" option on the /boot directory.Verify the /boot directory is mounted with the "nosuid" option with the following command: -+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.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-010571RHEL 8 must prevent files with the setuid and setgid bit set from being executed on the /boot directory.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure the "/etc/fstab" to use the "nosuid" option on the /boot directory.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' - -@@ -1754,13 +1655,13 @@ $ sudo grep -i path /home/*/.* - /home/[localinteractiveuser]/.bash_profile:PATH=$PATH:$HOME/.local/bin:$HOME/bin - /home/[localinteractiveuser]/.bash_profile:export PATH - --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.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-010700All RHEL 8 world-writable directories must be owned by root, sys, bin, or an application group.<VulnDiscussion>If a world-writable directory has the sticky bit set and is not owned by root, sys, bin, or an application User Identifier (UID), unauthorized users may be able to modify files created by others. -+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.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-010700All RHEL 8 world-writable directories must be owned by root, sys, bin, or an application user.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366All 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.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.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-010710All RHEL 8 world-writable directories must be group-owned by root, sys, bin, or an application group.<VulnDiscussion>If a world-writable directory has the sticky bit set and 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. -+If there is output, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-010710All RHEL 8 world-writable directories must be group-owned by root, sys, bin, or an application group.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366All 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.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]: - -@@ -1791,11 +1692,11 @@ $ sudo ls -ld $(awk -F: '($3>=1000)&&($7 !~ /nologin/){print $6}' /et - - 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.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-010740All RHEL 8 local interactive user home directories must be group-owned by the home directory owner’s primary group.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Change 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: -+If home directories referenced in "/etc/passwd" do not have a mode of "0750" or less permissive, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-010740All RHEL 8 local interactive user home directories must be group-owned by the home directory owner’s primary group.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Change 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/smithjVerify the assigned home directory of all local interactive users is group-owned by that user’s primary GID with the following command: -+$ sudo chgrp users /home/smithjVerify 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. - -@@ -1805,7 +1706,7 @@ drwxr-x--- 2 smithj admin 4096 Jun 5 12:41 smithj - - Check the user's primary group with the following command: - --$ sudo grep admin /etc/group -+$ sudo grep $(grep smithj /etc/passwd | awk -F: ‘{print $4}’) /etc/group - - admin:x:250:smithj,jonesj,jacksons - -@@ -1977,38 +1878,17 @@ 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.SRG-OS-000021-GPOS-00005<GroupDescription></GroupDescription>RHEL-08-020011RHEL 8 must automatically lock an account when three unsuccessful logon attempts occur.<VulnDiscussion>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</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000044Configure 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 --auth required pam_faillock.so authfail --account required pam_faillock.so -- --Add/Modify the "/etc/security/faillock.conf" file to match the following line: -- --deny = 3Check that the system locks an account after three unsuccessful logon attempts with the following commands: -+If any line referencing the "pam_faillock.so" module is commented out, this is a finding.SRG-OS-000021-GPOS-00005<GroupDescription></GroupDescription>RHEL-08-020011RHEL 8 must automatically lock an account when three unsuccessful logon attempts occur.<VulnDiscussion>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. - --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. -+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. - --Verify the pam_faillock.so module is present in the "/etc/pam.d/system-auth" and " /etc/pam.d/password-auth" files: -+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. - --$ sudo grep pam_faillock.so /etc/pam.d/system-auth /etc/pam.d/password-auth -+Satisfies: SRG-OS-000021-GPOS-00005, SRG-OS-000329-GPOS-00128</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000044Configure the operating system to lock an account when three unsuccessful logon attempts occur. - --/etc/pam.d/system-auth:auth required pam_faillock.so preauth --/etc/pam.d/system-auth:auth required pam_faillock.so authfail --/etc/pam.d/system-auth:account required pam_faillock.so --/etc/pam.d/password-auth:auth required pam_faillock.so preauth --/etc/pam.d/password-auth:auth required pam_faillock.so authfail --/etc/pam.d/password-auth:account required pam_faillock.so preauth -+Add/Modify the "/etc/security/faillock.conf" file to match the following line: - --If the pam_failllock.so module is not present in the "/etc/pam.d/system-auth" and " /etc/pam.d/password-auth" files, this is a finding. -+deny = 3Note: 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: - -@@ -2052,38 +1932,17 @@ auth required pam_faillock.so preauth dir=/var/log/faillock silent audit deny=3 - 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.SRG-OS-000021-GPOS-00005<GroupDescription></GroupDescription>RHEL-08-020013RHEL 8 must automatically lock an account when three unsuccessful logon attempts occur during a 15-minute time period.<VulnDiscussion>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</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000044Configure 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 --auth required pam_faillock.so authfail --account required pam_faillock.so -- --Add/Modify the "/etc/security/faillock.conf" file to match the following line: -- --fail_interval = 900Check that the system locks an account after three unsuccessful logon attempts within a period of 15 minutes with the following commands: -+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.SRG-OS-000021-GPOS-00005<GroupDescription></GroupDescription>RHEL-08-020013RHEL 8 must automatically lock an account when three unsuccessful logon attempts occur during a 15-minute time period.<VulnDiscussion>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. - --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. -+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. - --Verify the pam_faillock.so module is present in the "/etc/pam.d/system-auth" and " /etc/pam.d/password-auth" files: -+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. - --$ sudo grep pam_faillock.so /etc/pam.d/system-auth /etc/pam.d/password-auth -+Satisfies: SRG-OS-000021-GPOS-00005, SRG-OS-000329-GPOS-00128</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000044Configure the operating system to lock an account when three unsuccessful logon attempts occur in 15 minutes. - --/etc/pam.d/system-auth:auth required pam_faillock.so preauth --/etc/pam.d/system-auth:auth required pam_faillock.so authfail --/etc/pam.d/system-auth:account required pam_faillock.so --/etc/pam.d/password-auth:auth required pam_faillock.so preauth --/etc/pam.d/password-auth:auth required pam_faillock.so authfail --/etc/pam.d/password-auth:account required pam_faillock.so preauth -+Add/Modify the "/etc/security/faillock.conf" file to match the following line: - --If the pam_failllock.so module is not present in the "/etc/pam.d/system-auth" and " /etc/pam.d/password-auth" files, this is a finding. -+fail_interval = 900Note: 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: - -@@ -2091,7 +1950,7 @@ $ sudo grep 'fail_interval =' /etc/security/faillock.conf - - fail_interval = 900 - --If the "fail_interval" option is not set to "900" or less (but not "0"), is missing or commented out, this is a finding.SRG-OS-000021-GPOS-00005<GroupDescription></GroupDescription>RHEL-08-020014RHEL 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.<VulnDiscussion>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. -+If the "fail_interval" option is not set to "900" or more, is missing or commented out, this is a finding.SRG-OS-000021-GPOS-00005<GroupDescription></GroupDescription>RHEL-08-020014RHEL 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.<VulnDiscussion>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. - -@@ -2127,38 +1986,17 @@ auth required pam_faillock.so preauth dir=/var/log/faillock silent audit deny=3 - 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.SRG-OS-000021-GPOS-00005<GroupDescription></GroupDescription>RHEL-08-020015RHEL 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.<VulnDiscussion>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</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000044Configure 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 --auth required pam_faillock.so authfail --account required pam_faillock.so -- --Add/Modify the "/etc/security/faillock.conf" file to match the following line: -- --unlock_time = 0Check 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: -+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.SRG-OS-000021-GPOS-00005<GroupDescription></GroupDescription>RHEL-08-020015RHEL 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.<VulnDiscussion>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. - --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. -+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. - --Verify the pam_faillock.so module is present in the "/etc/pam.d/system-auth" and " /etc/pam.d/password-auth" files: -+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. - --$ sudo grep pam_faillock.so /etc/pam.d/system-auth /etc/pam.d/password-auth -+Satisfies: SRG-OS-000021-GPOS-00005, SRG-OS-000329-GPOS-00128</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000044Configure the operating system to lock an account until released by an administrator when three unsuccessful logon attempts occur in 15 minutes. - --/etc/pam.d/system-auth:auth required pam_faillock.so preauth --/etc/pam.d/system-auth:auth required pam_faillock.so authfail --/etc/pam.d/system-auth:account required pam_faillock.so --/etc/pam.d/password-auth:auth required pam_faillock.so preauth --/etc/pam.d/password-auth:auth required pam_faillock.so authfail --/etc/pam.d/password-auth:account required pam_faillock.so preauth -+Add/Modify the "/etc/security/faillock.conf" file to match the following line: - --If the pam_failllock.so module is not present in the "/etc/pam.d/system-auth" and " /etc/pam.d/password-auth" files, this is a finding. -+unlock_time = 0Note: 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: - -@@ -2204,45 +2042,24 @@ auth required pam_faillock.so preauth dir=/var/log/faillock silent audit deny=3 - 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.SRG-OS-000021-GPOS-00005<GroupDescription></GroupDescription>RHEL-08-020017RHEL 8 must ensure account lockouts persist.<VulnDiscussion>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</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000044Configure the operating system maintain the contents of the faillock directory after a reboot. -+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.SRG-OS-000021-GPOS-00005<GroupDescription></GroupDescription>RHEL-08-020017RHEL 8 must ensure account lockouts persist.<VulnDiscussion>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. - --Add/Modify the appropriate sections of the "/etc/pam.d/system-auth" and "/etc/pam.d/password-auth" files to match the following lines: -+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. - --auth required pam_faillock.so preauth --auth required pam_faillock.so authfail --account required pam_faillock.so -+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</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000044Configure 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/faillockCheck that the faillock directory contents persist after a reboot with the following commands: -- --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 pam_faillock.so module is present in the "/etc/pam.d/system-auth" and " /etc/pam.d/password-auth" files: -- --$ sudo grep pam_faillock.so /etc/pam.d/system-auth /etc/pam.d/password-auth -- --/etc/pam.d/system-auth:auth required pam_faillock.so preauth --/etc/pam.d/system-auth:auth required pam_faillock.so authfail --/etc/pam.d/system-auth:account required pam_faillock.so --/etc/pam.d/password-auth:auth required pam_faillock.so preauth --/etc/pam.d/password-auth:auth required pam_faillock.so authfail --/etc/pam.d/password-auth:account required pam_faillock.so preauth -- --If the pam_failllock.so module is not present in the "/etc/pam.d/system-auth" and " /etc/pam.d/password-auth" files, this is a finding. -- --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 -- -+dir = /var/log/faillockNote: 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.SRG-OS-000021-GPOS-00005<GroupDescription></GroupDescription>RHEL-08-020018RHEL 8 must prevent system messages from being presented when three unsuccessful logon attempts occur.<VulnDiscussion>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. -@@ -2279,38 +2096,17 @@ auth required pam_faillock.so preauth dir=/var/log/faillock silent audit deny=3 - 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.SRG-OS-000021-GPOS-00005<GroupDescription></GroupDescription>RHEL-08-020019RHEL 8 must prevent system messages from being presented when three unsuccessful logon attempts occur.<VulnDiscussion>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</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000044Configure 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 --auth required pam_faillock.so authfail --account required pam_faillock.so -- --Add/Modify the "/etc/security/faillock.conf" file to match the following line: -- --silentCheck that the system prevents informative messages from being presented to the user pertaining to logon information with the following commands: -+If the "silent" option is missing from the "preauth" line with the "pam_faillock.so" module, this is a finding.SRG-OS-000021-GPOS-00005<GroupDescription></GroupDescription>RHEL-08-020019RHEL 8 must prevent system messages from being presented when three unsuccessful logon attempts occur.<VulnDiscussion>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. - --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. -+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. - --Verify the pam_faillock.so module is present in the "/etc/pam.d/system-auth" and " /etc/pam.d/password-auth" files: -+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. - --$ sudo grep pam_faillock.so /etc/pam.d/system-auth /etc/pam.d/password-auth -+Satisfies: SRG-OS-000021-GPOS-00005, SRG-OS-000329-GPOS-00128</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000044Configure the operating system to prevent informative messages from being presented at logon attempts. - --/etc/pam.d/system-auth:auth required pam_faillock.so preauth --/etc/pam.d/system-auth:auth required pam_faillock.so authfail --/etc/pam.d/system-auth:account required pam_faillock.so --/etc/pam.d/password-auth:auth required pam_faillock.so preauth --/etc/pam.d/password-auth:auth required pam_faillock.so authfail --/etc/pam.d/password-auth:account required pam_faillock.so preauth -+Add/Modify the "/etc/security/faillock.conf" file to match the following line: - --If the pam_failllock.so module is not present in the "/etc/pam.d/system-auth" and " /etc/pam.d/password-auth" files, this is a finding. -+silentNote: 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: - -@@ -2356,38 +2152,17 @@ auth required pam_faillock.so preauth dir=/var/log/faillock silent audit deny=3 - 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.SRG-OS-000021-GPOS-00005<GroupDescription></GroupDescription>RHEL-08-020021RHEL 8 must log user name information when unsuccessful logon attempts occur.<VulnDiscussion>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</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000044Configure 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 --auth required pam_faillock.so authfail --account required pam_faillock.so -- --Add/Modify the "/etc/security/faillock.conf" file to match the following line: -- --auditCheck that the system logs user name information when unsuccessful logon attempts occur with the following commands: -+If the "audit" option is missing from the "preauth" line with the "pam_faillock.so" module, this is a finding.SRG-OS-000021-GPOS-00005<GroupDescription></GroupDescription>RHEL-08-020021RHEL 8 must log user name information when unsuccessful logon attempts occur.<VulnDiscussion>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. - --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. -+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. - --Verify the pam_faillock.so module is present in the "/etc/pam.d/system-auth" and " /etc/pam.d/password-auth" files: -+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. - --$ sudo grep pam_faillock.so /etc/pam.d/system-auth /etc/pam.d/password-auth -+Satisfies: SRG-OS-000021-GPOS-00005, SRG-OS-000329-GPOS-00128</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000044Configure the operating system to log user name information when unsuccessful logon attempts occur. - --/etc/pam.d/system-auth:auth required pam_faillock.so preauth --/etc/pam.d/system-auth:auth required pam_faillock.so authfail --/etc/pam.d/system-auth:account required pam_faillock.so --/etc/pam.d/password-auth:auth required pam_faillock.so preauth --/etc/pam.d/password-auth:auth required pam_faillock.so authfail --/etc/pam.d/password-auth:account required pam_faillock.so preauth -+Add/Modify the "/etc/security/faillock.conf" file to match the following line: - --If the pam_failllock.so module is not present in the "/etc/pam.d/system-auth" and " /etc/pam.d/password-auth" files, this is a finding. -+auditNote: 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: - -@@ -2433,38 +2208,17 @@ auth required pam_faillock.so preauth dir=/var/log/faillock silent audit deny=3 - 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.SRG-OS-000021-GPOS-00005<GroupDescription></GroupDescription>RHEL-08-020023RHEL 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.<VulnDiscussion>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</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000044Configure 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 --auth required pam_faillock.so authfail --account required pam_faillock.so -- --Add/Modify the "/etc/security/faillock.conf" file to match the following line: -- --even_deny_rootCheck 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 "even_deny_root" option is missing from the "preauth" line with the "pam_faillock.so" module, this is a finding.SRG-OS-000021-GPOS-00005<GroupDescription></GroupDescription>RHEL-08-020023RHEL 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.<VulnDiscussion>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. - --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. -+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. - --Verify the pam_faillock.so module is present in the "/etc/pam.d/system-auth" and " /etc/pam.d/password-auth" files: -+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. - --$ sudo grep pam_faillock.so /etc/pam.d/system-auth /etc/pam.d/password-auth -+Satisfies: SRG-OS-000021-GPOS-00005, SRG-OS-000329-GPOS-00128</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000044Configure the operating system to include root when locking an account after three unsuccessful logon attempts occur in 15 minutes. - --/etc/pam.d/system-auth:auth required pam_faillock.so preauth --/etc/pam.d/system-auth:auth required pam_faillock.so authfail --/etc/pam.d/system-auth:account required pam_faillock.so --/etc/pam.d/password-auth:auth required pam_faillock.so preauth --/etc/pam.d/password-auth:auth required pam_faillock.so authfail --/etc/pam.d/password-auth:account required pam_faillock.so preauth -+Add/Modify the "/etc/security/faillock.conf" file to match the following line: - --If the pam_failllock.so module is not present in the "/etc/pam.d/system-auth" and " /etc/pam.d/password-auth" files, this is a finding. -+even_deny_rootNote: 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: - -@@ -2513,31 +2267,17 @@ 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.SRG-OS-000028-GPOS-00009<GroupDescription></GroupDescription>RHEL-08-020040RHEL 8 must enable a user session lock until that user re-establishes access using established identification and authentication procedures for command line sessions.<VulnDiscussion>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. -+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.SRG-OS-000028-GPOS-00009<GroupDescription></GroupDescription>RHEL-08-020040RHEL 8 must enable a user session lock until that user re-establishes access using established identification and authentication procedures for command line sessions.<VulnDiscussion>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</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000056Configure the operating system to enable a user to initiate a session lock via tmux. -- --Install the "tmux" package, if it is not already installed, by running the following command: -- --$ sudo yum install tmux -- --Once installed, create a global configuration file "/etc/tmux.conf" and add the following line: -- --set -g lock-command vlockVerify the operating system enables the user to initiate a session lock on command. -- --Verify RHEL 8 has the "tmux" package installed, by running the following command: -+Satisfies: SRG-OS-000028-GPOS-00009, SRG-OS-000030-GPOS-00011</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000056Configure the operating system to enable a user to initiate a session lock via tmux. - --$ sudo yum list installed tmux -- --tmux.x86.64 2.7-1.el8 @repository -+Create a global configuration file "/etc/tmux.conf" and add the following line: - --If "tmux" is not installed, this is a finding. -- --Next verify that the lock-command is set in the global settings of tmux with the following command: -+set -g lock-command vlockVerify the operating system enables the user to initiate a session lock with the following command: - - $ sudo grep -i lock-command /etc/tmux.conf - -@@ -2635,7 +2375,7 @@ $ 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.SRG-OS-000029-GPOS-00010<GroupDescription></GroupDescription>RHEL-08-020080RHEL 8 must prevent a user from overriding graphical user interface settings.<VulnDiscussion>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. -+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.SRG-OS-000029-GPOS-00010<GroupDescription></GroupDescription>RHEL-08-020080RHEL 8 must prevent a user from overriding the session lock-delay setting for the graphical user interface.<VulnDiscussion>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. - -@@ -2643,7 +2383,7 @@ Implementing session settings will have little value if a user is able to manipu - - 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</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000057Configure the operating system to prevent a user from overriding settings for graphical user interfaces. -+Satisfies: SRG-OS-000029-GPOS-00010, SRG-OS-000031-GPOS-00012, SRG-OS-000480-GPOS-00227</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000057Configure 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: - -@@ -2651,16 +2391,9 @@ Note: The example below is using the database "local" for the system, so if the - - $ sudo touch /etc/dconf/db/local.d/locks/session - --Add the following settings to prevent non-privileged users from modifying them: -+Add the following setting to prevent non-privileged users from modifying it: - --/org/gnome/desktop/session/idle-delay --/org/gnome/desktop/screensaver/lock-enabled --/org/gnome/desktop/screensaver/lock-delay --/org/gnome/settings-daemon/plugins/media-keys/logout --/org/gnome/login-screen/disable-user-list --/org/gnome/login-screen/banner-message-text --/org/gnome/login-screen/banner-message-enable --/org/gnome/desktop/lockdown/disable-lock-screenVerify the operating system prevents a user from overriding graphical user interfaces. -+/org/gnome/desktop/screensaver/lock-delayVerify 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. - -@@ -2674,16 +2407,9 @@ Check that graphical settings are locked from non-privileged user modification w - - 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 'idle\|lock\|log\|user\|banner' /etc/dconf/db/local.d/locks/* -+$ sudo grep -i lock-delay /etc/dconf/db/local.d/locks/* - --/org/gnome/desktop/session/idle-delay --/org/gnome/desktop/screensaver/lock-enabled - /org/gnome/desktop/screensaver/lock-delay --/org/gnome/settings-daemon/plugins/media-keys/logout --/org/gnome/login-screen/disable-user-list --/org/gnome/login-screen/banner-message-text --/org/gnome/login-screen/banner-message-enable --/org/gnome/desktop/lockdown/disable-lock-screen - - If the command does not return at least the example result, this is a finding.SRG-OS-000068-GPOS-00036<GroupDescription></GroupDescription>RHEL-08-020090RHEL 8 must map the authenticated identity to the user or group account for PKI-based authentication.<VulnDiscussion>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. - -@@ -3089,27 +2815,19 @@ 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.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-020330RHEL 8 must not have accounts configured with blank or null passwords.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Remove any instances of the "nullok" option in "/etc/pam.d/system-auth" and "/etc/pam.d/password-auth" and add or edit the following line in "etc/ssh/sshd_config" to prevent logons with empty passwords. -+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.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-020330RHEL 8 must not allow accounts configured with blank or null passwords.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Edit 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 -- --Note: Manual changes to the listed files may be overwritten by the "authselect" program.To verify that null passwords cannot be used, run the following commands: -- --$ sudo grep -i nullok /etc/pam.d/system-auth /etc/pam.d/password-auth -- --If this produces any output, it may be possible to log on with accounts with empty passwords. -+$ sudo systemctl restart sshd.serviceTo verify that null passwords cannot be used, run the following command: - - $ sudo grep -i permitemptypasswords /etc/ssh/sshd_config - - PermitEmptyPasswords no - --If "PermitEmptyPasswords" is set to "yes", or If null passwords can be used, this is a finding. -- --Note: Manual changes to the listed files may be overwritten by the "authselect" program.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-020340RHEL 8 must display the date and time of the last successful account logon upon logon.<VulnDiscussion>Providing users with feedback on when account accesses last occurred facilitates user recognition and reporting of unauthorized account use.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure 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". -+If "PermitEmptyPasswords" is set to "yes", this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-020340RHEL 8 must display the date and time of the last successful account logon upon logon.<VulnDiscussion>Providing users with feedback on when account accesses last occurred facilitates user recognition and reporting of unauthorized account use.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure 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": - -@@ -3198,9 +2916,12 @@ $ sudo grep execve /etc/audit/audit.rules - -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.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-030010Cron logging must be implemented in RHEL 8.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure "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: -+If the command does not return all lines, or the lines are commented out, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-030010Cron logging must be implemented in RHEL 8.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure "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.logVerify that "rsyslog" is configured to log cron events with the following command: -+cron.* /var/log/cron -+ -+The rsyslog daemon must be restarted for the changes to take effect: -+$ sudo systemctl restart rsyslog.serviceVerify 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. - -@@ -3208,7 +2929,7 @@ $ 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.log -+/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. - -@@ -3264,15 +2985,15 @@ $ 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.SRG-OS-000047-GPOS-00023<GroupDescription></GroupDescription>RHEL-08-030050The RHEL 8 System Administrator (SA) and Information System Security Officer (ISSO) (at a minimum) must be alerted when the audit storage volume is full.<VulnDiscussion>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. -+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.SRG-OS-000047-GPOS-00023<GroupDescription></GroupDescription>RHEL-08-030050The RHEL 8 System Administrator (SA) and Information System Security Officer (ISSO) (at a minimum) must be alerted when the audit storage volume is full.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000140Configure RHEL 8 to notify the System Administrator (SA) and Information System Security Officer (ISSO) when the audit storage volume is full by configuring the "max_log_file_action" parameter in the "/etc/audit/auditd.conf" file with the a value of "syslog" or "keep_logs": -+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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000140Configure RHEL 8 to notify the System Administrator (SA) and Information System Security Officer (ISSO) when the audit storage volume is full by configuring the "max_log_file_action" parameter in the "/etc/audit/auditd.conf" file with the a value of "syslog" or "keep_logs": - --max_log_file_action=syslogVerify that the SA and ISSO (at a minimum) are notified when the audit storage volume is full. -+max_log_file_action = syslogVerify that the SA and ISSO (at a minimum) are notified when the audit storage volume is full. - - Check which action RHEL 8 takes when the audit storage volume is full with the following command: - -@@ -3620,7 +3341,7 @@ $ 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.SRG-OS-000062-GPOS-00031<GroupDescription></GroupDescription>RHEL-08-030180RHEL 8 audit records must contain information to establish what type of events occurred, the source of events, where events occurred, and the outcome of events.<VulnDiscussion>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. -+If the command does not return a line, or the line is commented out, this is a finding.SRG-OS-000062-GPOS-00031<GroupDescription></GroupDescription>RHEL-08-030180The RHEL 8 audit package must be installed.<VulnDiscussion>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. - -@@ -3630,9 +3351,9 @@ Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000038-GPO - - Install the audit service (if the audit service is not already installed) with the following command: - --$ sudo yum install auditVerify the audit service is configured to produce audit records. -+$ sudo yum install auditVerify the audit service is configured to produce audit records. - --Check that the audit service is installed properly with the following command: -+Check that the audit service is installed with the following command: - - $ sudo yum list installed audit - -@@ -4038,17 +3759,17 @@ $ sudo grep -w "unix_chkpwd" /etc/audit/audit.rules - - -a always,exit -F path=/usr/sbin/unix_chkpwd -F perm=x -F auid>=1000 -F auid!=unset -k privileged-unix-update - --If the command does not return a line, or the line is commented out, this is a finding.SRG-OS-000062-GPOS-00031<GroupDescription></GroupDescription>RHEL-08-030320Successful/unsuccessful uses of the ssh-keysign in RHEL 8 must generate an audit record.<VulnDiscussion>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. -+If the command does not return a line, or the line is commented out, this is a finding.SRG-OS-000062-GPOS-00031<GroupDescription></GroupDescription>RHEL-08-030320Successful/unsuccessful uses of the ssh-keysign in RHEL 8 must generate an audit record.<VulnDiscussion>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 "ssh-keysign" program is an SSH helper program for host-based authentication. - - 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-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000169Configure the audit system to generate an audit event for any successful/unsuccessful use of the "ssh-keysign" by adding or updating the following rule in the "/etc/audit/audit.rules" file: -+Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000169Configure the audit system to generate an audit event for any successful/unsuccessful use of the "ssh-keysign" by adding or updating the following rule in the "/etc/audit/rules.d/audit.rules" file: - - -a always,exit -F path=/usr/libexec/openssh/ssh-keysign -F perm=x -F auid>=1000 -F auid!=unset -k privileged-ssh - --The audit daemon must be restarted for the changes to take effect.Verify RHEL 8 generates an audit record when successful/unsuccessful attempts to use the "ssh-keysign" by performing the following command to check the file system rules in "/etc/audit/audit.rules": -+The audit daemon must be restarted for the changes to take effect.Verify RHEL 8 generates an audit record when successful/unsuccessful attempts to use the "ssh-keysign" by performing the following command to check the file system rules in "/etc/audit/audit.rules": - - $ sudo grep ssh-keysign /etc/audit/audit.rules - -@@ -4744,7 +4465,7 @@ $ sudo grep audit /etc/default/grub - - GRUB_CMDLINE_LINUX="audit=1" - --If "audit" is not set to "1", is missing or commented out, this is a finding.SRG-OS-000341-GPOS-00132<GroupDescription></GroupDescription>RHEL-08-030602RHEL 8 must allocate an audit_backlog_limit of sufficient size to capture processes that start prior to the audit daemon.<VulnDiscussion>Without the capability to generate audit records, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one. -+If "audit" is not set to "1", is missing or commented out, this is a finding.SRG-OS-000341-GPOS-00132<GroupDescription></GroupDescription>RHEL-08-030602RHEL 8 must allocate an audit_backlog_limit of sufficient size to capture processes that start prior to the audit daemon.<VulnDiscussion>Without the capability to generate audit records, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one. - - If auditing is enabled late in the startup process, the actions of some startup processes may not be audited. Some audit systems also maintain state information only available if auditing is enabled before a given process is created. - -@@ -4756,13 +4477,13 @@ $ sudo grubby --update-kernel=ALL --args="audit_backlog_limit=8192" - - Add or modify the following line in "/etc/default/grub" to ensure the configuration survives kernel updates: - --GRUB_CMDLINE_LINUX="audit_backlog_limit=8192"Verify RHEL 8 allocates a sufficient audit_backlog_limit to capture processes that start prior to the audit daemon with the following commands: -+GRUB_CMDLINE_LINUX="audit_backlog_limit=8192"Verify RHEL 8 allocates a sufficient audit_backlog_limit to capture processes that start prior to the audit daemon with the following commands: - - $ sudo grub2-editenv - list | grep audit - - 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 audit=1 audit_backlog_limit=8192 boot=UUID=8d171156-cd61-421c-ba41-1c021ac29e82 - --If the "audit_backlog_limit" entry does not equal "8192", is missing, or the line is commented out, this is a finding. -+If the "audit_backlog_limit" entry does not equal "8192" or greater, is missing, or the line is commented out, this is a finding. - - Check the audit_backlog_limit is set to persist in kernel updates: - -@@ -4770,7 +4491,7 @@ $ sudo grep audit /etc/default/grub - - GRUB_CMDLINE_LINUX="audit_backlog_limit=8192" - --If "audit_backlog_limit" is not set to "8192", is missing or commented out, this is a finding.SRG-OS-000062-GPOS-00031<GroupDescription></GroupDescription>RHEL-08-030603RHEL 8 must enable Linux audit logging for the USBGuard daemon.<VulnDiscussion>Without the capability to generate audit records, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one. -+If "audit_backlog_limit" is not set to "8192" or greater, is missing or commented out, this is a finding.SRG-OS-000062-GPOS-00031<GroupDescription></GroupDescription>RHEL-08-030603RHEL 8 must enable Linux audit logging for the USBGuard daemon.<VulnDiscussion>Without the capability to generate audit records, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one. - - If auditing is enabled late in the startup process, the actions of some startup processes may not be audited. Some audit systems also maintain state information only available if auditing is enabled before a given process is created. - -@@ -4788,9 +4509,9 @@ DoD has defined the list of events for which RHEL 8 will provide an audit record - - 4) All kernel module load, unload, and restart actions. - --Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000471-GPOS-00215</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000169Configure RHEL 8 to enable Linux audit logging of the USBGuad daemon by adding or modifying the following line in "/etc/usbguard/usbguard-daemon.conf": -+Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000471-GPOS-00215</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000169Configure RHEL 8 to enable Linux audit logging of the USBGuard daemon by adding or modifying the following line in "/etc/usbguard/usbguard-daemon.conf": - --AuditBackend=LinuxAuditVerify RHEL 8 enables Linux audit logging of the USBGuard daemon with the following commands: -+AuditBackend=LinuxAuditVerify RHEL 8 enables Linux audit logging of the USBGuard daemon with the following commands: - - Note: If the USBGuard daemon is not installed and enabled, this requirement is not applicable. - -@@ -4834,7 +4555,7 @@ $ sudo stat -c "%a %n" /sbin/auditctl /sbin/aureport /sbin/ausearch /sbin/autrac - 755 /sbin/rsyslogd - 755 /sbin/augenrules - --If any of the audit tools has a mode more permissive than "0755", this is a finding.SRG-OS-000256-GPOS-00097<GroupDescription></GroupDescription>RHEL-08-030630RHEL 8 audit tools must be owned by root.<VulnDiscussion>Protecting audit information also includes identifying and protecting the tools used to view and manipulate log data. Therefore, protecting audit tools is necessary to prevent unauthorized operation on audit information. -+If any of the audit tools has a mode more permissive than "0755", this is a finding.SRG-OS-000256-GPOS-00097<GroupDescription></GroupDescription>RHEL-08-030630RHEL 8 audit tools must be owned by root.<VulnDiscussion>Protecting audit information also includes identifying and protecting the tools used to view and manipulate log data. Therefore, protecting audit tools is necessary to prevent unauthorized operation on audit information. - - RHEL 8 systems providing tools to interface with audit information will leverage user permissions and roles identifying the user accessing the tools, and the corresponding rights the user enjoys, to make access decisions regarding the access to audit tools. - -@@ -4844,11 +4565,11 @@ Satisfies: SRG-OS-000256-GPOS-00097, SRG-OS-000257-GPOS-00098, SRG-OS-000258-GPO - - $ sudo chown root [audit_tool] - --Replace "[audit_tool]" with each audit tool not owned by "root".Verify the audit tools are owned by "root" to prevent any unauthorized access, deletion, or modification. -+Replace "[audit_tool]" with each audit tool not owned by "root".Verify the audit tools are owned by "root" to prevent any unauthorized access, deletion, or modification. - - Check the owner of each audit tool by running the following command: - --$ sudo stat -c "%U %n" /sbin/auditctl /sbin/aureport /sbin/ausearch /sbin/autrace /sbin/auditd /sbin/rsyslog /sbin/augenrules -+$ sudo stat -c "%U %n" /sbin/auditctl /sbin/aureport /sbin/ausearch /sbin/autrace /sbin/auditd /sbin/rsyslogd /sbin/augenrules - - root /sbin/auditctl - root /sbin/aureport -@@ -4957,26 +4678,26 @@ $ sudo yum list installed rsyslog - - rsyslog.x86_64 8.1911.0-3.el8 @AppStream - --If the "rsyslog" package is not installed, ask the administrator to indicate how audit logs are being offloaded and what packages are installed to support it. If there is no evidence of audit logs being offloaded, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-030680RHEL 8 must have the packages required for encrypting offloaded audit logs installed.<VulnDiscussion>Information stored in one location is vulnerable to accidental or incidental deletion or alteration. -+If the "rsyslog" package is not installed, ask the administrator to indicate how audit logs are being offloaded and what packages are installed to support it. If there is no evidence of audit logs being offloaded, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-030680RHEL 8 must have the packages required for encrypting offloaded audit logs installed.<VulnDiscussion>Information stored in one location is vulnerable to accidental or incidental deletion or alteration. - - Off-loading is a common process in information systems with limited audit storage capacity. - --RHEL 8 installation media provides "rsyslogd". "rsyslogd" is a system utility providing support for message logging. Support for both internet and UNIX domain sockets enables this utility to support both local and remote logging. Couple this utility with "gnutls" (which is a secure communications library implementing the SSL, TLS and DTLS protocols), and you have a method to securely encrypt and off-load auditing. -+RHEL 8 installation media provides "rsyslogd". "rsyslogd" is a system utility providing support for message logging. Support for both internet and UNIX domain sockets enables this utility to support both local and remote logging. Couple this utility with "rsyslog-gnutls" (which is a secure communications library implementing the SSL, TLS and DTLS protocols), and you have a method to securely encrypt and off-load auditing. - - Rsyslog provides three ways to forward message: the traditional UDP transport, which is extremely lossy but standard; the plain TCP based transport, which loses messages only during certain situations but is widely available; and the RELP transport, which does not lose messages but is currently available only as part of the rsyslogd 3.15.0 and above. - Examples of each configuration: - UDP *.* @remotesystemname - TCP *.* @@remotesystemname - RELP *.* :omrelp:remotesystemname:2514 --Note that a port number was given as there is no standard port for RELP.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure the operating system to encrypt offloaded audit logs by installing the required packages with the following command: -+Note that a port number was given as there is no standard port for RELP.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure the operating system to encrypt offloaded audit logs by installing the required packages with the following command: - --$ sudo yum install gnutlsVerify the operating system has the packages required for encrypting offloaded audit logs installed with the following commands: -+$ sudo yum install rsyslog-gnutlsVerify the operating system has the packages required for encrypting offloaded audit logs installed with the following commands: - --$ sudo yum list installed gnutls -+$ sudo yum list installed rsyslog-gnutls - --gnutls.x86_64 3.6.8-9.el8 @anaconda -+rsyslog-gnutls.x86_64 8.1911.0-3.el8 @AppStream - --If the "gnutls" package is not installed, ask the administrator to indicate how audit logs are being encrypted during offloading and what packages are installed to support it. If there is no evidence of audit logs being encrypted during offloading, this is a finding.SRG-OS-000342-GPOS-00133<GroupDescription></GroupDescription>RHEL-08-030690The RHEL 8 audit records must be off-loaded onto a different system or storage media from the system being audited.<VulnDiscussion>Information stored in one location is vulnerable to accidental or incidental deletion or alteration. -+If the "rsyslog-gnutls" package is not installed, ask the administrator to indicate how audit logs are being encrypted during offloading and what packages are installed to support it. If there is no evidence of audit logs being encrypted during offloading, this is a finding.SRG-OS-000342-GPOS-00133<GroupDescription></GroupDescription>RHEL-08-030690The RHEL 8 audit records must be off-loaded onto a different system or storage media from the system being audited.<VulnDiscussion>Information stored in one location is vulnerable to accidental or incidental deletion or alteration. - - Off-loading is a common process in information systems with limited audit storage capacity. - -@@ -5064,19 +4785,17 @@ $ sudo grep -i '$ActionSendStreamDriverAuthMode' /etc/rsyslog.conf /etc/rsyslog. - - If the value of the "$ActionSendStreamDriverAuthMode" option is not set to "x509/name" or the line is commented out, ask the System Administrator to indicate how the audit logs are off-loaded to a different system or media. - --If there is no evidence that the transfer of the audit logs being off-loaded to another system or media is encrypted, this is a finding.SRG-OS-000343-GPOS-00134<GroupDescription></GroupDescription>RHEL-08-030730RHEL 8 must notify the System Administrator (SA) and Information System Security Officer (ISSO) (at a minimum) when allocated audit record storage volume reaches 75 percent of the repository maximum audit record storage capacity.<VulnDiscussion>If security personnel are not notified immediately when storage volume reaches 75 percent utilization, they are unable to plan for audit record storage capacity expansion.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-001855Configure the operating system to initiate an action to notify the SA and ISSO (at a minimum) when allocated audit record storage volume reaches 75 percent of the repository maximum audit record storage capacity by adding/modifying the following lines in the /etc/audit/auditd.conf file. -+If there is no evidence that the transfer of the audit logs being off-loaded to another system or media is encrypted, this is a finding.SRG-OS-000343-GPOS-00134<GroupDescription></GroupDescription>RHEL-08-030730RHEL 8 must take action when allocated audit record storage volume reaches 75 percent of the repository maximum audit record storage capacity.<VulnDiscussion>If security personnel are not notified immediately when storage volume reaches 75 percent utilization, they are unable to plan for audit record storage capacity expansion.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-001855Configure the operating system to initiate an action to notify the SA and ISSO (at a minimum) when allocated audit record storage volume reaches 75 percent of the repository maximum audit record storage capacity by adding/modifying the following line in the /etc/audit/auditd.conf file. - - space_left = 25% --space_left_action = email - --Note: Option names and values in the auditd.conf file are case insensitive.Verify RHEL 8 notifies the SA and ISSO (at a minimum) when allocated audit record storage volume reaches 75 percent of the repository maximum audit record storage capacity with the following commands: -+Note: Option names and values in the auditd.conf file are case insensitive.Verify RHEL 8 takes action when allocated audit record storage volume reaches 75 percent of the repository maximum audit record storage capacity with the following commands: - --$ sudo grep space_left /etc/audit/auditd.conf -+$ sudo grep -w space_left /etc/audit/auditd.conf - - space_left = 25% --space_left_action = email - --If the value of the "space_left" keyword is not set to "25%" and the "space_left_action" is not set to "email", or if these lines are commented out, ask the System Administrator to indicate how the system is providing real-time alerts to the SA and ISSO. -+If the value of the "space_left" keyword is not set to "25%" or if the line is commented out, ask the System Administrator to indicate how the system is providing real-time alerts to the SA and ISSO. - - If there is no evidence that real-time alerts are configured on the system, this is a finding.SRG-OS-000355-GPOS-00143<GroupDescription></GroupDescription>RHEL-08-030740RHEL 8 must securely compare internal information system clocks at least every 24 hours with a server synchronized to an authoritative time source, such as the United States Naval Observatory (USNO) time servers, or a time server designated for the appropriate DoD network (NIPRNet/SIPRNet), and/or the Global Positioning System (GPS).<VulnDiscussion>Inaccurate time stamps make it more difficult to correlate events and can lead to an inaccurate analysis. Determining the correct time a particular event occurred on a system is critical when conducting forensic analysis and investigating system events. Sources outside the configured acceptable allowance (drift) may be inaccurate. - -@@ -5322,34 +5041,34 @@ $ sudo grep -ri CAN /etc/modprobe.d/* | grep -i "blacklist" - - blacklist CAN - --If the command does not return any output or the output is not "blacklist CAN", and use of the CAN protocol is not documented with the Information System Security Officer (ISSO) as an operational requirement, this is a finding.SRG-OS-000095-GPOS-00049<GroupDescription></GroupDescription>RHEL-08-040023RHEL 8 must disable the stream control transmission (SCTP) protocol.<VulnDiscussion>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. -+If the command does not return any output or the output is not "blacklist CAN", and use of the CAN protocol is not documented with the Information System Security Officer (ISSO) as an operational requirement, this is a finding.SRG-OS-000095-GPOS-00049<GroupDescription></GroupDescription>RHEL-08-040023RHEL 8 must disable the stream control transmission protocol (SCTP).<VulnDiscussion>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. - - Failing to disconnect unused protocols can result in a system compromise. - --The Stream Control Transmission Protocol (SCTP) is a transport layer protocol, designed to support the idea of message-oriented communication, with several streams of messages within one connection. Disabling SCTP protects the system against exploitation of any flaws in its implementation.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000381Configure the operating system to disable the ability to use the SCTP protocol kernel module. -+The Stream Control Transmission Protocol (SCTP) is a transport layer protocol, designed to support the idea of message-oriented communication, with several streams of messages within one connection. Disabling SCTP protects the system against exploitation of any flaws in its implementation.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000381Configure the operating system to disable the ability to use the SCTP kernel module. - - Add or update the following lines in the file "/etc/modprobe.d/blacklist.conf": - - install SCTP /bin/true - blacklist SCTP - --Reboot the system for the settings to take effect.Verify the operating system disables the ability to load the SCTP protocol kernel module. -+Reboot the system for the settings to take effect.Verify the operating system disables the ability to load the SCTP kernel module. - - $ sudo grep -ri SCTP /etc/modprobe.d/* | grep -i "/bin/true" - - install SCTP /bin/true - --If the command does not return any output, or the line is commented out, and use of the SCTP protocol is not documented with the Information System Security Officer (ISSO) as an operational requirement, this is a finding. -+If the command does not return any output, or the line is commented out, and use of the SCTP is not documented with the Information System Security Officer (ISSO) as an operational requirement, this is a finding. - --Verify the operating system disables the ability to use the SCTP protocol. -+Verify the operating system disables the ability to use the SCTP. - --Check to see if the SCTP protocol is disabled with the following command: -+Check to see if the SCTP is disabled with the following command: - - $ sudo grep -ri SCTP /etc/modprobe.d/* | grep -i "blacklist" - - blacklist SCTP - --If the command does not return any output or the output is not "blacklist SCTP", and use of the SCTP protocol is not documented with the Information System Security Officer (ISSO) as an operational requirement, this is a finding.SRG-OS-000095-GPOS-00049<GroupDescription></GroupDescription>RHEL-08-040024RHEL 8 must disable the transparent inter-process communication (TIPC) protocol.<VulnDiscussion>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. -+If the command does not return any output or the output is not "blacklist SCTP", and use of the SCTP is not documented with the Information System Security Officer (ISSO) as an operational requirement, this is a finding.SRG-OS-000095-GPOS-00049<GroupDescription></GroupDescription>RHEL-08-040024RHEL 8 must disable the transparent inter-process communication (TIPC) protocol.<VulnDiscussion>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. - - Failing to disconnect unused protocols can result in a system compromise. - -@@ -5532,27 +5251,21 @@ $ sudo firewall-cmd --info-zone=[custom] | grep target - - target: DROP - --If no zones are active on the RHEL 8 interfaces or if the target is set to a different option other than "DROP", this is a finding.SRG-OS-000297-GPOS-00115<GroupDescription></GroupDescription>RHEL-08-040100A firewall must be installed on RHEL 8.<VulnDiscussion>"Firewalld" provides an easy and effective way to block/limit remote access to the system via ports, services, and protocols. -+If no zones are active on the RHEL 8 interfaces or if the target is set to a different option other than "DROP", this is a finding.SRG-OS-000297-GPOS-00115<GroupDescription></GroupDescription>RHEL-08-040100A firewall must be installed on RHEL 8.<VulnDiscussion>"Firewalld" provides an easy and effective way to block/limit remote access to the system via ports, services, and protocols. - - Remote access services, such as those providing remote access to network devices and information systems, which lack automated control capabilities, increase risk and make remote user access management difficult at best. - - 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. - --RHEL 8 functionality (e.g., RDP) must be capable of taking enforcement action if the audit reveals unauthorized activity. Automated control of remote access sessions allows organizations to ensure ongoing compliance with remote access policies by enforcing connection rules of remote access applications on a variety of information system components (e.g., servers, workstations, notebook computers, smartphones, and tablets).</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-002314Install "firewalld" and enable with the following commands: -+RHEL 8 functionality (e.g., RDP) must be capable of taking enforcement action if the audit reveals unauthorized activity. Automated control of remote access sessions allows organizations to ensure ongoing compliance with remote access policies by enforcing connection rules of remote access applications on a variety of information system components (e.g., servers, workstations, notebook computers, smartphones, and tablets).</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-002314Install "firewalld" with the following command: - --$ sudo yum install firewalld.noarch -- --$ sudo systemctl enable firewalldVerify that "firewalld" is installed and active with the following commands: -+$ sudo yum install firewalld.noarchVerify that "firewalld" is installed with the following commands: - - $ sudo yum list installed firewalld - - firewalld.noarch 0.7.0-5.el8 - --$ sudo systemctl is-active firewalld -- --active -- --If the "firewalld" package is not installed and "active", ask the System Administrator if another firewall is installed. If no firewall is installed and active this is a finding.SRG-OS-000299-GPOS-00117<GroupDescription></GroupDescription>RHEL-08-040110RHEL 8 wireless network adapters must be disabled.<VulnDiscussion>Without protection of communications with wireless peripherals, confidentiality and integrity may be compromised because unprotected communications can be intercepted and either read, altered, or used to compromise the RHEL 8 operating system. -+If the "firewalld" package is not installed, ask the System Administrator if another firewall is installed. If no firewall is installed this is a finding.SRG-OS-000299-GPOS-00117<GroupDescription></GroupDescription>RHEL-08-040110RHEL 8 wireless network adapters must be disabled.<VulnDiscussion>Without protection of communications with wireless peripherals, confidentiality and integrity may be compromised because unprotected communications can be intercepted and either read, altered, or used to compromise the RHEL 8 operating system. - - This requirement applies to wireless peripheral technologies (e.g., wireless mice, keyboards, displays, etc.) used with RHEL 8 systems. Wireless peripherals (e.g., Wi-Fi/Bluetooth/IR Keyboards, Mice, and Pointing Devices and Near Field Communications [NFC]) present a unique challenge by creating an open, unsecured port on a computer. Wireless peripherals must meet DoD requirements for wireless data transmission and be approved for use by the Authorizing Official (AO). Even though some wireless peripherals, such as mice and pointing devices, do not ordinarily carry information that need to be protected, modification of communications with these wireless peripherals may be used to compromise the RHEL 8 operating system. Communication paths outside the physical protection of a controlled boundary are exposed to the possibility of interception and modification. - -@@ -5890,7 +5603,7 @@ $ sudo cat /etc/fstab | grep /var/tmp - - /dev/mapper/rhel-var-log-audit /var/tmp xfs defaults,nodev,nosuid,noexec 0 0 - --If results are returned and the "noexec" option is missing, or if /var/tmp is mounted without the "noexec" option, this is a finding.SRG-OS-000368-GPOS-00154<GroupDescription></GroupDescription>RHEL-08-040135The RHEL 8 fapolicy module must be configured to employ a deny-all, permit-by-exception policy to allow the execution of authorized software programs.<VulnDiscussion>The organization must identify authorized software programs and permit execution of authorized software. The process used to identify software programs that are authorized to execute on organizational information systems is commonly referred to as whitelisting. -+If results are returned and the "noexec" option is missing, or if /var/tmp is mounted without the "noexec" option, this is a finding.SRG-OS-000368-GPOS-00154<GroupDescription></GroupDescription>RHEL-08-040135The RHEL 8 fapolicy module must be installed.<VulnDiscussion>The organization must identify authorized software programs and permit execution of authorized software. The process used to identify software programs that are authorized to execute on organizational information systems is commonly referred to as whitelisting. - - Utilizing a whitelist provides a configuration management method for allowing the execution of only authorized software. Using only authorized software decreases risk by limiting the number of potential vulnerabilities. Verification of whitelisted software occurs prior to execution or at system startup. - -@@ -5898,138 +5611,64 @@ User home directories/folders may contain information of a sensitive nature. Non - - RHEL 8 ships with many optional packages. One such package is a file access policy daemon called "fapolicyd". "fapolicyd" is a userspace daemon that determines access rights to files based on attributes of the process and file. It can be used to either blacklist or whitelist processes or file access. - --Proceed with caution with enforcing the use of this daemon. Improper configuration may render the system non-functional. -- --Satisfies: SRG-OS-000368-GPOS-00154, SRG-OS-000370-GPOS-00155, SRG-OS-000480-GPOS-00232</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-001764Configure RHEL 8 to employ a deny-all, permit-by-exception application whitelisting policy with "fapolicyd" using the following commands: -- --Install and enable "fapolicyd": -- --$ sudo yum install fapolicyd.x86_64 -- --$ sudo mount | egrep '^tmpfs| ext4| ext3| xfs' | awk '{ printf "%s\n", $3 }' >> /etc/fapolicyd/fapolicyd.mounts -- --$ sudo systemctl enable --now fapolicyd -- --With the "fapolicyd" installed and enabled, configure the daemon to function in permissive mode until the whitelist is built correctly to avoid system lockout. Do this by editing the "/etc/fapolicyd/fapolicyd.conf" file with the following line: -- --permissive = 1 -- --Build the whitelist in the "/etc/fapolicyd/fapolicyd.rules" file ensuring the last rule is "deny all all". -+Proceed with caution with enforcing the use of this daemon. Improper configuration may render the system non-functional. The "fapolicyd" API is not namespace aware and can cause issues when launching or running containers. - --Once it is determined the whitelist is built correctly, set the fapolicyd to enforcing mode by editing the "permissive" line in the /etc/fapolicyd/fapolicyd.conf file. -+Satisfies: SRG-OS-000368-GPOS-00154, SRG-OS-000370-GPOS-00155, SRG-OS-000480-GPOS-00232</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-001764Install "fapolicyd" with the following command: - --permissive = 0Verify the RHEL 8 "fapolicyd" is enabled and employs a deny-all, permit-by-exception policy. -+$ sudo yum install fapolicyd.x86_64Verify the RHEL 8 "fapolicyd" is installed. - --Check that "fapolicyd" is installed, running, and in enforcing mode with the following commands: -+Check that "fapolicyd" is installed with the following command: - - $ sudo yum list installed fapolicyd - - Installed Packages - fapolicyd.x86_64 - --$ sudo systemctl status fapolicyd.service -+If fapolicyd is not installed, this is a finding.SRG-OS-000378-GPOS-00163<GroupDescription></GroupDescription>RHEL-08-040140RHEL 8 must block unauthorized peripherals before establishing a connection.<VulnDiscussion>Without authenticating devices, unidentified or unknown devices may be introduced, thereby facilitating malicious activity. - --fapolicyd.service - File Access Policy Daemon --Loaded: loaded (/usr/lib/systemd/system/fapolicyd.service; enabled; vendor preset: disabled) --Active: active (running) -+Peripherals include, but are not limited to, such devices as flash drives, external storage, and printers. - --$ sudo grep permissive /etc/fapolicyd/fapolicyd.conf -+A new feature that RHEL 8 provides is the USBGuard software framework. The USBguard-daemon is the main component of the USBGuard software framework. It runs as a service in the background and enforces the USB device authorization policy for all USB devices. The policy is defined by a set of rules using a rule language described in the usbguard-rules.conf file. The policy and the authorization state of USB devices can be modified during runtime using the usbguard tool. - --permissive = 0 -+The System Administrator (SA) must work with the site Information System Security Officer (ISSO) to determine a list of authorized peripherals and establish rules within the USBGuard software framework to allow only authorized devices.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-001958Configure the operating system to enable the blocking of unauthorized peripherals with the following command: -+This command must be run from a root shell and will create an allow list for any usb devices currently connect to the system. - --Check that fapolicyd employs a deny-all policy on system mounts with the following commands: -+# usbguard generate-policy > /etc/usbguard/rules.conf - --$ sudo tail /etc/fapolicyd/fapolicyd.rules -+Note: Enabling and starting usbguard without properly configuring it for an individual system will immediately prevent any access over a usb device such as a keyboard or mouseVerify the USBGuard has a policy configured with the following command: - --allow exe=/usr/bin/python3.4 dir=execdirs ftype=text/x-pyton --deny_audit pattern ld_so all --deny all all -+$ sudo usbguard list-rules - --$ sudo cat /etc/fapolicyd/fapolicyd.mounts -+If the command does not return results or an error is returned, ask the SA to indicate how unauthorized peripherals are being blocked. - --/dev/shm --/run --/sys/fs/cgroup --/ --/home --/boot --/run/user/42 --/run/user/1000 -+If there is no evidence that unauthorized peripherals are being blocked before establishing a connection, this is a finding.SRG-OS-000420-GPOS-00186<GroupDescription></GroupDescription>RHEL-08-040150A firewall must be able to protect against or limit the effects of Denial of Service (DoS) attacks by ensuring RHEL 8 can implement rate-limiting measures on impacted network interfaces.<VulnDiscussion>DoS is a condition when a resource is not available for legitimate users. When this occurs, the organization either cannot accomplish its mission or must operate at degraded capacity. - --If fapolicyd is not running in enforcement mode on all system mounts with a deny-all, permit-by-exception policy, this is a finding.SRG-OS-000378-GPOS-00163<GroupDescription></GroupDescription>RHEL-08-040140RHEL 8 must block unauthorized peripherals before establishing a connection.<VulnDiscussion>Without authenticating devices, unidentified or unknown devices may be introduced, thereby facilitating malicious activity. -+This requirement addresses the configuration of RHEL 8 to mitigate the impact of DoS attacks that have occurred or are ongoing on system availability. For each system, known and potential DoS attacks must be identified and solutions for each type implemented. A variety of technologies exists to limit or, in some cases, eliminate the effects of DoS attacks (e.g., limiting processes or establishing memory partitions). Employing increased capacity and bandwidth, combined with service redundancy, may reduce the susceptibility to some DoS attacks. - --Peripherals include, but are not limited to, such devices as flash drives, external storage, and printers. -+Since version 0.6.0, "firewalld" has incorporated "nftables" as its backend support. Utilizing the limit statement in "nftables" can help to mitigate DoS attacks.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-002385Configure "nftables" to be the default "firewallbackend" for "firewalld" by adding or editing the following line in "etc/firewalld/firewalld.conf": - --A new feature that RHEL 8 provides is the USBGuard software framework. The USBguard-daemon is the main component of the USBGuard software framework. It runs as a service in the background and enforces the USB device authorization policy for all USB devices. The policy is defined by a set of rules using a rule language described in the usbguard-rules.conf file. The policy and the authorization state of USB devices can be modified during runtime using the usbguard tool. -+FirewallBackend=nftables - --The System Administrator (SA) must work with the site Information System Security Officer (ISSO) to determine a list of authorized peripherals and establish rules within the USBGuard software framework to allow only authorized devices.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-001958Configure the operating system to enable the blocking of unauthorized peripherals with the following commands: -+Establish rate-limiting rules based on organization-defined types of DoS attacks on impacted network interfaces.Verify "nftables" is configured to allow rate limits on any connection to the system with the following command: - --$ sudo yum install usbguard.x86_64 -+Verify "firewalld" has "nftables" set as the default backend: - --$ sudo usbguard generate-policy > /etc/usbguard/rules.conf -+$ sudo grep -i firewallbackend /etc/firewalld/firewalld.conf - --$ sudo systemctl enable usbguard.service -+# FirewallBackend -+FirewallBackend=nftables - --$ sudo systemctl start usbguard.service -+If the "nftables" is not set as the "firewallbackend" default, this is a finding.SRG-OS-000423-GPOS-00187<GroupDescription></GroupDescription>RHEL-08-040160All RHEL 8 networked systems must have and implement SSH to protect the confidentiality and integrity of transmitted and received information, as well as information during preparation for transmission.<VulnDiscussion>Without protection of the transmitted information, confidentiality and integrity may be compromised because unprotected communications can be intercepted and either read or altered. - --Note: Enabling and starting usbguard without properly configuring it for an individual system will immediately prevent any access over a usb device such as a keyboard or mouseVerify the operating system has enabled the use of USBGuard with the following command: -+This requirement applies to both internal and external networks and all types of information system components from which information can be transmitted (e.g., servers, mobile devices, notebook computers, printers, copiers, scanners, and facsimile machines). Communication paths outside the physical protection of a controlled boundary are exposed to the possibility of interception and modification. - --$ sudo systemctl status usbguard.service -+Protecting the confidentiality and integrity of organizational information can be accomplished by physical means (e.g., employing physical distribution systems) or by logical means (e.g., employing cryptographic techniques). If physical means of protection are employed, then logical means (cryptography) do not have to be employed, and vice versa. - --usbguard.service - USBGuard daemon --Loaded: loaded (/usr/lib/systemd/system/usbguard.service; enabled; vendor preset: disabled) --Active: active (running) -+Satisfies: SRG-OS-000423-GPOS-00187, SRG-OS-000424-GPOS-00188, SRG-OS-000425-GPOS-00189, SRG-OS-000426-GPOS-00190</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-002418Configure the SSH service to automatically start after reboot with the following command: - --If the usbguard.service is not installed and active, ask the SA to indicate how unauthorized peripherals are being blocked. -+$ sudo systemctl enable sshd.serviceVerify SSH is loaded and active with the following command: - --If there is no evidence that unauthorized peripherals can be blocked before establishing a connection, this is a finding.SRG-OS-000420-GPOS-00186<GroupDescription></GroupDescription>RHEL-08-040150A firewall must be able to protect against or limit the effects of Denial of Service (DoS) attacks by ensuring RHEL 8 can implement rate-limiting measures on impacted network interfaces.<VulnDiscussion>DoS is a condition when a resource is not available for legitimate users. When this occurs, the organization either cannot accomplish its mission or must operate at degraded capacity. -- --This requirement addresses the configuration of RHEL 8 to mitigate the impact of DoS attacks that have occurred or are ongoing on system availability. For each system, known and potential DoS attacks must be identified and solutions for each type implemented. A variety of technologies exists to limit or, in some cases, eliminate the effects of DoS attacks (e.g., limiting processes or establishing memory partitions). Employing increased capacity and bandwidth, combined with service redundancy, may reduce the susceptibility to some DoS attacks. -- --Since version 0.6.0, "firewalld" has incorporated "nftables" as its backend support. Utilizing the limit statement in "nftables" can help to mitigate DoS attacks.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-002385Install "nftables" packages onto the host with the following commands: -- --$ sudo yum install nftables.x86_64 1:0.9.0-14.el8 -- --Configure the "nftables" service to automatically start after reboot with the following command: -- --$ sudo systemctl enable nftables.service -- --Configure "nftables" to be the default "firewallbackend" for "firewalld" by adding or editing the following line in "etc/firewalld/firewalld.conf": -- --FirewallBackend=nftables -- --Establish rate-limiting rules based on organization-defined types of DoS attacks on impacted network interfaces.Verify "nftables" is configured to allow rate limits on any connection to the system with the following commands: -- --Check that the "nftables.service" is active and running: -- --$ sudo systemctl status nftables.service -- --nftables.service - Netfilter Tables --Loaded: loaded (/usr/lib/systemd/system/nftables.service; enabled; vendor preset: disabled) --Active: active (running) -- --Verify "firewalld" has "nftables" set as the default backend: -- --$ sudo grep -i firewallbackend /etc/firewalld/firewalld.conf -- --# FirewallBackend --FirewallBackend=nftables -- --If the "nftables" is not active, running and set as the "firewallbackend" default, this is a finding.SRG-OS-000423-GPOS-00187<GroupDescription></GroupDescription>RHEL-08-040160All RHEL 8 networked systems must have and implement SSH to protect the confidentiality and integrity of transmitted and received information, as well as information during preparation for transmission.<VulnDiscussion>Without protection of the transmitted information, confidentiality and integrity may be compromised because unprotected communications can be intercepted and either read or altered. -- --This requirement applies to both internal and external networks and all types of information system components from which information can be transmitted (e.g., servers, mobile devices, notebook computers, printers, copiers, scanners, and facsimile machines). Communication paths outside the physical protection of a controlled boundary are exposed to the possibility of interception and modification. -- --Protecting the confidentiality and integrity of organizational information can be accomplished by physical means (e.g., employing physical distribution systems) or by logical means (e.g., employing cryptographic techniques). If physical means of protection are employed, then logical means (cryptography) do not have to be employed, and vice versa. -- --Satisfies: SRG-OS-000423-GPOS-00187, SRG-OS-000424-GPOS-00188, SRG-OS-000425-GPOS-00189, SRG-OS-000426-GPOS-00190</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-002418Install SSH packages onto the host with the following commands: -- --$ sudo yum install openssh-server.x86_64 -- --Configure the SSH service to automatically start after reboot with the following command: -- --$ sudo systemctl enable sshd.serviceVerify SSH is loaded and active with the following command: -- --$ sudo systemctl status sshd -+$ sudo systemctl status sshd - - sshd.service - OpenSSH server daemon - Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled) -@@ -6038,9 +5677,7 @@ Main PID: 1348 (sshd) - CGroup: /system.slice/sshd.service - 1053 /usr/sbin/sshd -D - --If "sshd" does not show a status of "active" and "running", this is a finding. -- --If the "SSH server" package is not installed, this is a finding.SRG-OS-000033-GPOS-00014<GroupDescription></GroupDescription>RHEL-08-040161RHEL 8 must force a frequent session key renegotiation for SSH connections to the server.<VulnDiscussion>Without protection of the transmitted information, confidentiality and integrity may be compromised because unprotected communications can be intercepted and either read or altered. -+If "sshd" does not show a status of "active" and "running", this is a finding.SRG-OS-000033-GPOS-00014<GroupDescription></GroupDescription>RHEL-08-040161RHEL 8 must force a frequent session key renegotiation for SSH connections to the server.<VulnDiscussion>Without protection of the transmitted information, confidentiality and integrity may be compromised because unprotected communications can be intercepted and either read or altered. - - This requirement applies to both internal and external networks and all types of information system components from which information can be transmitted (e.g., servers, mobile devices, notebook computers, printers, copiers, scanners, and facsimile machines). Communication paths outside the physical protection of a controlled boundary are exposed to the possibility of interception and modification. - -@@ -6060,26 +5697,6 @@ $ sudo grep -i RekeyLimit /etc/ssh/sshd_config - - RekeyLimit 1G 1h - --If "RekeyLimit" does not have a maximum data amount and maximum time defined, is missing or commented out, this is a finding.SRG-OS-000033-GPOS-00014<GroupDescription></GroupDescription>RHEL-08-040162RHEL 8 must force a frequent session key renegotiation for SSH connections by the client.<VulnDiscussion>Without protection of the transmitted information, confidentiality and integrity may be compromised because unprotected communications can be intercepted and either read or altered. -- --This requirement applies to both internal and external networks and all types of information system components from which information can be transmitted (e.g., servers, mobile devices, notebook computers, printers, copiers, scanners, and facsimile machines). Communication paths outside the physical protection of a controlled boundary are exposed to the possibility of interception and modification. -- --Protecting the confidentiality and integrity of organizational information can be accomplished by physical means (e.g., employing physical distribution systems) or by logical means (e.g., employing cryptographic techniques). If physical means of protection are employed, then logical means (cryptography) do not have to be employed, and vice versa. -- --Session key regeneration limits the chances of a session key becoming compromised. -- --Satisfies: SRG-OS-000033-GPOS-00014, SRG-OS-000420-GPOS-00186, SRG-OS-000424-GPOS-00188</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000068Configure the system to force a frequent session key renegotiation for SSH connections by the client by add or modifying the following line in the "/etc/ssh/ssh_config" file: -- --RekeyLimit 1G 1h -- --Restart the SSH daemon for the settings to take effect. -- --$ sudo systemctl restart sshd.serviceVerify the SSH client is configured to force frequent session key renegotiation with the following command: -- --$ sudo grep -i RekeyLimit /etc/ssh/ssh_config -- --RekeyLimit 1G 1h -- - If "RekeyLimit" does not have a maximum data amount and maximum time defined, is missing or commented out, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040170The x86 Ctrl-Alt-Delete key sequence must be disabled on RHEL 8.<VulnDiscussion>A locally logged-on user, who presses Ctrl-Alt-Delete when at the console, can reboot the system. If accidentally pressed, as could happen in the case of a mixed OS environment, this can create the risk of short-term loss of availability of systems due to unintentional reboot. In a graphical user environment, risk of unintentional reboot from the Ctrl-Alt-Delete sequence is reduced because the user will be prompted before any action is taken.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure the system to disable the Ctrl-Alt-Delete sequence for the command line with the following command: - - $ sudo systemctl mask ctrl-alt-del.target -@@ -6157,28 +5774,23 @@ If the account is associated with system commands or applications, the UID shoul - - $ sudo awk -F: '$3 == 0 {print $1}' /etc/passwd - --If any accounts other than root have a UID of "0", this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040210RHEL 8 must prevent Internet Control Message Protocol (ICMP) redirect messages from being accepted.<VulnDiscussion>ICMP redirect messages are used by routers to inform hosts that a more direct route exists for a particular destination. These messages modify the host's route table and are unauthenticated. An illicit ICMP redirect message could result in a man-in-the-middle attack.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to prevent ICMP redirect messages from being accepted with the following command: -- --$ sudo sysctl -w net.ipv4.conf.default.accept_redirects=0 -+If any accounts other than root have a UID of "0", this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040210RHEL 8 must prevent IPv6 Internet Control Message Protocol (ICMP) redirect messages from being accepted.<VulnDiscussion>ICMP redirect messages are used by routers to inform hosts that a more direct route exists for a particular destination. These messages modify the host's route table and are unauthenticated. An illicit ICMP redirect message could result in a man-in-the-middle attack.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to prevent IPv6 ICMP redirect messages from being accepted with the following command: - - $ sudo sysctl -w net.ipv6.conf.default.accept_redirects=0 - - If "0" is not the system's default value then add or update the following line in the appropriate file under "/etc/sysctl.d": - --net.ipv4.conf.default.accept_redirects=0 -- --net.ipv6.conf.default.accept_redirects=0Verify RHEL 8 will not accept ICMP redirect messages. -+net.ipv6.conf.default.accept_redirects=0Verify RHEL 8 will not accept IPv6 ICMP redirect messages. - --Note: If either IPv4 or IPv6 is disabled on the system, this requirement only applies to the active internet protocol version. -+Note: If IPv6 is disabled on the system, this requirement is Not Applicable. - - Check the value of the default "accept_redirects" variables with the following command: - --$ sudo sysctl net.ipv4.conf.default.accept_redirects net.ipv6.conf.default.accept_redirects -+$ sudo sysctl net.ipv6.conf.default.accept_redirects - --net.ipv4.conf.default.accept_redirects = 0 - net.ipv6.conf.default.accept_redirects = 0 - --If the returned lines do not have a value of "0", or a line is not returned, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040220RHEL 8 must not send Internet Control Message Protocol (ICMP) redirects.<VulnDiscussion>ICMP redirect messages are used by routers to inform hosts that a more direct route exists for a particular destination. These messages contain information from the system's route table, possibly revealing portions of the network topology. -+If the returned line does not have a value of "0", a line is not returned, or the line is commented out, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040220RHEL 8 must not send Internet Control Message Protocol (ICMP) redirects.<VulnDiscussion>ICMP redirect messages are used by routers to inform hosts that a more direct route exists for a particular destination. These messages contain information from the system's route table, possibly revealing portions of the network topology. - - There are notable differences between Internet Protocol version 4 (IPv4) and Internet Protocol version 6 (IPv6). There is only a directive to disable sending of IPv4 redirected packets. Refer to RFC4294 for an explanation of "IPv6 Node Requirements", which resulted in this difference between IPv4 and IPv6.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to not allow interfaces to perform IPv4 ICMP redirects with the following command: - -@@ -6186,9 +5798,9 @@ $ sudo sysctl -w net.ipv4.conf.all.send_redirects=0 - - If "0" is not the system's default value then add or update the following line in the appropriate file under "/etc/sysctl.d": - --net.ipv4.conf.all.send_redirects=0Verify RHEL 8 does not IPv4 ICMP redirect messages. -+net.ipv4.conf.all.send_redirects=0Verify RHEL 8 does not IPv4 ICMP redirect messages. - --Note: If either IPv4 or IPv6 is disabled on the system, this requirement only applies to the active internet protocol version. -+Note: If IPv4 is disabled on the system, this requirement is Not Applicable. - - Check the value of the "all send_redirects" variables with the following command: - -@@ -6196,7 +5808,7 @@ $ sudo sysctl net.ipv4.conf.all.send_redirects - - net.ipv4.conf.all.send_redirects = 0 - --If the returned line does not have a value of "0", or a line is not returned, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040230RHEL 8 must not respond to Internet Control Message Protocol (ICMP) echoes sent to a broadcast address.<VulnDiscussion>Responding to broadcast ICMP echoes facilitates network mapping and provides a vector for amplification attacks. -+If the returned line does not have a value of "0", or a line is not returned, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040230RHEL 8 must not respond to Internet Control Message Protocol (ICMP) echoes sent to a broadcast address.<VulnDiscussion>Responding to broadcast ICMP echoes facilitates network mapping and provides a vector for amplification attacks. - - There are notable differences between Internet Protocol version 4 (IPv4) and Internet Protocol version 6 (IPv6). IPv6 does not implement the same method of broadcast as IPv4. Instead, IPv6 uses multicast addressing to the all-hosts multicast group. Refer to RFC4294 for an explanation of "IPv6 Node Requirements", which resulted in this difference between IPv4 and IPv6.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to not respond to IPv4 ICMP echoes sent to a broadcast address with the following command: - -@@ -6204,59 +5816,48 @@ $ sudo sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1 - - If "1" is not the system's default value then add or update the following line in the appropriate file under "/etc/sysctl.d": - --net.ipv4.icmp_echo_ignore_broadcasts=1Verify RHEL 8 does not respond to ICMP echoes sent to a broadcast address. -- --Note: If either IPv4 or IPv6 is disabled on the system, this requirement only applies to the active internet protocol version. -+net.ipv4.icmp_echo_ignore_broadcasts=1Verify RHEL 8 does not respond to ICMP echoes sent to a broadcast address. - -+Note: If IPv4 is disabled on the system, this requirement is Not Applicable. - Check the value of the "icmp_echo_ignore_broadcasts" variable with the following command: - - $ sudo sysctl net.ipv4.icmp_echo_ignore_broadcasts - - net.ipv4.icmp_echo_ignore_broadcasts = 1 - --If the returned line does not have a value of "1", a line is not returned, or the retuned line is commented out, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040240RHEL 8 must not forward source-routed packets.<VulnDiscussion>Source-routed packets allow the source of the packet to suggest that routers forward the packet along a different path than configured on the router, which can be used to bypass network security measures. This requirement applies only to the forwarding of source-routed traffic, such as when forwarding is enabled and the system is functioning as a router.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to not forward source-routed packets with the following commands: -- --$ sudo sysctl -w net.ipv4.conf.all.accept_source_route=0 -+If the returned line does not have a value of "1", a line is not returned, or the retuned line is commented out, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040240RHEL 8 must not forward IPv6 source-routed packets.<VulnDiscussion>Source-routed packets allow the source of the packet to suggest that routers forward the packet along a different path than configured on the router, which can be used to bypass network security measures. This requirement applies only to the forwarding of source-routed traffic, such as when forwarding is enabled and the system is functioning as a router.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to not forward IPv6 source-routed packets with the following command: - - $ sudo sysctl -w net.ipv6.conf.all.accept_source_route=0 - --If "0" is not the system's all value then add or update the following lines in the appropriate file under "/etc/sysctl.d": -- --net.ipv4.conf.all.accept_source_route=0 -+If "0" is not the system's all value then add or update the following line in the appropriate file under "/etc/sysctl.d": - --net.ipv6.conf.all.accept_source_route=0Verify RHEL 8 does not accept source-routed packets. -+net.ipv6.conf.all.accept_source_route=0Verify RHEL 8 does not accept IPv6 source-routed packets. - --Note: If either IPv4 or IPv6 is disabled on the system, this requirement only applies to the active internet protocol version. -+Note: If IPv6 is disabled on the system, this requirement is Not Applicable. - - Check the value of the accept source route variable with the following command: - --$ sudo sysctl net.ipv4.conf.all.accept_source_route net.ipv6.conf.all.accept_source_route -+$ sudo sysctl net.ipv6.conf.all.accept_source_route - --net.ipv4.conf.all.accept_source_route = 0 - net.ipv6.conf.all.accept_source_route = 0 - --If the returned lines do not have a value of "0", a line is not returned, or either returned line is commented out, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040250RHEL 8 must not forward source-routed packets by default.<VulnDiscussion>Source-routed packets allow the source of the packet to suggest that routers forward the packet along a different path than configured on the router, which can be used to bypass network security measures. This requirement applies only to the forwarding of source-routed traffic, such as when forwarding is enabled and the system is functioning as a router.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to not forward source-routed packets by default with the following commands: -- --$ sudo sysctl -w net.ipv4.conf.default.accept_source_route=0 -+If the returned line does not have a value of "0", a line is not returned, or the line is commented out, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040250RHEL 8 must not forward IPv6 source-routed packets by default.<VulnDiscussion>Source-routed packets allow the source of the packet to suggest that routers forward the packet along a different path than configured on the router, which can be used to bypass network security measures. This requirement applies only to the forwarding of source-routed traffic, such as when forwarding is enabled and the system is functioning as a router.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to not forward IPv6 source-routed packets by default with the following command: - - $ sudo sysctl -w net.ipv6.conf.default.accept_source_route=0 - --If "0" is not the system's default value then add or update the following lines in the appropriate file under "/etc/sysctl.d": -- --net.ipv4.conf.default.accept_source_route=0 -+If "0" is not the system's default value then add or update the following line in the appropriate file under "/etc/sysctl.d": - --net.ipv6.conf.default.accept_source_route=0Verify RHEL 8 does not accept source-routed packets by default. -+net.ipv6.conf.default.accept_source_route=0Verify RHEL 8 does not accept IPv6 source-routed packets by default. - --Note: If either IPv4 or IPv6 is disabled on the system, this requirement only applies to the active internet protocol version. -+Note: If IPv6 is disabled on the system, this requirement is Not Applicable. - - Check the value of the accept source route variable with the following command: - --$ sudo sysctl net.ipv4.conf.default.accept_source_route net.ipv6.conf.default.accept_source_route -+$ sudo sysctl net.ipv6.conf.default.accept_source_route - --net.ipv4.conf.default.accept_source_route = 0 - net.ipv6.conf.default.accept_source_route = 0 - --If the returned lines do not have a value of "0", a line is not returned, or either returned line is commented out, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040260RHEL 8 must not be performing packet forwarding unless the system is a router.<VulnDiscussion>Routing protocol daemons are typically used on routers to exchange network topology information with other routers. If this software is used when not required, system network information may be unnecessarily transmitted across the network.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to not allow packet forwarding, unless the system is a router with the following commands: -+If the returned line does not have a value of "0", a line is not returned, or the line is commented out, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040260RHEL 8 must not be performing packet forwarding unless the system is a router.<VulnDiscussion>Routing protocol daemons are typically used on routers to exchange network topology information with other routers. If this software is used when not required, system network information may be unnecessarily transmitted across the network.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to not allow packet forwarding, unless the system is a router with the following commands: - - $ sudo sysctl -w net.ipv4.ip_forward=0 - -@@ -6316,7 +5917,7 @@ $ sudo sysctl net.ipv6.conf.default.accept_ra - - net.ipv6.conf.default.accept_ra = 0 - --If the "accept_ra" value is not "0" and is not documented with the Information System Security Officer (ISSO) as an operational requirement, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040270RHEL 8 must not allow interfaces to perform Internet Control Message Protocol (ICMP) redirects by default.<VulnDiscussion>ICMP redirect messages are used by routers to inform hosts that a more direct route exists for a particular destination. These messages contain information from the system's route table, possibly revealing portions of the network topology. -+If the "accept_ra" value is not "0" and is not documented with the Information System Security Officer (ISSO) as an operational requirement, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040270RHEL 8 must not allow interfaces to perform Internet Control Message Protocol (ICMP) redirects by default.<VulnDiscussion>ICMP redirect messages are used by routers to inform hosts that a more direct route exists for a particular destination. These messages contain information from the system's route table, possibly revealing portions of the network topology. - - There are notable differences between Internet Protocol version 4 (IPv4) and Internet Protocol version 6 (IPv6). There is only a directive to disable sending of IPv4 redirected packets. Refer to RFC4294 for an explanation of "IPv6 Node Requirements", which resulted in this difference between IPv4 and IPv6.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to not allow interfaces to perform Internet Protocol version 4 (IPv4) ICMP redirects by default with the following command: - -@@ -6324,9 +5925,9 @@ $ sudo sysctl -w net.ipv4.conf.default.send_redirects=0 - - If "0" is not the system's default value then add or update the following line in the appropriate file under "/etc/sysctl.d": - --net.ipv4.conf.default.send_redirects=0Verify RHEL 8 does not allow interfaces to perform Internet Protocol version 4 (IPv4) ICMP redirects by default. -+net.ipv4.conf.default.send_redirects=0Verify RHEL 8 does not allow interfaces to perform Internet Protocol version 4 (IPv4) ICMP redirects by default. - --Note: If either IPv4 or IPv6 is disabled on the system, this requirement only applies to the active internet protocol version. -+Note: If IPv4 is disabled on the system, this requirement is Not Applicable. - - Check the value of the "default send_redirects" variables with the following command: - -@@ -6334,28 +5935,23 @@ $ sudo sysctl net.ipv4.conf.default.send_redirects - - net.ipv4.conf.default.send_redirects=0 - --If the returned line does not have a value of "0", or a line is not returned, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040280RHEL 8 must ignore Internet Control Message Protocol (ICMP) redirect messages.<VulnDiscussion>ICMP redirect messages are used by routers to inform hosts that a more direct route exists for a particular destination. These messages modify the host's route table and are unauthenticated. An illicit ICMP redirect message could result in a man-in-the-middle attack.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to ignore ICMP redirect messages with the following commands: -- --$ sudo sysctl -w net.ipv4.conf.all.accept_redirects=0 -+If the returned line does not have a value of "0", or a line is not returned, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040280RHEL 8 must ignore IPv6 Internet Control Message Protocol (ICMP) redirect messages.<VulnDiscussion>ICMP redirect messages are used by routers to inform hosts that a more direct route exists for a particular destination. These messages modify the host's route table and are unauthenticated. An illicit ICMP redirect message could result in a man-in-the-middle attack.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to ignore IPv6 ICMP redirect messages with the following command: - - $ sudo sysctl -w net.ipv6.conf.all.accept_redirects=0 - --If "0" is not the system's default value then add or update the following lines in the appropriate file under "/etc/sysctl.d": -- --net.ipv4.conf.all.accept_redirects = 0 -+If "0" is not the system's default value then add or update the following line in the appropriate file under "/etc/sysctl.d": - --net.ipv6.conf.all.accept_redirects = 0Verify RHEL 8 ignores ICMP redirect messages. -+net.ipv6.conf.all.accept_redirects = 0Verify RHEL 8 ignores IPv6 ICMP redirect messages. - --Note: If either IPv4 or IPv6 is disabled on the system, this requirement only applies to the active internet protocol version. -+Note: If IPv6 is disabled on the system, this requirement is Not Applicable. - - Check the value of the "accept_redirects" variables with the following command: - --$ sudo sysctl net.ipv4.conf.all.accept_redirects net.ipv6.conf.all.accept_redirects -+$ sudo sysctl net.ipv6.conf.all.accept_redirects - --net.ipv4.conf.all.accept_redirects = 0 - net.ipv6.conf.all.accept_redirects = 0 - --If both of the returned lines do not have a value of "0", or a line is not returned, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040281RHEL 8 must disable access to network bpf syscall from unprivileged processes.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to prevent privilege escalation thru the kernel by disabling access to the bpf syscall by adding the following line to a file in the "/etc/sysctl.d" directory: -+If the returned line does not have a value of "0", a line is not returned, or the line is commented out, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040281RHEL 8 must disable access to network bpf syscall from unprivileged processes.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to prevent privilege escalation thru the kernel by disabling access to the bpf syscall by adding the following line to a file in the "/etc/sysctl.d" directory: - - kernel.unprivileged_bpf_disabled = 1 - -@@ -6656,4 +6252,664 @@ Note: The "[value]" must be a number that is greater than or equal to "0". -\ No newline at end of file -+If "timestamp_timeout" is set to a negative number, is commented out, or no results are returned, this is a finding.SRG-OS-000023-GPOS-00006<GroupDescription></GroupDescription>RHEL-08-010049RHEL 8 must display a banner before granting local or remote access to the system via a graphical user logon.<VulnDiscussion>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. -+ -+Satisfies: SRG-OS-000023-GPOS-00006, SRG-OS-000228-GPOS-00088</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000048Configure the operating system to display a banner before granting access to the system. -+ -+Note: If the system does not have a graphical user interface installed, this requirement is Not Applicable. -+ -+Create a database to contain the system-wide graphical user logon settings (if it does not already exist) with the following command: -+ -+$ sudo touch /etc/dconf/db/local.d/01-banner-message -+ -+Add the following lines to the [org/gnome/login-screen] section of the "/etc/dconf/db/local.d/01-banner-message": -+ -+[org/gnome/login-screen] -+ -+banner-message-enable=true -+ -+Run the following command to update the database: -+ -+$ sudo dconf updateVerify RHEL 8 displays a 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 to see if the operating system displays a banner at the logon screen with the following command: -+ -+$ sudo grep banner-message-enable /etc/dconf/db/local.d/* -+ -+banner-message-enable=true -+ -+If "banner-message-enable" is set to "false" or is missing, this is a finding.SRG-OS-000073-GPOS-00041<GroupDescription></GroupDescription>RHEL-08-010131The RHEL 8 system-auth file must be configured to use a sufficient number of hashing rounds.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000196Configure RHEL 8 to encrypt all stored passwords with a strong cryptographic hash. -+ -+Edit/modify the following line in the "etc/pam.d/system-auth" file and set "rounds" to a value no lower than "5000": -+ -+password sufficient pam_unix.so sha512 rounds=5000Check that a minimum number of hash rounds is configured by running the following command: -+ -+$ sudo grep rounds /etc/pam.d/system-auth -+ -+password sufficient pam_unix.so sha512 rounds=5000 -+ -+If "rounds" has a value below "5000", or is commented out, this is a finding.SRG-OS-000080-GPOS-00048<GroupDescription></GroupDescription>RHEL-08-010141RHEL 8 operating systems booted with United Extensible Firmware Interface (UEFI) must require a unique superusers name upon booting into single-user mode and maintenance.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000213Configure the system to have a unique name for the grub superusers account. -+ -+Edit the /etc/grub.d/01_users file and add or modify the following lines: -+ -+set superusers="[someuniquestringhere]" -+export superusers -+password_pbkdf2 [someuniquestringhere] ${GRUB2_PASSWORD} -+ -+Generate a new grub.cfg file with the following command: -+ -+$ sudo grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfgFor systems that use BIOS, this is Not Applicable. -+ -+Verify that a unique name is set as the "superusers" account: -+ -+$ sudo grep -iw "superusers" /boot/efi/EFI/redhat/grub.cfg -+set superusers="[someuniquestringhere]" -+export superusers -+ -+If "superusers" is not set to a unique name or is missing a name, this is a finding.SRG-OS-000080-GPOS-00048<GroupDescription></GroupDescription>RHEL-08-010149RHEL 8 operating systems booted with a BIOS must require a unique superusers name upon booting into single-user and maintenance modes.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000213Configure the system to have a unique name for the grub superusers account. -+ -+Edit the /etc/grub.d/01_users file and add or modify the following lines: -+ -+set superusers="[someuniquestringhere]" -+export superusers -+password_pbkdf2 [someuniquestringhere] ${GRUB2_PASSWORD} -+ -+Generate a new grub.cfg file with the following command: -+ -+$ sudo grub2-mkconfig -o /boot/grub2/grub.cfgFor systems that use UEFI, this is Not Applicable. -+ -+Verify that a unique name is set as the "superusers" account: -+ -+$ sudo grep -iw "superusers" /boot/grub2/grub.cfg -+set superusers="[someuniquestringhere]" -+export superusers -+ -+If "superusers" is not set to a unique name or is missing a name, this is a finding.SRG-OS-000080-GPOS-00048<GroupDescription></GroupDescription>RHEL-08-010152RHEL 8 operating systems must require authentication upon booting into emergency mode.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000213Configure the system to require authentication upon booting into emergency mode by adding the following line to the "/usr/lib/systemd/system/emergency.service" file. -+ -+ExecStart=-/usr/lib/systemd/systemd-sulogin-shell emergencyCheck to see if the system requires authentication for emergency mode with the following command: -+ -+$ sudo grep sulogin-shell /usr/lib/systemd/system/emergency.service -+ -+ExecStart=-/usr/lib/systemd/systemd-sulogin-shell emergency -+ -+If the "ExecStart" line is configured for anything other than "/usr/lib/systemd/systemd-sulogin-shell emergency", commented out, or missing, this is a finding.SRG-OS-000120-GPOS-00061<GroupDescription></GroupDescription>RHEL-08-010159The RHEL 8 pam_unix.so module must be configured in the system-auth file to use a FIPS 140-2 approved cryptographic hashing algorithm for system authentication.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000803Configure 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/system-auth" file to include the sha512 option for pam_unix.so: -+ -+password sufficient pam_unix.so sha512 rounds=5000Verify that pam_unix.so module is configured to use sha512. -+ -+Check that pam_unix.so module is configured to use sha512 in /etc/pam.d/system-auth with the following command: -+ -+$ sudo grep password /etc/pam.d/system-auth | grep pam_unix -+ -+password sufficient pam_unix.so sha512 rounds=5000 -+ -+If "sha512" is missing, or is commented out, this is a finding.SRG-OS-000163-GPOS-00072<GroupDescription></GroupDescription>RHEL-08-010201The RHEL 8 SSH daemon must be configured with a timeout interval.<VulnDiscussion>Terminating an idle SSH session within a short time period reduces the window of opportunity for unauthorized personnel to take control of a management session enabled on the console or console port that has been left unattended. In addition, quickly terminating an idle SSH session will also free up resources committed by the managed network element. -+ -+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 that the operating system terminates all sessions or network access; it only ends the inactive session and releases the resources associated with that session. -+ -+RHEL 8 utilizes /etc/ssh/sshd_config for configurations of OpenSSH. Within the sshd_config the product of the values of "ClientAliveInterval" and "ClientAliveCountMax" are used to establish the inactivity threshold. The "ClientAliveInterval" is a timeout interval in seconds after which if no data has been received from the client, sshd will send a message through the encrypted channel to request a response from the client. The "ClientAliveCountMax" is the number of client alive messages that may be sent without sshd receiving any messages back from the client. If this threshold is met, sshd will disconnect the client. For more information on these settings and others, refer to the sshd_config man pages. -+ -+Satisfies: SRG-OS-000163-GPOS-00072, SRG-OS-000126-GPOS-00066, SRG-OS-000279-GPOS-00109</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-001133Configure RHEL 8 to automatically terminate all network connections associated with SSH traffic at the end of a session or after 10 minutes of inactivity. -+ -+Modify or append the following lines in the "/etc/ssh/sshd_config" file: -+ -+ClientAliveInterval 600 -+ -+In order for the changes to take effect, the SSH daemon must be restarted. -+ -+$ sudo systemctl restart sshd.serviceVerify all network connections associated with SSH traffic are automatically terminated at the end of the session or after 10 minutes of inactivity. -+ -+Check that the "ClientAliveInterval" variable is set to a value of "600" or less by performing the following command: -+ -+$ sudo grep -i clientalive /etc/ssh/sshd_config -+ -+ClientAliveInterval 600 -+ClientAliveCountMax 0 -+ -+If "ClientAliveInterval" does not exist, does not have a value of "600" or less in "/etc/ssh/sshd_config", or is commented out, this is a finding.SRG-OS-000250-GPOS-00093<GroupDescription></GroupDescription>RHEL-08-010287The RHEL 8 SSH daemon must be configured to use system-wide crypto policies.<VulnDiscussion>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/ directory. -+ -+Satisfies: SRG-OS-000250-GPOS-00093, SRG-OS-000393-GPOS-00173, SRG-OS-000394-GPOS-00174, SRG-OS-000125-GPOS-00065</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-001453Configure the RHEL 8 SSH daemon to use system-wide crypto policies by adding the following line to /etc/sysconfig/sshd: -+ -+# crypto_policy= -+ -+A reboot is required for the changes to take effect.Verify that system-wide crypto policies are in effect: -+ -+$ sudo grep -i crypto_policy /etc/sysconfig/sshd -+ -+# crypto_policy= -+ -+If the "crypto_policy" is uncommented, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-010472RHEL 8 must have the packages required to use the hardware random number generator entropy gatherer service.<VulnDiscussion>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 (non-predictable) random number generation is important for several security functions (i.e., ciphers).</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Install the packages required to enabled the hardware random number generator entropy gatherer service with the following command: -+ -+$ sudo yum install rng-toolsCheck that RHEL 8 has the packages required to enabled the hardware random number generator entropy gatherer service with the following command: -+ -+$ sudo yum list installed rng-tools -+ -+rng-tools.x86_64 6.8-3.el8 @anaconda -+ -+If the "rng-tools" package is not installed, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-010522The RHEL 8 SSH daemon must not allow GSSAPI authentication, except to fulfill documented and validated mission requirements.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure the SSH daemon to not allow GSSAPI authentication. -+ -+Add the following line in "/etc/ssh/sshd_config", or uncomment the line and set the value to "no": -+ -+GSSAPIAuthentication 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.serviceVerify the SSH daemon does not allow GSSAPI authentication with the following command: -+ -+$ sudo grep -i GSSAPIAuthentication /etc/ssh/sshd_config -+ -+GSSAPIAuthentication 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.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-010544RHEL 8 must use a separate file system for /var/tmp.<VulnDiscussion>The use of separate file systems for different paths can protect the system from failures resulting from a file system becoming full or failing.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Migrate the "/var/tmp" path onto a separate file system.Verify that a separate file system/partition has been created for "/var/tmp". -+ -+Check that a file system/partition has been created for "/var/tmp" with the following command: -+ -+$ sudo grep /var/tmp /etc/fstab -+ -+UUID=c274f65f /var/tmp xfs noatime,nobarrier 1 2 -+ -+If a separate entry for "/var/tmp" is not in use, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-010572RHEL 8 must prevent files with the setuid and setgid bit set from being executed on the /boot/efi directory.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure the "/etc/fstab" to use the "nosuid" option on the /boot/efi directory.For systems that use BIOS, this is Not Applicable. -+ -+Verify the /boot/efi directory is mounted with the "nosuid" option with the following command: -+ -+$ sudo mount | grep '\s/boot/efi\s' -+ -+/dev/sda1 on /boot/efi type xfs (rw,nosuid,relatime,seclabe,attr2,inode64,noquota) -+ -+If the /boot/efi file system does not have the "nosuid" option set, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-010731All RHEL 8 local interactive user home directory files must have mode 0750 or less permissive.<VulnDiscussion>Excessive permissions on local interactive user home directories may allow unauthorized access to user files by other users.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Set the mode on files and directories in the local interactive user home directory with the following command: -+ -+Note: The example will be for the user smithj, who has a home directory of "/home/smithj" and is a member of the users group. -+ -+$ sudo chmod 0750 /home/smithj/<file or directory>Verify all files and directories contained in a local interactive user home directory, excluding local initialization files, have a mode of "0750". -+Files that begin with a "." are excluded from this requirement. -+ -+Note: The example will be for the user "smithj", who has a home directory of "/home/smithj". -+ -+$ sudo ls -lLR /home/smithj -+-rwxr-x--- 1 smithj smithj 18 Mar 5 17:06 file1 -+-rwxr----- 1 smithj smithj 193 Mar 5 17:06 file2 -+-rw-r-x--- 1 smithj smithj 231 Mar 5 17:06 file3 -+ -+If any files or directories are found with a mode more permissive than "0750", this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-010741RHEL 8 must be configured so that all files and directories contained in local interactive user home directories are group-owned by a group of which the home directory owner is a member.<VulnDiscussion>If a local interactive user's files are group-owned by a group of which the user is not a member, unintended users may be able to access them.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Change the group of a local interactive user's files and directories to a group that the interactive user is a member. To change the group owner of a local interactive user's files and directories, use the following command: -+ -+Note: The example will be for the user smithj, who has a home directory of "/home/smithj" and is a member of the users group. -+ -+$ sudo chgrp smithj /home/smithj/<file or directory>Verify all files and directories in a local interactive user home directory are group-owned by a group that the user is a member. -+ -+Check the group owner of all files and directories in a local interactive user's home directory with the following command: -+ -+Note: The example will be for the user "smithj", who has a home directory of "/home/smithj". -+ -+$ sudo ls -lLR /<home directory>/<users home directory>/ -+-rw-r--r-- 1 smithj smithj 18 Mar 5 17:06 file1 -+-rw-r--r-- 1 smithj smithj 193 Mar 5 17:06 file2 -+-rw-r--r-- 1 smithj sa 231 Mar 5 17:06 file3 -+ -+If any files found with a group-owner different from the home directory user private group, check to see if the user is a member of that group with the following command: -+ -+$ sudo grep smithj /etc/group -+sa:x:100:juan,shelley,bob,smithj -+smithj:x:521:smithj -+ -+If any files or directories are group owned by a group that the directory owner is not a member of, this is a finding.SRG-OS-000021-GPOS-00005<GroupDescription></GroupDescription>RHEL-08-020025RHEL 8 must configure the use of the pam_faillock.so module in the /etc/pam.d/system-auth file.<VulnDiscussion>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. -+The preauth argument must be used when the module is called before the modules which ask for the user credentials such as the password. -+ -+Satisfies: SRG-OS-000021-GPOS-00005, SRG-OS-000329-GPOS-00128</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000044Configure the operating system to include the use of the pam_faillock.so module in the /etc/pam.d/system-auth file. -+ -+Add/Modify the appropriate sections of the "/etc/pam.d/system-auth" file to match the following lines: -+Note: The "preauth" line must be listed before pam_unix.so. -+ -+auth required pam_faillock.so preauth -+auth required pam_faillock.so authfail -+account required pam_faillock.soNote: 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 pam_faillock.so module is present in the "/etc/pam.d/system-auth" file: -+ -+$ sudo grep pam_faillock.so /etc/pam.d/system-auth -+ -+auth required pam_faillock.so preauth -+auth required pam_faillock.so authfail -+account required pam_faillock.so -+If the pam_faillock.so module is not present in the "/etc/pam.d/system-auth" file with the "preauth" line listed before pam_unix.so, this is a finding.SRG-OS-000021-GPOS-00005<GroupDescription></GroupDescription>RHEL-08-020026RHEL 8 must configure the use of the pam_faillock.so module in the /etc/pam.d/password-auth file.<VulnDiscussion>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. -+The preauth argument must be used when the module is called before the modules which ask for the user credentials such as the password. -+ -+Satisfies: SRG-OS-000021-GPOS-00005, SRG-OS-000329-GPOS-00128</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000044Configure the operating system to include the use of the pam_faillock.so module in the /etc/pam.d/password-auth file. -+ -+Add/Modify the appropriate sections of the "/etc/pam.d/password-auth" file to match the following lines: -+Note: The "preauth" line must be listed before pam_unix.so. -+ -+auth required pam_faillock.so preauth -+auth required pam_faillock.so authfail -+account required pam_faillock.soNote: 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 pam_faillock.so module is present in the "/etc/pam.d/password-auth" file: -+ -+$ sudo grep pam_faillock.so /etc/pam.d/password-auth -+ -+auth required pam_faillock.so preauth -+auth required pam_faillock.so authfail -+account required pam_faillock.so -+ -+If the pam_faillock.so module is not present in the "/etc/pam.d/password-auth" file with the "preauth" line listed before pam_unix.so, this is a finding.SRG-OS-000029-GPOS-00010<GroupDescription></GroupDescription>RHEL-08-020031RHEL 8 must initiate a session lock for graphical user interfaces when the screensaver is activated.<VulnDiscussion>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. -+ -+Satisfies: SRG-OS-000029-GPOS-00010, SRG-OS-000031-GPOS-00012, SRG-OS-000480-GPOS-00227</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000057Configure the operating system to initiate a session lock for graphical user interfaces when a screensaver is activated. -+ -+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/00-screensaver -+ -+[org/gnome/desktop/screensaver] -+lock-delay=uint32 5 -+ -+The "uint32" must be included along with the integer key values as shown. -+ -+Update the system databases: -+ -+$ sudo dconf updateVerify the operating system initiates a session lock a for graphical user interfaces when the screensaver is activated with the following command: -+ -+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. -+ -+$ sudo gsettings get org.gnome.desktop.screensaver lock-delay -+ -+uint32 5 -+ -+If the "uint32" setting is missing, or is not set to "5" or less, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-020032RHEL 8 must disable the user list at logon for graphical user interfaces.<VulnDiscussion>Leaving the user list enabled is a security risk since it allows anyone with physical access to the system to enumerate known user accounts without authenticated access to the system.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure the operating system to disable the user list at logon 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/02-login-screen -+ -+[org/gnome/login-screen] -+disable-user-list=true -+ -+Update the system databases: -+$ sudo dconf updateVerify the operating system disables the user logon list for graphical user interfaces with the following command: -+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. -+ -+$ sudo gsettings get org.gnome.login-screen disable-user-list -+true -+ -+If the setting is "false", this is a finding.SRG-OS-000028-GPOS-00009<GroupDescription></GroupDescription>RHEL-08-020039RHEL 8 must have the tmux package installed.<VulnDiscussion>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</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000056Configure the operating system to enable a user to initiate a session lock via tmux. -+ -+Install the "tmux" package, if it is not already installed, by running the following command: -+ -+$ sudo yum install tmuxVerify RHEL 8 has the "tmux" package installed, by running the following command: -+ -+$ sudo yum list installed tmux -+ -+tmux.x86.64 2.7-1.el8 @repository -+ -+If "tmux" is not installed, this is a finding.SRG-OS-000029-GPOS-00010<GroupDescription></GroupDescription>RHEL-08-020081RHEL 8 must prevent a user from overriding the session idle-delay setting for the graphical user interface.<VulnDiscussion>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</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000057Configure 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/session/idle-delayVerify 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 idle /etc/dconf/db/local.d/locks/* -+ -+/org/gnome/desktop/session/idle-delay -+ -+If the command does not return at least the example result, this is a finding.SRG-OS-000029-GPOS-00010<GroupDescription></GroupDescription>RHEL-08-020082RHEL 8 must prevent a user from overriding the screensaver lock-enabled setting for the graphical user interface.<VulnDiscussion>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</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000057Configure 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-enabledVerify 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-enabled /etc/dconf/db/local.d/locks/* -+ -+/org/gnome/desktop/screensaver/lock-enabled -+ -+If the command does not return at least the example result, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-020331RHEL 8 must not allow blank or null passwords in the system-auth file.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Remove any instances of the "nullok" option in the "/etc/pam.d/system-auth" file to prevent logons with empty passwords. -+ -+Note: Manual changes to the listed file may be overwritten by the "authselect" program.To verify that null passwords cannot be used, run the following command: -+ -+$ sudo grep -i nullok /etc/pam.d/system-auth -+ -+If output is produced, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-020332RHEL 8 must not allow blank or null passwords in the password-auth file.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Remove any instances of the "nullok" option in the "/etc/pam.d/password-auth" file to prevent logons with empty passwords. -+ -+Note: Manual changes to the listed file may be overwritten by the "authselect" program.To verify that null passwords cannot be used, run the following command: -+ -+$ sudo grep -i nullok /etc/pam.d/password-auth -+ -+If output is produced, this is a finding.SRG-OS-000062-GPOS-00031<GroupDescription></GroupDescription>RHEL-08-030181RHEL 8 audit records must contain information to establish what type of events occurred, the source of events, where events occurred, and the outcome of events.<VulnDiscussion>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</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000169Configure the audit service to produce audit records containing the information needed to establish when (date and time) an event occurred with the following commands: -+ -+$ sudo systemctl enable auditd.service -+ -+$ sudo systemctl start auditd.serviceVerify the audit service is configured to produce audit records with the following command: -+ -+$ sudo systemctl status auditd.service. -+ -+auditd.service - Security Auditing Service -+Loaded:loaded (/usr/lib/systemd/system/auditd.service; enabled; vendor preset: enabled) -+Active: active (running) since Tues 2020-12-11 12:56:56 EST; 4 weeks 0 days ago -+ -+If the audit service is not "active" and "running", this is a finding.SRG-OS-000343-GPOS-00134<GroupDescription></GroupDescription>RHEL-08-030731RHEL 8 must notify the System Administrator (SA) and Information System Security Officer (ISSO) (at a minimum) when allocated audit record storage volume 75 percent utilization.<VulnDiscussion>If security personnel are not notified immediately when storage volume reaches 75 percent utilization, they are unable to plan for audit record storage capacity expansion.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-001855Configure the operating system to initiate an action to notify the SA and ISSO (at a minimum) when allocated audit record storage volume reaches 75 percent of the repository maximum audit record storage capacity by adding/modifying the following line in the /etc/audit/auditd.conf file. -+ -+space_left_action = email -+ -+Note: Option names and values in the auditd.conf file are case insensitive.Verify RHEL 8 notifies the SA and ISSO (at a minimum) when allocated audit record storage volume reaches 75 percent of the repository maximum audit record storage capacity with the following command: -+ -+$ sudo grep -w space_left_action /etc/audit/auditd.conf -+ -+space_left_action = email -+ -+If the value of the "space_left_action" is not set to "email", or if the line is commented out, ask the System Administrator to indicate how the system is providing real-time alerts to the SA and ISSO. -+ -+If there is no evidence that real-time alerts are configured on the system, this is a finding.SRG-OS-000297-GPOS-00115<GroupDescription></GroupDescription>RHEL-08-040101A firewall must be active on RHEL 8.<VulnDiscussion>"Firewalld" provides an easy and effective way to block/limit remote access to the system via ports, services, and protocols. -+ -+Remote access services, such as those providing remote access to network devices and information systems, which lack automated control capabilities, increase risk and make remote user access management difficult at best. -+ -+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. -+RHEL 8 functionality (e.g., RDP) must be capable of taking enforcement action if the audit reveals unauthorized activity. Automated control of remote access sessions allows organizations to ensure ongoing compliance with remote access policies by enforcing connection rules of remote access applications on a variety of information system components (e.g., servers, workstations, notebook computers, smartphones, and tablets).</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-002314Configure "firewalld" to protect the operating system with the following command: -+ -+$ sudo systemctl enable firewalldVerify that "firewalld" is active with the following commands: -+ -+$ sudo systemctl is-active firewalld -+ -+active -+ -+If the "firewalld" package is not "active", ask the System Administrator if another firewall is installed. If no firewall is installed and active this is a finding.SRG-OS-000368-GPOS-00154<GroupDescription></GroupDescription>RHEL-08-040136The RHEL 8 fapolicy module must be enabled.<VulnDiscussion>The organization must identify authorized software programs and permit execution of authorized software. The process used to identify software programs that are authorized to execute on organizational information systems is commonly referred to as whitelisting. -+ -+Utilizing a whitelist provides a configuration management method for allowing the execution of only authorized software. Using only authorized software decreases risk by limiting the number of potential vulnerabilities. Verification of whitelisted software occurs prior to execution or at system startup. -+ -+User home directories/folders may contain information of a sensitive nature. Non-privileged users should coordinate any sharing of information with an SA through shared resources. -+ -+RHEL 8 ships with many optional packages. One such package is a file access policy daemon called "fapolicyd". "fapolicyd" is a userspace daemon that determines access rights to files based on attributes of the process and file. It can be used to either blacklist or whitelist processes or file access. -+ -+Proceed with caution with enforcing the use of this daemon. Improper configuration may render the system non-functional. The "fapolicyd" API is not namespace aware and can cause issues when launching or running containers. -+ -+Satisfies: SRG-OS-000368-GPOS-00154, SRG-OS-000370-GPOS-00155, SRG-OS-000480-GPOS-00232</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-001764Enable "fapolicyd" using the following command: -+ -+$ sudo systemctl enable --now fapolicydVerify the RHEL 8 "fapolicyd" is enabled and running with the following command: -+ -+$ sudo systemctl status fapolicyd.service -+ -+fapolicyd.service - File Access Policy Daemon -+Loaded: loaded (/usr/lib/systemd/system/fapolicyd.service; enabled; vendor preset: disabled) -+Active: active (running) -+ -+If fapolicyd is not enabled and running, this is a finding.SRG-OS-000368-GPOS-00154<GroupDescription></GroupDescription>RHEL-08-040137The RHEL 8 fapolicy module must be configured to employ a deny-all, permit-by-exception policy to allow the execution of authorized software programs.<VulnDiscussion>The organization must identify authorized software programs and permit execution of authorized software. The process used to identify software programs that are authorized to execute on organizational information systems is commonly referred to as whitelisting. -+ -+Utilizing a whitelist provides a configuration management method for allowing the execution of only authorized software. Using only authorized software decreases risk by limiting the number of potential vulnerabilities. Verification of whitelisted software occurs prior to execution or at system startup. -+ -+User home directories/folders may contain information of a sensitive nature. Non-privileged users should coordinate any sharing of information with an SA through shared resources. -+ -+RHEL 8 ships with many optional packages. One such package is a file access policy daemon called "fapolicyd". "fapolicyd" is a userspace daemon that determines access rights to files based on attributes of the process and file. It can be used to either blacklist or whitelist processes or file access. -+ -+Proceed with caution with enforcing the use of this daemon. Improper configuration may render the system non-functional. The "fapolicyd" API is not namespace aware and can cause issues when launching or running containers. -+ -+Satisfies: SRG-OS-000368-GPOS-00154, SRG-OS-000370-GPOS-00155, SRG-OS-000480-GPOS-00232</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-001764Configure RHEL 8 to employ a deny-all, permit-by-exception application whitelisting policy with "fapolicyd" using the following command: -+ -+Note: Running this command requires a root shell -+ -+# mount | egrep '^tmpfs| ext4| ext3| xfs' | awk '{ printf "%s\n", $3 }' >> /etc/fapolicyd/fapolicyd.mounts -+ -+With the "fapolicyd" installed and enabled, configure the daemon to function in permissive mode until the whitelist is built correctly to avoid system lockout. Do this by editing the "/etc/fapolicyd/fapolicyd.conf" file with the following line: -+ -+permissive = 1 -+ -+Build the whitelist in the "/etc/fapolicyd/fapolicyd.rules" file ensuring the last rule is "deny perm=any all : all". -+ -+Once it is determined the whitelist is built correctly, set the fapolicyd to enforcing mode by editing the "permissive" line in the /etc/fapolicyd/fapolicyd.conf file. -+ -+permissive = 0Verify the RHEL 8 "fapolicyd" employs a deny-all, permit-by-exception policy. -+ -+Check that "fapolicyd" is in enforcement mode with the following command: -+ -+$ sudo grep permissive /etc/fapolicyd/fapolicyd.conf -+ -+permissive = 0 -+ -+Check that fapolicyd employs a deny-all policy on system mounts with the following commands: -+ -+$ sudo tail /etc/fapolicyd/fapolicyd.rules -+ -+allow exe=/usr/bin/python3.7 : ftype=text/x-python -+deny_audit perm=any pattern=ld_so : all -+deny perm=any all : all -+ -+$ sudo cat /etc/fapolicyd/fapolicyd.mounts -+ -+/dev/shm -+/run -+/sys/fs/cgroup -+/ -+/home -+/boot -+/run/user/42 -+/run/user/1000 -+ -+If fapolicyd is not running in enforcement mode on all system mounts with a deny-all, permit-by-exception policy, this is a finding.SRG-OS-000378-GPOS-00163<GroupDescription></GroupDescription>RHEL-08-040139RHEL 8 must have the USBGuard installed.<VulnDiscussion>Without authenticating devices, unidentified or unknown devices may be introduced, thereby facilitating malicious activity. -+Peripherals include, but are not limited to, such devices as flash drives, external storage, and printers. -+A new feature that RHEL 8 provides is the USBGuard software framework. The USBguard-daemon is the main component of the USBGuard software framework. It runs as a service in the background and enforces the USB device authorization policy for all USB devices. The policy is defined by a set of rules using a rule language described in the usbguard-rules.conf file. The policy and the authorization state of USB devices can be modified during runtime using the usbguard tool. -+ -+The System Administrator (SA) must work with the site Information System Security Officer (ISSO) to determine a list of authorized peripherals and establish rules within the USBGuard software framework to allow only authorized devices.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-001958Install the USBGuard package with the following command: -+ -+$ sudo yum install usbguard.x86_64Verify USBGuard is installed on the operating system with the following command: -+ -+$ sudo yum list installed usbguard -+ -+Installed Packages -+usbguard.x86_64 0.7.8-7.el8 @ol8_appstream -+ -+If the USBGuard package is not installed, ask the SA to indicate how unauthorized peripherals are being blocked. -+If there is no evidence that unauthorized peripherals are being blocked before establishing a connection, this is a finding.SRG-OS-000378-GPOS-00163<GroupDescription></GroupDescription>RHEL-08-040141RHEL 8 must enable the USBGuard.<VulnDiscussion>Without authenticating devices, unidentified or unknown devices may be introduced, thereby facilitating malicious activity. -+ -+Peripherals include, but are not limited to, such devices as flash drives, external storage, and printers. -+ -+A new feature that RHEL 8 provides is the USBGuard software framework. The USBguard-daemon is the main component of the USBGuard software framework. It runs as a service in the background and enforces the USB device authorization policy for all USB devices. The policy is defined by a set of rules using a rule language described in the usbguard-rules.conf file. The policy and the authorization state of USB devices can be modified during runtime using the usbguard tool. -+ -+The System Administrator (SA) must work with the site Information System Security Officer (ISSO) to determine a list of authorized peripherals and establish rules within the USBGuard software framework to allow only authorized devices.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-001958Configure the operating system to enable the blocking of unauthorized peripherals with the following commands: -+ -+$ sudo systemctl enable usbguard.service -+ -+$ sudo systemctl start usbguard.service -+ -+Note: Enabling and starting usbguard without properly configuring it for an individual system will immediately prevent any access over a usb device such as a keyboard or mouseVerify the operating system has enabled the use of the USBGuard with the following command: -+ -+$ sudo systemctl status usbguard.service -+ -+usbguard.service - USBGuard daemon -+Loaded: loaded (/usr/lib/systemd/system/usbguard.service; enabled; vendor preset: disabled) -+Active: active (running) -+ -+If the usbguard.service is not enabled and active, ask the SA to indicate how unauthorized peripherals are being blocked. -+If there is no evidence that unauthorized peripherals are being blocked before establishing a connection, this is a finding.SRG-OS-000423-GPOS-00187<GroupDescription></GroupDescription>RHEL-08-040159All RHEL 8 networked systems must have SSH installed.<VulnDiscussion>Without protection of the transmitted information, confidentiality and integrity may be compromised because unprotected communications can be intercepted and either read or altered. -+ -+This requirement applies to both internal and external networks and all types of information system components from which information can be transmitted (e.g., servers, mobile devices, notebook computers, printers, copiers, scanners, and facsimile machines). Communication paths outside the physical protection of a controlled boundary are exposed to the possibility of interception and modification. -+ -+Protecting the confidentiality and integrity of organizational information can be accomplished by physical means (e.g., employing physical distribution systems) or by logical means (e.g., employing cryptographic techniques). If physical means of protection are employed, then logical means (cryptography) do not have to be employed, and vice versa. -+ -+Satisfies: SRG-OS-000423-GPOS-00187, SRG-OS-000424-GPOS-00188, SRG-OS-000425-GPOS-00189, SRG-OS-000426-GPOS-00190</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-002418Install SSH packages onto the host with the following command: -+ -+$ sudo yum install openssh-server.x86_64Verify SSH is installed with the following command: -+ -+$ sudo yum list installed openssh-server -+ -+openssh-server.x86_64 8.0p1-5.el8 @anaconda -+ -+If the "SSH server" package is not installed, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040209RHEL 8 must prevent IPv4 Internet Control Message Protocol (ICMP) redirect messages from being accepted.<VulnDiscussion>ICMP redirect messages are used by routers to inform hosts that a more direct route exists for a particular destination. These messages modify the host's route table and are unauthenticated. An illicit ICMP redirect message could result in a man-in-the-middle attack.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to prevent IPv4 ICMP redirect messages from being accepted with the following command: -+ -+$ sudo sysctl -w net.ipv4.conf.default.accept_redirects=0 -+ -+If "0" is not the system's default value then add or update the following line in the appropriate file under "/etc/sysctl.d": -+ -+net.ipv4.conf.default.accept_redirects=0Verify RHEL 8 will not accept IPv4 ICMP redirect messages. -+ -+Note: If IPv4 is disabled on the system, this requirement is Not Applicable. -+ -+Check the value of the default "accept_redirects" variables with the following command: -+ -+$ sudo sysctl net.ipv4.conf.default.accept_redirects -+ -+net.ipv4.conf.default.accept_redirects = 0 -+ -+If the returned line does not have a value of "0", a line is not returned, or the line is commented out, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040239RHEL 8 must not forward IPv4 source-routed packets.<VulnDiscussion>Source-routed packets allow the source of the packet to suggest that routers forward the packet along a different path than configured on the router, which can be used to bypass network security measures. This requirement applies only to the forwarding of source-routed traffic, such as when forwarding is enabled and the system is functioning as a router.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to not forward IPv4 source-routed packets with the following command: -+ -+$ sudo sysctl -w net.ipv4.conf.all.accept_source_route=0 -+ -+If "0" is not the system's all value then add or update the following line in the appropriate file under "/etc/sysctl.d": -+ -+net.ipv4.conf.all.accept_source_route=0Verify RHEL 8 does not accept IPv4 source-routed packets. -+ -+Note: If IPv4 is disabled on the system, this requirement is Not Applicable. -+ -+Check the value of the accept source route variable with the following command: -+ -+$ sudo sysctl net.ipv4.conf.all.accept_source_route -+ -+net.ipv4.conf.all.accept_source_route = 0 -+ -+If the returned line does not have a value of "0", a line is not returned, or the line is commented out, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040249RHEL 8 must not forward IPv4 source-routed packets by default.<VulnDiscussion>Source-routed packets allow the source of the packet to suggest that routers forward the packet along a different path than configured on the router, which can be used to bypass network security measures. This requirement applies only to the forwarding of source-routed traffic, such as when forwarding is enabled and the system is functioning as a router.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to not forward IPv4 source-routed packets by default with the following command: -+ -+$ sudo sysctl -w net.ipv4.conf.default.accept_source_route=0 -+ -+If "0" is not the system's default value then add or update the following line in the appropriate file under "/etc/sysctl.d": -+ -+net.ipv4.conf.default.accept_source_route=0Verify RHEL 8 does not accept IPv4 source-routed packets by default. -+ -+Note: If IPv4 is disabled on the system, this requirement is Not Applicable. -+ -+Check the value of the accept source route variable with the following command: -+ -+$ sudo sysctl net.ipv4.conf.default.accept_source_route -+ -+net.ipv4.conf.default.accept_source_route = 0 -+ -+If the returned line does not have a value of "0", a line is not returned, or the line is commented out, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040279RHEL 8 must ignore IPv4 Internet Control Message Protocol (ICMP) redirect messages.<VulnDiscussion>ICMP redirect messages are used by routers to inform hosts that a more direct route exists for a particular destination. These messages modify the host's route table and are unauthenticated. An illicit ICMP redirect message could result in a man-in-the-middle attack.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to ignore IPv4 ICMP redirect messages with the following command: -+ -+$ sudo sysctl -w net.ipv4.conf.all.accept_redirects=0 -+ -+If "0" is not the system's default value then add or update the following line in the appropriate file under "/etc/sysctl.d": -+ -+net.ipv4.conf.all.accept_redirects = 0Verify RHEL 8 ignores IPv4 ICMP redirect messages. -+ -+Note: If IPv4 is disabled on the system, this requirement is Not Applicable. -+ -+Check the value of the "accept_redirects" variables with the following command: -+ -+$ sudo sysctl net.ipv4.conf.all.accept_redirects -+ -+net.ipv4.conf.all.accept_redirects = 0 -+ -+If the returned line does not have a value of "0", a line is not returned, or the line is commented out, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040286RHEL 8 must enable hardening for the Berkeley Packet Filter Just-in-time compiler.<VulnDiscussion>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. -+Enabling hardening for the Berkeley Packet Filter (BPF) Just-in-time (JIT) compiler aids in mitigating JIT spraying attacks. Setting the value to "2" enables JIT hardening for all users.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to enable hardening for the BPF JIT compiler by adding the following line to a file in the "/etc/sysctl.d" directory: -+ -+net.core.bpf_jit_harden = 2 -+ -+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 --systemVerify RHEL 8 enables hardening for the BPF JIT with the following commands: -+ -+$ sudo sysctl net.core.bpf_jit_harden -+ -+net.core.bpf_jit_harden = 2 -+ -+If the returned line does not have a value of "2", or a line is not returned, this is a finding.SRG-OS-000191-GPOS-00080<GroupDescription></GroupDescription>RHEL-08-010001The RHEL 8 operating system must implement the Endpoint Security for Linux Threat Prevention tool.<VulnDiscussion>Adding endpoint security tools can provide the capability to automatically take actions in response to malicious behavior, which can provide additional agility in reacting to network threats. These tools also often include a reporting capability to provide network awareness of the system, which may not otherwise exist in an organization's systems management regime.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-001233Install and enable the latest McAfee ENSLTP package.Per OPORD 16-0080, the preferred endpoint security tool is McAfee Endpoint Security for Linux (ENSL) in conjunction with SELinux. -+ -+Procedure: -+Check that the following package has been installed: -+ -+$ sudo rpm -qa | grep -i mcafeetp -+ -+If the "mcafeetp" package is not installed, this is a finding. -+ -+Verify that the daemon is running: -+ -+$ sudo ps -ef | grep -i mfetpd -+ -+If the daemon is not running, this is a finding. -\ No newline at end of file -diff --git a/tests/data/profile_stability/rhel8/stig.profile b/tests/data/profile_stability/rhel8/stig.profile -index bffa509b698..1f355c246a0 100644 ---- a/tests/data/profile_stability/rhel8/stig.profile -+++ b/tests/data/profile_stability/rhel8/stig.profile -@@ -1,6 +1,6 @@ - description: 'This profile contains configuration checks that align to the - -- DISA STIG for Red Hat Enterprise Linux 8 V1R2. -+ DISA STIG for Red Hat Enterprise Linux 8 V1R3. - - - In addition to being applicable to Red Hat Enterprise Linux 8, DISA recognizes -diff --git a/tests/data/profile_stability/rhel8/stig_gui.profile b/tests/data/profile_stability/rhel8/stig_gui.profile -index c84ac75c7bf..8bfe8363d0a 100644 ---- a/tests/data/profile_stability/rhel8/stig_gui.profile -+++ b/tests/data/profile_stability/rhel8/stig_gui.profile -@@ -1,6 +1,6 @@ - description: 'This profile contains configuration checks that align to the - -- DISA STIG with GUI for Red Hat Enterprise Linux 8 V1R2. -+ DISA STIG with GUI for Red Hat Enterprise Linux 8 V1R3. - - - In addition to being applicable to Red Hat Enterprise Linux 8, DISA recognizes diff --git a/SOURCES/scap-security-guide-0.1.58-update_stig_gui_rhel7_version-PR_7340.patch b/SOURCES/scap-security-guide-0.1.58-update_stig_gui_rhel7_version-PR_7340.patch deleted file mode 100644 index 347da3f..0000000 --- a/SOURCES/scap-security-guide-0.1.58-update_stig_gui_rhel7_version-PR_7340.patch +++ /dev/null @@ -1,34 +0,0 @@ -From f151a439ce9199a0a4496c0bc55811b47bfd8b78 Mon Sep 17 00:00:00 2001 -From: Vojtech Polasek -Date: Thu, 5 Aug 2021 16:45:29 +0200 -Subject: [PATCH] update version of rhel7 stig_gui profile - ---- - products/rhel7/profiles/stig_gui.profile | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/products/rhel7/profiles/stig_gui.profile b/products/rhel7/profiles/stig_gui.profile -index d41d2ef4f80..6dd433d6c21 100644 ---- a/products/rhel7/profiles/stig_gui.profile -+++ b/products/rhel7/profiles/stig_gui.profile -@@ -1,9 +1,9 @@ - documentation_complete: true - - metadata: -- version: V3R3 -+ version: V3R4 - SMEs: -- - carlosmmatos -+ - ggbecker - - reference: https://public.cyber.mil/stigs/downloads/?_dl_facet_stigs=operating-systems%2Cunix-linux - -@@ -11,7 +11,7 @@ title: 'DISA STIG with GUI for Red Hat Enterprise Linux 7' - - description: |- - This profile contains configuration checks that align to the -- DISA STIG with GUI for Red Hat Enterprise Linux V3R3. -+ DISA STIG with GUI for Red Hat Enterprise Linux V3R4. - - In addition to being applicable to Red Hat Enterprise Linux 7, DISA recognizes this - configuration baseline as applicable to the operating system tier of diff --git a/SOURCES/scap-security-guide-0.1.58-update_stig_mapping_table-PR_7327.patch b/SOURCES/scap-security-guide-0.1.58-update_stig_mapping_table-PR_7327.patch deleted file mode 100644 index 422a290..0000000 --- a/SOURCES/scap-security-guide-0.1.58-update_stig_mapping_table-PR_7327.patch +++ /dev/null @@ -1,120 +0,0 @@ -From ea1bab197a17dd944e41a583c82c3cc757bb566b Mon Sep 17 00:00:00 2001 -From: Gabriel Becker -Date: Wed, 4 Aug 2021 12:23:05 +0200 -Subject: [PATCH] Update STIG mapping table to reflect statistics of coverage. - ---- - .../shared_xccdf-apply-overlay-stig.xslt | 59 +++++++++++++------ - .../transforms/shared_xccdf2table-stig.xslt | 28 +++++++++ - 2 files changed, 68 insertions(+), 19 deletions(-) - -diff --git a/shared/transforms/shared_xccdf-apply-overlay-stig.xslt b/shared/transforms/shared_xccdf-apply-overlay-stig.xslt -index 945f709b95..b7c000608c 100644 ---- a/shared/transforms/shared_xccdf-apply-overlay-stig.xslt -+++ b/shared/transforms/shared_xccdf-apply-overlay-stig.xslt -@@ -28,26 +28,47 @@ - - - -- -- -- -- SRG-OS-ID -- -- -- -- <xsl:value-of select="$overlay_title"/> -- -- -- -- -- -- -- -- -- -+ -+ -+ -+ SRG-OS-ID -+ -+ -+ -+ <xsl:value-of select="$overlay_title"/> -+ -+ -+ -+ -+ -+ -+ -+ - -- -- -+ -+ -+ -+ -+ -+ SRG-OS-ID -+ -+ -+ -+ <xsl:value-of select="$overlay_title"/> -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - -diff --git a/shared/transforms/shared_xccdf2table-stig.xslt b/shared/transforms/shared_xccdf2table-stig.xslt -index 3746c386c0..4c477542f4 100644 ---- a/shared/transforms/shared_xccdf2table-stig.xslt -+++ b/shared/transforms/shared_xccdf2table-stig.xslt -@@ -20,6 +20,34 @@ - -
      -
      -+ -+
      -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+
      TotalMissingImplementedCoverageSTIG ids missing rule
      % -+ -+ -+ -+
      -+
      -+ - - - diff --git a/SOURCES/scap-security-guide-0.1.58-update_stig_overlay-PR_7287.patch b/SOURCES/scap-security-guide-0.1.58-update_stig_overlay-PR_7287.patch deleted file mode 100644 index b7c4870..0000000 --- a/SOURCES/scap-security-guide-0.1.58-update_stig_overlay-PR_7287.patch +++ /dev/null @@ -1,9202 +0,0 @@ -From c2879589d5ff715c15a9f96f22f6dac4efca0852 Mon Sep 17 00:00:00 2001 -From: Gabriel Becker -Date: Mon, 26 Jul 2021 17:49:38 +0200 -Subject: [PATCH 01/10] Fix create-stig-overlay.py script to extract correct - identifiers. - ---- - utils/create-stig-overlay.py | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/utils/create-stig-overlay.py b/utils/create-stig-overlay.py -index da59d4a6a46..6d7e360b31b 100755 ---- a/utils/create-stig-overlay.py -+++ b/utils/create-stig-overlay.py -@@ -93,9 +93,9 @@ def new_stig_overlay(xccdftree, ssgtree, outfile): - srg = title.text - for rule in group.findall("./{%s}Rule" % xccdf_ns): - svkey_raw = rule.get("id") -- svkey = svkey_raw.strip()[3:-7] -+ svkey = svkey_raw.strip()[3:9] - severity = rule.get("severity") -- release = svkey_raw.strip()[9:-5] -+ release = svkey_raw.strip()[10:-5] - version = element_value("version", rule) - rule_title = element_value("title", rule) - ident = element_value("ident", rule).strip("CCI-").lstrip("0") - -From 99d698518d522571ffbed0a21f0ef783ae01e2fd Mon Sep 17 00:00:00 2001 -From: Gabriel Becker -Date: Mon, 26 Jul 2021 17:50:26 +0200 -Subject: [PATCH 02/10] Do not add rule id based on SRG mapping to STIG tables. - -Revert change from -https://github.com/ComplianceAsCode/content/commit/71dc9eec3b80984cc3be43dd8d05343555213382#diff-9e0d84b6fa315174f856f178bb57199de68baefbdeb79a17971202ee8982c04fR61 -as it's weird having mapped rules that do not correspond with current -STIG id description. ---- - utils/create-stig-overlay.py | 13 +------------ - 1 file changed, 1 insertion(+), 12 deletions(-) - -diff --git a/utils/create-stig-overlay.py b/utils/create-stig-overlay.py -index 6d7e360b31b..3247f7f7785 100755 ---- a/utils/create-stig-overlay.py -+++ b/utils/create-stig-overlay.py -@@ -65,17 +65,6 @@ def ssg_xccdf_stigid_mapping(ssgtree): - return xccdftostig_idmapping - - --def get_nested_stig_items(ssg_mapping, srg): -- mapped_id = "XXXX" -- for rhid, srgs in ssg_mapping.items(): -- for xccdfid, srglist in srgs.items(): -- if srg in srglist and len(srglist) > 1: -- mapped_id = xccdfid -- break -- -- return mapped_id -- -- - def getkey(elem): - return elem.get("ownerid") - -@@ -106,7 +95,7 @@ def new_stig_overlay(xccdftree, ssgtree, outfile): - try: - mapped_id = ''.join(ssg_mapping[version].keys()) - except KeyError as e: -- mapped_id = get_nested_stig_items(ssg_mapping, srg) -+ mapped_id = "XXXX" - - overlay = ET.SubElement(new_stig_overlay, "overlay", owner=owner, - ruleid=mapped_id, ownerid=version, disa=ident, - -From de85a1318e0c1c809202535ec0b17672ae7a58a0 Mon Sep 17 00:00:00 2001 -From: Gabriel Becker -Date: Mon, 26 Jul 2021 17:52:57 +0200 -Subject: [PATCH 03/10] Add quiet mode for create-stig-overlay.py script. - ---- - utils/create-stig-overlay.py | 32 +++++++++++++++++++++++--------- - 1 file changed, 23 insertions(+), 9 deletions(-) - -diff --git a/utils/create-stig-overlay.py b/utils/create-stig-overlay.py -index 3247f7f7785..02deb0b5b2e 100755 ---- a/utils/create-stig-overlay.py -+++ b/utils/create-stig-overlay.py -@@ -69,7 +69,7 @@ def getkey(elem): - return elem.get("ownerid") - - --def new_stig_overlay(xccdftree, ssgtree, outfile): -+def new_stig_overlay(xccdftree, ssgtree, outfile, quiet): - if not ssgtree: - ssg_mapping = False - else: -@@ -113,11 +113,14 @@ def new_stig_overlay(xccdftree, ssgtree, outfile): - overlay_directory = os.path.dirname(outfile) - if not os.path.exists(overlay_directory): - os.makedirs(overlay_directory) -- print("\nOverlay directory created: %s" % overlay_directory) -+ if not quiet: -+ print("\nOverlay directory created: %s" % overlay_directory) - - with open(outfile, 'wb') as f: - f.write(pretty_xml_as_string) -- print("\nGenerated the new STIG overlay file: %s" % outfile) -+ -+ if not quiet: -+ print("\nGenerated the new STIG overlay file: %s" % outfile) - - - def parse_args(): -@@ -134,6 +137,9 @@ def parse_args(): - action="store", dest="output_file", - help="STIG overlay XML content file \ - [default: %default]") -+ parser.add_argument("-q", "--quiet", dest="quiet", default=False, -+ action="store_true", help="Do not print anything and assume yes for everything") -+ - return parser.parse_args() - - -@@ -143,9 +149,11 @@ def main(): - disa_xccdftree = ET.parse(args.disa_xccdf_filename) - - if not args.ssg_xccdf_filename: -- print("WARNING: You are generating a STIG overlay XML file without mapping it " -- "to existing SSG content.") -- prompt = yes_no_prompt() -+ prompt = True -+ if not args.quiet: -+ print("WARNING: You are generating a STIG overlay XML file without mapping it " -+ "to existing SSG content.") -+ prompt = yes_no_prompt() - if not prompt: - sys.exit(0) - ssg_xccdftree = False -@@ -153,13 +161,19 @@ def main(): - ssg_xccdftree = ET.parse(args.ssg_xccdf_filename) - ssg = ssg_xccdftree.find(".//{%s}publisher" % dc_ns).text - if ssg != "SCAP Security Guide Project": -- sys.exit("%s is not a valid SSG generated XCCDF file." % args.ssg_xccdf_filename) -+ if not args.quiet: -+ sys.exit("%s is not a valid SSG generated XCCDF file." % args.ssg_xccdf_filename) -+ else: -+ sys.exit(1) - - disa = disa_xccdftree.find(".//{%s}source" % dc_ns).text - if disa != "STIG.DOD.MIL": -- sys.exit("%s is not a valid DISA generated manual XCCDF file." % args.disa_xccdf_filename) -+ if not args.quiet: -+ sys.exit("%s is not a valid DISA generated manual XCCDF file." % args.disa_xccdf_filename) -+ else: -+ sys.exit(2) - -- new_stig_overlay(disa_xccdftree, ssg_xccdftree, args.output_file) -+ new_stig_overlay(disa_xccdftree, ssg_xccdftree, args.output_file, args.quiet) - - - if __name__ == "__main__": - -From fc3f316cd3ccc375f9439683828a2d5829b411df Mon Sep 17 00:00:00 2001 -From: Gabriel Becker -Date: Mon, 26 Jul 2021 17:53:24 +0200 -Subject: [PATCH 04/10] Generate STIG overlay files during build time. - ---- - cmake/SSGCommon.cmake | 11 ++++++++++- - 1 file changed, 10 insertions(+), 1 deletion(-) - -diff --git a/cmake/SSGCommon.cmake b/cmake/SSGCommon.cmake -index 1bcd5156206..f795d5be2c2 100644 ---- a/cmake/SSGCommon.cmake -+++ b/cmake/SSGCommon.cmake -@@ -1274,12 +1274,21 @@ macro(ssg_build_html_stig_tables PRODUCT) - DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/transforms/xccdf2table-stig.xslt" - COMMENT "[${PRODUCT}-tables] generating HTML MANUAL STIG table" - ) -+ add_custom_command( -+ OUTPUT "${CMAKE_BINARY_DIR}/${PRODUCT}/overlays/stig_overlay.xml" -+ COMMAND "${CMAKE_COMMAND}" -E make_directory "${CMAKE_BINARY_DIR}/${PRODUCT}/overlays" -+ COMMAND env "PYTHONPATH=$ENV{PYTHONPATH}" "${PYTHON_EXECUTABLE}" "${CMAKE_SOURCE_DIR}/utils/create-stig-overlay.py" --quiet --disa-xccdf="${DISA_STIG_REF}" --ssg-xccdf="${CMAKE_BINARY_DIR}/ssg-${PRODUCT}-xccdf.xml" -o "${CMAKE_BINARY_DIR}/${PRODUCT}/overlays/stig_overlay.xml" -+ DEPENDS "${CMAKE_BINARY_DIR}/ssg-${PRODUCT}-xccdf.xml" -+ DEPENDS "${DISA_STIG_REF}" -+ COMMENT "[${PRODUCT}-tables] generating STIG XML overlay" -+ ) - add_custom_command( - OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/unlinked-stig-xccdf.xml" -- COMMAND "${XSLTPROC_EXECUTABLE}" -stringparam overlay "${CMAKE_CURRENT_SOURCE_DIR}/overlays/stig_overlay.xml" --stringparam ocil-document "${CMAKE_CURRENT_BINARY_DIR_NO_SPACES}/ocil-linked.xml" --output "${CMAKE_CURRENT_BINARY_DIR}/unlinked-stig-xccdf.xml" "${CMAKE_CURRENT_SOURCE_DIR}/transforms/xccdf-apply-overlay-stig.xslt" "${CMAKE_BINARY_DIR}/ssg-${PRODUCT}-xccdf.xml" -+ COMMAND "${XSLTPROC_EXECUTABLE}" -stringparam overlay "${CMAKE_BINARY_DIR}/${PRODUCT}/overlays/stig_overlay.xml" --stringparam ocil-document "${CMAKE_CURRENT_BINARY_DIR_NO_SPACES}/ocil-linked.xml" --output "${CMAKE_CURRENT_BINARY_DIR}/unlinked-stig-xccdf.xml" "${CMAKE_CURRENT_SOURCE_DIR}/transforms/xccdf-apply-overlay-stig.xslt" "${CMAKE_BINARY_DIR}/ssg-${PRODUCT}-xccdf.xml" - DEPENDS generate-ssg-${PRODUCT}-xccdf.xml - DEPENDS "${CMAKE_BINARY_DIR}/ssg-${PRODUCT}-xccdf.xml" - DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/transforms/xccdf-apply-overlay-stig.xslt" -+ DEPENDS "${CMAKE_BINARY_DIR}/${PRODUCT}/overlays/stig_overlay.xml" - COMMENT "[${PRODUCT}-tables] generating unlinked STIG XCCDF XML file" - ) - add_custom_command( - -From bfcaf848a385051a4151db517d1f1d23adee7048 Mon Sep 17 00:00:00 2001 -From: Gabriel Becker -Date: Mon, 26 Jul 2021 18:06:23 +0200 -Subject: [PATCH 05/10] Remove stig_overlay.xml files as they are generated - during build time. - ---- - products/chromium/overlays/stig_overlay.xml | 151 -- - products/firefox/overlays/stig_overlay.xml | 87 -- - products/jre/overlays/stig_overlay.xml | 67 - - products/ol7/overlays/stig_overlay.xml | 1003 -------------- - products/rhel7/overlays/stig_overlay.xml | 999 -------------- - products/rhel8/overlays/stig_overlay.xml | 1375 ------------------- - products/sle12/overlays/stig_overlay.xml | 811 ----------- - products/sle15/overlays/stig_overlay.xml | 935 ------------- - products/vsel/overlays/stig_overlay.xml | 159 --- - 10 files changed, 5587 deletions(-) - delete mode 100644 products/chromium/overlays/stig_overlay.xml - delete mode 100644 products/firefox/overlays/stig_overlay.xml - delete mode 100644 products/jre/overlays/stig_overlay.xml - delete mode 100644 products/ol7/overlays/stig_overlay.xml - delete mode 100644 products/rhel7/overlays/stig_overlay.xml - delete mode 100644 products/rhel8/overlays/stig_overlay.xml - delete mode 100644 products/sle12/overlays/stig_overlay.xml - delete mode 100644 products/sle15/overlays/stig_overlay.xml - delete mode 100644 products/vsel/overlays/stig_overlay.xml - -diff --git a/products/chromium/overlays/stig_overlay.xml b/products/chromium/overlays/stig_overlay.xml -deleted file mode 100644 -index ce776d1c813..00000000000 ---- a/products/chromium/overlays/stig_overlay.xml -+++ /dev/null -@@ -1,151 +0,0 @@ -- -- -- -- -- Firewall traversal from remote host must be disabled. -- -- -- -- Sites ability for showing desktop notifications must be disabled. -- -- -- -- Sites ability to show pop-ups must be disabled. -- -- -- -- Site tracking users location must be disabled. -- -- -- -- Extensions installation must be blacklisted by default. -- -- -- -- Extensions that are approved for use must be whitelisted. -- -- -- -- The default search providers name must be set. -- -- -- -- The default search provider URL must be set to perform encrypted searches. -- -- -- -- Default search provider must be enabled. -- -- -- -- Use of cleartext passwords in Password Manager must be disabled. -- -- -- -- The Password Manager must be disabled. -- -- -- -- The HTTP Authentication must be set to negotiate. -- -- -- -- The running of outdated plugins must be disabled. -- -- -- -- Plugins requiring authorization must ask for user permission. -- -- -- -- Third party cookes must be blocked. -- -- -- -- Background processing must be disabled. -- -- -- -- 3D Graphics APIs must be disabled. -- -- -- -- Google Data Synchronization must be disabled. -- -- -- -- The URL protocol schema javascript must be disabled. -- -- -- -- Autofill must be disabled. -- -- -- -- Cloud print mush be disabled. -- -- -- -- Network prediction must be disabled. -- -- -- -- Metrics reporting to Google must be disabled. -- -- -- -- Search suggestions must be disabled. -- -- -- -- Importing of saved passwords must be disabled. -- -- -- -- Metrics reporting to Google must be disabled. -- -- -- -- Plugins must be disabled by default. -- -- -- -- Plugins approved for use must be enabled. -- -- -- -- Automated installation of missing plugins must be disabled. -- -- -- -- Online revocation checks must be done. -- -- -- -- Safe Browsing must be enabled. -- -- -- -- Browser history must be saved. -- -- -- -- Default behavior must block webpages from automatically running plugins. -- -- -- -- Session only based cookies must be disabled. -- -- -- -- The home page must be set to a trusted site. -- -- -- -- -- URLs must be whitelisted for plugin use. -- -- -diff --git a/products/firefox/overlays/stig_overlay.xml b/products/firefox/overlays/stig_overlay.xml -deleted file mode 100644 -index d4f19f02d21..00000000000 ---- a/products/firefox/overlays/stig_overlay.xml -+++ /dev/null -@@ -1,87 +0,0 @@ -- -- -- -- -- Installed version of Firefox not supported. -- -- -- -- Firefox must be configured to allow only TLS. -- -- -- -- FireFox is configured to ask which certificate to present to a web site when a certificate is required. -- -- -- -- Firefox required security preferences can not be changed by user. -- -- -- -- Firefox automatically checks for updated version of installed Search plugins. -- -- -- -- Firefox automatically updates installed add-ons and plugins. -- -- -- -- Firefox automatically executes or downloads MIME types which are not authorized for auto-download. -- -- -- -- Network shell protocol is enabled in FireFox. -- -- -- -- Firefox is not configured to prompt a user before downloading and opening required file types. -- -- -- -- FireFox plug-in for ActiveX controls is installed. -- -- -- -- Firefox formfill assistance option is disabled. -- -- -- -- Firefox is configured to autofill passwords. -- -- -- -- FireFox is configured to use a password store with or without a master password. -- -- -- -- FireFox is not configured to block pop-up windows. -- -- -- -- FireFox is configured to allow JavaScript to move or resize windows. -- -- -- -- Firefox is configured to allow JavaScript to raise or lower windows. -- -- -- -- Firefox is configured to allow JavaScript to disable or replace context menus. -- -- -- -- Extensions install must be disabled. -- -- -- -- Background submission of information to Mozilla must be disabled. -- -- -- -- Firefox Development Tools Must Be Disabled. -- -- -- -- The DOD Root Certificate is not installed. -- -- -diff --git a/products/jre/overlays/stig_overlay.xml b/products/jre/overlays/stig_overlay.xml -deleted file mode 100644 -index 90eaf79e27f..00000000000 ---- a/products/jre/overlays/stig_overlay.xml -+++ /dev/null -@@ -1,67 +0,0 @@ -- -- -- -- -- -- </overlay> -- <overlay owner="disastig" ruleid="java_jre_deployment_config_properties" ownerid="JRE8-UX-000020" disa="366" severity="medium"> -- <VMSinfo VKey="66909" SVKey="81399" VRelease="2"/> -- <title text="Oracle JRE 8 deployment.config file must contain proper keys and values."/> -- </overlay> -- <overlay owner="disastig" ruleid="java_jre_deployment_properties_exists" ownerid="JRE8-UX-000030" disa="366" severity="medium"> -- <VMSinfo VKey="66911" SVKey="81401" VRelease="1"/> -- <title text="Oracle JRE 8 must have a deployment.properties file present."/> -- </overlay> -- <overlay owner="disastig" ruleid="java_jre_unsigned_applications" ownerid="JRE8-UX-000060" disa="366" severity="low"> -- <VMSinfo VKey="66913" SVKey="81403" VRelease="1"/> -- <title text="Oracle JRE 8 must default to the most secure built-in setting."/> -- </overlay> -- <overlay owner="disastig" ruleid="java_jre_enable_jws_locked" ownerid="JRE8-UX-000070" disa="366" severity="medium"> -- <VMSinfo VKey="66915" SVKey="81405" VRelease="1"/> -- <title text="Oracle JRE 8 must be set to allow Java Web Start (JWS) applications."/> -- </overlay> -- <overlay owner="disastig" ruleid="java_jre_disable_untrusted_sources_locked" ownerid="JRE8-UX-000080" disa="1695" severity="medium"> -- <VMSinfo VKey="66917" SVKey="81407" VRelease="1"/> -- <title text="Oracle JRE 8 must disable the dialog enabling users to grant permissions to execute signed content from an untrusted authority."/> -- </overlay> -- <overlay owner="disastig" ruleid="java_jre_lock_untrusted_sources_locked" ownerid="JRE8-UX-000090" disa="1695" severity="medium"> -- <VMSinfo VKey="66919" SVKey="81409" VRelease="1"/> -- <title text="Oracle JRE 8 must lock the dialog enabling users to grant permissions to execute signed content from an untrusted authority."/> -- </overlay> -- <overlay owner="disastig" ruleid="java_jre_validation_ocsp_locked" ownerid="JRE8-UX-000100" disa="185" severity="medium"> -- <VMSinfo VKey="66921" SVKey="81411" VRelease="1"/> -- <title text="Oracle JRE 8 must set the option to enable online certificate validation."/> -- </overlay> -- <overlay owner="disastig" ruleid="java_jre_blacklist_check_locked" ownerid="JRE8-UX-000110" disa="1169" severity="medium"> -- <VMSinfo VKey="66923" SVKey="81413" VRelease="1"/> -- <title text="Oracle JRE 8 must prevent the download of prohibited mobile code."/> -- </overlay> -- <overlay owner="disastig" ruleid="java_jre_accepted_sites_properties" ownerid="JRE8-UX-000120" disa="1774" severity="medium"> -- <VMSinfo VKey="66925" SVKey="81415" VRelease="2"/> -- <title text="Oracle JRE 8 must enable the option to use an accepted sites list."/> -- </overlay> -- <overlay owner="disastig" ruleid="java_jre_accepted_sites_exists" ownerid="JRE8-UX-000130" disa="1774" severity="medium"> -- <VMSinfo VKey="66927" SVKey="81417" VRelease="1"/> -- <title text="Oracle JRE 8 must have an exception.sites file present."/> -- </overlay> -- <overlay owner="disastig" ruleid="java_jre_validation_crl_locked" ownerid="JRE8-UX-000150" disa="1991" severity="medium"> -- <VMSinfo VKey="66929" SVKey="81419" VRelease="1"/> -- <title text="Oracle JRE 8 must enable the dialog to enable users to check publisher certificates for revocation."/> -- </overlay> -- <overlay owner="disastig" ruleid="java_jre_security_revocation_check_locked" ownerid="JRE8-UX-000160" disa="1991" severity="medium"> -- <VMSinfo VKey="66931" SVKey="81421" VRelease="1"/> -- <title text="Oracle JRE 8 must lock the option to enable users to check publisher certificates for revocation."/> -- </overlay> -- <overlay owner="disastig" ruleid="java_jre_insecure_prompt" ownerid="JRE8-UX-000170" disa="2460" severity="medium"> -- <VMSinfo VKey="66933" SVKey="81423" VRelease="1"/> -- <title text="Oracle JRE 8 must prompt the user for action prior to executing mobile code."/> -- </overlay> -- <overlay owner="disastig" ruleid="java_jre_updated" ownerid="JRE8-UX-000180" disa="2605" severity="high"> -- <VMSinfo VKey="66937" SVKey="81427" VRelease="1"/> -- <title text="The version of Oracle JRE 8 running on the system must be the most current available."/> -- </overlay> -- <overlay owner="disastig" ruleid="java_jre_clean_previous_version" ownerid="JRE8-UX-000190" disa="2617" severity="medium"> -- <VMSinfo VKey="66935" SVKey="81425" VRelease="1"/> -- <title text="Oracle JRE 8 must remove previous versions when the latest version is installed."/> -- </overlay> --</overlays> -diff --git a/products/ol7/overlays/stig_overlay.xml b/products/ol7/overlays/stig_overlay.xml -deleted file mode 100644 -index 49b5d523eba..00000000000 ---- a/products/ol7/overlays/stig_overlay.xml -+++ /dev/null -@@ -1,1003 +0,0 @@ --<?xml version="1.0" encoding="UTF-8"?> --<overlays xmlns="http://checklists.nist.gov/xccdf/1.1"> -- <overlay owner="disastig" ruleid="rpm_verify_ownership" ownerid="OL07-00-010010" disa="1496" severity="high"> -- <VMSinfo VKey="221652" SVKey="221652r6469" VRelease="r646955"/> -- <title text="The Oracle Linux operating system must be configured so that the file permissions, ownership, and group membership of system files and commands match the vendor values."/> -- </overlay> -- <overlay owner="disastig" ruleid="rpm_verify_hashes" ownerid="OL07-00-010020" disa="1749" severity="high"> -- <VMSinfo VKey="221653" SVKey="221653r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that the cryptographic hash of system files and commands matches vendor values."/> -- </overlay> -- <overlay owner="disastig" ruleid="dconf_gnome_banner_enabled" ownerid="OL07-00-010030" disa="50" severity="medium"> -- <VMSinfo VKey="221654" SVKey="221654r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must display the Standard Mandatory DoD Notice and Consent Banner before granting local or remote access to the system via a graphical user logon."/> -- </overlay> -- <overlay owner="disastig" ruleid="dconf_gnome_login_banner_text" ownerid="OL07-00-010040" disa="48" severity="medium"> -- <VMSinfo VKey="221655" SVKey="221655r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must display the approved Standard Mandatory DoD Notice and Consent Banner before granting local or remote access to the system via a graphical user logon."/> -- </overlay> -- <overlay owner="disastig" ruleid="banner_etc_issue" ownerid="OL07-00-010050" disa="48" severity="medium"> -- <VMSinfo VKey="221656" SVKey="221656r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system 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."/> -- </overlay> -- <overlay owner="disastig" ruleid="dconf_gnome_screensaver_lock_enabled" ownerid="OL07-00-010060" disa="58" severity="medium"> -- <VMSinfo VKey="221657" SVKey="221657r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must enable a user session lock until that user re-establishes access using established identification and authentication procedures."/> -- </overlay> -- <overlay owner="disastig" ruleid="dconf_gnome_enable_smartcard_auth" ownerid="OL07-00-010061" disa="1948" severity="medium"> -- <VMSinfo VKey="221658" SVKey="221658r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must uniquely identify and must authenticate users using multifactor authentication via a graphical user logon."/> -- </overlay> -- <overlay owner="disastig" ruleid="dconf_gnome_screensaver_lock_locked" ownerid="OL07-00-010062" disa="57" severity="medium"> -- <VMSinfo VKey="221659" SVKey="221659r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must prevent a user from overriding the screensaver lock-enabled setting for the graphical user interface."/> -- </overlay> -- <overlay owner="disastig" ruleid="dconf_gnome_screensaver_idle_delay" ownerid="OL07-00-010070" disa="57" severity="medium"> -- <VMSinfo VKey="221660" SVKey="221660r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must initiate a screensaver after a 15-minute period of inactivity for graphical user interfaces."/> -- </overlay> -- <overlay owner="disastig" ruleid="dconf_gnome_screensaver_user_locks" ownerid="OL07-00-010081" disa="57" severity="medium"> -- <VMSinfo VKey="221661" SVKey="221661r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must prevent a user from overriding the screensaver lock-delay setting for the graphical user interface."/> -- </overlay> -- <overlay owner="disastig" ruleid="dconf_gnome_session_idle_user_locks" ownerid="OL07-00-010082" disa="57" severity="medium"> -- <VMSinfo VKey="221662" SVKey="221662r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must prevent a user from overriding the session idle-delay setting for the graphical user interface."/> -- </overlay> -- <overlay owner="disastig" ruleid="dconf_gnome_screensaver_idle_activation_enabled" ownerid="OL07-00-010100" disa="57" severity="medium"> -- <VMSinfo VKey="221664" SVKey="221664r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must initiate a session lock for the screensaver after a period of inactivity for graphical user interfaces."/> -- </overlay> -- <overlay owner="disastig" ruleid="dconf_gnome_screensaver_idle_activation_locked" ownerid="OL07-00-010101" disa="57" severity="medium"> -- <VMSinfo VKey="221665" SVKey="221665r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must prevent a user from overriding the screensaver idle-activation-enabled setting for the graphical user interface."/> -- </overlay> -- <overlay owner="disastig" ruleid="dconf_gnome_screensaver_lock_delay" ownerid="OL07-00-010110" disa="57" severity="medium"> -- <VMSinfo VKey="221666" SVKey="221666r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must initiate a session lock for graphical user interfaces when the screensaver is activated."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_password_pam_retry" ownerid="OL07-00-010118" disa="192" severity="medium"> -- <VMSinfo VKey="221667" SVKey="221667r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that /etc/pam.d/passwd implements /etc/pam.d/system-auth when changing passwords."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_password_pam_retry" ownerid="OL07-00-010119" disa="192" severity="medium"> -- <VMSinfo VKey="221668" SVKey="221668r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that when passwords are changed or new passwords are established, pwquality must be used."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_password_pam_ucredit" ownerid="OL07-00-010120" disa="192" severity="medium"> -- <VMSinfo VKey="221669" SVKey="221669r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that when passwords are changed or new passwords are established, the new password must contain at least one upper-case character."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_password_pam_lcredit" ownerid="OL07-00-010130" disa="193" severity="medium"> -- <VMSinfo VKey="221670" SVKey="221670r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that when passwords are changed or new passwords are established, the new password must contain at least one lower-case character."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_password_pam_dcredit" ownerid="OL07-00-010140" disa="194" severity="medium"> -- <VMSinfo VKey="221671" SVKey="221671r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that when passwords are changed or new passwords are assigned, the new password must contain at least one numeric character."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_password_pam_ocredit" ownerid="OL07-00-010150" disa="1619" severity="medium"> -- <VMSinfo VKey="221672" SVKey="221672r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that when passwords are changed or new passwords are established, the new password must contain at least one special character."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_password_pam_difok" ownerid="OL07-00-010160" disa="195" severity="medium"> -- <VMSinfo VKey="221673" SVKey="221673r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that when passwords are changed a minimum of eight of the total number of characters must be changed."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_password_pam_minclass" ownerid="OL07-00-010170" disa="195" severity="medium"> -- <VMSinfo VKey="221674" SVKey="221674r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that when passwords are changed a minimum of four character classes must be changed."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_password_pam_maxrepeat" ownerid="OL07-00-010180" disa="195" severity="medium"> -- <VMSinfo VKey="221675" SVKey="221675r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that when passwords are changed the number of repeating consecutive characters must not be more than three characters."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_password_pam_maxclassrepeat" ownerid="OL07-00-010190" disa="195" severity="medium"> -- <VMSinfo VKey="221676" SVKey="221676r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that when passwords are changed the number of repeating characters of the same character class must not be more than four characters."/> -- </overlay> -- <overlay owner="disastig" ruleid="set_password_hashing_algorithm_systemauth" ownerid="OL07-00-010200" disa="196" severity="medium"> -- <VMSinfo VKey="221677" SVKey="221677r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that the PAM system service is configured to store only encrypted representations of passwords."/> -- </overlay> -- <overlay owner="disastig" ruleid="set_password_hashing_algorithm_logindefs" ownerid="OL07-00-010210" disa="196" severity="medium"> -- <VMSinfo VKey="221678" SVKey="221678r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured to use the shadow file to store only encrypted representations of passwords."/> -- </overlay> -- <overlay owner="disastig" ruleid="set_password_hashing_algorithm_libuserconf" ownerid="OL07-00-010220" disa="196" severity="medium"> -- <VMSinfo VKey="221680" SVKey="221680r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that user and group account administration utilities are configured to store only encrypted representations of passwords."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_minimum_age_login_defs" ownerid="OL07-00-010230" disa="198" severity="medium"> -- <VMSinfo VKey="221681" SVKey="221681r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that passwords for new users are restricted to a 24 hours/1 day minimum lifetime."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_password_set_min_life_existing" ownerid="OL07-00-010240" disa="198" severity="medium"> -- <VMSinfo VKey="221682" SVKey="221682r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that passwords are restricted to a 24 hours/1 day minimum lifetime."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_maximum_age_login_defs" ownerid="OL07-00-010250" disa="199" severity="medium"> -- <VMSinfo VKey="221683" SVKey="221683r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that passwords for new users are restricted to a 60-day maximum lifetime."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_password_set_max_life_existing" ownerid="OL07-00-010260" disa="199" severity="medium"> -- <VMSinfo VKey="221684" SVKey="221684r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that existing passwords are restricted to a 60-day maximum lifetime."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_password_pam_unix_remember" ownerid="OL07-00-010270" disa="200" severity="medium"> -- <VMSinfo VKey="221685" SVKey="221685r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that passwords are prohibited from reuse for a minimum of five generations."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_password_pam_minlen" ownerid="OL07-00-010280" disa="205" severity="medium"> -- <VMSinfo VKey="221686" SVKey="221686r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that passwords are a minimum of 15 characters in length."/> -- </overlay> -- <overlay owner="disastig" ruleid="no_empty_passwords" ownerid="OL07-00-010290" disa="366" severity="high"> -- <VMSinfo VKey="221687" SVKey="221687r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must not have accounts configured with blank or null passwords."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_disable_empty_passwords" ownerid="OL07-00-010300" disa="766" severity="high"> -- <VMSinfo VKey="221688" SVKey="221688r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that the SSH daemon does not allow authentication using an empty password."/> -- </overlay> -- <overlay owner="disastig" ruleid="account_disable_post_pw_expiration" ownerid="OL07-00-010310" disa="795" severity="medium"> -- <VMSinfo VKey="221689" SVKey="221689r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must disable account identifiers (individuals, groups, roles, and devices) if the password expires."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_passwords_pam_faillock_unlock_time" ownerid="OL07-00-010320" disa="44" severity="medium"> -- <VMSinfo VKey="221690" SVKey="221690r6037" VRelease="r603787"/> -- <title text="The Oracle Linux operating system must be configured to lock accounts for a minimum of 15 minutes after three unsuccessful logon attempts within a 15-minute timeframe."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_passwords_pam_faillock_deny_root" ownerid="OL07-00-010330" disa="2238" severity="medium"> -- <VMSinfo VKey="221691" SVKey="221691r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must lock the associated account after three unsuccessful root logon attempts are made within a 15-minute period."/> -- </overlay> -- <overlay owner="disastig" ruleid="sudo_remove_nopasswd" ownerid="OL07-00-010340" disa="2038" severity="medium"> -- <VMSinfo VKey="221692" SVKey="221692r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that users must provide a password for privilege escalation."/> -- </overlay> -- <overlay owner="disastig" ruleid="sudo_restrict_privilege_elevation_to_authorized" ownerid="OL07-00-010341" disa="366" severity="medium"> -- <VMSinfo VKey="237627" SVKey="237627r6469" VRelease="r646964"/> -- <title text="The Oracle Linux operating system must restrict privilege elevation to authorized personnel."/> -- </overlay> -- <overlay owner="disastig" ruleid="sudoers_validate_passwd" ownerid="OL07-00-010342" disa="2227" severity="medium"> -- <VMSinfo VKey="237628" SVKey="237628r6469" VRelease="r646967"/> -- <title text="The Oracle Linux operating system must use the invoking user's password for privilege escalation when using "sudo"."/> -- </overlay> -- <overlay owner="disastig" ruleid="sudo_remove_nopasswd" ownerid="OL07-00-010343" disa="2038" severity="medium"> -- <VMSinfo VKey="237629" SVKey="237629r6469" VRelease="r646970"/> -- <title text="The Oracle Linux operating system must require re-authentication when using the "sudo" command."/> -- </overlay> -- <overlay owner="disastig" ruleid="sudo_remove_no_authenticate" ownerid="OL07-00-010350" disa="2038" severity="medium"> -- <VMSinfo VKey="228569" SVKey="228569r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so users must re-authenticate for privilege escalation."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_logon_fail_delay" ownerid="OL07-00-010430" disa="366" severity="medium"> -- <VMSinfo VKey="221693" SVKey="221693r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that the delay between logon prompts following a failed console logon attempt is at least four seconds."/> -- </overlay> -- <overlay owner="disastig" ruleid="gnome_gdm_disable_automatic_login" ownerid="OL07-00-010440" disa="366" severity="high"> -- <VMSinfo VKey="221694" SVKey="221694r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must not allow an unattended or automatic logon to the system via a graphical user interface."/> -- </overlay> -- <overlay owner="disastig" ruleid="gnome_gdm_disable_guest_login" ownerid="OL07-00-010450" disa="366" severity="high"> -- <VMSinfo VKey="221695" SVKey="221695r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must not allow an unrestricted logon to the system."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_do_not_permit_user_env" ownerid="OL07-00-010460" disa="366" severity="medium"> -- <VMSinfo VKey="221696" SVKey="221696r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must not allow users to override SSH environment variables."/> -- </overlay> -- <overlay owner="disastig" ruleid="disable_host_auth" ownerid="OL07-00-010470" disa="366" severity="medium"> -- <VMSinfo VKey="221697" SVKey="221697r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must not allow a non-certificate trusted host SSH logon to the system."/> -- </overlay> -- <overlay owner="disastig" ruleid="grub2_admin_username" ownerid="OL07-00-010480" disa="213" severity="high"> -- <VMSinfo VKey="221698" SVKey="221698r6032" VRelease="r603260"/> -- <title text="Oracle Linux operating systems prior to version 7.2 with a Basic Input/Output System (BIOS) must require authentication upon booting into single-user and maintenance modes."/> -- </overlay> -- <overlay owner="disastig" ruleid="require_singleuser_auth" ownerid="OL07-00-010481" disa="213" severity="medium"> -- <VMSinfo VKey="221699" SVKey="221699r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must require authentication upon booting into single-user and maintenance modes."/> -- </overlay> -- <overlay owner="disastig" ruleid="grub2_password" ownerid="OL07-00-010482" disa="213" severity="high"> -- <VMSinfo VKey="221700" SVKey="221700r6032" VRelease="r603260"/> -- <title text="Oracle Linux operating systems version 7.2 or newer with a Basic Input/Output System (BIOS) must require authentication upon booting into single-user and maintenance modes."/> -- </overlay> -- <overlay owner="disastig" ruleid="grub2_uefi_admin_username" ownerid="OL07-00-010490" disa="213" severity="high"> -- <VMSinfo VKey="221701" SVKey="221701r6032" VRelease="r603260"/> -- <title text="Oracle Linux operating systems prior to version 7.2 using Unified Extensible Firmware Interface (UEFI) must require authentication upon booting into single-user and maintenance modes."/> -- </overlay> -- <overlay owner="disastig" ruleid="grub2_uefi_password" ownerid="OL07-00-010491" disa="213" severity="high"> -- <VMSinfo VKey="221702" SVKey="221702r6032" VRelease="r603260"/> -- <title text="Oracle Linux operating systems version 7.2 or newer using Unified Extensible Firmware Interface (UEFI) must require authentication upon booting into single-user and maintenance modes."/> -- </overlay> -- <overlay owner="disastig" ruleid="smartcard_auth" ownerid="OL07-00-010500" disa="764" severity="medium"> -- <VMSinfo VKey="221703" SVKey="221703r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must uniquely identify and must authenticate organizational users (or processes acting on behalf of organizational users) using multifactor authentication."/> -- </overlay> -- <overlay owner="disastig" ruleid="package_rsh-server_removed" ownerid="OL07-00-020000" disa="381" severity="high"> -- <VMSinfo VKey="221704" SVKey="221704r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must not have the rsh-server package installed."/> -- </overlay> -- <overlay owner="disastig" ruleid="package_ypserv_removed" ownerid="OL07-00-020010" disa="381" severity="high"> -- <VMSinfo VKey="221705" SVKey="221705r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must not have the ypserv package installed."/> -- </overlay> -- <overlay owner="disastig" ruleid="package_MFEhiplsm_installed" ownerid="OL07-00-020019" disa="1233" severity="medium"> -- <VMSinfo VKey="221706" SVKey="221706r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must have a host-based intrusion detection tool installed."/> -- </overlay> -- <overlay owner="disastig" ruleid="selinux_user_login_roles" ownerid="OL07-00-020020" disa="2235" severity="medium"> -- <VMSinfo VKey="221707" SVKey="221707r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must prevent non-privileged users from executing privileged functions to include disabling, circumventing, or altering implemented security safeguards/countermeasures."/> -- </overlay> -- <overlay owner="disastig" ruleid="aide_periodic_cron_checking" ownerid="OL07-00-020030" disa="1744" severity="medium"> -- <VMSinfo VKey="221708" SVKey="221708r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that a file integrity tool verifies the baseline operating system configuration at least weekly."/> -- </overlay> -- <overlay owner="disastig" ruleid="aide_scan_notification" ownerid="OL07-00-020040" disa="1744" severity="medium"> -- <VMSinfo VKey="221709" SVKey="221709r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that designated personnel are notified if baseline configurations are changed in an unauthorized manner."/> -- </overlay> -- <overlay owner="disastig" ruleid="ensure_gpgcheck_globally_activated" ownerid="OL07-00-020050" disa="1749" severity="high"> -- <VMSinfo VKey="221710" SVKey="221710r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system 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."/> -- </overlay> -- <overlay owner="disastig" ruleid="ensure_gpgcheck_local_packages" ownerid="OL07-00-020060" disa="1749" severity="high"> -- <VMSinfo VKey="221711" SVKey="221711r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system 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."/> -- </overlay> -- <overlay owner="disastig" ruleid="kernel_module_usb-storage_disabled" ownerid="OL07-00-020100" disa="1958" severity="medium"> -- <VMSinfo VKey="221712" SVKey="221712r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured to disable USB mass storage."/> -- </overlay> -- <overlay owner="disastig" ruleid="kernel_module_dccp_disabled" ownerid="OL07-00-020101" disa="1958" severity="medium"> -- <VMSinfo VKey="221713" SVKey="221713r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that the Datagram Congestion Control Protocol (DCCP) kernel module is disabled unless required."/> -- </overlay> -- <overlay owner="disastig" ruleid="service_autofs_disabled" ownerid="OL07-00-020110" disa="778" severity="medium"> -- <VMSinfo VKey="221714" SVKey="221714r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must disable the file system automounter unless required."/> -- </overlay> -- <overlay owner="disastig" ruleid="kernel_module_usb-storage_disabled" ownerid="OL07-00-020111" disa="1958" severity="medium"> -- <VMSinfo VKey="228567" SVKey="228567r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must disable the graphical user interface automounter unless required."/> -- </overlay> -- <overlay owner="disastig" ruleid="clean_components_post_updating" ownerid="OL07-00-020200" disa="2617" severity="low"> -- <VMSinfo VKey="221715" SVKey="221715r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must remove all software components after updated versions have been installed."/> -- </overlay> -- <overlay owner="disastig" ruleid="selinux_state" ownerid="OL07-00-020210" disa="2165" severity="medium"> -- <VMSinfo VKey="221716" SVKey="221716r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must enable SELinux."/> -- </overlay> -- <overlay owner="disastig" ruleid="selinux_policytype" ownerid="OL07-00-020220" disa="2696" severity="medium"> -- <VMSinfo VKey="228570" SVKey="228570r6064" VRelease="r606409"/> -- <title text="The Oracle Linux operating system must enable the SELinux targeted policy."/> -- </overlay> -- <overlay owner="disastig" ruleid="disable_ctrlaltdel_reboot" ownerid="OL07-00-020230" disa="366" severity="high"> -- <VMSinfo VKey="221717" SVKey="221717r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that the x86 Ctrl-Alt-Delete key sequence is disabled on the command line."/> -- </overlay> -- <overlay owner="disastig" ruleid="dconf_gnome_disable_ctrlaltdel_reboot" ownerid="OL07-00-020231" disa="366" severity="high"> -- <VMSinfo VKey="228565" SVKey="228565r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so the x86 Ctrl-Alt-Delete key sequence is disabled in the Graphical User Interface."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_umask_etc_login_defs" ownerid="OL07-00-020240" disa="366" severity="medium"> -- <VMSinfo VKey="221718" SVKey="221718r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must define default permissions for all authenticated users in such a way that the user can only read and modify their own files."/> -- </overlay> -- <overlay owner="disastig" ruleid="installed_OS_is_vendor_supported" ownerid="OL07-00-020250" disa="366" severity="high"> -- <VMSinfo VKey="221719" SVKey="221719r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be a vendor supported release."/> -- </overlay> -- <overlay owner="disastig" ruleid="security_patches_up_to_date" ownerid="OL07-00-020260" disa="366" severity="medium"> -- <VMSinfo VKey="221720" SVKey="221720r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system security patches and updates must be installed and up to date."/> -- </overlay> -- <overlay owner="disastig" ruleid="package_vsftpd_removed" ownerid="OL07-00-020270" disa="366" severity="medium"> -- <VMSinfo VKey="221721" SVKey="221721r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must not have unnecessary accounts."/> -- </overlay> -- <overlay owner="disastig" ruleid="gid_passwd_group_same" ownerid="OL07-00-020300" disa="764" severity="low"> -- <VMSinfo VKey="221722" SVKey="221722r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that all Group Identifiers (GIDs) referenced in the /etc/passwd file are defined in the /etc/group file."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_no_uid_except_zero" ownerid="OL07-00-020310" disa="366" severity="high"> -- <VMSinfo VKey="221723" SVKey="221723r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that the root account must be the only account having unrestricted access to the system."/> -- </overlay> -- <overlay owner="disastig" ruleid="no_files_unowned_by_user" ownerid="OL07-00-020320" disa="366" severity="medium"> -- <VMSinfo VKey="221724" SVKey="221724r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that all files and directories have a valid owner."/> -- </overlay> -- <overlay owner="disastig" ruleid="file_permissions_ungroupowned" ownerid="OL07-00-020330" disa="366" severity="medium"> -- <VMSinfo VKey="221725" SVKey="221725r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that all files and directories have a valid group owner."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_have_homedir_login_defs" ownerid="OL07-00-020610" disa="366" severity="medium"> -- <VMSinfo VKey="221727" SVKey="221727r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that all local interactive user accounts, upon creation, are assigned a home directory."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_user_interactive_home_directory_exists" ownerid="OL07-00-020620" disa="366" severity="medium"> -- <VMSinfo VKey="221728" SVKey="221728r6037" VRelease="r603789"/> -- <title text="The Oracle Linux operating system must be configured so that all local interactive users have a home directory assigned and defined in the /etc/passwd file."/> -- </overlay> -- <overlay owner="disastig" ruleid="file_permissions_home_directories" ownerid="OL07-00-020630" disa="366" severity="medium"> -- <VMSinfo VKey="221729" SVKey="221729r6037" VRelease="r603791"/> -- <title text="The Oracle Linux operating system must be configured so that all local interactive user home directories have mode 0750 or less permissive."/> -- </overlay> -- <overlay owner="disastig" ruleid="file_ownership_home_directories" ownerid="OL07-00-020640" disa="366" severity="medium"> -- <VMSinfo VKey="221730" SVKey="221730r6037" VRelease="r603793"/> -- <title text="The Oracle Linux operating system must be configured so that all local interactive user home directories are owned by their respective users."/> -- </overlay> -- <overlay owner="disastig" ruleid="file_groupownership_home_directories" ownerid="OL07-00-020650" disa="366" severity="medium"> -- <VMSinfo VKey="221731" SVKey="221731r6037" VRelease="r603795"/> -- <title text="The Oracle Linux operating system must be configured so that all local interactive user home directories are group-owned by the home directory owners primary group."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_users_home_files_ownership" ownerid="OL07-00-020660" disa="366" severity="medium"> -- <VMSinfo VKey="221732" SVKey="221732r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that all files and directories contained in local interactive user home directories are owned by the owner of the home directory."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_users_home_files_groupownership" ownerid="OL07-00-020670" disa="366" severity="medium"> -- <VMSinfo VKey="221733" SVKey="221733r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that all files and directories contained in local interactive user home directories are group-owned by a group of which the home directory owner is a member."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_users_home_files_permissions" ownerid="OL07-00-020680" disa="366" severity="medium"> -- <VMSinfo VKey="221734" SVKey="221734r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that all files and directories contained in local interactive user home directories have a mode of 0750 or less permissive."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_user_dot_user_ownership" ownerid="OL07-00-020690" disa="366" severity="medium"> -- <VMSinfo VKey="221735" SVKey="221735r6037" VRelease="r603797"/> -- <title text="The Oracle Linux operating system must be configured so that all local initialization files for interactive users are owned by the home directory user or root."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_user_dot_group_ownership" ownerid="OL07-00-020700" disa="366" severity="medium"> -- <VMSinfo VKey="221736" SVKey="221736r6037" VRelease="r603799"/> -- <title text="The Oracle Linux operating system must be configured so that all local initialization files for local interactive users are be group-owned by the users primary group or root."/> -- </overlay> -- <overlay owner="disastig" ruleid="file_permission_user_init_files" ownerid="OL07-00-020710" disa="366" severity="medium"> -- <VMSinfo VKey="221737" SVKey="221737r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that all local initialization files have mode 0740 or less permissive."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_user_home_paths_only" ownerid="OL07-00-020720" disa="366" severity="medium"> -- <VMSinfo VKey="221738" SVKey="221738r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that all local interactive user initialization files executable search paths contain only paths that resolve to the users home directory."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_user_dot_no_world_writable_programs" ownerid="OL07-00-020730" disa="366" severity="medium"> -- <VMSinfo VKey="221739" SVKey="221739r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that local initialization files do not execute world-writable programs."/> -- </overlay> -- <overlay owner="disastig" ruleid="selinux_all_devicefiles_labeled" ownerid="OL07-00-020900" disa="366" severity="medium"> -- <VMSinfo VKey="221740" SVKey="221740r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that all system device files are correctly labeled to prevent unauthorized modification."/> -- </overlay> -- <overlay owner="disastig" ruleid="mount_option_home_nosuid" ownerid="OL07-00-021000" disa="366" severity="medium"> -- <VMSinfo VKey="221741" SVKey="221741r6038" VRelease="r603801"/> -- <title text="The Oracle Linux operating system must be configured so that file systems containing user home directories are mounted to prevent files with the setuid and setgid bit set from being executed."/> -- </overlay> -- <overlay owner="disastig" ruleid="mount_option_nosuid_removable_partitions" ownerid="OL07-00-021010" disa="366" severity="medium"> -- <VMSinfo VKey="221742" SVKey="221742r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must prevent files with the setuid and setgid bit set from being executed on file systems that are used with removable media."/> -- </overlay> -- <overlay owner="disastig" ruleid="mount_option_nosuid_remote_filesystems" ownerid="OL07-00-021020" disa="366" severity="medium"> -- <VMSinfo VKey="221743" SVKey="221743r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must prevent files with the setuid and setgid bit set from being executed on file systems that are being imported via Network File System (NFS)."/> -- </overlay> -- <overlay owner="disastig" ruleid="mount_option_noexec_remote_filesystems" ownerid="OL07-00-021021" disa="366" severity="medium"> -- <VMSinfo VKey="221744" SVKey="221744r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must prevent binary files from being executed on file systems that are being imported via Network File System (NFS)."/> -- </overlay> -- <overlay owner="disastig" ruleid="mount_option_dev_shm_noexec" ownerid="OL07-00-021024" disa="1764" severity="low"> -- <VMSinfo VKey="221747" SVKey="221747r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must mount /dev/shm with secure options."/> -- </overlay> -- <overlay owner="disastig" ruleid="dir_perms_world_writable_system_owned_group" ownerid="OL07-00-021030" disa="366" severity="medium"> -- <VMSinfo VKey="221748" SVKey="221748r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that all world-writable directories are group-owned by root, sys, bin, or an application group."/> -- </overlay> -- <overlay owner="disastig" ruleid="dir_perms_world_writable_system_owned" ownerid="OL07-00-021031" disa="366" severity="medium"> -- <VMSinfo VKey="228566" SVKey="228566r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that all world-writable directories are owned by root, sys, bin, or an application user."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_umask_interactive_users" ownerid="OL07-00-021040" disa="366" severity="medium"> -- <VMSinfo VKey="221749" SVKey="221749r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must set the umask value to 077 for all local interactive user accounts."/> -- </overlay> -- <overlay owner="disastig" ruleid="rsyslog_cron_logging" ownerid="OL07-00-021100" disa="366" severity="medium"> -- <VMSinfo VKey="221750" SVKey="221750r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must have cron logging implemented."/> -- </overlay> -- <overlay owner="disastig" ruleid="file_owner_cron_allow" ownerid="OL07-00-021110" disa="366" severity="medium"> -- <VMSinfo VKey="221751" SVKey="221751r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that the cron.allow file, if it exists, is owned by root."/> -- </overlay> -- <overlay owner="disastig" ruleid="file_groupowner_cron_allow" ownerid="OL07-00-021120" disa="366" severity="medium"> -- <VMSinfo VKey="221752" SVKey="221752r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that the cron.allow file, if it exists, is group-owned by root."/> -- </overlay> -- <overlay owner="disastig" ruleid="service_kdump_disabled" ownerid="OL07-00-021300" disa="366" severity="medium"> -- <VMSinfo VKey="221753" SVKey="221753r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must disable Kernel core dumps unless needed."/> -- </overlay> -- <overlay owner="disastig" ruleid="partition_for_home" ownerid="OL07-00-021310" disa="366" severity="low"> -- <VMSinfo VKey="221754" SVKey="221754r6038" VRelease="r603803"/> -- <title text="The Oracle Linux operating system must be configured so that a separate file system is used for user home directories (such as /home or an equivalent)."/> -- </overlay> -- <overlay owner="disastig" ruleid="partition_for_var" ownerid="OL07-00-021320" disa="366" severity="low"> -- <VMSinfo VKey="221755" SVKey="221755r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must use a separate file system for /var."/> -- </overlay> -- <overlay owner="disastig" ruleid="partition_for_var_log_audit" ownerid="OL07-00-021330" disa="1849" severity="low"> -- <VMSinfo VKey="221756" SVKey="221756r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must use a separate file system for the system audit data path large enough to hold at least one week of audit data."/> -- </overlay> -- <overlay owner="disastig" ruleid="partition_for_tmp" ownerid="OL07-00-021340" disa="366" severity="low"> -- <VMSinfo VKey="221757" SVKey="221757r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must use a separate file system for /tmp (or equivalent)."/> -- </overlay> -- <overlay owner="disastig" ruleid="grub2_enable_fips_mode" ownerid="OL07-00-021350" disa="2476" severity="high"> -- <VMSinfo VKey="221758" SVKey="221758r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system 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."/> -- </overlay> -- <overlay owner="disastig" ruleid="aide_verify_acls" ownerid="OL07-00-021600" disa="366" severity="low"> -- <VMSinfo VKey="221759" SVKey="221759r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that the file integrity tool is configured to verify Access Control Lists (ACLs)."/> -- </overlay> -- <overlay owner="disastig" ruleid="aide_verify_ext_attributes" ownerid="OL07-00-021610" disa="366" severity="low"> -- <VMSinfo VKey="221760" SVKey="221760r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that the file integrity tool is configured to verify extended attributes."/> -- </overlay> -- <overlay owner="disastig" ruleid="aide_use_fips_hashes" ownerid="OL07-00-021620" disa="366" severity="medium"> -- <VMSinfo VKey="221761" SVKey="221761r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must use a file integrity tool that is configured to use FIPS 140-2 approved cryptographic hashes for validating file contents and directories."/> -- </overlay> -- <overlay owner="disastig" ruleid="grub2_no_removeable_media" ownerid="OL07-00-021700" disa="1813" severity="medium"> -- <VMSinfo VKey="221762" SVKey="221762r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must not allow removable media to be used as the boot loader unless approved."/> -- </overlay> -- <overlay owner="disastig" ruleid="package_telnet-server_removed" ownerid="OL07-00-021710" disa="381" severity="high"> -- <VMSinfo VKey="221763" SVKey="221763r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must not have the telnet-server package installed."/> -- </overlay> -- <overlay owner="disastig" ruleid="service_auditd_enabled" ownerid="OL07-00-030000" disa="135" severity="medium"> -- <VMSinfo VKey="221764" SVKey="221764r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that auditing is configured to produce records containing information to establish what type of events occurred, where the events occurred, the source of the events, and the outcome of the events. These audit records must also identify individual identities of group account users."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_system_shutdown" ownerid="OL07-00-030010" disa="139" severity="medium"> -- <VMSinfo VKey="221765" SVKey="221765r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must shut down upon audit processing failure, unless availability is an overriding concern. If availability is a concern, the system must alert the designated staff (System Administrator [SA] and Information System Security Officer [ISSO] at a minimum) in the event of an audit processing failure."/> -- </overlay> -- <overlay owner="disastig" ruleid="rsyslog_remote_loghost" ownerid="OL07-00-030201" disa="1851" severity="medium"> -- <VMSinfo VKey="221767" SVKey="221767r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured to off-load audit logs onto a different system or storage media from the system being audited."/> -- </overlay> -- <overlay owner="disastig" ruleid="rsyslog_remote_loghost" ownerid="OL07-00-030210" disa="1851" severity="medium"> -- <VMSinfo VKey="221768" SVKey="221768r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must take appropriate action when the remote logging buffer is full."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_name_format" ownerid="OL07-00-030211" disa="1851" severity="medium"> -- <VMSinfo VKey="221769" SVKey="221769r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must label all off-loaded audit logs before sending them to the central log server."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_audispd_configure_remote_server" ownerid="OL07-00-030300" disa="1851" severity="medium"> -- <VMSinfo VKey="221770" SVKey="221770r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must off-load audit records onto a different system or media from the system being audited."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_audispd_encrypt_sent_records" ownerid="OL07-00-030310" disa="1851" severity="medium"> -- <VMSinfo VKey="221771" SVKey="221771r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must encrypt the transfer of audit records off-loaded onto a different system or media from the system being audited."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_audispd_disk_full_action" ownerid="OL07-00-030320" disa="1851" severity="medium"> -- <VMSinfo VKey="221772" SVKey="221772r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that the audit system takes appropriate action when the audit storage volume is full."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_audispd_network_failure_action" ownerid="OL07-00-030321" disa="1851" severity="medium"> -- <VMSinfo VKey="221773" SVKey="221773r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that the audit system takes appropriate action when there is an error sending audit records to a remote system."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_data_retention_space_left" ownerid="OL07-00-030330" disa="1855" severity="medium"> -- <VMSinfo VKey="221774" SVKey="221774r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must initiate an action to notify the System Administrator (SA) and Information System Security Officer (ISSO), at a minimum, when allocated audit record storage volume reaches 75 percent of the repository maximum audit record storage capacity."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_data_retention_admin_space_left_action" ownerid="OL07-00-030340" disa="1855" severity="medium"> -- <VMSinfo VKey="221775" SVKey="221775r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must immediately notify the System Administrator (SA) and Information System Security Officer (ISSO) (at a minimum) via email when the threshold for the repository maximum audit record storage capacity is reached."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_data_retention_action_mail_acct" ownerid="OL07-00-030350" disa="1855" severity="medium"> -- <VMSinfo VKey="221776" SVKey="221776r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must immediately notify the System Administrator (SA) and Information System Security Officer (ISSO) (at a minimum) when the threshold for the repository maximum audit record storage capacity is reached."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands" ownerid="OL07-00-030360" disa="2234" severity="medium"> -- <VMSinfo VKey="221777" SVKey="221777r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must audit all executions of privileged functions."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_dac_modification_chown" ownerid="OL07-00-030370" disa="126" severity="medium"> -- <VMSinfo VKey="221778" SVKey="221778r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must audit all uses of the chown syscall."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_dac_modification_fchown" ownerid="OL07-00-030380" disa="172" severity="medium"> -- <VMSinfo VKey="221779" SVKey="221779r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must audit all uses of the fchown syscall."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_dac_modification_lchown" ownerid="OL07-00-030390" disa="126" severity="medium"> -- <VMSinfo VKey="221780" SVKey="221780r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must audit all uses of the lchown syscall."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_dac_modification_fchownat" ownerid="OL07-00-030400" disa="172" severity="medium"> -- <VMSinfo VKey="221781" SVKey="221781r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must audit all uses of the fchownat syscall."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_dac_modification_chmod" ownerid="OL07-00-030410" disa="172" severity="medium"> -- <VMSinfo VKey="221782" SVKey="221782r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must audit all uses of the chmod syscall."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_dac_modification_fchmod" ownerid="OL07-00-030420" disa="172" severity="medium"> -- <VMSinfo VKey="221783" SVKey="221783r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must audit all uses of the fchmod syscall."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_dac_modification_fchmodat" ownerid="OL07-00-030430" disa="172" severity="medium"> -- <VMSinfo VKey="221784" SVKey="221784r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must audit all uses of the fchmodat syscall."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_dac_modification_setxattr" ownerid="OL07-00-030440" disa="172" severity="medium"> -- <VMSinfo VKey="221785" SVKey="221785r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must audit all uses of the setxattr syscall."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_dac_modification_fsetxattr" ownerid="OL07-00-030450" disa="172" severity="medium"> -- <VMSinfo VKey="221786" SVKey="221786r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must audit all uses of the fsetxattr syscall."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_dac_modification_lsetxattr" ownerid="OL07-00-030460" disa="172" severity="medium"> -- <VMSinfo VKey="221787" SVKey="221787r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must audit all uses of the lsetxattr syscall."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_dac_modification_removexattr" ownerid="OL07-00-030470" disa="172" severity="medium"> -- <VMSinfo VKey="221788" SVKey="221788r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must audit all uses of the removexattr syscall."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_dac_modification_fremovexattr" ownerid="OL07-00-030480" disa="172" severity="medium"> -- <VMSinfo VKey="221789" SVKey="221789r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must audit all uses of the fremovexattr syscall."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_dac_modification_lremovexattr" ownerid="OL07-00-030490" disa="172" severity="medium"> -- <VMSinfo VKey="221790" SVKey="221790r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must audit all uses of the lremovexattr syscall."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_unsuccessful_file_modification_creat" ownerid="OL07-00-030500" disa="2884" severity="medium"> -- <VMSinfo VKey="221791" SVKey="221791r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must audit all uses of the creat syscall."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_unsuccessful_file_modification_open" ownerid="OL07-00-030510" disa="172" severity="medium"> -- <VMSinfo VKey="221792" SVKey="221792r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must audit all uses of the open syscall."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_unsuccessful_file_modification_openat" ownerid="OL07-00-030520" disa="2884" severity="medium"> -- <VMSinfo VKey="221793" SVKey="221793r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must audit all uses of the openat syscall."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_unsuccessful_file_modification_open_by_handle_at" ownerid="OL07-00-030530" disa="172" severity="medium"> -- <VMSinfo VKey="221794" SVKey="221794r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must audit all uses of the open_by_handle_at syscall."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_unsuccessful_file_modification_truncate" ownerid="OL07-00-030540" disa="2884" severity="medium"> -- <VMSinfo VKey="221795" SVKey="221795r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must audit all uses of the truncate syscall."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_unsuccessful_file_modification_ftruncate" ownerid="OL07-00-030550" disa="172" severity="medium"> -- <VMSinfo VKey="221796" SVKey="221796r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must audit all uses of the ftruncate syscall."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_execution_semanage" ownerid="OL07-00-030560" disa="172" severity="medium"> -- <VMSinfo VKey="221797" SVKey="221797r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must audit all uses of the semanage command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_execution_setsebool" ownerid="OL07-00-030570" disa="2884" severity="medium"> -- <VMSinfo VKey="221798" SVKey="221798r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must audit all uses of the setsebool command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_execution_chcon" ownerid="OL07-00-030580" disa="2884" severity="medium"> -- <VMSinfo VKey="221799" SVKey="221799r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must audit all uses of the chcon command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_execution_setfiles" ownerid="OL07-00-030590" disa="2884" severity="medium"> -- <VMSinfo VKey="221800" SVKey="221800r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must audit all uses of the setfiles command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_login_events_faillock" ownerid="OL07-00-030610" disa="172" severity="medium"> -- <VMSinfo VKey="221801" SVKey="221801r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must generate audit records for all unsuccessful account access events."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_login_events_lastlog" ownerid="OL07-00-030620" disa="172" severity="medium"> -- <VMSinfo VKey="221802" SVKey="221802r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must generate audit records for all successful account access events."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_passwd" ownerid="OL07-00-030630" disa="135" severity="medium"> -- <VMSinfo VKey="221803" SVKey="221803r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must audit all uses of the passwd command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_unix_chkpwd" ownerid="OL07-00-030640" disa="135" severity="medium"> -- <VMSinfo VKey="221804" SVKey="221804r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must audit all uses of the unix_chkpwd command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_gpasswd" ownerid="OL07-00-030650" disa="135" severity="medium"> -- <VMSinfo VKey="221805" SVKey="221805r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must audit all uses of the gpasswd command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_chage" ownerid="OL07-00-030660" disa="135" severity="medium"> -- <VMSinfo VKey="221806" SVKey="221806r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must audit all uses of the chage command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_userhelper" ownerid="OL07-00-030670" disa="135" severity="medium"> -- <VMSinfo VKey="221807" SVKey="221807r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must audit all uses of the userhelper command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_su" ownerid="OL07-00-030680" disa="172" severity="medium"> -- <VMSinfo VKey="221808" SVKey="221808r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must audit all uses of the su command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_sudo" ownerid="OL07-00-030690" disa="130" severity="medium"> -- <VMSinfo VKey="221809" SVKey="221809r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must audit all uses of the sudo command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_sysadmin_actions" ownerid="OL07-00-030700" disa="172" severity="medium"> -- <VMSinfo VKey="221810" SVKey="221810r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must audit all uses of the sudoers file and all files in the /etc/sudoers.d/ directory."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_newgrp" ownerid="OL07-00-030710" disa="172" severity="medium"> -- <VMSinfo VKey="221811" SVKey="221811r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must audit all uses of the newgrp command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_chsh" ownerid="OL07-00-030720" disa="130" severity="medium"> -- <VMSinfo VKey="221812" SVKey="221812r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must audit all uses of the chsh command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_mount" ownerid="OL07-00-030740" disa="2884" severity="medium"> -- <VMSinfo VKey="221813" SVKey="221813r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must audit all uses of the mount command and syscall."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_umount" ownerid="OL07-00-030750" disa="135" severity="medium"> -- <VMSinfo VKey="221814" SVKey="221814r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must audit all uses of the umount command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_postdrop" ownerid="OL07-00-030760" disa="135" severity="medium"> -- <VMSinfo VKey="221815" SVKey="221815r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must audit all uses of the postdrop command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_postqueue" ownerid="OL07-00-030770" disa="135" severity="medium"> -- <VMSinfo VKey="221816" SVKey="221816r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must audit all uses of the postqueue command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_ssh_keysign" ownerid="OL07-00-030780" disa="135" severity="medium"> -- <VMSinfo VKey="221817" SVKey="221817r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must audit all uses of the ssh-keysign command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_crontab" ownerid="OL07-00-030800" disa="135" severity="medium"> -- <VMSinfo VKey="221818" SVKey="221818r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must audit all uses of the crontab command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_pam_timestamp_check" ownerid="OL07-00-030810" disa="172" severity="medium"> -- <VMSinfo VKey="221819" SVKey="221819r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must audit all uses of the pam_timestamp_check command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_kernel_module_loading_delete" ownerid="OL07-00-030819" disa="172" severity="medium"> -- <VMSinfo VKey="221820" SVKey="221820r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must audit all uses of the create_module syscall."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_kernel_module_loading_init" ownerid="OL07-00-030820" disa="172" severity="medium"> -- <VMSinfo VKey="221821" SVKey="221821r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must audit all uses of the init_module syscall."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_kernel_module_loading_finit" ownerid="OL07-00-030821" disa="172" severity="medium"> -- <VMSinfo VKey="221822" SVKey="221822r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must audit all uses of the finit_module syscall."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_kernel_module_loading_delete" ownerid="OL07-00-030830" disa="172" severity="medium"> -- <VMSinfo VKey="221823" SVKey="221823r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must audit all uses of the delete_module syscall."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_kernel_module_loading_delete" ownerid="OL07-00-030840" disa="172" severity="medium"> -- <VMSinfo VKey="221824" SVKey="221824r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must audit all uses of the kmod command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_usergroup_modification_passwd" ownerid="OL07-00-030870" disa="1405" severity="medium"> -- <VMSinfo VKey="221825" SVKey="221825r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/passwd."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_usergroup_modification_group" ownerid="OL07-00-030871" disa="18" severity="medium"> -- <VMSinfo VKey="221826" SVKey="221826r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/group."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_usergroup_modification_gshadow" ownerid="OL07-00-030872" disa="18" severity="medium"> -- <VMSinfo VKey="221827" SVKey="221827r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/gshadow."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_usergroup_modification_shadow" ownerid="OL07-00-030873" disa="18" severity="medium"> -- <VMSinfo VKey="221828" SVKey="221828r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/shadow."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_usergroup_modification_opasswd" ownerid="OL07-00-030874" disa="18" severity="medium"> -- <VMSinfo VKey="221829" SVKey="221829r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/opasswd."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_file_deletion_events_rename" ownerid="OL07-00-030880" disa="2884" severity="medium"> -- <VMSinfo VKey="221830" SVKey="221830r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must audit all uses of the rename syscall."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_file_deletion_events_renameat" ownerid="OL07-00-030890" disa="172" severity="medium"> -- <VMSinfo VKey="221831" SVKey="221831r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must audit all uses of the renameat syscall."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_file_deletion_events_rmdir" ownerid="OL07-00-030900" disa="2884" severity="medium"> -- <VMSinfo VKey="221832" SVKey="221832r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must audit all uses of the rmdir syscall."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_file_deletion_events_unlink" ownerid="OL07-00-030910" disa="172" severity="medium"> -- <VMSinfo VKey="221833" SVKey="221833r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must audit all uses of the unlink syscall."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_file_deletion_events_unlinkat" ownerid="OL07-00-030920" disa="2884" severity="medium"> -- <VMSinfo VKey="221834" SVKey="221834r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must audit all uses of the unlinkat syscall."/> -- </overlay> -- <overlay owner="disastig" ruleid="rsyslog_remote_loghost" ownerid="OL07-00-031000" disa="366" severity="medium"> -- <VMSinfo VKey="221835" SVKey="221835r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must send rsyslog output to a log aggregation server."/> -- </overlay> -- <overlay owner="disastig" ruleid="rsyslog_nolisten" ownerid="OL07-00-031010" disa="366" severity="medium"> -- <VMSinfo VKey="221836" SVKey="221836r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that the rsyslog daemon does not accept log messages from other servers unless the server is being used for log aggregation."/> -- </overlay> -- <overlay owner="disastig" ruleid="install_mcafee_antivirus" ownerid="OL07-00-032000" disa="366" severity="high"> -- <VMSinfo VKey="221837" SVKey="221837r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must use a virus scan program."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_max_concurrent_login_sessions" ownerid="OL07-00-040000" disa="54" severity="low"> -- <VMSinfo VKey="221838" SVKey="221838r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must limit the number of concurrent sessions to 10 for all accounts and/or account types."/> -- </overlay> -- <overlay owner="disastig" ruleid="configure_firewalld_ports" ownerid="OL07-00-040100" disa="2314" severity="medium"> -- <VMSinfo VKey="221839" SVKey="221839r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured to prohibit or restrict the use of functions, ports, protocols, and/or services, as defined in the Ports, Protocols, and Services Management Component Local Service Assessment (PPSM CLSA) and vulnerability assessments."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_use_approved_ciphers_ordered_stig" ownerid="OL07-00-040110" disa="68" severity="medium"> -- <VMSinfo VKey="221840" SVKey="221840r6038" VRelease="r603806"/> -- <title text="The Oracle Linux 7 operating system must implement DoD-approved encryption to protect the confidentiality of SSH connections."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_tmout" ownerid="OL07-00-040160" disa="1133" severity="medium"> -- <VMSinfo VKey="221841" SVKey="221841r6469" VRelease="r646958"/> -- <title text="The Oracle Linux operating system must be configured so that all network connections associated with a communication session are terminated at the end of the session or after 15 minutes of inactivity from the user at a command prompt, except to fulfill documented and validated mission requirements."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_enable_warning_banner" ownerid="OL07-00-040170" disa="48" severity="medium"> -- <VMSinfo VKey="221842" SVKey="221842r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must display the Standard Mandatory DoD Notice and Consent Banner immediately prior to, or as part of, remote access logon prompts."/> -- </overlay> -- <overlay owner="disastig" ruleid="sssd_ldap_start_tls" ownerid="OL07-00-040180" disa="1453" severity="medium"> -- <VMSinfo VKey="221843" SVKey="221843r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must implement cryptography to protect the integrity of Lightweight Directory Access Protocol (LDAP) authentication communications."/> -- </overlay> -- <overlay owner="disastig" ruleid="sssd_ldap_configure_tls_reqcert" ownerid="OL07-00-040190" disa="1453" severity="medium"> -- <VMSinfo VKey="221844" SVKey="221844r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must implement cryptography to protect the integrity of Lightweight Directory Access Protocol (LDAP) communications."/> -- </overlay> -- <overlay owner="disastig" ruleid="sssd_ldap_configure_tls_ca_dir" ownerid="OL07-00-040200" disa="1453" severity="medium"> -- <VMSinfo VKey="221845" SVKey="221845r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must implement cryptography to protect the integrity of Lightweight Directory Access Protocol (LDAP) communications."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_kernel_randomize_va_space" ownerid="OL07-00-040201" disa="2824" severity="medium"> -- <VMSinfo VKey="221846" SVKey="221846r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must implement virtual address space randomization."/> -- </overlay> -- <overlay owner="disastig" ruleid="package_openssh-server_installed" ownerid="OL07-00-040300" disa="2422" severity="medium"> -- <VMSinfo VKey="221847" SVKey="221847r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that all networked systems have SSH installed."/> -- </overlay> -- <overlay owner="disastig" ruleid="service_sshd_enabled" ownerid="OL07-00-040310" disa="2418" severity="medium"> -- <VMSinfo VKey="221848" SVKey="221848r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that all networked systems use SSH for confidentiality and integrity of transmitted and received information as well as information during preparation for transmission."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_set_idle_timeout" ownerid="OL07-00-040320" disa="1133" severity="medium"> -- <VMSinfo VKey="221849" SVKey="221849r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that all network connections associated with SSH traffic are terminated at the end of the session or after 10 minutes of inactivity, except to fulfill documented and validated mission requirements."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_disable_rhosts_rsa" ownerid="OL07-00-040330" disa="366" severity="medium"> -- <VMSinfo VKey="221850" SVKey="221850r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that the SSH daemon does not allow authentication using RSA rhosts authentication."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_set_keepalive_0" ownerid="OL07-00-040340" disa="1133" severity="medium"> -- <VMSinfo VKey="221851" SVKey="221851r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that all network connections associated with SSH traffic terminate after a period of inactivity."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_disable_rhosts" ownerid="OL07-00-040350" disa="366" severity="medium"> -- <VMSinfo VKey="221852" SVKey="221852r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that the SSH daemon does not allow authentication using rhosts authentication."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_print_last_log" ownerid="OL07-00-040360" disa="366" severity="medium"> -- <VMSinfo VKey="221853" SVKey="221853r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must display the date and time of the last successful account logon upon an SSH logon."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_disable_root_login" ownerid="OL07-00-040370" disa="366" severity="medium"> -- <VMSinfo VKey="221854" SVKey="221854r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must not permit direct logons to the root account using remote access via SSH."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_disable_user_known_hosts" ownerid="OL07-00-040380" disa="366" severity="medium"> -- <VMSinfo VKey="221855" SVKey="221855r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that the SSH daemon does not allow authentication using known hosts authentication."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_allow_only_protocol2" ownerid="OL07-00-040390" disa="197" severity="high"> -- <VMSinfo VKey="221856" SVKey="221856r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that the SSH daemon is configured to only use the SSHv2 protocol."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_use_approved_macs_ordered_stig" ownerid="OL07-00-040400" disa="1453" severity="medium"> -- <VMSinfo VKey="221857" SVKey="221857r6038" VRelease="r603809"/> -- <title text="The Oracle Linux operating system must be configured so that the SSH daemon is configured to only use Message Authentication Codes (MACs) employing FIPS 140-2 approved cryptographic hash algorithms."/> -- </overlay> -- <overlay owner="disastig" ruleid="file_permissions_sshd_pub_key" ownerid="OL07-00-040410" disa="366" severity="medium"> -- <VMSinfo VKey="221858" SVKey="221858r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that the SSH public host key files have mode 0644 or less permissive."/> -- </overlay> -- <overlay owner="disastig" ruleid="file_permissions_sshd_private_key" ownerid="OL07-00-040420" disa="366" severity="medium"> -- <VMSinfo VKey="221859" SVKey="221859r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that the SSH private host key files have mode 0640 or less permissive."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_disable_gssapi_auth" ownerid="OL07-00-040430" disa="1813" severity="medium"> -- <VMSinfo VKey="221860" SVKey="221860r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that the SSH daemon does not permit Generic Security Service Application Program Interface (GSSAPI) authentication unless needed."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_disable_kerb_auth" ownerid="OL07-00-040440" disa="1813" severity="medium"> -- <VMSinfo VKey="221861" SVKey="221861r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that the SSH daemon does not permit Kerberos authentication unless needed."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_enable_strictmodes" ownerid="OL07-00-040450" disa="366" severity="medium"> -- <VMSinfo VKey="221862" SVKey="221862r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that the SSH daemon performs strict mode checking of home directory configuration files."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_use_priv_separation" ownerid="OL07-00-040460" disa="366" severity="medium"> -- <VMSinfo VKey="221863" SVKey="221863r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that the SSH daemon uses privilege separation."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_disable_compression" ownerid="OL07-00-040470" disa="366" severity="medium"> -- <VMSinfo VKey="221864" SVKey="221864r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that the SSH daemon does not allow compression or only allows compression after successful authentication."/> -- </overlay> -- <overlay owner="disastig" ruleid="chronyd_or_ntpd_set_maxpoll" ownerid="OL07-00-040500" disa="2046" severity="medium"> -- <VMSinfo VKey="221866" SVKey="221866r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must, for networked systems, synchronize clocks with a server that is synchronized to one of the redundant United States Naval Observatory (USNO) time servers, a time server designated for the appropriate DoD network (NIPRNet/SIPRNet), and/or the Global Positioning System (GPS)."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_net_ipv4_tcp_invalid_ratelimit" ownerid="OL07-00-040510" disa="2385" severity="medium"> -- <VMSinfo VKey="221867" SVKey="221867r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must protect against or limit the effects of Denial of Service (DoS) attacks by validating the operating system is implementing rate-limiting measures on impacted network interfaces."/> -- </overlay> -- <overlay owner="disastig" ruleid="service_firewalld_enabled" ownerid="OL07-00-040520" disa="366" severity="medium"> -- <VMSinfo VKey="221868" SVKey="221868r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must enable an application firewall, if available."/> -- </overlay> -- <overlay owner="disastig" ruleid="display_login_attempts" ownerid="OL07-00-040530" disa="366" severity="low"> -- <VMSinfo VKey="221869" SVKey="221869r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must display the date and time of the last successful account logon upon logon."/> -- </overlay> -- <overlay owner="disastig" ruleid="no_user_host_based_files" ownerid="OL07-00-040540" disa="366" severity="high"> -- <VMSinfo VKey="221870" SVKey="221870r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must not contain .shosts files."/> -- </overlay> -- <overlay owner="disastig" ruleid="no_host_based_files" ownerid="OL07-00-040550" disa="366" severity="high"> -- <VMSinfo VKey="221871" SVKey="221871r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must not contain shosts.equiv files."/> -- </overlay> -- <overlay owner="disastig" ruleid="network_configure_name_resolution" ownerid="OL07-00-040600" disa="366" severity="low"> -- <VMSinfo VKey="221872" SVKey="221872r6032" VRelease="r603260"/> -- <title text="For Oracle Linux operating systems using DNS resolution, at least two name servers must be configured."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_net_ipv4_conf_all_accept_source_route" ownerid="OL07-00-040610" disa="366" severity="medium"> -- <VMSinfo VKey="221873" SVKey="221873r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must not forward Internet Protocol version 4 (IPv4) source-routed packets."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_net_ipv4_conf_all_rp_filter" ownerid="OL07-00-040611" disa="366" severity="medium"> -- <VMSinfo VKey="221874" SVKey="221874r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must use a reverse-path filter for IPv4 network traffic when possible on all interfaces."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_net_ipv4_conf_default_rp_filter" ownerid="OL07-00-040612" disa="366" severity="medium"> -- <VMSinfo VKey="221875" SVKey="221875r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must use a reverse-path filter for IPv4 network traffic when possible by default."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_net_ipv4_conf_default_accept_source_route" ownerid="OL07-00-040620" disa="366" severity="medium"> -- <VMSinfo VKey="221876" SVKey="221876r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must not forward Internet Protocol version 4 (IPv4) source-routed packets by default."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_net_ipv4_icmp_echo_ignore_broadcasts" ownerid="OL07-00-040630" disa="366" severity="medium"> -- <VMSinfo VKey="221877" SVKey="221877r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must not respond to Internet Protocol version 4 (IPv4) Internet Control Message Protocol (ICMP) echoes sent to a broadcast address."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_net_ipv4_conf_default_accept_redirects" ownerid="OL07-00-040640" disa="366" severity="medium"> -- <VMSinfo VKey="221878" SVKey="221878r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must prevent Internet Protocol version 4 (IPv4) Internet Control Message Protocol (ICMP) redirect messages from being accepted."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_net_ipv4_conf_all_accept_redirects" ownerid="OL07-00-040641" disa="366" severity="medium"> -- <VMSinfo VKey="221879" SVKey="221879r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must ignore Internet Protocol version 4 (IPv4) Internet Control Message Protocol (ICMP) redirect messages."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_net_ipv4_conf_default_send_redirects" ownerid="OL07-00-040650" disa="366" severity="medium"> -- <VMSinfo VKey="221880" SVKey="221880r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must not allow interfaces to perform Internet Protocol version 4 (IPv4) Internet Control Message Protocol (ICMP) redirects by default."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_net_ipv4_conf_all_send_redirects" ownerid="OL07-00-040660" disa="366" severity="medium"> -- <VMSinfo VKey="221881" SVKey="221881r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must not send Internet Protocol version 4 (IPv4) Internet Control Message Protocol (ICMP) redirects."/> -- </overlay> -- <overlay owner="disastig" ruleid="network_sniffer_disabled" ownerid="OL07-00-040670" disa="366" severity="medium"> -- <VMSinfo VKey="221882" SVKey="221882r6032" VRelease="r603260"/> -- <title text="Network interfaces configured on The Oracle Linux operating system must not be in promiscuous mode."/> -- </overlay> -- <overlay owner="disastig" ruleid="postfix_prevent_unrestricted_relay" ownerid="OL07-00-040680" disa="366" severity="medium"> -- <VMSinfo VKey="221883" SVKey="221883r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured to prevent unrestricted mail relaying."/> -- </overlay> -- <overlay owner="disastig" ruleid="package_vsftpd_removed" ownerid="OL07-00-040690" disa="366" severity="high"> -- <VMSinfo VKey="221884" SVKey="221884r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must not have a File Transfer Protocol (FTP) server package installed unless needed."/> -- </overlay> -- <overlay owner="disastig" ruleid="package_tftp-server_removed" ownerid="OL07-00-040700" disa="366" severity="high"> -- <VMSinfo VKey="221885" SVKey="221885r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must not have the Trivial File Transfer Protocol (TFTP) server package installed if not required for operational support."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_disable_x11_forwarding" ownerid="OL07-00-040710" disa="366" severity="medium"> -- <VMSinfo VKey="221886" SVKey="221886r6038" VRelease="r603812"/> -- <title text="The Oracle Linux operating system must be configured so that remote X connections are disabled, unless to fulfill documented and validated mission requirements."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_x11_use_localhost" ownerid="OL07-00-040711" disa="366" severity="medium"> -- <VMSinfo VKey="233306" SVKey="233306r6032" VRelease="r603298"/> -- <title text="The Oracle Linux operating system SSH daemon must prevent remote hosts from connecting to the proxy display."/> -- </overlay> -- <overlay owner="disastig" ruleid="tftpd_uses_secure_mode" ownerid="OL07-00-040720" disa="366" severity="medium"> -- <VMSinfo VKey="221887" SVKey="221887r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that if the Trivial File Transfer Protocol (TFTP) server is required, the TFTP daemon is configured to operate in secure mode."/> -- </overlay> -- <overlay owner="disastig" ruleid="package_xorg-x11-server-common_removed" ownerid="OL07-00-040730" disa="366" severity="medium"> -- <VMSinfo VKey="221888" SVKey="221888r6469" VRelease="r646961"/> -- <title text="The Oracle Linux operating system must not have a graphical display manager installed unless approved."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_net_ipv4_ip_forward" ownerid="OL07-00-040740" disa="366" severity="medium"> -- <VMSinfo VKey="221889" SVKey="221889r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must not be performing packet forwarding unless the system is a router."/> -- </overlay> -- <overlay owner="disastig" ruleid="mount_option_krb_sec_remote_filesystems" ownerid="OL07-00-040750" disa="366" severity="medium"> -- <VMSinfo VKey="221890" SVKey="221890r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that the Network File System (NFS) is configured to use RPCSEC_GSS."/> -- </overlay> -- <overlay owner="disastig" ruleid="snmpd_not_default_password" ownerid="OL07-00-040800" disa="366" severity="high"> -- <VMSinfo VKey="221891" SVKey="221891r6032" VRelease="r603260"/> -- <title text="SNMP community strings on the Oracle Linux operating system must be changed from the default."/> -- </overlay> -- <overlay owner="disastig" ruleid="set_firewalld_default_zone" ownerid="OL07-00-040810" disa="366" severity="medium"> -- <VMSinfo VKey="221892" SVKey="221892r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system access control program must be configured to grant or deny system access to specific hosts and services."/> -- </overlay> -- <overlay owner="disastig" ruleid="libreswan_approved_tunnels" ownerid="OL07-00-040820" disa="366" severity="medium"> -- <VMSinfo VKey="221893" SVKey="221893r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must not have unauthorized IP tunnels configured."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_net_ipv6_conf_all_accept_source_route" ownerid="OL07-00-040830" disa="366" severity="medium"> -- <VMSinfo VKey="221894" SVKey="221894r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must not forward IPv6 source-routed packets."/> -- </overlay> -- <overlay owner="disastig" ruleid="install_smartcard_packages" ownerid="OL07-00-041001" disa="1948" severity="medium"> -- <VMSinfo VKey="221895" SVKey="221895r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must have the required packages for multifactor authentication installed."/> -- </overlay> -- <overlay owner="disastig" ruleid="sssd_enable_pam_services" ownerid="OL07-00-041002" disa="1954" severity="medium"> -- <VMSinfo VKey="221896" SVKey="221896r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must implement multifactor authentication for access to privileged accounts via pluggable authentication modules (PAM)."/> -- </overlay> -- <overlay owner="disastig" ruleid="smartcard_configure_cert_checking" ownerid="OL07-00-041003" disa="1948" severity="medium"> -- <VMSinfo VKey="221897" SVKey="221897r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must implement certificate status checking for PKI authentication."/> -- </overlay> -- <overlay owner="disastig" ruleid="wireless_disable_interfaces" ownerid="OL07-00-041010" disa="2421" severity="medium"> -- <VMSinfo VKey="221898" SVKey="221898r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must be configured so that all wireless network adapters are disabled."/> -- </overlay> -- <overlay owner="disastig" ruleid="file_ownership_var_log_audit" ownerid="OL07-00-910055" disa="164" severity="medium"> -- <VMSinfo VKey="221899" SVKey="221899r6032" VRelease="r603260"/> -- <title text="The Oracle Linux operating system must protect audit information from unauthorized read, modification, or deletion."/> -- </overlay> --</overlays> -diff --git a/products/rhel7/overlays/stig_overlay.xml b/products/rhel7/overlays/stig_overlay.xml -deleted file mode 100644 -index 2bf837c8b3b..00000000000 ---- a/products/rhel7/overlays/stig_overlay.xml -+++ /dev/null -@@ -1,999 +0,0 @@ --<?xml version="1.0" encoding="UTF-8"?> --<overlays xmlns="http://checklists.nist.gov/xccdf/1.1"> -- <overlay owner="disastig" ruleid="rpm_verify_ownership" ownerid="RHEL-07-010010" disa="2235" severity="high"> -- <VMSinfo VKey="204392" SVKey="204392r6468" VRelease="r646841"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that the file permissions, ownership, and group membership of system files and commands match the vendor values."/> -- </overlay> -- <overlay owner="disastig" ruleid="rpm_verify_hashes" ownerid="RHEL-07-010020" disa="1749" severity="high"> -- <VMSinfo VKey="214799" SVKey="214799r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that the cryptographic hash of system files and commands matches vendor values."/> -- </overlay> -- <overlay owner="disastig" ruleid="dconf_gnome_banner_enabled" ownerid="RHEL-07-010030" disa="48" severity="medium"> -- <VMSinfo VKey="204393" SVKey="204393r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must display the Standard Mandatory DoD Notice and Consent Banner before granting local or remote access to the system via a graphical user logon."/> -- </overlay> -- <overlay owner="disastig" ruleid="dconf_gnome_login_banner_text" ownerid="RHEL-07-010040" disa="48" severity="medium"> -- <VMSinfo VKey="204394" SVKey="204394r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must display the approved Standard Mandatory DoD Notice and Consent Banner before granting local or remote access to the system via a graphical user logon."/> -- </overlay> -- <overlay owner="disastig" ruleid="banner_etc_issue" ownerid="RHEL-07-010050" disa="48" severity="medium"> -- <VMSinfo VKey="204395" SVKey="204395r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system 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."/> -- </overlay> -- <overlay owner="disastig" ruleid="dconf_gnome_screensaver_lock_enabled" ownerid="RHEL-07-010060" disa="56" severity="medium"> -- <VMSinfo VKey="204396" SVKey="204396r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must enable a user session lock until that user re-establishes access using established identification and authentication procedures."/> -- </overlay> -- <overlay owner="disastig" ruleid="dconf_gnome_enable_smartcard_auth" ownerid="RHEL-07-010061" disa="1954" severity="medium"> -- <VMSinfo VKey="204397" SVKey="204397r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must uniquely identify and must authenticate users using multifactor authentication via a graphical user logon."/> -- </overlay> -- <overlay owner="disastig" ruleid="dconf_gnome_screensaver_lock_locked" ownerid="RHEL-07-010062" disa="57" severity="medium"> -- <VMSinfo VKey="214937" SVKey="214937r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must prevent a user from overriding the screensaver lock-enabled setting for the graphical user interface."/> -- </overlay> -- <overlay owner="disastig" ruleid="dconf_gnome_screensaver_idle_delay" ownerid="RHEL-07-010070" disa="57" severity="medium"> -- <VMSinfo VKey="204398" SVKey="204398r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must initiate a screensaver after a 15-minute period of inactivity for graphical user interfaces."/> -- </overlay> -- <overlay owner="disastig" ruleid="dconf_gnome_screensaver_user_locks" ownerid="RHEL-07-010081" disa="57" severity="medium"> -- <VMSinfo VKey="204399" SVKey="204399r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must prevent a user from overriding the screensaver lock-delay setting for the graphical user interface."/> -- </overlay> -- <overlay owner="disastig" ruleid="dconf_gnome_session_idle_user_locks" ownerid="RHEL-07-010082" disa="57" severity="medium"> -- <VMSinfo VKey="204400" SVKey="204400r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must prevent a user from overriding the session idle-delay setting for the graphical user interface."/> -- </overlay> -- <overlay owner="disastig" ruleid="dconf_gnome_screensaver_idle_activation_enabled" ownerid="RHEL-07-010100" disa="57" severity="medium"> -- <VMSinfo VKey="204402" SVKey="204402r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must initiate a session lock for the screensaver after a period of inactivity for graphical user interfaces."/> -- </overlay> -- <overlay owner="disastig" ruleid="dconf_gnome_screensaver_idle_activation_locked" ownerid="RHEL-07-010101" disa="57" severity="medium"> -- <VMSinfo VKey="204403" SVKey="204403r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must prevent a user from overriding the screensaver idle-activation-enabled setting for the graphical user interface."/> -- </overlay> -- <overlay owner="disastig" ruleid="dconf_gnome_screensaver_lock_delay" ownerid="RHEL-07-010110" disa="57" severity="medium"> -- <VMSinfo VKey="204404" SVKey="204404r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must initiate a session lock for graphical user interfaces when the screensaver is activated."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_password_pam_retry" ownerid="RHEL-07-010118" disa="192" severity="medium"> -- <VMSinfo VKey="204405" SVKey="204405r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that /etc/pam.d/passwd implements /etc/pam.d/system-auth when changing passwords."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_password_pam_retry" ownerid="RHEL-07-010119" disa="192" severity="medium"> -- <VMSinfo VKey="204406" SVKey="204406r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that when passwords are changed or new passwords are established, pwquality must be used."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_password_pam_ucredit" ownerid="RHEL-07-010120" disa="192" severity="medium"> -- <VMSinfo VKey="204407" SVKey="204407r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that when passwords are changed or new passwords are established, the new password must contain at least one upper-case character."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_password_pam_lcredit" ownerid="RHEL-07-010130" disa="193" severity="medium"> -- <VMSinfo VKey="204408" SVKey="204408r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that when passwords are changed or new passwords are established, the new password must contain at least one lower-case character."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_password_pam_dcredit" ownerid="RHEL-07-010140" disa="194" severity="medium"> -- <VMSinfo VKey="204409" SVKey="204409r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that when passwords are changed or new passwords are assigned, the new password must contain at least one numeric character."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_password_pam_ocredit" ownerid="RHEL-07-010150" disa="1619" severity="medium"> -- <VMSinfo VKey="204410" SVKey="204410r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that when passwords are changed or new passwords are established, the new password must contain at least one special character."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_password_pam_difok" ownerid="RHEL-07-010160" disa="195" severity="medium"> -- <VMSinfo VKey="204411" SVKey="204411r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that when passwords are changed a minimum of eight of the total number of characters must be changed."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_password_pam_minclass" ownerid="RHEL-07-010170" disa="195" severity="medium"> -- <VMSinfo VKey="204412" SVKey="204412r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that when passwords are changed a minimum of four character classes must be changed."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_password_pam_maxrepeat" ownerid="RHEL-07-010180" disa="195" severity="medium"> -- <VMSinfo VKey="204413" SVKey="204413r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that when passwords are changed the number of repeating consecutive characters must not be more than three characters."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_password_pam_maxclassrepeat" ownerid="RHEL-07-010190" disa="195" severity="medium"> -- <VMSinfo VKey="204414" SVKey="204414r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that when passwords are changed the number of repeating characters of the same character class must not be more than four characters."/> -- </overlay> -- <overlay owner="disastig" ruleid="set_password_hashing_algorithm_systemauth" ownerid="RHEL-07-010200" disa="196" severity="medium"> -- <VMSinfo VKey="204415" SVKey="204415r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that the PAM system service is configured to store only encrypted representations of passwords."/> -- </overlay> -- <overlay owner="disastig" ruleid="set_password_hashing_algorithm_logindefs" ownerid="RHEL-07-010210" disa="196" severity="medium"> -- <VMSinfo VKey="204416" SVKey="204416r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured to use the shadow file to store only encrypted representations of passwords."/> -- </overlay> -- <overlay owner="disastig" ruleid="set_password_hashing_algorithm_libuserconf" ownerid="RHEL-07-010220" disa="196" severity="medium"> -- <VMSinfo VKey="204417" SVKey="204417r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that user and group account administration utilities are configured to store only encrypted representations of passwords."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_minimum_age_login_defs" ownerid="RHEL-07-010230" disa="198" severity="medium"> -- <VMSinfo VKey="204418" SVKey="204418r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that passwords for new users are restricted to a 24 hours/1 day minimum lifetime."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_password_set_min_life_existing" ownerid="RHEL-07-010240" disa="198" severity="medium"> -- <VMSinfo VKey="204419" SVKey="204419r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that passwords are restricted to a 24 hours/1 day minimum lifetime."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_maximum_age_login_defs" ownerid="RHEL-07-010250" disa="199" severity="medium"> -- <VMSinfo VKey="204420" SVKey="204420r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that passwords for new users are restricted to a 60-day maximum lifetime."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_password_set_max_life_existing" ownerid="RHEL-07-010260" disa="199" severity="medium"> -- <VMSinfo VKey="204421" SVKey="204421r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that existing passwords are restricted to a 60-day maximum lifetime."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_password_pam_unix_remember" ownerid="RHEL-07-010270" disa="200" severity="medium"> -- <VMSinfo VKey="204422" SVKey="204422r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that passwords are prohibited from reuse for a minimum of five generations."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_password_pam_minlen" ownerid="RHEL-07-010280" disa="205" severity="medium"> -- <VMSinfo VKey="204423" SVKey="204423r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that passwords are a minimum of 15 characters in length."/> -- </overlay> -- <overlay owner="disastig" ruleid="no_empty_passwords" ownerid="RHEL-07-010290" disa="366" severity="high"> -- <VMSinfo VKey="204424" SVKey="204424r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must not have accounts configured with blank or null passwords."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_disable_empty_passwords" ownerid="RHEL-07-010300" disa="766" severity="high"> -- <VMSinfo VKey="204425" SVKey="204425r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that the SSH daemon does not allow authentication using an empty password."/> -- </overlay> -- <overlay owner="disastig" ruleid="account_disable_post_pw_expiration" ownerid="RHEL-07-010310" disa="795" severity="medium"> -- <VMSinfo VKey="204426" SVKey="204426r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must disable account identifiers (individuals, groups, roles, and devices) if the password expires."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_passwords_pam_faillock_interval" ownerid="RHEL-07-010320" disa="2238" severity="medium"> -- <VMSinfo VKey="204427" SVKey="204427r6038" VRelease="r603824"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured to lock accounts for a minimum of 15 minutes after three unsuccessful logon attempts within a 15-minute timeframe."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_passwords_pam_faillock_deny_root" ownerid="RHEL-07-010330" disa="2238" severity="medium"> -- <VMSinfo VKey="204428" SVKey="204428r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must lock the associated account after three unsuccessful root logon attempts are made within a 15-minute period."/> -- </overlay> -- <overlay owner="disastig" ruleid="sudo_remove_nopasswd" ownerid="RHEL-07-010340" disa="2038" severity="medium"> -- <VMSinfo VKey="204429" SVKey="204429r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that users must provide a password for privilege escalation."/> -- </overlay> -- <overlay owner="disastig" ruleid="sudo_restrict_privilege_elevation_to_authorized" ownerid="RHEL-07-010341" disa="366" severity="medium"> -- <VMSinfo VKey="237633" SVKey="237633r6468" VRelease="r646850"/> -- <title text="The Red Hat Enterprise Linux operating system must restrict privilege elevation to authorized personnel."/> -- </overlay> -- <overlay owner="disastig" ruleid="sudoers_validate_passwd" ownerid="RHEL-07-010342" disa="2227" severity="medium"> -- <VMSinfo VKey="237634" SVKey="237634r6468" VRelease="r646853"/> -- <title text="The Red Hat Enterprise Linux operating system must use the invoking user's password for privilege escalation when using "sudo"."/> -- </overlay> -- <overlay owner="disastig" ruleid="sudo_remove_nopasswd" ownerid="RHEL-07-010343" disa="2038" severity="medium"> -- <VMSinfo VKey="237635" SVKey="237635r6468" VRelease="r646856"/> -- <title text="The Red Hat Enterprise Linux operating system must require re-authentication when using the "sudo" command."/> -- </overlay> -- <overlay owner="disastig" ruleid="sudo_remove_no_authenticate" ownerid="RHEL-07-010350" disa="2038" severity="medium"> -- <VMSinfo VKey="204430" SVKey="204430r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that users must re-authenticate for privilege escalation."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_logon_fail_delay" ownerid="RHEL-07-010430" disa="366" severity="medium"> -- <VMSinfo VKey="204431" SVKey="204431r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that the delay between logon prompts following a failed console logon attempt is at least four seconds."/> -- </overlay> -- <overlay owner="disastig" ruleid="gnome_gdm_disable_automatic_login" ownerid="RHEL-07-010440" disa="366" severity="high"> -- <VMSinfo VKey="204432" SVKey="204432r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must not allow an unattended or automatic logon to the system via a graphical user interface."/> -- </overlay> -- <overlay owner="disastig" ruleid="gnome_gdm_disable_guest_login" ownerid="RHEL-07-010450" disa="366" severity="high"> -- <VMSinfo VKey="204433" SVKey="204433r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must not allow an unrestricted logon to the system."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_do_not_permit_user_env" ownerid="RHEL-07-010460" disa="366" severity="medium"> -- <VMSinfo VKey="204434" SVKey="204434r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must not allow users to override SSH environment variables."/> -- </overlay> -- <overlay owner="disastig" ruleid="disable_host_auth" ownerid="RHEL-07-010470" disa="366" severity="medium"> -- <VMSinfo VKey="204435" SVKey="204435r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must not allow a non-certificate trusted host SSH logon to the system."/> -- </overlay> -- <overlay owner="disastig" ruleid="grub2_admin_username" ownerid="RHEL-07-010480" disa="213" severity="high"> -- <VMSinfo VKey="204436" SVKey="204436r6032" VRelease="r603261"/> -- <title text="Red Hat Enterprise Linux operating systems prior to version 7.2 with a Basic Input/Output System (BIOS) must require authentication upon booting into single-user and maintenance modes."/> -- </overlay> -- <overlay owner="disastig" ruleid="require_singleuser_auth" ownerid="RHEL-07-010481" disa="213" severity="medium"> -- <VMSinfo VKey="204437" SVKey="204437r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must require authentication upon booting into single-user and maintenance modes."/> -- </overlay> -- <overlay owner="disastig" ruleid="grub2_password" ownerid="RHEL-07-010482" disa="213" severity="high"> -- <VMSinfo VKey="204438" SVKey="204438r6032" VRelease="r603261"/> -- <title text="Red Hat Enterprise Linux operating systems version 7.2 or newer with a Basic Input/Output System (BIOS) must require authentication upon booting into single-user and maintenance modes."/> -- </overlay> -- <overlay owner="disastig" ruleid="grub2_uefi_admin_username" ownerid="RHEL-07-010490" disa="213" severity="high"> -- <VMSinfo VKey="204439" SVKey="204439r6032" VRelease="r603261"/> -- <title text="Red Hat Enterprise Linux operating systems prior to version 7.2 using Unified Extensible Firmware Interface (UEFI) must require authentication upon booting into single-user and maintenance modes."/> -- </overlay> -- <overlay owner="disastig" ruleid="grub2_uefi_password" ownerid="RHEL-07-010491" disa="213" severity="high"> -- <VMSinfo VKey="204440" SVKey="204440r6032" VRelease="r603261"/> -- <title text="Red Hat Enterprise Linux operating systems version 7.2 or newer using Unified Extensible Firmware Interface (UEFI) must require authentication upon booting into single-user and maintenance modes."/> -- </overlay> -- <overlay owner="disastig" ruleid="smartcard_auth" ownerid="RHEL-07-010500" disa="766" severity="medium"> -- <VMSinfo VKey="204441" SVKey="204441r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must uniquely identify and must authenticate organizational users (or processes acting on behalf of organizational users) using multifactor authentication."/> -- </overlay> -- <overlay owner="disastig" ruleid="package_rsh-server_removed" ownerid="RHEL-07-020000" disa="381" severity="high"> -- <VMSinfo VKey="204442" SVKey="204442r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must not have the rsh-server package installed."/> -- </overlay> -- <overlay owner="disastig" ruleid="package_ypserv_removed" ownerid="RHEL-07-020010" disa="381" severity="high"> -- <VMSinfo VKey="204443" SVKey="204443r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must not have the ypserv package installed."/> -- </overlay> -- <overlay owner="disastig" ruleid="package_MFEhiplsm_installed" ownerid="RHEL-07-020019" disa="1263" severity="medium"> -- <VMSinfo VKey="214800" SVKey="214800r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must have a host-based intrusion detection tool installed."/> -- </overlay> -- <overlay owner="disastig" ruleid="selinux_user_login_roles" ownerid="RHEL-07-020020" disa="2165" severity="medium"> -- <VMSinfo VKey="204444" SVKey="204444r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must prevent non-privileged users from executing privileged functions to include disabling, circumventing, or altering implemented security safeguards/countermeasures."/> -- </overlay> -- <overlay owner="disastig" ruleid="aide_periodic_cron_checking" ownerid="RHEL-07-020030" disa="1744" severity="medium"> -- <VMSinfo VKey="204445" SVKey="204445r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that a file integrity tool verifies the baseline operating system configuration at least weekly."/> -- </overlay> -- <overlay owner="disastig" ruleid="aide_scan_notification" ownerid="RHEL-07-020040" disa="1744" severity="medium"> -- <VMSinfo VKey="204446" SVKey="204446r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that designated personnel are notified if baseline configurations are changed in an unauthorized manner."/> -- </overlay> -- <overlay owner="disastig" ruleid="ensure_gpgcheck_globally_activated" ownerid="RHEL-07-020050" disa="1749" severity="high"> -- <VMSinfo VKey="204447" SVKey="204447r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system 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."/> -- </overlay> -- <overlay owner="disastig" ruleid="ensure_gpgcheck_local_packages" ownerid="RHEL-07-020060" disa="1749" severity="high"> -- <VMSinfo VKey="204448" SVKey="204448r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system 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."/> -- </overlay> -- <overlay owner="disastig" ruleid="kernel_module_usb-storage_disabled" ownerid="RHEL-07-020100" disa="366" severity="medium"> -- <VMSinfo VKey="204449" SVKey="204449r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured to disable USB mass storage."/> -- </overlay> -- <overlay owner="disastig" ruleid="kernel_module_dccp_disabled" ownerid="RHEL-07-020101" disa="1958" severity="medium"> -- <VMSinfo VKey="204450" SVKey="204450r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that the Datagram Congestion Control Protocol (DCCP) kernel module is disabled unless required."/> -- </overlay> -- <overlay owner="disastig" ruleid="service_autofs_disabled" ownerid="RHEL-07-020110" disa="778" severity="medium"> -- <VMSinfo VKey="204451" SVKey="204451r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must disable the file system automounter unless required."/> -- </overlay> -- <overlay owner="disastig" ruleid="kernel_module_usb-storage_disabled" ownerid="RHEL-07-020111" disa="366" severity="medium"> -- <VMSinfo VKey="219059" SVKey="219059r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must disable the graphical user interface automounter unless required."/> -- </overlay> -- <overlay owner="disastig" ruleid="clean_components_post_updating" ownerid="RHEL-07-020200" disa="2617" severity="low"> -- <VMSinfo VKey="204452" SVKey="204452r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must remove all software components after updated versions have been installed."/> -- </overlay> -- <overlay owner="disastig" ruleid="selinux_state" ownerid="RHEL-07-020210" disa="2165" severity="medium"> -- <VMSinfo VKey="204453" SVKey="204453r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must enable SELinux."/> -- </overlay> -- <overlay owner="disastig" ruleid="selinux_policytype" ownerid="RHEL-07-020220" disa="2696" severity="medium"> -- <VMSinfo VKey="204454" SVKey="204454r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must enable the SELinux targeted policy."/> -- </overlay> -- <overlay owner="disastig" ruleid="disable_ctrlaltdel_reboot" ownerid="RHEL-07-020230" disa="366" severity="high"> -- <VMSinfo VKey="204455" SVKey="204455r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that the x86 Ctrl-Alt-Delete key sequence is disabled on the command line."/> -- </overlay> -- <overlay owner="disastig" ruleid="dconf_gnome_disable_ctrlaltdel_reboot" ownerid="RHEL-07-020231" disa="366" severity="high"> -- <VMSinfo VKey="204456" SVKey="204456r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that the x86 Ctrl-Alt-Delete key sequence is disabled in the Graphical User Interface."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_umask_etc_login_defs" ownerid="RHEL-07-020240" disa="366" severity="medium"> -- <VMSinfo VKey="204457" SVKey="204457r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must define default permissions for all authenticated users in such a way that the user can only read and modify their own files."/> -- </overlay> -- <overlay owner="disastig" ruleid="installed_OS_is_vendor_supported" ownerid="RHEL-07-020250" disa="366" severity="high"> -- <VMSinfo VKey="204458" SVKey="204458r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be a vendor supported release."/> -- </overlay> -- <overlay owner="disastig" ruleid="security_patches_up_to_date" ownerid="RHEL-07-020260" disa="366" severity="medium"> -- <VMSinfo VKey="204459" SVKey="204459r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system security patches and updates must be installed and up to date."/> -- </overlay> -- <overlay owner="disastig" ruleid="package_vsftpd_removed" ownerid="RHEL-07-020270" disa="366" severity="medium"> -- <VMSinfo VKey="204460" SVKey="204460r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must not have unnecessary accounts."/> -- </overlay> -- <overlay owner="disastig" ruleid="gid_passwd_group_same" ownerid="RHEL-07-020300" disa="764" severity="low"> -- <VMSinfo VKey="204461" SVKey="204461r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that all Group Identifiers (GIDs) referenced in the /etc/passwd file are defined in the /etc/group file."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_no_uid_except_zero" ownerid="RHEL-07-020310" disa="366" severity="high"> -- <VMSinfo VKey="204462" SVKey="204462r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that the root account must be the only account having unrestricted access to the system."/> -- </overlay> -- <overlay owner="disastig" ruleid="no_files_unowned_by_user" ownerid="RHEL-07-020320" disa="2165" severity="medium"> -- <VMSinfo VKey="204463" SVKey="204463r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that all files and directories have a valid owner."/> -- </overlay> -- <overlay owner="disastig" ruleid="file_permissions_ungroupowned" ownerid="RHEL-07-020330" disa="2165" severity="medium"> -- <VMSinfo VKey="204464" SVKey="204464r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that all files and directories have a valid group owner."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_have_homedir_login_defs" ownerid="RHEL-07-020610" disa="366" severity="medium"> -- <VMSinfo VKey="204466" SVKey="204466r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that all local interactive user accounts, upon creation, are assigned a home directory."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_user_interactive_home_directory_exists" ownerid="RHEL-07-020620" disa="366" severity="medium"> -- <VMSinfo VKey="204467" SVKey="204467r6038" VRelease="r603826"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that all local interactive users have a home directory assigned and defined in the /etc/passwd file."/> -- </overlay> -- <overlay owner="disastig" ruleid="file_permissions_home_directories" ownerid="RHEL-07-020630" disa="366" severity="medium"> -- <VMSinfo VKey="204468" SVKey="204468r6038" VRelease="r603828"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that all local interactive user home directories have mode 0750 or less permissive."/> -- </overlay> -- <overlay owner="disastig" ruleid="file_ownership_home_directories" ownerid="RHEL-07-020640" disa="366" severity="medium"> -- <VMSinfo VKey="204469" SVKey="204469r6038" VRelease="r603830"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that all local interactive user home directories are owned by their respective users."/> -- </overlay> -- <overlay owner="disastig" ruleid="file_groupownership_home_directories" ownerid="RHEL-07-020650" disa="366" severity="medium"> -- <VMSinfo VKey="204470" SVKey="204470r6038" VRelease="r603832"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that all local interactive user home directories are group-owned by the home directory owners primary group."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_users_home_files_ownership" ownerid="RHEL-07-020660" disa="366" severity="medium"> -- <VMSinfo VKey="204471" SVKey="204471r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that all files and directories contained in local interactive user home directories are owned by the owner of the home directory."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_users_home_files_groupownership" ownerid="RHEL-07-020670" disa="366" severity="medium"> -- <VMSinfo VKey="204472" SVKey="204472r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that all files and directories contained in local interactive user home directories are group-owned by a group of which the home directory owner is a member."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_users_home_files_permissions" ownerid="RHEL-07-020680" disa="366" severity="medium"> -- <VMSinfo VKey="204473" SVKey="204473r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that all files and directories contained in local interactive user home directories have a mode of 0750 or less permissive."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_user_dot_user_ownership" ownerid="RHEL-07-020690" disa="366" severity="medium"> -- <VMSinfo VKey="204474" SVKey="204474r6038" VRelease="r603834"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that all local initialization files for interactive users are owned by the home directory user or root."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_user_dot_group_ownership" ownerid="RHEL-07-020700" disa="366" severity="medium"> -- <VMSinfo VKey="204475" SVKey="204475r6038" VRelease="r603836"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that all local initialization files for local interactive users are be group-owned by the users primary group or root."/> -- </overlay> -- <overlay owner="disastig" ruleid="file_permission_user_init_files" ownerid="RHEL-07-020710" disa="366" severity="medium"> -- <VMSinfo VKey="204476" SVKey="204476r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that all local initialization files have mode 0740 or less permissive."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_user_home_paths_only" ownerid="RHEL-07-020720" disa="366" severity="medium"> -- <VMSinfo VKey="204477" SVKey="204477r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that all local interactive user initialization files executable search paths contain only paths that resolve to the users home directory."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_user_dot_no_world_writable_programs" ownerid="RHEL-07-020730" disa="366" severity="medium"> -- <VMSinfo VKey="204478" SVKey="204478r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that local initialization files do not execute world-writable programs."/> -- </overlay> -- <overlay owner="disastig" ruleid="selinux_all_devicefiles_labeled" ownerid="RHEL-07-020900" disa="318" severity="medium"> -- <VMSinfo VKey="204479" SVKey="204479r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that all system device files are correctly labeled to prevent unauthorized modification."/> -- </overlay> -- <overlay owner="disastig" ruleid="mount_option_home_nosuid" ownerid="RHEL-07-021000" disa="366" severity="medium"> -- <VMSinfo VKey="204480" SVKey="204480r6038" VRelease="r603838"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that file systems containing user home directories are mounted to prevent files with the setuid and setgid bit set from being executed."/> -- </overlay> -- <overlay owner="disastig" ruleid="mount_option_nosuid_removable_partitions" ownerid="RHEL-07-021010" disa="366" severity="medium"> -- <VMSinfo VKey="204481" SVKey="204481r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must prevent files with the setuid and setgid bit set from being executed on file systems that are used with removable media."/> -- </overlay> -- <overlay owner="disastig" ruleid="mount_option_nosuid_remote_filesystems" ownerid="RHEL-07-021020" disa="366" severity="medium"> -- <VMSinfo VKey="204482" SVKey="204482r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must prevent files with the setuid and setgid bit set from being executed on file systems that are being imported via Network File System (NFS)."/> -- </overlay> -- <overlay owner="disastig" ruleid="mount_option_noexec_remote_filesystems" ownerid="RHEL-07-021021" disa="366" severity="medium"> -- <VMSinfo VKey="204483" SVKey="204483r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must prevent binary files from being executed on file systems that are being imported via Network File System (NFS)."/> -- </overlay> -- <overlay owner="disastig" ruleid="mount_option_dev_shm_noexec" ownerid="RHEL-07-021024" disa="1764" severity="low"> -- <VMSinfo VKey="204486" SVKey="204486r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must mount /dev/shm with secure options."/> -- </overlay> -- <overlay owner="disastig" ruleid="dir_perms_world_writable_system_owned_group" ownerid="RHEL-07-021030" disa="366" severity="medium"> -- <VMSinfo VKey="204487" SVKey="204487r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that all world-writable directories are group-owned by root, sys, bin, or an application group."/> -- </overlay> -- <overlay owner="disastig" ruleid="dir_perms_world_writable_system_owned" ownerid="RHEL-07-021031" disa="366" severity="medium"> -- <VMSinfo VKey="228563" SVKey="228563r6064" VRelease="r606406"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that all world-writable directories are owned by root, sys, bin, or an application user."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_umask_interactive_users" ownerid="RHEL-07-021040" disa="1812" severity="medium"> -- <VMSinfo VKey="204488" SVKey="204488r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must set the umask value to 077 for all local interactive user accounts."/> -- </overlay> -- <overlay owner="disastig" ruleid="rsyslog_cron_logging" ownerid="RHEL-07-021100" disa="366" severity="medium"> -- <VMSinfo VKey="204489" SVKey="204489r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must have cron logging implemented."/> -- </overlay> -- <overlay owner="disastig" ruleid="file_owner_cron_allow" ownerid="RHEL-07-021110" disa="366" severity="medium"> -- <VMSinfo VKey="204490" SVKey="204490r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that the cron.allow file, if it exists, is owned by root."/> -- </overlay> -- <overlay owner="disastig" ruleid="file_groupowner_cron_allow" ownerid="RHEL-07-021120" disa="366" severity="medium"> -- <VMSinfo VKey="204491" SVKey="204491r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that the cron.allow file, if it exists, is group-owned by root."/> -- </overlay> -- <overlay owner="disastig" ruleid="service_kdump_disabled" ownerid="RHEL-07-021300" disa="366" severity="medium"> -- <VMSinfo VKey="204492" SVKey="204492r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must disable Kernel core dumps unless needed."/> -- </overlay> -- <overlay owner="disastig" ruleid="partition_for_home" ownerid="RHEL-07-021310" disa="366" severity="low"> -- <VMSinfo VKey="204493" SVKey="204493r6038" VRelease="r603840"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that a separate file system is used for user home directories (such as /home or an equivalent)."/> -- </overlay> -- <overlay owner="disastig" ruleid="partition_for_var" ownerid="RHEL-07-021320" disa="366" severity="low"> -- <VMSinfo VKey="204494" SVKey="204494r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must use a separate file system for /var."/> -- </overlay> -- <overlay owner="disastig" ruleid="partition_for_var_log_audit" ownerid="RHEL-07-021330" disa="366" severity="low"> -- <VMSinfo VKey="204495" SVKey="204495r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must use a separate file system for the system audit data path."/> -- </overlay> -- <overlay owner="disastig" ruleid="partition_for_tmp" ownerid="RHEL-07-021340" disa="366" severity="low"> -- <VMSinfo VKey="204496" SVKey="204496r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must use a separate file system for /tmp (or equivalent)."/> -- </overlay> -- <overlay owner="disastig" ruleid="grub2_enable_fips_mode" ownerid="RHEL-07-021350" disa="2476" severity="high"> -- <VMSinfo VKey="204497" SVKey="204497r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system 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."/> -- </overlay> -- <overlay owner="disastig" ruleid="aide_verify_acls" ownerid="RHEL-07-021600" disa="366" severity="low"> -- <VMSinfo VKey="204498" SVKey="204498r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that the file integrity tool is configured to verify Access Control Lists (ACLs)."/> -- </overlay> -- <overlay owner="disastig" ruleid="aide_verify_ext_attributes" ownerid="RHEL-07-021610" disa="366" severity="low"> -- <VMSinfo VKey="204499" SVKey="204499r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that the file integrity tool is configured to verify extended attributes."/> -- </overlay> -- <overlay owner="disastig" ruleid="aide_use_fips_hashes" ownerid="RHEL-07-021620" disa="366" severity="medium"> -- <VMSinfo VKey="204500" SVKey="204500r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must use a file integrity tool that is configured to use FIPS 140-2 approved cryptographic hashes for validating file contents and directories."/> -- </overlay> -- <overlay owner="disastig" ruleid="grub2_no_removeable_media" ownerid="RHEL-07-021700" disa="318" severity="medium"> -- <VMSinfo VKey="204501" SVKey="204501r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must not allow removable media to be used as the boot loader unless approved."/> -- </overlay> -- <overlay owner="disastig" ruleid="package_telnet-server_removed" ownerid="RHEL-07-021710" disa="381" severity="high"> -- <VMSinfo VKey="204502" SVKey="204502r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must not have the telnet-server package installed."/> -- </overlay> -- <overlay owner="disastig" ruleid="service_auditd_enabled" ownerid="RHEL-07-030000" disa="131" severity="medium"> -- <VMSinfo VKey="204503" SVKey="204503r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that auditing is configured to produce records containing information to establish what type of events occurred, where the events occurred, the source of the events, and the outcome of the events. These audit records must also identify individual identities of group account users."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_system_shutdown" ownerid="RHEL-07-030010" disa="139" severity="medium"> -- <VMSinfo VKey="204504" SVKey="204504r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must shut down upon audit processing failure, unless availability is an overriding concern. If availability is a concern, the system must alert the designated staff (System Administrator [SA] and Information System Security Officer [ISSO] at a minimum) in the event of an audit processing failure."/> -- </overlay> -- <overlay owner="disastig" ruleid="rsyslog_remote_loghost" ownerid="RHEL-07-030201" disa="1851" severity="medium"> -- <VMSinfo VKey="204506" SVKey="204506r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured to off-load audit logs onto a different system or storage media from the system being audited."/> -- </overlay> -- <overlay owner="disastig" ruleid="rsyslog_remote_loghost" ownerid="RHEL-07-030210" disa="1851" severity="medium"> -- <VMSinfo VKey="204507" SVKey="204507r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must take appropriate action when the remote logging buffer is full."/> -- </overlay> -- <overlay owner="disastig" ruleid="rsyslog_remote_loghost" ownerid="RHEL-07-030211" disa="1851" severity="medium"> -- <VMSinfo VKey="204508" SVKey="204508r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must label all off-loaded audit logs before sending them to the central log server."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_audispd_configure_remote_server" ownerid="RHEL-07-030300" disa="1851" severity="medium"> -- <VMSinfo VKey="204509" SVKey="204509r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must off-load audit records onto a different system or media from the system being audited."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_audispd_encrypt_sent_records" ownerid="RHEL-07-030310" disa="1851" severity="medium"> -- <VMSinfo VKey="204510" SVKey="204510r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must encrypt the transfer of audit records off-loaded onto a different system or media from the system being audited."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_audispd_disk_full_action" ownerid="RHEL-07-030320" disa="1851" severity="medium"> -- <VMSinfo VKey="204511" SVKey="204511r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that the audit system takes appropriate action when the audit storage volume is full."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_audispd_network_failure_action" ownerid="RHEL-07-030321" disa="1851" severity="medium"> -- <VMSinfo VKey="204512" SVKey="204512r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that the audit system takes appropriate action when there is an error sending audit records to a remote system."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_data_retention_space_left" ownerid="RHEL-07-030330" disa="1855" severity="medium"> -- <VMSinfo VKey="204513" SVKey="204513r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must initiate an action to notify the System Administrator (SA) and Information System Security Officer ISSO, at a minimum, when allocated audit record storage volume reaches 75% of the repository maximum audit record storage capacity."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_data_retention_admin_space_left_action" ownerid="RHEL-07-030340" disa="1855" severity="medium"> -- <VMSinfo VKey="204514" SVKey="204514r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must immediately notify the System Administrator (SA) and Information System Security Officer (ISSO) (at a minimum) via email when the threshold for the repository maximum audit record storage capacity is reached."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_data_retention_action_mail_acct" ownerid="RHEL-07-030350" disa="1855" severity="medium"> -- <VMSinfo VKey="204515" SVKey="204515r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must immediately notify the System Administrator (SA) and Information System Security Officer (ISSO) (at a minimum) when the threshold for the repository maximum audit record storage capacity is reached."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands" ownerid="RHEL-07-030360" disa="2234" severity="medium"> -- <VMSinfo VKey="204516" SVKey="204516r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must audit all executions of privileged functions."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_dac_modification_chown" ownerid="RHEL-07-030370" disa="126" severity="medium"> -- <VMSinfo VKey="204517" SVKey="204517r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must audit all uses of the chown syscall."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_dac_modification_fchown" ownerid="RHEL-07-030380" disa="172" severity="medium"> -- <VMSinfo VKey="204518" SVKey="204518r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must audit all uses of the fchown syscall."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_dac_modification_lchown" ownerid="RHEL-07-030390" disa="172" severity="medium"> -- <VMSinfo VKey="204519" SVKey="204519r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must audit all uses of the lchown syscall."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_dac_modification_fchownat" ownerid="RHEL-07-030400" disa="172" severity="medium"> -- <VMSinfo VKey="204520" SVKey="204520r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must audit all uses of the fchownat syscall."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_dac_modification_chmod" ownerid="RHEL-07-030410" disa="172" severity="medium"> -- <VMSinfo VKey="204521" SVKey="204521r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must audit all uses of the chmod syscall."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_dac_modification_fchmod" ownerid="RHEL-07-030420" disa="172" severity="medium"> -- <VMSinfo VKey="204522" SVKey="204522r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must audit all uses of the fchmod syscall."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_dac_modification_fchmodat" ownerid="RHEL-07-030430" disa="172" severity="medium"> -- <VMSinfo VKey="204523" SVKey="204523r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must audit all uses of the fchmodat syscall."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_dac_modification_setxattr" ownerid="RHEL-07-030440" disa="172" severity="medium"> -- <VMSinfo VKey="204524" SVKey="204524r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must audit all uses of the setxattr syscall."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_dac_modification_fsetxattr" ownerid="RHEL-07-030450" disa="172" severity="medium"> -- <VMSinfo VKey="204525" SVKey="204525r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must audit all uses of the fsetxattr syscall."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_dac_modification_lsetxattr" ownerid="RHEL-07-030460" disa="172" severity="medium"> -- <VMSinfo VKey="204526" SVKey="204526r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must audit all uses of the lsetxattr syscall."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_dac_modification_removexattr" ownerid="RHEL-07-030470" disa="172" severity="medium"> -- <VMSinfo VKey="204527" SVKey="204527r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must audit all uses of the removexattr syscall."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_dac_modification_fremovexattr" ownerid="RHEL-07-030480" disa="172" severity="medium"> -- <VMSinfo VKey="204528" SVKey="204528r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must audit all uses of the fremovexattr syscall."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_dac_modification_lremovexattr" ownerid="RHEL-07-030490" disa="172" severity="medium"> -- <VMSinfo VKey="204529" SVKey="204529r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must audit all uses of the lremovexattr syscall."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_unsuccessful_file_modification_creat" ownerid="RHEL-07-030500" disa="2884" severity="medium"> -- <VMSinfo VKey="204530" SVKey="204530r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must audit all uses of the creat syscall."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_unsuccessful_file_modification_open" ownerid="RHEL-07-030510" disa="2884" severity="medium"> -- <VMSinfo VKey="204531" SVKey="204531r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must audit all uses of the open syscall."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_unsuccessful_file_modification_openat" ownerid="RHEL-07-030520" disa="2884" severity="medium"> -- <VMSinfo VKey="204532" SVKey="204532r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must audit all uses of the openat syscall."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_unsuccessful_file_modification_open_by_handle_at" ownerid="RHEL-07-030530" disa="2884" severity="medium"> -- <VMSinfo VKey="204533" SVKey="204533r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must audit all uses of the open_by_handle_at syscall."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_unsuccessful_file_modification_truncate" ownerid="RHEL-07-030540" disa="2884" severity="medium"> -- <VMSinfo VKey="204534" SVKey="204534r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must audit all uses of the truncate syscall."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_unsuccessful_file_modification_ftruncate" ownerid="RHEL-07-030550" disa="2884" severity="medium"> -- <VMSinfo VKey="204535" SVKey="204535r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must audit all uses of the ftruncate syscall."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_execution_semanage" ownerid="RHEL-07-030560" disa="2884" severity="medium"> -- <VMSinfo VKey="204536" SVKey="204536r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must audit all uses of the semanage command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_execution_setsebool" ownerid="RHEL-07-030570" disa="2884" severity="medium"> -- <VMSinfo VKey="204537" SVKey="204537r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must audit all uses of the setsebool command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_execution_chcon" ownerid="RHEL-07-030580" disa="2884" severity="medium"> -- <VMSinfo VKey="204538" SVKey="204538r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must audit all uses of the chcon command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_execution_setfiles" ownerid="RHEL-07-030590" disa="2884" severity="medium"> -- <VMSinfo VKey="204539" SVKey="204539r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must audit all uses of the setfiles command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_login_events_faillock" ownerid="RHEL-07-030610" disa="2884" severity="medium"> -- <VMSinfo VKey="204540" SVKey="204540r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must generate audit records for all unsuccessful account access events."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_login_events_lastlog" ownerid="RHEL-07-030620" disa="2884" severity="medium"> -- <VMSinfo VKey="204541" SVKey="204541r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must generate audit records for all successful account access events."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_passwd" ownerid="RHEL-07-030630" disa="2884" severity="medium"> -- <VMSinfo VKey="204542" SVKey="204542r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must audit all uses of the passwd command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_unix_chkpwd" ownerid="RHEL-07-030640" disa="2884" severity="medium"> -- <VMSinfo VKey="204543" SVKey="204543r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must audit all uses of the unix_chkpwd command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_gpasswd" ownerid="RHEL-07-030650" disa="2884" severity="medium"> -- <VMSinfo VKey="204544" SVKey="204544r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must audit all uses of the gpasswd command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_chage" ownerid="RHEL-07-030660" disa="2884" severity="medium"> -- <VMSinfo VKey="204545" SVKey="204545r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must audit all uses of the chage command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_userhelper" ownerid="RHEL-07-030670" disa="2884" severity="medium"> -- <VMSinfo VKey="204546" SVKey="204546r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must audit all uses of the userhelper command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_su" ownerid="RHEL-07-030680" disa="2884" severity="medium"> -- <VMSinfo VKey="204547" SVKey="204547r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must audit all uses of the su command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_sudo" ownerid="RHEL-07-030690" disa="2884" severity="medium"> -- <VMSinfo VKey="204548" SVKey="204548r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must audit all uses of the sudo command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_sysadmin_actions" ownerid="RHEL-07-030700" disa="2884" severity="medium"> -- <VMSinfo VKey="204549" SVKey="204549r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must audit all uses of the sudoers file and all files in the /etc/sudoers.d/ directory."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_newgrp" ownerid="RHEL-07-030710" disa="2884" severity="medium"> -- <VMSinfo VKey="204550" SVKey="204550r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must audit all uses of the newgrp command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_chsh" ownerid="RHEL-07-030720" disa="2884" severity="medium"> -- <VMSinfo VKey="204551" SVKey="204551r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must audit all uses of the chsh command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_mount" ownerid="RHEL-07-030740" disa="2884" severity="medium"> -- <VMSinfo VKey="204552" SVKey="204552r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must audit all uses of the mount command and syscall."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_umount" ownerid="RHEL-07-030750" disa="2884" severity="medium"> -- <VMSinfo VKey="204553" SVKey="204553r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must audit all uses of the umount command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_postdrop" ownerid="RHEL-07-030760" disa="2884" severity="medium"> -- <VMSinfo VKey="204554" SVKey="204554r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must audit all uses of the postdrop command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_postqueue" ownerid="RHEL-07-030770" disa="2884" severity="medium"> -- <VMSinfo VKey="204555" SVKey="204555r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must audit all uses of the postqueue command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_ssh_keysign" ownerid="RHEL-07-030780" disa="2884" severity="medium"> -- <VMSinfo VKey="204556" SVKey="204556r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must audit all uses of the ssh-keysign command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_crontab" ownerid="RHEL-07-030800" disa="2884" severity="medium"> -- <VMSinfo VKey="204557" SVKey="204557r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must audit all uses of the crontab command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_pam_timestamp_check" ownerid="RHEL-07-030810" disa="172" severity="medium"> -- <VMSinfo VKey="204558" SVKey="204558r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must audit all uses of the pam_timestamp_check command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_kernel_module_loading_delete" ownerid="RHEL-07-030819" disa="172" severity="medium"> -- <VMSinfo VKey="204559" SVKey="204559r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must audit all uses of the create_module syscall."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_kernel_module_loading_init" ownerid="RHEL-07-030820" disa="172" severity="medium"> -- <VMSinfo VKey="204560" SVKey="204560r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must audit all uses of the init_module syscall."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_kernel_module_loading_finit" ownerid="RHEL-07-030821" disa="172" severity="medium"> -- <VMSinfo VKey="204561" SVKey="204561r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must audit all uses of the finit_module syscall."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_kernel_module_loading_delete" ownerid="RHEL-07-030830" disa="172" severity="medium"> -- <VMSinfo VKey="204562" SVKey="204562r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must audit all uses of the delete_module syscall."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_kernel_module_loading_delete" ownerid="RHEL-07-030840" disa="172" severity="medium"> -- <VMSinfo VKey="204563" SVKey="204563r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must audit all uses of the kmod command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_usergroup_modification_passwd" ownerid="RHEL-07-030870" disa="2130" severity="medium"> -- <VMSinfo VKey="204564" SVKey="204564r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/passwd."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_usergroup_modification_group" ownerid="RHEL-07-030871" disa="2130" severity="medium"> -- <VMSinfo VKey="204565" SVKey="204565r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/group."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_usergroup_modification_gshadow" ownerid="RHEL-07-030872" disa="2130" severity="medium"> -- <VMSinfo VKey="204566" SVKey="204566r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/gshadow."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_usergroup_modification_shadow" ownerid="RHEL-07-030873" disa="2130" severity="medium"> -- <VMSinfo VKey="204567" SVKey="204567r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/shadow."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_usergroup_modification_opasswd" ownerid="RHEL-07-030874" disa="2130" severity="medium"> -- <VMSinfo VKey="204568" SVKey="204568r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/opasswd."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_file_deletion_events_rename" ownerid="RHEL-07-030880" disa="2884" severity="medium"> -- <VMSinfo VKey="204569" SVKey="204569r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must audit all uses of the rename syscall."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_file_deletion_events_renameat" ownerid="RHEL-07-030890" disa="2884" severity="medium"> -- <VMSinfo VKey="204570" SVKey="204570r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must audit all uses of the renameat syscall."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_file_deletion_events_rmdir" ownerid="RHEL-07-030900" disa="2884" severity="medium"> -- <VMSinfo VKey="204571" SVKey="204571r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must audit all uses of the rmdir syscall."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_file_deletion_events_unlink" ownerid="RHEL-07-030910" disa="2884" severity="medium"> -- <VMSinfo VKey="204572" SVKey="204572r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must audit all uses of the unlink syscall."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_file_deletion_events_unlinkat" ownerid="RHEL-07-030920" disa="2884" severity="medium"> -- <VMSinfo VKey="204573" SVKey="204573r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must audit all uses of the unlinkat syscall."/> -- </overlay> -- <overlay owner="disastig" ruleid="rsyslog_remote_loghost" ownerid="RHEL-07-031000" disa="366" severity="medium"> -- <VMSinfo VKey="204574" SVKey="204574r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must send rsyslog output to a log aggregation server."/> -- </overlay> -- <overlay owner="disastig" ruleid="rsyslog_nolisten" ownerid="RHEL-07-031010" disa="368" severity="medium"> -- <VMSinfo VKey="204575" SVKey="204575r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that the rsyslog daemon does not accept log messages from other servers unless the server is being used for log aggregation."/> -- </overlay> -- <overlay owner="disastig" ruleid="install_mcafee_antivirus" ownerid="RHEL-07-032000" disa="1668" severity="high"> -- <VMSinfo VKey="214801" SVKey="214801r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must use a virus scan program."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_max_concurrent_login_sessions" ownerid="RHEL-07-040000" disa="54" severity="low"> -- <VMSinfo VKey="204576" SVKey="204576r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must limit the number of concurrent sessions to 10 for all accounts and/or account types."/> -- </overlay> -- <overlay owner="disastig" ruleid="configure_firewalld_ports" ownerid="RHEL-07-040100" disa="2314" severity="medium"> -- <VMSinfo VKey="204577" SVKey="204577r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured to prohibit or restrict the use of functions, ports, protocols, and/or services, as defined in the Ports, Protocols, and Services Management Component Local Service Assessment (PPSM CLSA) and vulnerability assessments."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_use_approved_ciphers_ordered_stig" ownerid="RHEL-07-040110" disa="68" severity="medium"> -- <VMSinfo VKey="204578" SVKey="204578r6038" VRelease="r603843"/> -- <title text="The Red Hat Enterprise Linux 7 operating system must implement DoD-approved encryption to protect the confidentiality of SSH connections."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_tmout" ownerid="RHEL-07-040160" disa="2361" severity="medium"> -- <VMSinfo VKey="204579" SVKey="204579r6468" VRelease="r646844"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that all network connections associated with a communication session are terminated at the end of the session or after 15 minutes of inactivity from the user at a command prompt, except to fulfill documented and validated mission requirements."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_enable_warning_banner" ownerid="RHEL-07-040170" disa="50" severity="medium"> -- <VMSinfo VKey="204580" SVKey="204580r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must display the Standard Mandatory DoD Notice and Consent Banner immediately prior to, or as part of, remote access logon prompts."/> -- </overlay> -- <overlay owner="disastig" ruleid="sssd_ldap_start_tls" ownerid="RHEL-07-040180" disa="1453" severity="medium"> -- <VMSinfo VKey="204581" SVKey="204581r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must implement cryptography to protect the integrity of Lightweight Directory Access Protocol (LDAP) authentication communications."/> -- </overlay> -- <overlay owner="disastig" ruleid="sssd_ldap_configure_tls_reqcert" ownerid="RHEL-07-040190" disa="1453" severity="medium"> -- <VMSinfo VKey="204582" SVKey="204582r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must implement cryptography to protect the integrity of Lightweight Directory Access Protocol (LDAP) communications."/> -- </overlay> -- <overlay owner="disastig" ruleid="sssd_ldap_configure_tls_ca_dir" ownerid="RHEL-07-040200" disa="1453" severity="medium"> -- <VMSinfo VKey="204583" SVKey="204583r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must implement cryptography to protect the integrity of Lightweight Directory Access Protocol (LDAP) communications."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_kernel_randomize_va_space" ownerid="RHEL-07-040201" disa="366" severity="medium"> -- <VMSinfo VKey="204584" SVKey="204584r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must implement virtual address space randomization."/> -- </overlay> -- <overlay owner="disastig" ruleid="package_openssh-server_installed" ownerid="RHEL-07-040300" disa="2421" severity="medium"> -- <VMSinfo VKey="204585" SVKey="204585r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that all networked systems have SSH installed."/> -- </overlay> -- <overlay owner="disastig" ruleid="service_sshd_enabled" ownerid="RHEL-07-040310" disa="2420" severity="medium"> -- <VMSinfo VKey="204586" SVKey="204586r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that all networked systems use SSH for confidentiality and integrity of transmitted and received information as well as information during preparation for transmission."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_set_idle_timeout" ownerid="RHEL-07-040320" disa="2361" severity="medium"> -- <VMSinfo VKey="204587" SVKey="204587r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that all network connections associated with SSH traffic are terminated at the end of the session or after 10 minutes of inactivity, except to fulfill documented and validated mission requirements."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_disable_rhosts_rsa" ownerid="RHEL-07-040330" disa="366" severity="medium"> -- <VMSinfo VKey="204588" SVKey="204588r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that the SSH daemon does not allow authentication using RSA rhosts authentication."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_set_keepalive_0" ownerid="RHEL-07-040340" disa="2361" severity="medium"> -- <VMSinfo VKey="204589" SVKey="204589r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that all network connections associated with SSH traffic terminate after a period of inactivity."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_disable_rhosts" ownerid="RHEL-07-040350" disa="366" severity="medium"> -- <VMSinfo VKey="204590" SVKey="204590r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that the SSH daemon does not allow authentication using rhosts authentication."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_print_last_log" ownerid="RHEL-07-040360" disa="366" severity="medium"> -- <VMSinfo VKey="204591" SVKey="204591r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must display the date and time of the last successful account logon upon an SSH logon."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_disable_root_login" ownerid="RHEL-07-040370" disa="366" severity="medium"> -- <VMSinfo VKey="204592" SVKey="204592r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must not permit direct logons to the root account using remote access via SSH."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_disable_user_known_hosts" ownerid="RHEL-07-040380" disa="366" severity="medium"> -- <VMSinfo VKey="204593" SVKey="204593r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that the SSH daemon does not allow authentication using known hosts authentication."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_allow_only_protocol2" ownerid="RHEL-07-040390" disa="197" severity="high"> -- <VMSinfo VKey="204594" SVKey="204594r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that the SSH daemon is configured to only use the SSHv2 protocol."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_use_approved_macs_ordered_stig" ownerid="RHEL-07-040400" disa="1453" severity="medium"> -- <VMSinfo VKey="204595" SVKey="204595r6038" VRelease="r603846"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that the SSH daemon is configured to only use Message Authentication Codes (MACs) employing FIPS 140-2 approved cryptographic hash algorithms."/> -- </overlay> -- <overlay owner="disastig" ruleid="file_permissions_sshd_pub_key" ownerid="RHEL-07-040410" disa="366" severity="medium"> -- <VMSinfo VKey="204596" SVKey="204596r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that the SSH public host key files have mode 0644 or less permissive."/> -- </overlay> -- <overlay owner="disastig" ruleid="file_permissions_sshd_private_key" ownerid="RHEL-07-040420" disa="366" severity="medium"> -- <VMSinfo VKey="204597" SVKey="204597r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that the SSH private host key files have mode 0640 or less permissive."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_disable_gssapi_auth" ownerid="RHEL-07-040430" disa="1814" severity="medium"> -- <VMSinfo VKey="204598" SVKey="204598r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that the SSH daemon does not permit Generic Security Service Application Program Interface (GSSAPI) authentication unless needed."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_disable_kerb_auth" ownerid="RHEL-07-040440" disa="318" severity="medium"> -- <VMSinfo VKey="204599" SVKey="204599r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that the SSH daemon does not permit Kerberos authentication unless needed."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_enable_strictmodes" ownerid="RHEL-07-040450" disa="366" severity="medium"> -- <VMSinfo VKey="204600" SVKey="204600r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that the SSH daemon performs strict mode checking of home directory configuration files."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_use_priv_separation" ownerid="RHEL-07-040460" disa="366" severity="medium"> -- <VMSinfo VKey="204601" SVKey="204601r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that the SSH daemon uses privilege separation."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_disable_compression" ownerid="RHEL-07-040470" disa="366" severity="medium"> -- <VMSinfo VKey="204602" SVKey="204602r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that the SSH daemon does not allow compression or only allows compression after successful authentication."/> -- </overlay> -- <overlay owner="disastig" ruleid="chronyd_or_ntpd_set_maxpoll" ownerid="RHEL-07-040500" disa="2046" severity="medium"> -- <VMSinfo VKey="204603" SVKey="204603r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must, for networked systems, synchronize clocks with a server that is synchronized to one of the redundant United States Naval Observatory (USNO) time servers, a time server designated for the appropriate DoD network (NIPRNet/SIPRNet), and/or the Global Positioning System (GPS)."/> -- </overlay> -- <overlay owner="disastig" ruleid="service_firewalld_enabled" ownerid="RHEL-07-040520" disa="366" severity="medium"> -- <VMSinfo VKey="204604" SVKey="204604r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must enable an application firewall, if available."/> -- </overlay> -- <overlay owner="disastig" ruleid="display_login_attempts" ownerid="RHEL-07-040530" disa="366" severity="low"> -- <VMSinfo VKey="204605" SVKey="204605r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must display the date and time of the last successful account logon upon logon."/> -- </overlay> -- <overlay owner="disastig" ruleid="no_user_host_based_files" ownerid="RHEL-07-040540" disa="366" severity="high"> -- <VMSinfo VKey="204606" SVKey="204606r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must not contain .shosts files."/> -- </overlay> -- <overlay owner="disastig" ruleid="no_host_based_files" ownerid="RHEL-07-040550" disa="366" severity="high"> -- <VMSinfo VKey="204607" SVKey="204607r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must not contain shosts.equiv files."/> -- </overlay> -- <overlay owner="disastig" ruleid="network_configure_name_resolution" ownerid="RHEL-07-040600" disa="366" severity="low"> -- <VMSinfo VKey="204608" SVKey="204608r6032" VRelease="r603261"/> -- <title text="For Red Hat Enterprise Linux operating systems using DNS resolution, at least two name servers must be configured."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_net_ipv4_conf_all_accept_source_route" ownerid="RHEL-07-040610" disa="366" severity="medium"> -- <VMSinfo VKey="204609" SVKey="204609r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must not forward Internet Protocol version 4 (IPv4) source-routed packets."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_net_ipv4_conf_all_rp_filter" ownerid="RHEL-07-040611" disa="366" severity="medium"> -- <VMSinfo VKey="204610" SVKey="204610r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must use a reverse-path filter for IPv4 network traffic when possible on all interfaces."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_net_ipv4_conf_default_rp_filter" ownerid="RHEL-07-040612" disa="366" severity="medium"> -- <VMSinfo VKey="204611" SVKey="204611r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must use a reverse-path filter for IPv4 network traffic when possible by default."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_net_ipv4_conf_default_accept_source_route" ownerid="RHEL-07-040620" disa="366" severity="medium"> -- <VMSinfo VKey="204612" SVKey="204612r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must not forward Internet Protocol version 4 (IPv4) source-routed packets by default."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_net_ipv4_icmp_echo_ignore_broadcasts" ownerid="RHEL-07-040630" disa="366" severity="medium"> -- <VMSinfo VKey="204613" SVKey="204613r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must not respond to Internet Protocol version 4 (IPv4) Internet Control Message Protocol (ICMP) echoes sent to a broadcast address."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_net_ipv4_conf_default_accept_redirects" ownerid="RHEL-07-040640" disa="366" severity="medium"> -- <VMSinfo VKey="204614" SVKey="204614r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must prevent Internet Protocol version 4 (IPv4) Internet Control Message Protocol (ICMP) redirect messages from being accepted."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_net_ipv4_conf_all_accept_redirects" ownerid="RHEL-07-040641" disa="366" severity="medium"> -- <VMSinfo VKey="204615" SVKey="204615r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must ignore Internet Protocol version 4 (IPv4) Internet Control Message Protocol (ICMP) redirect messages."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_net_ipv4_conf_default_send_redirects" ownerid="RHEL-07-040650" disa="366" severity="medium"> -- <VMSinfo VKey="204616" SVKey="204616r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must not allow interfaces to perform Internet Protocol version 4 (IPv4) Internet Control Message Protocol (ICMP) redirects by default."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_net_ipv4_conf_all_send_redirects" ownerid="RHEL-07-040660" disa="366" severity="medium"> -- <VMSinfo VKey="204617" SVKey="204617r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must not send Internet Protocol version 4 (IPv4) Internet Control Message Protocol (ICMP) redirects."/> -- </overlay> -- <overlay owner="disastig" ruleid="network_sniffer_disabled" ownerid="RHEL-07-040670" disa="366" severity="medium"> -- <VMSinfo VKey="204618" SVKey="204618r6032" VRelease="r603261"/> -- <title text="Network interfaces configured on the Red Hat Enterprise Linux operating system must not be in promiscuous mode."/> -- </overlay> -- <overlay owner="disastig" ruleid="postfix_prevent_unrestricted_relay" ownerid="RHEL-07-040680" disa="366" severity="medium"> -- <VMSinfo VKey="204619" SVKey="204619r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured to prevent unrestricted mail relaying."/> -- </overlay> -- <overlay owner="disastig" ruleid="package_vsftpd_removed" ownerid="RHEL-07-040690" disa="366" severity="high"> -- <VMSinfo VKey="204620" SVKey="204620r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must not have a File Transfer Protocol (FTP) server package installed unless needed."/> -- </overlay> -- <overlay owner="disastig" ruleid="package_tftp-server_removed" ownerid="RHEL-07-040700" disa="318" severity="high"> -- <VMSinfo VKey="204621" SVKey="204621r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must not have the Trivial File Transfer Protocol (TFTP) server package installed if not required for operational support."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_disable_x11_forwarding" ownerid="RHEL-07-040710" disa="366" severity="medium"> -- <VMSinfo VKey="204622" SVKey="204622r6038" VRelease="r603849"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that remote X connections are disabled except to fulfill documented and validated mission requirements."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_x11_use_localhost" ownerid="RHEL-07-040711" disa="366" severity="medium"> -- <VMSinfo VKey="233307" SVKey="233307r6033" VRelease="r603301"/> -- <title text="The Red Hat Enterprise Linux operating system SSH daemon must prevent remote hosts from connecting to the proxy display."/> -- </overlay> -- <overlay owner="disastig" ruleid="tftpd_uses_secure_mode" ownerid="RHEL-07-040720" disa="366" severity="medium"> -- <VMSinfo VKey="204623" SVKey="204623r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that if the Trivial File Transfer Protocol (TFTP) server is required, the TFTP daemon is configured to operate in secure mode."/> -- </overlay> -- <overlay owner="disastig" ruleid="xwindows_remove_packages" ownerid="RHEL-07-040730" disa="366" severity="medium"> -- <VMSinfo VKey="204624" SVKey="204624r6468" VRelease="r646847"/> -- <title text="The Red Hat Enterprise Linux operating system must not have a graphical display manager installed unless approved."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_net_ipv4_ip_forward" ownerid="RHEL-07-040740" disa="366" severity="medium"> -- <VMSinfo VKey="204625" SVKey="204625r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must not be performing packet forwarding unless the system is a router."/> -- </overlay> -- <overlay owner="disastig" ruleid="mount_option_krb_sec_remote_filesystems" ownerid="RHEL-07-040750" disa="366" severity="medium"> -- <VMSinfo VKey="204626" SVKey="204626r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that the Network File System (NFS) is configured to use RPCSEC_GSS."/> -- </overlay> -- <overlay owner="disastig" ruleid="snmpd_not_default_password" ownerid="RHEL-07-040800" disa="366" severity="high"> -- <VMSinfo VKey="204627" SVKey="204627r6032" VRelease="r603261"/> -- <title text="SNMP community strings on the Red Hat Enterprise Linux operating system must be changed from the default."/> -- </overlay> -- <overlay owner="disastig" ruleid="set_firewalld_default_zone" ownerid="RHEL-07-040810" disa="366" severity="medium"> -- <VMSinfo VKey="204628" SVKey="204628r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system access control program must be configured to grant or deny system access to specific hosts and services."/> -- </overlay> -- <overlay owner="disastig" ruleid="libreswan_approved_tunnels" ownerid="RHEL-07-040820" disa="366" severity="medium"> -- <VMSinfo VKey="204629" SVKey="204629r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must not have unauthorized IP tunnels configured."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_net_ipv6_conf_all_accept_source_route" ownerid="RHEL-07-040830" disa="366" severity="medium"> -- <VMSinfo VKey="204630" SVKey="204630r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must not forward IPv6 source-routed packets."/> -- </overlay> -- <overlay owner="disastig" ruleid="install_smartcard_packages" ownerid="RHEL-07-041001" disa="1948" severity="medium"> -- <VMSinfo VKey="204631" SVKey="204631r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must have the required packages for multifactor authentication installed."/> -- </overlay> -- <overlay owner="disastig" ruleid="sssd_enable_pam_services" ownerid="RHEL-07-041002" disa="1953" severity="medium"> -- <VMSinfo VKey="204632" SVKey="204632r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must implement multifactor authentication for access to privileged accounts via pluggable authentication modules (PAM)."/> -- </overlay> -- <overlay owner="disastig" ruleid="smartcard_configure_cert_checking" ownerid="RHEL-07-041003" disa="1948" severity="medium"> -- <VMSinfo VKey="204633" SVKey="204633r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must implement certificate status checking for PKI authentication."/> -- </overlay> -- <overlay owner="disastig" ruleid="wireless_disable_interfaces" ownerid="RHEL-07-041010" disa="2418" severity="medium"> -- <VMSinfo VKey="204634" SVKey="204634r6032" VRelease="r603261"/> -- <title text="The Red Hat Enterprise Linux operating system must be configured so that all wireless network adapters are disabled."/> -- </overlay> -- <overlay owner="disastig" ruleid="file_permissions_var_log_audit" ownerid="RHEL-07-910055" disa="164" severity="medium"> -- <VMSinfo VKey="228564" SVKey="228564r6064" VRelease="r606407"/> -- <title text="The Red Hat Enterprise Linux operating system must protect audit information from unauthorized read, modification, or deletion."/> -- </overlay> --</overlays> -diff --git a/products/rhel8/overlays/stig_overlay.xml b/products/rhel8/overlays/stig_overlay.xml -deleted file mode 100644 -index 70b33c84493..00000000000 ---- a/products/rhel8/overlays/stig_overlay.xml -+++ /dev/null -@@ -1,1375 +0,0 @@ --<?xml version="1.0" encoding="UTF-8"?> --<overlays xmlns="http://checklists.nist.gov/xccdf/1.1"> -- <overlay owner="disastig" ruleid="installed_OS_is_vendor_supported" ownerid="RHEL-08-010000" disa="366" severity="high"> -- <VMSinfo VKey="230221" SVKey="230221r6277" VRelease="r627750"/> -- <title text="RHEL 8 must be a vendor-supported release."/> -- </overlay> -- <overlay owner="disastig" ruleid="security_patches_up_to_date" ownerid="RHEL-08-010010" disa="366" severity="medium"> -- <VMSinfo VKey="230222" SVKey="230222r6277" VRelease="r627750"/> -- <title text="RHEL 8 vendor packaged system security patches and updates must be installed and up to date."/> -- </overlay> -- <overlay owner="disastig" ruleid="enable_fips_mode" ownerid="RHEL-08-010020" disa="68" severity="high"> -- <VMSinfo VKey="230223" SVKey="230223r6277" VRelease="r627750"/> -- <title text="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."/> -- </overlay> -- <overlay owner="disastig" ruleid="encrypt_partitions" ownerid="RHEL-08-010030" disa="1199" severity="medium"> -- <VMSinfo VKey="230224" SVKey="230224r6277" VRelease="r627750"/> -- <title text="All RHEL 8 local disk partitions must implement cryptographic mechanisms to prevent unauthorized disclosure or modification of all information that requires at rest protection."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_enable_warning_banner" ownerid="RHEL-08-010040" disa="48" severity="medium"> -- <VMSinfo VKey="230225" SVKey="230225r6277" VRelease="r627750"/> -- <title text="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."/> -- </overlay> -- <overlay owner="disastig" ruleid="dconf_gnome_banner_enabled" ownerid="RHEL-08-010050" disa="48" severity="medium"> -- <VMSinfo VKey="230226" SVKey="230226r6277" VRelease="r627750"/> -- <title text="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."/> -- </overlay> -- <overlay owner="disastig" ruleid="banner_etc_issue" ownerid="RHEL-08-010060" disa="48" severity="medium"> -- <VMSinfo VKey="230227" SVKey="230227r6277" VRelease="r627750"/> -- <title text="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."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="RHEL-08-010070" disa="67" severity="medium"> -- <VMSinfo VKey="230228" SVKey="230228r6277" VRelease="r627750"/> -- <title text="All RHEL 8 remote access methods must be monitored."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="RHEL-08-010090" disa="185" severity="medium"> -- <VMSinfo VKey="230229" SVKey="230229r6277" VRelease="r627750"/> -- <title text="RHEL 8, for PKI-based authentication, must validate certificates by constructing a certification path (which includes status information) to an accepted trust anchor."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="RHEL-08-010100" disa="186" severity="medium"> -- <VMSinfo VKey="230230" SVKey="230230r6277" VRelease="r627750"/> -- <title text="RHEL 8, for certificate-based authentication, must enforce authorized access to the corresponding private key."/> -- </overlay> -- <overlay owner="disastig" ruleid="set_password_hashing_algorithm_logindefs" ownerid="RHEL-08-010110" disa="196" severity="medium"> -- <VMSinfo VKey="230231" SVKey="230231r6277" VRelease="r627750"/> -- <title text="RHEL 8 must encrypt all stored passwords with a FIPS 140-2 approved cryptographic hashing algorithm."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="RHEL-08-010120" disa="196" severity="medium"> -- <VMSinfo VKey="230232" SVKey="230232r6277" VRelease="r627750"/> -- <title text="RHEL 8 must employ FIPS 140-2 approved cryptographic hashing algorithms for all stored passwords."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_password_pam_unix_rounds_password_auth" ownerid="RHEL-08-010130" disa="196" severity="medium"> -- <VMSinfo VKey="230233" SVKey="230233r6277" VRelease="r627750"/> -- <title text="RHEL 8 must employ FIPS 140-2 approved cryptographic hashing algorithms for all created passwords."/> -- </overlay> -- <overlay owner="disastig" ruleid="grub2_uefi_admin_username" ownerid="RHEL-08-010140" disa="213" severity="high"> -- <VMSinfo VKey="230234" SVKey="230234r6277" VRelease="r627750"/> -- <title text="RHEL 8 operating systems booted with United Extensible Firmware Interface (UEFI) implemented must require authentication upon booting into single-user mode and maintenance."/> -- </overlay> -- <overlay owner="disastig" ruleid="grub2_admin_username" ownerid="RHEL-08-010150" disa="213" severity="high"> -- <VMSinfo VKey="230235" SVKey="230235r6277" VRelease="r627750"/> -- <title text="RHEL 8 operating systems booted with a BIOS must require authentication upon booting into single-user and maintenance modes."/> -- </overlay> -- <overlay owner="disastig" ruleid="require_singleuser_auth" ownerid="RHEL-08-010151" disa="213" severity="medium"> -- <VMSinfo VKey="230236" SVKey="230236r6277" VRelease="r627750"/> -- <title text="RHEL 8 operating systems must require authentication upon booting into emergency or rescue modes."/> -- </overlay> -- <overlay owner="disastig" ruleid="set_password_hashing_algorithm_systemauth" ownerid="RHEL-08-010160" disa="803" severity="medium"> -- <VMSinfo VKey="230237" SVKey="230237r6277" VRelease="r627750"/> -- <title text="The RHEL 8 pam_unix.so module must use a FIPS 140-2 approved cryptographic hashing algorithm for system authentication."/> -- </overlay> -- <overlay owner="disastig" ruleid="kerberos_disable_no_keytab" ownerid="RHEL-08-010161" disa="803" severity="medium"> -- <VMSinfo VKey="230238" SVKey="230238r6468" VRelease="r646862"/> -- <title text="RHEL 8 must prevent system daemons from using Kerberos for authentication."/> -- </overlay> -- <overlay owner="disastig" ruleid="package_krb5-workstation_removed" ownerid="RHEL-08-010162" disa="803" severity="medium"> -- <VMSinfo VKey="230239" SVKey="230239r6468" VRelease="r646864"/> -- <title text="The krb5-workstation package must not be installed on RHEL 8."/> -- </overlay> -- <overlay owner="disastig" ruleid="package_rsyslog-gnutls_installed" ownerid="RHEL-08-010163" disa="803" severity="medium"> -- <VMSinfo VKey="237640" SVKey="237640r6468" VRelease="r646890"/> -- <title text="The krb5-server package must not be installed on RHEL 8."/> -- </overlay> -- <overlay owner="disastig" ruleid="selinux_state" ownerid="RHEL-08-010170" disa="1084" severity="medium"> -- <VMSinfo VKey="230240" SVKey="230240r6277" VRelease="r627750"/> -- <title text="RHEL 8 must use a Linux Security Module configured to enforce limits on system services."/> -- </overlay> -- <overlay owner="disastig" ruleid="package_policycoreutils_installed" ownerid="RHEL-08-010171" disa="1084" severity="low"> -- <VMSinfo VKey="230241" SVKey="230241r6277" VRelease="r627750"/> -- <title text="RHEL 8 must have policycoreutils package installed."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_kernel_dmesg_restrict" ownerid="RHEL-08-010180" disa="1090" severity="medium"> -- <VMSinfo VKey="230242" SVKey="230242r6277" VRelease="r627750"/> -- <title text="All RHEL 8 public directories must be owned by root or a system account to prevent unauthorized and unintended information transferred via shared system resources."/> -- </overlay> -- <overlay owner="disastig" ruleid="dir_perms_world_writable_sticky_bits" ownerid="RHEL-08-010190" disa="1090" severity="medium"> -- <VMSinfo VKey="230243" SVKey="230243r6277" VRelease="r627750"/> -- <title text="A sticky bit must be set on all RHEL 8 public directories to prevent unauthorized and unintended information transferred via shared system resources."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_set_idle_timeout" ownerid="RHEL-08-010200" disa="1133" severity="medium"> -- <VMSinfo VKey="230244" SVKey="230244r6277" VRelease="r627750"/> -- <title text="RHEL 8 must be configured so that all network connections associated with SSH traffic are terminated at the end of the session or after 10 minutes of inactivity, except to fulfill documented and validated mission requirements."/> -- </overlay> -- <overlay owner="disastig" ruleid="file_permissions_var_log_messages" ownerid="RHEL-08-010210" disa="1314" severity="medium"> -- <VMSinfo VKey="230245" SVKey="230245r6277" VRelease="r627750"/> -- <title text="The RHEL 8 /var/log/messages file must have mode 0640 or less permissive."/> -- </overlay> -- <overlay owner="disastig" ruleid="file_owner_var_log_messages" ownerid="RHEL-08-010220" disa="1314" severity="medium"> -- <VMSinfo VKey="230246" SVKey="230246r6277" VRelease="r627750"/> -- <title text="The RHEL 8 /var/log/messages file must be owned by root."/> -- </overlay> -- <overlay owner="disastig" ruleid="file_groupowner_var_log_messages" ownerid="RHEL-08-010230" disa="1314" severity="medium"> -- <VMSinfo VKey="230247" SVKey="230247r6277" VRelease="r627750"/> -- <title text="The RHEL 8 /var/log/messages file must be group-owned by root."/> -- </overlay> -- <overlay owner="disastig" ruleid="file_permissions_var_log" ownerid="RHEL-08-010240" disa="1314" severity="medium"> -- <VMSinfo VKey="230248" SVKey="230248r6277" VRelease="r627750"/> -- <title text="The RHEL 8 /var/log directory must have mode 0755 or less permissive."/> -- </overlay> -- <overlay owner="disastig" ruleid="file_owner_var_log" ownerid="RHEL-08-010250" disa="1314" severity="medium"> -- <VMSinfo VKey="230249" SVKey="230249r6277" VRelease="r627750"/> -- <title text="The RHEL 8 /var/log directory must be owned by root."/> -- </overlay> -- <overlay owner="disastig" ruleid="file_groupowner_var_log" ownerid="RHEL-08-010260" disa="1314" severity="medium"> -- <VMSinfo VKey="230250" SVKey="230250r6277" VRelease="r627750"/> -- <title text="The RHEL 8 /var/log directory must be group-owned by root."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="RHEL-08-010290" disa="1453" severity="medium"> -- <VMSinfo VKey="230251" SVKey="230251r6468" VRelease="r646866"/> -- <title text="The RHEL 8 SSH daemon must be configured to use only Message Authentication Codes (MACs) employing FIPS 140-2 validated cryptographic hash algorithms."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="RHEL-08-010291" disa="1453" severity="medium"> -- <VMSinfo VKey="230252" SVKey="230252r6468" VRelease="r646869"/> -- <title text="The RHEL 8 operating system must implement DoD-approved encryption to protect the confidentiality of SSH connections."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_use_strong_rng" ownerid="RHEL-08-010292" disa="366" severity="low"> -- <VMSinfo VKey="230253" SVKey="230253r6277" VRelease="r627750"/> -- <title text="RHEL 8 must ensure the SSH server uses strong entropy."/> -- </overlay> -- <overlay owner="disastig" ruleid="configure_openssl_crypto_policy" ownerid="RHEL-08-010293" disa="1453" severity="medium"> -- <VMSinfo VKey="230254" SVKey="230254r6277" VRelease="r627750"/> -- <title text="The RHEL 8 operating system must implement DoD-approved encryption in the OpenSSL package."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="RHEL-08-010294" disa="1453" severity="medium"> -- <VMSinfo VKey="230255" SVKey="230255r6277" VRelease="r627750"/> -- <title text="The RHEL 8 operating system must implement DoD-approved TLS encryption in the OpenSSL package."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="RHEL-08-010295" disa="1453" severity="medium"> -- <VMSinfo VKey="230256" SVKey="230256r6277" VRelease="r627750"/> -- <title text="The RHEL 8 operating system must implement DoD-approved TLS encryption in the GnuTLS package."/> -- </overlay> -- <overlay owner="disastig" ruleid="file_permissions_binary_dirs" ownerid="RHEL-08-010300" disa="1499" severity="medium"> -- <VMSinfo VKey="230257" SVKey="230257r6277" VRelease="r627750"/> -- <title text="RHEL 8 system commands must have mode 0755 or less permissive."/> -- </overlay> -- <overlay owner="disastig" ruleid="file_ownership_binary_dirs" ownerid="RHEL-08-010310" disa="1499" severity="medium"> -- <VMSinfo VKey="230258" SVKey="230258r6277" VRelease="r627750"/> -- <title text="RHEL 8 system commands must be owned by root."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="RHEL-08-010320" disa="1499" severity="medium"> -- <VMSinfo VKey="230259" SVKey="230259r6277" VRelease="r627750"/> -- <title text="RHEL 8 system commands must be group-owned by root or a system account."/> -- </overlay> -- <overlay owner="disastig" ruleid="file_permissions_library_dirs" ownerid="RHEL-08-010330" disa="1499" severity="medium"> -- <VMSinfo VKey="230260" SVKey="230260r6277" VRelease="r627750"/> -- <title text="RHEL 8 library files must have mode 0755 or less permissive."/> -- </overlay> -- <overlay owner="disastig" ruleid="file_ownership_library_dirs" ownerid="RHEL-08-010340" disa="1499" severity="medium"> -- <VMSinfo VKey="230261" SVKey="230261r6277" VRelease="r627750"/> -- <title text="RHEL 8 library files must be owned by root."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="RHEL-08-010350" disa="1499" severity="medium"> -- <VMSinfo VKey="230262" SVKey="230262r6277" VRelease="r627750"/> -- <title text="RHEL 8 library files must be group-owned by root or a system account."/> -- </overlay> -- <overlay owner="disastig" ruleid="aide_scan_notification" ownerid="RHEL-08-010360" disa="1744" severity="medium"> -- <VMSinfo VKey="230263" SVKey="230263r6277" VRelease="r627750"/> -- <title text="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."/> -- </overlay> -- <overlay owner="disastig" ruleid="ensure_gpgcheck_globally_activated" ownerid="RHEL-08-010370" disa="1749" severity="high"> -- <VMSinfo VKey="230264" SVKey="230264r6277" VRelease="r627750"/> -- <title text="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."/> -- </overlay> -- <overlay owner="disastig" ruleid="ensure_gpgcheck_local_packages" ownerid="RHEL-08-010371" disa="1749" severity="high"> -- <VMSinfo VKey="230265" SVKey="230265r6277" VRelease="r627750"/> -- <title text="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."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_kernel_kexec_load_disabled" ownerid="RHEL-08-010372" disa="1749" severity="medium"> -- <VMSinfo VKey="230266" SVKey="230266r6277" VRelease="r627750"/> -- <title text="RHEL 8 must prevent the loading of a new kernel for later execution."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_fs_protected_symlinks" ownerid="RHEL-08-010373" disa="2165" severity="medium"> -- <VMSinfo VKey="230267" SVKey="230267r6277" VRelease="r627750"/> -- <title text="RHEL 8 must enable kernel parameters to enforce discretionary access control on symlinks."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_fs_protected_hardlinks" ownerid="RHEL-08-010374" disa="2165" severity="medium"> -- <VMSinfo VKey="230268" SVKey="230268r6277" VRelease="r627750"/> -- <title text="RHEL 8 must enable kernel parameters to enforce discretionary access control on hardlinks."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_kernel_dmesg_restrict" ownerid="RHEL-08-010375" disa="1090" severity="low"> -- <VMSinfo VKey="230269" SVKey="230269r6277" VRelease="r627750"/> -- <title text="RHEL 8 must restrict access to the kernel message buffer."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_kernel_perf_event_paranoid" ownerid="RHEL-08-010376" disa="1090" severity="low"> -- <VMSinfo VKey="230270" SVKey="230270r6277" VRelease="r627750"/> -- <title text="RHEL 8 must prevent kernel profiling by unprivileged users."/> -- </overlay> -- <overlay owner="disastig" ruleid="sudo_remove_nopasswd" ownerid="RHEL-08-010380" disa="2038" severity="medium"> -- <VMSinfo VKey="230271" SVKey="230271r6277" VRelease="r627750"/> -- <title text="RHEL 8 must require users to provide a password for privilege escalation."/> -- </overlay> -- <overlay owner="disastig" ruleid="sudo_remove_no_authenticate" ownerid="RHEL-08-010381" disa="2038" severity="medium"> -- <VMSinfo VKey="230272" SVKey="230272r6277" VRelease="r627750"/> -- <title text="RHEL 8 must require users to reauthenticate for privilege escalation."/> -- </overlay> -- <overlay owner="disastig" ruleid="package_sendmail_removed" ownerid="RHEL-08-010382" disa="366" severity="medium"> -- <VMSinfo VKey="237641" SVKey="237641r6468" VRelease="r646893"/> -- <title text="RHEL 8 must restrict privilege elevation to authorized personnel."/> -- </overlay> -- <overlay owner="disastig" ruleid="sudoers_validate_passwd" ownerid="RHEL-08-010383" disa="2227" severity="medium"> -- <VMSinfo VKey="237642" SVKey="237642r6468" VRelease="r646896"/> -- <title text="RHEL 8 must use the invoking user's password for privilege escalation when using "sudo"."/> -- </overlay> -- <overlay owner="disastig" ruleid="sudo_remove_nopasswd" ownerid="RHEL-08-010384" disa="2038" severity="medium"> -- <VMSinfo VKey="237643" SVKey="237643r6468" VRelease="r646899"/> -- <title text="RHEL 8 must require re-authentication when using the "sudo" command."/> -- </overlay> -- <overlay owner="disastig" ruleid="install_smartcard_packages" ownerid="RHEL-08-010390" disa="1948" severity="medium"> -- <VMSinfo VKey="230273" SVKey="230273r6277" VRelease="r627750"/> -- <title text="RHEL 8 must have the packages required for multifactor authentication installed."/> -- </overlay> -- <overlay owner="disastig" ruleid="sssd_enable_smartcards" ownerid="RHEL-08-010400" disa="1948" severity="medium"> -- <VMSinfo VKey="230274" SVKey="230274r6277" VRelease="r627750"/> -- <title text="RHEL 8 must implement certificate status checking for multifactor authentication."/> -- </overlay> -- <overlay owner="disastig" ruleid="package_opensc_installed" ownerid="RHEL-08-010410" disa="1953" severity="medium"> -- <VMSinfo VKey="230275" SVKey="230275r6277" VRelease="r627750"/> -- <title text="RHEL 8 must accept Personal Identity Verification (PIV) credentials."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_kernel_kptr_restrict" ownerid="RHEL-08-010420" disa="2824" severity="medium"> -- <VMSinfo VKey="230276" SVKey="230276r6277" VRelease="r627750"/> -- <title text="RHEL 8 must implement non-executable data to protect its memory from unauthorized code execution."/> -- </overlay> -- <overlay owner="disastig" ruleid="grub2_page_poison_argument" ownerid="RHEL-08-010421" disa="1084" severity="medium"> -- <VMSinfo VKey="230277" SVKey="230277r6277" VRelease="r627750"/> -- <title text="RHEL 8 must clear the page allocator to prevent use-after-free attacks."/> -- </overlay> -- <overlay owner="disastig" ruleid="grub2_vsyscall_argument" ownerid="RHEL-08-010422" disa="1084" severity="medium"> -- <VMSinfo VKey="230278" SVKey="230278r6277" VRelease="r627750"/> -- <title text="RHEL 8 must disable virtual syscalls."/> -- </overlay> -- <overlay owner="disastig" ruleid="grub2_slub_debug_argument" ownerid="RHEL-08-010423" disa="1084" severity="medium"> -- <VMSinfo VKey="230279" SVKey="230279r6277" VRelease="r627750"/> -- <title text="RHEL 8 must clear SLUB/SLAB objects to prevent use-after-free attacks."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_kernel_randomize_va_space" ownerid="RHEL-08-010430" disa="2824" severity="medium"> -- <VMSinfo VKey="230280" SVKey="230280r6277" VRelease="r627750"/> -- <title text="RHEL 8 must implement address space layout randomization (ASLR) to protect its memory from unauthorized code execution."/> -- </overlay> -- <overlay owner="disastig" ruleid="clean_components_post_updating" ownerid="RHEL-08-010440" disa="2617" severity="low"> -- <VMSinfo VKey="230281" SVKey="230281r6277" VRelease="r627750"/> -- <title text="YUM must remove all software components after updated versions have been installed on RHEL 8."/> -- </overlay> -- <overlay owner="disastig" ruleid="selinux_policytype" ownerid="RHEL-08-010450" disa="2696" severity="medium"> -- <VMSinfo VKey="230282" SVKey="230282r6277" VRelease="r627750"/> -- <title text="RHEL 8 must enable the SELinux targeted policy."/> -- </overlay> -- <overlay owner="disastig" ruleid="no_host_based_files" ownerid="RHEL-08-010460" disa="366" severity="high"> -- <VMSinfo VKey="230283" SVKey="230283r6277" VRelease="r627750"/> -- <title text="There must be no shosts.equiv files on the RHEL 8 operating system."/> -- </overlay> -- <overlay owner="disastig" ruleid="no_user_host_based_files" ownerid="RHEL-08-010470" disa="366" severity="high"> -- <VMSinfo VKey="230284" SVKey="230284r6277" VRelease="r627750"/> -- <title text="There must be no .shosts files on the RHEL 8 operating system."/> -- </overlay> -- <overlay owner="disastig" ruleid="service_rngd_enabled" ownerid="RHEL-08-010471" disa="366" severity="low"> -- <VMSinfo VKey="230285" SVKey="230285r6277" VRelease="r627750"/> -- <title text="RHEL 8 must enable the hardware random number generator entropy gatherer service."/> -- </overlay> -- <overlay owner="disastig" ruleid="file_permissions_sshd_pub_key" ownerid="RHEL-08-010480" disa="366" severity="medium"> -- <VMSinfo VKey="230286" SVKey="230286r6277" VRelease="r627750"/> -- <title text="The RHEL 8 SSH public host key files must have mode 0644 or less permissive."/> -- </overlay> -- <overlay owner="disastig" ruleid="file_permissions_sshd_private_key" ownerid="RHEL-08-010490" disa="366" severity="medium"> -- <VMSinfo VKey="230287" SVKey="230287r6277" VRelease="r627750"/> -- <title text="The RHEL 8 SSH private host key files must have mode 0640 or less permissive."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_enable_strictmodes" ownerid="RHEL-08-010500" disa="366" severity="medium"> -- <VMSinfo VKey="230288" SVKey="230288r6277" VRelease="r627750"/> -- <title text="The RHEL 8 SSH daemon must perform strict mode checking of home directory configuration files."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_disable_compression" ownerid="RHEL-08-010510" disa="366" severity="medium"> -- <VMSinfo VKey="230289" SVKey="230289r6277" VRelease="r627750"/> -- <title text="The RHEL 8 SSH daemon must not allow compression or must only allow compression after successful authentication."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_disable_user_known_hosts" ownerid="RHEL-08-010520" disa="366" severity="medium"> -- <VMSinfo VKey="230290" SVKey="230290r6277" VRelease="r627750"/> -- <title text="The RHEL 8 SSH daemon must not allow authentication using known host’s authentication."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_disable_kerb_auth" ownerid="RHEL-08-010521" disa="366" severity="medium"> -- <VMSinfo VKey="230291" SVKey="230291r6277" VRelease="r627750"/> -- <title text="The RHEL 8 SSH daemon must not allow unused methods of authentication."/> -- </overlay> -- <overlay owner="disastig" ruleid="partition_for_var" ownerid="RHEL-08-010540" disa="366" severity="low"> -- <VMSinfo VKey="230292" SVKey="230292r6277" VRelease="r627750"/> -- <title text="RHEL 8 must use a separate file system for /var."/> -- </overlay> -- <overlay owner="disastig" ruleid="partition_for_var_log" ownerid="RHEL-08-010541" disa="366" severity="low"> -- <VMSinfo VKey="230293" SVKey="230293r6277" VRelease="r627750"/> -- <title text="RHEL 8 must use a separate file system for /var/log."/> -- </overlay> -- <overlay owner="disastig" ruleid="partition_for_var_log_audit" ownerid="RHEL-08-010542" disa="366" severity="low"> -- <VMSinfo VKey="230294" SVKey="230294r6277" VRelease="r627750"/> -- <title text="RHEL 8 must use a separate file system for the system audit data path."/> -- </overlay> -- <overlay owner="disastig" ruleid="partition_for_tmp" ownerid="RHEL-08-010543" disa="366" severity="medium"> -- <VMSinfo VKey="230295" SVKey="230295r6277" VRelease="r627750"/> -- <title text="A separate RHEL 8 filesystem must be used for the /tmp directory."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_disable_root_login" ownerid="RHEL-08-010550" disa="770" severity="medium"> -- <VMSinfo VKey="230296" SVKey="230296r6277" VRelease="r627750"/> -- <title text="RHEL 8 must not permit direct logons to the root account using remote access via SSH."/> -- </overlay> -- <overlay owner="disastig" ruleid="service_auditd_enabled" ownerid="RHEL-08-010560" disa="366" severity="medium"> -- <VMSinfo VKey="230297" SVKey="230297r6277" VRelease="r627750"/> -- <title text="The auditd service must be running in RHEL 8."/> -- </overlay> -- <overlay owner="disastig" ruleid="service_rsyslog_enabled" ownerid="RHEL-08-010561" disa="366" severity="medium"> -- <VMSinfo VKey="230298" SVKey="230298r6277" VRelease="r627750"/> -- <title text="The rsyslog service must be running in RHEL 8."/> -- </overlay> -- <overlay owner="disastig" ruleid="mount_option_home_nosuid" ownerid="RHEL-08-010570" disa="366" severity="medium"> -- <VMSinfo VKey="230299" SVKey="230299r6277" VRelease="r627750"/> -- <title text="RHEL 8 must prevent files with the setuid and setgid bit set from being executed on file systems that contain user home directories."/> -- </overlay> -- <overlay owner="disastig" ruleid="mount_option_boot_nosuid" ownerid="RHEL-08-010571" disa="366" severity="medium"> -- <VMSinfo VKey="230300" SVKey="230300r6277" VRelease="r627750"/> -- <title text="RHEL 8 must prevent files with the setuid and setgid bit set from being executed on the /boot directory."/> -- </overlay> -- <overlay owner="disastig" ruleid="mount_option_nodev_nonroot_local_partitions" ownerid="RHEL-08-010580" disa="366" severity="medium"> -- <VMSinfo VKey="230301" SVKey="230301r6277" VRelease="r627750"/> -- <title text="RHEL 8 must prevent special devices on non-root local partitions."/> -- </overlay> -- <overlay owner="disastig" ruleid="package_sendmail_removed" ownerid="RHEL-08-010590" disa="366" severity="medium"> -- <VMSinfo VKey="230302" SVKey="230302r6277" VRelease="r627750"/> -- <title text="RHEL 8 must prevent code from being executed on file systems that contain user home directories."/> -- </overlay> -- <overlay owner="disastig" ruleid="mount_option_nodev_removable_partitions" ownerid="RHEL-08-010600" disa="366" severity="medium"> -- <VMSinfo VKey="230303" SVKey="230303r6277" VRelease="r627750"/> -- <title text="RHEL 8 must prevent special devices on file systems that are used with removable media."/> -- </overlay> -- <overlay owner="disastig" ruleid="mount_option_noexec_removable_partitions" ownerid="RHEL-08-010610" disa="366" severity="medium"> -- <VMSinfo VKey="230304" SVKey="230304r6277" VRelease="r627750"/> -- <title text="RHEL 8 must prevent code from being executed on file systems that are used with removable media."/> -- </overlay> -- <overlay owner="disastig" ruleid="mount_option_nosuid_removable_partitions" ownerid="RHEL-08-010620" disa="366" severity="medium"> -- <VMSinfo VKey="230305" SVKey="230305r6277" VRelease="r627750"/> -- <title text="RHEL 8 must prevent files with the setuid and setgid bit set from being executed on file systems that are used with removable media."/> -- </overlay> -- <overlay owner="disastig" ruleid="mount_option_noexec_remote_filesystems" ownerid="RHEL-08-010630" disa="366" severity="medium"> -- <VMSinfo VKey="230306" SVKey="230306r6277" VRelease="r627750"/> -- <title text="RHEL 8 must prevent code from being executed on file systems that are imported via Network File System (NFS)."/> -- </overlay> -- <overlay owner="disastig" ruleid="mount_option_nodev_remote_filesystems" ownerid="RHEL-08-010640" disa="366" severity="medium"> -- <VMSinfo VKey="230307" SVKey="230307r6277" VRelease="r627750"/> -- <title text="RHEL 8 must prevent special devices on file systems that are imported via Network File System (NFS)."/> -- </overlay> -- <overlay owner="disastig" ruleid="mount_option_nosuid_remote_filesystems" ownerid="RHEL-08-010650" disa="366" severity="medium"> -- <VMSinfo VKey="230308" SVKey="230308r6277" VRelease="r627750"/> -- <title text="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)."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_user_dot_no_world_writable_programs" ownerid="RHEL-08-010660" disa="366" severity="medium"> -- <VMSinfo VKey="230309" SVKey="230309r6277" VRelease="r627750"/> -- <title text="Local RHEL 8 initialization files must not execute world-writable programs."/> -- </overlay> -- <overlay owner="disastig" ruleid="service_kdump_disabled" ownerid="RHEL-08-010670" disa="366" severity="medium"> -- <VMSinfo VKey="230310" SVKey="230310r6277" VRelease="r627750"/> -- <title text="RHEL 8 must disable kernel dumps unless needed."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_kernel_core_pattern" ownerid="RHEL-08-010671" disa="366" severity="medium"> -- <VMSinfo VKey="230311" SVKey="230311r6277" VRelease="r627750"/> -- <title text="RHEL 8 must disable the kernel.core_pattern."/> -- </overlay> -- <overlay owner="disastig" ruleid="service_systemd-coredump_disabled" ownerid="RHEL-08-010672" disa="366" severity="medium"> -- <VMSinfo VKey="230312" SVKey="230312r6277" VRelease="r627750"/> -- <title text="RHEL 8 must disable acquiring, saving, and processing core dumps."/> -- </overlay> -- <overlay owner="disastig" ruleid="disable_users_coredumps" ownerid="RHEL-08-010673" disa="366" severity="medium"> -- <VMSinfo VKey="230313" SVKey="230313r6277" VRelease="r627750"/> -- <title text="RHEL 8 must disable core dumps for all users."/> -- </overlay> -- <overlay owner="disastig" ruleid="coredump_disable_storage" ownerid="RHEL-08-010674" disa="366" severity="medium"> -- <VMSinfo VKey="230314" SVKey="230314r6277" VRelease="r627750"/> -- <title text="RHEL 8 must disable storing core dumps."/> -- </overlay> -- <overlay owner="disastig" ruleid="coredump_disable_backtraces" ownerid="RHEL-08-010675" disa="366" severity="medium"> -- <VMSinfo VKey="230315" SVKey="230315r6277" VRelease="r627750"/> -- <title text="RHEL 8 must disable core dump backtraces."/> -- </overlay> -- <overlay owner="disastig" ruleid="network_configure_name_resolution" ownerid="RHEL-08-010680" disa="366" severity="medium"> -- <VMSinfo VKey="230316" SVKey="230316r6277" VRelease="r627750"/> -- <title text="For RHEL 8 systems using Domain Name Servers (DNS) resolution, at least two name servers must be configured."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_user_home_paths_only" ownerid="RHEL-08-010690" disa="366" severity="medium"> -- <VMSinfo VKey="230317" SVKey="230317r6277" VRelease="r627750"/> -- <title text="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."/> -- </overlay> -- <overlay owner="disastig" ruleid="dir_perms_world_writable_root_owned" ownerid="RHEL-08-010700" disa="366" severity="medium"> -- <VMSinfo VKey="230318" SVKey="230318r6277" VRelease="r627750"/> -- <title text="All RHEL 8 world-writable directories must be owned by root, sys, bin, or an application group."/> -- </overlay> -- <overlay owner="disastig" ruleid="package_sendmail_removed" ownerid="RHEL-08-010710" disa="366" severity="medium"> -- <VMSinfo VKey="230319" SVKey="230319r6277" VRelease="r627750"/> -- <title text="All RHEL 8 world-writable directories must be group-owned by root, sys, bin, or an application group."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_user_interactive_home_directory_defined" ownerid="RHEL-08-010720" disa="366" severity="medium"> -- <VMSinfo VKey="230320" SVKey="230320r6277" VRelease="r627750"/> -- <title text="All RHEL 8 local interactive users must have a home directory assigned in the /etc/passwd file."/> -- </overlay> -- <overlay owner="disastig" ruleid="file_permissions_home_directories" ownerid="RHEL-08-010730" disa="366" severity="medium"> -- <VMSinfo VKey="230321" SVKey="230321r6277" VRelease="r627750"/> -- <title text="All RHEL 8 local interactive user home directories must have mode 0750 or less permissive."/> -- </overlay> -- <overlay owner="disastig" ruleid="file_groupownership_home_directories" ownerid="RHEL-08-010740" disa="366" severity="medium"> -- <VMSinfo VKey="230322" SVKey="230322r6277" VRelease="r627750"/> -- <title text="All RHEL 8 local interactive user home directories must be group-owned by the home directory owner’s primary group."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_user_interactive_home_directory_exists" ownerid="RHEL-08-010750" disa="366" severity="medium"> -- <VMSinfo VKey="230323" SVKey="230323r6277" VRelease="r627750"/> -- <title text="All RHEL 8 local interactive user home directories defined in the /etc/passwd file must exist."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_have_homedir_login_defs" ownerid="RHEL-08-010760" disa="366" severity="medium"> -- <VMSinfo VKey="230324" SVKey="230324r6277" VRelease="r627750"/> -- <title text="All RHEL 8 local interactive user accounts must be assigned a home directory upon creation."/> -- </overlay> -- <overlay owner="disastig" ruleid="file_permission_user_init_files" ownerid="RHEL-08-010770" disa="366" severity="medium"> -- <VMSinfo VKey="230325" SVKey="230325r6277" VRelease="r627750"/> -- <title text="All RHEL 8 local initialization files must have mode 0740 or less permissive."/> -- </overlay> -- <overlay owner="disastig" ruleid="no_files_unowned_by_user" ownerid="RHEL-08-010780" disa="366" severity="medium"> -- <VMSinfo VKey="230326" SVKey="230326r6277" VRelease="r627750"/> -- <title text="All RHEL 8 local files and directories must have a valid owner."/> -- </overlay> -- <overlay owner="disastig" ruleid="file_permissions_ungroupowned" ownerid="RHEL-08-010790" disa="366" severity="medium"> -- <VMSinfo VKey="230327" SVKey="230327r6277" VRelease="r627750"/> -- <title text="All RHEL 8 local files and directories must have a valid group owner."/> -- </overlay> -- <overlay owner="disastig" ruleid="partition_for_home" ownerid="RHEL-08-010800" disa="366" severity="medium"> -- <VMSinfo VKey="230328" SVKey="230328r6277" VRelease="r627750"/> -- <title text="A separate RHEL 8 filesystem must be used for user home directories (such as /home or an equivalent)."/> -- </overlay> -- <overlay owner="disastig" ruleid="gnome_gdm_disable_automatic_login" ownerid="RHEL-08-010820" disa="366" severity="high"> -- <VMSinfo VKey="230329" SVKey="230329r6277" VRelease="r627750"/> -- <title text="Unattended or automatic logon via the RHEL 8 graphical user interface must not be allowed."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_do_not_permit_user_env" ownerid="RHEL-08-010830" disa="366" severity="medium"> -- <VMSinfo VKey="230330" SVKey="230330r6468" VRelease="r646870"/> -- <title text="RHEL 8 must not allow users to override SSH environment variables."/> -- </overlay> -- <overlay owner="disastig" ruleid="account_temp_expire_date" ownerid="RHEL-08-020000" disa="16" severity="medium"> -- <VMSinfo VKey="230331" SVKey="230331r6277" VRelease="r627750"/> -- <title text="RHEL 8 temporary user accounts must be provisioned with an expiration time of 72 hours or less."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_passwords_pam_faillock_deny" ownerid="RHEL-08-020010" disa="44" severity="medium"> -- <VMSinfo VKey="230332" SVKey="230332r6277" VRelease="r627750"/> -- <title text="RHEL 8 must automatically lock an account when three unsuccessful logon attempts occur."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_passwords_pam_faillock_deny" ownerid="RHEL-08-020011" disa="44" severity="medium"> -- <VMSinfo VKey="230333" SVKey="230333r6277" VRelease="r627750"/> -- <title text="RHEL 8 must automatically lock an account when three unsuccessful logon attempts occur."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_passwords_pam_faillock_interval" ownerid="RHEL-08-020012" disa="44" severity="medium"> -- <VMSinfo VKey="230334" SVKey="230334r6277" VRelease="r627750"/> -- <title text="RHEL 8 must automatically lock an account when three unsuccessful logon attempts occur during a 15-minute time period."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_passwords_pam_faillock_deny" ownerid="RHEL-08-020013" disa="44" severity="medium"> -- <VMSinfo VKey="230335" SVKey="230335r6277" VRelease="r627750"/> -- <title text="RHEL 8 must automatically lock an account when three unsuccessful logon attempts occur during a 15-minute time period."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_passwords_pam_faillock_unlock_time" ownerid="RHEL-08-020014" disa="44" severity="medium"> -- <VMSinfo VKey="230336" SVKey="230336r6277" VRelease="r627750"/> -- <title text="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."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_passwords_pam_faillock_deny" ownerid="RHEL-08-020015" disa="44" severity="medium"> -- <VMSinfo VKey="230337" SVKey="230337r6277" VRelease="r627750"/> -- <title text="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."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_passwords_pam_faillock_deny" ownerid="RHEL-08-020016" disa="44" severity="medium"> -- <VMSinfo VKey="230338" SVKey="230338r6277" VRelease="r627750"/> -- <title text="RHEL 8 must ensure account lockouts persist."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_passwords_pam_faillock_deny" ownerid="RHEL-08-020017" disa="44" severity="medium"> -- <VMSinfo VKey="230339" SVKey="230339r6277" VRelease="r627750"/> -- <title text="RHEL 8 must ensure account lockouts persist."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_passwords_pam_faillock_deny" ownerid="RHEL-08-020018" disa="44" severity="medium"> -- <VMSinfo VKey="230340" SVKey="230340r6277" VRelease="r627750"/> -- <title text="RHEL 8 must prevent system messages from being presented when three unsuccessful logon attempts occur."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_passwords_pam_faillock_deny" ownerid="RHEL-08-020019" disa="44" severity="medium"> -- <VMSinfo VKey="230341" SVKey="230341r6277" VRelease="r627750"/> -- <title text="RHEL 8 must prevent system messages from being presented when three unsuccessful logon attempts occur."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_passwords_pam_faillock_deny" ownerid="RHEL-08-020020" disa="44" severity="medium"> -- <VMSinfo VKey="230342" SVKey="230342r6468" VRelease="r646872"/> -- <title text="RHEL 8 must log user name information when unsuccessful logon attempts occur."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_passwords_pam_faillock_deny" ownerid="RHEL-08-020021" disa="44" severity="medium"> -- <VMSinfo VKey="230343" SVKey="230343r6277" VRelease="r627750"/> -- <title text="RHEL 8 must log user name information when unsuccessful logon attempts occur."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_passwords_pam_faillock_deny_root" ownerid="RHEL-08-020022" disa="44" severity="medium"> -- <VMSinfo VKey="230344" SVKey="230344r6468" VRelease="r646874"/> -- <title text="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."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_passwords_pam_faillock_deny" ownerid="RHEL-08-020023" disa="44" severity="medium"> -- <VMSinfo VKey="230345" SVKey="230345r6277" VRelease="r627750"/> -- <title text="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."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_max_concurrent_login_sessions" ownerid="RHEL-08-020024" disa="54" severity="low"> -- <VMSinfo VKey="230346" SVKey="230346r6277" VRelease="r627750"/> -- <title text="RHEL 8 must limit the number of concurrent sessions to ten for all accounts and/or account types."/> -- </overlay> -- <overlay owner="disastig" ruleid="dconf_gnome_screensaver_lock_enabled" ownerid="RHEL-08-020030" disa="56" severity="medium"> -- <VMSinfo VKey="230347" SVKey="230347r6277" VRelease="r627750"/> -- <title text="RHEL 8 must enable a user session lock until that user re-establishes access using established identification and authentication procedures for graphical user sessions."/> -- </overlay> -- <overlay owner="disastig" ruleid="configure_tmux_lock_command" ownerid="RHEL-08-020040" disa="56" severity="medium"> -- <VMSinfo VKey="230348" SVKey="230348r6277" VRelease="r627750"/> -- <title text="RHEL 8 must enable a user session lock until that user re-establishes access using established identification and authentication procedures for command line sessions."/> -- </overlay> -- <overlay owner="disastig" ruleid="configure_bashrc_exec_tmux" ownerid="RHEL-08-020041" disa="56" severity="medium"> -- <VMSinfo VKey="230349" SVKey="230349r6277" VRelease="r627750"/> -- <title text="RHEL 8 must ensure session control is automatically started at shell initialization."/> -- </overlay> -- <overlay owner="disastig" ruleid="no_tmux_in_shells" ownerid="RHEL-08-020042" disa="56" severity="low"> -- <VMSinfo VKey="230350" SVKey="230350r6277" VRelease="r627750"/> -- <title text="RHEL 8 must prevent users from disabling session control mechanisms."/> -- </overlay> -- <overlay owner="disastig" ruleid="dconf_gnome_lock_screen_on_smartcard_removal" ownerid="RHEL-08-020050" disa="56" severity="medium"> -- <VMSinfo VKey="230351" SVKey="230351r6277" VRelease="r627750"/> -- <title text="RHEL 8 must be able to initiate directly a session lock for all connection types using smartcard when the smartcard is removed."/> -- </overlay> -- <overlay owner="disastig" ruleid="dconf_gnome_screensaver_idle_delay" ownerid="RHEL-08-020060" disa="57" severity="medium"> -- <VMSinfo VKey="230352" SVKey="230352r6468" VRelease="r646876"/> -- <title text="RHEL 8 must automatically lock graphical user sessions after 15 minutes of inactivity."/> -- </overlay> -- <overlay owner="disastig" ruleid="configure_tmux_lock_after_time" ownerid="RHEL-08-020070" disa="57" severity="medium"> -- <VMSinfo VKey="230353" SVKey="230353r6277" VRelease="r627750"/> -- <title text="RHEL 8 must automatically lock command line user sessions after 15 minutes of inactivity."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="RHEL-08-020080" disa="57" severity="medium"> -- <VMSinfo VKey="230354" SVKey="230354r6277" VRelease="r627750"/> -- <title text="RHEL 8 must prevent a user from overriding graphical user interface settings."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="RHEL-08-020090" disa="187" severity="medium"> -- <VMSinfo VKey="230355" SVKey="230355r6277" VRelease="r627750"/> -- <title text="RHEL 8 must map the authenticated identity to the user or group account for PKI-based authentication."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_password_pam_retry" ownerid="RHEL-08-020100" disa="192" severity="medium"> -- <VMSinfo VKey="230356" SVKey="230356r6277" VRelease="r627750"/> -- <title text="RHEL 8 must ensure a password complexity module is enabled."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_password_pam_ucredit" ownerid="RHEL-08-020110" disa="192" severity="medium"> -- <VMSinfo VKey="230357" SVKey="230357r6277" VRelease="r627750"/> -- <title text="RHEL 8 must enforce password complexity by requiring that at least one uppercase character be used."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_password_pam_lcredit" ownerid="RHEL-08-020120" disa="193" severity="medium"> -- <VMSinfo VKey="230358" SVKey="230358r6277" VRelease="r627750"/> -- <title text="RHEL 8 must enforce password complexity by requiring that at least one lower-case character be used."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_password_pam_dcredit" ownerid="RHEL-08-020130" disa="194" severity="medium"> -- <VMSinfo VKey="230359" SVKey="230359r6277" VRelease="r627750"/> -- <title text="RHEL 8 must enforce password complexity by requiring that at least one numeric character be used."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_password_pam_maxclassrepeat" ownerid="RHEL-08-020140" disa="195" severity="medium"> -- <VMSinfo VKey="230360" SVKey="230360r6277" VRelease="r627750"/> -- <title text="RHEL 8 must require the maximum number of repeating characters of the same character class be limited to four when passwords are changed."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_password_pam_maxrepeat" ownerid="RHEL-08-020150" disa="195" severity="medium"> -- <VMSinfo VKey="230361" SVKey="230361r6277" VRelease="r627750"/> -- <title text="RHEL 8 must require the maximum number of repeating characters be limited to three when passwords are changed."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_password_pam_minclass" ownerid="RHEL-08-020160" disa="195" severity="medium"> -- <VMSinfo VKey="230362" SVKey="230362r6277" VRelease="r627750"/> -- <title text="RHEL 8 must require the change of at least four character classes when passwords are changed."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_password_pam_difok" ownerid="RHEL-08-020170" disa="195" severity="medium"> -- <VMSinfo VKey="230363" SVKey="230363r6277" VRelease="r627750"/> -- <title text="RHEL 8 must require the change of at least 8 characters when passwords are changed."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_password_set_min_life_existing" ownerid="RHEL-08-020180" disa="198" severity="medium"> -- <VMSinfo VKey="230364" SVKey="230364r6277" VRelease="r627750"/> -- <title text="RHEL 8 passwords must have a 24 hours/1 day minimum password lifetime restriction in /etc/shadow."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_minimum_age_login_defs" ownerid="RHEL-08-020190" disa="198" severity="medium"> -- <VMSinfo VKey="230365" SVKey="230365r6277" VRelease="r627750"/> -- <title text="RHEL 8 passwords for new users or password changes must have a 24 hours/1 day minimum password lifetime restriction in /etc/logins.def."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_maximum_age_login_defs" ownerid="RHEL-08-020200" disa="199" severity="medium"> -- <VMSinfo VKey="230366" SVKey="230366r6468" VRelease="r646878"/> -- <title text="RHEL 8 user account passwords must have a 60-day maximum password lifetime restriction."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_password_set_max_life_existing" ownerid="RHEL-08-020210" disa="199" severity="medium"> -- <VMSinfo VKey="230367" SVKey="230367r6277" VRelease="r627750"/> -- <title text="RHEL 8 user account passwords must be configured so that existing passwords are restricted to a 60-day maximum lifetime."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_password_pam_unix_remember" ownerid="RHEL-08-020220" disa="200" severity="medium"> -- <VMSinfo VKey="230368" SVKey="230368r6277" VRelease="r627750"/> -- <title text="RHEL 8 passwords must be prohibited from reuse for a minimum of five generations."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_password_pam_minlen" ownerid="RHEL-08-020230" disa="205" severity="medium"> -- <VMSinfo VKey="230369" SVKey="230369r6277" VRelease="r627750"/> -- <title text="RHEL 8 passwords must have a minimum of 15 characters."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_password_minlen_login_defs" ownerid="RHEL-08-020231" disa="205" severity="medium"> -- <VMSinfo VKey="230370" SVKey="230370r6277" VRelease="r627750"/> -- <title text="RHEL 8 passwords for new users must have a minimum of 15 characters."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="RHEL-08-020240" disa="764" severity="medium"> -- <VMSinfo VKey="230371" SVKey="230371r6277" VRelease="r627750"/> -- <title text="RHEL 8 duplicate User IDs (UIDs) must not exist for interactive users."/> -- </overlay> -- <overlay owner="disastig" ruleid="sssd_enable_smartcards" ownerid="RHEL-08-020250" disa="765" severity="medium"> -- <VMSinfo VKey="230372" SVKey="230372r6277" VRelease="r627750"/> -- <title text="RHEL 8 must implement smart card logon for multifactor authentication for access to interactive accounts."/> -- </overlay> -- <overlay owner="disastig" ruleid="account_disable_post_pw_expiration" ownerid="RHEL-08-020260" disa="795" severity="medium"> -- <VMSinfo VKey="230373" SVKey="230373r6277" VRelease="r627750"/> -- <title text="RHEL 8 account identifiers (individuals, groups, roles, and devices) must be disabled after 35 days of inactivity."/> -- </overlay> -- <overlay owner="disastig" ruleid="account_temp_expire_date" ownerid="RHEL-08-020270" disa="1682" severity="medium"> -- <VMSinfo VKey="230374" SVKey="230374r6277" VRelease="r627750"/> -- <title text="RHEL 8 emergency accounts must be automatically removed or disabled after the crisis is resolved or within 72 hours."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_password_pam_ocredit" ownerid="RHEL-08-020280" disa="1619" severity="medium"> -- <VMSinfo VKey="230375" SVKey="230375r6277" VRelease="r627750"/> -- <title text="All RHEL 8 passwords must contain at least one special character."/> -- </overlay> -- <overlay owner="disastig" ruleid="sssd_offline_cred_expiration" ownerid="RHEL-08-020290" disa="2007" severity="medium"> -- <VMSinfo VKey="230376" SVKey="230376r6277" VRelease="r627750"/> -- <title text="RHEL 8 must prohibit the use of cached authentications after one day."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_password_pam_retry" ownerid="RHEL-08-020300" disa="366" severity="medium"> -- <VMSinfo VKey="230377" SVKey="230377r6277" VRelease="r627750"/> -- <title text="RHEL 8 must prevent the use of dictionary words for passwords."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_logon_fail_delay" ownerid="RHEL-08-020310" disa="366" severity="medium"> -- <VMSinfo VKey="230378" SVKey="230378r6277" VRelease="r627750"/> -- <title text="RHEL 8 must enforce a delay of at least four seconds between logon prompts following a failed logon attempt."/> -- </overlay> -- <overlay owner="disastig" ruleid="package_sendmail_removed" ownerid="RHEL-08-020320" disa="366" severity="medium"> -- <VMSinfo VKey="230379" SVKey="230379r6277" VRelease="r627750"/> -- <title text="RHEL 8 must not have unnecessary accounts."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_disable_empty_passwords" ownerid="RHEL-08-020330" disa="366" severity="high"> -- <VMSinfo VKey="230380" SVKey="230380r6277" VRelease="r627750"/> -- <title text="RHEL 8 must not have accounts configured with blank or null passwords."/> -- </overlay> -- <overlay owner="disastig" ruleid="display_login_attempts" ownerid="RHEL-08-020340" disa="366" severity="low"> -- <VMSinfo VKey="230381" SVKey="230381r6277" VRelease="r627750"/> -- <title text="RHEL 8 must display the date and time of the last successful account logon upon logon."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_print_last_log" ownerid="RHEL-08-020350" disa="366" severity="medium"> -- <VMSinfo VKey="230382" SVKey="230382r6277" VRelease="r627750"/> -- <title text="RHEL 8 must display the date and time of the last successful account logon upon an SSH logon."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_umask_etc_login_defs" ownerid="RHEL-08-020351" disa="366" severity="medium"> -- <VMSinfo VKey="230383" SVKey="230383r6277" VRelease="r627750"/> -- <title text="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."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_umask_interactive_users" ownerid="RHEL-08-020352" disa="366" severity="medium"> -- <VMSinfo VKey="230384" SVKey="230384r6277" VRelease="r627750"/> -- <title text="RHEL 8 must set the umask value to 077 for all local interactive user accounts."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_umask_etc_bashrc" ownerid="RHEL-08-020353" disa="366" severity="medium"> -- <VMSinfo VKey="230385" SVKey="230385r6277" VRelease="r627750"/> -- <title text="RHEL 8 must define default permissions for logon and non-logon shells."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="RHEL-08-030000" disa="2233" severity="medium"> -- <VMSinfo VKey="230386" SVKey="230386r6277" VRelease="r627750"/> -- <title text="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."/> -- </overlay> -- <overlay owner="disastig" ruleid="rsyslog_cron_logging" ownerid="RHEL-08-030010" disa="366" severity="medium"> -- <VMSinfo VKey="230387" SVKey="230387r6277" VRelease="r627750"/> -- <title text="Cron logging must be implemented in RHEL 8."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_data_retention_action_mail_acct" ownerid="RHEL-08-030020" disa="139" severity="medium"> -- <VMSinfo VKey="230388" SVKey="230388r6277" VRelease="r627750"/> -- <title text="The RHEL 8 System Administrator (SA) and Information System Security Officer (ISSO) (at a minimum) must be alerted of an audit processing failure event."/> -- </overlay> -- <overlay owner="disastig" ruleid="postfix_client_configure_mail_alias" ownerid="RHEL-08-030030" disa="139" severity="medium"> -- <VMSinfo VKey="230389" SVKey="230389r6277" VRelease="r627750"/> -- <title text="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."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_data_disk_error_action" ownerid="RHEL-08-030040" disa="140" severity="medium"> -- <VMSinfo VKey="230390" SVKey="230390r6277" VRelease="r627750"/> -- <title text="The RHEL 8 System must take appropriate action when an audit processing failure occurs."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_data_retention_max_log_file_action" ownerid="RHEL-08-030050" disa="140" severity="medium"> -- <VMSinfo VKey="230391" SVKey="230391r6277" VRelease="r627750"/> -- <title text="The RHEL 8 System Administrator (SA) and Information System Security Officer (ISSO) (at a minimum) must be alerted when the audit storage volume is full."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_data_disk_full_action" ownerid="RHEL-08-030060" disa="140" severity="medium"> -- <VMSinfo VKey="230392" SVKey="230392r6277" VRelease="r627750"/> -- <title text="The RHEL 8 audit system must take appropriate action when the audit storage volume is full."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_local_events" ownerid="RHEL-08-030061" disa="366" severity="medium"> -- <VMSinfo VKey="230393" SVKey="230393r6277" VRelease="r627750"/> -- <title text="The RHEL 8 audit system must audit local events."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_name_format" ownerid="RHEL-08-030062" disa="1851" severity="medium"> -- <VMSinfo VKey="230394" SVKey="230394r6277" VRelease="r627750"/> -- <title text="RHEL 8 must label all off-loaded audit logs before sending them to the central log server."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_log_format" ownerid="RHEL-08-030063" disa="366" severity="low"> -- <VMSinfo VKey="230395" SVKey="230395r6277" VRelease="r627750"/> -- <title text="RHEL 8 must resolve audit information before writing to disk."/> -- </overlay> -- <overlay owner="disastig" ruleid="file_permissions_var_log_audit" ownerid="RHEL-08-030070" disa="162" severity="medium"> -- <VMSinfo VKey="230396" SVKey="230396r6277" VRelease="r627750"/> -- <title text="RHEL 8 audit logs must have a mode of 0600 or less permissive to prevent unauthorized read access."/> -- </overlay> -- <overlay owner="disastig" ruleid="file_ownership_var_log_audit" ownerid="RHEL-08-030080" disa="162" severity="medium"> -- <VMSinfo VKey="230397" SVKey="230397r6277" VRelease="r627750"/> -- <title text="RHEL 8 audit logs must be owned by root to prevent unauthorized read access."/> -- </overlay> -- <overlay owner="disastig" ruleid="file_permissions_var_log_audit" ownerid="RHEL-08-030090" disa="162" severity="medium"> -- <VMSinfo VKey="230398" SVKey="230398r6277" VRelease="r627750"/> -- <title text="RHEL 8 audit logs must be group-owned by root to prevent unauthorized read access."/> -- </overlay> -- <overlay owner="disastig" ruleid="file_permissions_var_log_audit" ownerid="RHEL-08-030100" disa="162" severity="medium"> -- <VMSinfo VKey="230399" SVKey="230399r6277" VRelease="r627750"/> -- <title text="RHEL 8 audit log directory must be owned by root to prevent unauthorized read access."/> -- </overlay> -- <overlay owner="disastig" ruleid="file_permissions_var_log_audit" ownerid="RHEL-08-030110" disa="162" severity="medium"> -- <VMSinfo VKey="230400" SVKey="230400r6277" VRelease="r627750"/> -- <title text="RHEL 8 audit log directory must be group-owned by root to prevent unauthorized read access."/> -- </overlay> -- <overlay owner="disastig" ruleid="directory_permissions_var_log_audit" ownerid="RHEL-08-030120" disa="162" severity="medium"> -- <VMSinfo VKey="230401" SVKey="230401r6277" VRelease="r627750"/> -- <title text="RHEL 8 audit log directory must have a mode of 0700 or less permissive to prevent unauthorized read access."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_immutable" ownerid="RHEL-08-030121" disa="162" severity="medium"> -- <VMSinfo VKey="230402" SVKey="230402r6277" VRelease="r627750"/> -- <title text="RHEL 8 audit system must protect auditing rules from unauthorized change."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_immutable_login_uids" ownerid="RHEL-08-030122" disa="162" severity="medium"> -- <VMSinfo VKey="230403" SVKey="230403r6277" VRelease="r627750"/> -- <title text="RHEL 8 audit system must protect logon UIDs from unauthorized change."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_usergroup_modification_shadow" ownerid="RHEL-08-030130" disa="169" severity="medium"> -- <VMSinfo VKey="230404" SVKey="230404r6277" VRelease="r627750"/> -- <title text="RHEL 8 must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/shadow."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_usergroup_modification_opasswd" ownerid="RHEL-08-030140" disa="169" severity="medium"> -- <VMSinfo VKey="230405" SVKey="230405r6277" VRelease="r627750"/> -- <title text="RHEL 8 must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/security/opasswd."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_usergroup_modification_passwd" ownerid="RHEL-08-030150" disa="169" severity="medium"> -- <VMSinfo VKey="230406" SVKey="230406r6277" VRelease="r627750"/> -- <title text="RHEL 8 must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/passwd."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_usergroup_modification_gshadow" ownerid="RHEL-08-030160" disa="169" severity="medium"> -- <VMSinfo VKey="230407" SVKey="230407r6277" VRelease="r627750"/> -- <title text="RHEL 8 must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/gshadow."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_usergroup_modification_group" ownerid="RHEL-08-030170" disa="169" severity="medium"> -- <VMSinfo VKey="230408" SVKey="230408r6277" VRelease="r627750"/> -- <title text="RHEL 8 must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/group."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_local_events" ownerid="RHEL-08-030171" disa="169" severity="medium"> -- <VMSinfo VKey="230409" SVKey="230409r6277" VRelease="r627750"/> -- <title text="RHEL 8 must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/sudoers."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_sysadmin_actions" ownerid="RHEL-08-030172" disa="169" severity="medium"> -- <VMSinfo VKey="230410" SVKey="230410r6277" VRelease="r627750"/> -- <title text="RHEL 8 must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/sudoers.d/."/> -- </overlay> -- <overlay owner="disastig" ruleid="package_audit_installed" ownerid="RHEL-08-030180" disa="169" severity="medium"> -- <VMSinfo VKey="230411" SVKey="230411r6468" VRelease="r646881"/> -- <title text="RHEL 8 audit records must contain information to establish what type of events occurred, the source of events, where events occurred, and the outcome of events."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_local_events" ownerid="RHEL-08-030190" disa="169" severity="medium"> -- <VMSinfo VKey="230412" SVKey="230412r6277" VRelease="r627750"/> -- <title text="Successful/unsuccessful uses of the su command in RHEL 8 must generate an audit record."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_local_events" ownerid="RHEL-08-030200" disa="169" severity="medium"> -- <VMSinfo VKey="230413" SVKey="230413r6277" VRelease="r627750"/> -- <title text="The RHEL 8 audit system must be configured to audit any usage of the lremovexattr system call."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_local_events" ownerid="RHEL-08-030210" disa="169" severity="medium"> -- <VMSinfo VKey="230414" SVKey="230414r6277" VRelease="r627750"/> -- <title text="The RHEL 8 audit system must be configured to audit any usage of the removexattr system call."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_local_events" ownerid="RHEL-08-030220" disa="169" severity="medium"> -- <VMSinfo VKey="230415" SVKey="230415r6277" VRelease="r627750"/> -- <title text="The RHEL 8 audit system must be configured to audit any usage of the lsetxattr system call."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_local_events" ownerid="RHEL-08-030230" disa="169" severity="medium"> -- <VMSinfo VKey="230416" SVKey="230416r6277" VRelease="r627750"/> -- <title text="The RHEL 8 audit system must be configured to audit any usage of the fsetxattr system call."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_local_events" ownerid="RHEL-08-030240" disa="169" severity="medium"> -- <VMSinfo VKey="230417" SVKey="230417r6277" VRelease="r627750"/> -- <title text="The RHEL 8 audit system must be configured to audit any usage of the fremovexattr system call."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_local_events" ownerid="RHEL-08-030250" disa="169" severity="medium"> -- <VMSinfo VKey="230418" SVKey="230418r6277" VRelease="r627750"/> -- <title text="Successful/unsuccessful uses of the chage command in RHEL 8 must generate an audit record."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_local_events" ownerid="RHEL-08-030260" disa="169" severity="medium"> -- <VMSinfo VKey="230419" SVKey="230419r6277" VRelease="r627750"/> -- <title text="Successful/unsuccessful uses of the chcon command in RHEL 8 must generate an audit record."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_local_events" ownerid="RHEL-08-030270" disa="169" severity="medium"> -- <VMSinfo VKey="230420" SVKey="230420r6277" VRelease="r627750"/> -- <title text="The RHEL 8 audit system must be configured to audit any usage of the setxattr system call."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_local_events" ownerid="RHEL-08-030280" disa="169" severity="medium"> -- <VMSinfo VKey="230421" SVKey="230421r6277" VRelease="r627750"/> -- <title text="Successful/unsuccessful uses of the ssh-agent in RHEL 8 must generate an audit record."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_local_events" ownerid="RHEL-08-030290" disa="169" severity="medium"> -- <VMSinfo VKey="230422" SVKey="230422r6277" VRelease="r627750"/> -- <title text="Successful/unsuccessful uses of the passwd command in RHEL 8 must generate an audit record."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_local_events" ownerid="RHEL-08-030300" disa="169" severity="medium"> -- <VMSinfo VKey="230423" SVKey="230423r6277" VRelease="r627750"/> -- <title text="Successful/unsuccessful uses of the mount command in RHEL 8 must generate an audit record."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_local_events" ownerid="RHEL-08-030301" disa="169" severity="medium"> -- <VMSinfo VKey="230424" SVKey="230424r6277" VRelease="r627750"/> -- <title text="Successful/unsuccessful uses of the umount command in RHEL 8 must generate an audit record."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_local_events" ownerid="RHEL-08-030302" disa="169" severity="medium"> -- <VMSinfo VKey="230425" SVKey="230425r6277" VRelease="r627750"/> -- <title text="Successful/unsuccessful uses of the mount syscall in RHEL 8 must generate an audit record."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_local_events" ownerid="RHEL-08-030310" disa="169" severity="medium"> -- <VMSinfo VKey="230426" SVKey="230426r6277" VRelease="r627750"/> -- <title text="Successful/unsuccessful uses of the unix_update in RHEL 8 must generate an audit record."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_local_events" ownerid="RHEL-08-030311" disa="169" severity="medium"> -- <VMSinfo VKey="230427" SVKey="230427r6277" VRelease="r627750"/> -- <title text="Successful/unsuccessful uses of postdrop in RHEL 8 must generate an audit record."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_local_events" ownerid="RHEL-08-030312" disa="169" severity="medium"> -- <VMSinfo VKey="230428" SVKey="230428r6277" VRelease="r627750"/> -- <title text="Successful/unsuccessful uses of postqueue in RHEL 8 must generate an audit record."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_local_events" ownerid="RHEL-08-030313" disa="169" severity="medium"> -- <VMSinfo VKey="230429" SVKey="230429r6277" VRelease="r627750"/> -- <title text="Successful/unsuccessful uses of semanage in RHEL 8 must generate an audit record."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_local_events" ownerid="RHEL-08-030314" disa="169" severity="medium"> -- <VMSinfo VKey="230430" SVKey="230430r6277" VRelease="r627750"/> -- <title text="Successful/unsuccessful uses of setfiles in RHEL 8 must generate an audit record."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_local_events" ownerid="RHEL-08-030315" disa="169" severity="medium"> -- <VMSinfo VKey="230431" SVKey="230431r6277" VRelease="r627750"/> -- <title text="Successful/unsuccessful uses of userhelper in RHEL 8 must generate an audit record."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_local_events" ownerid="RHEL-08-030316" disa="169" severity="medium"> -- <VMSinfo VKey="230432" SVKey="230432r6277" VRelease="r627750"/> -- <title text="Successful/unsuccessful uses of setsebool in RHEL 8 must generate an audit record."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_local_events" ownerid="RHEL-08-030317" disa="169" severity="medium"> -- <VMSinfo VKey="230433" SVKey="230433r6277" VRelease="r627750"/> -- <title text="Successful/unsuccessful uses of unix_chkpwd in RHEL 8 must generate an audit record."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_local_events" ownerid="RHEL-08-030320" disa="169" severity="medium"> -- <VMSinfo VKey="230434" SVKey="230434r6277" VRelease="r627750"/> -- <title text="Successful/unsuccessful uses of the ssh-keysign in RHEL 8 must generate an audit record."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_local_events" ownerid="RHEL-08-030330" disa="169" severity="medium"> -- <VMSinfo VKey="230435" SVKey="230435r6277" VRelease="r627750"/> -- <title text="Successful/unsuccessful uses of the setfacl command in RHEL 8 must generate an audit record."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_local_events" ownerid="RHEL-08-030340" disa="169" severity="medium"> -- <VMSinfo VKey="230436" SVKey="230436r6277" VRelease="r627750"/> -- <title text="Successful/unsuccessful uses of the pam_timestamp_check command in RHEL 8 must generate an audit record."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_local_events" ownerid="RHEL-08-030350" disa="169" severity="medium"> -- <VMSinfo VKey="230437" SVKey="230437r6277" VRelease="r627750"/> -- <title text="Successful/unsuccessful uses of the newgrp command in RHEL 8 must generate an audit record."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_local_events" ownerid="RHEL-08-030360" disa="169" severity="medium"> -- <VMSinfo VKey="230438" SVKey="230438r6277" VRelease="r627750"/> -- <title text="Successful/unsuccessful uses of the init_module command in RHEL 8 must generate an audit record."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_local_events" ownerid="RHEL-08-030361" disa="169" severity="medium"> -- <VMSinfo VKey="230439" SVKey="230439r6277" VRelease="r627750"/> -- <title text="Successful/unsuccessful uses of the rename command in RHEL 8 must generate an audit record."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_local_events" ownerid="RHEL-08-030362" disa="169" severity="medium"> -- <VMSinfo VKey="230440" SVKey="230440r6277" VRelease="r627750"/> -- <title text="Successful/unsuccessful uses of the renameat command in RHEL 8 must generate an audit record."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_local_events" ownerid="RHEL-08-030363" disa="169" severity="medium"> -- <VMSinfo VKey="230441" SVKey="230441r6277" VRelease="r627750"/> -- <title text="Successful/unsuccessful uses of the rmdir command in RHEL 8 must generate an audit record."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_local_events" ownerid="RHEL-08-030364" disa="169" severity="medium"> -- <VMSinfo VKey="230442" SVKey="230442r6277" VRelease="r627750"/> -- <title text="Successful/unsuccessful uses of the unlink command in RHEL 8 must generate an audit record."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_local_events" ownerid="RHEL-08-030365" disa="169" severity="medium"> -- <VMSinfo VKey="230443" SVKey="230443r6277" VRelease="r627750"/> -- <title text="Successful/unsuccessful uses of the unlinkat command in RHEL 8 must generate an audit record."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_local_events" ownerid="RHEL-08-030370" disa="169" severity="medium"> -- <VMSinfo VKey="230444" SVKey="230444r6277" VRelease="r627750"/> -- <title text="Successful/unsuccessful uses of the gpasswd command in RHEL 8 must generate an audit record."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_local_events" ownerid="RHEL-08-030380" disa="169" severity="medium"> -- <VMSinfo VKey="230445" SVKey="230445r6277" VRelease="r627750"/> -- <title text="Successful/unsuccessful uses of the finit_module command in RHEL 8 must generate an audit record."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_local_events" ownerid="RHEL-08-030390" disa="169" severity="medium"> -- <VMSinfo VKey="230446" SVKey="230446r6277" VRelease="r627750"/> -- <title text="Successful/unsuccessful uses of the delete_module command in RHEL 8 must generate an audit record."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_local_events" ownerid="RHEL-08-030400" disa="169" severity="medium"> -- <VMSinfo VKey="230447" SVKey="230447r6277" VRelease="r627750"/> -- <title text="Successful/unsuccessful uses of the crontab command in RHEL 8 must generate an audit record."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_local_events" ownerid="RHEL-08-030410" disa="169" severity="medium"> -- <VMSinfo VKey="230448" SVKey="230448r6277" VRelease="r627750"/> -- <title text="Successful/unsuccessful uses of the chsh command in RHEL 8 must generate an audit record."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_local_events" ownerid="RHEL-08-030420" disa="169" severity="medium"> -- <VMSinfo VKey="230449" SVKey="230449r6277" VRelease="r627750"/> -- <title text="Successful/unsuccessful uses of the truncate command in RHEL 8 must generate an audit record."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_local_events" ownerid="RHEL-08-030430" disa="169" severity="medium"> -- <VMSinfo VKey="230450" SVKey="230450r6277" VRelease="r627750"/> -- <title text="Successful/unsuccessful uses of the openat system call in RHEL 8 must generate an audit record."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_local_events" ownerid="RHEL-08-030440" disa="169" severity="medium"> -- <VMSinfo VKey="230451" SVKey="230451r6277" VRelease="r627750"/> -- <title text="Successful/unsuccessful uses of the open system call in RHEL 8 must generate an audit record."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_local_events" ownerid="RHEL-08-030450" disa="169" severity="medium"> -- <VMSinfo VKey="230452" SVKey="230452r6277" VRelease="r627750"/> -- <title text="Successful/unsuccessful uses of the open_by_handle_at system call in RHEL 8 must generate an audit record."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_local_events" ownerid="RHEL-08-030460" disa="169" severity="medium"> -- <VMSinfo VKey="230453" SVKey="230453r6277" VRelease="r627750"/> -- <title text="Successful/unsuccessful uses of the ftruncate command in RHEL 8 must generate an audit record."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_local_events" ownerid="RHEL-08-030470" disa="169" severity="medium"> -- <VMSinfo VKey="230454" SVKey="230454r6277" VRelease="r627750"/> -- <title text="Successful/unsuccessful uses of the creat system call in RHEL 8 must generate an audit record."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_local_events" ownerid="RHEL-08-030480" disa="169" severity="medium"> -- <VMSinfo VKey="230455" SVKey="230455r6277" VRelease="r627750"/> -- <title text="Successful/unsuccessful uses of the chown command in RHEL 8 must generate an audit record."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_local_events" ownerid="RHEL-08-030490" disa="169" severity="medium"> -- <VMSinfo VKey="230456" SVKey="230456r6277" VRelease="r627750"/> -- <title text="Successful/unsuccessful uses of the chmod command in RHEL 8 must generate an audit record."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_local_events" ownerid="RHEL-08-030500" disa="169" severity="medium"> -- <VMSinfo VKey="230457" SVKey="230457r6277" VRelease="r627750"/> -- <title text="Successful/unsuccessful uses of the lchown system call in RHEL 8 must generate an audit record."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_local_events" ownerid="RHEL-08-030510" disa="169" severity="medium"> -- <VMSinfo VKey="230458" SVKey="230458r6277" VRelease="r627750"/> -- <title text="Successful/unsuccessful uses of the fchownat system call in RHEL 8 must generate an audit record."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_local_events" ownerid="RHEL-08-030520" disa="169" severity="medium"> -- <VMSinfo VKey="230459" SVKey="230459r6277" VRelease="r627750"/> -- <title text="Successful/unsuccessful uses of the fchown system call in RHEL 8 must generate an audit record."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_local_events" ownerid="RHEL-08-030530" disa="169" severity="medium"> -- <VMSinfo VKey="230460" SVKey="230460r6277" VRelease="r627750"/> -- <title text="Successful/unsuccessful uses of the fchmodat system call in RHEL 8 must generate an audit record."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_local_events" ownerid="RHEL-08-030540" disa="169" severity="medium"> -- <VMSinfo VKey="230461" SVKey="230461r6277" VRelease="r627750"/> -- <title text="Successful/unsuccessful uses of the fchmod system call in RHEL 8 must generate an audit record."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_local_events" ownerid="RHEL-08-030550" disa="169" severity="medium"> -- <VMSinfo VKey="230462" SVKey="230462r6277" VRelease="r627750"/> -- <title text="Successful/unsuccessful uses of the sudo command in RHEL 8 must generate an audit record."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_local_events" ownerid="RHEL-08-030560" disa="169" severity="medium"> -- <VMSinfo VKey="230463" SVKey="230463r6277" VRelease="r627750"/> -- <title text="Successful/unsuccessful uses of the usermod command in RHEL 8 must generate an audit record."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_local_events" ownerid="RHEL-08-030570" disa="169" severity="medium"> -- <VMSinfo VKey="230464" SVKey="230464r6277" VRelease="r627750"/> -- <title text="Successful/unsuccessful uses of the chacl command in RHEL 8 must generate an audit record."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_local_events" ownerid="RHEL-08-030580" disa="169" severity="medium"> -- <VMSinfo VKey="230465" SVKey="230465r6277" VRelease="r627750"/> -- <title text="Successful/unsuccessful uses of the kmod command in RHEL 8 must generate an audit record."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_local_events" ownerid="RHEL-08-030590" disa="169" severity="medium"> -- <VMSinfo VKey="230466" SVKey="230466r6277" VRelease="r627750"/> -- <title text="Successful/unsuccessful modifications to the faillock log file in RHEL 8 must generate an audit record."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_login_events_lastlog" ownerid="RHEL-08-030600" disa="169" severity="medium"> -- <VMSinfo VKey="230467" SVKey="230467r6277" VRelease="r627750"/> -- <title text="Successful/unsuccessful modifications to the lastlog file in RHEL 8 must generate an audit record."/> -- </overlay> -- <overlay owner="disastig" ruleid="grub2_audit_argument" ownerid="RHEL-08-030601" disa="169" severity="low"> -- <VMSinfo VKey="230468" SVKey="230468r6277" VRelease="r627750"/> -- <title text="RHEL 8 must enable auditing of processes that start prior to the audit daemon."/> -- </overlay> -- <overlay owner="disastig" ruleid="grub2_audit_backlog_limit_argument" ownerid="RHEL-08-030602" disa="1849" severity="low"> -- <VMSinfo VKey="230469" SVKey="230469r6277" VRelease="r627750"/> -- <title text="RHEL 8 must allocate an audit_backlog_limit of sufficient size to capture processes that start prior to the audit daemon."/> -- </overlay> -- <overlay owner="disastig" ruleid="configure_usbguard_auditbackend" ownerid="RHEL-08-030603" disa="169" severity="low"> -- <VMSinfo VKey="230470" SVKey="230470r6277" VRelease="r627750"/> -- <title text="RHEL 8 must enable Linux audit logging for the USBGuard daemon."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="RHEL-08-030610" disa="171" severity="medium"> -- <VMSinfo VKey="230471" SVKey="230471r6277" VRelease="r627750"/> -- <title text="RHEL 8 must allow only the Information System Security Manager (ISSM) (or individuals or roles appointed by the ISSM) to select which auditable events are to be audited."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="RHEL-08-030620" disa="1493" severity="medium"> -- <VMSinfo VKey="230472" SVKey="230472r6277" VRelease="r627750"/> -- <title text="RHEL 8 audit tools must have a mode of 0755 or less permissive."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="RHEL-08-030630" disa="1493" severity="medium"> -- <VMSinfo VKey="230473" SVKey="230473r6277" VRelease="r627750"/> -- <title text="RHEL 8 audit tools must be owned by root."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="RHEL-08-030640" disa="1493" severity="medium"> -- <VMSinfo VKey="230474" SVKey="230474r6277" VRelease="r627750"/> -- <title text="RHEL 8 audit tools must be group-owned by root."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="RHEL-08-030650" disa="1496" severity="medium"> -- <VMSinfo VKey="230475" SVKey="230475r6277" VRelease="r627750"/> -- <title text="RHEL 8 must use cryptographic mechanisms to protect the integrity of audit tools."/> -- </overlay> -- <overlay owner="disastig" ruleid="grub2_audit_backlog_limit_argument" ownerid="RHEL-08-030660" disa="1849" severity="medium"> -- <VMSinfo VKey="230476" SVKey="230476r6277" VRelease="r627750"/> -- <title text="RHEL 8 must allocate audit record storage capacity to store at least one week of audit records, when audit records are not immediately sent to a central audit record storage facility."/> -- </overlay> -- <overlay owner="disastig" ruleid="package_rsyslog_installed" ownerid="RHEL-08-030670" disa="366" severity="medium"> -- <VMSinfo VKey="230477" SVKey="230477r6277" VRelease="r627750"/> -- <title text="RHEL 8 must have the packages required for offloading audit logs installed."/> -- </overlay> -- <overlay owner="disastig" ruleid="package_rsyslog-gnutls_installed" ownerid="RHEL-08-030680" disa="366" severity="medium"> -- <VMSinfo VKey="230478" SVKey="230478r6277" VRelease="r627750"/> -- <title text="RHEL 8 must have the packages required for encrypting offloaded audit logs installed."/> -- </overlay> -- <overlay owner="disastig" ruleid="rsyslog_remote_loghost" ownerid="RHEL-08-030690" disa="1851" severity="medium"> -- <VMSinfo VKey="230479" SVKey="230479r6277" VRelease="r627750"/> -- <title text="The RHEL 8 audit records must be off-loaded onto a different system or storage media from the system being audited."/> -- </overlay> -- <overlay owner="disastig" ruleid="rsyslog_remote_loghost" ownerid="RHEL-08-030700" disa="1851" severity="medium"> -- <VMSinfo VKey="230480" SVKey="230480r6277" VRelease="r627750"/> -- <title text="RHEL 8 must take appropriate action when the internal event queue is full."/> -- </overlay> -- <overlay owner="disastig" ruleid="rsyslog_remote_loghost" ownerid="RHEL-08-030710" disa="1851" severity="medium"> -- <VMSinfo VKey="230481" SVKey="230481r6277" VRelease="r627750"/> -- <title text="RHEL 8 must encrypt the transfer of audit records off-loaded onto a different system or media from the system being audited."/> -- </overlay> -- <overlay owner="disastig" ruleid="rsyslog_remote_loghost" ownerid="RHEL-08-030720" disa="1851" severity="medium"> -- <VMSinfo VKey="230482" SVKey="230482r6277" VRelease="r627750"/> -- <title text="RHEL 8 must authenticate the remote logging server for off-loading audit logs."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_data_retention_space_left" ownerid="RHEL-08-030730" disa="1855" severity="medium"> -- <VMSinfo VKey="230483" SVKey="230483r6277" VRelease="r627750"/> -- <title text="RHEL 8 must notify the System Administrator (SA) and Information System Security Officer (ISSO) (at a minimum) when allocated audit record storage volume reaches 75 percent of the repository maximum audit record storage capacity."/> -- </overlay> -- <overlay owner="disastig" ruleid="chronyd_or_ntpd_set_maxpoll" ownerid="RHEL-08-030740" disa="1891" severity="medium"> -- <VMSinfo VKey="230484" SVKey="230484r6277" VRelease="r627750"/> -- <title text="RHEL 8 must securely compare internal information system clocks at least every 24 hours with a server synchronized to an authoritative time source, such as the United States Naval Observatory (USNO) time servers, or a time server designated for the appropriate DoD network (NIPRNet/SIPRNet), and/or the Global Positioning System (GPS)."/> -- </overlay> -- <overlay owner="disastig" ruleid="chronyd_client_only" ownerid="RHEL-08-030741" disa="381" severity="low"> -- <VMSinfo VKey="230485" SVKey="230485r6277" VRelease="r627750"/> -- <title text="RHEL 8 must disable the chrony daemon from acting as a server."/> -- </overlay> -- <overlay owner="disastig" ruleid="chronyd_no_chronyc_network" ownerid="RHEL-08-030742" disa="381" severity="low"> -- <VMSinfo VKey="230486" SVKey="230486r6277" VRelease="r627750"/> -- <title text="RHEL 8 must disable network management of the chrony daemon."/> -- </overlay> -- <overlay owner="disastig" ruleid="package_telnet-server_removed" ownerid="RHEL-08-040000" disa="381" severity="high"> -- <VMSinfo VKey="230487" SVKey="230487r6277" VRelease="r627750"/> -- <title text="RHEL 8 must not have the telnet-server package installed."/> -- </overlay> -- <overlay owner="disastig" ruleid="package_abrt_removed" ownerid="RHEL-08-040001" disa="381" severity="medium"> -- <VMSinfo VKey="230488" SVKey="230488r6277" VRelease="r627750"/> -- <title text="RHEL 8 must not have any automated bug reporting tools installed."/> -- </overlay> -- <overlay owner="disastig" ruleid="package_sendmail_removed" ownerid="RHEL-08-040002" disa="381" severity="medium"> -- <VMSinfo VKey="230489" SVKey="230489r6277" VRelease="r627750"/> -- <title text="RHEL 8 must not have the sendmail package installed."/> -- </overlay> -- <overlay owner="disastig" ruleid="grub2_pti_argument" ownerid="RHEL-08-040004" disa="381" severity="low"> -- <VMSinfo VKey="230491" SVKey="230491r6277" VRelease="r627750"/> -- <title text="RHEL 8 must enable mitigations against processor-based vulnerabilities."/> -- </overlay> -- <overlay owner="disastig" ruleid="package_rsh-server_removed" ownerid="RHEL-08-040010" disa="381" severity="high"> -- <VMSinfo VKey="230492" SVKey="230492r6277" VRelease="r627750"/> -- <title text="RHEL 8 must not have the rsh-server package installed."/> -- </overlay> -- <overlay owner="disastig" ruleid="package_sendmail_removed" ownerid="RHEL-08-040020" disa="381" severity="medium"> -- <VMSinfo VKey="230493" SVKey="230493r6277" VRelease="r627750"/> -- <title text="RHEL 8 must cover or disable the built-in or attached camera when not in use."/> -- </overlay> -- <overlay owner="disastig" ruleid="kernel_module_atm_disabled" ownerid="RHEL-08-040021" disa="381" severity="low"> -- <VMSinfo VKey="230494" SVKey="230494r6277" VRelease="r627750"/> -- <title text="RHEL 8 must disable the asynchronous transfer mode (ATM) protocol."/> -- </overlay> -- <overlay owner="disastig" ruleid="kernel_module_can_disabled" ownerid="RHEL-08-040022" disa="381" severity="low"> -- <VMSinfo VKey="230495" SVKey="230495r6277" VRelease="r627750"/> -- <title text="RHEL 8 must disable the controller area network (CAN) protocol."/> -- </overlay> -- <overlay owner="disastig" ruleid="kernel_module_sctp_disabled" ownerid="RHEL-08-040023" disa="381" severity="low"> -- <VMSinfo VKey="230496" SVKey="230496r6277" VRelease="r627750"/> -- <title text="RHEL 8 must disable the stream control transmission (SCTP) protocol."/> -- </overlay> -- <overlay owner="disastig" ruleid="kernel_module_tipc_disabled" ownerid="RHEL-08-040024" disa="381" severity="low"> -- <VMSinfo VKey="230497" SVKey="230497r6277" VRelease="r627750"/> -- <title text="RHEL 8 must disable the transparent inter-process communication (TIPC) protocol."/> -- </overlay> -- <overlay owner="disastig" ruleid="kernel_module_cramfs_disabled" ownerid="RHEL-08-040025" disa="381" severity="low"> -- <VMSinfo VKey="230498" SVKey="230498r6277" VRelease="r627750"/> -- <title text="RHEL 8 must disable mounting of cramfs."/> -- </overlay> -- <overlay owner="disastig" ruleid="kernel_module_firewire-core_disabled" ownerid="RHEL-08-040026" disa="381" severity="low"> -- <VMSinfo VKey="230499" SVKey="230499r6277" VRelease="r627750"/> -- <title text="RHEL 8 must disable IEEE 1394 (FireWire) Support."/> -- </overlay> -- <overlay owner="disastig" ruleid="configure_firewalld_ports" ownerid="RHEL-08-040030" disa="382" severity="medium"> -- <VMSinfo VKey="230500" SVKey="230500r6277" VRelease="r627750"/> -- <title text="RHEL 8 must be configured to prohibit or restrict the use of functions, ports, protocols, and/or services, as defined in the Ports, Protocols, and Services Management (PPSM) Category Assignments List (CAL) and vulnerability assessments."/> -- </overlay> -- <overlay owner="disastig" ruleid="service_autofs_disabled" ownerid="RHEL-08-040070" disa="778" severity="medium"> -- <VMSinfo VKey="230502" SVKey="230502r6277" VRelease="r627750"/> -- <title text="The RHEL 8 file system automounter must be disabled unless required."/> -- </overlay> -- <overlay owner="disastig" ruleid="kernel_module_usb-storage_disabled" ownerid="RHEL-08-040080" disa="778" severity="medium"> -- <VMSinfo VKey="230503" SVKey="230503r6277" VRelease="r627750"/> -- <title text="RHEL 8 must be configured to disable USB mass storage."/> -- </overlay> -- <overlay owner="disastig" ruleid="configure_firewalld_ports" ownerid="RHEL-08-040090" disa="2314" severity="medium"> -- <VMSinfo VKey="230504" SVKey="230504r6277" VRelease="r627750"/> -- <title text="A RHEL 8 firewall must employ a deny-all, allow-by-exception policy for allowing connections to other systems."/> -- </overlay> -- <overlay owner="disastig" ruleid="service_firewalld_enabled" ownerid="RHEL-08-040100" disa="2314" severity="medium"> -- <VMSinfo VKey="230505" SVKey="230505r6277" VRelease="r627750"/> -- <title text="A firewall must be installed on RHEL 8."/> -- </overlay> -- <overlay owner="disastig" ruleid="wireless_disable_interfaces" ownerid="RHEL-08-040110" disa="1444" severity="medium"> -- <VMSinfo VKey="230506" SVKey="230506r6277" VRelease="r627750"/> -- <title text="RHEL 8 wireless network adapters must be disabled."/> -- </overlay> -- <overlay owner="disastig" ruleid="kernel_module_bluetooth_disabled" ownerid="RHEL-08-040111" disa="1443" severity="medium"> -- <VMSinfo VKey="230507" SVKey="230507r6277" VRelease="r627750"/> -- <title text="RHEL 8 Bluetooth must be disabled."/> -- </overlay> -- <overlay owner="disastig" ruleid="mount_option_dev_shm_nodev" ownerid="RHEL-08-040120" disa="1764" severity="medium"> -- <VMSinfo VKey="230508" SVKey="230508r6277" VRelease="r627750"/> -- <title text="RHEL 8 must mount /dev/shm with the nodev option."/> -- </overlay> -- <overlay owner="disastig" ruleid="mount_option_dev_shm_nosuid" ownerid="RHEL-08-040121" disa="1764" severity="medium"> -- <VMSinfo VKey="230509" SVKey="230509r6277" VRelease="r627750"/> -- <title text="RHEL 8 must mount /dev/shm with the nosuid option."/> -- </overlay> -- <overlay owner="disastig" ruleid="mount_option_dev_shm_noexec" ownerid="RHEL-08-040122" disa="1764" severity="medium"> -- <VMSinfo VKey="230510" SVKey="230510r6277" VRelease="r627750"/> -- <title text="RHEL 8 must mount /dev/shm with the noexec option."/> -- </overlay> -- <overlay owner="disastig" ruleid="mount_option_tmp_nodev" ownerid="RHEL-08-040123" disa="1764" severity="medium"> -- <VMSinfo VKey="230511" SVKey="230511r6277" VRelease="r627750"/> -- <title text="RHEL 8 must mount /tmp with the nodev option."/> -- </overlay> -- <overlay owner="disastig" ruleid="mount_option_tmp_nosuid" ownerid="RHEL-08-040124" disa="1764" severity="medium"> -- <VMSinfo VKey="230512" SVKey="230512r6277" VRelease="r627750"/> -- <title text="RHEL 8 must mount /tmp with the nosuid option."/> -- </overlay> -- <overlay owner="disastig" ruleid="mount_option_tmp_noexec" ownerid="RHEL-08-040125" disa="1764" severity="medium"> -- <VMSinfo VKey="230513" SVKey="230513r6277" VRelease="r627750"/> -- <title text="RHEL 8 must mount /tmp with the noexec option."/> -- </overlay> -- <overlay owner="disastig" ruleid="mount_option_var_log_nodev" ownerid="RHEL-08-040126" disa="1764" severity="medium"> -- <VMSinfo VKey="230514" SVKey="230514r6277" VRelease="r627750"/> -- <title text="RHEL 8 must mount /var/log with the nodev option."/> -- </overlay> -- <overlay owner="disastig" ruleid="mount_option_var_log_nosuid" ownerid="RHEL-08-040127" disa="1764" severity="medium"> -- <VMSinfo VKey="230515" SVKey="230515r6277" VRelease="r627750"/> -- <title text="RHEL 8 must mount /var/log with the nosuid option."/> -- </overlay> -- <overlay owner="disastig" ruleid="mount_option_var_log_noexec" ownerid="RHEL-08-040128" disa="1764" severity="medium"> -- <VMSinfo VKey="230516" SVKey="230516r6277" VRelease="r627750"/> -- <title text="RHEL 8 must mount /var/log with the noexec option."/> -- </overlay> -- <overlay owner="disastig" ruleid="mount_option_var_log_audit_nodev" ownerid="RHEL-08-040129" disa="1764" severity="medium"> -- <VMSinfo VKey="230517" SVKey="230517r6277" VRelease="r627750"/> -- <title text="RHEL 8 must mount /var/log/audit with the nodev option."/> -- </overlay> -- <overlay owner="disastig" ruleid="mount_option_var_log_audit_nosuid" ownerid="RHEL-08-040130" disa="1764" severity="medium"> -- <VMSinfo VKey="230518" SVKey="230518r6277" VRelease="r627750"/> -- <title text="RHEL 8 must mount /var/log/audit with the nosuid option."/> -- </overlay> -- <overlay owner="disastig" ruleid="mount_option_var_log_audit_noexec" ownerid="RHEL-08-040131" disa="1764" severity="medium"> -- <VMSinfo VKey="230519" SVKey="230519r6277" VRelease="r627750"/> -- <title text="RHEL 8 must mount /var/log/audit with the noexec option."/> -- </overlay> -- <overlay owner="disastig" ruleid="mount_option_var_tmp_nodev" ownerid="RHEL-08-040132" disa="1764" severity="medium"> -- <VMSinfo VKey="230520" SVKey="230520r6277" VRelease="r627750"/> -- <title text="RHEL 8 must mount /var/tmp with the nodev option."/> -- </overlay> -- <overlay owner="disastig" ruleid="mount_option_var_tmp_nosuid" ownerid="RHEL-08-040133" disa="1764" severity="medium"> -- <VMSinfo VKey="230521" SVKey="230521r6277" VRelease="r627750"/> -- <title text="RHEL 8 must mount /var/tmp with the nosuid option."/> -- </overlay> -- <overlay owner="disastig" ruleid="mount_option_var_tmp_noexec" ownerid="RHEL-08-040134" disa="1764" severity="medium"> -- <VMSinfo VKey="230522" SVKey="230522r6277" VRelease="r627750"/> -- <title text="RHEL 8 must mount /var/tmp with the noexec option."/> -- </overlay> -- <overlay owner="disastig" ruleid="service_fapolicyd_enabled" ownerid="RHEL-08-040135" disa="1764" severity="medium"> -- <VMSinfo VKey="230523" SVKey="230523r6277" VRelease="r627750"/> -- <title text="The RHEL 8 fapolicy module must be configured to employ a deny-all, permit-by-exception policy to allow the execution of authorized software programs."/> -- </overlay> -- <overlay owner="disastig" ruleid="service_usbguard_enabled" ownerid="RHEL-08-040140" disa="1958" severity="medium"> -- <VMSinfo VKey="230524" SVKey="230524r6277" VRelease="r627750"/> -- <title text="RHEL 8 must block unauthorized peripherals before establishing a connection."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="RHEL-08-040150" disa="2385" severity="medium"> -- <VMSinfo VKey="230525" SVKey="230525r6277" VRelease="r627750"/> -- <title text="A firewall must be able to protect against or limit the effects of Denial of Service (DoS) attacks by ensuring RHEL 8 can implement rate-limiting measures on impacted network interfaces."/> -- </overlay> -- <overlay owner="disastig" ruleid="service_sshd_enabled" ownerid="RHEL-08-040160" disa="2418" severity="medium"> -- <VMSinfo VKey="230526" SVKey="230526r6277" VRelease="r627750"/> -- <title text="All RHEL 8 networked systems must have and implement SSH to protect the confidentiality and integrity of transmitted and received information, as well as information during preparation for transmission."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_rekey_limit" ownerid="RHEL-08-040161" disa="68" severity="medium"> -- <VMSinfo VKey="230527" SVKey="230527r6277" VRelease="r627750"/> -- <title text="RHEL 8 must force a frequent session key renegotiation for SSH connections to the server."/> -- </overlay> -- <overlay owner="disastig" ruleid="ssh_client_rekey_limit" ownerid="RHEL-08-040162" disa="68" severity="medium"> -- <VMSinfo VKey="230528" SVKey="230528r6277" VRelease="r627750"/> -- <title text="RHEL 8 must force a frequent session key renegotiation for SSH connections by the client."/> -- </overlay> -- <overlay owner="disastig" ruleid="disable_ctrlaltdel_reboot" ownerid="RHEL-08-040170" disa="366" severity="high"> -- <VMSinfo VKey="230529" SVKey="230529r6277" VRelease="r627750"/> -- <title text="The x86 Ctrl-Alt-Delete key sequence must be disabled on RHEL 8."/> -- </overlay> -- <overlay owner="disastig" ruleid="dconf_gnome_disable_ctrlaltdel_reboot" ownerid="RHEL-08-040171" disa="366" severity="high"> -- <VMSinfo VKey="230530" SVKey="230530r6468" VRelease="r646883"/> -- <title text="The x86 Ctrl-Alt-Delete key sequence in RHEL 8 must be disabled if a graphical user interface is installed."/> -- </overlay> -- <overlay owner="disastig" ruleid="disable_ctrlaltdel_burstaction" ownerid="RHEL-08-040172" disa="366" severity="high"> -- <VMSinfo VKey="230531" SVKey="230531r6277" VRelease="r627750"/> -- <title text="The systemd Ctrl-Alt-Delete burst key sequence in RHEL 8 must be disabled."/> -- </overlay> -- <overlay owner="disastig" ruleid="service_debug-shell_disabled" ownerid="RHEL-08-040180" disa="366" severity="medium"> -- <VMSinfo VKey="230532" SVKey="230532r6277" VRelease="r627750"/> -- <title text="The debug-shell systemd service must be disabled on RHEL 8."/> -- </overlay> -- <overlay owner="disastig" ruleid="package_tftp-server_removed" ownerid="RHEL-08-040190" disa="366" severity="high"> -- <VMSinfo VKey="230533" SVKey="230533r6277" VRelease="r627750"/> -- <title text="The Trivial File Transfer Protocol (TFTP) server package must not be installed if not required for RHEL 8 operational support."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_no_uid_except_zero" ownerid="RHEL-08-040200" disa="366" severity="high"> -- <VMSinfo VKey="230534" SVKey="230534r6277" VRelease="r627750"/> -- <title text="The root account must be the only account having unrestricted access to the RHEL 8 system."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_net_ipv6_conf_default_accept_redirects" ownerid="RHEL-08-040210" disa="366" severity="medium"> -- <VMSinfo VKey="230535" SVKey="230535r6277" VRelease="r627750"/> -- <title text="RHEL 8 must prevent Internet Control Message Protocol (ICMP) redirect messages from being accepted."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_net_ipv4_conf_all_send_redirects" ownerid="RHEL-08-040220" disa="366" severity="medium"> -- <VMSinfo VKey="230536" SVKey="230536r6277" VRelease="r627750"/> -- <title text="RHEL 8 must not send Internet Control Message Protocol (ICMP) redirects."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_net_ipv4_icmp_echo_ignore_broadcasts" ownerid="RHEL-08-040230" disa="366" severity="medium"> -- <VMSinfo VKey="230537" SVKey="230537r6277" VRelease="r627750"/> -- <title text="RHEL 8 must not respond to Internet Control Message Protocol (ICMP) echoes sent to a broadcast address."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_net_ipv6_conf_all_accept_source_route" ownerid="RHEL-08-040240" disa="366" severity="medium"> -- <VMSinfo VKey="230538" SVKey="230538r6277" VRelease="r627750"/> -- <title text="RHEL 8 must not forward source-routed packets."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_net_ipv6_conf_default_accept_source_route" ownerid="RHEL-08-040250" disa="366" severity="medium"> -- <VMSinfo VKey="230539" SVKey="230539r6277" VRelease="r627750"/> -- <title text="RHEL 8 must not forward source-routed packets by default."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_net_ipv4_ip_forward" ownerid="RHEL-08-040260" disa="366" severity="medium"> -- <VMSinfo VKey="230540" SVKey="230540r6277" VRelease="r627750"/> -- <title text="RHEL 8 must not be performing packet forwarding unless the system is a router."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_net_ipv6_conf_all_accept_ra" ownerid="RHEL-08-040261" disa="366" severity="medium"> -- <VMSinfo VKey="230541" SVKey="230541r6277" VRelease="r627750"/> -- <title text="RHEL 8 must not accept router advertisements on all IPv6 interfaces."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_net_ipv6_conf_default_accept_ra" ownerid="RHEL-08-040262" disa="366" severity="medium"> -- <VMSinfo VKey="230542" SVKey="230542r6277" VRelease="r627750"/> -- <title text="RHEL 8 must not accept router advertisements on all IPv6 interfaces by default."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_net_ipv4_conf_default_send_redirects" ownerid="RHEL-08-040270" disa="366" severity="medium"> -- <VMSinfo VKey="230543" SVKey="230543r6277" VRelease="r627750"/> -- <title text="RHEL 8 must not allow interfaces to perform Internet Control Message Protocol (ICMP) redirects by default."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_net_ipv6_conf_all_accept_redirects" ownerid="RHEL-08-040280" disa="366" severity="medium"> -- <VMSinfo VKey="230544" SVKey="230544r6277" VRelease="r627750"/> -- <title text="RHEL 8 must ignore Internet Control Message Protocol (ICMP) redirect messages."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_kernel_unprivileged_bpf_disabled" ownerid="RHEL-08-040281" disa="366" severity="medium"> -- <VMSinfo VKey="230545" SVKey="230545r6277" VRelease="r627750"/> -- <title text="RHEL 8 must disable access to network bpf syscall from unprivileged processes."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_kernel_yama_ptrace_scope" ownerid="RHEL-08-040282" disa="366" severity="medium"> -- <VMSinfo VKey="230546" SVKey="230546r6277" VRelease="r627750"/> -- <title text="RHEL 8 must restrict usage of ptrace to descendant processes."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_kernel_kptr_restrict" ownerid="RHEL-08-040283" disa="366" severity="medium"> -- <VMSinfo VKey="230547" SVKey="230547r6277" VRelease="r627750"/> -- <title text="RHEL 8 must restrict exposed kernel pointer addresses access."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_user_max_user_namespaces" ownerid="RHEL-08-040284" disa="366" severity="medium"> -- <VMSinfo VKey="230548" SVKey="230548r6277" VRelease="r627750"/> -- <title text="RHEL 8 must disable the use of user namespaces."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_net_ipv4_conf_all_rp_filter" ownerid="RHEL-08-040285" disa="366" severity="medium"> -- <VMSinfo VKey="230549" SVKey="230549r6277" VRelease="r627750"/> -- <title text="RHEL 8 must use reverse path filtering on all IPv4 interfaces."/> -- </overlay> -- <overlay owner="disastig" ruleid="postfix_prevent_unrestricted_relay" ownerid="RHEL-08-040290" disa="366" severity="medium"> -- <VMSinfo VKey="230550" SVKey="230550r6277" VRelease="r627750"/> -- <title text="RHEL 8 must be configured to prevent unrestricted mail relaying."/> -- </overlay> -- <overlay owner="disastig" ruleid="aide_verify_ext_attributes" ownerid="RHEL-08-040300" disa="366" severity="low"> -- <VMSinfo VKey="230551" SVKey="230551r6277" VRelease="r627750"/> -- <title text="The RHEL 8 file integrity tool must be configured to verify extended attributes."/> -- </overlay> -- <overlay owner="disastig" ruleid="aide_verify_acls" ownerid="RHEL-08-040310" disa="366" severity="low"> -- <VMSinfo VKey="230552" SVKey="230552r6277" VRelease="r627750"/> -- <title text="The RHEL 8 file integrity tool must be configured to verify Access Control Lists (ACLs)."/> -- </overlay> -- <overlay owner="disastig" ruleid="xwindows_remove_packages" ownerid="RHEL-08-040320" disa="366" severity="medium"> -- <VMSinfo VKey="230553" SVKey="230553r6468" VRelease="r646886"/> -- <title text="The graphical display manager must not be installed on RHEL 8 unless approved."/> -- </overlay> -- <overlay owner="disastig" ruleid="network_sniffer_disabled" ownerid="RHEL-08-040330" disa="366" severity="medium"> -- <VMSinfo VKey="230554" SVKey="230554r6277" VRelease="r627750"/> -- <title text="RHEL 8 network interfaces must not be in promiscuous mode."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_disable_x11_forwarding" ownerid="RHEL-08-040340" disa="366" severity="medium"> -- <VMSinfo VKey="230555" SVKey="230555r6277" VRelease="r627750"/> -- <title text="RHEL 8 remote X connections for interactive users must be disabled unless to fulfill documented and validated mission requirements."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_x11_use_localhost" ownerid="RHEL-08-040341" disa="366" severity="medium"> -- <VMSinfo VKey="230556" SVKey="230556r6277" VRelease="r627750"/> -- <title text="The RHEL 8 SSH daemon must prevent remote hosts from connecting to the proxy display."/> -- </overlay> -- <overlay owner="disastig" ruleid="tftpd_uses_secure_mode" ownerid="RHEL-08-040350" disa="366" severity="medium"> -- <VMSinfo VKey="230557" SVKey="230557r6277" VRelease="r627750"/> -- <title text="If the Trivial File Transfer Protocol (TFTP) server is required, the RHEL 8 TFTP daemon must be configured to operate in secure mode."/> -- </overlay> -- <overlay owner="disastig" ruleid="package_vsftpd_removed" ownerid="RHEL-08-040360" disa="366" severity="high"> -- <VMSinfo VKey="230558" SVKey="230558r6277" VRelease="r627750"/> -- <title text="A File Transfer Protocol (FTP) server package must not be installed unless mission essential on RHEL 8."/> -- </overlay> -- <overlay owner="disastig" ruleid="package_gssproxy_removed" ownerid="RHEL-08-040370" disa="381" severity="medium"> -- <VMSinfo VKey="230559" SVKey="230559r6468" VRelease="r646887"/> -- <title text="The gssproxy package must not be installed unless mission essential on RHEL 8."/> -- </overlay> -- <overlay owner="disastig" ruleid="package_iprutils_removed" ownerid="RHEL-08-040380" disa="366" severity="medium"> -- <VMSinfo VKey="230560" SVKey="230560r6277" VRelease="r627750"/> -- <title text="The iprutils package must not be installed unless mission essential on RHEL 8."/> -- </overlay> -- <overlay owner="disastig" ruleid="package_tuned_removed" ownerid="RHEL-08-040390" disa="366" severity="medium"> -- <VMSinfo VKey="230561" SVKey="230561r6277" VRelease="r627750"/> -- <title text="The tuned package must not be installed unless mission essential on RHEL 8."/> -- </overlay> --</overlays> -diff --git a/products/sle12/overlays/stig_overlay.xml b/products/sle12/overlays/stig_overlay.xml -deleted file mode 100644 -index 7de78806ce2..00000000000 ---- a/products/sle12/overlays/stig_overlay.xml -+++ /dev/null -@@ -1,811 +0,0 @@ --<?xml version="1.0" encoding="UTF-8"?> --<overlays xmlns="http://checklists.nist.gov/xccdf/1.1"> -- <overlay owner="disastig" ruleid="installed_OS_is_vendor_supported" ownerid="SLES-12-010000" disa="1230" severity="high"> -- <VMSinfo VKey="217101" SVKey="217101r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must be a vendor-supported release."/> -- </overlay> -- <overlay owner="disastig" ruleid="security_patches_up_to_date" ownerid="SLES-12-010010" disa="1227" severity="medium"> -- <VMSinfo VKey="217102" SVKey="217102r6032" VRelease="r603262"/> -- <title text="Vendor-packaged SUSE operating system security patches and updates must be installed and up to date."/> -- </overlay> -- <overlay owner="disastig" ruleid="gui_login_dod_acknowledgement" ownerid="SLES-12-010020" disa="50" severity="medium"> -- <VMSinfo VKey="217103" SVKey="217103r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must display the Standard Mandatory DoD Notice and Consent Banner until users acknowledge the usage conditions and take explicit actions to log on for further access to the local graphical user interface."/> -- </overlay> -- <overlay owner="disastig" ruleid="banner_etc_issue" ownerid="SLES-12-010030" disa="48" severity="medium"> -- <VMSinfo VKey="217104" SVKey="217104r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must display the Standard Mandatory DoD Notice and Consent Banner before granting access via local console."/> -- </overlay> -- <overlay owner="disastig" ruleid="dconf_gnome_banner_enabled" ownerid="SLES-12-010040" disa="1388" severity="medium"> -- <VMSinfo VKey="217105" SVKey="217105r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must display a banner before granting local or remote access to the system via a graphical user logon."/> -- </overlay> -- <overlay owner="disastig" ruleid="dconf_gnome_login_banner_text" ownerid="SLES-12-010050" disa="1384" severity="medium"> -- <VMSinfo VKey="217106" SVKey="217106r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must display the approved Standard Mandatory DoD Notice before granting local or remote access to the system via a graphical user logon."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="SLES-12-010060" disa="60" severity="medium"> -- <VMSinfo VKey="217107" SVKey="217107r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must be able to lock the graphical user interface (GUI)."/> -- </overlay> -- <overlay owner="disastig" ruleid="vlock_installed" ownerid="SLES-12-010070" disa="58" severity="low"> -- <VMSinfo VKey="217108" SVKey="217108r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must utilize vlock to allow for session locking."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_tmout" ownerid="SLES-12-010080" disa="57" severity="medium"> -- <VMSinfo VKey="217109" SVKey="217109r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must initiate a session lock after a 15-minute period of inactivity for the graphical user interface."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_tmout" ownerid="SLES-12-010090" disa="57" severity="medium"> -- <VMSinfo VKey="217110" SVKey="217110r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must initiate a session lock after a 15-minute period of inactivity."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="SLES-12-010100" disa="60" severity="low"> -- <VMSinfo VKey="217111" SVKey="217111r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must conceal, via the session lock, information previously visible on the display with a publicly viewable image in the graphical user interface."/> -- </overlay> -- <overlay owner="disastig" ruleid="sudo_remove_no_authenticate" ownerid="SLES-12-010110" disa="2038" severity="high"> -- <VMSinfo VKey="217112" SVKey="217112r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must reauthenticate users when changing authenticators, roles, or escalating privileges."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_max_concurrent_login_sessions" ownerid="SLES-12-010120" disa="54" severity="low"> -- <VMSinfo VKey="217113" SVKey="217113r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must limit the number of concurrent sessions to 10 for all accounts and/or account types."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_passwords_pam_tally2" ownerid="SLES-12-010130" disa="44" severity="medium"> -- <VMSinfo VKey="217114" SVKey="217114r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must lock an account after three consecutive invalid access attempts."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_logon_fail_delay" ownerid="SLES-12-010140" disa="366" severity="medium"> -- <VMSinfo VKey="217116" SVKey="217116r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must enforce a delay of at least four (4) seconds between logon prompts following a failed logon attempt."/> -- </overlay> -- <overlay owner="disastig" ruleid="cracklib_accounts_password_pam_ucredit" ownerid="SLES-12-010150" disa="192" severity="medium"> -- <VMSinfo VKey="217117" SVKey="217117r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must enforce passwords that contain at least one upper-case character."/> -- </overlay> -- <overlay owner="disastig" ruleid="cracklib_accounts_password_pam_lcredit" ownerid="SLES-12-010160" disa="193" severity="medium"> -- <VMSinfo VKey="217118" SVKey="217118r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must enforce passwords that contain at least one lower-case character."/> -- </overlay> -- <overlay owner="disastig" ruleid="cracklib_accounts_password_pam_dcredit" ownerid="SLES-12-010170" disa="194" severity="medium"> -- <VMSinfo VKey="217119" SVKey="217119r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must enforce passwords that contain at least one numeric character."/> -- </overlay> -- <overlay owner="disastig" ruleid="cracklib_accounts_password_pam_ocredit" ownerid="SLES-12-010180" disa="1619" severity="medium"> -- <VMSinfo VKey="217120" SVKey="217120r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must enforce passwords that contain at least one special character."/> -- </overlay> -- <overlay owner="disastig" ruleid="cracklib_accounts_password_pam_difok" ownerid="SLES-12-010190" disa="195" severity="medium"> -- <VMSinfo VKey="217121" SVKey="217121r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must require the change of at least eight (8) of the total number of characters when passwords are changed."/> -- </overlay> -- <overlay owner="disastig" ruleid="set_password_hashing_algorithm_logindefs" ownerid="SLES-12-010210" disa="803" severity="medium"> -- <VMSinfo VKey="217122" SVKey="217122r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must employ FIPS 140-2 approved cryptographic hashing algorithm for system authentication (login.defs)."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_password_all_shadowed_sha512" ownerid="SLES-12-010220" disa="196" severity="medium"> -- <VMSinfo VKey="217123" SVKey="217123r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must employ FIPS 140-2-approved cryptographic hashing algorithms for all stored passwords."/> -- </overlay> -- <overlay owner="disastig" ruleid="set_password_hashing_algorithm_systemauth" ownerid="SLES-12-010230" disa="803" severity="medium"> -- <VMSinfo VKey="217124" SVKey="217124r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must configure the Linux Pluggable Authentication Modules (PAM) to only store encrypted representations of passwords."/> -- </overlay> -- <overlay owner="disastig" ruleid="no_empty_passwords" ownerid="SLES-12-010231" disa="366" severity="medium"> -- <VMSinfo VKey="217125" SVKey="217125r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must not be configured to allow blank or null passwords."/> -- </overlay> -- <overlay owner="disastig" ruleid="set_password_hashing_min_rounds_logindefs" ownerid="SLES-12-010240" disa="803" severity="medium"> -- <VMSinfo VKey="217126" SVKey="217126r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must employ FIPS 140-2-approved cryptographic hashing algorithms for all stored passwords."/> -- </overlay> -- <overlay owner="disastig" ruleid="cracklib_accounts_password_pam_minlen" ownerid="SLES-12-010250" disa="205" severity="medium"> -- <VMSinfo VKey="217127" SVKey="217127r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must employ passwords with a minimum of 15 characters."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_password_set_min_life_existing" ownerid="SLES-12-010260" disa="198" severity="medium"> -- <VMSinfo VKey="217128" SVKey="217128r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must be configured to create or update passwords with a minimum lifetime of 24 hours (1 day)."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_minimum_age_login_defs" ownerid="SLES-12-010270" disa="198" severity="medium"> -- <VMSinfo VKey="217129" SVKey="217129r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must employ user passwords with a minimum lifetime of 24 hours (1 day)."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_maximum_age_login_defs" ownerid="SLES-12-010280" disa="199" severity="medium"> -- <VMSinfo VKey="217130" SVKey="217130r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must be configured to create or update passwords with a maximum lifetime of 60 days."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_password_set_max_life_existing" ownerid="SLES-12-010290" disa="199" severity="medium"> -- <VMSinfo VKey="217131" SVKey="217131r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must employ user passwords with a maximum lifetime of 60 days."/> -- </overlay> -- <overlay owner="disastig" ruleid="file_etc_security_opasswd" ownerid="SLES-12-010300" disa="200" severity="medium"> -- <VMSinfo VKey="217132" SVKey="217132r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must employ a password history file."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_password_pam_pwhistory_remember" ownerid="SLES-12-010310" disa="200" severity="medium"> -- <VMSinfo VKey="217133" SVKey="217133r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must not allow passwords to be reused for a minimum of five (5) generations."/> -- </overlay> -- <overlay owner="disastig" ruleid="cracklib_accounts_password_pam_retry" ownerid="SLES-12-010320" disa="366" severity="medium"> -- <VMSinfo VKey="217134" SVKey="217134r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must prevent the use of dictionary words for passwords."/> -- </overlay> -- <overlay owner="disastig" ruleid="account_emergency_admin" ownerid="SLES-12-010330" disa="1682" severity="medium"> -- <VMSinfo VKey="217135" SVKey="217135r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must never automatically remove or disable emergency administrator accounts."/> -- </overlay> -- <overlay owner="disastig" ruleid="account_disable_post_pw_expiration" ownerid="SLES-12-010340" disa="795" severity="medium"> -- <VMSinfo VKey="217136" SVKey="217136r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must disable account identifiers (individuals, groups, roles, and devices) after 35 days of inactivity after password expiration."/> -- </overlay> -- <overlay owner="disastig" ruleid="account_temp_expire_date" ownerid="SLES-12-010360" disa="16" severity="medium"> -- <VMSinfo VKey="217137" SVKey="217137r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must provision temporary accounts with an expiration date for 72 hours."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_passwords_pam_faildelay_delay" ownerid="SLES-12-010370" disa="366" severity="medium"> -- <VMSinfo VKey="217138" SVKey="217138r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must enforce a delay of at least four seconds between logon prompts following a failed logon attempt."/> -- </overlay> -- <overlay owner="disastig" ruleid="gnome_gdm_disable_automatic_login" ownerid="SLES-12-010380" disa="366" severity="high"> -- <VMSinfo VKey="217139" SVKey="217139r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must not allow unattended or automatic logon via the graphical user interface."/> -- </overlay> -- <overlay owner="disastig" ruleid="display_login_attempts" ownerid="SLES-12-010390" disa="366" severity="low"> -- <VMSinfo VKey="217140" SVKey="217140r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must display the date and time of the last successful account logon upon logon."/> -- </overlay> -- <overlay owner="disastig" ruleid="no_user_host_based_files" ownerid="SLES-12-010400" disa="366" severity="high"> -- <VMSinfo VKey="217141" SVKey="217141r6032" VRelease="r603262"/> -- <title text="There must be no .shosts files on the SUSE operating system."/> -- </overlay> -- <overlay owner="disastig" ruleid="no_host_based_files" ownerid="SLES-12-010410" disa="366" severity="high"> -- <VMSinfo VKey="217142" SVKey="217142r6032" VRelease="r603262"/> -- <title text="There must be no shosts.equiv files on the SUSE operating system."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="SLES-12-010420" disa="2450" severity="medium"> -- <VMSinfo VKey="217143" SVKey="217143r6032" VRelease="r603262"/> -- <title text="FIPS 140-2 mode must be enabled on the SUSE operating system."/> -- </overlay> -- <overlay owner="disastig" ruleid="grub2_password" ownerid="SLES-12-010430" disa="213" severity="medium"> -- <VMSinfo VKey="217144" SVKey="217144r6032" VRelease="r603262"/> -- <title text="SUSE operating systems with a basic input/output system (BIOS) must require authentication upon booting into single-user and maintenance modes."/> -- </overlay> -- <overlay owner="disastig" ruleid="grub2_uefi_password" ownerid="SLES-12-010440" disa="213" severity="medium"> -- <VMSinfo VKey="217145" SVKey="217145r6032" VRelease="r603262"/> -- <title text="SUSE operating systems with Unified Extensible Firmware Interface (UEFI) implemented must require authentication upon booting into single-user mode and maintenance."/> -- </overlay> -- <overlay owner="disastig" ruleid="encrypt_partitions" ownerid="SLES-12-010450" disa="2475" severity="medium"> -- <VMSinfo VKey="217146" SVKey="217146r6032" VRelease="r603262"/> -- <title text="All SUSE operating system persistent disk partitions must implement cryptographic mechanisms to prevent unauthorized disclosure or modification of all information that requires at rest protection."/> -- </overlay> -- <overlay owner="disastig" ruleid="dir_perms_world_writable_sticky_bits" ownerid="SLES-12-010460" disa="1090" severity="medium"> -- <VMSinfo VKey="217147" SVKey="217147r6032" VRelease="r603262"/> -- <title text="The sticky bit must be set on all SUSE operating system world-writable directories."/> -- </overlay> -- <overlay owner="disastig" ruleid="package_aide_installed" ownerid="SLES-12-010500" disa="1744" severity="medium"> -- <VMSinfo VKey="217148" SVKey="217148r6032" VRelease="r603262"/> -- <title text="Advanced Intrusion Detection Environment (AIDE) must verify the baseline SUSE operating system configuration at least weekly."/> -- </overlay> -- <overlay owner="disastig" ruleid="aide_scan_notification" ownerid="SLES-12-010510" disa="2702" severity="medium"> -- <VMSinfo VKey="217149" SVKey="217149r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must notify the System Administrator (SA) when AIDE discovers anomalies in the operation of any security functions."/> -- </overlay> -- <overlay owner="disastig" ruleid="aide_verify_acls" ownerid="SLES-12-010520" disa="366" severity="low"> -- <VMSinfo VKey="217150" SVKey="217150r6032" VRelease="r603262"/> -- <title text="The SUSE operating system file integrity tool must be configured to verify Access Control Lists (ACLs)."/> -- </overlay> -- <overlay owner="disastig" ruleid="aide_verify_ext_attributes" ownerid="SLES-12-010530" disa="366" severity="low"> -- <VMSinfo VKey="217151" SVKey="217151r6032" VRelease="r603262"/> -- <title text="The SUSE operating system file integrity tool must be configured to verify extended attributes."/> -- </overlay> -- <overlay owner="disastig" ruleid="aide_check_audit_tools" ownerid="SLES-12-010540" disa="1496" severity="medium"> -- <VMSinfo VKey="217152" SVKey="217152r6032" VRelease="r603262"/> -- <title text="The SUSE operating system file integrity tool must be configured to protect the integrity of the audit tools."/> -- </overlay> -- <overlay owner="disastig" ruleid="ensure_gpgcheck_globally_activated" ownerid="SLES-12-010550" disa="1749" severity="medium"> -- <VMSinfo VKey="217153" SVKey="217153r6032" VRelease="r603262"/> -- <title text="The SUSE operating system tool zypper must have gpgcheck enabled."/> -- </overlay> -- <overlay owner="disastig" ruleid="clean_components_post_updating" ownerid="SLES-12-010570" disa="2617" severity="medium"> -- <VMSinfo VKey="217154" SVKey="217154r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must remove all outdated software components after updated versions have been installed."/> -- </overlay> -- <overlay owner="disastig" ruleid="kernel_module_usb-storage_disabled" ownerid="SLES-12-010580" disa="1958" severity="medium"> -- <VMSinfo VKey="217155" SVKey="217155r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must disable the USB mass storage kernel module."/> -- </overlay> -- <overlay owner="disastig" ruleid="service_autofs_disabled" ownerid="SLES-12-010590" disa="1958" severity="medium"> -- <VMSinfo VKey="217156" SVKey="217156r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must disable the file system automounter unless required."/> -- </overlay> -- <overlay owner="disastig" ruleid="package_MFEhiplsm_installed" ownerid="SLES-12-010599" disa="1233" severity="medium"> -- <VMSinfo VKey="222385" SVKey="222385r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must have a host-based intrusion detection tool installed."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="SLES-12-010600" disa="2235" severity="medium"> -- <VMSinfo VKey="217158" SVKey="217158r6032" VRelease="r603262"/> -- <title text="The SUSE operating system Apparmor tool must be configured to control whitelisted applications and user home directory access control."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_disable_root_login" ownerid="SLES-12-010610" disa="366" severity="high"> -- <VMSinfo VKey="217159" SVKey="217159r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must disable the x86 Ctrl-Alt-Delete key sequence."/> -- </overlay> -- <overlay owner="disastig" ruleid="disable_ctrlaltdel_reboot" ownerid="SLES-12-010611" disa="366" severity="high"> -- <VMSinfo VKey="217160" SVKey="217160r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must disable the x86 Ctrl-Alt-Delete key sequence for Graphical User Interfaces."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_umask_etc_login_defs" ownerid="SLES-12-010620" disa="366" severity="medium"> -- <VMSinfo VKey="217161" SVKey="217161r6032" VRelease="r603262"/> -- <title text="The SUSE operating system default permissions must be defined in such a way that all authenticated users can only read and modify their own files."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_authorized_local_users" ownerid="SLES-12-010630" disa="366" severity="medium"> -- <VMSinfo VKey="217162" SVKey="217162r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must not have unnecessary accounts."/> -- </overlay> -- <overlay owner="disastig" ruleid="account_unique_id" ownerid="SLES-12-010640" disa="764" severity="medium"> -- <VMSinfo VKey="217163" SVKey="217163r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must not have duplicate User IDs (UIDs) for interactive users."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_no_uid_except_zero" ownerid="SLES-12-010650" disa="366" severity="high"> -- <VMSinfo VKey="217164" SVKey="217164r6032" VRelease="r603262"/> -- <title text="The SUSE operating system root account must be the only account having unrestricted access to the system."/> -- </overlay> -- <overlay owner="disastig" ruleid="sssd_memcache_timeout" ownerid="SLES-12-010670" disa="2007" severity="medium"> -- <VMSinfo VKey="217166" SVKey="217166r6032" VRelease="r603262"/> -- <title text="If Network Security Services (NSS) is being used by the SUSE operating system it must prohibit the use of cached authentications after one day."/> -- </overlay> -- <overlay owner="disastig" ruleid="sssd_offline_cred_expiration" ownerid="SLES-12-010680" disa="2007" severity="medium"> -- <VMSinfo VKey="217167" SVKey="217167r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must configure the Linux Pluggable Authentication Modules (PAM) to prohibit the use of cached offline authentications after one day."/> -- </overlay> -- <overlay owner="disastig" ruleid="no_files_unowned_by_user" ownerid="SLES-12-010690" disa="2165" severity="medium"> -- <VMSinfo VKey="217168" SVKey="217168r6032" VRelease="r603262"/> -- <title text="All SUSE operating system files and directories must have a valid owner."/> -- </overlay> -- <overlay owner="disastig" ruleid="file_permissions_ungroupowned" ownerid="SLES-12-010700" disa="2165" severity="medium"> -- <VMSinfo VKey="217169" SVKey="217169r6032" VRelease="r603262"/> -- <title text="All SUSE operating system files and directories must have a valid group owner."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_user_interactive_home_directory_defined" ownerid="SLES-12-010710" disa="366" severity="medium"> -- <VMSinfo VKey="217170" SVKey="217170r6038" VRelease="r603883"/> -- <title text="All SUSE operating system local interactive users must have a home directory assigned in the /etc/passwd file."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_have_homedir_login_defs" ownerid="SLES-12-010720" disa="366" severity="medium"> -- <VMSinfo VKey="217171" SVKey="217171r6032" VRelease="r603262"/> -- <title text="All SUSE operating system local interactive user accounts, upon creation, must be assigned a home directory."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_user_interactive_home_directory_exists" ownerid="SLES-12-010730" disa="366" severity="medium"> -- <VMSinfo VKey="217172" SVKey="217172r6038" VRelease="r603885"/> -- <title text="All SUSE operating system local interactive user home directories defined in the /etc/passwd file must exist."/> -- </overlay> -- <overlay owner="disastig" ruleid="file_permissions_home_directories" ownerid="SLES-12-010740" disa="366" severity="medium"> -- <VMSinfo VKey="217173" SVKey="217173r6038" VRelease="r603887"/> -- <title text="All SUSE operating system local interactive user home directories must have mode 0750 or less permissive."/> -- </overlay> -- <overlay owner="disastig" ruleid="file_groupownership_home_directories" ownerid="SLES-12-010750" disa="366" severity="medium"> -- <VMSinfo VKey="217174" SVKey="217174r6038" VRelease="r603889"/> -- <title text="All SUSE operating system local interactive user home directories must be group-owned by the home directory owners primary group."/> -- </overlay> -- <overlay owner="disastig" ruleid="file_permission_user_init_files" ownerid="SLES-12-010760" disa="366" severity="medium"> -- <VMSinfo VKey="217175" SVKey="217175r6032" VRelease="r603262"/> -- <title text="All SUSE operating system local initialization files must have mode 0740 or less permissive."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_user_home_paths_only" ownerid="SLES-12-010770" disa="366" severity="medium"> -- <VMSinfo VKey="217176" SVKey="217176r6032" VRelease="r603262"/> -- <title text="All SUSE operating system local interactive user initialization files executable search paths must contain only paths that resolve to the users home directory."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_user_dot_no_world_writable_programs" ownerid="SLES-12-010780" disa="366" severity="medium"> -- <VMSinfo VKey="217177" SVKey="217177r6032" VRelease="r603262"/> -- <title text="All SUSE operating system local initialization files must not execute world-writable programs."/> -- </overlay> -- <overlay owner="disastig" ruleid="mount_option_home_nosuid" ownerid="SLES-12-010790" disa="366" severity="medium"> -- <VMSinfo VKey="217178" SVKey="217178r6038" VRelease="r603891"/> -- <title text="SUSE operating system file systems that contain user home directories must be mounted to prevent files with the setuid and setgid bit set from being executed."/> -- </overlay> -- <overlay owner="disastig" ruleid="mount_option_nosuid_removable_partitions" ownerid="SLES-12-010800" disa="366" severity="medium"> -- <VMSinfo VKey="217179" SVKey="217179r6032" VRelease="r603262"/> -- <title text="SUSE operating system file systems that are used with removable media must be mounted to prevent files with the setuid and setgid bit set from being executed."/> -- </overlay> -- <overlay owner="disastig" ruleid="mount_option_nosuid_remote_filesystems" ownerid="SLES-12-010810" disa="366" severity="medium"> -- <VMSinfo VKey="217180" SVKey="217180r6032" VRelease="r603262"/> -- <title text="SUSE operating system file systems that are being imported via Network File System (NFS) must be mounted to prevent files with the setuid and setgid bit set from being executed."/> -- </overlay> -- <overlay owner="disastig" ruleid="mount_option_noexec_remote_filesystems" ownerid="SLES-12-010820" disa="366" severity="medium"> -- <VMSinfo VKey="217181" SVKey="217181r6032" VRelease="r603262"/> -- <title text="SUSE operating system file systems that are being imported via Network File System (NFS) must be mounted to prevent binary files from being executed."/> -- </overlay> -- <overlay owner="disastig" ruleid="dir_perms_world_writable_system_owned_group" ownerid="SLES-12-010830" disa="366" severity="medium"> -- <VMSinfo VKey="217182" SVKey="217182r6032" VRelease="r603262"/> -- <title text="All SUSE operating system world-writable directories must be group-owned by root, sys, bin, or an application group."/> -- </overlay> -- <overlay owner="disastig" ruleid="service_kdump_disabled" ownerid="SLES-12-010840" disa="366" severity="medium"> -- <VMSinfo VKey="217183" SVKey="217183r6032" VRelease="r603262"/> -- <title text="SUSE operating system kernel core dumps must be disabled unless needed."/> -- </overlay> -- <overlay owner="disastig" ruleid="partition_for_home" ownerid="SLES-12-010850" disa="366" severity="low"> -- <VMSinfo VKey="217184" SVKey="217184r6038" VRelease="r603893"/> -- <title text="A separate file system must be used for SUSE operating system user home directories (such as /home or an equivalent)."/> -- </overlay> -- <overlay owner="disastig" ruleid="partition_for_var" ownerid="SLES-12-010860" disa="366" severity="low"> -- <VMSinfo VKey="217185" SVKey="217185r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must use a separate file system for /var."/> -- </overlay> -- <overlay owner="disastig" ruleid="partition_for_var_log_audit" ownerid="SLES-12-010870" disa="366" severity="low"> -- <VMSinfo VKey="217186" SVKey="217186r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must use a separate file system for the system audit data path."/> -- </overlay> -- <overlay owner="disastig" ruleid="run_chkstat" ownerid="SLES-12-010880" disa="1499" severity="medium"> -- <VMSinfo VKey="217187" SVKey="217187r6032" VRelease="r603262"/> -- <title text="SUSE operating system commands and libraries must have the proper permissions to protect from unauthorized access."/> -- </overlay> -- <overlay owner="disastig" ruleid="file_permissions_var_log_messages" ownerid="SLES-12-010890" disa="1314" severity="medium"> -- <VMSinfo VKey="217188" SVKey="217188r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must prevent unauthorized users from accessing system error messages."/> -- </overlay> -- <overlay owner="disastig" ruleid="pam_disable_automatic_configuration" ownerid="SLES-12-010910" disa="366" severity="medium"> -- <VMSinfo VKey="217189" SVKey="217189r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must be configured to not overwrite Pluggable Authentication Modules (PAM) configuration on package changes."/> -- </overlay> -- <overlay owner="disastig" ruleid="package_audit_installed" ownerid="SLES-12-020000" disa="1914" severity="medium"> -- <VMSinfo VKey="217190" SVKey="217190r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must have the auditing package installed."/> -- </overlay> -- <overlay owner="disastig" ruleid="service_auditd_enabled" ownerid="SLES-12-020010" disa="2884" severity="medium"> -- <VMSinfo VKey="217191" SVKey="217191r6032" VRelease="r603262"/> -- <title text="SUSE operating system audit records must contain information to establish what type of events occurred, the source of events, where events occurred, and the outcome of events."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_audispd_configure_sufficiently_large_partition" ownerid="SLES-12-020020" disa="1849" severity="medium"> -- <VMSinfo VKey="217192" SVKey="217192r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must allocate audit record storage capacity to store at least one weeks worth of audit records when audit records are not immediately sent to a central audit record storage facility."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_data_retention_space_left" ownerid="SLES-12-020030" disa="1855" severity="medium"> -- <VMSinfo VKey="217193" SVKey="217193r6032" VRelease="r603262"/> -- <title text="The SUSE operating system auditd service must notify the System Administrator (SA) and Information System Security Officer (ISSO) immediately when audit storage capacity is 75 percent full."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_data_retention_action_mail_acct" ownerid="SLES-12-020040" disa="139" severity="medium"> -- <VMSinfo VKey="217194" SVKey="217194r6032" VRelease="r603262"/> -- <title text="The Information System Security Officer (ISSO) and System Administrator (SA), at a minimum, must be alerted of a SUSE operating system audit processing failure event."/> -- </overlay> -- <overlay owner="disastig" ruleid="postfix_client_configure_mail_alias" ownerid="SLES-12-020050" disa="139" severity="medium"> -- <VMSinfo VKey="217195" SVKey="217195r6032" VRelease="r603262"/> -- <title text="The Information System Security Officer (ISSO) and System Administrator (SA), at a minimum, must have mail aliases to be notified of a SUSE operating system audit processing failure."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_data_disk_full_action" ownerid="SLES-12-020060" disa="140" severity="medium"> -- <VMSinfo VKey="217196" SVKey="217196r6032" VRelease="r603262"/> -- <title text="The SUSE operating system audit system must take appropriate action when the audit storage volume is full."/> -- </overlay> -- <overlay owner="disastig" ruleid="package_audit-audispd-plugins_installed" ownerid="SLES-12-020070" disa="1851" severity="medium"> -- <VMSinfo VKey="217197" SVKey="217197r6032" VRelease="r603262"/> -- <title text="The audit-audispd-plugins must be installed on the SUSE operating system."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_audispd_encrypt_sent_records" ownerid="SLES-12-020080" disa="1851" severity="low"> -- <VMSinfo VKey="217198" SVKey="217198r6032" VRelease="r603262"/> -- <title text="The SUSE operating system audit event multiplexor must be configured to use Kerberos."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_audispd_configure_remote_server" ownerid="SLES-12-020090" disa="1851" severity="low"> -- <VMSinfo VKey="217199" SVKey="217199r6032" VRelease="r603262"/> -- <title text="Audispd must off-load audit records onto a different system or media from the SUSE operating system being audited."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_audispd_network_failure_action" ownerid="SLES-12-020100" disa="1851" severity="medium"> -- <VMSinfo VKey="217200" SVKey="217200r6032" VRelease="r603262"/> -- <title text="The audit system must take appropriate action when the network cannot be used to off-load audit records."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_audispd_disk_full_action" ownerid="SLES-12-020110" disa="1851" severity="medium"> -- <VMSinfo VKey="217201" SVKey="217201r6032" VRelease="r603262"/> -- <title text="Audispd must take appropriate action when the SUSE operating system audit storage is full."/> -- </overlay> -- <overlay owner="disastig" ruleid="permissions_local_var_log_audit" ownerid="SLES-12-020120" disa="164" severity="medium"> -- <VMSinfo VKey="217202" SVKey="217202r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must protect audit rules from unauthorized modification."/> -- </overlay> -- <overlay owner="disastig" ruleid="permissions_local_audit_binaries" ownerid="SLES-12-020130" disa="1495" severity="medium"> -- <VMSinfo VKey="217203" SVKey="217203r6032" VRelease="r603262"/> -- <title text="The SUSE operating system audit tools must have the proper permissions configured to protect against unauthorized access."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_enable_syscall_auditing" ownerid="SLES-12-020199" disa="366" severity="medium"> -- <VMSinfo VKey="217204" SVKey="217204r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must not disable syscall auditing"/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_usergroup_modification_passwd" ownerid="SLES-12-020200" disa="2132" severity="medium"> -- <VMSinfo VKey="217205" SVKey="217205r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/passwd."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_usergroup_modification_group" ownerid="SLES-12-020210" disa="2130" severity="medium"> -- <VMSinfo VKey="217206" SVKey="217206r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/group."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_usergroup_modification_shadow" ownerid="SLES-12-020220" disa="2132" severity="medium"> -- <VMSinfo VKey="217207" SVKey="217207r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/shadow."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_usergroup_modification_opasswd" ownerid="SLES-12-020230" disa="2130" severity="medium"> -- <VMSinfo VKey="217208" SVKey="217208r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/opasswd."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_suid_privilege_function" ownerid="SLES-12-020240" disa="1882" severity="low"> -- <VMSinfo VKey="217209" SVKey="217209r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must generate audit records for all uses of the privileged functions."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_su" ownerid="SLES-12-020250" disa="2884" severity="medium"> -- <VMSinfo VKey="217210" SVKey="217210r6038" VRelease="r603896"/> -- <title text="The SUSE operating system must generate audit records for all uses of the su command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_sudo" ownerid="SLES-12-020260" disa="2884" severity="low"> -- <VMSinfo VKey="217211" SVKey="217211r6038" VRelease="r603899"/> -- <title text="The SUSE operating system must generate audit records for all uses of the sudo command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_chfn" ownerid="SLES-12-020280" disa="2884" severity="low"> -- <VMSinfo VKey="217212" SVKey="217212r6039" VRelease="r603902"/> -- <title text="The SUSE operating system must generate audit records for all uses of the chfn command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_mount" ownerid="SLES-12-020290" disa="2884" severity="low"> -- <VMSinfo VKey="217213" SVKey="217213r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must generate audit records for all uses of the mount command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_umount" ownerid="SLES-12-020300" disa="2884" severity="low"> -- <VMSinfo VKey="217214" SVKey="217214r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must generate audit records for all uses of the umount command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_ssh_agent" ownerid="SLES-12-020310" disa="2884" severity="low"> -- <VMSinfo VKey="217215" SVKey="217215r6039" VRelease="r603905"/> -- <title text="The SUSE operating system must generate audit records for all uses of the ssh-agent command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_ssh_keysign" ownerid="SLES-12-020320" disa="2884" severity="low"> -- <VMSinfo VKey="217216" SVKey="217216r6039" VRelease="r603908"/> -- <title text="The SUSE operating system must generate audit records for all uses of the ssh-keysign command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_kmod" ownerid="SLES-12-020360" disa="2884" severity="medium"> -- <VMSinfo VKey="217217" SVKey="217217r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must generate audit records for all uses of the kmod command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_dac_modification_setxattr" ownerid="SLES-12-020370" disa="2884" severity="medium"> -- <VMSinfo VKey="217218" SVKey="217218r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must generate audit records for all uses of the setxattr command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_dac_modification_fsetxattr" ownerid="SLES-12-020380" disa="2884" severity="medium"> -- <VMSinfo VKey="217219" SVKey="217219r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must generate audit records for all uses of the fsetxattr command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_dac_modification_removexattr" ownerid="SLES-12-020390" disa="2884" severity="medium"> -- <VMSinfo VKey="217220" SVKey="217220r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must generate audit records for all uses of the removexattr command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_dac_modification_lremovexattr" ownerid="SLES-12-020400" disa="2884" severity="medium"> -- <VMSinfo VKey="217221" SVKey="217221r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must generate audit records for all uses of the lremovexattr command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_dac_modification_fremovexattr" ownerid="SLES-12-020410" disa="2884" severity="medium"> -- <VMSinfo VKey="217222" SVKey="217222r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must generate audit records for all uses of the fremovexattr command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_dac_modification_chown" ownerid="SLES-12-020420" disa="2884" severity="medium"> -- <VMSinfo VKey="217223" SVKey="217223r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must generate audit records for all uses of the chown command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_dac_modification_fchown" ownerid="SLES-12-020430" disa="2884" severity="medium"> -- <VMSinfo VKey="217224" SVKey="217224r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must generate audit records for all uses of the fchown command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_dac_modification_lchown" ownerid="SLES-12-020440" disa="2884" severity="medium"> -- <VMSinfo VKey="217225" SVKey="217225r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must generate audit records for all uses of the lchown command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_dac_modification_fchownat" ownerid="SLES-12-020450" disa="2884" severity="medium"> -- <VMSinfo VKey="217226" SVKey="217226r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must generate audit records for all uses of the fchownat command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_dac_modification_chmod" ownerid="SLES-12-020460" disa="2884" severity="medium"> -- <VMSinfo VKey="217227" SVKey="217227r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must generate audit records for all uses of the chmod command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_dac_modification_fchmod" ownerid="SLES-12-020470" disa="2884" severity="medium"> -- <VMSinfo VKey="217228" SVKey="217228r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must generate audit records for all uses of the fchmod command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_dac_modification_fchmodat" ownerid="SLES-12-020480" disa="2884" severity="medium"> -- <VMSinfo VKey="217229" SVKey="217229r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must generate audit records for all uses of the fchmodat command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_unsuccessful_file_modification_open" ownerid="SLES-12-020490" disa="2884" severity="medium"> -- <VMSinfo VKey="217230" SVKey="217230r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must generate audit records for all uses of the open command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_unsuccessful_file_modification_truncate" ownerid="SLES-12-020500" disa="172" severity="medium"> -- <VMSinfo VKey="217231" SVKey="217231r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must generate audit records for all uses of the truncate command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_unsuccessful_file_modification_ftruncate" ownerid="SLES-12-020510" disa="2884" severity="medium"> -- <VMSinfo VKey="217232" SVKey="217232r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must generate audit records for all uses of the ftruncate command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_unsuccessful_file_modification_creat" ownerid="SLES-12-020520" disa="2884" severity="medium"> -- <VMSinfo VKey="217233" SVKey="217233r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must generate audit records for all uses of the creat command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_unsuccessful_file_modification_openat" ownerid="SLES-12-020530" disa="2884" severity="medium"> -- <VMSinfo VKey="217234" SVKey="217234r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must generate audit records for all uses of the openat command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_unsuccessful_file_modification_open_by_handle_at" ownerid="SLES-12-020540" disa="2884" severity="medium"> -- <VMSinfo VKey="217235" SVKey="217235r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must generate audit records for all uses of the open_by_handle_at command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_passwd" ownerid="SLES-12-020550" disa="2884" severity="low"> -- <VMSinfo VKey="217236" SVKey="217236r6039" VRelease="r603911"/> -- <title text="The SUSE operating system must generate audit records for all uses of the passwd command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_gpasswd" ownerid="SLES-12-020560" disa="2884" severity="low"> -- <VMSinfo VKey="217237" SVKey="217237r6039" VRelease="r603914"/> -- <title text="The SUSE operating system must generate audit records for all uses of the gpasswd command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_newgrp" ownerid="SLES-12-020570" disa="2884" severity="low"> -- <VMSinfo VKey="217238" SVKey="217238r6039" VRelease="r603917"/> -- <title text="The SUSE operating system must generate audit records for all uses of the newgrp command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_chsh" ownerid="SLES-12-020580" disa="2884" severity="low"> -- <VMSinfo VKey="217239" SVKey="217239r6039" VRelease="r603920"/> -- <title text="The SUSE operating system must generate audit records for a uses of the chsh command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_usergroup_modification_gshadow" ownerid="SLES-12-020590" disa="2130" severity="medium"> -- <VMSinfo VKey="217240" SVKey="217240r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/gshadow."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_execution_chmod" ownerid="SLES-12-020600" disa="2884" severity="medium"> -- <VMSinfo VKey="217241" SVKey="217241r6039" VRelease="r603923"/> -- <title text="The SUSE operating system must generate audit records for all uses of the chmod command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_execution_setfacl" ownerid="SLES-12-020610" disa="2884" severity="medium"> -- <VMSinfo VKey="217242" SVKey="217242r6039" VRelease="r603926"/> -- <title text="The SUSE operating system must generate audit records for all uses of the setfacl command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_execution_chacl" ownerid="SLES-12-020620" disa="2884" severity="medium"> -- <VMSinfo VKey="217243" SVKey="217243r6039" VRelease="r603929"/> -- <title text="The SUSE operating system must generate audit records for all uses of the chacl command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_execution_chcon" ownerid="SLES-12-020630" disa="2884" severity="medium"> -- <VMSinfo VKey="217244" SVKey="217244r6039" VRelease="r603932"/> -- <title text="Successful/unsuccessful attempts to modify categories of information (e.g., classification levels) must generate audit records."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_execution_rm" ownerid="SLES-12-020640" disa="2884" severity="medium"> -- <VMSinfo VKey="217245" SVKey="217245r6039" VRelease="r603935"/> -- <title text="The SUSE operating system must generate audit records for all uses of the rm command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_login_events_tallylog" ownerid="SLES-12-020650" disa="2884" severity="medium"> -- <VMSinfo VKey="217246" SVKey="217246r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must generate audit records for all modifications to the tallylog file must generate an audit record."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_login_events_lastlog" ownerid="SLES-12-020660" disa="2884" severity="medium"> -- <VMSinfo VKey="217247" SVKey="217247r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must generate audit records for all modifications to the lastlog file."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_passmass" ownerid="SLES-12-020670" disa="2884" severity="medium"> -- <VMSinfo VKey="217248" SVKey="217248r6039" VRelease="r603938"/> -- <title text="The SUSE operating system must generate audit records for all uses of the passmass command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_unix_chkpwd" ownerid="SLES-12-020680" disa="2884" severity="medium"> -- <VMSinfo VKey="217249" SVKey="217249r6039" VRelease="r603941"/> -- <title text="The SUSE operating system must generate audit records for all uses of the unix_chkpwd command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_chage" ownerid="SLES-12-020690" disa="2884" severity="medium"> -- <VMSinfo VKey="217250" SVKey="217250r6039" VRelease="r603944"/> -- <title text="The SUSE operating system must generate audit records for all uses of the chage command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_usermod" ownerid="SLES-12-020700" disa="2884" severity="medium"> -- <VMSinfo VKey="217251" SVKey="217251r6039" VRelease="r603947"/> -- <title text="The SUSE operating system must generate audit records for all uses of the usermod command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_crontab" ownerid="SLES-12-020710" disa="2884" severity="medium"> -- <VMSinfo VKey="217252" SVKey="217252r6039" VRelease="r603950"/> -- <title text="The SUSE operating system must generate audit records for all uses of the crontab command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_pam_timestamp_check" ownerid="SLES-12-020720" disa="2884" severity="medium"> -- <VMSinfo VKey="217253" SVKey="217253r6039" VRelease="r603953"/> -- <title text="The SUSE operating system must generate audit records for all uses of the pam_timestamp_check command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_kernel_module_loading_delete" ownerid="SLES-12-020730" disa="2884" severity="medium"> -- <VMSinfo VKey="217254" SVKey="217254r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must generate audit records for all uses of the delete_module command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_kernel_module_loading_finit" ownerid="SLES-12-020740" disa="2884" severity="medium"> -- <VMSinfo VKey="217255" SVKey="217255r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must generate audit records for all uses of the finit_module command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_kernel_module_loading_init" ownerid="SLES-12-020750" disa="2884" severity="medium"> -- <VMSinfo VKey="217256" SVKey="217256r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must generate audit records for all uses of the init_module command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_login_events_faillog" ownerid="SLES-12-020760" disa="2884" severity="medium"> -- <VMSinfo VKey="217257" SVKey="217257r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must generate audit records for all modifications to the faillog file."/> -- </overlay> -- <overlay owner="disastig" ruleid="package_telnet-server_removed" ownerid="SLES-12-030000" disa="381" severity="medium"> -- <VMSinfo VKey="217258" SVKey="217258r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must not have the telnet-server package installed."/> -- </overlay> -- <overlay owner="disastig" ruleid="ftp_present_banner" ownerid="SLES-12-030010" disa="48" severity="medium"> -- <VMSinfo VKey="217259" SVKey="217259r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must display the Standard Mandatory DoD Notice and Consent Banner before granting access via SFTP/FTP."/> -- </overlay> -- <overlay owner="disastig" ruleid="banner_etc_gdm_banner" ownerid="SLES-12-030020" disa="50" severity="medium"> -- <VMSinfo VKey="217260" SVKey="217260r6032" VRelease="r603262"/> -- <title text="The SUSE operating system file /etc/gdm/banner must contain the Standard Mandatory DoD Notice and Consent banner text."/> -- </overlay> -- <overlay owner="disastig" ruleid="susefirewall2_only_required_services" ownerid="SLES-12-030030" disa="2080" severity="medium"> -- <VMSinfo VKey="217261" SVKey="217261r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must be configured to prohibit or restrict the use of functions, ports, protocols, and/or services as defined in the Ports, Protocols, and Services Management (PPSM) Category Assignments List (CAL) and vulnerability assessments."/> -- </overlay> -- <overlay owner="disastig" ruleid="susefirewall2_ddos_protection" ownerid="SLES-12-030040" disa="2385" severity="high"> -- <VMSinfo VKey="217262" SVKey="217262r6032" VRelease="r603262"/> -- <title text="SuSEfirewall2 must protect against or limit the effects of Denial-of-Service (DoS) attacks on the SUSE operating system by implementing rate-limiting measures on impacted network interfaces."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_enable_warning_banner" ownerid="SLES-12-030050" disa="48" severity="medium"> -- <VMSinfo VKey="217263" SVKey="217263r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must display the Standard Mandatory DoD Notice and Consent Banner before granting access via SSH."/> -- </overlay> -- <overlay owner="disastig" ruleid="service_sshd_enabled" ownerid="SLES-12-030100" disa="2422" severity="high"> -- <VMSinfo VKey="217264" SVKey="217264r6032" VRelease="r603262"/> -- <title text="All networked SUSE operating systems must have and implement SSH to protect the confidentiality and integrity of transmitted and received information, as well as information during preparation for transmission."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_set_loglevel_verbose" ownerid="SLES-12-030110" disa="67" severity="medium"> -- <VMSinfo VKey="217265" SVKey="217265r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must log SSH connection attempts and failures to the server."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_print_last_log" ownerid="SLES-12-030130" disa="366" severity="medium"> -- <VMSinfo VKey="217266" SVKey="217266r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must display the date and time of the last successful account logon upon an SSH logon."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_disable_root_login" ownerid="SLES-12-030140" disa="770" severity="medium"> -- <VMSinfo VKey="217267" SVKey="217267r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must deny direct logons to the root account using remote access via SSH."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_disable_empty_passwords" ownerid="SLES-12-030150" disa="366" severity="high"> -- <VMSinfo VKey="217268" SVKey="217268r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must not allow automatic logon via SSH."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_do_not_permit_user_env" ownerid="SLES-12-030151" disa="366" severity="medium"> -- <VMSinfo VKey="217269" SVKey="217269r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must not allow unattended logon via SSH."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_use_approved_ciphers" ownerid="SLES-12-030170" disa="2890" severity="medium"> -- <VMSinfo VKey="217270" SVKey="217270r6039" VRelease="r603956"/> -- <title text="The SUSE operating system must implement DoD-approved encryption to protect the confidentiality of SSH remote connections."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_use_approved_macs" ownerid="SLES-12-030180" disa="3123" severity="medium"> -- <VMSinfo VKey="217271" SVKey="217271r6039" VRelease="r603959"/> -- <title text="The SUSE operating system SSH daemon must be configured to only use Message Authentication Codes (MACs) employing FIPS 140-2 approved cryptographic hash algorithms."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_set_idle_timeout" ownerid="SLES-12-030190" disa="2361" severity="medium"> -- <VMSinfo VKey="217272" SVKey="217272r6032" VRelease="r603262"/> -- <title text="The SUSE operating system SSH daemon must be configured with a timeout interval."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_set_keepalive" ownerid="SLES-12-030191" disa="2361" severity="medium"> -- <VMSinfo VKey="217273" SVKey="217273r6039" VRelease="r603961"/> -- <title text="The SUSE operating system for all network connections associated with SSH traffic must immediately terminate at the end of the session or after 10 minutes of inactivity."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_disable_user_known_hosts" ownerid="SLES-12-030200" disa="366" severity="medium"> -- <VMSinfo VKey="217274" SVKey="217274r6032" VRelease="r603262"/> -- <title text="The SUSE operating system SSH daemon must be configured to not allow authentication using known hosts authentication."/> -- </overlay> -- <overlay owner="disastig" ruleid="file_permissions_sshd_pub_key" ownerid="SLES-12-030210" disa="366" severity="medium"> -- <VMSinfo VKey="217275" SVKey="217275r6032" VRelease="r603262"/> -- <title text="The SUSE operating system SSH daemon public host key files must have mode 0644 or less permissive."/> -- </overlay> -- <overlay owner="disastig" ruleid="file_permissions_sshd_private_key" ownerid="SLES-12-030220" disa="366" severity="medium"> -- <VMSinfo VKey="217276" SVKey="217276r6032" VRelease="r603262"/> -- <title text="The SUSE operating system SSH daemon private host key files must have mode 0600 or less permissive."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_enable_strictmodes" ownerid="SLES-12-030230" disa="366" severity="medium"> -- <VMSinfo VKey="217277" SVKey="217277r6032" VRelease="r603262"/> -- <title text="The SUSE operating system SSH daemon must perform strict mode checking of home directory configuration files."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_use_priv_separation" ownerid="SLES-12-030240" disa="366" severity="medium"> -- <VMSinfo VKey="217278" SVKey="217278r6032" VRelease="r603262"/> -- <title text="The SUSE operating system SSH daemon must use privilege separation."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_disable_compression" ownerid="SLES-12-030250" disa="366" severity="medium"> -- <VMSinfo VKey="217279" SVKey="217279r6032" VRelease="r603262"/> -- <title text="The SUSE operating system SSH daemon must not allow compression or must only allow compression after successful authentication."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_enable_x11_forwarding" ownerid="SLES-12-030260" disa="366" severity="medium"> -- <VMSinfo VKey="217280" SVKey="217280r6039" VRelease="r603964"/> -- <title text="The SUSE operating system SSH daemon must disable forwarded remote X connections for interactive users, unless to fulfill documented and validated mission requirements."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_disable_root_login" ownerid="SLES-12-030261" disa="366" severity="medium"> -- <VMSinfo VKey="233308" SVKey="233308r6033" VRelease="r603331"/> -- <title text="The SUSE operating system SSH daemon must prevent remote hosts from connecting to the proxy display."/> -- </overlay> -- <overlay owner="disastig" ruleid="chronyd_or_ntpd_set_maxpoll" ownerid="SLES-12-030300" disa="1891" severity="medium"> -- <VMSinfo VKey="217281" SVKey="217281r6032" VRelease="r603262"/> -- <title text="The SUSE operating system clock must, for networked systems, be synchronized to an authoritative DoD time source at least every 24 hours."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_suid_privilege_function" ownerid="SLES-12-030310" disa="1890" severity="low"> -- <VMSinfo VKey="217282" SVKey="217282r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must be configured to use Coordinated Universal Time (UTC) or Greenwich Mean Time (GMT)."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_kernel_kptr_restrict" ownerid="SLES-12-030320" disa="2824" severity="medium"> -- <VMSinfo VKey="217283" SVKey="217283r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must implement kptr-restrict to prevent the leaking of internal kernel addresses."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_kernel_randomize_va_space" ownerid="SLES-12-030330" disa="2824" severity="medium"> -- <VMSinfo VKey="217284" SVKey="217284r6032" VRelease="r603262"/> -- <title text="Address space layout randomization (ASLR) must be implemented by the SUSE operating system to protect memory from unauthorized code execution."/> -- </overlay> -- <overlay owner="disastig" ruleid="rsyslog_remote_loghost" ownerid="SLES-12-030340" disa="1851" severity="medium"> -- <VMSinfo VKey="217285" SVKey="217285r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must off-load rsyslog messages for networked systems in real time and off-load standalone systems at least weekly."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_net_ipv4_tcp_syncookies" ownerid="SLES-12-030350" disa="1095" severity="medium"> -- <VMSinfo VKey="217286" SVKey="217286r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must be configured to use TCP syncookies."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_net_ipv4_conf_all_accept_source_route" ownerid="SLES-12-030360" disa="366" severity="medium"> -- <VMSinfo VKey="217287" SVKey="217287r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must not forward Internet Protocol version 4 (IPv4) source-routed packets."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_net_ipv6_conf_all_accept_source_route" ownerid="SLES-12-030361" disa="366" severity="medium"> -- <VMSinfo VKey="217288" SVKey="217288r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must not forward Internet Protocol version 6 (IPv6) source-routed packets."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_net_ipv4_conf_default_accept_source_route" ownerid="SLES-12-030370" disa="366" severity="medium"> -- <VMSinfo VKey="217289" SVKey="217289r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must not forward Internet Protocol version 4 (IPv4) source-routed packets by default."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_net_ipv4_icmp_echo_ignore_broadcasts" ownerid="SLES-12-030380" disa="366" severity="medium"> -- <VMSinfo VKey="217290" SVKey="217290r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must not respond to Internet Protocol version 4 (IPv4) Internet Control Message Protocol (ICMP) echoes sent to a broadcast address."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_net_ipv4_conf_all_accept_redirects" ownerid="SLES-12-030390" disa="366" severity="medium"> -- <VMSinfo VKey="217291" SVKey="217291r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must prevent Internet Protocol version 4 (IPv4) Internet Control Message Protocol (ICMP) redirect messages from being accepted."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_net_ipv4_conf_default_accept_redirects" ownerid="SLES-12-030400" disa="366" severity="medium"> -- <VMSinfo VKey="217292" SVKey="217292r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must not allow interfaces to accept Internet Protocol version 4 (IPv4) Internet Control Message Protocol (ICMP) redirect messages by default."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_net_ipv6_conf_default_accept_source_route" ownerid="SLES-12-030401" disa="366" severity="medium"> -- <VMSinfo VKey="217293" SVKey="217293r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must not allow interfaces to accept Internet Protocol version 6 (IPv6) Internet Control Message Protocol (ICMP) redirect messages by default."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_net_ipv4_conf_default_send_redirects" ownerid="SLES-12-030410" disa="366" severity="medium"> -- <VMSinfo VKey="217294" SVKey="217294r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must not allow interfaces to send Internet Protocol version 4 (IPv4) Internet Control Message Protocol (ICMP) redirect messages by default."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_net_ipv4_conf_all_send_redirects" ownerid="SLES-12-030420" disa="366" severity="medium"> -- <VMSinfo VKey="217295" SVKey="217295r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must not send Internet Protocol version 4 (IPv4) Internet Control Message Protocol (ICMP) redirects."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_net_ipv4_ip_forward" ownerid="SLES-12-030430" disa="366" severity="medium"> -- <VMSinfo VKey="217296" SVKey="217296r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must not be performing packet forwarding unless the system is a router."/> -- </overlay> -- <overlay owner="disastig" ruleid="network_sniffer_disabled" ownerid="SLES-12-030440" disa="366" severity="medium"> -- <VMSinfo VKey="217297" SVKey="217297r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must not have network interfaces in promiscuous mode unless approved and documented."/> -- </overlay> -- <overlay owner="disastig" ruleid="wireless_disable_interfaces" ownerid="SLES-12-030450" disa="2418" severity="medium"> -- <VMSinfo VKey="217298" SVKey="217298r6032" VRelease="r603262"/> -- <title text="The SUSE operating system wireless network adapters must be disabled unless approved and documented."/> -- </overlay> -- <overlay owner="disastig" ruleid="install_smartcard_packages" ownerid="SLES-12-030500" disa="1954" severity="medium"> -- <VMSinfo VKey="217299" SVKey="217299r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must have the packages required for multifactor authentication to be installed."/> -- </overlay> -- <overlay owner="disastig" ruleid="smartcard_configure_cert_checking" ownerid="SLES-12-030510" disa="1953" severity="medium"> -- <VMSinfo VKey="217300" SVKey="217300r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must implement certificate status checking for multifactor authentication."/> -- </overlay> -- <overlay owner="disastig" ruleid="smartcard_pam_enabled" ownerid="SLES-12-030520" disa="1954" severity="medium"> -- <VMSinfo VKey="217301" SVKey="217301r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must implement multifactor authentication for access to privileged accounts via pluggable authentication modules (PAM)."/> -- </overlay> -- <overlay owner="disastig" ruleid="smartcard_configure_ca" ownerid="SLES-12-030530" disa="1991" severity="medium"> -- <VMSinfo VKey="217302" SVKey="217302r6032" VRelease="r603262"/> -- <title text="The SUSE operating system, for PKI-based authentication, must validate certificates by constructing a certification path (which includes status information) to an accepted trust anchor."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_disable_root_login" ownerid="SLES-12-030611" disa="1668" severity="high"> -- <VMSinfo VKey="222386" SVKey="222386r6032" VRelease="r603262"/> -- <title text="The SUSE operating system must use a virus scan program."/> -- </overlay> --</overlays> -diff --git a/products/sle15/overlays/stig_overlay.xml b/products/sle15/overlays/stig_overlay.xml -deleted file mode 100644 -index 2f09bcdeee5..00000000000 ---- a/products/sle15/overlays/stig_overlay.xml -+++ /dev/null -@@ -1,935 +0,0 @@ --<?xml version="1.0" encoding="UTF-8"?> --<overlays xmlns="http://checklists.nist.gov/xccdf/1.1"> -- <overlay owner="disastig" ruleid="installed_OS_is_vendor_supported" ownerid="SLES-15-010000" disa="1230" severity="high"> -- <VMSinfo VKey="234800" SVKey="234800r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must be a vendor-supported release."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="SLES-15-010001" disa="1233" severity="medium"> -- <VMSinfo VKey="234801" SVKey="234801r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must deploy Endpoint Security for Linux Threat Prevention (ENSLTP)."/> -- </overlay> -- <overlay owner="disastig" ruleid="security_patches_up_to_date" ownerid="SLES-15-010010" disa="1227" severity="medium"> -- <VMSinfo VKey="234802" SVKey="234802r6221" VRelease="r622137"/> -- <title text="Vendor-packaged SUSE operating system security patches and updates must be installed and up to date."/> -- </overlay> -- <overlay owner="disastig" ruleid="banner_etc_issue" ownerid="SLES-15-010020" disa="48" severity="medium"> -- <VMSinfo VKey="234803" SVKey="234803r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must display the Standard Mandatory DoD Notice and Consent Banner before granting access via local console."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="SLES-15-010030" disa="381" severity="high"> -- <VMSinfo VKey="234804" SVKey="234804r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must not have the vsftpd package installed if not required for operational support."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_enable_warning_banner" ownerid="SLES-15-010040" disa="1388" severity="medium"> -- <VMSinfo VKey="234805" SVKey="234805r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must display the Standard Mandatory DoD Notice and Consent Banner before granting access via SSH."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_enable_warning_banner" ownerid="SLES-15-010050" disa="50" severity="medium"> -- <VMSinfo VKey="234806" SVKey="234806r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must display the Standard Mandatory DoD Notice and Consent Banner until users acknowledge the usage conditions and take explicit actions to log on for further access to the local graphical user interface (GUI)."/> -- </overlay> -- <overlay owner="disastig" ruleid="banner_etc_gdm_banner" ownerid="SLES-15-010060" disa="50" severity="medium"> -- <VMSinfo VKey="234807" SVKey="234807r6221" VRelease="r622137"/> -- <title text="The SUSE operating system file /etc/gdm/banner must contain the Standard Mandatory DoD Notice and Consent banner text."/> -- </overlay> -- <overlay owner="disastig" ruleid="dconf_gnome_banner_enabled" ownerid="SLES-15-010080" disa="1387" severity="medium"> -- <VMSinfo VKey="234808" SVKey="234808r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must display a banner before granting local or remote access to the system via a graphical user logon."/> -- </overlay> -- <overlay owner="disastig" ruleid="dconf_gnome_login_banner_text" ownerid="SLES-15-010090" disa="1388" severity="medium"> -- <VMSinfo VKey="234809" SVKey="234809r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must display the approved Standard Mandatory DoD Notice before granting local or remote access to the system via a graphical user logon."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="SLES-15-010100" disa="56" severity="medium"> -- <VMSinfo VKey="234810" SVKey="234810r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must be able to lock the graphical user interface (GUI)."/> -- </overlay> -- <overlay owner="disastig" ruleid="vlock_installed" ownerid="SLES-15-010110" disa="58" severity="low"> -- <VMSinfo VKey="234811" SVKey="234811r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must utilize vlock to allow for session locking."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_tmout" ownerid="SLES-15-010120" disa="57" severity="medium"> -- <VMSinfo VKey="234812" SVKey="234812r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must initiate a session lock after a 15-minute period of inactivity for the graphical user interface (GUI)."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_tmout" ownerid="SLES-15-010130" disa="57" severity="medium"> -- <VMSinfo VKey="234813" SVKey="234813r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must initiate a session lock after a 15-minute period of inactivity."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="SLES-15-010140" disa="60" severity="low"> -- <VMSinfo VKey="234814" SVKey="234814r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must conceal, via the session lock, information previously visible on the display with a publicly viewable image in the graphical user interface (GUI)."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_set_loglevel_verbose" ownerid="SLES-15-010150" disa="67" severity="medium"> -- <VMSinfo VKey="234815" SVKey="234815r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must log SSH connection attempts and failures to the server."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_use_approved_ciphers_ordered_stig" ownerid="SLES-15-010160" disa="68" severity="medium"> -- <VMSinfo VKey="234816" SVKey="234816r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must implement DoD-approved encryption to protect the confidentiality of SSH remote connections."/> -- </overlay> -- <overlay owner="disastig" ruleid="smartcard_configure_ca" ownerid="SLES-15-010170" disa="1991" severity="medium"> -- <VMSinfo VKey="234817" SVKey="234817r6221" VRelease="r622137"/> -- <title text="The SUSE operating system, for PKI-based authentication, must validate certificates by constructing a certification path (which includes status information) to an accepted trust anchor."/> -- </overlay> -- <overlay owner="disastig" ruleid="package_telnet-server_removed" ownerid="SLES-15-010180" disa="381" severity="high"> -- <VMSinfo VKey="234818" SVKey="234818r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must not have the telnet-server package installed."/> -- </overlay> -- <overlay owner="disastig" ruleid="grub2_password" ownerid="SLES-15-010190" disa="213" severity="high"> -- <VMSinfo VKey="234819" SVKey="234819r6221" VRelease="r622137"/> -- <title text="SUSE operating systems with a basic input/output system (BIOS) must require authentication upon booting into single-user and maintenance modes."/> -- </overlay> -- <overlay owner="disastig" ruleid="grub2_uefi_password" ownerid="SLES-15-010200" disa="213" severity="high"> -- <VMSinfo VKey="234820" SVKey="234820r6221" VRelease="r622137"/> -- <title text="SUSE operating systems with Unified Extensible Firmware Interface (UEFI) implemented must require authentication upon booting into single-user mode and maintenance."/> -- </overlay> -- <overlay owner="disastig" ruleid="kernel_module_dccp_disabled" ownerid="SLES-15-010220" disa="2314" severity="medium"> -- <VMSinfo VKey="234821" SVKey="234821r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must be configured to prohibit or restrict the use of functions, ports, protocols, and/or services as defined in the Ports, Protocols, and Services Management (PPSM) Category Assignments List (CAL) and vulnerability assessments."/> -- </overlay> -- <overlay owner="disastig" ruleid="account_unique_id" ownerid="SLES-15-010230" disa="804" severity="medium"> -- <VMSinfo VKey="234822" SVKey="234822r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must not have duplicate User IDs (UIDs) for interactive users."/> -- </overlay> -- <overlay owner="disastig" ruleid="service_autofs_disabled" ownerid="SLES-15-010240" disa="1958" severity="medium"> -- <VMSinfo VKey="234823" SVKey="234823r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must disable the file system automounter unless required."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_use_approved_ciphers_ordered_stig" ownerid="SLES-15-010250" disa="803" severity="medium"> -- <VMSinfo VKey="234824" SVKey="234824r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must employ FIPS 140-2 approved cryptographic hashing algorithm for system authentication (system-auth)."/> -- </overlay> -- <overlay owner="disastig" ruleid="set_password_hashing_algorithm_logindefs" ownerid="SLES-15-010260" disa="803" severity="medium"> -- <VMSinfo VKey="234825" SVKey="234825r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must employ FIPS 140-2 approved cryptographic hashing algorithm for system authentication (login.defs)."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_use_approved_macs_ordered_stig" ownerid="SLES-15-010270" disa="3123" severity="medium"> -- <VMSinfo VKey="234826" SVKey="234826r6221" VRelease="r622137"/> -- <title text="The SUSE operating system SSH daemon must be configured to only use Message Authentication Codes (MACs) employing FIPS 140-2 approved cryptographic hash algorithms."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_set_idle_timeout" ownerid="SLES-15-010280" disa="2361" severity="medium"> -- <VMSinfo VKey="234827" SVKey="234827r6221" VRelease="r622137"/> -- <title text="The SUSE operating system SSH daemon must be configured with a timeout interval."/> -- </overlay> -- <overlay owner="disastig" ruleid="dir_perms_world_writable_sticky_bits" ownerid="SLES-15-010300" disa="1090" severity="medium"> -- <VMSinfo VKey="234828" SVKey="234828r6221" VRelease="r622137"/> -- <title text="The sticky bit must be set on all SUSE operating system world-writable directories."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_net_ipv4_tcp_syncookies" ownerid="SLES-15-010310" disa="1095" severity="medium"> -- <VMSinfo VKey="234829" SVKey="234829r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must be configured to use TCP syncookies."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_set_keepalive_0" ownerid="SLES-15-010320" disa="2361" severity="medium"> -- <VMSinfo VKey="234830" SVKey="234830r6221" VRelease="r622137"/> -- <title text="The SUSE operating system for all network connections associated with SSH traffic must immediately terminate at the end of the session or after 10 minutes of inactivity."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="SLES-15-010330" disa="2475" severity="medium"> -- <VMSinfo VKey="234831" SVKey="234831r6221" VRelease="r622137"/> -- <title text="All SUSE operating system persistent disk partitions must implement cryptographic mechanisms to prevent unauthorized disclosure or modification of all information that requires at-rest protection."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="SLES-15-010340" disa="1312" severity="medium"> -- <VMSinfo VKey="234832" SVKey="234832r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate error messages that provide information necessary for corrective actions without revealing information that could be exploited by adversaries."/> -- </overlay> -- <overlay owner="disastig" ruleid="file_permissions_var_log_messages" ownerid="SLES-15-010350" disa="1314" severity="medium"> -- <VMSinfo VKey="234833" SVKey="234833r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must prevent unauthorized users from accessing system error messages."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="SLES-15-010351" disa="1499" severity="medium"> -- <VMSinfo VKey="234834" SVKey="234834r6221" VRelease="r622137"/> -- <title text="The SUSE operating system library files must have mode 0755 or less permissive."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="SLES-15-010352" disa="1499" severity="medium"> -- <VMSinfo VKey="234835" SVKey="234835r6221" VRelease="r622137"/> -- <title text="The SUSE operating system library directories must have mode 0755 or less permissive."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="SLES-15-010353" disa="1499" severity="medium"> -- <VMSinfo VKey="234836" SVKey="234836r6221" VRelease="r622137"/> -- <title text="The SUSE operating system library files must be owned by root."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="SLES-15-010354" disa="1499" severity="medium"> -- <VMSinfo VKey="234837" SVKey="234837r6221" VRelease="r622137"/> -- <title text="The SUSE operating system library directories must be owned by root."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="SLES-15-010355" disa="1499" severity="medium"> -- <VMSinfo VKey="234838" SVKey="234838r6221" VRelease="r622137"/> -- <title text="The SUSE operating system library files must be group-owned by root."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="SLES-15-010356" disa="1499" severity="medium"> -- <VMSinfo VKey="234839" SVKey="234839r6221" VRelease="r622137"/> -- <title text="The SUSE operating system library directories must be group-owned by root."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="SLES-15-010357" disa="1499" severity="medium"> -- <VMSinfo VKey="234840" SVKey="234840r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must have system commands set to a mode of 0755 or less permissive."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="SLES-15-010358" disa="1499" severity="medium"> -- <VMSinfo VKey="234841" SVKey="234841r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must have directories that contain system commands set to a mode of 0755 or less permissive."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="SLES-15-010359" disa="1499" severity="medium"> -- <VMSinfo VKey="234842" SVKey="234842r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must have system commands owned by root."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="SLES-15-010360" disa="1499" severity="medium"> -- <VMSinfo VKey="234843" SVKey="234843r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must have directories that contain system commands owned by root."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="SLES-15-010361" disa="1499" severity="medium"> -- <VMSinfo VKey="234844" SVKey="234844r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must have system commands group-owned by root."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="SLES-15-010362" disa="1499" severity="medium"> -- <VMSinfo VKey="234845" SVKey="234845r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must have directories that contain system commands group-owned by root."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="SLES-15-010370" disa="2322" severity="medium"> -- <VMSinfo VKey="234846" SVKey="234846r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must have a firewall system installed to immediately disconnect or disable remote access to the whole operating system."/> -- </overlay> -- <overlay owner="disastig" ruleid="wireless_disable_interfaces" ownerid="SLES-15-010380" disa="2418" severity="medium"> -- <VMSinfo VKey="234847" SVKey="234847r6221" VRelease="r622137"/> -- <title text="The SUSE operating system wireless network adapters must be disabled unless approved and documented."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="SLES-15-010390" disa="1774" severity="medium"> -- <VMSinfo VKey="234848" SVKey="234848r6221" VRelease="r622137"/> -- <title text="SUSE operating system AppArmor tool must be configured to control whitelisted applications and user home directory access control."/> -- </overlay> -- <overlay owner="disastig" ruleid="chronyd_or_ntpd_set_maxpoll" ownerid="SLES-15-010400" disa="1891" severity="medium"> -- <VMSinfo VKey="234849" SVKey="234849r6221" VRelease="r622137"/> -- <title text="The SUSE operating system clock must, for networked systems, be synchronized to an authoritative DoD time source at least every 24 hours."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="SLES-15-010410" disa="1890" severity="low"> -- <VMSinfo VKey="234850" SVKey="234850r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must be configured to use Coordinated Universal Time (UTC) or Greenwich Mean Time (GMT)."/> -- </overlay> -- <overlay owner="disastig" ruleid="package_aide_installed" ownerid="SLES-15-010420" disa="2699" severity="medium"> -- <VMSinfo VKey="234851" SVKey="234851r6221" VRelease="r622137"/> -- <title text="Advanced Intrusion Detection Environment (AIDE) must verify the baseline SUSE operating system configuration at least weekly."/> -- </overlay> -- <overlay owner="disastig" ruleid="ensure_gpgcheck_globally_activated" ownerid="SLES-15-010430" disa="1749" severity="high"> -- <VMSinfo VKey="234852" SVKey="234852r6221" VRelease="r622137"/> -- <title text="The SUSE operating system tool zypper must have gpgcheck enabled."/> -- </overlay> -- <overlay owner="disastig" ruleid="sudo_remove_no_authenticate" ownerid="SLES-15-010450" disa="2038" severity="high"> -- <VMSinfo VKey="234853" SVKey="234853r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must reauthenticate users when changing authenticators, roles, or escalating privileges."/> -- </overlay> -- <overlay owner="disastig" ruleid="install_smartcard_packages" ownerid="SLES-15-010460" disa="1954" severity="medium"> -- <VMSinfo VKey="234854" SVKey="234854r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must have the packages required for multifactor authentication to be installed."/> -- </overlay> -- <overlay owner="disastig" ruleid="smartcard_configure_cert_checking" ownerid="SLES-15-010470" disa="1948" severity="medium"> -- <VMSinfo VKey="234855" SVKey="234855r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must implement certificate status checking for multifactor authentication."/> -- </overlay> -- <overlay owner="disastig" ruleid="kernel_module_usb-storage_disabled" ownerid="SLES-15-010480" disa="1958" severity="medium"> -- <VMSinfo VKey="234856" SVKey="234856r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must disable the USB mass storage kernel module."/> -- </overlay> -- <overlay owner="disastig" ruleid="sssd_memcache_timeout" ownerid="SLES-15-010490" disa="2007" severity="medium"> -- <VMSinfo VKey="234857" SVKey="234857r6221" VRelease="r622137"/> -- <title text="If Network Security Services (NSS) is being used by the SUSE operating system it must prohibit the use of cached authentications after one day."/> -- </overlay> -- <overlay owner="disastig" ruleid="sssd_offline_cred_expiration" ownerid="SLES-15-010500" disa="2007" severity="medium"> -- <VMSinfo VKey="234858" SVKey="234858r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must configure the Linux Pluggable Authentication Modules (PAM) to prohibit the use of cached offline authentications after one day."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="SLES-15-010510" disa="2450" severity="high"> -- <VMSinfo VKey="234859" SVKey="234859r6221" VRelease="r622137"/> -- <title text="FIPS 140-2 mode must be enabled on the SUSE operating system."/> -- </overlay> -- <overlay owner="disastig" ruleid="service_sshd_enabled" ownerid="SLES-15-010530" disa="2422" severity="high"> -- <VMSinfo VKey="234860" SVKey="234860r6221" VRelease="r622137"/> -- <title text="All networked SUSE operating systems must have and implement SSH to protect the confidentiality and integrity of transmitted and received information, as well as information during preparation for transmission."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_kernel_kptr_restrict" ownerid="SLES-15-010540" disa="2824" severity="medium"> -- <VMSinfo VKey="234861" SVKey="234861r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must implement kptr-restrict to prevent the leaking of internal kernel addresses."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_kernel_randomize_va_space" ownerid="SLES-15-010550" disa="2824" severity="medium"> -- <VMSinfo VKey="234862" SVKey="234862r6221" VRelease="r622137"/> -- <title text="Address space layout randomization (ASLR) must be implemented by the SUSE operating system to protect memory from unauthorized code execution."/> -- </overlay> -- <overlay owner="disastig" ruleid="clean_components_post_updating" ownerid="SLES-15-010560" disa="2617" severity="medium"> -- <VMSinfo VKey="234863" SVKey="234863r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must remove all outdated software components after updated versions have been installed."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="SLES-15-010570" disa="2702" severity="medium"> -- <VMSinfo VKey="234864" SVKey="234864r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must notify the System Administrator (SA) when Advanced Intrusion Detection Environment (AIDE) discovers anomalies in the operation of any security functions."/> -- </overlay> -- <overlay owner="disastig" ruleid="rsyslog_remote_loghost" ownerid="SLES-15-010580" disa="1851" severity="medium"> -- <VMSinfo VKey="234865" SVKey="234865r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must off-load rsyslog messages for networked systems in real time and off-load standalone systems at least weekly."/> -- </overlay> -- <overlay owner="disastig" ruleid="account_temp_expire_date" ownerid="SLES-15-020000" disa="16" severity="medium"> -- <VMSinfo VKey="234866" SVKey="234866r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must provision temporary accounts with an expiration date for 72 hours."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_passwords_pam_tally2" ownerid="SLES-15-020010" disa="2238" severity="medium"> -- <VMSinfo VKey="234867" SVKey="234867r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must lock an account after three consecutive invalid access attempts."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_max_concurrent_login_sessions" ownerid="SLES-15-020020" disa="54" severity="low"> -- <VMSinfo VKey="234868" SVKey="234868r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must limit the number of concurrent sessions to 10 for all accounts and/or account types."/> -- </overlay> -- <overlay owner="disastig" ruleid="smartcard_pam_enabled" ownerid="SLES-15-020030" disa="768" severity="medium"> -- <VMSinfo VKey="234869" SVKey="234869r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must implement multifactor authentication for access to privileged accounts via pluggable authentication modules (PAM)."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_disable_root_login" ownerid="SLES-15-020040" disa="770" severity="medium"> -- <VMSinfo VKey="234870" SVKey="234870r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must deny direct logons to the root account using remote access via SSH."/> -- </overlay> -- <overlay owner="disastig" ruleid="account_disable_post_pw_expiration" ownerid="SLES-15-020050" disa="795" severity="medium"> -- <VMSinfo VKey="234871" SVKey="234871r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must disable account identifiers (individuals, groups, roles, and devices) after 35 days of inactivity after password expiration."/> -- </overlay> -- <overlay owner="disastig" ruleid="account_emergency_admin" ownerid="SLES-15-020060" disa="1682" severity="medium"> -- <VMSinfo VKey="234872" SVKey="234872r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must never automatically remove or disable emergency administrator accounts."/> -- </overlay> -- <overlay owner="disastig" ruleid="display_login_attempts" ownerid="SLES-15-020080" disa="366" severity="low"> -- <VMSinfo VKey="234873" SVKey="234873r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must display the date and time of the last successful account logon upon logon."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_authorized_local_users" ownerid="SLES-15-020090" disa="366" severity="medium"> -- <VMSinfo VKey="234874" SVKey="234874r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must not have unnecessary accounts."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_disable_root_login" ownerid="SLES-15-020091" disa="366" severity="medium"> -- <VMSinfo VKey="234875" SVKey="234875r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must not have unnecessary account capabilities."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_disable_root_login" ownerid="SLES-15-020100" disa="366" severity="high"> -- <VMSinfo VKey="234876" SVKey="234876r6221" VRelease="r622137"/> -- <title text="The SUSE operating system root account must be the only account with unrestricted access to the system."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_disable_root_login" ownerid="SLES-15-020101" disa="366" severity="medium"> -- <VMSinfo VKey="234877" SVKey="234877r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must restrict privilege elevation to authorized personnel."/> -- </overlay> -- <overlay owner="disastig" ruleid="sudo_remove_no_authenticate" ownerid="SLES-15-020102" disa="2038" severity="medium"> -- <VMSinfo VKey="234878" SVKey="234878r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must require re-authentication when using the "sudo" command."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_disable_root_login" ownerid="SLES-15-020103" disa="366" severity="medium"> -- <VMSinfo VKey="234879" SVKey="234879r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must use the invoking user's password for privilege escalation when using "sudo"."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_have_homedir_login_defs" ownerid="SLES-15-020110" disa="366" severity="medium"> -- <VMSinfo VKey="234880" SVKey="234880r6221" VRelease="r622137"/> -- <title text="All SUSE operating system local interactive user accounts, upon creation, must be assigned a home directory."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_print_last_log" ownerid="SLES-15-020120" disa="366" severity="medium"> -- <VMSinfo VKey="234881" SVKey="234881r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must display the date and time of the last successful account logon upon an SSH logon."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="SLES-15-020130" disa="192" severity="medium"> -- <VMSinfo VKey="234882" SVKey="234882r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must enforce passwords that contain at least one uppercase character."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="SLES-15-020140" disa="193" severity="medium"> -- <VMSinfo VKey="234883" SVKey="234883r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must enforce passwords that contain at least one lowercase character."/> -- </overlay> -- <overlay owner="disastig" ruleid="cracklib_accounts_password_pam_dcredit" ownerid="SLES-15-020150" disa="194" severity="medium"> -- <VMSinfo VKey="234884" SVKey="234884r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must enforce passwords that contain at least one numeric character."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="SLES-15-020160" disa="195" severity="medium"> -- <VMSinfo VKey="234885" SVKey="234885r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must require the change of at least eight of the total number of characters when passwords are changed."/> -- </overlay> -- <overlay owner="disastig" ruleid="set_password_hashing_algorithm_systemauth" ownerid="SLES-15-020170" disa="196" severity="medium"> -- <VMSinfo VKey="234886" SVKey="234886r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must configure the Linux Pluggable Authentication Modules (PAM) to only store encrypted representations of passwords."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_password_all_shadowed_sha512" ownerid="SLES-15-020180" disa="803" severity="medium"> -- <VMSinfo VKey="234887" SVKey="234887r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must employ FIPS 140-2-approved cryptographic hashing algorithms for all stored passwords."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="SLES-15-020190" disa="803" severity="medium"> -- <VMSinfo VKey="234888" SVKey="234888r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must employ FIPS 140-2-approved cryptographic hashing algorithms for all stored passwords."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="SLES-15-020200" disa="198" severity="medium"> -- <VMSinfo VKey="234889" SVKey="234889r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must be configured to create or update passwords with a minimum lifetime of 24 hours (one day)."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="SLES-15-020210" disa="198" severity="medium"> -- <VMSinfo VKey="234890" SVKey="234890r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must employ user passwords with a minimum lifetime of 24 hours (one day)."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_maximum_age_login_defs" ownerid="SLES-15-020220" disa="199" severity="medium"> -- <VMSinfo VKey="234891" SVKey="234891r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must be configured to create or update passwords with a maximum lifetime of 60 days."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_password_set_max_life_existing" ownerid="SLES-15-020230" disa="199" severity="medium"> -- <VMSinfo VKey="234892" SVKey="234892r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must employ user passwords with a maximum lifetime of 60 days."/> -- </overlay> -- <overlay owner="disastig" ruleid="file_etc_security_opasswd" ownerid="SLES-15-020240" disa="200" severity="medium"> -- <VMSinfo VKey="234893" SVKey="234893r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must employ a password history file."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="SLES-15-020250" disa="200" severity="medium"> -- <VMSinfo VKey="234894" SVKey="234894r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must not allow passwords to be reused for a minimum of five generations."/> -- </overlay> -- <overlay owner="disastig" ruleid="cracklib_accounts_password_pam_minlen" ownerid="SLES-15-020260" disa="205" severity="medium"> -- <VMSinfo VKey="234895" SVKey="234895r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must employ passwords with a minimum of 15 characters."/> -- </overlay> -- <overlay owner="disastig" ruleid="cracklib_accounts_password_pam_ocredit" ownerid="SLES-15-020270" disa="1619" severity="medium"> -- <VMSinfo VKey="234896" SVKey="234896r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must enforce passwords that contain at least one special character."/> -- </overlay> -- <overlay owner="disastig" ruleid="cracklib_accounts_password_pam_retry" ownerid="SLES-15-020290" disa="366" severity="medium"> -- <VMSinfo VKey="234897" SVKey="234897r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must prevent the use of dictionary words for passwords."/> -- </overlay> -- <overlay owner="disastig" ruleid="no_empty_passwords" ownerid="SLES-15-020300" disa="366" severity="high"> -- <VMSinfo VKey="234898" SVKey="234898r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must not be configured to allow blank or null passwords."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_usergroup_modification_passwd" ownerid="SLES-15-030000" disa="1686" severity="medium"> -- <VMSinfo VKey="234899" SVKey="234899r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/passwd."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_usergroup_modification_group" ownerid="SLES-15-030010" disa="172" severity="medium"> -- <VMSinfo VKey="234900" SVKey="234900r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/group."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_usergroup_modification_shadow" ownerid="SLES-15-030020" disa="2132" severity="medium"> -- <VMSinfo VKey="234901" SVKey="234901r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/shadow."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_usergroup_modification_passwd" ownerid="SLES-15-030030" disa="1403" severity="medium"> -- <VMSinfo VKey="234902" SVKey="234902r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/security/opasswd."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_usergroup_modification_gshadow" ownerid="SLES-15-030040" disa="2130" severity="medium"> -- <VMSinfo VKey="234903" SVKey="234903r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/gshadow."/> -- </overlay> -- <overlay owner="disastig" ruleid="service_auditd_enabled" ownerid="SLES-15-030050" disa="2884" severity="medium"> -- <VMSinfo VKey="234904" SVKey="234904r6221" VRelease="r622137"/> -- <title text="SUSE operating system audit records must contain information to establish what type of events occurred, the source of events, where events occurred, and the outcome of events."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_ssh_keysign" ownerid="SLES-15-030060" disa="2884" severity="low"> -- <VMSinfo VKey="234905" SVKey="234905r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all uses of the ssh-keysign command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_passwd" ownerid="SLES-15-030070" disa="2884" severity="medium"> -- <VMSinfo VKey="234906" SVKey="234906r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all uses of the passwd command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_gpasswd" ownerid="SLES-15-030080" disa="2884" severity="low"> -- <VMSinfo VKey="234907" SVKey="234907r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all uses of the gpasswd command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_newgrp" ownerid="SLES-15-030090" disa="2884" severity="low"> -- <VMSinfo VKey="234908" SVKey="234908r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all uses of the newgrp command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_chsh" ownerid="SLES-15-030100" disa="2884" severity="low"> -- <VMSinfo VKey="234909" SVKey="234909r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for a uses of the chsh command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_sudo" ownerid="SLES-15-030110" disa="2884" severity="medium"> -- <VMSinfo VKey="234910" SVKey="234910r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all uses of the unix_chkpwd or unix2_chkpwd commands."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_chage" ownerid="SLES-15-030120" disa="2884" severity="medium"> -- <VMSinfo VKey="234911" SVKey="234911r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all uses of the chage command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_crontab" ownerid="SLES-15-030130" disa="2884" severity="medium"> -- <VMSinfo VKey="234912" SVKey="234912r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all uses of the crontab command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_sudo" ownerid="SLES-15-030140" disa="2884" severity="medium"> -- <VMSinfo VKey="234913" SVKey="234913r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must audit all uses of the sudoers file and all files in the /etc/sudoers.d/ directory."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_sudo" ownerid="SLES-15-030150" disa="2884" severity="medium"> -- <VMSinfo VKey="234914" SVKey="234914r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all uses of the open system call."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_sudo" ownerid="SLES-15-030160" disa="2884" severity="medium"> -- <VMSinfo VKey="234915" SVKey="234915r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all uses of the creat system call."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_sudo" ownerid="SLES-15-030170" disa="2884" severity="medium"> -- <VMSinfo VKey="234916" SVKey="234916r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all uses of the openat system call."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_sudo" ownerid="SLES-15-030180" disa="2884" severity="medium"> -- <VMSinfo VKey="234917" SVKey="234917r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all uses of the open_by_handle_at system call."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_sudo" ownerid="SLES-15-030190" disa="2884" severity="medium"> -- <VMSinfo VKey="234918" SVKey="234918r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all uses of the removexattr system call."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_sudo" ownerid="SLES-15-030200" disa="2884" severity="medium"> -- <VMSinfo VKey="234919" SVKey="234919r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all uses of the lremovexattr system call."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_sudo" ownerid="SLES-15-030210" disa="2884" severity="medium"> -- <VMSinfo VKey="234920" SVKey="234920r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all uses of the fremovexattr system call."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_sudo" ownerid="SLES-15-030220" disa="2884" severity="medium"> -- <VMSinfo VKey="234921" SVKey="234921r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all uses of the setxattr system call."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_sudo" ownerid="SLES-15-030230" disa="2884" severity="medium"> -- <VMSinfo VKey="234922" SVKey="234922r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all uses of the fsetxattr system call."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_sudo" ownerid="SLES-15-030240" disa="2884" severity="medium"> -- <VMSinfo VKey="234923" SVKey="234923r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all uses of the lsetxattr system call."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_sudo" ownerid="SLES-15-030250" disa="2884" severity="medium"> -- <VMSinfo VKey="234924" SVKey="234924r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all uses of the chown system call."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_sudo" ownerid="SLES-15-030260" disa="2884" severity="medium"> -- <VMSinfo VKey="234925" SVKey="234925r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all uses of the fchown system call."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_sudo" ownerid="SLES-15-030270" disa="2884" severity="medium"> -- <VMSinfo VKey="234926" SVKey="234926r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all uses of the lchown system call."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_sudo" ownerid="SLES-15-030280" disa="2884" severity="medium"> -- <VMSinfo VKey="234927" SVKey="234927r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all uses of the fchownat system call."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_sudo" ownerid="SLES-15-030290" disa="2884" severity="medium"> -- <VMSinfo VKey="234928" SVKey="234928r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all uses of the chmod system call."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_sudo" ownerid="SLES-15-030300" disa="2884" severity="medium"> -- <VMSinfo VKey="234929" SVKey="234929r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all uses of the fchmod system call."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_sudo" ownerid="SLES-15-030310" disa="2884" severity="medium"> -- <VMSinfo VKey="234930" SVKey="234930r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all uses of the fchmodat system call."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_sudo" ownerid="SLES-15-030320" disa="2884" severity="medium"> -- <VMSinfo VKey="234931" SVKey="234931r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all uses of the ftruncate system call."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_sudo" ownerid="SLES-15-030330" disa="2884" severity="medium"> -- <VMSinfo VKey="234932" SVKey="234932r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all uses of the sudoedit command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_chfn" ownerid="SLES-15-030340" disa="2884" severity="low"> -- <VMSinfo VKey="234933" SVKey="234933r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all uses of the chfn command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_sudo" ownerid="SLES-15-030350" disa="2884" severity="low"> -- <VMSinfo VKey="234934" SVKey="234934r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all uses of the mount system call."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_sudo" ownerid="SLES-15-030360" disa="2884" severity="low"> -- <VMSinfo VKey="234935" SVKey="234935r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all uses of the umount system call."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_ssh_agent" ownerid="SLES-15-030370" disa="2884" severity="low"> -- <VMSinfo VKey="234936" SVKey="234936r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all uses of the ssh-agent command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_sudo" ownerid="SLES-15-030380" disa="2884" severity="medium"> -- <VMSinfo VKey="234937" SVKey="234937r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all uses of the insmod command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_sudo" ownerid="SLES-15-030390" disa="2884" severity="medium"> -- <VMSinfo VKey="234938" SVKey="234938r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all uses of the rmmod command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_sudo" ownerid="SLES-15-030400" disa="2884" severity="medium"> -- <VMSinfo VKey="234939" SVKey="234939r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all uses of the modprobe command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_kmod" ownerid="SLES-15-030410" disa="2884" severity="medium"> -- <VMSinfo VKey="234940" SVKey="234940r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all uses of the kmod command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_dac_modification_chmod" ownerid="SLES-15-030420" disa="2884" severity="medium"> -- <VMSinfo VKey="234941" SVKey="234941r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all uses of the chmod command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_execution_setfacl" ownerid="SLES-15-030430" disa="2884" severity="medium"> -- <VMSinfo VKey="234942" SVKey="234942r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all uses of the setfacl command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_execution_chacl" ownerid="SLES-15-030440" disa="2884" severity="medium"> -- <VMSinfo VKey="234943" SVKey="234943r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all uses of the chacl command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_sudo" ownerid="SLES-15-030450" disa="2884" severity="medium"> -- <VMSinfo VKey="234944" SVKey="234944r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all uses of the chcon command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_execution_rm" ownerid="SLES-15-030460" disa="2884" severity="medium"> -- <VMSinfo VKey="234945" SVKey="234945r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all uses of the rm command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_login_events_tallylog" ownerid="SLES-15-030470" disa="2884" severity="medium"> -- <VMSinfo VKey="234946" SVKey="234946r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all modifications to the tallylog file must generate an audit record."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_login_events_lastlog" ownerid="SLES-15-030480" disa="2884" severity="medium"> -- <VMSinfo VKey="234947" SVKey="234947r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all modifications to the lastlog file."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_passmass" ownerid="SLES-15-030490" disa="2884" severity="medium"> -- <VMSinfo VKey="234948" SVKey="234948r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all uses of the passmass command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_usermod" ownerid="SLES-15-030500" disa="2884" severity="medium"> -- <VMSinfo VKey="234949" SVKey="234949r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all uses of the usermod command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_pam_timestamp_check" ownerid="SLES-15-030510" disa="2884" severity="medium"> -- <VMSinfo VKey="234950" SVKey="234950r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all uses of the pam_timestamp_check command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_sudo" ownerid="SLES-15-030520" disa="2884" severity="medium"> -- <VMSinfo VKey="234951" SVKey="234951r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all uses of the delete_module system call."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_sudo" ownerid="SLES-15-030530" disa="2884" severity="medium"> -- <VMSinfo VKey="234952" SVKey="234952r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all uses of the finit_module system call."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_sudo" ownerid="SLES-15-030540" disa="2884" severity="medium"> -- <VMSinfo VKey="234953" SVKey="234953r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all uses of the init_module system call."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_su" ownerid="SLES-15-030550" disa="2884" severity="medium"> -- <VMSinfo VKey="234954" SVKey="234954r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all uses of the su command."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_privileged_commands_sudo" ownerid="SLES-15-030560" disa="2884" severity="low"> -- <VMSinfo VKey="234955" SVKey="234955r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all uses of the sudo command."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_data_retention_action_mail_acct" ownerid="SLES-15-030570" disa="139" severity="medium"> -- <VMSinfo VKey="234956" SVKey="234956r6221" VRelease="r622137"/> -- <title text="The Information System Security Officer (ISSO) and System Administrator (SA), at a minimum, must be alerted of a SUSE operating system audit processing failure event."/> -- </overlay> -- <overlay owner="disastig" ruleid="postfix_client_configure_mail_alias" ownerid="SLES-15-030580" disa="139" severity="medium"> -- <VMSinfo VKey="234957" SVKey="234957r6221" VRelease="r622137"/> -- <title text="The Information System Security Officer (ISSO) and System Administrator (SA), at a minimum, must have mail aliases to be notified of a SUSE operating system audit processing failure."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_data_disk_full_action" ownerid="SLES-15-030590" disa="140" severity="medium"> -- <VMSinfo VKey="234958" SVKey="234958r6221" VRelease="r622137"/> -- <title text="The SUSE operating system audit system must take appropriate action when the audit storage volume is full."/> -- </overlay> -- <overlay owner="disastig" ruleid="permissions_local_var_log_audit" ownerid="SLES-15-030600" disa="164" severity="medium"> -- <VMSinfo VKey="234959" SVKey="234959r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must protect audit rules from unauthorized modification."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_unsuccessful_file_modification_truncate" ownerid="SLES-15-030610" disa="172" severity="medium"> -- <VMSinfo VKey="234960" SVKey="234960r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all uses of the truncate command."/> -- </overlay> -- <overlay owner="disastig" ruleid="permissions_local_audit_binaries" ownerid="SLES-15-030620" disa="1495" severity="medium"> -- <VMSinfo VKey="234961" SVKey="234961r6221" VRelease="r622137"/> -- <title text="The SUSE operating system audit tools must have the proper permissions configured to protect against unauthorized access."/> -- </overlay> -- <overlay owner="disastig" ruleid="aide_check_audit_tools" ownerid="SLES-15-030630" disa="1496" severity="medium"> -- <VMSinfo VKey="234962" SVKey="234962r6221" VRelease="r622137"/> -- <title text="The SUSE operating system file integrity tool must be configured to protect the integrity of the audit tools."/> -- </overlay> -- <overlay owner="disastig" ruleid="audit_rules_suid_privilege_function" ownerid="SLES-15-030640" disa="1875" severity="low"> -- <VMSinfo VKey="234963" SVKey="234963r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all uses of the privileged functions."/> -- </overlay> -- <overlay owner="disastig" ruleid="package_audit_installed" ownerid="SLES-15-030650" disa="1878" severity="medium"> -- <VMSinfo VKey="234964" SVKey="234964r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must have the auditing package installed."/> -- </overlay> -- <overlay owner="disastig" ruleid="partition_for_var_log_audit" ownerid="SLES-15-030660" disa="1849" severity="medium"> -- <VMSinfo VKey="234965" SVKey="234965r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must allocate audit record storage capacity to store at least one week of audit records when audit records are not immediately sent to a central audit record storage facility."/> -- </overlay> -- <overlay owner="disastig" ruleid="package_audit-audispd-plugins_installed" ownerid="SLES-15-030670" disa="1851" severity="medium"> -- <VMSinfo VKey="234966" SVKey="234966r6221" VRelease="r622137"/> -- <title text="The audit-audispd-plugins must be installed on the SUSE operating system."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_audispd_encrypt_sent_records" ownerid="SLES-15-030680" disa="1851" severity="low"> -- <VMSinfo VKey="234967" SVKey="234967r6221" VRelease="r622137"/> -- <title text="The SUSE operating system audit event multiplexor must be configured to use Kerberos."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_audispd_configure_remote_server" ownerid="SLES-15-030690" disa="1851" severity="low"> -- <VMSinfo VKey="234968" SVKey="234968r6221" VRelease="r622137"/> -- <title text="Audispd must off-load audit records onto a different system or media from the SUSE operating system being audited."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_data_retention_space_left" ownerid="SLES-15-030700" disa="1855" severity="medium"> -- <VMSinfo VKey="234969" SVKey="234969r6221" VRelease="r622137"/> -- <title text="The SUSE operating system auditd service must notify the System Administrator (SA) and Information System Security Officer (ISSO) immediately when audit storage capacity is 75 percent full."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="SLES-15-030710" disa="172" severity="medium"> -- <VMSinfo VKey="234970" SVKey="234970r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all uses of the rename system call."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="SLES-15-030720" disa="172" severity="medium"> -- <VMSinfo VKey="234971" SVKey="234971r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all uses of the renameat system call."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="SLES-15-030730" disa="172" severity="medium"> -- <VMSinfo VKey="234972" SVKey="234972r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all uses of the renameat2 system call."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="SLES-15-030740" disa="172" severity="medium"> -- <VMSinfo VKey="234973" SVKey="234973r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all uses of the unlink system call."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="SLES-15-030750" disa="172" severity="medium"> -- <VMSinfo VKey="234974" SVKey="234974r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for all uses of the unlinkat system call."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="SLES-15-030760" disa="172" severity="medium"> -- <VMSinfo VKey="234975" SVKey="234975r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for the /run/utmp file."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="SLES-15-030770" disa="172" severity="medium"> -- <VMSinfo VKey="234976" SVKey="234976r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for the /var/log/wtmp file."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="SLES-15-030780" disa="172" severity="medium"> -- <VMSinfo VKey="234977" SVKey="234977r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must generate audit records for the /var/log/btmp file."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_audispd_configure_remote_server" ownerid="SLES-15-030790" disa="1851" severity="medium"> -- <VMSinfo VKey="234978" SVKey="234978r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must off-load audit records onto a different system or media from the system being audited."/> -- </overlay> -- <overlay owner="disastig" ruleid="auditd_audispd_disk_full_action" ownerid="SLES-15-030800" disa="1851" severity="medium"> -- <VMSinfo VKey="234979" SVKey="234979r6221" VRelease="r622137"/> -- <title text="Audispd must take appropriate action when the SUSE operating system audit storage is full."/> -- </overlay> -- <overlay owner="disastig" ruleid="partition_for_var_log_audit" ownerid="SLES-15-030810" disa="366" severity="low"> -- <VMSinfo VKey="234980" SVKey="234980r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must use a separate file system for the system audit data path."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_disable_root_login" ownerid="SLES-15-030820" disa="366" severity="medium"> -- <VMSinfo VKey="234981" SVKey="234981r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must not disable syscall auditing."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_passwords_pam_faildelay_delay" ownerid="SLES-15-040000" disa="366" severity="medium"> -- <VMSinfo VKey="234982" SVKey="234982r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must enforce a delay of at least four seconds between logon prompts following a failed logon attempt."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="SLES-15-040010" disa="366" severity="medium"> -- <VMSinfo VKey="234983" SVKey="234983r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must enforce a delay of at least four seconds between logon prompts following a failed logon attempt."/> -- </overlay> -- <overlay owner="disastig" ruleid="no_user_host_based_files" ownerid="SLES-15-040020" disa="366" severity="high"> -- <VMSinfo VKey="234984" SVKey="234984r6221" VRelease="r622137"/> -- <title text="There must be no .shosts files on the SUSE operating system."/> -- </overlay> -- <overlay owner="disastig" ruleid="no_host_based_files" ownerid="SLES-15-040030" disa="366" severity="high"> -- <VMSinfo VKey="234985" SVKey="234985r6221" VRelease="r622137"/> -- <title text="There must be no shosts.equiv files on the SUSE operating system."/> -- </overlay> -- <overlay owner="disastig" ruleid="aide_verify_acls" ownerid="SLES-15-040040" disa="366" severity="low"> -- <VMSinfo VKey="234986" SVKey="234986r6221" VRelease="r622137"/> -- <title text="The SUSE operating system file integrity tool must be configured to verify Access Control Lists (ACLs)."/> -- </overlay> -- <overlay owner="disastig" ruleid="aide_verify_ext_attributes" ownerid="SLES-15-040050" disa="366" severity="low"> -- <VMSinfo VKey="234987" SVKey="234987r6221" VRelease="r622137"/> -- <title text="The SUSE operating system file integrity tool must be configured to verify extended attributes."/> -- </overlay> -- <overlay owner="disastig" ruleid="disable_ctrlaltdel_reboot" ownerid="SLES-15-040060" disa="366" severity="high"> -- <VMSinfo VKey="234988" SVKey="234988r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must disable the x86 Ctrl-Alt-Delete key sequence."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_disable_root_login" ownerid="SLES-15-040061" disa="366" severity="high"> -- <VMSinfo VKey="234989" SVKey="234989r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must disable the x86 Ctrl-Alt-Delete key sequence for Graphical User Interfaces."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_disable_root_login" ownerid="SLES-15-040062" disa="366" severity="high"> -- <VMSinfo VKey="234990" SVKey="234990r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must disable the systemd Ctrl-Alt-Delete burst key sequence."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_user_interactive_home_directory_defined" ownerid="SLES-15-040070" disa="366" severity="medium"> -- <VMSinfo VKey="234991" SVKey="234991r6221" VRelease="r622137"/> -- <title text="All SUSE operating system local interactive users must have a home directory assigned in the /etc/passwd file."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_user_interactive_home_directory_exists" ownerid="SLES-15-040080" disa="366" severity="medium"> -- <VMSinfo VKey="234992" SVKey="234992r6221" VRelease="r622137"/> -- <title text="All SUSE operating system local interactive user home directories defined in the /etc/passwd file must exist."/> -- </overlay> -- <overlay owner="disastig" ruleid="file_permissions_home_directories" ownerid="SLES-15-040090" disa="366" severity="medium"> -- <VMSinfo VKey="234993" SVKey="234993r6221" VRelease="r622137"/> -- <title text="All SUSE operating system local interactive user home directories must have mode 0750 or less permissive."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_disable_root_login" ownerid="SLES-15-040100" disa="366" severity="medium"> -- <VMSinfo VKey="234994" SVKey="234994r6221" VRelease="r622137"/> -- <title text="All SUSE operating system local interactive user home directories must be group-owned by the home directory owner's primary group."/> -- </overlay> -- <overlay owner="disastig" ruleid="file_permission_user_init_files" ownerid="SLES-15-040110" disa="366" severity="medium"> -- <VMSinfo VKey="234995" SVKey="234995r6221" VRelease="r622137"/> -- <title text="All SUSE operating system local initialization files must have mode 0740 or less permissive."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_user_home_paths_only" ownerid="SLES-15-040120" disa="366" severity="medium"> -- <VMSinfo VKey="234996" SVKey="234996r6221" VRelease="r622137"/> -- <title text="All SUSE operating system local interactive user initialization files executable search paths must contain only paths that resolve to the users home directory."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_user_dot_no_world_writable_programs" ownerid="SLES-15-040130" disa="366" severity="medium"> -- <VMSinfo VKey="234997" SVKey="234997r6221" VRelease="r622137"/> -- <title text="All SUSE operating system local initialization files must not execute world-writable programs."/> -- </overlay> -- <overlay owner="disastig" ruleid="mount_option_home_nosuid" ownerid="SLES-15-040140" disa="366" severity="medium"> -- <VMSinfo VKey="234998" SVKey="234998r6221" VRelease="r622137"/> -- <title text="SUSE operating system file systems that contain user home directories must be mounted to prevent files with the setuid and setgid bit set from being executed."/> -- </overlay> -- <overlay owner="disastig" ruleid="mount_option_nosuid_removable_partitions" ownerid="SLES-15-040150" disa="366" severity="medium"> -- <VMSinfo VKey="234999" SVKey="234999r6221" VRelease="r622137"/> -- <title text="SUSE operating system file systems that are used with removable media must be mounted to prevent files with the setuid and setgid bit set from being executed."/> -- </overlay> -- <overlay owner="disastig" ruleid="mount_option_nosuid_remote_filesystems" ownerid="SLES-15-040160" disa="366" severity="medium"> -- <VMSinfo VKey="235000" SVKey="235000r6221" VRelease="r622137"/> -- <title text="SUSE operating system file systems that are being imported via Network File System (NFS) must be mounted to prevent files with the setuid and setgid bit set from being executed."/> -- </overlay> -- <overlay owner="disastig" ruleid="mount_option_noexec_remote_filesystems" ownerid="SLES-15-040170" disa="366" severity="medium"> -- <VMSinfo VKey="235001" SVKey="235001r6221" VRelease="r622137"/> -- <title text="SUSE operating system file systems that are being imported via Network File System (NFS) must be mounted to prevent binary files from being executed."/> -- </overlay> -- <overlay owner="disastig" ruleid="dir_perms_world_writable_system_owned_group" ownerid="SLES-15-040180" disa="366" severity="medium"> -- <VMSinfo VKey="235002" SVKey="235002r6221" VRelease="r622137"/> -- <title text="All SUSE operating system world-writable directories must be group-owned by root, sys, bin, or an application group."/> -- </overlay> -- <overlay owner="disastig" ruleid="service_kdump_disabled" ownerid="SLES-15-040190" disa="366" severity="medium"> -- <VMSinfo VKey="235003" SVKey="235003r6221" VRelease="r622137"/> -- <title text="SUSE operating system kernel core dumps must be disabled unless needed."/> -- </overlay> -- <overlay owner="disastig" ruleid="partition_for_home" ownerid="SLES-15-040200" disa="366" severity="low"> -- <VMSinfo VKey="235004" SVKey="235004r6221" VRelease="r622137"/> -- <title text="A separate file system must be used for SUSE operating system user home directories (such as /home or an equivalent)."/> -- </overlay> -- <overlay owner="disastig" ruleid="partition_for_var" ownerid="SLES-15-040210" disa="366" severity="low"> -- <VMSinfo VKey="235005" SVKey="235005r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must use a separate file system for /var."/> -- </overlay> -- <overlay owner="disastig" ruleid="pam_disable_automatic_configuration" ownerid="SLES-15-040220" disa="366" severity="medium"> -- <VMSinfo VKey="235006" SVKey="235006r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must be configured to not overwrite Pluggable Authentication Modules (PAM) configuration on package changes."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_disable_user_known_hosts" ownerid="SLES-15-040230" disa="366" severity="medium"> -- <VMSinfo VKey="235007" SVKey="235007r6221" VRelease="r622137"/> -- <title text="The SUSE operating system SSH daemon must be configured to not allow authentication using known hosts authentication."/> -- </overlay> -- <overlay owner="disastig" ruleid="file_permissions_sshd_pub_key" ownerid="SLES-15-040240" disa="366" severity="medium"> -- <VMSinfo VKey="235008" SVKey="235008r6221" VRelease="r622137"/> -- <title text="The SUSE operating system SSH daemon public host key files must have mode 0644 or less permissive."/> -- </overlay> -- <overlay owner="disastig" ruleid="file_permissions_sshd_private_key" ownerid="SLES-15-040250" disa="366" severity="medium"> -- <VMSinfo VKey="235009" SVKey="235009r6221" VRelease="r622137"/> -- <title text="The SUSE operating system SSH daemon private host key files must have mode 0600 or less permissive."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_enable_strictmodes" ownerid="SLES-15-040260" disa="366" severity="medium"> -- <VMSinfo VKey="235010" SVKey="235010r6221" VRelease="r622137"/> -- <title text="The SUSE operating system SSH daemon must perform strict mode checking of home directory configuration files."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_use_priv_separation" ownerid="SLES-15-040270" disa="366" severity="medium"> -- <VMSinfo VKey="235011" SVKey="235011r6221" VRelease="r622137"/> -- <title text="The SUSE operating system SSH daemon must use privilege separation."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_disable_compression" ownerid="SLES-15-040280" disa="366" severity="medium"> -- <VMSinfo VKey="235012" SVKey="235012r6221" VRelease="r622137"/> -- <title text="The SUSE operating system SSH daemon must not allow compression or must only allow compression after successful authentication."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_disable_root_login" ownerid="SLES-15-040290" disa="366" severity="medium"> -- <VMSinfo VKey="235013" SVKey="235013r6221" VRelease="r622137"/> -- <title text="The SUSE operating system SSH daemon must disable forwarded remote X connections for interactive users, unless to fulfill documented and validated mission requirements."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_net_ipv4_conf_all_accept_source_route" ownerid="SLES-15-040300" disa="366" severity="medium"> -- <VMSinfo VKey="235014" SVKey="235014r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must not forward Internet Protocol version 4 (IPv4) source-routed packets."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_net_ipv6_conf_all_accept_source_route" ownerid="SLES-15-040310" disa="366" severity="medium"> -- <VMSinfo VKey="235015" SVKey="235015r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must not forward Internet Protocol version 6 (IPv6) source-routed packets."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_net_ipv4_conf_default_accept_source_route" ownerid="SLES-15-040320" disa="366" severity="medium"> -- <VMSinfo VKey="235016" SVKey="235016r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must not forward Internet Protocol version 4 (IPv4) source-routed packets by default."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_disable_root_login" ownerid="SLES-15-040321" disa="366" severity="medium"> -- <VMSinfo VKey="235017" SVKey="235017r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must not forward Internet Protocol version 6 (IPv6) source-routed packets by default."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_net_ipv4_conf_all_accept_redirects" ownerid="SLES-15-040330" disa="366" severity="medium"> -- <VMSinfo VKey="235018" SVKey="235018r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must prevent Internet Protocol version 4 (IPv4) Internet Control Message Protocol (ICMP) redirect messages from being accepted."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_net_ipv4_conf_default_accept_redirects" ownerid="SLES-15-040340" disa="366" severity="medium"> -- <VMSinfo VKey="235019" SVKey="235019r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must not allow interfaces to accept Internet Protocol version 4 (IPv4) Internet Control Message Protocol (ICMP) redirect messages by default."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_disable_root_login" ownerid="SLES-15-040341" disa="366" severity="medium"> -- <VMSinfo VKey="235020" SVKey="235020r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must prevent Internet Protocol version 6 (IPv6) Internet Control Message Protocol (ICMP) redirect messages from being accepted."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_net_ipv6_conf_default_accept_source_route" ownerid="SLES-15-040350" disa="366" severity="medium"> -- <VMSinfo VKey="235021" SVKey="235021r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must not allow interfaces to accept Internet Protocol version 6 (IPv6) Internet Control Message Protocol (ICMP) redirect messages by default."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_net_ipv4_conf_default_send_redirects" ownerid="SLES-15-040360" disa="366" severity="medium"> -- <VMSinfo VKey="235022" SVKey="235022r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must not allow interfaces to send Internet Protocol version 4 (IPv4) Internet Control Message Protocol (ICMP) redirect messages by default."/> -- </overlay> -- <overlay owner="disastig" ruleid="sysctl_net_ipv4_conf_all_send_redirects" ownerid="SLES-15-040370" disa="366" severity="medium"> -- <VMSinfo VKey="235023" SVKey="235023r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must not send Internet Protocol version 4 (IPv4) Internet Control Message Protocol (ICMP) redirects."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_disable_root_login" ownerid="SLES-15-040380" disa="366" severity="medium"> -- <VMSinfo VKey="235024" SVKey="235024r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must not be performing Internet Protocol version 4 (IPv4) packet forwarding unless the system is a router."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_disable_root_login" ownerid="SLES-15-040381" disa="366" severity="medium"> -- <VMSinfo VKey="235025" SVKey="235025r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must not be performing Internet Protocol version 6 (IPv6) packet forwarding unless the system is a router."/> -- </overlay> -- <overlay owner="disastig" ruleid="sshd_disable_root_login" ownerid="SLES-15-040382" disa="366" severity="medium"> -- <VMSinfo VKey="235026" SVKey="235026r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must not be performing Internet Protocol version 6 (IPv6) packet forwarding by default unless the system is a router."/> -- </overlay> -- <overlay owner="disastig" ruleid="network_sniffer_disabled" ownerid="SLES-15-040390" disa="366" severity="medium"> -- <VMSinfo VKey="235027" SVKey="235027r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must not have network interfaces in promiscuous mode unless approved and documented."/> -- </overlay> -- <overlay owner="disastig" ruleid="no_files_unowned_by_user" ownerid="SLES-15-040400" disa="1230" severity="medium"> -- <VMSinfo VKey="235028" SVKey="235028r6221" VRelease="r622137"/> -- <title text="All SUSE operating system files and directories must have a valid owner."/> -- </overlay> -- <overlay owner="disastig" ruleid="file_permissions_ungroupowned" ownerid="SLES-15-040410" disa="1230" severity="medium"> -- <VMSinfo VKey="235029" SVKey="235029r6221" VRelease="r622137"/> -- <title text="All SUSE operating system files and directories must have a valid group owner."/> -- </overlay> -- <overlay owner="disastig" ruleid="accounts_umask_etc_login_defs" ownerid="SLES-15-040420" disa="366" severity="medium"> -- <VMSinfo VKey="235030" SVKey="235030r6221" VRelease="r622137"/> -- <title text="The SUSE operating system default permissions must be defined in such a way that all authenticated users can only read and modify their own files."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="SLES-15-040430" disa="366" severity="high"> -- <VMSinfo VKey="235031" SVKey="235031r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must not allow unattended or automatic logon via the graphical user interface (GUI)."/> -- </overlay> -- <overlay owner="disastig" ruleid="XXXX" ownerid="SLES-15-040440" disa="366" severity="high"> -- <VMSinfo VKey="235032" SVKey="235032r6221" VRelease="r622137"/> -- <title text="The SUSE operating system must not allow unattended or automatic logon via SSH."/> -- </overlay> --</overlays> -diff --git a/products/vsel/overlays/stig_overlay.xml b/products/vsel/overlays/stig_overlay.xml -deleted file mode 100644 -index 0f94e305d86..00000000000 ---- a/products/vsel/overlays/stig_overlay.xml -+++ /dev/null -@@ -1,159 +0,0 @@ --<?xml version="1.0"?> --<overlays xmlns="http://checklists.nist.gov/xccdf/1.1"> -- <overlay owner="disastig" ruleid="web_client_disabled" ownerid="DTAVSEL-000" disa="1813" severity="medium"> -- <VMSinfo VKey="62791" SVKey="77281" VRelease="1" /> -- <title>The McAfee VirusScan Enterprise for Linux Web interface must be disabled unless the system is on a segregated network. -- -- -- -- The anti-virus signature file age must not exceed 7 days. -- -- -- -- The McAfee VirusScan Enterprise for Linux 1.9.x/2.0.x must be configured to receive automatic updates. -- -- -- -- The McAfee VirusScan Enterprise for Linux 1.9.x/2.0.x must be configured to enable On-Access scanning. -- -- -- -- The McAfee VirusScan Enterprise for Linux 1.9.x/2.0.x On-Access scanner must be configured to decompress archives when scanning. -- -- -- -- The McAfee VirusScan Enterprise for Linux 1.9.x/2.0.x On-Access scanner must be configured to find unknown program viruses. -- -- -- -- The McAfee VirusScan Enterprise for Linux 1.9.x/2.0.x On-Access scanner must be configured to find unknown macro viruses. -- -- -- -- The McAfee VirusScan Enterprise for Linux 1.9.x/2.0.x On-Access scanner must be configured to find potentially unwanted programs. -- -- -- -- The McAfee VirusScan Enterprise for Linux 1.9.x/2.0.x On-Access scanner must be configured to scan files when being written to disk. -- -- -- -- The McAfee VirusScan Enterprise for Linux 1.9.x/2.0.x On-Access scanner must be configured to scan files when being read from disk. -- -- -- -- The McAfee VirusScan Enterprise for Linux 1.9.x/2.0.x On-Access scanner must be configured to scan all file types. -- -- -- -- The McAfee VirusScan Enterprise for Linux 1.9.x/2.0.x On-Access scanner maximum scan time must not be less than 45 seconds. -- -- -- -- The McAfee VirusScan Enterprise for Linux 1.9.x/2.0.x On-Access scanner must only be configured with exclusions that are documented and approved by the ISSO/ISSM/AO. -- -- -- -- The McAfee VirusScan Enterprise for Linux 1.9.x/2.0.x On-Access scanner must be configured to Clean as first action when a virus or Trojan is detected. -- -- -- -- The McAfee VirusScan Enterprise for Linux 1.9.x/2.0.x On-Access scanner must be configured to Quarantine if first action fails when a virus or Trojan is detected. -- -- -- -- The McAfee VirusScan Enterprise for Linux 1.9.x/2.0.x On-Access scanner must be configured to Clean as first action when programs and jokes are found. -- -- -- -- The McAfee VirusScan Enterprise for Linux 1.9.x/2.0.x On-Access scanner must be configured to Quarantine if first action fails when programs and jokes are found. -- -- -- -- The McAfee VirusScan Enterprise for Linux 1.9.x/2.0.x On-Access scanner must be configured to deny access to the file if an error occurs during scanning. -- -- -- -- The McAfee VirusScan Enterprise for Linux 1.9.x/2.0.x On-Access scanner must be configured to allow access to files if scanning times out. -- -- -- -- The McAfee VirusScan Enterprise for Linux 1.9.x/2.0.x On-Access scanner must be enabled to scan mounted volumes when mounted volumes point to a network server without an anti-virus solution installed. -- -- -- -- The McAfee VirusScan Enterprise for Linux 1.9.x/2.0.x must be configured to run a scheduled On-Demand scan at least once a week. -- -- -- -- The McAfee VirusScan Enterprise for Linux 1.9.x/2.0.x On-Demand scanner must be configured to decompress archives when scanning. -- -- -- -- The McAfee VirusScan Enterprise for Linux 1.9.x/2.0.x On-Demand scanner must be configured to find unknown program viruses. -- -- -- -- The McAfee VirusScan Enterprise for Linux 1.9.x/2.0.x On-Demand scanner must be configured to find unknown macro viruses. -- -- -- -- The McAfee VirusScan Enterprise for Linux 1.9.x/2.0.x On-Demand scanner must be configured to find potentially unwanted programs. -- -- -- -- The McAfee VirusScan Enterprise for Linux 1.9.x/2.0.x On-Demand scanner must be configured to scan all file types. -- -- -- -- The McAfee VirusScan Enterprise for Linux 1.9.x/2.0.x On-Demand scanner must be configured to Clean infected files automatically as first action when a virus or Trojan is detected. -- -- -- -- The McAfee VirusScan Enterprise for Linux 1.9.x/2.0.x On-Demand scanner must be configured to Move infected files to the quarantine directory if first action fails when a virus or Trojan is detected. -- -- -- -- The McAfee VirusScan Enterprise for Linux 1.9.x/2.0.x On-Demand scanner must only be configured with exclusions that are documented and approved by the ISSO/ISSM/AO. -- -- -- -- The McAfee VirusScan Enterprise for Linux 1.9.x/2.0.x On-Demand scanner must be configured to Clean infected files automatically as first action when programs and jokes are found. -- -- -- -- The McAfee VirusScan Enterprise for Linux 1.9.x/2.0.x On-Demand scanner must be configured to Move infected files to the quarantine directory if first action fails when programs and jokes are found. -- -- -- -- The McAfee VirusScan Enterprise for Linux 1.9.x/2.0.x On-Demand scanner must be configured to decode MIME encoded files. -- -- -- -- The McAfee VirusScan Enterprise for Linux 1.9.x/2.0.x On-Demand scanner must be configured to include all local drives and their sub-directories. -- -- -- -- The McAfee VirusScan Enterprise for Linux 1.9.x/2.0.x On-Demand scanner must be enabled to scan mounted volumes when mounted volumes point to a network server without an anti-virus solution installed. -- -- -- -- The McAfee VirusScan Enterprise for Linux 1.9.x/2.0.x must scan all media used for system maintenance prior to use. -- -- -- -- The McAfee VirusScan Enterprise must be configured to receive all patches, service packs and updates from a DoD-managed source. -- -- -- -- The nails user and nailsgroup group must be restricted to the least privilege access required for the intended role. -- -- -- -- SMTP email notification must be enabled to ensure administrators are notified of out of date DAT, detected malware and error codes. -- -- -- -- Access to the McAfee VirusScan Enterprise for Linux 1.9.x/2.0.x Web UI must be enforced by firewall rules. -- -- -\ No newline at end of file - -From c0f58c6c4be7e62795e5b6ef39d6ecf0e92abf9e Mon Sep 17 00:00:00 2001 -From: Gabriel Becker -Date: Mon, 26 Jul 2021 18:07:38 +0200 -Subject: [PATCH 06/10] Update DISA STIG Firefox manual benchmark file. - ---- - .../disa-stig-firefox-v4r11-xccdf-manual.xml | 159 ------------------ - .../disa-stig-firefox-v5r1-xccdf-manual.xml | 120 +++++++++++++ - 2 files changed, 120 insertions(+), 159 deletions(-) - delete mode 100644 shared/references/disa-stig-firefox-v4r11-xccdf-manual.xml - create mode 100644 shared/references/disa-stig-firefox-v5r1-xccdf-manual.xml - -diff --git a/shared/references/disa-stig-firefox-v4r11-xccdf-manual.xml b/shared/references/disa-stig-firefox-v4r11-xccdf-manual.xml -deleted file mode 100644 -index ed93f12474b..00000000000 ---- a/shared/references/disa-stig-firefox-v4r11-xccdf-manual.xml -+++ /dev/null -@@ -1,159 +0,0 @@ --acceptedMozilla FirefoxDISA, Field Security OperationsSTIG.DOD.MILRelease: 11 Benchmark Date: 24 Apr 20154I - Mission Critical Classified<ProfileDescription></ProfileDescription>I - Mission Critical Public<ProfileDescription></ProfileDescription>I - Mission Critical Sensitive<ProfileDescription></ProfileDescription>II - Mission Support Classified<ProfileDescription></ProfileDescription>II - Mission Support Public<ProfileDescription></ProfileDescription>II - Mission Support Sensitive<ProfileDescription></ProfileDescription>III - Administrative Classified<ProfileDescription></ProfileDescription>III - Administrative Public<ProfileDescription></ProfileDescription>III - Administrative Sensitive<ProfileDescription></ProfileDescription>DTBG010-DoD Root Certificate is not installed<GroupDescription></GroupDescription>DTBG010 - FireFoxThe DOD Root Certificate is not installed.<VulnDiscussion>The DOD root certificate will ensure that the trust chain is established for server certificate issued from the DOD CA.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility>Information Assurance Officer</Responsibility><Responsibility>System Administrator</Responsibility><IAControls>ECSC-1</IAControls>DPMS Target FirefoxDISA FSODPMS TargetFirefox205Install the DOD root certificate.Procedure: Use the Tools/Options/Advanced/Encryption dialog. On the Select the View Certificates button. On the Certificate Manager window, select the Authorities tab. Scroll through the Certificate Name list to the U.S. Government heading. Look for the entry for the DoD Root CA 2. --If there is an entry for the DoD Root CA 2, select the entry and then the View button. On the Certificate Viewer window, determine the value of the MD5 Fingerprint field. -- --Criteria: --If there is no entry for the DoD Root CA 2, then this is a Finding. -- --If the value of the MD5 Fingerprint field of the DoD Root CA 2 certificate is not: --47:78:92:DB:8A:EC:1B:53:68:F0:1D:00:9C:34:77:5E, --then this is a Finding. -- --If the value of the SHA1 Fingerprint field of the DoD Root CA 2 certificate is not: --8C:94:1B:34:EA:1E:A6:ED:9A:E2:BC:54:CF:68:72:52:B4:C9:B5:61, then this is a Finding.DTBF020 - FireFox Preferences–Use of SSL Version 3<GroupDescription></GroupDescription>DTBF020Firefox is configured to allow use of SSL 3.0.<VulnDiscussion>DoD implementations of SSL must use TLS 1.0 in accordance with the Network Infrastructure STIG. Earlier versions of SSL have known security vulnerabilities and are not authorized for use in DOD. Firefox has this set to on by default but this is not apparent in the GUI options screen.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility>System Administrator</Responsibility><IAControls>ECSC-1</IAControls>DPMS Target FirefoxDISA FSODPMS TargetFirefox205Set the preference "security.enable_ssl3" to "true" or “false” and lock using the Mozilla.cfg file.Open a browser window, type "about:config" in the address bar, then navigate to the setting for Preference Name "security.enable_ssl3" and set the value to "true" or “false” and locked. -- --Criteria: If the value of "security.enable_ssl3" is "true" or “false”, this is not a finding. If the value is locked, this is not a finding.DTBF050 - FireFox Preferences – Verification<GroupDescription></GroupDescription>DTBF050FireFox is configured to ask which certificate to present to a web site when a certificate is required.<VulnDiscussion>When a web site asks for a certificate for user authentication, Firefox must be configured to have the user choose which certificate to present. Websites within DOD require user authentication for access which increases security for DoD information. Access will be denied to the user if certificate management is not configured.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility>System Administrator</Responsibility><IAControls>ECSC-1</IAControls>DPMS Target FirefoxDISA FSODPMS TargetFirefox205Set the value of "security.default_personal_cert" to "Ask Every Time". Use the Mozilla.cfg file to lock the preference so users cannot change it. -- --Type "about:config" in the browser address bar. Verify Preference Name "security.default_personal_cert" is set to "Ask Every Time" and is locked to prevent the user from altering. -- --Criteria: If the value of "security.default_personal_cert" is set incorrectly or is not locked, then this is a finding. --DTBF100 -FireFox Preferences–auto-download actions<GroupDescription></GroupDescription>DTBF100Firefox automatically executes or downloads MIME types which are not authorized for auto-download.<VulnDiscussion>The default action for file types for which a plugin is installed is to automatically download and execute the file using the associated plugin. Firefox allows you to change the specified download action so that the file is opened with a selected external application or saved to disk instead. View the list of installed browser plugins and related MIME types by entering about:plugins in the address bar. -- --When you click a link to download a file, the MIME type determines what action Firefox will take. You may already have a plugin installed that will automatically handle the download, such as Windows Media Player or QuickTime. Other times, you may see a dialog asking whether you want to save the file or open it with a specific application. When you tell Firefox to open or save the file and also check the option to "Do this automatically for files like this from now on", an entry appears for that type of file in the Firefox Applications panel, shown below. --</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility>System Administrator</Responsibility><IAControls>DCMC-1</IAControls>DPMS Target FirefoxDISA FSODPMS TargetFirefox205Remove any unauthorized extensions from the autodownload list. Use Method 1 or 2 to check if the following extensions are listed in the browser configuration: HTA, JSE, JS, MOCHA, SHS, VBE, VBS, SCT, WSC. By default, most of these extensions will not show up on the Firefox listing. -- --Criteria: -- --Method 1: In about:plugins, Installed plug-in, inspect the entries in the Suffixes column. -- --If any of the prohibited extensions are found, then for each of them, verify that it is not associated with an application that executes code. However, applications such as Notepad.exe that do not execute code may be associated with the extension. If the extension is associated with an unauthorized application, then this is a finding. -- --If the extension exists but is not associated with an application, then this is a finding. -- --Method 2: --Use the Options User Interface Applications menu to search for the prohibited extensions in the Content column of the table. -- --If an extension that is not approved for automatic execution exists and the entry in the Action column is associated with an application that does not execute the code (e.g., Notepad), then do not mark this as a finding. -- --If the entry exists and the "Action" is 'Save File' or 'Always Ask', then this is not a finding. -- --If an extension exists and the entry in the Action column is associated with an application that does/can execute the code, then this is a finding. --DTBF105 - FireFox Preferences – Shell Protocol<GroupDescription></GroupDescription>DTBF105Network shell protocol is enabled in FireFox.<VulnDiscussion>Although current versions of Firefox have this set to disabled by default, use of this option can be harmful. This would allow the browser to access the Windows shell. This could allow access to the --underlying system. This check verifies that the default setting has not been changed. --</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility>System Administrator</Responsibility><IAControls>ECSC-1</IAControls>DPMS Target FirefoxDISA FSODPMS TargetFirefox205Procedure: Set the value of "network.protocol-handler.external.shell" to "false" and lock using the Mozilla.cfg file.Procedure: Open a browser window, type "about:config" in the address bar. -- --Criteria: If the value of "network.protocol-handler.external.shell" is not "false" or is not locked, then this is a finding. DTBF110 - FireFox Preferences – Open Confirmation<GroupDescription></GroupDescription>DTBF110Firefox not configured to prompt user before download and opening for required file types.<VulnDiscussion>New file types cannot be added directly to the helper applications or plugins listing. Files with these extensions will not be allowed to use Firefox publicly available plugins and extensions to open. The application will be configured to open these files using external applications only. After a helper application or save to disk download action has been set, that action will be taken automatically for those types of files. When the user receives a dialog box asking if you want to save the file or open it with a specified application, this indicates that a plugin does not exist. The user has not previously selected a download action or helper application to automatically use for that type of file. When prompted, if the user checks the option to Do this automatically for files like this from now on, then an entry will appear for that type of file in the plugins listing and this file type is automatically opened in the future. This can be a security issue. New file types cannot be added directly to the Application plugin listing. </VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility>System Administrator</Responsibility><IAControls>ECSC-1</IAControls>DPMS Target FirefoxDISA FSODPMS TargetFirefox205Ensure the following extensions are not automatically opened by Firefox without user confirmation. Do not use plugins and add-ons to open these files. Use the "plugin.disable_full_page_plugin_for_types" preference to set and lock the following extensions so that an external application rather than an add-on or plugin will not be used. (PDF, FDF, XFDF, LSL, LSO, LSS, IQY, RQY, XLK, XLS, XLT, POT PPS, PPT, DOS, DOT, WKS, BAT, PS, EPS, WCH, WCM, WB1, WB3, RTF, DOC, MDB, MDE, WBK, WB1, WCH, WCM, AD, ADP)Open a browser window, type "about:config" in the address bar. -- --Criteria: If the “plugin.disable_full_page_plugin_for_types” value is not set to include the following external extensions and not locked, then this is a finding: -- --PDF, FDF, XFDF, LSL, LSO, LSS, IQY, RQY, XLK, XLS, XLT, POT PPS, PPT, DOS, DOT, WKS, BAT, PS, EPS, WCH, WCM, WB1, WB3, RTF, DOC, MDB, MDE, WBK, WB1, WCH, WCM, AD, ADP.DTBF120 - FireFox Preferences – ActiveX controls<GroupDescription></GroupDescription>DTBF120FireFox plug-in for ActiveX controls is installed.<VulnDiscussion>When an ActiveX control is referenced in an HTML document, MS Windows checks to see if --the control already resides on the client machine. If not, the control can be downloaded from a --remote web site. This provides an automated delivery method for mobile code.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility>System Administrator</Responsibility><IAControls>ECSC-1</IAControls>DPMS Target FirefoxDISA FSODPMS TargetFirefox205Remove/uninstall the Mozilla ActiveX plugin Open a browser window, type "about:plugins" in the address bar. -- --Criteria: If the Mozilla ActiveX control and plugin support is present and enabled, then this is a finding. --DTBF140 - FireFox Preferences – Autofill forms<GroupDescription></GroupDescription>DTBF140Firefox formfill assistance option is disabled.<VulnDiscussion>In order to protect privacy and sensitive data, Firefox provides the ability to configure Firefox such that data entered into forms is not saved. This mitigates the risk of a website gleaning private information from prefilled information.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility>System Administrator</Responsibility><IAControls>ECSC-1</IAControls>DPMS Target FirefoxDISA FSODPMS TargetFirefox205Ensure the preference “browser.formfill.enable" is set and locked to the value of “False”.Type "about:config" in the address bar, verify that the preference name “browser.formfill.enable" is set to “false” and locked. -- --Criteria: If the parameter is set incorrectly, then this is a finding. If the setting is not locked, then this is a finding. --DTBF150 - FireFox Preferences – Autofill passwords<GroupDescription></GroupDescription>DTBF150Firefox is configured to autofill passwords.<VulnDiscussion>While on the internet, it may be possible for an attacker to view the saved password files and gain access to the user's accounts on various hosts. </VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility>System Administrator</Responsibility><IAControls>ECSC-1</IAControls>DPMS Target FirefoxDISA FSODPMS TargetFirefox205Ensure the preference " signon.prefillForms " is set and locked to the value of “False”.In About:Config, verify that the preference name “signon.prefillForms“ is set to “false” and locked. -- --Criteria: If the parameter is set incorrectly, then this is a finding. If the setting is not locked, then this is a finding. --DTBF160 - FireFox Preferences – Password store<GroupDescription></GroupDescription>DTBF160FireFox is configured to use a password store with or without a master password.<VulnDiscussion>Firefox can be set to store passwords for sites visited by the user. These individual passwords are stored in a file and can be protected by a master password. Autofill of the password can then be enabled when the site is visited. This feature could also be used to autofill the certificate pin which could lead to compromise of DoD information.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility>System Administrator</Responsibility><IAControls>ECSC-1</IAControls>DPMS Target FirefoxDISA FSODPMS TargetFirefox205 Ensure the preference "“signon.rememberSignons“ is set and locked to the value of “false”.Type "About:Config" in the browser window. Verify that the preference name “signon.rememberSignons" is set and locked to “false”. -- --Criteria: If the parameter is set incorrectly, then this is a finding. If the setting is not locked, then this is a finding. --DTBF170 - FireFox Preferences – Cookies<GroupDescription></GroupDescription>DTBF170Firefox does not clear cookies upon closing.<VulnDiscussion>Cookies can help websites perform better but can also be part of spyware. To mitigate this risk, set browser preferences to perform a Clear Private Data operation when closing the browser in order to clear cookies and other data installed by websites visited during the session.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility>System Administrator</Responsibility><IAControls>ECSC-1</IAControls>DPMS Target FirefoxDISA FSODPMS TargetFirefox205Ensure the preference "privacy.sanitize.sanitizeOnShutdown" is set and locked to the value of “true”. Also ensure the preference “privacy.sanitize.promptOnSanitize” is set and locked to “false” Type "about:config" in the address bar of the browser. Verify that the preference “privacy.sanitize.sanitizeOnShutdown" is set to “true”. Also “privacy.sanitize.promptOnSanitize” must be set to “false” to prevent users from circumventing the deleting of cookies. Both settings must also be locked to prevent user changes. -- --Criteria: If the parameter for either of the two sanitize preferences is set incorrectly, then this is a finding. If the settings are not locked, then this is a finding.DTBF180 - Pop-up windows<GroupDescription></GroupDescription>DTBF180FireFox is not configured to block pop-up windows.<VulnDiscussion>Popup windows may be used to launch an attack within a new browser window with altered settings. This setting blocks popup windows created while the page is loading.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility>System Administrator</Responsibility><IAControls>ECSC-1</IAControls>DPMS Target FirefoxDISA FSODPMS TargetFirefox205Ensure the preference "dom.disable_window_open_feature.status " is set and locked to the value of “true”.In About:Config, verify that the preference name “dom.disable_window_open_feature.status " is set to “true” and locked. -- --Criteria: If the parameter is set incorrectly, then this is a finding. If the setting is not locked, then this is a finding. --DTBF181 - JavaScript move or resize windows<GroupDescription></GroupDescription>DTBF181FireFox is configured to allow JavaScript to move or resize windows. --<VulnDiscussion>JavaScript can make changes to the browser’s appearance. This activity can help disguise an attack taking place in a minimized background window. Set browser setting to prevent scripts on visited websites from moving and resizing browser windows. </VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility>System Administrator</Responsibility><IAControls>ECSC-1</IAControls>DPMS Target FirefoxDISA FSODPMS TargetFirefox205Ensure the preference "dom.disable_window_move_resize" is set and locked to the value of “true”.In About:Config, verify that the preference name “dom.disable_window_move_resize" is set and locked to “true”. -- --Criteria: If the parameter is set incorrectly, then this is a finding. If the setting is not locked, then this is a finding. --DTBF010 - Firefox Preferences - SSL 2.0 Protocol<GroupDescription></GroupDescription>DTBF010The Firefox SSLV2 parameter is configured to allow use of SSL 2.0.<VulnDiscussion>Use of versions prior to TLS 1.0 are not permitted because these versions are non-standard. SSL 2.0 and SSL 3.0 contain a number of security flaws. These versions must be disabled in compliance with the Network Infrastructure and Secure Remote Computing STIGs. SSL 2.0 setting does not appear in the Options dialog and must be disabled using About:Config.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility>System Administrator</Responsibility><IAControls>ECSC-1</IAControls>DPMS Target FirefoxDISA FSODPMS TargetFirefox205Set the preference "security.enable_ssl2" is set to "false" and lock using the Mozilla.cfg file. -- --Open a browser window, type "about:config" in the address bar, then navigate to the setting for Preference Name "security.enable_ssl2" and verify the value is set to "false". -- --Criteria: If the parameter is set incorrectly, then this is a finding. If the value is not locked this is a finding. --DTBF030 - Firefox Preferences – SSL Protocols TLS<GroupDescription></GroupDescription>DTBF030Firefox is not configured to allow use of TLS 1.0.<VulnDiscussion>DoD implementations of SSL must use TLS 1.0 in accordance with the Network Infrastructure STIG. Earlier versions of SSL have known security vulnerabilities and are not authorized for use in DOD.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility>System Administrator</Responsibility><IAControls>ECSC-1</IAControls>DPMS Target FirefoxDISA FSODPMS TargetFirefox205Ensure the preference value of "security.enable_tls" is set to "true" and locked. --Open a browser window, type "about:config" in the address bar. Verify Preference Name "security.enable_tls" is set to the value "true" and locked. -- --Criteria: If the parameter is set incorrectly, then this is a finding. If the setting is not locked, then this is a finding. --DTBF182 - JavaScript raise or lower windows<GroupDescription></GroupDescription>DTBF182Firefox is configured to allow JavaScript to raise or lower windows.<VulnDiscussion>JavaScript can make changes to the browser’s appearance. Allowing a website to use JavaScript to raise and lower browser windows may disguise an attack. Browser windows may not be set as active via JavaScript. --</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility>System Administrator</Responsibility><IAControls>ECSC-1</IAControls>DPMS Target FirefoxDISA FSODPMS TargetFirefox205Ensure the preference "dom.disable_window_flip" is set and locked to the value of “true”.In About:Config, verify that the preference name “dom.disable_window_flip" is set and locked to “true”. -- --Criteria: If the parameter is set incorrectly, then this is a finding. If the setting is not locked, then this is a finding.DTBF183 - JavaScript Context Menus<GroupDescription></GroupDescription>DTBF183Firefox is configured to allow JavaScript to disable or replace context menus.<VulnDiscussion>A context menu (also known as a pop-up menu) is often used in a graphical user interface (GUI) and appears upon user interaction (e.g., a right mouse click). A context menu offers a limited set of choices that are available in the current state, or context, of the operating system or application. A website may execute JavaScript that can make changes to these context menus. This can help disguise an attack. Set this preference to "false" so that webpages will not be able to affect the context menu event.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility>System Administrator</Responsibility><IAControls>ECSC-1</IAControls>DPMS Target FirefoxDISA FSODPMS TargetFirefox205Ensure the preferences “dom.event.contextmenu.enabled" is set and locked to “false”, "dom.disable_window_move_resize" is set and locked to "true", and "dom.disable_window_flip" is set and locked to "true".Type "about:config" in the address bar of the browser. Verify that the preferences “dom.event.contextmenu.enabled" is set and locked to “false”, "dom.disable_window_move_resize" is set and locked to "true", and "dom.disable_window_flip" is set and locked to "true". -- --Criteria: If the parameter is set incorrectly, then this is a finding. If the setting is not locked, then this is a finding.DTBF183Firefox is must be configured to prevent JavaScript from disable or replace context menus.<VulnDiscussion>A context menu (also known as a pop-up menu) is often used in a graphical user interface (GUI) and appears upon user interaction (e.g., a right mouse click). A context menu offers a limited set of choices that are available in the current state, or context, of the operating system or application. A website may execute JavaScript that can make changes to these context menus. This can help disguise an attack. Set this preference to "false" so that webpages will not be able to affect the context menu event.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility>System Administrator</Responsibility><IAControls>ECSC-1</IAControls>DPMS Target FirefoxDISA FSODPMS TargetFirefox205Ensure the preferences “dom.event.contextmenu.enabled" is set and locked to “false”, "dom.disable_window_move_resize" is set and locked to "true", and "dom.disable_window_flip" is set and locked to "true".Type "about:config" in the address bar of the browser. Verify that the preferences “dom.event.contextmenu.enabled" is set and locked to “false”, "dom.disable_window_move_resize" is set and locked to "true", and "dom.disable_window_flip" is set and locked to "true". -- --Criteria: If the parameter is set incorrectly, then this is a finding. If the setting is not locked, then this is a finding.DTBF184 - JavaScript hiding or changing status bar<GroupDescription></GroupDescription>DTBF184Firefox is configured to allow JavaScript to hide or change the status bar.<VulnDiscussion>When a user visits some webpages, JavaScript can hide or make changes to the browser’s appearance to hide unauthorized activity. This activity can help disguise an attack taking place in a minimized background window. Determines whether the text in the browser status bar may be set by JavaScript. Set and lock to True (default in Firefox) so that JavaScript access to preference settings for is disabled.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility>System Administrator</Responsibility><IAControls>ECSC-1</IAControls>DPMS Target FirefoxDISA FSODPMS TargetFirefox205Ensure the preference "dom.disable_window_status_change" is set and locked to the value of “true”.Type "about:config" in the address bar of the browser. Verify that the preference “dom.disable_window_status_change" is set and locked to “true”. -- --Criteria: If the parameter is set incorrectly, then this is a finding. If the setting is not locked, then this is a finding.DTBF185 -JavaScript can change the status bar text<GroupDescription></GroupDescription>DTBF185Firefox is configured to allow JavaScript to change the status bar text.<VulnDiscussion>JavaScript can make changes to the browser’s appearance. This activity can help disguise an attack taking place in a minimized background window. Webpage authors can disable many features of a popup window that they open. Setting these preferences to true will override the author's settings and ensure that the feature is enabled and present in any popup window. This setting prevents the status bar from being hidden.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility>System Administrator</Responsibility><IAControls>ECSC-1</IAControls>DPMS Target FirefoxDISA FSODPMS TargetFirefox205Ensure the preference "dom.disable_window_open_feature.status" is set and locked to the value of “true”.In About:Config, verify that the preference “dom.disable_window_open_feature.status" is set and locked to “true”. -- --Criteria: If the parameter is set incorrectly, then this is a finding. If the setting is not locked, then this is a finding. --DTBF130 - Non-secure Page Warning<GroupDescription></GroupDescription>DTBF130Firefox is not configured to provide warnings when a user switches from a secure (SSL-enabled) to a non-secure page.<VulnDiscussion>Users may not be aware that the information being viewed under secure conditions in a previous page are not currently being viewed under the same security settings. </VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility>System Administrator</Responsibility><IAControls>ECSC-1</IAControls>DPMS Target FirefoxDISA FSODPMS TargetFirefox205Ensure the preference “security.warn_leaving_secure" is set to “true” and locked on this setting.Type "about:config" in the browser window. Verify that the preference name “security.warn_leaving_secure" is set to “true” and locked. -- --Criteria: If the parameter is set incorrectly, then this is a finding. If the setting is not locked, then this is a finding. --DTBF017 - Home Page<GroupDescription></GroupDescription>DTBF017The Firefox browser home page is not set to blank or a trusted site.<VulnDiscussion>The browser home page parameter specifies the web page that is to be displayed when the browser is started explicitly and when product-specific buttons or key sequences for the home page are accessed. This helps to mitigate the possibility of automatic inadvertent execution of script added to a previously safe site.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility>System Administrator</Responsibility><IAControls>ECSC-1</IAControls>DPMS Target FirefoxDISA FSODPMS TargetFirefox205Ensure the preference "browser.startup.homepage" is set and locked to blank or the URL for a .mil or other trusted website.Type "about:config" in the address bar of the browser. Verify that the preference "browser.startup.homepage" is set and locked to blank or an authorized and trusted website such as "https://www.us.army.mil/suite/page/429668" -- --Criteria: If the parameter is set incorrectly, then this is a finding. If the setting is not locked, then this is a finding. --DTBF003 - Installed version of FireFox not supported<GroupDescription></GroupDescription>DTBF003Installed version of Firefox unsupported.<VulnDiscussion>Use of versions of an application which are not supported by the vendor are not permitted. Vendors respond to security flaws with updates and patches. These updates are not available for unsupported version which can leave the application vulnerable to attack. </VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility>System Administrator</Responsibility><IAControls>DCMC-1</IAControls>DPMS Target FirefoxDISA FSODPMS TargetFirefox205Upgrade the version of the browser to an approved version by obtaining software from the vendor or other trusted source. Method 1: View the following registry key: --HKLM\Software\Mozilla\Mozilla Firefox\CurrentVersion -- --Method 2: Search for the firefox.exe file using the search feature of the operating system. Examine the files properties for the product version (not the file version. For Windows OS, determine the version of the file by examining navigating to Properties/Version/Product Version. Examine for all instances of firefox.exe that are present on the endpoint. -- --Criteria: If the version number of the firefox.exe file is less than 3.x.x, then this is a Finding. -- --DTBF080-Firefox Preferences–Auto-update of Firefox<GroupDescription></GroupDescription>DTBF080Firefox application is set to auto-update.<VulnDiscussion>Allowing software updates from non-trusted sites can introduce settings that will override a secured installation of the application. This can place DoD information at risk. If this setting is enabled, then there are many other default settings which point to untrusted sites which must be changed to point to an authorized update site that is not publicly accessible. </VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility>System Administrator</Responsibility><IAControls>ECSC-1</IAControls>DPMS Target FirefoxDISA FSODPMS TargetFirefox205Ensure the preference "app.update.enable" is set and locked to the value of “False” or that a trusted server is used. Type "about:config" in the browser window. Verify that -- --1. The preference name "app.update.enabled" is set to 'false' and locked or -- --2. If set to "true" then verify that "app.update.url", "app.update.url.details" and "app.update.url.manual" contain url information that point to a trusted server and is not the default setting. (Default would contain mozilla.com or Mozilla.org). -- -- --Criteria: If the parameter is set incorrectly, then this is a finding. If this setting is not locked, then this is a finding. --DTBF090-Firefox Preferences-Addons\ plugin updates<GroupDescription></GroupDescription>DTBF090Firefox automatically updates installed add-ons and plugins.<VulnDiscussion>Set this to false to disable checking for updated versions of the Extensions/Themes. Automatic updates from untrusted sites puts the enclave at risk of attack and may override security settings.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility>System Administrator</Responsibility><IAControls>ECSC-1</IAControls>DPMS Target FirefoxDISA FSODPMS TargetFirefox205Set the preference “extensions.update.enabled” value to "false" and lock using the Mozilla.cfg file. --Type "about:config" in the browser window. Verify the preference “extensions.update.enabled” is set to "false" and locked. -- --Criteria: If the parameter is set incorrectly, then this is a finding. If this setting is not locked, then this is a finding. --DTBF090Firefox automatically updates installed add-ons and plugins.<VulnDiscussion>Set this to false to disable checking for updated versions of the Extensions/Themes. Automatic updates from untrusted sites puts the enclave at risk of attack and may override security settings.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility>System Administrator</Responsibility><IAControls>ECSC-1</IAControls>DPMS Target FirefoxDISA FSODPMS TargetFirefox205Set the preference “extensions.update.enabled” value to "false" and lock using the Mozilla.cfg file. --Type "about:config" in the browser window. Verify the preference “extensions.update.enabled” is set to "false" and locked. -- --Criteria: If the parameter is set incorrectly, then this is a finding. If this setting is not locked, then this is a finding. --DTBF070 - Firefox Preferences - Lock settings<GroupDescription></GroupDescription>DTBF070Firefox required security preferences cannot be changed by user.<VulnDiscussion>Locked settings prevent users from accessing about:config and changing the security settings set by the system administrator. Locked settings should be placed in the mozilla.cfg file. The mozilla.cfg file is an encoded file of JavaScript commands. The encoding is a simple "byte-shifting" with an offset of 13 (Netscape 4 used a similar encoding, but with a 7 instead). This file also needs to be "called" from the configuration file local-settings.js</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility>System Administrator</Responsibility><IAControls>ECSC-1</IAControls>DPMS Target FirefoxDISA FSODPMS TargetFirefox205Ensure the required settings In "About:config" are locked using the Mozilla.cfg file. Verify that required settings are marked as locked in about:config. Verify that mozilla.cfg file is used to lock required security settings. -- --For instructions and a tool for reading the bitshifted file go to http://www.alain.knaff.lu/howto/MozillaCustomization/cgi/byteshf.cgi -- --Sample file: --// --lockPref("browser.startup.homepage", "https://www.us.army.mil/suite/page/429668"); --lockPref("browser.download.dir", "N:"); --lockPref("browser.download.downloadDir", "N:"); --lockPref("app.update.enabled", false); --lockPref("extensions.update.enabled", false); --lockPref("browser.shell.checkDefaultBrowser", false); --lockPref("browser.search.update", false); --lockPref("browser.formfill.enable", false); --lockPref("signon.prefillForms", false); --lockPref("dom.disable_open_during_load", true); --lockPref("dom.disable_window_move_resize", true); --lockPref("dom.event.contextmenu.enabled", false); --lockPref("dom.disable_window_status_change", true); --lockPref("dom.disable_window_flip", true); --lockPref("dom.disable_window_open_feature.status", true); --lockPref("security.warn_leaving_secure", true); --lockPref("privacy.sanitize.promptOnSanitize", false); --lockPref("privacy.sanitize.sanitizeOnShutdown", true); --lockPref("security.default_personal_cert", "Ask Every Time"); --lockPref("signon.rememberSignons", false); --lockPref("xpinstall.whitelist.required", true); --lockPref(“network.protocol-handler.external.shell”,false); --lockPref(“security.enable_ssl3”,true); --lockPref(“security.enable_ssl2”,false); --lockPref(“security.enable_tls”,true); --lockPref("plugin.disable_full_page_plugin_for_types", "application/pdf,application/doc,application/xls,application/bat,application/ppt,application/mdb,application/mde,application/fdf,application/xfdf,application/lsl,application/lso,appliation/lss,application/iqy,application/rqy,application/xlk,application/pot,application/pps,application/dot,application/wbk,application/ps,application/eps,application/wch,application/wcm,application/wbi,application/wb1,application/wb3,application/rtf,application/wch,application/wcm,application/ad,application/adp,application/xlt, application/dos, application/wks"); --lockPref("privacy.item.history", false) -- --Note: Append line into local-settings.js file to include in the Mozilla config file --DTBF085 - Firefox Preferences –Search update <GroupDescription></GroupDescription>DTBF085Firefox automatically checks for updated version of installed Search plugins.<VulnDiscussion>Updates need to be controlled and installed from authorized and trusted servers. This setting overrides a number of other settings which may direct the application to access external URLs.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility>System Administrator</Responsibility><IAControls>ECSC-1</IAControls>DPMS Target FirefoxDISA FSODPMS TargetFirefox205Ensure the preference "browser.search.update" is set and locked to the value of “False”.Type "about:config" in the browser window. Verify the preference "browser.search.update” is set to "false" and locked. -- --Criteria: If the parameter is set incorrectly, then this is a finding. If the setting is not locked, then this is a finding. -- -\ No newline at end of file -diff --git a/shared/references/disa-stig-firefox-v5r1-xccdf-manual.xml b/shared/references/disa-stig-firefox-v5r1-xccdf-manual.xml -new file mode 100644 -index 00000000000..f0a8e661782 ---- /dev/null -+++ b/shared/references/disa-stig-firefox-v5r1-xccdf-manual.xml -@@ -0,0 +1,120 @@ -+acceptedMozilla Firefox Security Technical Implementation GuideThis 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: disa.stig_spt@mail.mil.DISASTIG.DOD.MILRelease: 1 Benchmark Date: 22 Jan 20213.2.1.416661.10.05I - Mission Critical Classified<ProfileDescription></ProfileDescription>I - Mission Critical Sensitive<ProfileDescription></ProfileDescription>II - Mission Support Public<ProfileDescription></ProfileDescription>III - Administrative Classified<ProfileDescription></ProfileDescription>III - Administrative Sensitive<ProfileDescription></ProfileDescription> -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- I - Mission Critial Public -- <ProfileDescription></ProfileDescription> -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- II - Mission Support Classified -- <ProfileDescription></ProfileDescription> -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- II - Mission Support Sensitive -- <ProfileDescription></ProfileDescription> -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- III - Administrative Public -- <ProfileDescription></ProfileDescription> -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- DTBC0001 - Disable firewall traversal -- <GroupDescription></GroupDescription> -- -- DTBC-0001 -- Firewall traversal from remote host must be disabled. -- <VulnDiscussion>Remote connections should never be allowed that bypass the firewall, as there is no way to verify if they can be trusted. Enables usage of STUN and relay servers when remote clients are trying to establish a connection to this machine. If this setting is enabled, then remote clients can discover and connect to this machine even if they are separated by a firewall. If this setting is disabled and outgoing UDP connections are filtered by the firewall, then this machine will only allow connections from client machines within the local network. If this policy is left not set the setting will be enabled. </VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> -- -- DPMS Target Google Chrome Current -- DISA FSO -- DPMS Target -- Google Chrome Current -- 2591 -- -- Windows group policy: -- 1. Open the group policy editor tool with gpedit.msc -- 2. Navigate to Policy Path: Computer Configuration\Administrative\Templates\Google\Google Chrome\Configure remote access options -- Policy Name: Enable firewall traversal from remote access host -- Policy State: Disabled -- Policy Value: false -- -- -- -- -- -- Universal method: -- 1. In the omnibox (address bar) type chrome://policy -- 2. If RemoteAccessHostFirewallTraversal is not displayed under the Policy Name column or it is not set to false under the Policy Value column, then this is a finding. -- --Windows registry: -- 1. Start regedit -- 2. Navigate to HKLM\Software\Policies\Google\Chrome\ -- 3. If the RemoteAccessHostFirewallTraversal value name does not exist or its value data is not set to 0, then this is a finding. -- -- -- -- -- -- DTBC0003 - Block desktop notifications -- <GroupDescription></GroupDescription> -- -- DTBC-0003 -- Sites ability for showing desktop notifications must be disabled. -- <VulnDiscussion>Chrome by default allows websites to display notifications on the desktop. This check allows you to set whether or not this is permitted. Displaying desktop notifications can be allowed by default, denied by default or the user can be asked every time a website wants to show desktop notifications. If this policy is left not set, 'AskNotifications' will be used and the user will be able to change it. -- 1 = Allow sites to show desktop notifications -- 2 = Do not allow any site to show desktop notifications -- 3 = Ask every time a site wants to show desktop notifications --</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> -- -- DPMS Target Google Chrome Current -- DISA FSO -- DPMS Target -- Google Chrome Current -- 2591 -- -- Windows group policy: -- 1. Open the group policy editor tool with gpedit.msc -- 2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\Content Settings\ -- Policy Name: Default notification setting -- Policy State: Enabled -- Policy Value: Do not allow any site to show desktop notifications -- -- -- -- -- -- Universal method: -- 1. In the omnibox (address bar) type chrome://policy -- 2. If DefaultNotificationsSetting is not displayed under the Policy Name column or it is not set to 2, then this is a finding. -- --Windows method: -- 1. Start regedit -- 2. Navigate to HKLM\Software\Policies\Google\Chrome\ -- 3. If the DefaultNotificationsSetting value name does not exist or its value data is not set to 2, then this is a finding. -- -- -- -- -- -- DTBC0004 - Disable pop-ups -- <GroupDescription></GroupDescription> -- -- DTBC-0004 -- Sites ability to show pop-ups must be disabled. -- <VulnDiscussion>Chrome allows you to manage whether unwanted pop-up windows appear. Pop-up windows that are opened when the end user clicks a link are not blocked. If you enable this policy setting, most unwanted pop-up windows are prevented from appearing. If you disable this policy setting, pop-up windows are not prevented from appearing. If you disable this policy setting, scripts can continue to create pop-up windows, and pop-ups that hide other windows. Recommend configuring this setting to ‘2’ to help prevent malicious websites from controlling the pop-up windows or fooling users into clicking on the wrong window. If you do not configure this policy setting, most unwanted pop-up windows are prevented from appearing. If this policy is left not set, 'BlockPopups' will be used and the user will be able to change it. -- 1 = Allow all sites to show pop-ups -- 2 = Do not allow any site to show pop-ups --</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> -- -- DPMS Target Google Chrome Current -- DISA FSO -- DPMS Target -- Google Chrome Current -- 2591 -- -- Windows group policy: -- 1. Open the group policy editor tool with gpedit.msc -- 2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\Content Settings\ -- Policy Name: Default popups setting -- Policy State: Enabled -- Policy Value: Do not allow any site to show popups -- -- -- -- -- -- Universal method: -- 1. In the omnibox (address bar) type chrome://policy -- 2. If DefaultPopupsSetting is not displayed under the Policy Name column or it is not set to 2, then this is a finding. -- --Windows method: -- 1. Start regedit -- 2. Navigate to HKLM\Software\Policies\Google\Chrome\ -- 3. If the value name DefaultPopupsSetting does not exist or its value data is not set to 2, then this is a finding. -- -- -- -- -- -- DTBC0002 - Disallow Location Tracking -- <GroupDescription></GroupDescription> -- -- DTBC-0002 -- Site tracking users location must be disabled. -- <VulnDiscussion>Website tracking is the practice of gathering information as to which websites were accesses by a browser. The common method of doing this is to have a website create a tracking cookie on the browser. If the information of what sites are being accessed is made available to unauthorized persons, this violates confidentiality requirements, and over time poses a significant OPSEC issue. This policy setting allows you to set whether websites are allowed to track the user’s physical location. Tracking the user’s physical location can be allowed by default, denied by default or the user can be asked every time a website requests the physical location. -- 1 = Allow sites to track the user’s physical location -- 2 = Do not allow any site to track the user’s physical location -- 3 = Ask whenever a site wants to track the user’s physical location --</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> -- -- DPMS Target Google Chrome Current -- DISA FSO -- DPMS Target -- Google Chrome Current -- 2591 -- -- Windows group policy: -- 1. Open the group policy editor tool with gpedit.msc -- 2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\Content Settings\ -- Policy Name: Default geolocation setting -- Policy State: Enabled -- Policy Value: Do not allow any site to track the users' physical location -- -- -- -- -- -- Universal method: -- 1. In the omnibox (address bar) type chrome://policy -- 2. If DefaultGeolocationSetting is not displayed under the Policy Name column or it is not set to 2, then this is a finding. -- --Windows method: -- 1. Start regedit -- 2. Navigate to HKLM\Software\Policies\Google\Chrome\ -- 3. If the DefaultGeolocationSetting value name does not exist or its value data is not set to 2, then this is a finding. -- -- -- -- -- -- DTBC0005 - Blacklist extension installation -- <GroupDescription></GroupDescription> -- -- DTBC-0005 -- Extensions installation must be blacklisted by default. -- <VulnDiscussion>Extensions are developed by third party sources and are designed to extend Google Chrome's functionality. An extension can be made by anyone, to do and access almost anything on a system; this means they pose a high risk to any system that would allow all extensions to be installed by default. Allows you to specify which extensions the users can NOT install. Extensions already installed will be removed if blacklisted. A blacklist value of '*' means all extensions are blacklisted unless they are explicitly listed in the whitelist. If this policy is left not set the user can install any extension in Google Chrome.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> -- -- DPMS Target Google Chrome Current -- DISA FSO -- DPMS Target -- Google Chrome Current -- 2591 -- -- Windows group policy: -- 1. Open the group policy editor tool with gpedit.msc -- 2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\Extensions\ -- Policy Name: Configure extension installation blacklist -- Policy State: Enabled -- Policy Value: * -- -- -- -- -- -- Universal method: -- 1. In the omnibox (address bar) type chrome://policy -- 2. If ExtensionInstallBlacklist is not displayed under the Policy Name column or it is not set to * under the Policy Value column, then this is a finding. -- --Windows method: -- 1. Start regedit -- 2. Navigate to HKLM\Software\Policies\Google\Chrome\ExtensionInstallBlacklist -- 3. If the a registry value name of 1 does not exist under that key or its value is not set to *, then this is a finding. -- -- -- -- -- -- DTBC0006 - Extension whitelist -- <GroupDescription></GroupDescription> -- -- DTBC-0006 -- Extensions that are approved for use must be whitelisted. -- -- <VulnDiscussion>The whitelist should only contain organizationally approved extensions. This is to prevent a user from accidently whitelisitng a malicious extension. This policy allows you to specify which extensions are not subject to the blacklist. A blacklist value of ‘*’ means all extensions are blacklisted and users can only install extensions listed in the whitelist. By default, no extensions are whitelisted. If all extensions have been blacklisted by policy, then the whitelist policy can be used to allow specific extensions to be installed. Administrators should determine which extensions should be allowed to be installed by their users. If no extensions are whitelisted, then no extensions can be installed when combined with blacklisting all extensions.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> -- -- DPMS Target Google Chrome Current -- DISA FSO -- DPMS Target -- Google Chrome Current -- 2591 -- -- Windows group policy: -- 1. Open the group policy editor tool with gpedit.msc -- 2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\Extensions\ -- Policy Name: Configure extension installation whitelist -- Policy State: Enabled -- Policy Value: oiigbmnaadbkfbmpbfijlflahbdbdgdf -- --Note: oiigbmnaadbkfbmpbfijlflahbdbdgdf is the extension ID for scriptno(a commonly used Chrome extension) -- -- -- -- -- -- Universal method: -- 1. In the omnibox (address bar) type chrome://policy -- 2. If ExtensionInstallWhitelist is not displayed under the Policy Name column or it is not set to oiigbmnaadbkfbmpbfijlflahbdbdgdf or a list of administrator approved extension IDs, then this is a finding. -- --Windows method: -- 1. Start regedit -- 2. Navigate to HKLM\Software\Policies\Google\Chrome\ExtensionInstallWhitelist -- 3. If the ExtensionInstallWhitelist key does not exist or is not set to oiigbmnaadbkfbmpbfijlflahbdbdgdf or a list of administrator approved extension IDs, then this is a finding. -- -- -- -- -- -- DTBC0007 - Default search provider name -- <GroupDescription></GroupDescription> -- -- DTBC-0007 -- The default search providers name must be set. -- <VulnDiscussion>Specifies the name of the default search provider that is to be used, if left empty or not set, the host name specified by the search URL will be used. This policy is only considered if the 'DefaultSearchProviderEnabled' policy is enabled. When doing internet searches it is important to use an encrypted connection via https.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> -- -- DPMS Target Google Chrome Current -- DISA FSO -- DPMS Target -- Google Chrome Current -- 2591 -- -- Windows group policy: -- 1. Open the group policy editor tool with gpedit.msc -- 2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\Default search provider\ -- Policy Name: Default search provider name -- Policy State: Enabled -- Policy Value: set to an organization approved encrypted search provider that corresponds to the encrypted search provider set in DTBC-0008(ex. Google Encrypted, Bing Encrypted) -- -- -- -- -- -- Universal method: -- 1. In the omnibox (address bar) type chrome://policy -- 2. If DefaultSearchProviderName is displayed under the Policy Name column or it is not set to an organization approved encrypted search provider that corresponds to the encrypted search provider set in DTBC-0008(ex. Google Encrypted, Bing Encrypted) under the Policy Value column, then this is a finding. -- --Windows method: -- 1. Start regedit -- 2. Navigate to HKLM\Software\Policies\Google\Chrome\ -- 3. If the DefaultSearchProviderName value name does not exist or it is not set to an organization approved encrypted search provider that corresponds to the encrypted search provider set in DTBC-0008(ex. Google Encrypted, Bing Encrypted), then this is a finding. -- -- -- -- -- -- DTBC0008 - Encrypted searching -- <GroupDescription></GroupDescription> -- -- DTBC-0008 -- The default search provider URL must be set to perform encrypted searches. -- -- <VulnDiscussion>Specifies the URL of the search engine used when doing a default search. The URL should contain the string '{searchTerms}', which will be replaced at query time by the terms the user is searching for. This option must be set when the 'DefaultSearchProviderEnabled' policy is enabled and will only be respected if this is the case. When doing internet searches it is important to use an encrypted connection via https.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> -- -- DPMS Target Google Chrome Current -- DISA FSO -- DPMS Target -- Google Chrome Current -- 2591 -- -- Windows group policy: -- 1. Open the group policy editor tool with gpedit.msc -- 2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\Default search provider\ -- Policy Name: Default search provider search URL -- Policy State: Enabled -- Policy Value: must be set to an organization approved encrypted search string -- (ex. https://www.google.com/#q={searchTerms} or https://www.bing.com/search?q={searchTerms} ) -- -- -- -- -- -- Universal method: -- 1. In the omnibox (address bar) type chrome://policy -- 2. If DefaultSearchProviderSearchURL is not displayed under the Policy Name column or it is not set to an organization approved encrypted search string (ex. https://www.google.com/#q={searchTerms} or https://www.bing.com/search?q={searchTerms} ) under the Policy Value column, then this is a finding. -- --Windows method: -- 1. Start regedit -- 2. Navigate to HKLM\Software\Policies\Google\Chrome\ -- 3. If the DefaultSearchProviderSearchURL value name does not exist or its value data is not set to an organization approved encrypted search string (ex. https://www.google.com/#q={searchTerms} or https://www.bing.com/search?q={searchTerms} ) then this is a finding. -- -- -- -- -- -- DTBC0009 - Default search provider -- <GroupDescription></GroupDescription> -- -- DTBC-0009 -- Default search provider must be enabled. -- <VulnDiscussion>Policy enables the use of a default search provider. If you enable this setting, a default search is performed when the user types text in the omnibox that is not a URL. You can specify the default search provider to be used by setting the rest of the default search policies. If these are left empty, the user can choose the default provider. If you disable this setting, no search is performed when the user enters non-URL text in the omnibox. If you enable or disable this setting, users cannot change or override this setting in Google Chrome. If this policy is left not set, the default search provider is enabled, and the user will be able to set the search provider list.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> -- -- DPMS Target Google Chrome Current -- DISA FSO -- DPMS Target -- Google Chrome Current -- 2591 -- -- Windows group policy: -- 1. Open the group policy editor tool with gpedit.msc -- 2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\Default search provider\ -- Policy Name: Enable the default search provider -- Policy State: Enabled -- Policy Value: N/A -- -- -- -- -- -- Universal method: -- 1. In the omnibox (address bar) type chrome://policy -- 2. If DefaultSearchProviderEnabled is not displayed under the Policy Name column or it is not set to true under the Policy Value column, then this is a finding. -- --Windows method: -- 1. Start regedit -- 2. Navigate to HKLM\Software\Policies\Google\Chrome\ -- 3. If the DefaultSearchProviderEnabled value name does not exist or its value data is not set to 1, then this is a finding. -- -- -- -- -- -- DTBC0010 - Disable cleartext passwords -- <GroupDescription></GroupDescription> -- -- DTBC-0010 -- Use of cleartext passwords in the Password Manager must be disabled. -- <VulnDiscussion>Cleartext passwords would allow another individual to see password via shoulder surfing. This policy controls whether the user may show passwords in clear text in the password manager. If you disable this setting, the password manager does not allow showing stored passwords in clear text in the password manager window. By not configuring this policy, users can view their stored passwords in clear text in the password manager.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> -- -- DPMS Target Google Chrome Current -- DISA FSO -- DPMS Target -- Google Chrome Current -- 2591 -- -- Windows group policy: -- 1. Open the group policy editor tool with gpedit.msc -- 2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\Password manager\ -- Policy Name: Allow users to show passwords in Password Manager -- Policy State: Disabled -- Policy Value: N/A -- -- -- -- -- -- Universal method: -- 1. In the omnibox (address bar) type chrome://policy -- 2. If PasswordManagerAllowShowPasswords is not displayed under the Policy Name column or it is not set to false under the Policy Value column, then this is a finding. -- --Windows method: -- 1. Start regedit -- 2. Navigate to HKLM\Software\Policies\Google\Chrome\ -- 3. If the PasswordManagerAllowShowPasswords value name does not exist or its value data is not set to 0, then this is a finding. -- -- -- -- -- -- DTBC0011 - Password Manager -- <GroupDescription></GroupDescription> -- -- DTBC-0011 -- The Password Manager must be disabled. -- <VulnDiscussion>Enables saving passwords and using saved passwords in Google Chrome. Malicious sites may take advantage of this feature by using hidden fields gain access to the stored information. If you enable this setting, users can have Google Chrome memorize passwords and provide them automatically the next time they log in to a site. If you disable this setting, users are not able to save passwords or use already saved passwords. If you enable or disable this setting, users cannot change or override this setting in Google Chrome. If this policy is left not set, this will be enabled but the user will be able to change it. ListPassword manager should not be used as it stores passwords locally.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> -- -- DPMS Target Google Chrome Current -- DISA FSO -- DPMS Target -- Google Chrome Current -- 2591 -- -- Windows group policy: -- 1. Open the group policy editor tool with gpedit.msc -- 2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\Password Manager\ -- Policy Name: Enable the password manager -- Policy State: Disabled -- Policy Value: N/A -- -- -- -- -- -- Universal method: -- 1. In the omnibox (address bar) type chrome://policy -- 2. If PasswordManagerEnabled is not displayed under the Policy Name column or it is not set to false under the Policy Value column, then this is a finding. -- --Windows method: -- 1. Start regedit -- 2. Navigate to HKLM\Software\Policies\Google\Chrome\ -- 3. If the PasswordManagerEnabled value name does not exist or its value data is not set to 0, then this is a finding. -- -- -- -- -- -- DTBC0012 - HTTP Authentication -- <GroupDescription></GroupDescription> -- -- DTBC-0012 -- The HTTP Authentication must be set to negotiate. -- <VulnDiscussion>Specifies which HTTP Authentication schemes are supported by Google Chrome. Possible values are 'basic', 'digest', 'ntlm' and 'negotiate'. Separate multiple values with commas. If this policy is left not set, all four schemes will be used.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> -- -- DPMS Target Google Chrome Current -- DISA FSO -- DPMS Target -- Google Chrome Current -- 2591 -- -- Windows group policy: -- 1. Open the group policy editor tool with gpedit.msc -- 2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\Policies for HTTP Authentication\ -- Policy Name: Supported authentication schemes -- Policy State: Enabled -- Policy Value: negotiate -- -- -- -- -- Universal method: -- 1. In the omnibox (address bar) type chrome://policy -- 2. If AuthSchemes is not displayed under the Policy Name column or it is not set to negotiate under the Policy Value column, then this is a finding. -- --Windows method: -- 1. Start regedit -- 2. Navigate to HKLM\Software\Policies\Google\Chrome -- 3. If the AuthSchemes value name does not exist or its value data is not set to negotiate, then this is a finding. -- -- -- -- -- -- DTBC0013 - Outdated plugins -- <GroupDescription></GroupDescription> -- -- DTBC-0013 -- The running of outdated plugins must be disabled. -- <VulnDiscussion>Running outdated plugins could lead to system compromise through the use of known exploits. Having plugins that updated to the most current version ensures the smallest attack surfuce possible. If you enable this setting, outdated plugins are used as normal plugins. If you disable this setting, outdated plugins will not be used and users will not be asked for permission to run them. If this setting is not set, users will be asked for permission to run outdated plugins.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> -- -- DPMS Target Google Chrome Current -- DISA FSO -- DPMS Target -- Google Chrome Current -- 2591 -- -- Windows group policy: -- 1. Open the group policy editor tool with gpedit.msc -- 2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\ -- Policy Name: Allow running plugins that are outdated -- Policy State: Disabled -- Policy Value: N/A -- -- -- -- -- Universal method: -- 1. In the omnibox (address bar) type chrome://policy -- 2. If AllowOutdatedPlugins is not displayed under the Policy Name column or it is not set to false under the Policy Name column, then this is a finding. -- --Windows method: -- 1. Start regedit -- 2. Navigate to HKLM\Software\Policies\Google\Chrome -- 3. If the AllowOutdatedPlugins value name does not exist or its value data is not set to 0, then this is a finding. -- -- -- -- -- -- DTBC0014 - Plugins requiring authorization -- <GroupDescription></GroupDescription> -- -- DTBC-0014 -- Plugins requiring authorization must ask for user permission. -- <VulnDiscussion>Policy allows Google Chrome to run plugins that require authorization. If you enable this setting, plugins that are not outdated will always run. If this setting is disabled or not set, users will be not be asked for permission to run plugins that require authorization. These are plugins that can compromise security.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> -- -- DPMS Target Google Chrome Current -- DISA FSO -- DPMS Target -- Google Chrome Current -- 2591 -- -- Windows group policy: -- 1. Open the group policy editor tool with gpedit.msc -- 2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\ -- Policy Name: Always runs plugins that require authorization -- Policy State: Disabled -- Policy Value: N/A -- -- -- -- -- Universal method: -- 1. In the omnibox (address bar) type chrome://policy -- 2. If AlwaysAuthorizePlugins is not displayed under the Policy Name column or it is not set to false under the Policy Value column, then this is a finding. -- --Windows method: -- 1. Start regedit -- 2. Navigate to HKLM\Software\Policies\Google\Chrome\ -- 3. If the AlwaysAuthorizePlugins value name does not exist or its value data is not set to 0, then this is a finding. -- -- -- -- -- -- DTBC0015 - Third party cookies -- <GroupDescription></GroupDescription> -- -- DTBC-0015 -- Third party cookies must be blocked. -- <VulnDiscussion>Third party cookies are cookies which can be set by web page elements that are not from the domain that is in the browser's address bar. Enabling this setting prevents cookies from being set by web page elements that are not from the domain that is in the browser's address bar. Disabling this setting allows cookies to be set by web page elements that are not from the domain that is in the browser's address bar and prevents users from changing this setting. If this policy is left not set, third party cookies will be enabled but the user will be able to change that.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> -- -- DPMS Target Google Chrome Current -- DISA FSO -- DPMS Target -- Google Chrome Current -- 2591 -- -- Windows group policy: -- 1. Open the group policy editor tool with gpedit.msc -- 2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\ -- Policy Name: Block third party cookies -- Policy State: Enabled -- Policy Value: N/A -- -- -- -- -- Universal method: -- 1. In the omnibox (address bar) type chrome://policy -- 2. If BlockThirdPartyCookies is not displayed under the Policy Name column or it is not set to true under the Policy Value column, then this is a finding. -- --Windows method: -- 1. Start regedit -- 2. Navigate to HKLM\Software\Policies\Google\Chrome\ -- 3. If the BlockThirdPartyCookies value name does not exist or its value data is not set to 1, then this is a finding. -- -- -- -- -- -- DTBC0017 - Disable background processing -- <GroupDescription></GroupDescription> -- -- DTBC-0017 -- Background processing must be disabled. -- <VulnDiscussion>Determines whether a Google Chrome process is started on OS login that keeps running when the last browser window is closed, allowing background apps to remain active. The background process displays an icon in the system tray and can always be closed from there. If this policy is set to True, background mode is enabled and cannot be controlled by the user in the browser settings. If this policy is set to False, background mode is disabled and cannot be controlled by the user in the browser settings. If this policy is left unset, background mode is initially disabled and can be controlled by the user in the browser settings.' - Google Chrome Administrators Policy ListThis setting, if enabled, allows Google Chrome to run at all times. There is two reasons that this is not wanted. First, it can tie up system resources that might otherwise be needed. Second, it does not make it obvious to the user that it is running and poorly written extensions could cause instability on the system.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> -- -- DPMS Target Google Chrome Current -- DISA FSO -- DPMS Target -- Google Chrome Current -- 2591 -- -- Windows group policy: -- 1. Open the group policy editor tool with gpedit.msc -- 2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\ -- Policy Name: Continue running background apps when Google Chrome is closed -- Policy State: Disabled -- Policy Value: N/A -- -- -- -- Universal method: -- 1. In the omnibox (address bar) type chrome://policy -- 2. If BackgroundModeEnabled is not displayed under the Policy Name column and it is not set to false under the Policy Value column, then this is a finding. -- --Windows method: -- 1. Start regedit -- 2. Navigate to HKLM\Software\Policies\Google\Chrome\ -- 3. If the BackgroundModeEnabled value name does not exist or its value data is not set to 0, then this is a finding. -- -- -- -- -- -- DTBC0019 - 3D Graphics APIs -- <GroupDescription></GroupDescription> -- -- DTBC-0019 -- 3D Graphics APIs must be disabled. -- <VulnDiscussion>Disable support for 3D graphics APIs. Enabling this setting prevents web pages from accessing the graphics processing unit (GPU). Specifically, web pages cannot access the WebGL API and plugins cannot use the Pepper 3D API. Disabling this setting or leaving it not set potentially allows web pages to use the WebGL API and plugins to use the Pepper 3D API. The default settings of the browser may still require command line arguments to be passed in order to use these APIs. Chrome uses WebGL to render graphics using the GPU. There are few sites that currently take advantage of this feature. Since there is unlikely to be an operational impact, it is recommended that this feature is turned off in order to reduce the attack surface.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> -- -- DPMS Target Google Chrome Current -- DISA FSO -- DPMS Target -- Google Chrome Current -- 2591 -- -- Windows group policy: -- 1. Open the group policy editor tool with gpedit.msc -- 2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\ -- Policy Name: Disable support for 3D graphics APIs -- Policy State: Enabled -- Policy Value: N/A -- -- -- -- Universal method: -- 1. In the omnibox (address bar) type chrome://policy -- 2. If Disable3DAPIs is not displayed under the Policy Name column or it is not set to true under the Policy Value column, then this is a finding. -- --Windows method: -- 1. Start regedit -- 2. Navigate to HKLM\Software\Policies\Google\Chrome\ -- 3. If the Disable3DAPIs value name does not exist or its value data is not set to 1, then this is a finding. -- -- -- -- -- -- DTBC0020 - Google Data Synchronization -- <GroupDescription></GroupDescription> -- -- DTBC-0020 -- Google Data Synchronization must be disabled. -- <VulnDiscussion>Disables data synchronization in Google Chrome using Google-hosted synchronization services and prevents users from changing this setting. If you enable this setting, users cannot change or override this setting in Google Chrome. If this policy is left not set the user will be able to enable Google Sync. Google Sync is used to sync information between different user devices, this data is then stored on Google owned servers. The synced data may consist of information such as email, calendars, viewing history, etc. This feature must be disabled because the organization does not have control over the servers the data is stored on.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> -- -- DPMS Target Google Chrome Current -- DISA FSO -- DPMS Target -- Google Chrome Current -- 2591 -- -- Windows group policy: -- 1. Open the group policy editor tool with gpedit.msc -- 2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\ -- Policy Name: Disable synchronization of data with Google -- Policy State: Enabled -- Policy Value: N/A -- -- -- -- Universal method: -- 1. In the omnibox (address bar) type chrome://policy -- 2. If SyncDisabled is not displayed under the Policy Name column or it is not set to true under the Policy Value column, then this is a finding. -- --Windows method: -- 1. Start regedit -- 2. Navigate to HKLM\Software\Policies\Google\Chrome\ -- 3. If the SyncDisabled value name does not exist or its value data is not set to 1, then this is a finding. -- -- -- -- -- -- DTBC0021 - URL protocol schemas -- <GroupDescription></GroupDescription> -- -- DTBC-0021 -- The URL protocol schema javascript must be disabled. -- <VulnDiscussion>Each access to a URL is handled by the browser according to the URL's "scheme". The "scheme" of a URL is the section before the ":". The term "protocol" is often mistakenly used for a "scheme". The difference is that the scheme is how the browser handles a URL and the protocol is how the browser communicates with a service. If a scheme or its associated protocol used by a browser is insecure or obsolete, vulnerabilities can be exploited resulting in exposed data or unrestricted access to the browser's system. The browser must be configured to disable the use of insecure and obsolete schemas (protocols). --This policy disables the listed protocol schemes in Google Chrome, URLs using a scheme from this list will not load and cannot be navigated to. If this policy is left not set or the list is empty all schemes will be accessible in Google Chrome. --</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> -- -- DPMS Target Google Chrome Current -- DISA FSO -- DPMS Target -- Google Chrome Current -- 2591 -- -- Windows group policy: -- 1. Open the group policy editor tool with gpedit.msc -- 2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\ -- Policy Name: Block access to a list of URLs -- Policy State: Enabled -- Policy Value 1: javascript://* -- -- -- -- Universal method: -- 1. In the omnibox (address bar) type chrome://policy -- 2. If URLBlacklist is not displayed under the Policy Name column or it is not set to javascript://* under the Policy Value column, then this is a finding. -- --Windows method: -- 1. Start regedit -- 2. Navigate to HKLM\Software\Policies\Google\Chrome\URLBlacklist -- 3. If the URLBlacklist key does not exist, or the does not contain entries 1 set to javascript://*, then this is a finding. -- -- -- -- -- -- -- DTBC0022 - AutoComplete for forms -- <GroupDescription></GroupDescription> -- -- DTBC-0022 -- AutoFill must be disabled. -- <VulnDiscussion>This AutoComplete feature suggests possible matches when users are filling in forms. It is possible that this feature will cache sensitive data and store it in the user's profile, where it might not be protected as rigorously as required by organizational policy. If you enable this setting or do not set a value, AutoFill will remain under the control of the user. This will allow them to configure AutoFill profiles and to switch AutoFill on or off at their own discretion.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> -- -- DPMS Target Google Chrome Current -- DISA FSO -- DPMS Target -- Google Chrome Current -- 2591 -- -- Windows group policy: -- 1. Open the group policy editor tool with gpedit.msc -- 2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\ -- Policy Name: Enable AutoFill -- Policy State: Disabled -- Policy Value: N/A -- -- -- -- Universal method: -- 1. In the omnibox (address bar) type chrome://policy -- 2. If AutoFillEnabled is not displayed under the Policy Name column or it is not set to false under the Policy Value column, then this is a finding. -- --Windows method: -- 1. Start regedit -- 2. Navigate to HKLM\Software\Policies\Google\Chrome\ -- 3. If the AutoFillEnabled value name does not exist or its value data is not set to 0, then this is a finding. -- -- -- -- -- -- DTBC0023 - Cloud print sharing -- <GroupDescription></GroupDescription> -- -- DTBC-0023 -- Cloud print sharing must be disabled. -- <VulnDiscussion>Policy enables Google Chrome to act as a proxy between Google Cloud Print and legacy printers connected to the machine. If this setting is enabled or not configured, users can enable the cloud print proxy by authentication with their Google account. If this setting is disabled, users cannot enable the proxy, and the machine will not be allowed to share it’s printers with Google Cloud Print. If this policy is not set, this will be enabled but the user will be able to change it.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> -- -- DPMS Target Google Chrome Current -- DISA FSO -- DPMS Target -- Google Chrome Current -- 2591 -- -- Windows group policy: -- 1. Open the group policy editor tool with gpedit.msc -- 2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\ -- Policy Name: Enable Google Cloud Print proxy -- Policy State: Disabled -- Policy Value: N/A -- -- -- -- Universal method: -- 1. In the omnibox (address bar) type chrome://policy -- 2. If CloudPrintProxyEnabled is not displayed under the Policy Name column or it is not set to false under the Policy Value column, then this is a finding. -- --Windows method: -- 1. Start regedit -- 2. Navigate to HKLM\Software\Policies\Google\Chrome\ -- 3. If the CloudPrintProxyEnabled value name does not exist or its value data is not set to 0, then this is a finding. -- -- -- -- -- -- DTBC0025 - Network prediction -- <GroupDescription></GroupDescription> -- -- DTBC-0025 -- Network prediction must be disabled. -- <VulnDiscussion>Enables network prediction in Google Chrome and prevents users from changing this setting. If you enable or disable this setting, users cannot change or override this setting in Google Chrome. If this policy is left not set, this will be enabled but the user will be able to change it.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> -- -- DPMS Target Google Chrome Current -- DISA FSO -- DPMS Target -- Google Chrome Current -- 2591 -- -- Windows group policy: -- 1. Open the group policy editor tool with gpedit.msc -- 2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\ -- Policy Name: Enable network prediction -- Policy State: Disabled -- Policy Value: N/A -- -- -- -- Universal method: -- 1. In the omnibox (address bar) type chrome://policy -- 2. If DnsPrefetchingEnabled is not displayed under the Policy Name column or it is not set to false under the Policy Value column, then this is a finding. -- --Windows method: -- 1. Start regedit -- 2. Navigate to HKLM\Software\Policies\Google\Chrome\ -- 3. If the DnsPrefetchingEnabled value name does not exist or its value data is not set to 0, then this is a finding. -- -- -- -- -- -- DTBC0026 - Metrics reporting -- <GroupDescription></GroupDescription> -- -- DTBC-0026 -- Metrics reporting to Google must be disabled. -- <VulnDiscussion>Enables anonymous reporting of usage and crash-related data about Google Chrome to Google and prevents users from changing this setting. If you enable this setting, anonymous reporting of usage and crash-related data is sent to Google. A crash report could contain sensitive information from the computer's memory. If you disable this setting, anonymous reporting of usage and crash-related data is never sent to Google. If you enable or disable this setting, users cannot change or override this setting in Google Chrome. If this policy is left not set the setting will be what the user chose upon installation / first run.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> -- -- DPMS Target Google Chrome Current -- DISA FSO -- DPMS Target -- Google Chrome Current -- 2591 -- -- Windows group policy: -- 1. Open the group policy editor tool with gpedit.msc -- 2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\ -- Policy Name: Enable reporting of usage and crash-related data -- Policy State: Disabled -- Policy Value: N/A -- -- -- -- Universal method: -- 1. In the omnibox (address bar) type chrome://policy -- 2. If MetricsReportingEnabled is not displayed under the Policy Name column or it is not set to false under the Policy Value column, then this is a finding. -- --Windows method: -- 1. Start regedit -- 2. Navigate to HKLM\Software\Policies\Google\Chrome\ -- 3. If the MetricsReportingEnabled value name does not exist or its value data is not set to 0, then this is a finding. -- -- -- -- -- -- DTBC0027 - Search suggestions -- <GroupDescription></GroupDescription> -- -- DTBC-0027 -- Search suggestions must be disabled. -- <VulnDiscussion>Search suggestion should be disabled as it could lead to searches being conducted that were never intended to be made. Enables search suggestions in Google Chrome's omnibox and prevents users from changing this setting. If you enable this setting, search suggestions are used. If you disable this setting, search suggestions are never used. If you enable or disable this setting, users cannot change or override this setting in Google Chrome. If this policy is left not set, this will be enabled but the user will be able to change it.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> -- -- DPMS Target Google Chrome Current -- DISA FSO -- DPMS Target -- Google Chrome Current -- 2591 -- -- Windows group policy: -- 1. Open the group policy editor tool with gpedit.msc -- 2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\ -- Policy Name: Enable search suggestions -- Policy State: Disabled -- Policy Value: N/A -- -- -- -- Universal method: -- 1. In the omnibox (address bar) type chrome://policy -- 2. If SearchSuggestEnabled is not displayed under the Policy Name column or it is not set to false under the Policy Value column, then this is a finding. -- --Windows method: -- 1. Start regedit -- 2. Navigate to HKLM\Software\Policies\Google\Chrome\ -- 3. If the SearchSuggestEnabled value name does not exist or its value data is not set to 0, then this is a finding. -- -- -- -- -- -- DTBC0029 - Import of saved passwords -- <GroupDescription></GroupDescription> -- -- DTBC-0029 -- Importing of saved passwords must be disabled. -- <VulnDiscussion>Importing of saved passwords should be disabled as it could lead to unencrypted account passwords stored on the system from another browser to be viewed. This policy forces the saved passwords to be imported from the previous default browser if enabled. If enabled, this policy also affects the import dialog. If disabled, the saved passwords are not imported. If it is not set, the user may be asked whether to import, or importing may happen automatically.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> -- -- DPMS Target Google Chrome Current -- DISA FSO -- DPMS Target -- Google Chrome Current -- 2591 -- -- Windows group policy: -- 1. Open the group policy editor tool with gpedit.msc -- 2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\ -- Policy Name: Import saved passwords from default browser on first run -- Policy State: Disabled -- Policy Value: False -- -- -- -- Universal method: -- 1. In the omnibox (address bar) type chrome://policy -- 2. If ImportSavedPasswords is not displayed under the Policy Name column or it is not set to false under the Policy Value column, then this is a finding. -- --Windows method: -- 1. Start regedit -- 2. Navigate to HKLM\Software\Policies\Google\Chrome\ -- 3. If the ImportSavedPasswords value name does not exist or its value data is not set to 0, then this is a finding. -- -- -- -- -- DTBC0030 - Incognito Mode -- <GroupDescription></GroupDescription> -- -- DTBC-0030 -- Incognito mode must be disabled. -- <VulnDiscussion>Incognito mode allows the user to browse the Internet without recording their browsing history/activity. From a forensics perspective, this is unacceptable. Best practice requires that browser history is retained. The "IncognitoModeAvailability" setting controls whether the user may utilize Incognito mode in Google Chrome. If 'Enabled' is selected or the policy is left unset, pages may be opened in Incognito mode. If 'Disabled' is selected, pages may not be opened in Incognito mode. If 'Forced' is selected, pages may be opened ONLY in Incognito mode. -- 0 = Incognito mode available. -- 1 = Incognito mode disabled. -- 2 = Incognito mode forced.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> -- -- DPMS Target Google Chrome Current -- DISA FSO -- DPMS Target -- Google Chrome Current -- 2591 -- -- Windows group policy: -- 1. Open the group policy editor tool with gpedit.msc -- 2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\ -- Policy Name: Incognito mode availability -- Policy State: Enabled -- Policy Value: Incognito mode disabled -- -- -- -- Universal method: -- 1. In the omnibox (address bar) type chrome://policy -- 2. If IncognitoModeAvailability is not displayed under the Policy Name column or it is not set to 1 under the Policy Value column, then this is a finding. -- --Windows method: -- 1. Start regedit -- 2. Navigate to HKLM\Software\Policies\Google\Chrome\ -- 3. If the IncognitoModeAvailability value name does not exist or its value data is not set to 1, then this is a finding. -- -- -- -- -- -- DTBC0034 - Plugin blacklist -- <GroupDescription></GroupDescription> -- -- DTBC-0034 -- Plugins must be disabled by default. -- <VulnDiscussion>Specifies a list of plugins that are disabled in Google Chrome and prevents users from changing this setting. The wildcard characters * and ? can be used to match sequences of arbitrary characters. * matches an arbitrary number of characters while ? specifies an optional single character, i.e. matches zero or one characters. The escape character is \, so to match actual *, ?, or \ characters, you can put a \ in front of them. If you enable this setting, the specified list of plugins is never used in Google Chrome. The plugins are marked as disabled in about:plugins and users cannot enable them. Note that this policy can be overridden by ‘EnabledPlugins’ and ‘DisabledPluginsExceptions’. If this policy is left not set the user can use any plugin installed on the system except for hard-coded incompatible, outdated or dangerous plugins.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> -- -- DPMS Target Google Chrome Current -- DISA FSO -- DPMS Target -- Google Chrome Current -- 2591 -- -- Windows group policy: -- 1. Open the group policy editor tool with gpedit.msc -- 2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\ -- Policy Name: Specify a list of disabled plugins -- Policy State: Enabled -- Policy Value: * -- -- -- -- Universal method: -- 1. In the omnibox (address bar) type chrome://policy -- 2. If DisabledPlugins is not displayed under the Policy Name column or it is not set to * under the Policy Value column, then this is a finding. -- --Windows method: -- 1. Start regedit -- 2. Navigate to HKLM\Software\Policies\Google\Chrome\DisabledPlugins -- 3. If the DisabledPlugins key does not exist, or the 1 value name does not exist under that key and the value data is not set to * then this is a finding. -- -- -- -- -- -- DTBC0035 - Approved plugins -- <GroupDescription></GroupDescription> -- -- DTBC-0035 -- Plugins approved for use must be enabled. -- <VulnDiscussion>Policy specifies a list of plugins that are enabled in Google Chrome and prevents users from changing this setting. The wildcard characters '*' and '?' can be used to match sequences of arbitrary characters. '*' matches an arbitrary number of characters while '?' specifies an optional single character, i.e. matches zero or one characters. The escape character is '\', so to match actual '*', '?', or '\' characters, you can put a '\' in front of them. The specified list of plugins is always used in Google Chrome if they are installed. The plugins are marked as enabled in 'about:plugins' and users cannot disable them. Note that this policy overrides both ‘DisabledPlugins ‘and ‘DisabledPluginsExceptions’. If this policy is left not set the user can disable any plugin installed on the system.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> -- -- DPMS Target Google Chrome Current -- DISA FSO -- DPMS Target -- Google Chrome Current -- 2591 -- -- Windows group policy: -- 1. Open the group policy editor tool with gpedit.msc -- 2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\ -- Policy Name: Specify a list of enabled plugins -- Policy State: Enabled -- Policy Value 1: Shockwave Flash -- Policy Value 2: Chrome PDF Viewer -- Policy Value 3: Silverlight -- Policy Value 4: Java* -- -- -- -- Universal method: -- 1. In the omnibox (address bar) type chrome://policy -- 2. If EnabledPlugins is not displayed under the Policy Name column or does not contain a list of administrator approved Plugins under the Policy Value column, then this is a finding. -- --Windows method: -- 1. Start regedit -- 2. Navigate to HKLM\Software\Policies\Google\Chrome\EnabledPlugins -- 3. If the EnabledPlugins key does not exist and does not contain a set of administrator approved Plugins then this is a finding. -- -- --Suggested: the set or subset of Shockwave Flash, Chrome PDF Viewer, Silverlight, Java* -- -- -- -- -- -- -- DTBC0036 - Automatic plugin search and installation -- <GroupDescription></GroupDescription> -- -- DTBC-0036 -- Automated installation of missing plugins must be disabled. -- <VulnDiscussion>The automatic search and installation of missing or not installed plugins should be disabled as this can cause significant risk if a unapproved or vulnerable plugin were to be installed without proper permissions or authorization. If you set this setting to enabled the automatic search and installation of missing plugins will be disabled in Google Chrome.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> -- -- DPMS Target Google Chrome Current -- DISA FSO -- DPMS Target -- Google Chrome Current -- 2591 -- -- Windows group policy: -- 1. Open the group policy editor tool with gpedit.msc -- 2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\ -- Policy Name: Specify whether the plugin finder should be disabled -- Policy State: Enabled -- Policy Value: N/A -- -- -- -- -- Universal method: -- 1. In the omnibox (address bar) type chrome://policy -- 2. If DisablePluginFinder is not displayed under the Policy Name column or it is not set to true under the Policy Value column, then this is a finding. -- --Windows method: -- 1. Start regedit -- 2. Navigate to HKLM\Software\Policies\Google\Chrome\ -- 3. If the DisablePluginFinder value name does not exist or its value data is not set to 1, then this is a finding. -- -- -- -- -- -- DTBC0037 - Online revocation checks -- <GroupDescription></GroupDescription> -- -- DTBC-0037 -- Online revocation checks must be done. -- <VulnDiscussion>By setting this policy to true, the previous behavior is restored and online OCSP/CRL checks will be performed. If the policy is not set, or is set to false, then Chrome will not perform online revocation checks. Certificates are revoked when they have been compromised or are no longer valid, and this option protects users from submitting confidential data to a site that may be fraudulent or not secure.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> -- -- DPMS Target Google Chrome Current -- DISA FSO -- DPMS Target -- Google Chrome Current -- 2591 -- -- Windows group policy: -- 1. Open the group policy editor tool with gpedit.msc -- 2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\ -- Policy Name: Whether online OCSP/CRL checks are performed -- Policy State: Enabled -- Policy Value: N/A -- -- -- -- -- Universal method: -- 1. In the omnibox (address bar) type chrome://policy -- 2. If EnableOnlineRevocationChecks is not displayed under the Policy Name column or it is not set to true under the Policy Value column, then this is a finding. -- --Windows method: -- 1. Start regedit -- 2. Navigate to HKLM\Software\Policies\Google\Chrome\ -- 3. If the EnableOnlineRevocationChecks value name does not exist or its value data is not set to 1, then this is a finding. -- -- -- -- -- -- DTBC0038 - Safe browsing -- <GroupDescription></GroupDescription> -- -- DTBC-0038 -- Safe Browsing must be enabled, -- <VulnDiscussion>Enables Google Chrome's Safe Browsing feature and prevents users from changing this setting. If you enable this setting, Safe Browsing is always active. If you disable this setting, Safe Browsing is never active. If you enable or disable this setting, users cannot change or override this setting in Google Chrome. If this policy is left not set, this will be enabled but the user will be able to change it. Safe browsing uses a signature database to test sites when they are be loaded to ensure they don't contain any known malware.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> -- -- DPMS Target Google Chrome Current -- DISA FSO -- DPMS Target -- Google Chrome Current -- 2591 -- -- Windows group policy: -- 1. Open the group policy editor tool with gpedit.msc -- 2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\ -- Policy Name: Enable Safe Browsing -- Policy State: Enabled -- Policy Value: N/A -- -- -- -- Universal method: -- 1. In the omnibox (address bar) type chrome://policy -- 2. If SafeBrowsingEnabled is not displayed under the Policy Name column or it is not set to true under the Policy Value column, then this is a finding. -- --Windows method: -- 1. Start regedit -- 2. Navigate to HKLM\Software\Policies\Google\Chrome\ -- 3. If the SafeBrowsingEnabled value name does not exist or its value data is not set to 1, then this is a finding. -- -- -- -- -- -- DTBC0039 - History -- <GroupDescription></GroupDescription> -- -- DTBC-0039 -- Browser history must be saved. -- <VulnDiscussion>This policy disables saving browser history in Google Chrome and prevents users from changing this setting. If this setting is enabled, browsing history is not saved. If this setting is disabled or not set, browsing history is saved.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> -- -- DPMS Target Google Chrome Current -- DISA FSO -- DPMS Target -- Google Chrome Current -- 2591 -- -- Windows group policy: -- 1. Open the group policy editor tool with gpedit.msc -- 2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\ -- Policy Name: Disable saving browser history -- Policy State: Disabled -- Policy Value: N/A -- -- -- -- Universal method: -- 1. In the omnibox (address bar) type chrome://policy -- 2. If the policy 'SavingBrowserHistoryDisabled' is not shown or is not set to false, then this is a finding. -- --Windows method: -- 1. Start regedit -- 2. Navigate to HKLM\Software\Policies\Google\Chrome\ -- 3. If the SavingBrowserHistoryDisabled value name does not exist or its value data is not set to 0, then this is a finding. -- -- -- -- -- -- DTBC0040 - Plugin execution -- <GroupDescription></GroupDescription> -- -- DTBC-0040 -- Default behavior must block webpages from automatically running plugins. -- <VulnDiscussion>This policy allows you to set whether websites are allowed to automatically run plugins. Automatically running plugins can be either allowed for all websites or denied for all websites. If this policy is left not set, 'AllowPlugins' will be used and the user will be able to change it. -- 1 = Allow all sites to automatically run plugins -- 2 = Block all plugins -- 3 = Click to play. --</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> -- -- DPMS Target Google Chrome Current -- DISA FSO -- DPMS Target -- Google Chrome Current -- 2591 -- -- Windows group policy: -- 1. Open the group policy editor tool with gpedit.msc -- 2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\Content Settings\ -- Policy Name: Default plugins setting -- Policy State: Enabled -- Policy Value: Click to play -- -- -- -- Universal method: -- 1. In the omnibox(address bar) type chrome://policy -- 2. If the policy 'DefaultPluginsSetting' is not shown or is not set to 'Click to play', this is a finding. -- --Windows method: -- 1. Start regedit -- 2. Navigate to HKLM\Software\Policies\Google\Chrome\DefaultPluginsSetting -- 3. If this key does not exist or is not set to 3 this is a finding. -- -- -- -- -- -- DTBC0045 - Per session cookies -- <GroupDescription></GroupDescription> -- -- DTBC-0045 -- Session only based cookies must be disabled. -- <VulnDiscussion>Policy allows you to set a list of URL patterns that specify sites which are allowed to set session only cookies. If this policy is left not set the global default value will be used for all sites either from the 'DefaultCookiesSetting' policy if it is set, or the user's personal configuration otherwise. If the 'RestoreOnStartup' policy is set to restore URLs from previous sessions this policy will not be respected and cookies will be stored permanently for those sites.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> -- -- DPMS Target Google Chrome Current -- DISA FSO -- DPMS Target -- Google Chrome Current -- 2591 -- -- Windows group policy: -- 1. Open the group policy editor tool with gpedit.msc -- 2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\ -- Policy Name: Allow session only cookies on these sites -- Policy State: Disabled -- Policy Value: N/A -- -- -- -- Universal method: -- 1. In the omnibox(address bar) type chrome://policy -- 2. If the policy 'CookiesSessionOnlyForUrls' does not show up or has any defined values, this is a finding. -- --Windows method: -- 1. Start regedit -- 2. Navigate to HKLM\Software\Policies\Google\Chrome\CookiesSessionOnlyForUrls -- 3. If this key does not exist or has any defined values this is a finding -- -- -- -- -- -- DTBC0048 - Set home page URL -- <GroupDescription></GroupDescription> -- -- DTBC-0048 -- The home page must be set to a trusted site. -- <VulnDiscussion>When a browser is started the first web page displayed is the "home page". While the home page can be selected by the user, the default home page needs to be defined to display an approved page. If no home page is defined then there is a possibility that a URL to a malicious site may be used as a home page which could effectively cause a denial of service to the browser. The browser must have an organizationally approved default home page. </VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> -- -- DPMS Target Google Chrome Current -- DISA FSO -- DPMS Target -- Google Chrome Current -- 2591 -- -- Windows group policy: -- 1. Open the group policy editor tool with gpedit.msc -- 2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\Home page -- Policy Name: Configure the home page URL -- Policy State: Enabled -- Policy Value: An organizationally approved default home page. -- -- -- -- Universal method: -- 1. In the omnibox (address bar) type chrome://policy -- 2. If HomepageLocation is not displayed under the Policy Name column or it is not set to an organizationally approved default home page. -- --Windows method: -- 1. Start regedit -- 2. Navigate to HKLM\Software\Policies\Google\Chrome\ -- 3. If the HomepageLocation value name does not exist or its value data is not set to an organizationally approved default home page. -- -- -- -- -- DTBC0050 - Auto updates -- <GroupDescription></GroupDescription> -- -- DTBC-0050 -- Browser must support auto-updates. -- <VulnDiscussion>One of the most effective defenses against exploitation of browser vulnerabilities is to ensure the version of the browser is current. Frequent updates provide corrections to discovered vulnerabilities and the timely update reduces the window for zero day attacks. Automatic installation of updates and patches is the most effective method for keeping the browser software current. The browser must have the capability to install software updates and patches automatically. </VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> -- -- DPMS Target Google Chrome Current -- DISA FSO -- DPMS Target -- Google Chrome Current -- 2591 -- -- Windows registry: -- 1. Start regedit -- 2. Navigate to Key Path: HKLM\Software\Policies\Google\Update -- Value Name: AutoUpdateCheckPeroidMinutes -- Value Type: Boolean (REG_DWORD) -- Value Data: 43200 or less, but not 0. -- -- -- -- Windows method: -- 1. Start regedit -- 2. Navigate to HKLM\Software\Policies\Google\Update\ -- 3. If the AutoUpdateCheckPeriodMinutes value name does not exist or its value is set to 0 or greater than 43200, this is a finding. -- -- -- -- -- -- -- DTBC0051 - Plugins allowed for urls -- <GroupDescription></GroupDescription> -- -- DTBC-0051 -- URLs must be whitelisted for plugin use -- <VulnDiscussion></VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> -- -- DPMS Target Google Chrome Current -- DISA FSO -- DPMS Target -- Google Chrome Current -- 2591 -- -- Windows group policy: -- 1. Open the group policy editor tool with gpedit.msc -- 2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\Content Settings -- Policy Name: Allow plugins on these sites -- Policy State: Enabled -- Policy Value 1: *.mil -- Policy Value 2: *.gov -- -- -- -- -- Universal method: -- 1. In the omnibox (address bar) type chrome://policy -- 2. If PluginsAllowedForUrls is not displayed under the Policy Name column or it is not set to a list of administrator approved URLs under the Policy Value column, then this is a finding. -- --Windows method: -- 1. Start regedit -- 2. Navigate to HKLM\Software\Policies\Google\Chrome\ -- 3. If the PluginsAllowedForUrls key does not exist and it does not contain a list of administrator approved URLs then this is a finding. -- --Suggested: the set or subset of *.mil and *.gov -- -- -- -- -- -- -diff --git a/shared/references/disa-google-chrome-browser-v2r3-stig.xml b/shared/references/disa-google-chrome-browser-v2r3-stig.xml -new file mode 100644 -index 00000000000..02f852083b1 ---- /dev/null -+++ b/shared/references/disa-google-chrome-browser-v2r3-stig.xml -@@ -0,0 +1,589 @@ -+acceptedGoogle Chrome Current Windows Security Technical Implementation GuideThis 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: disa.stig_spt@mail.mil.DISASTIG.DOD.MILRelease: 3 Benchmark Date: 23 Apr 20213.2.2.360791.10.02I - Mission Critical Classified<ProfileDescription></ProfileDescription>I - Mission Critical Public<ProfileDescription></ProfileDescription>I - Mission Critical Sensitive<ProfileDescription></ProfileDescription>II - Mission Support Classified<ProfileDescription></ProfileDescription>II - Mission Support Public<ProfileDescription></ProfileDescription>II - Mission Support Sensitive<ProfileDescription></ProfileDescription>III - Administrative Classified<ProfileDescription></ProfileDescription>III - Administrative Public<ProfileDescription></ProfileDescription>III - Administrative Sensitive<ProfileDescription></ProfileDescription>SRG-APP-000039<GroupDescription></GroupDescription>DTBC-0001Firewall traversal from remote host must be disabled.<VulnDiscussion>Remote connections should never be allowed that bypass the firewall, as there is no way to verify if they can be trusted. Enables usage of STUN and relay servers when remote clients are trying to establish a connection to this machine. If this setting is enabled, then remote clients can discover and connect to this machine even if they are separated by a firewall. If this setting is disabled and outgoing UDP connections are filtered by the firewall, then this machine will only allow connections from client machines within the local network. If this policy is left not set the setting will be enabled. </VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Google Chrome Current WindowsDISADPMS TargetGoogle Chrome Current Windows4081SV-57545V-44711CCI-001414Windows group policy: -+ 1. Open the group policy editor tool with gpedit.msc -+ 2. Navigate to Policy Path: Computer Configuration\Administrative\Templates\Google\Google Chrome\Configure remote access options -+ Policy Name: Enable firewall traversal from remote access host -+ Policy State: Disabled -+ Policy Value: N/A -+ -+Universal method: -+ 1. In the omnibox (address bar) type chrome://policy -+ 2. If RemoteAccessHostFirewallTraversal is not displayed under the Policy Name column or it is not set to false under the Policy Value column, then this is a finding. -+ -+Windows registry: -+ 1. Start regedit -+ 2. Navigate to HKLM\Software\Policies\Google\Chrome\ -+ 3. If the RemoteAccessHostFirewallTraversal value name does not exist or its value data is not set to 0, then this is a finding. -+SRG-APP-000206<GroupDescription></GroupDescription>DTBC-0002Site tracking users location must be disabled.<VulnDiscussion>Website tracking is the practice of gathering information as to which websites were accesses by a browser. The common method of doing this is to have a website create a tracking cookie on the browser. If the information of what sites are being accessed is made available to unauthorized persons, this violates confidentiality requirements, and over time poses a significant OPSEC issue. This policy setting allows you to set whether websites are allowed to track the user’s physical location. Tracking the user’s physical location can be allowed by default, denied by default or the user can be asked every time a website requests the physical location. -+ 1 = Allow sites to track the user’s physical location -+ 2 = Do not allow any site to track the user’s physical location -+ 3 = Ask whenever a site wants to track the user’s physical location</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Google Chrome Current WindowsDISADPMS TargetGoogle Chrome Current Windows4081SV-57557V-44723CCI-001166Windows group policy: -+ 1. Open the group policy editor tool with gpedit.msc -+ 2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\Content Settings\ -+ Policy Name: Default geolocation setting -+ Policy State: Enabled -+ Policy Value: Do not allow any site to track the users' physical location -+ -+Universal method: -+ 1. In the omnibox (address bar) type chrome://policy -+ 2. If DefaultGeolocationSetting is not displayed under the Policy Name column or it is not set to 2, then this is a finding. -+ -+Windows method: -+ 1. Start regedit -+ 2. Navigate to HKLM\Software\Policies\Google\Chrome\ -+ 3. If the DefaultGeolocationSetting value name does not exist or its value data is not set to 2, then this is a finding. -+SRG-APP-000141<GroupDescription></GroupDescription>DTBC-0004Sites ability to show pop-ups must be disabled.<VulnDiscussion>Chrome allows you to manage whether unwanted pop-up windows appear. Pop-up windows that are opened when the end user clicks a link are not blocked. If you enable this policy setting, most unwanted pop-up windows are prevented from appearing. If you disable this policy setting, pop-up windows are not prevented from appearing. If you disable this policy setting, scripts can continue to create pop-up windows, and pop-ups that hide other windows. Recommend configuring this setting to ‘2’ to help prevent malicious websites from controlling the pop-up windows or fooling users into clicking on the wrong window. If you do not configure this policy setting, most unwanted pop-up windows are prevented from appearing. If this policy is left not set, 'BlockPopups' will be used and the user will be able to change it. -+ 1 = Allow all sites to show pop-ups -+ 2 = Do not allow any site to show pop-ups</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Google Chrome Current WindowsDISADPMS TargetGoogle Chrome Current Windows4081SV-57553V-44719CCI-000381Windows group policy: -+ 1. Open the group policy editor tool with gpedit.msc -+ 2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\Content Settings\ -+ Policy Name: Default popups setting -+ Policy State: Enabled -+ Policy Value: Do not allow any site to show popups -+ -+Universal method: -+ 1. In the omnibox (address bar) type chrome://policy -+ 2. If DefaultPopupsSetting is not displayed under the Policy Name column or it is not set to 2, then this is a finding. -+ -+Windows method: -+ 1. Start regedit -+ 2. Navigate to HKLM\Software\Policies\Google\Chrome\ -+ 3. If the value name DefaultPopupsSetting does not exist or its value data is not set to 2, then this is a finding. -+ -+Note: If AO Approved exceptions to this rule have been enabled, this is not a finding.SRG-APP-000089<GroupDescription></GroupDescription>DTBC-0005Extensions installation must be blocklisted by default.<VulnDiscussion>Extensions are developed by third party sources and are designed to extend Google Chrome's functionality. An extension can be made by anyone, to do and access almost anything on a system; this means they pose a high risk to any system that would allow all extensions to be installed by default. Allows you to specify which extensions the users can NOT install. Extensions already installed will be removed if blocklisted. A blocklist value of '*' means all extensions are blocklisted unless they are explicitly listed in the allowlist. If this policy is left not set the user can install any extension in Google Chrome.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Google Chrome Current WindowsDISADPMS TargetGoogle Chrome Current Windows4081SV-57561V-44727CCI-000169Windows group policy: -+ 1. Open the group policy editor tool with gpedit.msc -+ 2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\Extensions\ -+ Policy Name: Configure extension installation blocklist -+ Policy State: Enabled -+ Policy Value: *Universal method: -+ 1. In the omnibox (address bar) type chrome://policy -+ 2. If ExtensionInstallBlocklist is not displayed under the Policy Name column or it is not set to * under the Policy Value column, then this is a finding. -+ -+Windows method: -+ 1. Start regedit -+ 2. Navigate to HKLM\Software\Policies\Google\Chrome\ExtensionInstallBlocklist -+ 3. If the a registry value name of 1 does not exist under that key or its value is not set to *, then this is a finding. SRG-APP-000210<GroupDescription></GroupDescription>DTBC-0006Extensions that are approved for use must be allowlisted.<VulnDiscussion>The allowlist should only contain organizationally approved extensions. This is to prevent a user from accidently allowlisitng a malicious extension. This policy allows you to specify which extensions are not subject to the blacklist. A blacklist value of ‘*’ means all extensions are blacklisted and users can only install extensions listed in the allowlist. By default, no extensions are allowlisted. If all extensions have been blacklisted by policy, then the allowlist policy can be used to allow specific extensions to be installed. Administrators should determine which extensions should be allowed to be installed by their users. If no extensions are allowlisted, then no extensions can be installed when combined with blacklisting all extensions.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Google Chrome Current WindowsDISADPMS TargetGoogle Chrome Current Windows4081SV-57563V-44729CCI-001170Windows group policy: -+1. Open the group policy editor tool with gpedit.msc -+2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\Extensions\ -+Policy Name: Configure extension installation allowlist -+Policy State: Enabled -+Policy Value: oiigbmnaadbkfbmpbfijlflahbdbdgdf -+ -+Note: oiigbmnaadbkfbmpbfijlflahbdbdgdfis the extension ID for scriptno (a commonly used Chrome extension), other extension IDs may vary.Universal method: -+1. In the omnibox (address bar) type chrome://policy -+2. If ExtensionInstallAllowlist is not displayed under the Policy Name column or it is not set to oiigbmnaadbkfbmpbfijlflahbdbdgdf or a list of administrator approved extension IDs, then this is a finding. -+ -+Windows method: -+1. Start regedit -+2. Navigate to the key HKLM\Software\Policies\Google\Chrome\ExtensionInstallAllowlist -+3. If the ExtensionInstallAllowlist key is not set to 1 and oiigbmnaadbkfbmpbfijlflahbdbdgdf or a list of administrator-approved extension IDs, then this is a finding.SRG-APP-000141<GroupDescription></GroupDescription>DTBC-0007The default search providers name must be set.<VulnDiscussion>Specifies the name of the default search provider that is to be used, if left empty or not set, the host name specified by the search URL will be used. This policy is only considered if the 'DefaultSearchProviderEnabled' policy is enabled. When doing internet searches it is important to use an encrypted connection via https.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Google Chrome Current WindowsDISADPMS TargetGoogle Chrome Current Windows4081SV-57567V-44733CCI-000381Windows group policy: -+ 1. Open the group policy editor tool with gpedit.msc -+ 2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\Default search provider\ -+ Policy Name: Default search provider name -+ Policy State: Enabled -+ Policy Value: set to an organization approved encrypted search provider that corresponds to the encrypted search provider set in DTBC-0008(ex. Google Encrypted, Bing Encrypted) -+ -+Universal method: -+ 1. In the omnibox (address bar) type chrome://policy -+ 2. If DefaultSearchProviderName is displayed under the Policy Name column or it is not set to an organization approved encrypted search provider that corresponds to the encrypted search provider set in DTBC-0008(ex. Google Encrypted, Bing Encrypted) under the Policy Value column, then this is a finding. -+ -+Windows method: -+ 1. Start regedit -+ 2. Navigate to HKLM\Software\Policies\Google\Chrome\ -+ 3. If the DefaultSearchProviderName value name does not exist or it is not set to an organization approved encrypted search provider that corresponds to the encrypted search provider set in DTBC-0008(ex. Google Encrypted, Bing Encrypted), then this is a finding. -+SRG-APP-000141<GroupDescription></GroupDescription>DTBC-0008The default search provider URL must be set to perform encrypted searches.<VulnDiscussion>Specifies the URL of the search engine used when doing a default search. The URL should contain the string '{searchTerms}', which will be replaced at query time by the terms the user is searching for. This option must be set when the 'DefaultSearchProviderEnabled' policy is enabled and will only be respected if this is the case. When doing internet searches it is important to use an encrypted connection via https.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Google Chrome Current WindowsDISADPMS TargetGoogle Chrome Current Windows4081SV-57569V-44735CCI-000381If the system is on the SIPRNet, this requirement is NA. -+ -+Windows group policy: -+ 1. Open the group policy editor tool with gpedit.msc -+ 2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\Default search provider\ -+ Policy Name: Default search provider search URL -+ Policy State: Enabled -+ Policy Value: Must be set to an organization-approved encrypted search string -+ (ex. https://www.google.com/search?q={searchTerms} or https://www.bing.com/search?q={searchTerms} )If the system is on the SIPRNet, this requirement is NA. -+ -+Universal method: -+ 1. In the omnibox (address bar) type chrome://policy -+ 2. If DefaultSearchProviderSearchURL is not displayed under the Policy Name column or it is not set to an organization-approved encrypted search string (ex. https://www.google.com/?q={searchTerms} or https://www.bing.com/search?q={searchTerms} ) under the Policy Value column, this is a finding. -+ -+Windows method: -+ 1. Start regedit -+ 2. Navigate to HKLM\Software\Policies\Google\Chrome\ -+ 3. If the DefaultSearchProviderSearchURL value name does not exist or its value data is not set to an organization-approved encrypted search string (ex. https://www.google.com/search?q={searchTerms} or https://www.bing.com/search?q={searchTerms} ) this is a finding.SRG-APP-000141<GroupDescription></GroupDescription>DTBC-0009Default search provider must be enabled.<VulnDiscussion>Policy enables the use of a default search provider. If you enable this setting, a default search is performed when the user types text in the omnibox that is not a URL. You can specify the default search provider to be used by setting the rest of the default search policies. If these are left empty, the user can choose the default provider. If you disable this setting, no search is performed when the user enters non-URL text in the omnibox. If you enable or disable this setting, users cannot change or override this setting in Google Chrome. If this policy is left not set, the default search provider is enabled, and the user will be able to set the search provider list.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Google Chrome Current WindowsDISADPMS TargetGoogle Chrome Current Windows4081SV-57571V-44737CCI-000381Windows group policy: -+ 1. Open the group policy editor tool with gpedit.msc -+ 2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\Default search provider\ -+ Policy Name: Enable the default search provider -+ Policy State: Enabled -+ Policy Value: N/A -+ -+Universal method: -+ 1. In the omnibox (address bar) type chrome://policy -+ 2. If DefaultSearchProviderEnabled is not displayed under the Policy Name column or it is not set to true under the Policy Value column, then this is a finding. -+ -+Windows method: -+ 1. Start regedit -+ 2. Navigate to HKLM\Software\Policies\Google\Chrome\ -+ 3. If the DefaultSearchProviderEnabled value name does not exist or its value data is not set to 1, then this is a finding. -+ -+Note: This policy will only display in the chrome://policy tab on domain joined systems. On standalone systems, the policy will not display.SRG-APP-000141<GroupDescription></GroupDescription>DTBC-0011The Password Manager must be disabled.<VulnDiscussion>Enables saving passwords and using saved passwords in Google Chrome. Malicious sites may take advantage of this feature by using hidden fields gain access to the stored information. If you enable this setting, users can have Google Chrome memorize passwords and provide them automatically the next time they log in to a site. If you disable this setting, users are not able to save passwords or use already saved passwords. If you enable or disable this setting, users cannot change or override this setting in Google Chrome. If this policy is left not set, this will be enabled but the user will be able to change it. ListPassword manager should not be used as it stores passwords locally.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Google Chrome Current WindowsDISADPMS TargetGoogle Chrome Current Windows4081SV-57575V-44741CCI-000381Windows group policy: -+1. Open the group policy editor tool with gpedit.msc -+2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\Password Manager\ -+Policy Name: Enable Saving Passwords to the Password Manager -+Policy State: Disabled -+Policy Value: N/AUniversal method: -+ 1. In the omnibox (address bar) type chrome://policy -+ 2. If PasswordManagerEnabled is not displayed under the Policy Name column or it is not set to false under the Policy Value column, then this is a finding. -+ -+Windows method: -+ 1. Start regedit -+ 2. Navigate to HKLM\Software\Policies\Google\Chrome\ -+ 3. If the PasswordManagerEnabled value name does not exist or its value data is not set to 0, then this is a finding. -+SRG-APP-000112<GroupDescription></GroupDescription>DTBC-0017Background processing must be disabled.<VulnDiscussion>Determines whether a Google Chrome process is started on OS login that keeps running when the last browser window is closed, allowing background apps to remain active. The background process displays an icon in the system tray and can always be closed from there. If this policy is set to True, background mode is enabled and cannot be controlled by the user in the browser settings. If this policy is set to False, background mode is disabled and cannot be controlled by the user in the browser settings. If this policy is left unset, background mode is initially disabled and can be controlled by the user in the browser settings.' - Google Chrome Administrators Policy ListThis setting, if enabled, allows Google Chrome to run at all times. There is two reasons that this is not wanted. First, it can tie up system resources that might otherwise be needed. Second, it does not make it obvious to the user that it is running and poorly written extensions could cause instability on the system.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Google Chrome Current WindowsDISADPMS TargetGoogle Chrome Current Windows4081SV-57587V-44753CCI-001695Windows group policy: -+ 1. Open the group policy editor tool with gpedit.msc -+ 2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\ -+ Policy Name: Continue running background apps when Google Chrome is closed -+ Policy State: Disabled -+ Policy Value: N/AUniversal method: -+ 1. In the omnibox (address bar) type chrome://policy -+ 2. If BackgroundModeEnabled is not displayed under the Policy Name column and it is not set to false under the Policy Value column, then this is a finding. -+ -+Windows method: -+ 1. Start regedit -+ 2. Navigate to HKLM\Software\Policies\Google\Chrome\ -+ 3. If the BackgroundModeEnabled value name does not exist or its value data is not set to 0, then this is a finding. -+SRG-APP-000047<GroupDescription></GroupDescription>DTBC-0020Google Data Synchronization must be disabled.<VulnDiscussion>Disables data synchronization in Google Chrome using Google-hosted synchronization services and prevents users from changing this setting. If you enable this setting, users cannot change or override this setting in Google Chrome. If this policy is left not set the user will be able to enable Google Sync. Google Sync is used to sync information between different user devices, this data is then stored on Google owned servers. The synced data may consist of information such as email, calendars, viewing history, etc. This feature must be disabled because the organization does not have control over the servers the data is stored on.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Google Chrome Current WindowsDISADPMS TargetGoogle Chrome Current Windows4081SV-57593V-44759CCI-001374Windows group policy: -+ 1. Open the group policy editor tool with gpedit.msc -+ 2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\ -+ Policy Name: Disable synchronization of data with Google -+ Policy State: Enabled -+ Policy Value: N/AUniversal method: -+ 1. In the omnibox (address bar) type chrome://policy -+ 2. If SyncDisabled is not displayed under the Policy Name column or it is not set to true under the Policy Value column, then this is a finding. -+ -+Windows method: -+ 1. Start regedit -+ 2. Navigate to HKLM\Software\Policies\Google\Chrome\ -+ 3. If the SyncDisabled value name does not exist or its value data is not set to 1, then this is a finding. -+SRG-APP-000141<GroupDescription></GroupDescription>DTBC-0021The URL protocol schema javascript must be disabled.<VulnDiscussion>Each access to a URL is handled by the browser according to the URL's "scheme". The "scheme" of a URL is the section before the ":". The term "protocol" is often mistakenly used for a "scheme". The difference is that the scheme is how the browser handles a URL and the protocol is how the browser communicates with a service. If a scheme or its associated protocol used by a browser is insecure or obsolete, vulnerabilities can be exploited resulting in exposed data or unrestricted access to the browser's system. The browser must be configured to disable the use of insecure and obsolete schemas (protocols). -+This policy disables the listed protocol schemes in Google Chrome, URLs using a scheme from this list will not load and cannot be navigated to. If this policy is left not set or the list is empty all schemes will be accessible in Google Chrome.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Google Chrome Current WindowsDISADPMS TargetGoogle Chrome Current Windows4081SV-57595V-44761CCI-000381Windows group policy: -+ 1. Open the group policy editor tool with gpedit.msc -+ 2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\ -+ Policy Name: Block access to a list of URLs -+ Policy State: Enabled -+ Policy Value 1: javascript://*Universal method: -+ 1. In the omnibox (address bar) type chrome://policy -+ 2. If URLBlacklist is not displayed under the Policy Name column or it is not set to javascript://* under the Policy Value column, then this is a finding. -+ -+Windows method: -+ 1. Start regedit -+ 2. Navigate to HKLM\Software\Policies\Google\Chrome\URLBlacklist -+ 3. If the URLBlacklist key does not exist, or the does not contain entries 1 set to javascript://*, then this is a finding. -+ -+SRG-APP-000047<GroupDescription></GroupDescription>DTBC-0023Cloud print sharing must be disabled.<VulnDiscussion>Policy enables Google Chrome to act as a proxy between Google Cloud Print and legacy printers connected to the machine. If this setting is enabled or not configured, users can enable the cloud print proxy by authentication with their Google account. If this setting is disabled, users cannot enable the proxy, and the machine will not be allowed to share it’s printers with Google Cloud Print. If this policy is not set, this will be enabled but the user will be able to change it.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Google Chrome Current WindowsDISADPMS TargetGoogle Chrome Current Windows4081SV-57599V-44765CCI-001374Windows group policy: -+ 1. Open the group policy editor tool with gpedit.msc -+ 2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\ -+ Policy Name: Enable Google Cloud Print proxy -+ Policy State: Disabled -+ Policy Value: N/AUniversal method: -+ 1. In the omnibox (address bar) type chrome://policy -+ 2. If CloudPrintProxyEnabled is not displayed under the Policy Name column or it is not set to false under the Policy Value column, then this is a finding. -+ -+Windows method: -+ 1. Start regedit -+ 2. Navigate to HKLM\Software\Policies\Google\Chrome\ -+ 3. If the CloudPrintProxyEnabled value name does not exist or its value data is not set to 0, then this is a finding.SRG-APP-000516<GroupDescription></GroupDescription>DTBC-0025Network prediction must be disabled.<VulnDiscussion>Enables network prediction in Google Chrome and prevents users from changing this setting. If you enable or disable this setting, users cannot change or override this setting in Google Chrome. If this policy is left not set, this will be disabled but the user will be able to change it.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Google Chrome Current WindowsDISADPMS TargetGoogle Chrome Current Windows4081SV-57603V-44769CCI-000366Windows group policy: -+1. Open the group policy editor tool with gpedit.msc -+2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\ -+Policy Name: Enable network prediction -+Policy State: Enabled -+Policy Value: Do not predict network actions on any network connectionUniversal method: -+1. In the omnibox (address bar) type chrome://policy -+2. If "NetworkPredictionOptions" is not displayed under the “Policy Name” column or it is not set to "2" under the “Policy Value” column, this is a finding. -+Windows method: -+1. Start regedit -+2. Navigate to HKLM\Software\Policies\Google\Chrome\ -+3. If the "NetworkPredictionOptions" value name does not exist or its value data is not set to "2," this is a finding.SRG-APP-000141<GroupDescription></GroupDescription>DTBC-0026Metrics reporting to Google must be disabled.<VulnDiscussion>Enables anonymous reporting of usage and crash-related data about Google Chrome to Google and prevents users from changing this setting. If you enable this setting, anonymous reporting of usage and crash-related data is sent to Google. A crash report could contain sensitive information from the computer's memory. If you disable this setting, anonymous reporting of usage and crash-related data is never sent to Google. If you enable or disable this setting, users cannot change or override this setting in Google Chrome. If this policy is left not set the setting will be what the user chose upon installation / first run.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Google Chrome Current WindowsDISADPMS TargetGoogle Chrome Current Windows4081SV-57605V-44771CCI-000381Windows group policy: -+ 1. Open the group policy editor tool with gpedit.msc -+ 2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\ -+ Policy Name: Enable reporting of usage and crash-related data -+ Policy State: Disabled -+ Policy Value: N/AUniversal method: -+ 1. In the omnibox (address bar) type chrome://policy -+ 2. If MetricsReportingEnabled is not displayed under the Policy Name column or it is not set to false under the Policy Value column, then this is a finding. -+ -+Windows method: -+ 1. Start regedit -+ 2. Navigate to HKLM\Software\Policies\Google\Chrome\ -+ 3. If the MetricsReportingEnabled value name does not exist or its value data is not set to 0, then this is a finding. -+ -+Note: This policy will only display in the chrome://policy tab on domain joined systems. On standalone systems, the policy will not display.SRG-APP-000141<GroupDescription></GroupDescription>DTBC-0027Search suggestions must be disabled.<VulnDiscussion>Search suggestion should be disabled as it could lead to searches being conducted that were never intended to be made. Enables search suggestions in Google Chrome's omnibox and prevents users from changing this setting. If you enable this setting, search suggestions are used. If you disable this setting, search suggestions are never used. If you enable or disable this setting, users cannot change or override this setting in Google Chrome. If this policy is left not set, this will be enabled but the user will be able to change it.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Google Chrome Current WindowsDISADPMS TargetGoogle Chrome Current Windows4081SV-57607V-44773CCI-000381Windows group policy: -+ 1. Open the group policy editor tool with gpedit.msc -+ 2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\ -+ Policy Name: Enable search suggestions -+ Policy State: Disabled -+ Policy Value: N/AUniversal method: -+ 1. In the omnibox (address bar) type chrome://policy -+ 2. If SearchSuggestEnabled is not displayed under the Policy Name column or it is not set to false under the Policy Value column, then this is a finding. -+ -+Windows method: -+ 1. Start regedit -+ 2. Navigate to HKLM\Software\Policies\Google\Chrome\ -+ 3. If the SearchSuggestEnabled value name does not exist or its value data is not set to 0, then this is a finding. -+SRG-APP-000141<GroupDescription></GroupDescription>DTBC-0029Importing of saved passwords must be disabled.<VulnDiscussion>Importing of saved passwords should be disabled as it could lead to unencrypted account passwords stored on the system from another browser to be viewed. This policy forces the saved passwords to be imported from the previous default browser if enabled. If enabled, this policy also affects the import dialog. If disabled, the saved passwords are not imported. If it is not set, the user may be asked whether to import, or importing may happen automatically.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Google Chrome Current WindowsDISADPMS TargetGoogle Chrome Current Windows4081SV-57609V-44775CCI-000381Windows group policy: -+ 1. Open the group policy editor tool with gpedit.msc -+ 2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\ -+ Policy Name: Import saved passwords from default browser on first run -+ Policy State: Disabled -+ Policy Value: N/AUniversal method: -+ 1. In the omnibox (address bar) type chrome://policy -+ 2. If ImportSavedPasswords is not displayed under the Policy Name column or it is not set to false under the Policy Value column, then this is a finding. -+ -+Windows method: -+ 1. Start regedit -+ 2. Navigate to HKLM\Software\Policies\Google\Chrome\ -+ 3. If the ImportSavedPasswords value name does not exist or its value data is not set to 0, then this is a finding.SRG-APP-000080<GroupDescription></GroupDescription>DTBC-0030Incognito mode must be disabled.<VulnDiscussion>Incognito mode allows the user to browse the Internet without recording their browsing history/activity. From a forensics perspective, this is unacceptable. Best practice requires that browser history is retained. The "IncognitoModeAvailability" setting controls whether the user may utilize Incognito mode in Google Chrome. If 'Enabled' is selected or the policy is left unset, pages may be opened in Incognito mode. If 'Disabled' is selected, pages may not be opened in Incognito mode. If 'Forced' is selected, pages may be opened ONLY in Incognito mode. -+ 0 = Incognito mode available. -+ 1 = Incognito mode disabled. -+ 2 = Incognito mode forced.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Google Chrome Current WindowsDISADPMS TargetGoogle Chrome Current Windows4081SV-57611V-44777CCI-000166Windows group policy: -+ 1. Open the group policy editor tool with gpedit.msc -+ 2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\ -+ Policy Name: Incognito mode availability -+ Policy State: Enabled -+ Policy Value: Incognito mode disabledUniversal method: -+ 1. In the omnibox (address bar) type chrome://policy -+ 2. If IncognitoModeAvailability is not displayed under the Policy Name column or it is not set to 1 under the Policy Value column, then this is a finding. -+ -+Windows method: -+ 1. Start regedit -+ 2. Navigate to HKLM\Software\Policies\Google\Chrome\ -+ 3. If the IncognitoModeAvailability value name does not exist or its value data is not set to 1, then this is a finding. -+SRG-APP-000605<GroupDescription></GroupDescription>DTBC-0037Online revocation checks must be done.<VulnDiscussion>By setting this policy to true, the previous behavior is restored and online OCSP/CRL checks will be performed. If the policy is not set, or is set to false, then Chrome will not perform online revocation checks. Certificates are revoked when they have been compromised or are no longer valid, and this option protects users from submitting confidential data to a site that may be fraudulent or not secure.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Google Chrome Current WindowsDISADPMS TargetGoogle Chrome Current Windows4081SV-57623V-44789CCI-000185Windows group policy: -+ 1. Open the group policy editor tool with gpedit.msc -+ 2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\ -+ Policy Name: Whether online OCSP/CRL checks are performed -+ Policy State: Enabled -+ Policy Value: N/A -+Universal method: -+ 1. In the omnibox (address bar) type chrome://policy -+ 2. If EnableOnlineRevocationChecks is not displayed under the Policy Name column or it is not set to true under the Policy Value column, then this is a finding. -+ -+Windows method: -+ 1. Start regedit -+ 2. Navigate to HKLM\Software\Policies\Google\Chrome\ -+ 3. If the EnableOnlineRevocationChecks value name does not exist or its value data is not set to 1, then this is a finding. -+SRG-APP-000206<GroupDescription></GroupDescription>DTBC-0038Safe Browsing must be enabled,<VulnDiscussion>Allows you to control whether Google Chrome's Safe Browsing feature is enabled and the mode it operates in. -+ -+If this policy is set to 'NoProtection' (value 0), Safe Browsing is never active. -+ -+If this policy is set to 'StandardProtection' (value 1, which is the default), Safe Browsing is always active in the standard mode. -+ -+If this policy is set to 'EnhancedProtection' (value 2), Safe Browsing is always active in the enhanced mode, which provides better security, but requires sharing more browsing information with Google.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Google Chrome Current WindowsDISADPMS TargetGoogle Chrome Current Windows4081SV-57625V-44791CCI-001166Windows group policy: -+ 1. Open the “group policy editor” tool with gpedit.msc -+ 2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\Safe Browsing Settings -+ Policy Name: Safe Browsing Protection Level -+ Policy State: Enabled -+ Policy Value: StandardProtection or EnhancedProtectionUniversal method: -+ 1. In the omnibox (address bar) type chrome://policy -+ 2. If SafeBrowsingProtectionLevel is not displayed under the Policy Name column or it is not set to 1 or 2 under the Policy Value column, then this is a finding. -+ -+Windows method: -+ 1. Start regedit -+ 2. Navigate to HKLM\Software\Policies\Google\Chrome\ -+ 3. If the SafeBrowsingProtectionLevel value name does not exist or its value data is not set to 1 or 2, then this is a finding.SRG-APP-000231<GroupDescription></GroupDescription>DTBC-0039Browser history must be saved.<VulnDiscussion>This policy disables saving browser history in Google Chrome and prevents users from changing this setting. If this setting is enabled, browsing history is not saved. If this setting is disabled or not set, browsing history is saved.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Google Chrome Current WindowsDISADPMS TargetGoogle Chrome Current Windows4081SV-57627V-44793CCI-001199Windows group policy: -+ 1. Open the group policy editor tool with gpedit.msc -+ 2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\ -+ Policy Name: Disable saving browser history -+ Policy State: Disabled -+ Policy Value: N/AUniversal method: -+ 1. In the omnibox (address bar) type chrome://policy -+ 2. If the policy 'SavingBrowserHistoryDisabled' is not shown or is not set to false, then this is a finding. -+ -+Windows method: -+ 1. Start regedit -+ 2. Navigate to HKLM\Software\Policies\Google\Chrome\ -+ 3. If the SavingBrowserHistoryDisabled value name does not exist or its value data is not set to 0, then this is a finding. -+SRG-APP-000089<GroupDescription></GroupDescription>DTBC-0040Default behavior must block webpages from automatically running plugins.<VulnDiscussion>This policy allows you to set whether websites are allowed to automatically run the Flash plugin. Automatically running the Flash plugin can be either allowed for all websites or denied for all websites. If this policy is left not set, the user will be able to change this setting manually. -+ 1 = Allow all sites to automatically run Flash plugin -+ 2 = Block the Flash plugin -+ 3 = Click to play</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Google Chrome Current WindowsDISADPMS TargetGoogle Chrome Current Windows4081SV-57629V-44795CCI-000169Windows group policy: -+ 1. Open the group policy editor tool with gpedit.msc -+ 2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\Content Settings\ -+ Policy Name: Default Flash setting -+ Policy State: Enabled -+ Policy Value: Click to playUniversal method: -+ 1. In the omnibox (address bar) type chrome://policy -+ 2. If the policy "DefaultPluginsSetting" is not shown or is not set to "3", this is a finding. -+ -+Windows method: -+ 1. Start regedit -+ 2. Navigate to HKLM\Software\Policies\Google\Chrome\DefaultPluginsSetting -+ 3. If this key "DefaultPluginsSetting" does not exist or is not set to "3", this is a finding.SRG-APP-000456<GroupDescription></GroupDescription>DTBC-0050The version of Google Chrome running on the system must be a supported version.<VulnDiscussion>Google Chrome is being continually updated by the vendor in order to address identified security vulnerabilities. Running an older version of the browser can introduce security vulnerabilities to the system.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Google Chrome Current WindowsDISADPMS TargetGoogle Chrome Current Windows4081SV-57639V-44805CCI-002605Install a supported version of Google Chrome.Universal method: -+1. In the omnibox (address bar) type chrome://settings/help -+2. Cross-reference the build information displayed with the Google Chrome site to identify, at minimum, the oldest supported build available. As of July 2019, this is 74.x.x. -+3. If the installed version of Chrome is not supported by Google, this is a finding.SRG-APP-000089<GroupDescription></GroupDescription>DTBC-0052Deletion of browser history must be disabled.<VulnDiscussion>Disabling this function will prevent users from deleting their browsing history, which could be used to identify malicious websites and files that could later be used for anti-virus and Intrusion Detection System (IDS) signatures. Furthermore, preventing users from deleting browsing history could be used to identify abusive web surfing on government systems.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Google Chrome Current WindowsDISADPMS TargetGoogle Chrome Current Windows4081SV-89845V-75165CCI-000169Windows group policy: -+ 1. Open the group policy editor tool with gpedit.msc -+ 2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\ -+ Policy Name: Enable deleting browser and download history -+ Policy State: Disabled -+ Policy Value: N/AUniversal method: -+ 1. In the omnibox (address bar) type chrome://policy -+ 2. If the policy "AllowDeletingBrowserHistory" is not shown or is not set to false, this is a finding. -+ -+Windows method: -+ 1. Start regedit -+ 2. Navigate to HKLM\Software\Policies\Google\Chrome\ -+ 3. If the "AllowDeletingBrowserHistory" value name does not exist or its value data is not set to "0", this is a finding.SRG-APP-000089<GroupDescription></GroupDescription>DTBC-0053Prompt for download location must be enabled.<VulnDiscussion>If the policy is enabled, the user will be asked where to save each file before downloading. If the policy is disabled, downloads will start immediately, and the user will not be asked where to save the file. If the policy is not configured, the user will be able to change this setting.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Google Chrome Current WindowsDISADPMS TargetGoogle Chrome Current Windows4081SV-94633V-79929CCI-000169Windows group policy: -+1. Open the group policy editor tool with gpedit.msc -+2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\ -+ Policy Name: Ask where to save each file before downloading -+ Policy State: Enabled -+ Policy Value: N/AUniversal method: -+1. In the omnibox (address bar) type chrome:// policy -+2. If "PromptForDownloadLocation" is not displayed under the "Policy Name" column or it is not set to "true" under the "Policy Value" column, then this is a finding. -+Windows method: -+1. Start regedit -+2. Navigate to HKLM\Software\Policies\Google\Chrome\ -+3. If the "PromptForDownloadLocation" value name does not exist or its value data is not set to "1", this is a finding.SRG-APP-000089<GroupDescription></GroupDescription>DTBC-0055Download restrictions must be configured.<VulnDiscussion>Configure the type of downloads that Google Chrome will completely block, without letting users override the security decision. If you set this policy, Google Chrome will prevent certain types of downloads, and will not let user bypass the security warnings. When the "Block dangerous downloads" option is chosen, all downloads are allowed, except for those that carry SafeBrowsing warnings. When the "Block potentially dangerous downloads" option is chosen, all downloads allowed, except for those that carry SafeBrowsing warnings of potentially dangerous downloads. When the "Block all downloads" option is chosen, all downloads are blocked. When this policy is not set, (or the "No special restrictions" option is chosen), the downloads will go through the usual security restrictions based on SafeBrowsing analysis results. -+ -+Note that these restrictions apply to downloads triggered from web page content, as well as the 'download link...' context menu option. These restrictions do not apply to the save / download of the currently displayed page, nor does it apply to saving as PDF from the printing options. See https://developers.google.com/safe-browsing for more info on SafeBrowsing. -+0 = No special restrictions -+1 = Block dangerous downloads -+2 = Block potentially dangerous downloads -+3 = Block all downloads</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Google Chrome Current WindowsDISADPMS TargetGoogle Chrome Current Windows4081SV-94635V-79931CCI-000169If the system is on the SIPRNet, this requirement is NA. -+Windows group policy: -+1. Open the group policy editor tool with gpedit.msc -+2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\ -+Policy Name: Allow download restrictions -+Policy State: 1 or 2 -+Policy Value: N/AIf the system is on the SIPRNet, this requirement is NA. -+Universal method: -+1. In the omnibox (address bar) type chrome:// policy -+2. If "DownloadRestrictions" is not displayed under the "Policy Name" column or it is not set to "1" or "2" under the "Policy Value" column, then this is a finding. -+ -+Windows method: -+1. Start regedit -+2. Navigate to HKLM\Software\Policies\Google\Chrome\ -+3. If the "DownloadRestrictions" value name does not exist or its value data is not set to "1" or "2", then this is a finding.SRG-APP-000206<GroupDescription></GroupDescription>DTBC-0057Safe Browsing Extended Reporting must be disabled.<VulnDiscussion>Enables Google Chrome's Safe Browsing Extended Reporting and prevents users from changing this setting. Extended Reporting sends some system information and page content to Google servers to help detect dangerous apps and sites. -+If the setting is set to "True", then reports will be created and sent whenever necessary (such as when a security interstitial is shown). -+If the setting is set to "False", reports will never be sent. -+If this policy is set to "True" or "False", the user will not be able to modify the setting. -+If this policy is left unset, the user will be able to change the setting and decide whether to send reports or not.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Google Chrome Current WindowsDISADPMS TargetGoogle Chrome Current Windows4081SV-96299V-81585CCI-001166Windows group policy: -+1. Open the “group policy editor” tool with gpedit.msc -+2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\Safe Browsing settings\ -+Policy Name: Enable Safe Browsing Extended Reporting -+Policy State: Disabled -+Policy Value: N/AUniversal method: -+ 1. In the omnibox (address bar) type chrome://policy -+ 2. If "SafeBrowsingExtendedReportingEnabled" is not displayed under the "Policy Name" column or it is not set to "False", this is a finding. -+Windows method: -+ 1. Start regedit -+ 2. Navigate to HKLM\Software\Policies\Google\Chrome\ -+ 3. If the "SafeBrowsingExtendedReportingEnabled" value name does not exist or its value data is not set to "0", this is a finding.SRG-APP-000141<GroupDescription></GroupDescription>DTBC-0058WebUSB must be disabled.<VulnDiscussion>Allows you to set whether websites are allowed to get access to connected USB devices. Access can be completely blocked, or the user can be asked every time a website wants to get access to connected USB devices. -+If this policy is left not set, ”3” will be used, and the user will be able to change it. -+2 = Do not allow any site to request access to USB devices via the WebUSB API -+3 = Allow sites to ask the user to grant access to a connected USB device</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Google Chrome Current WindowsDISADPMS TargetGoogle Chrome Current Windows4081SV-96301V-81587CCI-000381Windows group policy: -+ 1. Open the “group policy editor” tool with gpedit.msc -+ 2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\Content Settings -+ Policy Name: Control use of the WebUSB API -+ Policy State: Enabled -+ Policy Value: 2 -+Universal method: -+ 1. In the omnibox (address bar) type chrome://policy -+ 2. If "DefaultWebUsbGuardSetting" is not displayed under the "Policy Name" column or it is not set to "2", this is a finding. -+Windows method: -+ 1. Start regedit -+ 2. Navigate to HKLM\Software\Policies\Google\Chrome\ -+ 3. If the "DefaultWebUsbGuardSetting" value name does not exist or its value data is not set to "2", this is a finding.SRG-APP-000089<GroupDescription></GroupDescription>DTBC-0060Chrome Cleanup must be disabled.<VulnDiscussion>If set to “False”, prevents Chrome Cleanup from scanning the system for unwanted software and performing cleanups. Manually triggering Chrome Cleanup from chrome://settings/cleanup is disabled. -+If set to “True” or unset, Chrome Cleanup periodically scans the system for unwanted software and should any be found, will ask the user if they wish to remove it. Manually triggering Chrome Cleanup from chrome://settings is enabled. -+This policy is available only on Windows instances that are joined to a Microsoft Active Directory domain.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Google Chrome Current WindowsDISADPMS TargetGoogle Chrome Current Windows4081SV-96305V-81591CCI-000169Windows group policy: -+1. Open the “group policy editor” tool with gpedit.msc -+2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome -+Policy Name: Enables Chrome Cleanup on Windows -+Policy State: Disabled -+Policy Value: N/AUniversal method: -+ 1. In the omnibox (address bar) type chrome://policy -+ 2. If "ChromeCleanupEnabled" is not displayed under the "Policy Name" column or it is not set to "False", this is a finding. -+Windows method: -+ 1. Start regedit -+ 2. Navigate to HKLM\Software\Policies\Google\Chrome\ -+ 3. If the "ChromeCleanupEnabled" value name does not exist or its value data is not set to "0", this is a finding.SRG-APP-000089<GroupDescription></GroupDescription>DTBC-0061Chrome Cleanup reporting must be disabled.<VulnDiscussion>If unset, should Chrome Cleanup detect unwanted software, it may report metadata about the scan to Google in accordance with policy set by “SafeBrowsingExtendedReportingEnabled”. Chrome Cleanup will then ask the user if they wish to clean up the unwanted software. The user can choose to share results of the cleanup with Google to assist with future unwanted software detection. These results contain file metadata and registry keys as described by the Chrome Privacy Whitepaper. -+If set to “false”, should Chrome Cleanup detect unwanted software, it will not report metadata about the scan to Google, overriding any policy set by “SafeBrowsingExtendedReportingEnabled”. Chrome Cleanup will ask the user if they wish to clean up the unwanted software. Results of the cleanup will not be reported to Google and the user will not have the option to do so. -+If set to “true”, should Chrome Cleanup detect unwanted software, it may report metadata about the scan to Google in accordance with policy set by “SafeBrowsingExtendedReportingEnabled”. Chrome Cleanup will ask the user if they wish to clean up the unwanted software. Results of the cleanup will be reported to Google and the user will not have the option to prevent it. -+This policy is available only on Windows instances that are joined to a Microsoft Active Directory domain.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Google Chrome Current WindowsDISADPMS TargetGoogle Chrome Current Windows4081SV-96307V-81593CCI-000169Windows group policy: -+1. Open the “group policy editor” tool with gpedit.msc -+2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome -+Policy Name: Control how Chrome Cleanup reports data to Google -+Policy State: Disabled -+Policy Value: N/AUniversal method: -+ 1. In the omnibox (address bar) type chrome://policy -+ 2. If "ChromeCleanupReportingEnabled" is not displayed under the "Policy Name" column or it is not set to "False", this is a finding. -+Windows method: -+ 1. Start regedit -+ 2. Navigate to HKLM\Software\Policies\Google\Chrome\ -+ 3. If the "ChromeCleanupReportingEnabled" value name does not exist or its value data is not set to "0", this is a finding.SRG-APP-000141<GroupDescription></GroupDescription>DTBC-0063Google Cast must be disabled.<VulnDiscussion>If this policy is set to ”True” or is not set, Google Cast will be enabled, and users will be able to launch it from the app menu, page context menus, media controls on Cast-enabled websites, and (if shown) the “Cast toolbar” icon. -+If this policy set to ”False”, Google Cast will be disabled.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Google Chrome Current WindowsDISADPMS TargetGoogle Chrome Current Windows4081SV-96311V-81597CCI-000381Windows group policy: -+1. Open the “group policy editor” tool with gpedit.msc -+2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\Google Cast -+Policy Name: Enable Google Cast -+Policy State: Disabled -+Policy Value: N/AUniversal method: -+ 1. In the omnibox (address bar) type chrome://policy -+ 2. If "EnableMediaRouter" is not displayed under the "Policy Name" column or it is not set to "False", this is a finding. -+Windows method: -+ 1. Start regedit -+ 2. Navigate to HKLM\Software\Policies\Google\Chrome\ -+ 3. If the "EnableMediaRouter" value name does not exist or its value data is not set to "0", this is a finding.SRG-APP-000141<GroupDescription></GroupDescription>DTBC-0064Autoplay must be disabled.<VulnDiscussion>Allows you to control if videos can play automatically (without user consent) with audio content in Google Chrome. -+If the policy is set to “True”, Google Chrome is allowed to autoplay media. If the policy is set to “False”, Google Chrome is not allowed to autoplay media. The “AutoplayWhitelist” policy can be used to override this for certain URL patterns. By default, Google Chrome is not allowed to autoplay media. The “AutoplayWhitelist” policy can be used to override this for certain URL patterns.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Google Chrome Current WindowsDISADPMS TargetGoogle Chrome Current Windows4081SV-96295V-81581CCI-000381Windows group policy: -+1. Open the “group policy editor” tool with gpedit.msc -+2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\ -+Policy Name: Allow media autoplay -+Policy State: Disabled -+Policy Value: N/AUniversal method: -+ 1. In the omnibox (address bar) type chrome://policy -+ 2. If "AutoplayAllowed" is not displayed under the "Policy Name" column or it is not set to "False", this is a finding. -+Windows method: -+ 1. Start regedit -+ 2. Navigate to HKLM\Software\Policies\Google\Chrome\ -+ 3. If the "AutoplayAllowed" value name does not exist or its value data is not set to "0", this is a finding.SRG-APP-000210<GroupDescription></GroupDescription>DTBC-0065URLs must be whitelisted for Autoplay use.<VulnDiscussion>Controls the whitelist of URL patterns that autoplay will always be enabled on. -+If the “AutoplayAllowed” policy is set to “True” then this policy will have no effect. -+If the “AutoplayAllowed” policy is set to “False” then any URL patterns set in this policy will still be allowed to play.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Google Chrome Current WindowsDISADPMS TargetGoogle Chrome Current Windows4081SV-96303V-81589CCI-001170Windows group policy: -+1. Open the “group policy editor” tool with gpedit.msc -+2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome -+Policy Name: Allow media autoplay on a whitelist of URL patterns -+Policy State: Enabled -+Policy Value 1: [*.]mil -+Policy Value 2: [*.]govUniversal method: -+ 1. In the omnibox (address bar) type chrome://policy -+ 2. If “AutoplayWhitelist” is not displayed under the “Policy Name” column or it is not set to a list of administrator-approved URLs under the “Policy Value” column, this is a finding. -+Windows method: -+ 1. Start regedit -+ 2. Navigate to HKLM\Software\Policies\Google\Chrome\ -+ 3. If the “AutoplayWhitelist” key does not exist and it does not contain a list of administrator-approved URLs, this is a finding. -+Suggested: the set or subset of [*.]mil and [*.]govSRG-APP-000206<GroupDescription></GroupDescription>DTBC-0066Anonymized data collection must be disabled.<VulnDiscussion>Enable URL-keyed anonymized data collection in Google Chrome and prevent users from changing this setting. -+URL-keyed anonymized data collection sends URLs of pages the user visits to Google to make searches and browsing better. -+If you enable this policy, URL-keyed anonymized data collection is always active. -+If you disable this policy, URL-keyed anonymized data collection is never active. -+If this policy is left not set, URL-keyed anonymized data collection will be enabled but the user will be able to change it.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Google Chrome Current WindowsDISADPMS TargetGoogle Chrome Current Windows4081SV-101303V-91203CCI-001166Windows group policy: -+1. Open the group policy editor tool with gpedit.msc -+2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\ -+Policy Name: Enable URL-keyed anonymized data collection -+Policy State: Disabled -+Policy Value: NAUniversal method: -+1. In the omnibox (address bar) type chrome://policy -+2. If "UrlKeyedAnonymizedDataCollectionEnabled" is not displayed under the “Policy Name” column or it is not set to "0" under the “Policy Value” column, this is a finding. -+Windows method: -+1. Start regedit -+2. Navigate to HKLM\Software\Policies\Google\Chrome\ -+3. If the “UrlKeyedAnonymizedDataCollectionEnabled" value name does not exist or its value data is not set to "0," this is a finding.SRG-APP-000206<GroupDescription></GroupDescription>DTBC-0067Collection of WebRTC event logs must be disabled.<VulnDiscussion>If the policy is set to “true”, Google Chrome is allowed to collect WebRTC event logs from Google services (e.g., Google Meet), and upload those logs to Google. -+If the policy is set to “false”, or is unset, Google Chrome may not collect nor upload such logs. -+These logs contain diagnostic information helpful when debugging issues with audio or video calls in Chrome, such as the time and size of sent and received RTP packets, feedback about congestion on the network, and metadata about time and quality of audio and video frames. These logs do not contain audio or video contents from the call. -+This data collection by Chrome can only be triggered by Google's web services, such as Google Hangouts or Google Meet.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Google Chrome Current WindowsDISADPMS TargetGoogle Chrome Current Windows4081SV-101305V-91205CCI-001166Windows group policy: -+1. Open the group policy editor tool with gpedit.msc -+2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\ -+Policy Name: Allow collection of WebRTC event logs from Google services -+Policy State: Disabled -+Policy Value: NAUniversal method: -+1. In the omnibox (address bar) type chrome://policy -+2. If "WebRtcEventLogCollectionAllowed" is not displayed under the “Policy Name” column or it is not set to "0" under the “Policy Value” column, this is a finding. -+Windows method: -+1. Start regedit -+2. Navigate to HKLM\Software\Policies\Google\Chrome\ -+3. If the "WebRtcEventLogCollectionAllowed" value name does not exist or its value data is not set to "0," this is a finding.SRG-APP-000266<GroupDescription></GroupDescription>DTBC-0068Chrome development tools must be disabled.<VulnDiscussion>While the risk associated with browser development tools is more related to the proper design of a web application, a risk vector remains within the browser. The developer tools allow end users and application developers to view and edit all types of web application related data via the browser. Page elements, source code, javascript, API calls, application data, etc. may all be viewed and potentially manipulated. Manipulation could be useful for troubleshooting legitimate issues, and this may be performed in a development environment. Manipulation could also be malicious and must be addressed.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Google Chrome Current WindowsDISADPMS TargetGoogle Chrome Current Windows4081SV-106629V-97525CCI-001312Windows group policy: -+1. Open the "group policy editor" tool with gpedit.msc -+2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome -+Policy Name: Control where Developer Tools can be used -+Policy State: Enabled -+Policy Value: Disallow usage of the Developer ToolsUniversal method: -+1. In the omnibox (address bar) type chrome://policy -+2. If the policy "DeveloperToolsAvailability" is not shown or is not set to "2", this is a finding. -+ -+Windows method: -+1. Start regedit -+2. Navigate to HKLM\Software\Policies\Google\Chrome\ -+3. If the key "DeveloperToolsAvailability" does not exist or is not set to "2", this is a finding.SRG-APP-000206<GroupDescription></GroupDescription>DTBC-0069Guest Mode must be disabled.<VulnDiscussion>If this policy is set to true or not configured, Google Chrome will enable guest logins. Guest logins are Google Chrome profiles where all windows are in incognito mode. -+ -+If this policy is set to false, Google Chrome will not allow guest profiles to be started.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Google Chrome Current WindowsDISADPMS TargetGoogle Chrome Current Windows4081SV-111829V-102867CCI-001166Windows group policy: -+1. Open the "group policy editor" tool with gpedit.msc -+2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\ -+Policy Name: Enable guest mode in browser -+Policy State: DisabledUniversal method: -+1. In the omnibox (address bar) type chrome://policy -+2. If BrowserGuestModeEnabled is not displayed under the Policy Name column or it is not set to 0 under the Policy Value column, this is a finding. -+ -+Windows method: -+1. Start regedit -+2. Navigate to HKLM\Software\Policies\Google\Chrome\ -+3. If the BrowserGuestModeEnabled value name does not exist or its value data is not set to 0, this is a finding.SRG-APP-000206<GroupDescription></GroupDescription>DTBC-0070AutoFill for credit cards must be disabled.<VulnDiscussion>Enabling Google Chrome's AutoFill feature allows users to auto complete credit card information in web forms using previously stored information. -+If this setting is disabled, Autofill will never suggest or fill credit card information, nor will it save additional credit card information that the user might submit while browsing the web. -+ -+If this setting is enabled or has no value, the user will be able to control Autofill for credit cards in the UI.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Google Chrome Current WindowsDISADPMS TargetGoogle Chrome Current Windows4081SV-111831V-102869CCI-001166Windows group policy: -+1. Open the "group policy editor" tool with gpedit.msc -+2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\ -+Policy Name: Enable AutoFill for credit cards -+Policy State: DisabledUniversal method: -+1. In the omnibox (address bar) type chrome://policy -+2. If AutofillCreditCardEnabled is not displayed under the Policy Name column or it is not set to 0 under the Policy Value column, this is a finding. -+ -+Windows method: -+1. Start regedit -+2. Navigate to HKLM\Software\Policies\Google\Chrome\ -+3. If the AutofillCreditCardEnabled value name does not exist or its value data is not set to 0, this is a finding.SRG-APP-000206<GroupDescription></GroupDescription>DTBC-0071AutoFill for addresses must be disabled.<VulnDiscussion>Enabling Google Chrome's AutoFill feature allows users to auto complete address information in web forms using previously stored information. -+If this setting is disabled, Autofill will never suggest or fill address information, nor will it save additional address information that the user might submit while browsing the web. -+ -+If this setting is enabled or has no value, the user will be able to control Autofill for addresses in the UI.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Google Chrome Current WindowsDISADPMS TargetGoogle Chrome Current Windows4081SV-111833V-102871CCI-001166Windows group policy: -+1. Open the "group policy editor" tool with gpedit.msc -+2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\ -+Policy Name: Enable AutoFill for addresses -+Policy State: DisabledUniversal method: -+1. In the omnibox (address bar) type chrome://policy -+2. If AutofillAddressEnabled is not displayed under the Policy Name column or it is not set to 0 under the Policy Value column, this is a finding. -+ -+Windows method: -+1. Start regedit -+2. Navigate to HKLM\Software\Policies\Google\Chrome\ -+3. If the AutofillAddressEnabled value name does not exist or its value data is not set to 0, this is a finding.SRG-APP-000206<GroupDescription></GroupDescription>DTBC-0072Import AutoFill form data must be disabled.<VulnDiscussion>This policy forces the autofill form data to be imported from the previous default browser if enabled. If enabled, this policy also affects the import dialog. -+If disabled, the autofill form data is not imported. -+ -+If it is not set, the user may be asked whether to import, or importing may happen automatically.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Google Chrome Current WindowsDISADPMS TargetGoogle Chrome Current Windows4081SV-111835V-102873CCI-001166Windows group policy: -+1. Open the "group policy editor" tool with gpedit.msc -+2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\ -+Policy Name: Import autofill form data from default browser on first run -+Policy State: DisabledUniversal method: -+1. In the omnibox (address bar) type chrome://policy -+2. If ImportAutofillFormData is not displayed under the Policy Name column or it is not set to 0 under the Policy Value column, this is a finding. -+ -+Windows method: -+1. Start regedit -+2. Navigate to HKLM\Software\Policies\Google\Chrome\ -+3. If the ImportAutofillFormData value name does not exist or its value data is not set to 0, this is a finding. -+SRG-APP-000416<GroupDescription></GroupDescription>DTBC-0056Chrome must be configured to allow only TLS.<VulnDiscussion>If this policy is not configured then Google Chrome uses a default minimum version, which is TLS 1.0. Otherwise, it may be set to one of the following values: "tls1", "tls1.1" or "tls1.2". -+When set, Google Chrome will not use SSL/TLS versions less than the specified version. An unrecognized value will be ignored. -+"tls1" = TLS 1.0 -+"tls1.1" = TLS 1.1 -+"tls1.2" = TLS 1.2</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Google Chrome Current WindowsDISADPMS TargetGoogle Chrome Current Windows4081V-81583CCI-002450Windows group policy: -+ 1. Open the “group policy editor” tool with gpedit.msc. -+ 2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\ -+ Policy Name: Minimum SSL version enabled -+ Policy State: Enabled -+ Policy Value: TLS 1.2Universal method: -+ 1. In the omnibox (address bar) type chrome://policy -+ 2. If "SSLVersionMin" is not displayed under the "Policy Name" column or it is not set to "tls1.2", this is a finding. -+Windows method: -+ 1. Start regedit -+ 2. Navigate to HKLM\Software\Policies\Google\Chrome\ -+ 3. If the "SSLVersionMin" value name does not exist or its value data is not set to "tls1.2", this is a finding.SRG-APP-000141<GroupDescription></GroupDescription>DTBC-0073Web Bluetooth API must be disabled.<VulnDiscussion>Setting the policy to 3 lets websites ask for access to nearby Bluetooth devices. Setting the policy to 2 denies access to nearby Bluetooth devices. -+ -+Leaving the policy unset lets sites ask for access, but users can change this setting. -+ -+2 = Do not allow any site to request access to Bluetooth devices via the Web Bluetooth API -+3 = Allow sites to ask the user to grant access to a nearby Bluetooth device</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Google Chrome Current WindowsDISADPMS TargetGoogle Chrome Current Windows4081SV-34246V-26961CCI-000381Windows group policy: -+1. Open the “group policy editor” tool with gpedit.msc -+2. Navigate to Policy Path: Computer Configuration\Administrative Templates\Google\Google Chrome\Content Settings -+ Policy Name: Control use of the Web Bluetooth API -+ Policy State: Enabled -+ Policy Value: Do not allow any site to request access to Bluetooth devices via the Web Bluetooth APIUniversal method: -+1. In the omnibox (address bar) type chrome://policy -+2. If DefaultWebBluetoothGuardSetting is not displayed under the Policy Name column or it is not set to 2 under the Policy Value column, then this is a finding. -+ -+Windows method: -+ 1. Start regedit -+ 2. Navigate to HKLM\Software\Policies\Google\Chrome\ -+ 3. If the DefaultWebBluetoothGuardSetting value name does not exist or its value data is not set to 2, then this is a finding. -\ No newline at end of file - -From abf1546334f7d7043cdcac34f5cf1ee6796d6521 Mon Sep 17 00:00:00 2001 -From: Gabriel Becker -Date: Mon, 26 Jul 2021 18:26:57 +0200 -Subject: [PATCH 09/10] Remove documentation on how to manually generate - stig_overlay.xml files. - ---- - .../04_updating_reference_and_overlay.md | 32 ------------------- - 1 file changed, 32 deletions(-) - delete mode 100644 docs/manual/developer/04_updating_reference_and_overlay.md - -diff --git a/docs/manual/developer/04_updating_reference_and_overlay.md b/docs/manual/developer/04_updating_reference_and_overlay.md -deleted file mode 100644 -index df16d8b7bae..00000000000 ---- a/docs/manual/developer/04_updating_reference_and_overlay.md -+++ /dev/null -@@ -1,32 +0,0 @@ --# Updating Reference and Overlay Content -- --## Reference Content -- --### STIG Reference Content -- --## STIG Overlay Content -- --`stig_overlay.xml` maps an official product/version STIG release with a --SSG product/version STIG release. -- --**`stig_overlay.xml` should never be manually created or updated. It --should always be generated using `create-stig-overlay.py`.** -- --### Creating stig_overlay.xml -- --To create `stig_overlay.xml`, there are two things that are required: an --official non-draft STIG release from DISA containing a XCCDF file (e.g. --`U_Red_Hat_Enterprise_Linux_7_STIG_V1R1_Manual-xccdf.xml` and an XCCDF --file built by the project (e.g. `ssg-rhel7-xccdf.xml`) -- --Example using `create-stig-overlay.py`: -- -- $ PYTHONPATH=`./.pyenv.sh` utils/create-stig-overlay.py --disa-xccdf=disa-stig-rhel7-v1r12-xccdf-manual.xml --ssg-xccdf=ssg-rhel7-xccdf.xml -o rhel7/overlays/stig_overlay.xml -- --### Updating stig_overlay.xml -- --To update `stig_overlay.xml`, use the `create-stig-overlay.py` script as --mentioned above. Then, submit a pull request to replace the --`stig_overlay.xml` file that is needing to be updated. Please note that --as a part of this update rules that have been removed from the official --STIG will be removed here as well. - -From 58b06ff7b3c44f624ea40b70a23d565fdc80e213 Mon Sep 17 00:00:00 2001 -From: Gabriel Becker -Date: Tue, 27 Jul 2021 18:32:03 +0200 -Subject: [PATCH 10/10] Fix STIG XSLT transformation to show important and - correct information. - ---- - shared/transforms/shared_xccdf-apply-overlay-stig.xslt | 7 ++++--- - shared/transforms/shared_xccdf2table-stig.xslt | 2 ++ - 2 files changed, 6 insertions(+), 3 deletions(-) - -diff --git a/shared/transforms/shared_xccdf-apply-overlay-stig.xslt b/shared/transforms/shared_xccdf-apply-overlay-stig.xslt -index 89949b38550..945f709b956 100644 ---- a/shared/transforms/shared_xccdf-apply-overlay-stig.xslt -+++ b/shared/transforms/shared_xccdf-apply-overlay-stig.xslt -@@ -21,7 +21,8 @@ - - - -- -+ -+ - - - -@@ -29,11 +30,11 @@ - - - -- -+ - SRG-OS-ID - - -- -+ - <xsl:value-of select="$overlay_title"/> - - -diff --git a/shared/transforms/shared_xccdf2table-stig.xslt b/shared/transforms/shared_xccdf2table-stig.xslt -index 9b38fb4906f..3746c386c0d 100644 ---- a/shared/transforms/shared_xccdf2table-stig.xslt -+++ b/shared/transforms/shared_xccdf2table-stig.xslt -@@ -53,6 +53,7 @@ - Check Procedures - Fixtext - Version -+ Mapped Rule - - Notes - -@@ -89,6 +90,7 @@ - - - -+ - -
      -
      diff --git a/SOURCES/scap-security-guide-0.1.58-update_stig_references-PR_7366.patch b/SOURCES/scap-security-guide-0.1.58-update_stig_references-PR_7366.patch deleted file mode 100644 index 523c953..0000000 --- a/SOURCES/scap-security-guide-0.1.58-update_stig_references-PR_7366.patch +++ /dev/null @@ -1,89 +0,0 @@ -From 3d7b01a7fdc27f7e5a31ba508f7f84dab446aa4b Mon Sep 17 00:00:00 2001 -From: Eduardo Barretto -Date: Wed, 16 Jun 2021 16:34:59 +0200 -Subject: [PATCH 1/5] Add accounts_password_pam_dictcheck to UBTU-20-010056 - ---- - products/ubuntu2004/profiles/stig.profile | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/products/ubuntu2004/profiles/stig.profile b/products/ubuntu2004/profiles/stig.profile -index 4d03bfe7ae..ac9685809c 100644 ---- a/products/ubuntu2004/profiles/stig.profile -+++ b/products/ubuntu2004/profiles/stig.profile -@@ -113,6 +113,8 @@ selections: - - accounts_password_pam_ocredit - - # UBTU-20-010056 The Ubuntu operating system must prevent the use of dictionary words for passwords. -+ - var_password_pam_dictcheck=1 -+ - accounts_password_pam_dictcheck - - # UBTU-20-010057 The Ubuntu operating system must be configured so that when passwords are changed or new passwords are established, pwquality must be used. - - var_password_pam_retry=3 - -From 6c3c586a7fe27d68052428e02843c573f9cbd559 Mon Sep 17 00:00:00 2001 -From: Eduardo Barretto -Date: Wed, 4 Aug 2021 18:11:48 +0200 -Subject: [PATCH 2/5] Add ubuntu2004 to prodtype in - accounts_password_pam_dictcheck - ---- - .../accounts_password_pam_dictcheck/rule.yml | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_dictcheck/rule.yml b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_dictcheck/rule.yml -index 2990150c0a..00da0397b0 100644 ---- a/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_dictcheck/rule.yml -+++ b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_dictcheck/rule.yml -@@ -1,6 +1,6 @@ - documentation_complete: true - --prodtype: fedora,rhel8 -+prodtype: fedora,rhel8,ubuntu2004 - - title: 'Ensure PAM Enforces Password Requirements - Prevent the Use of Dictionary Words' - - -From b523676430765ab7fff09f790618f091d3f916e2 Mon Sep 17 00:00:00 2001 -From: Eduardo Barretto -Date: Wed, 4 Aug 2021 18:12:59 +0200 -Subject: [PATCH 4/5] Add stigid@ubuntu2004 to accounts_password_pam_dictcheck - ---- - .../accounts_password_pam_dictcheck/rule.yml | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_dictcheck/rule.yml b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_dictcheck/rule.yml -index bae2db25fe..226329d752 100644 ---- a/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_dictcheck/rule.yml -+++ b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_dictcheck/rule.yml -@@ -29,6 +29,7 @@ references: - nist: IA-5(c),IA-5(1)(a),CM-6(a),IA-5(4) - srg: SRG-OS-000480-GPOS-00225 - stigid@rhel8: RHEL-08-020300 -+ stigid@ubuntu2004: UBTU-20-010056 - - ocil_clause: 'dictcheck is not found or not equal to the required value' - - -From 39973c39ea17fb13730f1bef239783464c1b4b01 Mon Sep 17 00:00:00 2001 -From: Eduardo Barretto -Date: Wed, 4 Aug 2021 18:13:16 +0200 -Subject: [PATCH 5/5] Add pam platform to accounts_password_pam_dictcheck - ---- - .../accounts_password_pam_dictcheck/rule.yml | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_dictcheck/rule.yml b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_dictcheck/rule.yml -index 226329d752..d0d4b8c5c5 100644 ---- a/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_dictcheck/rule.yml -+++ b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_dictcheck/rule.yml -@@ -39,6 +39,7 @@ ocil: |- - The dictcheck parameter should be equal to 1. The value should look like -
      dictcheck=1
      - -+platform: pam - - template: - name: accounts_password diff --git a/SOURCES/scap-security-guide-0.1.58-update_stig_references_for_servives_rhel8_v1r3-PR_7299.patch b/SOURCES/scap-security-guide-0.1.58-update_stig_references_for_servives_rhel8_v1r3-PR_7299.patch deleted file mode 100644 index 27d9f09..0000000 --- a/SOURCES/scap-security-guide-0.1.58-update_stig_references_for_servives_rhel8_v1r3-PR_7299.patch +++ /dev/null @@ -1,821 +0,0 @@ -From 7899e18d486b6181f3213c3c1351f24cdce84bf8 Mon Sep 17 00:00:00 2001 -From: Matthew Burket -Date: Wed, 28 Jul 2021 10:34:47 -0500 -Subject: [PATCH 01/20] Split RHEL-08-040100 into two rules - -One for the firewalld package and one for the firewalld service. ---- - .../firewalld_activation/service_firewalld_enabled/rule.yml | 2 +- - products/rhel8/profiles/stig.profile | 4 +++- - 2 files changed, 4 insertions(+), 2 deletions(-) - -diff --git a/linux_os/guide/system/network/network-firewalld/firewalld_activation/service_firewalld_enabled/rule.yml b/linux_os/guide/system/network/network-firewalld/firewalld_activation/service_firewalld_enabled/rule.yml -index cff9581e76..42849bdd5a 100644 ---- a/linux_os/guide/system/network/network-firewalld/firewalld_activation/service_firewalld_enabled/rule.yml -+++ b/linux_os/guide/system/network/network-firewalld/firewalld_activation/service_firewalld_enabled/rule.yml -@@ -40,7 +40,7 @@ references: - srg: SRG-OS-000096-GPOS-00050,SRG-OS-000297-GPOS-00115,SRG-OS-000480-GPOS-00227,SRG-OS-000480-GPOS-00231,SRG-OS-000480-GPOS-00232 - stigid@ol7: OL07-00-040520 - stigid@rhel7: RHEL-07-040520 -- stigid@rhel8: RHEL-08-040100 -+ stigid@rhel8: RHEL-08-040101 - stigid@sle15: SLES-15-010220 - - ocil: |- -diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index 965068a691..9d0145a96f 100644 ---- a/products/rhel8/profiles/stig.profile -+++ b/products/rhel8/profiles/stig.profile -@@ -968,9 +968,11 @@ selections: - # RHEL-08-040090 - - # RHEL-08-040100 -- - service_firewalld_enabled - - package_firewalld_installed - -+ # RHEL-08-040101 -+ - service_firewalld_enabled -+ - # RHEL-08-040110 - - wireless_disable_interfaces - - -From 7396acddc284acc54d66640e7e0bc5251334bc0b Mon Sep 17 00:00:00 2001 -From: Matthew Burket -Date: Wed, 28 Jul 2021 11:44:59 -0500 -Subject: [PATCH 02/20] Split the rule for RHEL-08-020040 - -Split and package_tmux_installed and configure_tmux_lock_command ---- - .../console_screen_locking/package_tmux_installed/rule.yml | 2 +- - products/rhel8/profiles/stig.profile | 4 +++- - 2 files changed, 4 insertions(+), 2 deletions(-) - -diff --git a/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/package_tmux_installed/rule.yml b/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/package_tmux_installed/rule.yml -index 550eaea8bb..120d1c49e0 100644 ---- a/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/package_tmux_installed/rule.yml -+++ b/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/package_tmux_installed/rule.yml -@@ -40,7 +40,7 @@ references: - nist-csf: PR.AC-7 - ospp: FMT_MOF_EXT.1 - srg: SRG-OS-000030-GPOS-00011,SRG-OS-000028-GPOS-00009 -- stigid@rhel8: RHEL-08-020040 -+ stigid@rhel8: RHEL-08-020039 - vmmsrg: SRG-OS-000030-VMM-000110 - - ocil_clause: 'the package is not installed' -diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index 9d0145a96f..9f57b28f4f 100644 ---- a/products/rhel8/profiles/stig.profile -+++ b/products/rhel8/profiles/stig.profile -@@ -481,8 +481,10 @@ selections: - # RHEL-08-020030 - - dconf_gnome_screensaver_lock_enabled - -- # RHEL-08-020040 -+ # RHEL-08-020039 - - package_tmux_installed -+ -+ # RHEL-08-020040 - - configure_tmux_lock_command - - # RHEL-08-020041 - -From 6e3a93e173fbd12640e585d579f1e1d0afd3f419 Mon Sep 17 00:00:00 2001 -From: Matthew Burket -Date: Wed, 28 Jul 2021 11:49:59 -0500 -Subject: [PATCH 03/20] Split RHEL-08-040100 - -One for the openssh-server package and one for the openssh-server service. ---- - .../services/ssh/package_openssh-server_installed/rule.yml | 2 +- - products/rhel8/profiles/stig.profile | 4 +++- - 2 files changed, 4 insertions(+), 2 deletions(-) - -diff --git a/linux_os/guide/services/ssh/package_openssh-server_installed/rule.yml b/linux_os/guide/services/ssh/package_openssh-server_installed/rule.yml -index 0b2a660c29..b551f08f38 100644 ---- a/linux_os/guide/services/ssh/package_openssh-server_installed/rule.yml -+++ b/linux_os/guide/services/ssh/package_openssh-server_installed/rule.yml -@@ -30,7 +30,7 @@ references: - srg: SRG-OS-000423-GPOS-00187,SRG-OS-000424-GPOS-00188,SRG-OS-000425-GPOS-00189,SRG-OS-000426-GPOS-00190 - stigid@ol7: OL07-00-040300 - stigid@rhel7: RHEL-07-040300 -- stigid@rhel8: RHEL-08-040160 -+ stigid@rhel8: RHEL-08-040159 - stigid@ubuntu2004: UBTU-20-010042 - - ocil_clause: 'the package is not installed' -diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index 9f57b28f4f..66f70cdfd5 100644 ---- a/products/rhel8/profiles/stig.profile -+++ b/products/rhel8/profiles/stig.profile -@@ -1037,8 +1037,10 @@ selections: - - # RHEL-08-040150 - -- # RHEL-08-040160 -+ # RHEL-08-040159 - - package_openssh-server_installed -+ -+ # RHEL-08-040160 - - service_sshd_enabled - - # RHEL-08-040161 - -From 097682c4e225b7bdefd7b38c89cadf984540da04 Mon Sep 17 00:00:00 2001 -From: Matthew Burket -Date: Wed, 28 Jul 2021 11:56:17 -0500 -Subject: [PATCH 04/20] Split RHEL-08-040140 - -Package usbguard and service usbguard are split out into their own -STIG ID. now. ---- - .../services/usbguard/package_usbguard_installed/rule.yml | 2 +- - .../services/usbguard/service_usbguard_enabled/rule.yml | 2 +- - products/rhel8/profiles/stig.profile | 8 ++++++-- - 3 files changed, 8 insertions(+), 4 deletions(-) - -diff --git a/linux_os/guide/services/usbguard/package_usbguard_installed/rule.yml b/linux_os/guide/services/usbguard/package_usbguard_installed/rule.yml -index 333718182e..19ef8aaca6 100644 ---- a/linux_os/guide/services/usbguard/package_usbguard_installed/rule.yml -+++ b/linux_os/guide/services/usbguard/package_usbguard_installed/rule.yml -@@ -48,7 +48,7 @@ references: - disa: CCI-001958 - ism: "1418" - srg: SRG-OS-000378-GPOS-00163 -- stigid@rhel8: RHEL-08-040140 -+ stigid@rhel8: RHEL-08-040139 - - ocil_clause: 'the package is not installed' - -diff --git a/linux_os/guide/services/usbguard/service_usbguard_enabled/rule.yml b/linux_os/guide/services/usbguard/service_usbguard_enabled/rule.yml -index 86adda9ecc..4f008129ea 100644 ---- a/linux_os/guide/services/usbguard/service_usbguard_enabled/rule.yml -+++ b/linux_os/guide/services/usbguard/service_usbguard_enabled/rule.yml -@@ -27,7 +27,7 @@ references: - nist: CM-8(3)(a),IA-3 - ospp: FMT_SMF_EXT.1 - srg: SRG-OS-000378-GPOS-00163 -- stigid@rhel8: RHEL-08-040140 -+ stigid@rhel8: RHEL-08-040141 - - ocil_clause: 'the service is not enabled' - -diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index 66f70cdfd5..fd090e4058 100644 ---- a/products/rhel8/profiles/stig.profile -+++ b/products/rhel8/profiles/stig.profile -@@ -1030,11 +1030,15 @@ selections: - - package_fapolicyd_installed - - service_fapolicyd_enabled - -- # RHEL-08-040140 -+ # RHEL-08-040139 - - package_usbguard_installed -- - service_usbguard_enabled -+ -+ # RHEL-08-040140 - - usbguard_generate_policy - -+ # RHEL-08-040141 -+ - service_usbguard_enabled -+ - # RHEL-08-040150 - - # RHEL-08-040159 - -From 1b28e2bed919e7f16519b051d39f7df640498d4f Mon Sep 17 00:00:00 2001 -From: Matthew Burket -Date: Wed, 4 Aug 2021 08:01:13 -0500 -Subject: [PATCH 05/20] Split RHEL-08-030180 - -One for the auditd package and one for the auditd service. ---- - linux_os/guide/system/auditing/service_auditd_enabled/rule.yml | 2 +- - products/rhel8/profiles/stig.profile | 3 +++ - 2 files changed, 4 insertions(+), 1 deletion(-) - -diff --git a/linux_os/guide/system/auditing/service_auditd_enabled/rule.yml b/linux_os/guide/system/auditing/service_auditd_enabled/rule.yml -index e10e8c7782..c7ce75e87c 100644 ---- a/linux_os/guide/system/auditing/service_auditd_enabled/rule.yml -+++ b/linux_os/guide/system/auditing/service_auditd_enabled/rule.yml -@@ -55,7 +55,7 @@ references: - stigid@sle12: SLES-12-020010 - stigid@sle15: SLES-15-030050 - nist@sle12: AU-3,AU-3(1),AU-3(1).1(ii),AU-3.1,AU-6(4),AU-6(4).1,AU-7(1),AU-7(1).1,AU-7(a),AU-14(1),AU-14(1).1,CM-6(b),CM-6.1(iv),MA-4(1)(a) -- stigid@rhel8: RHEL-08-010560 -+ stigid@rhel8: RHEL-08-030381 - - ocil: |- - {{{ ocil_service_enabled(service="auditd") }}} -diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index fd090e4058..682034af4d 100644 ---- a/products/rhel8/profiles/stig.profile -+++ b/products/rhel8/profiles/stig.profile -@@ -683,6 +683,9 @@ selections: - # RHEL-08-030180 - - package_audit_installed - -+ # RHEL-08-030181 -+ - service_auditd_enabled -+ - # RHEL-08-030190 - - audit_rules_privileged_commands_su - - -From 0cf0bb3f6153be26abd4622221d73356be667d1f Mon Sep 17 00:00:00 2001 -From: Matthew Burket -Date: Wed, 28 Jul 2021 12:04:34 -0500 -Subject: [PATCH 06/20] Split RHEL-08-010521 - -Disabling Kerb5 and gssapi auth for sshd move split into two STIG ids. ---- - .../services/ssh/ssh_server/sshd_disable_gssapi_auth/rule.yml | 2 +- - products/rhel8/profiles/stig.profile | 2 ++ - 2 files changed, 3 insertions(+), 1 deletion(-) - -diff --git a/linux_os/guide/services/ssh/ssh_server/sshd_disable_gssapi_auth/rule.yml b/linux_os/guide/services/ssh/ssh_server/sshd_disable_gssapi_auth/rule.yml -index 946ba7f1d6..2134da2839 100644 ---- a/linux_os/guide/services/ssh/ssh_server/sshd_disable_gssapi_auth/rule.yml -+++ b/linux_os/guide/services/ssh/ssh_server/sshd_disable_gssapi_auth/rule.yml -@@ -36,7 +36,7 @@ references: - srg: SRG-OS-000364-GPOS-00151,SRG-OS-000480-GPOS-00227 - stigid@ol7: OL07-00-040430 - stigid@rhel7: RHEL-07-040430 -- stigid@rhel8: RHEL-08-010521 -+ stigid@rhel8: RHEL-08-010522 - vmmsrg: SRG-OS-000480-VMM-002000 - - ocil_clause: 'it is commented out or is not disabled' -diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index 682034af4d..f913545106 100644 ---- a/products/rhel8/profiles/stig.profile -+++ b/products/rhel8/profiles/stig.profile -@@ -318,6 +318,8 @@ selections: - - # RHEL-08-010521 - - sshd_disable_kerb_auth -+ -+ # RHEL-08-010522 - - sshd_disable_gssapi_auth - - # RHEL-08-010540 - -From 994b19da2cb0f88d6eb0533d1ba4cae362351e56 Mon Sep 17 00:00:00 2001 -From: Matthew Burket -Date: Wed, 28 Jul 2021 12:10:06 -0500 -Subject: [PATCH 07/20] Split RHEL-08-010471 - -One for the rng-tools package and one for the rngd service. ---- - .../software/system-tools/package_rng-tools_installed/rule.yml | 2 +- - products/rhel8/profiles/stig.profile | 2 ++ - 2 files changed, 3 insertions(+), 1 deletion(-) - -diff --git a/linux_os/guide/system/software/system-tools/package_rng-tools_installed/rule.yml b/linux_os/guide/system/software/system-tools/package_rng-tools_installed/rule.yml -index 33d5625fee..663a270626 100644 ---- a/linux_os/guide/system/software/system-tools/package_rng-tools_installed/rule.yml -+++ b/linux_os/guide/system/software/system-tools/package_rng-tools_installed/rule.yml -@@ -21,7 +21,7 @@ identifiers: - references: - disa: CCI-000366 - srg: SRG-OS-000480-GPOS-00227 -- stigid@rhel8: RHEL-08-010471 -+ stigid@rhel8: RHEL-08-010472 - - ocil_clause: 'the package is not installed' - -diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index f913545106..e6ef5ee42c 100644 ---- a/products/rhel8/profiles/stig.profile -+++ b/products/rhel8/profiles/stig.profile -@@ -299,6 +299,8 @@ selections: - - # RHEL-08-010471 - - service_rngd_enabled -+ -+ # RHEL-08-010472 - - package_rng-tools_installed - - # RHEL-08-010480 - -From 2d1756e3fe017645922b1622dac139a249c48a12 Mon Sep 17 00:00:00 2001 -From: Matthew Burket -Date: Wed, 28 Jul 2021 12:14:53 -0500 -Subject: [PATCH 08/20] Split RHEL-08-010200 - -idle timeout and keepalive are now split ---- - .../services/ssh/ssh_server/sshd_set_idle_timeout/rule.yml | 2 +- - products/rhel8/profiles/stig.profile | 4 +++- - 2 files changed, 4 insertions(+), 2 deletions(-) - -diff --git a/linux_os/guide/services/ssh/ssh_server/sshd_set_idle_timeout/rule.yml b/linux_os/guide/services/ssh/ssh_server/sshd_set_idle_timeout/rule.yml -index 95c840fc5f..5a44255013 100644 ---- a/linux_os/guide/services/ssh/ssh_server/sshd_set_idle_timeout/rule.yml -+++ b/linux_os/guide/services/ssh/ssh_server/sshd_set_idle_timeout/rule.yml -@@ -53,7 +53,7 @@ references: - srg: SRG-OS-000126-GPOS-00066,SRG-OS-000163-GPOS-00072,SRG-OS-000279-GPOS-00109,SRG-OS-000395-GPOS-00175 - stigid@ol7: OL07-00-040320 - stigid@rhel7: RHEL-07-040320 -- stigid@rhel8: RHEL-08-010200 -+ stigid@rhel8: RHEL-08-010201 - stigid@sle12: SLES-12-030190 - stigid@sle15: SLES-15-010280 - stigid@ubuntu2004: UBTU-20-010037 -diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index e6ef5ee42c..036fd00808 100644 ---- a/products/rhel8/profiles/stig.profile -+++ b/products/rhel8/profiles/stig.profile -@@ -156,9 +156,11 @@ selections: - - dir_perms_world_writable_sticky_bits - - # RHEL-08-010200 -- - sshd_set_idle_timeout - - sshd_set_keepalive_0 - -+ # RHEL-08-010201 -+ - sshd_set_idle_timeout -+ - # RHEL-08-010210 - - file_permissions_var_log_messages - - -From 0823a6f84d32338223502dfc93b09df5225debf6 Mon Sep 17 00:00:00 2001 -From: Matthew Burket -Date: Wed, 28 Jul 2021 12:23:31 -0500 -Subject: [PATCH 09/20] Split RHEL-08-010141 - -GRUB2 UEFI username and password split ---- - .../bootloader-grub2/uefi/grub2_uefi_admin_username/rule.yml | 2 +- - products/rhel8/profiles/stig.profile | 2 ++ - 2 files changed, 3 insertions(+), 1 deletion(-) - -diff --git a/linux_os/guide/system/bootloader-grub2/uefi/grub2_uefi_admin_username/rule.yml b/linux_os/guide/system/bootloader-grub2/uefi/grub2_uefi_admin_username/rule.yml -index a5f9349882..8a98cbdc95 100644 ---- a/linux_os/guide/system/bootloader-grub2/uefi/grub2_uefi_admin_username/rule.yml -+++ b/linux_os/guide/system/bootloader-grub2/uefi/grub2_uefi_admin_username/rule.yml -@@ -56,7 +56,7 @@ references: - srg: SRG-OS-000080-GPOS-00048 - stigid@ol7: OL07-00-010490 - stigid@rhel7: RHEL-07-010490 -- stigid@rhel8: RHEL-08-010140 -+ stigid@rhel8: RHEL-08-010141 - - ocil_clause: 'it does not' - -diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index 036fd00808..83500c35b3 100644 ---- a/products/rhel8/profiles/stig.profile -+++ b/products/rhel8/profiles/stig.profile -@@ -121,6 +121,8 @@ selections: - - # RHEL-08-010140 - - grub2_uefi_password -+ -+ # RHEL-08-010141 - - grub2_uefi_admin_username - - # RHEL-08-010150 - -From a4dd46d84d9ab8a9fd4984cbc1b9432e2920d3f5 Mon Sep 17 00:00:00 2001 -From: Matthew Burket -Date: Wed, 28 Jul 2021 12:24:18 -0500 -Subject: [PATCH 10/20] Split RHEL-08-010150 - -GRUB admin username and password split ---- - .../bootloader-grub2/non-uefi/grub2_admin_username/rule.yml | 2 +- - products/rhel8/profiles/stig.profile | 4 +++- - 2 files changed, 4 insertions(+), 2 deletions(-) - -diff --git a/linux_os/guide/system/bootloader-grub2/non-uefi/grub2_admin_username/rule.yml b/linux_os/guide/system/bootloader-grub2/non-uefi/grub2_admin_username/rule.yml -index f5cf144e0b..bb2f1bae21 100644 ---- a/linux_os/guide/system/bootloader-grub2/non-uefi/grub2_admin_username/rule.yml -+++ b/linux_os/guide/system/bootloader-grub2/non-uefi/grub2_admin_username/rule.yml -@@ -49,7 +49,7 @@ references: - srg: SRG-OS-000080-GPOS-00048 - stigid@ol7: OL07-00-010480 - stigid@rhel7: RHEL-07-010480 -- stigid@rhel8: RHEL-08-010150 -+ stigid@rhel8: RHEL-08-010149 - - ocil_clause: 'it does not' - -diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index 83500c35b3..10d6fd6ebd 100644 ---- a/products/rhel8/profiles/stig.profile -+++ b/products/rhel8/profiles/stig.profile -@@ -125,9 +125,11 @@ selections: - # RHEL-08-010141 - - grub2_uefi_admin_username - -+ # RHEL-08-010149 -+ - grub2_admin_username -+ - # RHEL-08-010150 - - grub2_password -- - grub2_admin_username - - # RHEL-08-010151 - - require_singleuser_auth - -From e1950738e3d5a35027d322589e736e8bfdba98b3 Mon Sep 17 00:00:00 2001 -From: Matthew Burket -Date: Wed, 28 Jul 2021 12:44:27 -0500 -Subject: [PATCH 11/20] Split RHEL-08-040135 - -Package fapolicyd and service fapolicyd have been split. ---- - .../guide/services/fapolicyd/service_fapolicyd_enabled/rule.yml | 2 +- - products/rhel8/profiles/stig.profile | 2 ++ - 2 files changed, 3 insertions(+), 1 deletion(-) - -diff --git a/linux_os/guide/services/fapolicyd/service_fapolicyd_enabled/rule.yml b/linux_os/guide/services/fapolicyd/service_fapolicyd_enabled/rule.yml -index 6c2663de9f..4a1cd16608 100644 ---- a/linux_os/guide/services/fapolicyd/service_fapolicyd_enabled/rule.yml -+++ b/linux_os/guide/services/fapolicyd/service_fapolicyd_enabled/rule.yml -@@ -24,7 +24,7 @@ references: - nist: CM-6(a),SI-4(22) - ospp: FMT_SMF_EXT.1 - srg: SRG-OS-000370-GPOS-00155,SRG-OS-000368-GPOS-00154 -- stigid@rhel8: RHEL-08-040135 -+ stigid@rhel8: RHEL-08-040136 - - ocil_clause: 'the service is not enabled' - -diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index 10d6fd6ebd..8272b25057 100644 ---- a/products/rhel8/profiles/stig.profile -+++ b/products/rhel8/profiles/stig.profile -@@ -1041,6 +1041,8 @@ selections: - - # RHEL-08-040135 - - package_fapolicyd_installed -+ -+ # RHEL-08-040136 - - service_fapolicyd_enabled - - # RHEL-08-040139 - -From e259cdaeb85f7f1f371fa11c08a615d1828fe30e Mon Sep 17 00:00:00 2001 -From: Matthew Burket -Date: Wed, 4 Aug 2021 08:42:38 -0500 -Subject: [PATCH 12/20] Split RHEL-08-020330 - -Also added a placeholder for RHEL-08-020332 ---- - .../password_storage/no_empty_passwords/rule.yml | 2 +- - products/rhel8/profiles/stig.profile | 6 +++++- - 2 files changed, 6 insertions(+), 2 deletions(-) - -diff --git a/linux_os/guide/system/accounts/accounts-restrictions/password_storage/no_empty_passwords/rule.yml b/linux_os/guide/system/accounts/accounts-restrictions/password_storage/no_empty_passwords/rule.yml -index 19e5e95d60..75f988ffb2 100644 ---- a/linux_os/guide/system/accounts/accounts-restrictions/password_storage/no_empty_passwords/rule.yml -+++ b/linux_os/guide/system/accounts/accounts-restrictions/password_storage/no_empty_passwords/rule.yml -@@ -53,7 +53,7 @@ references: - srg: SRG-OS-000480-GPOS-00227 - stigid@ol7: OL07-00-010290 - stigid@rhel7: RHEL-07-010290 -- stigid@rhel8: RHEL-08-020330 -+ stigid@rhel8: RHEL-08-020331 - stigid@sle12: SLES-12-010231 - stigid@sle15: SLES-15-020300 - -diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index 8272b25057..793fdd1e87 100644 ---- a/products/rhel8/profiles/stig.profile -+++ b/products/rhel8/profiles/stig.profile -@@ -591,9 +591,13 @@ selections: - # - accounts_authorized_local_users - - # RHEL-08-020330 -- - no_empty_passwords - - sshd_disable_empty_passwords - -+ # RHEL-08-020331 -+ - no_empty_passwords -+ -+ # RHEL-08-020332 -+ - # RHEL-08-020340 - - display_login_attempts - - -From 5c2b73b5a4462225e876b29ead9f92da3c5f4331 Mon Sep 17 00:00:00 2001 -From: Matthew Burket -Date: Wed, 4 Aug 2021 08:45:28 -0500 -Subject: [PATCH 13/20] Split RHEL-08-010050 - ---- - .../gui_login_banner/dconf_gnome_banner_enabled/rule.yml | 2 +- - products/rhel8/profiles/stig.profile | 4 +++- - 2 files changed, 4 insertions(+), 2 deletions(-) - -diff --git a/linux_os/guide/system/accounts/accounts-banners/gui_login_banner/dconf_gnome_banner_enabled/rule.yml b/linux_os/guide/system/accounts/accounts-banners/gui_login_banner/dconf_gnome_banner_enabled/rule.yml -index c84cff33f3..b6ba3edc47 100644 ---- a/linux_os/guide/system/accounts/accounts-banners/gui_login_banner/dconf_gnome_banner_enabled/rule.yml -+++ b/linux_os/guide/system/accounts/accounts-banners/gui_login_banner/dconf_gnome_banner_enabled/rule.yml -@@ -54,7 +54,7 @@ references: - srg: SRG-OS-000023-GPOS-00006,SRG-OS-000024-GPOS-00007,SRG-OS-000228-GPOS-00088 - stigid@ol7: OL07-00-010030 - stigid@rhel7: RHEL-07-010030 -- stigid@rhel8: RHEL-08-010050 -+ stigid@rhel8: RHEL-08-010049 - stigid@sle12: SLES-12-010040 - stigid@sle15: SLES-15-010080 - stigid@ubuntu2004: UBTU-20-010002 -diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index 793fdd1e87..976c3f1892 100644 ---- a/products/rhel8/profiles/stig.profile -+++ b/products/rhel8/profiles/stig.profile -@@ -95,8 +95,10 @@ selections: - # RHEL-08-010040 - - sshd_enable_warning_banner - -- # RHEL-08-010050 -+ # RHEL-08-010049 - - dconf_gnome_banner_enabled -+ -+ # RHEL-08-010050 - - dconf_gnome_login_banner_text - - # RHEL-08-010060 - -From d7c7cefd39de31bb484faad49766bbca22469aea Mon Sep 17 00:00:00 2001 -From: Matthew Burket -Date: Wed, 4 Aug 2021 08:47:50 -0500 -Subject: [PATCH 14/20] Split RHEL-08-010130 - ---- - .../accounts_password_pam_unix_rounds_system_auth/rule.yml | 2 +- - products/rhel8/profiles/stig.profile | 4 +++- - 2 files changed, 4 insertions(+), 2 deletions(-) - -diff --git a/linux_os/guide/system/accounts/accounts-restrictions/password_storage/accounts_password_pam_unix_rounds_system_auth/rule.yml b/linux_os/guide/system/accounts/accounts-restrictions/password_storage/accounts_password_pam_unix_rounds_system_auth/rule.yml -index d44119622a..0b694b0e0b 100644 ---- a/linux_os/guide/system/accounts/accounts-restrictions/password_storage/accounts_password_pam_unix_rounds_system_auth/rule.yml -+++ b/linux_os/guide/system/accounts/accounts-restrictions/password_storage/accounts_password_pam_unix_rounds_system_auth/rule.yml -@@ -32,7 +32,7 @@ references: - anssi: BP28(R32) - disa: CCI-000196 - srg: SRG-OS-000073-GPOS-00041 -- stigid@rhel8: RHEL-08-010130 -+ stigid@rhel8: RHEL-08-010131 - - ocil_clause: 'it does not set the appropriate number of hashing rounds' - -diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index 976c3f1892..5230dcd9c5 100644 ---- a/products/rhel8/profiles/stig.profile -+++ b/products/rhel8/profiles/stig.profile -@@ -118,9 +118,11 @@ selections: - - accounts_password_all_shadowed_sha512 - - # RHEL-08-010130 -- - accounts_password_pam_unix_rounds_system_auth - - accounts_password_pam_unix_rounds_password_auth - -+ # RHEL-08-010131 -+ - accounts_password_pam_unix_rounds_system_auth -+ - # RHEL-08-010140 - - grub2_uefi_password - - -From f78b565e1f15cff194aef78af2184088fc41782a Mon Sep 17 00:00:00 2001 -From: Matthew Burket -Date: Wed, 4 Aug 2021 08:50:42 -0500 -Subject: [PATCH 15/20] Split RHEL-08-010151 - ---- - .../accounts-physical/require_emergency_target_auth/rule.yml | 2 +- - products/rhel8/profiles/stig.profile | 4 +--- - 2 files changed, 2 insertions(+), 4 deletions(-) - -diff --git a/linux_os/guide/system/accounts/accounts-physical/require_emergency_target_auth/rule.yml b/linux_os/guide/system/accounts/accounts-physical/require_emergency_target_auth/rule.yml -index 930d3a09fd..e2f61432ba 100644 ---- a/linux_os/guide/system/accounts/accounts-physical/require_emergency_target_auth/rule.yml -+++ b/linux_os/guide/system/accounts/accounts-physical/require_emergency_target_auth/rule.yml -@@ -42,7 +42,7 @@ references: - srg: SRG-OS-000080-GPOS-00048 - stigid@ol7: OL07-00-010481 - stigid@rhel7: RHEL-07-010481 -- stigid@rhel8: RHEL-08-010151 -+ stigid@rhel8: RHEL-08-010152 - - ocil_clause: 'the output is different' - -diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index 5230dcd9c5..040228b832 100644 ---- a/products/rhel8/profiles/stig.profile -+++ b/products/rhel8/profiles/stig.profile -@@ -137,11 +137,9 @@ selections: - - # RHEL-08-010151 - - require_singleuser_auth -- - require_emergency_target_auth - - # RHEL-08-010152 -- # To be released in V1R3 -- # - require_emergency_target_auth -+ - require_emergency_target_auth - - # RHEL-08-010160 - - set_password_hashing_algorithm_systemauth - -From a7766cf4ccfd00eaad910fb98b02694868000410 Mon Sep 17 00:00:00 2001 -From: Matthew Burket -Date: Wed, 4 Aug 2021 08:57:18 -0500 -Subject: [PATCH 16/20] Split RHEL-08-040210 - ---- - .../sysctl_net_ipv4_conf_default_accept_redirects/rule.yml | 2 +- - products/rhel8/profiles/stig.profile | 4 +++- - 2 files changed, 4 insertions(+), 2 deletions(-) - -diff --git a/linux_os/guide/system/network/network-kernel/network_host_and_router_parameters/sysctl_net_ipv4_conf_default_accept_redirects/rule.yml b/linux_os/guide/system/network/network-kernel/network_host_and_router_parameters/sysctl_net_ipv4_conf_default_accept_redirects/rule.yml -index e8555a4895..bee6c117f3 100644 ---- a/linux_os/guide/system/network/network-kernel/network_host_and_router_parameters/sysctl_net_ipv4_conf_default_accept_redirects/rule.yml -+++ b/linux_os/guide/system/network/network-kernel/network_host_and_router_parameters/sysctl_net_ipv4_conf_default_accept_redirects/rule.yml -@@ -43,7 +43,7 @@ references: - srg: SRG-OS-000480-GPOS-00227 - stigid@ol7: OL07-00-040640 - stigid@rhel7: RHEL-07-040640 -- stigid@rhel8: RHEL-08-040210 -+ stigid@rhel8: RHEL-08-040209 - stigid@sle12: SLES-12-030400 - stigid@sle15: SLES-15-040340 - -diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index 040228b832..394a460c51 100644 ---- a/products/rhel8/profiles/stig.profile -+++ b/products/rhel8/profiles/stig.profile -@@ -1092,8 +1092,10 @@ selections: - # RHEL-08-040200 - - accounts_no_uid_except_zero - -- # RHEL-08-040210 -+ # RHEL-08-040209 - - sysctl_net_ipv4_conf_default_accept_redirects -+ -+ # RHEL-08-040210 - - sysctl_net_ipv6_conf_default_accept_redirects - - # RHEL-08-040220 - -From ac28c4231415be5e58bcea6f9fdd8652c6d39c45 Mon Sep 17 00:00:00 2001 -From: Matthew Burket -Date: Wed, 4 Aug 2021 09:08:27 -0500 -Subject: [PATCH 17/20] Split RHEL-08-040240 - ---- - .../sysctl_net_ipv4_conf_all_accept_source_route/rule.yml | 2 +- - products/rhel8/profiles/stig.profile | 4 +++- - 2 files changed, 4 insertions(+), 2 deletions(-) - -diff --git a/linux_os/guide/system/network/network-kernel/network_host_and_router_parameters/sysctl_net_ipv4_conf_all_accept_source_route/rule.yml b/linux_os/guide/system/network/network-kernel/network_host_and_router_parameters/sysctl_net_ipv4_conf_all_accept_source_route/rule.yml -index b56f2891f5..f92772eb57 100644 ---- a/linux_os/guide/system/network/network-kernel/network_host_and_router_parameters/sysctl_net_ipv4_conf_all_accept_source_route/rule.yml -+++ b/linux_os/guide/system/network/network-kernel/network_host_and_router_parameters/sysctl_net_ipv4_conf_all_accept_source_route/rule.yml -@@ -45,7 +45,7 @@ references: - srg: SRG-OS-000480-GPOS-00227 - stigid@ol7: OL07-00-040610 - stigid@rhel7: RHEL-07-040610 -- stigid@rhel8: RHEL-08-040240 -+ stigid@rhel8: RHEL-08-040239 - stigid@sle12: SLES-12-030360 - stigid@sle15: SLES-15-040300 - -diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index 394a460c51..9cccd25963 100644 ---- a/products/rhel8/profiles/stig.profile -+++ b/products/rhel8/profiles/stig.profile -@@ -1104,8 +1104,10 @@ selections: - # RHEL-08-040230 - - sysctl_net_ipv4_icmp_echo_ignore_broadcasts - -- # RHEL-08-040240 -+ # RHEL-08-040239 - - sysctl_net_ipv4_conf_all_accept_source_route -+ -+ # RHEL-08-040240 - - sysctl_net_ipv6_conf_all_accept_source_route - - # RHEL-08-040250 - -From 717ed63c6ad9b69b75aee69bbf1198515011499f Mon Sep 17 00:00:00 2001 -From: Matthew Burket -Date: Wed, 4 Aug 2021 09:11:08 -0500 -Subject: [PATCH 18/20] Split RHEL-08-040250 - ---- - .../sysctl_net_ipv4_conf_default_accept_source_route/rule.yml | 2 +- - products/rhel8/profiles/stig.profile | 4 +++- - 2 files changed, 4 insertions(+), 2 deletions(-) - -diff --git a/linux_os/guide/system/network/network-kernel/network_host_and_router_parameters/sysctl_net_ipv4_conf_default_accept_source_route/rule.yml b/linux_os/guide/system/network/network-kernel/network_host_and_router_parameters/sysctl_net_ipv4_conf_default_accept_source_route/rule.yml -index 4df2465995..b1e7f247e2 100644 ---- a/linux_os/guide/system/network/network-kernel/network_host_and_router_parameters/sysctl_net_ipv4_conf_default_accept_source_route/rule.yml -+++ b/linux_os/guide/system/network/network-kernel/network_host_and_router_parameters/sysctl_net_ipv4_conf_default_accept_source_route/rule.yml -@@ -46,7 +46,7 @@ references: - srg: SRG-OS-000480-GPOS-00227 - stigid@ol7: OL07-00-040620 - stigid@rhel7: RHEL-07-040620 -- stigid@rhel8: RHEL-08-040250 -+ stigid@rhel8: RHEL-08-040249 - stigid@sle12: SLES-12-030370 - stigid@sle15: SLES-15-040320 - -diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index 9cccd25963..4d1869c629 100644 ---- a/products/rhel8/profiles/stig.profile -+++ b/products/rhel8/profiles/stig.profile -@@ -1110,8 +1110,10 @@ selections: - # RHEL-08-040240 - - sysctl_net_ipv6_conf_all_accept_source_route - -- # RHEL-08-040250 -+ # RHEL-08-040249 - - sysctl_net_ipv4_conf_default_accept_source_route -+ -+ # RHEL-08-040250 - - sysctl_net_ipv6_conf_default_accept_source_route - - # RHEL-08-040260 - -From 9b244bc0828e2eb6ffe389d7ef590e6b967a4c07 Mon Sep 17 00:00:00 2001 -From: Matthew Burket -Date: Wed, 4 Aug 2021 09:13:19 -0500 -Subject: [PATCH 19/20] Split RHEL-08-040280 - ---- - .../sysctl_net_ipv4_conf_all_accept_redirects/rule.yml | 2 +- - products/rhel8/profiles/stig.profile | 4 +++- - 2 files changed, 4 insertions(+), 2 deletions(-) - -diff --git a/linux_os/guide/system/network/network-kernel/network_host_and_router_parameters/sysctl_net_ipv4_conf_all_accept_redirects/rule.yml b/linux_os/guide/system/network/network-kernel/network_host_and_router_parameters/sysctl_net_ipv4_conf_all_accept_redirects/rule.yml -index d5e7fe4599..726042198e 100644 ---- a/linux_os/guide/system/network/network-kernel/network_host_and_router_parameters/sysctl_net_ipv4_conf_all_accept_redirects/rule.yml -+++ b/linux_os/guide/system/network/network-kernel/network_host_and_router_parameters/sysctl_net_ipv4_conf_all_accept_redirects/rule.yml -@@ -44,7 +44,7 @@ references: - srg: SRG-OS-000480-GPOS-00227 - stigid@ol7: OL07-00-040641 - stigid@rhel7: RHEL-07-040641 -- stigid@rhel8: RHEL-08-040280 -+ stigid@rhel8: RHEL-08-040279 - stigid@sle12: SLES-12-030390 - stigid@sle15: SLES-15-040330 - -diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index 4d1869c629..0a1fdd15ca 100644 ---- a/products/rhel8/profiles/stig.profile -+++ b/products/rhel8/profiles/stig.profile -@@ -1128,8 +1128,10 @@ selections: - # RHEL-08-040270 - - sysctl_net_ipv4_conf_default_send_redirects - -- # RHEL-08-040280 -+ # RHEL-08-040279 - - sysctl_net_ipv4_conf_all_accept_redirects -+ -+ # RHEL-08-040280 - - sysctl_net_ipv6_conf_all_accept_redirects - - # RHEL-08-040281 - -From 7723ff37c5abd8681b70ad686c5df45d7d0b44ed Mon Sep 17 00:00:00 2001 -From: Matthew Burket -Date: Thu, 5 Aug 2021 14:46:46 -0500 -Subject: [PATCH 20/20] Update couple of references for RHEL8 STIG - ---- - .../enable_nx/bios_enable_execution_restrictions/rule.yml | 2 +- - .../software/disk_partitioning/partition_for_var_tmp/rule.yml | 1 + - 2 files changed, 2 insertions(+), 1 deletion(-) - -diff --git a/linux_os/guide/system/permissions/restrictions/enable_nx/bios_enable_execution_restrictions/rule.yml b/linux_os/guide/system/permissions/restrictions/enable_nx/bios_enable_execution_restrictions/rule.yml -index 99f2c739c9..2176a0bb9b 100644 ---- a/linux_os/guide/system/permissions/restrictions/enable_nx/bios_enable_execution_restrictions/rule.yml -+++ b/linux_os/guide/system/permissions/restrictions/enable_nx/bios_enable_execution_restrictions/rule.yml -@@ -32,6 +32,6 @@ references: - nist: SC-39,CM-6(a) - nist-csf: PR.IP-1 - srg: SRG-OS-000433-GPOS-00192 -- stig@rhel8: RHEL-08-010420 -+ stigid@rhel8: RHEL-08-010420 - - platform: machine -diff --git a/linux_os/guide/system/software/disk_partitioning/partition_for_var_tmp/rule.yml b/linux_os/guide/system/software/disk_partitioning/partition_for_var_tmp/rule.yml -index 726975e808..d57c0f0ce9 100644 ---- a/linux_os/guide/system/software/disk_partitioning/partition_for_var_tmp/rule.yml -+++ b/linux_os/guide/system/software/disk_partitioning/partition_for_var_tmp/rule.yml -@@ -30,6 +30,7 @@ references: - cis@ubuntu1804: 1.1.6 - cis@ubuntu2004: 1.1.11 - srg: SRG-OS-000480-GPOS-00227 -+ stigid@rhel8: RHEL-08-010544 - - {{{ complete_ocil_entry_separate_partition(part="/var/tmp") }}} - diff --git a/SOURCES/scap-security-guide-0.1.59-BZ1884687-PR_7770.patch b/SOURCES/scap-security-guide-0.1.59-BZ1884687-PR_7770.patch deleted file mode 100644 index 7e02d22..0000000 --- a/SOURCES/scap-security-guide-0.1.59-BZ1884687-PR_7770.patch +++ /dev/null @@ -1,841 +0,0 @@ -commit 549241cec9404bd211a580454fdd28cb72dfe520 -Author: Gabriel Becker -Date: Thu Feb 24 17:24:17 2022 +0100 - - Manual edited patch scap-security-guide-0.1.59-BZ1884687-PR_7770.patch. - -diff --git a/linux_os/guide/system/accounts/accounts-session/file_groupownership_home_directories/ansible/shared.yml b/linux_os/guide/system/accounts/accounts-session/file_groupownership_home_directories/ansible/shared.yml -new file mode 100644 -index 0000000..09d1984 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/file_groupownership_home_directories/ansible/shared.yml -@@ -0,0 +1,31 @@ -+# platform = multi_platform_all -+# reboot = false -+# strategy = restrict -+# complexity = low -+# disruption = low -+ -+- name: Get all local users from /etc/passwd -+ ansible.builtin.getent: -+ database: passwd -+ split: ':' -+ -+- name: Create local_users variable from the getent output -+ ansible.builtin.set_fact: -+ local_users: '{{ ansible_facts.getent_passwd|dict2items }}' -+ -+- name: Test for existence of home directories to avoid creating them, but only fixing group ownership -+ ansible.builtin.stat: -+ path: '{{ item.value[4] }}' -+ register: path_exists -+ loop: '{{ local_users }}' -+ when: -+ - item.value[2]|int >= {{{ gid_min }}} -+ - item.value[2]|int != 65534 -+ -+- name: Ensure interactive local users are the group-owners of their respective home directories -+ ansible.builtin.file: -+ path: '{{ item.0.value[4] }}' -+ group: '{{ item.0.value[2] }}' -+ loop: '{{ local_users|zip(path_exists.results)|list }}' -+ when: -+ - item.1.stat is defined and item.1.stat.exists -diff --git a/linux_os/guide/system/accounts/accounts-session/file_groupownership_home_directories/bash/shared.sh b/linux_os/guide/system/accounts/accounts-session/file_groupownership_home_directories/bash/shared.sh -new file mode 100644 -index 0000000..08f7307 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/file_groupownership_home_directories/bash/shared.sh -@@ -0,0 +1,7 @@ -+# platform = multi_platform_all -+# reboot = false -+# strategy = restrict -+# complexity = low -+# disruption = low -+ -+awk -F':' '{ if ($4 >= {{{ gid_min }}} && $4 != 65534) system("chgrp -f " $4" "$6) }' /etc/passwd -diff --git a/linux_os/guide/system/accounts/accounts-session/file_groupownership_home_directories/oval/shared.xml b/linux_os/guide/system/accounts/accounts-session/file_groupownership_home_directories/oval/shared.xml -new file mode 100644 -index 0000000..a1d1f2e ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/file_groupownership_home_directories/oval/shared.xml -@@ -0,0 +1,89 @@ -+ -+ -+ {{{ oval_metadata("All interactive user's Home Directories must be group-owned by its user") }}} -+ -+ -+ -+ -+ -+ -+ -+ -+ nobody -+ state_file_groupownership_home_directories_interactive_gids -+ -+ -+ -+ {{{ gid_min }}} -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ var_file_groupownership_home_directories_gids_count -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/linux_os/guide/system/accounts/accounts-session/file_groupownership_home_directories/rule.yml b/linux_os/guide/system/accounts/accounts-session/file_groupownership_home_directories/rule.yml -index 2e6ce60..e33660f 100644 ---- a/linux_os/guide/system/accounts/accounts-session/file_groupownership_home_directories/rule.yml -+++ b/linux_os/guide/system/accounts/accounts-session/file_groupownership_home_directories/rule.yml -@@ -10,6 +10,10 @@ description: |- - interactive users home directory, use the following command: -
      $ sudo chgrp USER_GROUP /home/USER
      - -+ This rule ensures every home directory related to an interactive user is -+ group-owned by an interactive user. It also ensures that interactive users -+ are group-owners of one and only one home directory. -+ - rationale: |- - If the Group Identifier (GID) of a local interactive users home directory is - not the same as the primary GID of the user, this would allow unauthorized -@@ -42,3 +46,9 @@ ocil: |- - To verify the assigned home directory of all interactive users is group- - owned by that users primary GID, run the following command: -
      # ls -ld $(awk -F: '($3>=1000)&&($7 !~ /nologin/){print $6}' /etc/passwd)
      -+ -+warnings: -+ - general: |- -+ Due to OVAL limitation, this rule can report a false negative in a -+ specific situation where two interactive users swap the group-ownership -+ of their respective home directories. -diff --git a/linux_os/guide/system/accounts/accounts-session/file_groupownership_home_directories/tests/expected_groupowner.pass.sh b/linux_os/guide/system/accounts/accounts-session/file_groupownership_home_directories/tests/expected_groupowner.pass.sh -new file mode 100644 -index 0000000..1605339 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/file_groupownership_home_directories/tests/expected_groupowner.pass.sh -@@ -0,0 +1,5 @@ -+#!/bin/bash -+ -+USER="cac_user" -+useradd -m $USER -+chgrp $USER /home/$USER -diff --git a/linux_os/guide/system/accounts/accounts-session/file_groupownership_home_directories/tests/home_dirs_all_absent.pass.sh b/linux_os/guide/system/accounts/accounts-session/file_groupownership_home_directories/tests/home_dirs_all_absent.pass.sh -new file mode 100644 -index 0000000..af24025 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/file_groupownership_home_directories/tests/home_dirs_all_absent.pass.sh -@@ -0,0 +1,6 @@ -+#!/bin/bash -+ -+USER="cac_user" -+useradd -M $USER -+# This make sure home dirs related to test environment users are also removed. -+rm -Rf /home/* -diff --git a/linux_os/guide/system/accounts/accounts-session/file_groupownership_home_directories/tests/home_dirs_one_absent.pass.sh b/linux_os/guide/system/accounts/accounts-session/file_groupownership_home_directories/tests/home_dirs_one_absent.pass.sh -new file mode 100644 -index 0000000..5bce517 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/file_groupownership_home_directories/tests/home_dirs_one_absent.pass.sh -@@ -0,0 +1,7 @@ -+#!/bin/bash -+ -+USER1="cac_user1" -+USER2="cac_user2" -+ -+useradd -m $USER1 -+useradd -M $USER2 -diff --git a/linux_os/guide/system/accounts/accounts-session/file_groupownership_home_directories/tests/home_dirs_with_same_groupowner.fail.sh b/linux_os/guide/system/accounts/accounts-session/file_groupownership_home_directories/tests/home_dirs_with_same_groupowner.fail.sh -new file mode 100644 -index 0000000..9d0f765 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/file_groupownership_home_directories/tests/home_dirs_with_same_groupowner.fail.sh -@@ -0,0 +1,10 @@ -+#!/bin/bash -+ -+USER1="cac_user1" -+USER2="cac_user2" -+ -+useradd -m $USER1 -+useradd -m $USER2 -+# Define the same owner for two home directories -+chgrp $USER1 /home/$USER1 -+chgrp $USER1 /home/$USER2 -diff --git a/linux_os/guide/system/accounts/accounts-session/file_groupownership_home_directories/tests/interactive_users_absent.pass.sh b/linux_os/guide/system/accounts/accounts-session/file_groupownership_home_directories/tests/interactive_users_absent.pass.sh -new file mode 100644 -index 0000000..ed34f09 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/file_groupownership_home_directories/tests/interactive_users_absent.pass.sh -@@ -0,0 +1,4 @@ -+#!/bin/bash -+ -+# remove all interactive users (ID >= 1000) from /etc/passwd -+sed -i '/.*:[0-9]\{4,\}:/d' /etc/passwd -diff --git a/linux_os/guide/system/accounts/accounts-session/file_groupownership_home_directories/tests/unexpected_groupowner_system_id.fail.sh b/linux_os/guide/system/accounts/accounts-session/file_groupownership_home_directories/tests/unexpected_groupowner_system_id.fail.sh -new file mode 100644 -index 0000000..c1a87c1 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/file_groupownership_home_directories/tests/unexpected_groupowner_system_id.fail.sh -@@ -0,0 +1,5 @@ -+#!/bin/bash -+ -+USER="cac_user" -+useradd -m $USER -+chgrp 2 /home/$USER -diff --git a/linux_os/guide/system/accounts/accounts-session/file_groupownership_home_directories/tests/unexpected_groupowner_unknown_id.fail.sh b/linux_os/guide/system/accounts/accounts-session/file_groupownership_home_directories/tests/unexpected_groupowner_unknown_id.fail.sh -new file mode 100644 -index 0000000..d352011 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/file_groupownership_home_directories/tests/unexpected_groupowner_unknown_id.fail.sh -@@ -0,0 +1,5 @@ -+#!/bin/bash -+ -+USER="cac_user" -+useradd -m $USER -+chgrp 10005 /home/$USER -diff --git a/linux_os/guide/system/accounts/accounts-session/file_groupownership_home_directories/tests/warning_home_dirs_crossed_groupowner.pass.sh b/linux_os/guide/system/accounts/accounts-session/file_groupownership_home_directories/tests/warning_home_dirs_crossed_groupowner.pass.sh -new file mode 100644 -index 0000000..0cffa4a ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/file_groupownership_home_directories/tests/warning_home_dirs_crossed_groupowner.pass.sh -@@ -0,0 +1,10 @@ -+#!/bin/bash -+ -+USER1="cac_user1" -+USER2="cac_user2" -+ -+useradd -m $USER1 -+useradd -m $USER2 -+# Define the same owner for two home directories -+chgrp $USER2 /home/$USER1 -+chgrp $USER1 /home/$USER2 -diff --git a/linux_os/guide/system/accounts/accounts-session/file_groupownership_home_directories/tests/warning_home_dirs_swapped_groupowner.pass.sh b/linux_os/guide/system/accounts/accounts-session/file_groupownership_home_directories/tests/warning_home_dirs_swapped_groupowner.pass.sh -new file mode 100644 -index 0000000..3e5b778 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/file_groupownership_home_directories/tests/warning_home_dirs_swapped_groupowner.pass.sh -@@ -0,0 +1,12 @@ -+#!/bin/bash -+ -+USER1="cac_user1" -+USER2="cac_user2" -+ -+useradd -m $USER1 -+useradd -m $USER2 -+# Swap the group-ownership of two home directories -+# WARNING: This test scenario will report a false negative, as explained in the -+# warning section of this rule. -+chgrp $USER2 /home/$USER1 -+chgrp $USER1 /home/$USER2 -diff --git a/linux_os/guide/system/accounts/accounts-session/file_ownership_home_directories/ansible/shared.yml b/linux_os/guide/system/accounts/accounts-session/file_ownership_home_directories/ansible/shared.yml -new file mode 100644 -index 0000000..97d4274 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/file_ownership_home_directories/ansible/shared.yml -@@ -0,0 +1,31 @@ -+# platform = multi_platform_all -+# reboot = false -+# strategy = restrict -+# complexity = low -+# disruption = low -+ -+- name: Get all local users from /etc/passwd -+ ansible.builtin.getent: -+ database: passwd -+ split: ':' -+ -+- name: Create local_users variable from the getent output -+ ansible.builtin.set_fact: -+ local_users: '{{ ansible_facts.getent_passwd|dict2items }}' -+ -+- name: Test for existence home directories to avoid creating them, but only fixing ownership -+ ansible.builtin.stat: -+ path: '{{ item.value[4] }}' -+ register: path_exists -+ loop: '{{ local_users }}' -+ when: -+ - item.value[1]|int >= {{{ uid_min }}} -+ - item.value[1]|int != 65534 -+ -+- name: Ensure interactive local users are the owners of their respective home directories -+ ansible.builtin.file: -+ path: '{{ item.0.value[4] }}' -+ owner: '{{ item.0.value[1] }}' -+ loop: '{{ local_users|zip(path_exists.results)|list }}' -+ when: -+ - item.1.stat is defined and item.1.stat.exists -diff --git a/linux_os/guide/system/accounts/accounts-session/file_ownership_home_directories/bash/shared.sh b/linux_os/guide/system/accounts/accounts-session/file_ownership_home_directories/bash/shared.sh -new file mode 100644 -index 0000000..1d1e675 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/file_ownership_home_directories/bash/shared.sh -@@ -0,0 +1,7 @@ -+# platform = multi_platform_all -+# reboot = false -+# strategy = restrict -+# complexity = low -+# disruption = low -+ -+awk -F':' '{ if ($3 >= {{{ uid_min }}} && $3 != 65534) system("chown -f " $3" "$6) }' /etc/passwd -diff --git a/linux_os/guide/system/accounts/accounts-session/file_ownership_home_directories/oval/shared.xml b/linux_os/guide/system/accounts/accounts-session/file_ownership_home_directories/oval/shared.xml -new file mode 100644 -index 0000000..3d0b9ae ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/file_ownership_home_directories/oval/shared.xml -@@ -0,0 +1,142 @@ -+ -+ -+ -+ -+ {{{ oval_metadata("All interactive user's Home Directories must be owned by its user") }}} -+ -+ -+ -+ -+ -+ -+ -+ -+ nobody -+ state_file_ownership_home_directories_interactive_uids -+ -+ -+ -+ -+ {{{ uid_min }}} -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ var_file_ownership_home_directories_uids_count -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/linux_os/guide/system/accounts/accounts-session/file_ownership_home_directories/rule.yml b/linux_os/guide/system/accounts/accounts-session/file_ownership_home_directories/rule.yml -index 198a9be..042f484 100644 ---- a/linux_os/guide/system/accounts/accounts-session/file_ownership_home_directories/rule.yml -+++ b/linux_os/guide/system/accounts/accounts-session/file_ownership_home_directories/rule.yml -@@ -10,6 +10,10 @@ description: |- - the following command: -
      $ sudo chown USER /home/USER
      - -+ This rule ensures every home directory related to an interactive user is -+ owned by an interactive user. It also ensures that interactive users are -+ owners of one and only one home directory. -+ - rationale: |- - If a local interactive user does not own their home directory, unauthorized - users could access or modify the user's files, and the users may not be able to -@@ -31,3 +35,9 @@ ocil_clause: 'the user ownership is incorrect' - ocil: |- - To verify the home directory ownership, run the following command: -
      # ls -ld $(awk -F: '($3>=1000)&&($7 !~ /nologin/){print $6}' /etc/passwd)
      -+ -+warnings: -+ - general: |- -+ Due to OVAL limitation, this rule can report a false negative in a -+ specific situation where two interactive users swap the ownership of -+ their respective home directories. -diff --git a/linux_os/guide/system/accounts/accounts-session/file_ownership_home_directories/tests/expected_owner.pass.sh b/linux_os/guide/system/accounts/accounts-session/file_ownership_home_directories/tests/expected_owner.pass.sh -new file mode 100644 -index 0000000..585f759 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/file_ownership_home_directories/tests/expected_owner.pass.sh -@@ -0,0 +1,5 @@ -+#!/bin/bash -+ -+USER="cac_user" -+useradd -m $USER -+chown $USER /home/$USER -diff --git a/linux_os/guide/system/accounts/accounts-session/file_ownership_home_directories/tests/home_dir_absent.pass.sh b/linux_os/guide/system/accounts/accounts-session/file_ownership_home_directories/tests/home_dir_absent.pass.sh -new file mode 100644 -index 0000000..7c181af ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/file_ownership_home_directories/tests/home_dir_absent.pass.sh -@@ -0,0 +1,4 @@ -+#!/bin/bash -+ -+USER="cac_user" -+useradd -M $USER -diff --git a/linux_os/guide/system/accounts/accounts-session/file_ownership_home_directories/tests/home_dirs_all_absent.pass.sh b/linux_os/guide/system/accounts/accounts-session/file_ownership_home_directories/tests/home_dirs_all_absent.pass.sh -new file mode 100644 -index 0000000..af24025 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/file_ownership_home_directories/tests/home_dirs_all_absent.pass.sh -@@ -0,0 +1,6 @@ -+#!/bin/bash -+ -+USER="cac_user" -+useradd -M $USER -+# This make sure home dirs related to test environment users are also removed. -+rm -Rf /home/* -diff --git a/linux_os/guide/system/accounts/accounts-session/file_ownership_home_directories/tests/home_dirs_one_absent.pass.sh b/linux_os/guide/system/accounts/accounts-session/file_ownership_home_directories/tests/home_dirs_one_absent.pass.sh -new file mode 100644 -index 0000000..5bce517 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/file_ownership_home_directories/tests/home_dirs_one_absent.pass.sh -@@ -0,0 +1,7 @@ -+#!/bin/bash -+ -+USER1="cac_user1" -+USER2="cac_user2" -+ -+useradd -m $USER1 -+useradd -M $USER2 -diff --git a/linux_os/guide/system/accounts/accounts-session/file_ownership_home_directories/tests/home_dirs_with_same_owner.fail.sh b/linux_os/guide/system/accounts/accounts-session/file_ownership_home_directories/tests/home_dirs_with_same_owner.fail.sh -new file mode 100644 -index 0000000..e6aef9e ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/file_ownership_home_directories/tests/home_dirs_with_same_owner.fail.sh -@@ -0,0 +1,10 @@ -+#!/bin/bash -+ -+USER1="cac_user1" -+USER2="cac_user2" -+ -+useradd -m $USER1 -+useradd -m $USER2 -+# Define the same owner for two home directories -+chown $USER1 /home/$USER1 -+chown $USER1 /home/$USER2 -diff --git a/linux_os/guide/system/accounts/accounts-session/file_ownership_home_directories/tests/interactive_users_absent.pass.sh b/linux_os/guide/system/accounts/accounts-session/file_ownership_home_directories/tests/interactive_users_absent.pass.sh -new file mode 100644 -index 0000000..ed34f09 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/file_ownership_home_directories/tests/interactive_users_absent.pass.sh -@@ -0,0 +1,4 @@ -+#!/bin/bash -+ -+# remove all interactive users (ID >= 1000) from /etc/passwd -+sed -i '/.*:[0-9]\{4,\}:/d' /etc/passwd -diff --git a/linux_os/guide/system/accounts/accounts-session/file_ownership_home_directories/tests/unexpected_owner_system_id.fail.sh b/linux_os/guide/system/accounts/accounts-session/file_ownership_home_directories/tests/unexpected_owner_system_id.fail.sh -new file mode 100644 -index 0000000..011b315 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/file_ownership_home_directories/tests/unexpected_owner_system_id.fail.sh -@@ -0,0 +1,5 @@ -+#!/bin/bash -+ -+USER="cac_user" -+useradd -m $USER -+chown 2 /home/$USER -diff --git a/linux_os/guide/system/accounts/accounts-session/file_ownership_home_directories/tests/unexpected_owner_unknown_id.fail.sh b/linux_os/guide/system/accounts/accounts-session/file_ownership_home_directories/tests/unexpected_owner_unknown_id.fail.sh -new file mode 100644 -index 0000000..733af78 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/file_ownership_home_directories/tests/unexpected_owner_unknown_id.fail.sh -@@ -0,0 +1,5 @@ -+#!/bin/bash -+ -+USER="cac_user" -+useradd -m $USER -+chown 10005 /home/$USER -diff --git a/linux_os/guide/system/accounts/accounts-session/file_ownership_home_directories/tests/warning_home_dirs_crossed_owner.pass.sh b/linux_os/guide/system/accounts/accounts-session/file_ownership_home_directories/tests/warning_home_dirs_crossed_owner.pass.sh -new file mode 100644 -index 0000000..df5655f ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/file_ownership_home_directories/tests/warning_home_dirs_crossed_owner.pass.sh -@@ -0,0 +1,10 @@ -+#!/bin/bash -+ -+USER1="cac_user1" -+USER2="cac_user2" -+ -+useradd -m $USER1 -+useradd -m $USER2 -+# Define the same owner for two home directories -+chown $USER2 /home/$USER1 -+chown $USER1 /home/$USER2 -diff --git a/linux_os/guide/system/accounts/accounts-session/file_ownership_home_directories/tests/warning_home_dirs_swapped_owner.pass.sh b/linux_os/guide/system/accounts/accounts-session/file_ownership_home_directories/tests/warning_home_dirs_swapped_owner.pass.sh -new file mode 100644 -index 0000000..e9cfd5b ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/file_ownership_home_directories/tests/warning_home_dirs_swapped_owner.pass.sh -@@ -0,0 +1,12 @@ -+#!/bin/bash -+ -+USER1="cac_user1" -+USER2="cac_user2" -+ -+useradd -m $USER1 -+useradd -m $USER2 -+# Swap the ownership of two home directories -+# WARNING: This test scenario will report a false negative, as explained in the -+# warning section of this rule. -+chown $USER2 /home/$USER1 -+chown $USER1 /home/$USER2 -diff --git a/linux_os/guide/system/accounts/accounts-session/file_permissions_home_directories/ansible/shared.yml b/linux_os/guide/system/accounts/accounts-session/file_permissions_home_directories/ansible/shared.yml -new file mode 100644 -index 0000000..945ed7e ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/file_permissions_home_directories/ansible/shared.yml -@@ -0,0 +1,31 @@ -+# platform = multi_platform_all -+# reboot = false -+# strategy = restrict -+# complexity = low -+# disruption = low -+ -+- name: Get all local users from /etc/passwd -+ ansible.builtin.getent: -+ database: passwd -+ split: ':' -+ -+- name: Create local_users variable from the getent output -+ ansible.builtin.set_fact: -+ local_users: '{{ ansible_facts.getent_passwd|dict2items }}' -+ -+- name: Test for existence home directories to avoid creating them, but only fixing group ownership -+ ansible.builtin.stat: -+ path: '{{ item.value[4] }}' -+ register: path_exists -+ loop: '{{ local_users }}' -+ when: -+ - item.value[2]|int >= {{{ uid_min }}} -+ - item.value[2]|int != 65534 -+ -+- name: Ensure interactive local users are the group-owners of their respective home directories -+ ansible.builtin.file: -+ path: '{{ item.0.value[4] }}' -+ mode: '0700' -+ loop: '{{ local_users|zip(path_exists.results)|list }}' -+ when: -+ - item.1.stat is defined and item.1.stat.exists -diff --git a/linux_os/guide/system/accounts/accounts-session/file_permissions_home_directories/bash/shared.sh b/linux_os/guide/system/accounts/accounts-session/file_permissions_home_directories/bash/shared.sh -new file mode 100644 -index 0000000..4ebc674 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/file_permissions_home_directories/bash/shared.sh -@@ -0,0 +1,7 @@ -+# platform = multi_platform_all -+# reboot = false -+# strategy = restrict -+# complexity = low -+# disruption = low -+ -+awk -F':' '{ if ($4 >= {{{ uid_min }}} && $4 != 65534) system("chmod -f 700 "$6) }' /etc/passwd -diff --git a/linux_os/guide/system/accounts/accounts-session/file_permissions_home_directories/oval/shared.xml b/linux_os/guide/system/accounts/accounts-session/file_permissions_home_directories/oval/shared.xml -new file mode 100644 -index 0000000..0cb261e ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/file_permissions_home_directories/oval/shared.xml -@@ -0,0 +1,51 @@ -+ -+ -+ {{{ oval_metadata("All Interactive User Home Directories Must Have mode 0750 Or Less Permissive") }}} -+ -+ -+ -+ -+ -+ -+ -+ nobody -+ state_file_permissions_home_directories_interactive_uids -+ -+ -+ -+ {{{ uid_min }}} -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ directory -+ false -+ false -+ false -+ false -+ false -+ false -+ false -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/linux_os/guide/system/accounts/accounts-session/file_permissions_home_directories/tests/acceptable_permission.pass.sh b/linux_os/guide/system/accounts/accounts-session/file_permissions_home_directories/tests/acceptable_permission.pass.sh -new file mode 100644 -index 0000000..aaf939e ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/file_permissions_home_directories/tests/acceptable_permission.pass.sh -@@ -0,0 +1,5 @@ -+#!/bin/bash -+ -+USER="cac_user" -+useradd -m $USER -+chmod 750 /home/$USER -diff --git a/linux_os/guide/system/accounts/accounts-session/file_permissions_home_directories/tests/expected_permissions.pass.sh b/linux_os/guide/system/accounts/accounts-session/file_permissions_home_directories/tests/expected_permissions.pass.sh -new file mode 100644 -index 0000000..5dfd426 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/file_permissions_home_directories/tests/expected_permissions.pass.sh -@@ -0,0 +1,5 @@ -+#!/bin/bash -+ -+USER="cac_user" -+useradd -m $USER -+chmod 700 /home/$USER -diff --git a/linux_os/guide/system/accounts/accounts-session/file_permissions_home_directories/tests/home_dirs_absent.pass.sh b/linux_os/guide/system/accounts/accounts-session/file_permissions_home_directories/tests/home_dirs_absent.pass.sh -new file mode 100644 -index 0000000..af24025 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/file_permissions_home_directories/tests/home_dirs_absent.pass.sh -@@ -0,0 +1,6 @@ -+#!/bin/bash -+ -+USER="cac_user" -+useradd -M $USER -+# This make sure home dirs related to test environment users are also removed. -+rm -Rf /home/* -diff --git a/linux_os/guide/system/accounts/accounts-session/file_permissions_home_directories/tests/interactive_users_absent.pass.sh b/linux_os/guide/system/accounts/accounts-session/file_permissions_home_directories/tests/interactive_users_absent.pass.sh -new file mode 100644 -index 0000000..ed34f09 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/file_permissions_home_directories/tests/interactive_users_absent.pass.sh -@@ -0,0 +1,4 @@ -+#!/bin/bash -+ -+# remove all interactive users (ID >= 1000) from /etc/passwd -+sed -i '/.*:[0-9]\{4,\}:/d' /etc/passwd -diff --git a/linux_os/guide/system/accounts/accounts-session/file_permissions_home_directories/tests/lenient_permission.fail.sh b/linux_os/guide/system/accounts/accounts-session/file_permissions_home_directories/tests/lenient_permission.fail.sh -new file mode 100644 -index 0000000..2f337d2 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/file_permissions_home_directories/tests/lenient_permission.fail.sh -@@ -0,0 +1,5 @@ -+#!/bin/bash -+ -+USER="cac_user" -+useradd -m $USER -+chmod 755 /home/$USER -diff --git a/ssg/constants.py b/ssg/constants.py -index e2d3077..64e2712 100644 ---- a/ssg/constants.py -+++ b/ssg/constants.py -@@ -380,6 +380,7 @@ MAKEFILE_ID_TO_PRODUCT_MAP = { - - - # Application constants -+DEFAULT_GID_MIN = 1000 - DEFAULT_UID_MIN = 1000 - DEFAULT_GRUB2_BOOT_PATH = '/boot/grub2' - DEFAULT_DCONF_GDM_DIR = 'gdm.d' -diff --git a/ssg/products.py b/ssg/products.py -index 25178b7..e410e06 100644 ---- a/ssg/products.py -+++ b/ssg/products.py -@@ -7,6 +7,7 @@ from glob import glob - - from .build_cpe import ProductCPEs - from .constants import (product_directories, -+ DEFAULT_GID_MIN, - DEFAULT_UID_MIN, - DEFAULT_GRUB2_BOOT_PATH, - DEFAULT_DCONF_GDM_DIR, -@@ -39,6 +40,9 @@ def _get_implied_properties(existing_properties): - if pkg_manager in PKG_MANAGER_TO_CONFIG_FILE: - result["pkg_manager_config_file"] = PKG_MANAGER_TO_CONFIG_FILE[pkg_manager] - -+ if "gid_min" not in existing_properties: -+ result["gid_min"] = DEFAULT_GID_MIN -+ - if "uid_min" not in existing_properties: - result["uid_min"] = DEFAULT_UID_MIN - diff --git a/SOURCES/scap-security-guide-0.1.59-BZ1884687B-PR_7790.patch b/SOURCES/scap-security-guide-0.1.59-BZ1884687B-PR_7790.patch deleted file mode 100644 index 72ffff6..0000000 --- a/SOURCES/scap-security-guide-0.1.59-BZ1884687B-PR_7790.patch +++ /dev/null @@ -1,507 +0,0 @@ -From 5ec53805a4aaf04752400eef826ff49222c0a3ba Mon Sep 17 00:00:00 2001 -From: Marcus Burghardt -Date: Wed, 20 Oct 2021 16:17:01 +0200 -Subject: [PATCH 1/3] OVAL, tests and remediation for the rule: - -accounts_user_interactive_home_directory_defined ---- - .../ansible/shared.yml | 24 +++++++++++++ - .../bash/shared.sh | 9 +++++ - .../oval/shared.xml | 36 +++++++++++++++++++ - .../tests/home_dir_all_empty.fail.sh | 6 ++++ - .../tests/home_dir_not_exclusive.fail.sh | 6 ++++ - .../tests/home_dir_one_empty.fail.sh | 8 +++++ - .../tests/home_dir_properly_defined.pass.sh | 4 +++ - .../tests/home_dir_root.fail.sh | 6 ++++ - .../tests/interactive_users_absent.pass.sh | 4 +++ - 9 files changed, 103 insertions(+) - create mode 100644 linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_defined/ansible/shared.yml - create mode 100644 linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_defined/bash/shared.sh - create mode 100644 linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_defined/oval/shared.xml - create mode 100644 linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_defined/tests/home_dir_all_empty.fail.sh - create mode 100644 linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_defined/tests/home_dir_not_exclusive.fail.sh - create mode 100644 linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_defined/tests/home_dir_one_empty.fail.sh - create mode 100644 linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_defined/tests/home_dir_properly_defined.pass.sh - create mode 100644 linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_defined/tests/home_dir_root.fail.sh - create mode 100644 linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_defined/tests/interactive_users_absent.pass.sh - -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_defined/ansible/shared.yml b/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_defined/ansible/shared.yml -new file mode 100644 -index 00000000000..fc9b780daa8 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_defined/ansible/shared.yml -@@ -0,0 +1,24 @@ -+# platform = multi_platform_all -+# reboot = false -+# strategy = restrict -+# complexity = low -+# disruption = low -+ -+- name: Get all local users from /etc/passwd -+ ansible.builtin.getent: -+ database: passwd -+ split: ':' -+ -+- name: Create local_users variable from the getent output -+ ansible.builtin.set_fact: -+ local_users: '{{ ansible_facts.getent_passwd|dict2items }}' -+ -+- name: Ensure interactive users have a home directory defined -+ ansible.builtin.user: -+ name: '{{ item.key }}' -+ home: '/home/{{ item.key }}' -+ create_home: no -+ loop: '{{ local_users }}' -+ when: -+ - item.value[2]|int >= {{{ uid_min }}} -+ - item.value[2]|int != 65534 -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_defined/bash/shared.sh b/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_defined/bash/shared.sh -new file mode 100644 -index 00000000000..23b0a85aa6a ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_defined/bash/shared.sh -@@ -0,0 +1,9 @@ -+# platform = multi_platform_all -+# reboot = false -+# strategy = restrict -+# complexity = low -+# disruption = low -+ -+for user in `awk -F':' '{ if ($4 >= {{{ uid_min }}} && $4 != 65534) print $1 }' /etc/passwd`; do -+ sed -i "s/\($user:x:[0-9]*:[0-9]*:.*:\).*\(:.*\)$/\1\/home\/$user\2/g" /etc/passwd; -+done -\ No newline at end of file -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_defined/oval/shared.xml b/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_defined/oval/shared.xml -new file mode 100644 -index 00000000000..5efb84ab2cf ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_defined/oval/shared.xml -@@ -0,0 +1,36 @@ -+ -+ -+ {{{ oval_metadata("All Interactive Users Must Have A Home Directory Defined") }}} -+ -+ -+ -+ -+ -+ -+ -+ nobody -+ state_accounts_user_interactive_home_directory_defined_uids -+ -+ -+ -+ {{{ uid_min }}} -+ -+ -+ -+ -+ ^\/\w*\/\w{1,}[\/\w]*$ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_defined/tests/home_dir_all_empty.fail.sh b/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_defined/tests/home_dir_all_empty.fail.sh -new file mode 100644 -index 00000000000..4bc9e10a21c ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_defined/tests/home_dir_all_empty.fail.sh -@@ -0,0 +1,6 @@ -+#!/bin/bash -+ -+USER="cac_user" -+useradd -M $USER -+ -+sed -i "s/\(.*:x:[0-9]\{4,\}:[0-9]*:.*:\).*\(:.*\)$/\1\2/g" /etc/passwd -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_defined/tests/home_dir_not_exclusive.fail.sh b/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_defined/tests/home_dir_not_exclusive.fail.sh -new file mode 100644 -index 00000000000..5c905e03791 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_defined/tests/home_dir_not_exclusive.fail.sh -@@ -0,0 +1,6 @@ -+#!/bin/bash -+ -+USER="cac_user" -+useradd -M $USER -+ -+sed -i 's/\(.*:x:[0-9]\{4,\}:[0-9]*:.*:\).*\(:.*\)$/\1\/tmp\2/g' /etc/passwd -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_defined/tests/home_dir_one_empty.fail.sh b/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_defined/tests/home_dir_one_empty.fail.sh -new file mode 100644 -index 00000000000..00d37799c77 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_defined/tests/home_dir_one_empty.fail.sh -@@ -0,0 +1,8 @@ -+#!/bin/bash -+ -+USER1="cac_user1" -+USER2="cac_user2" -+useradd -M $USER1 -+useradd -M $USER2 -+ -+sed -i "s/\($USER1:x:[0-9]*:[0-9]*:.*:\).*\(:.*\)$/\1\2/g" /etc/passwd -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_defined/tests/home_dir_properly_defined.pass.sh b/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_defined/tests/home_dir_properly_defined.pass.sh -new file mode 100644 -index 00000000000..7c181afdd4b ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_defined/tests/home_dir_properly_defined.pass.sh -@@ -0,0 +1,4 @@ -+#!/bin/bash -+ -+USER="cac_user" -+useradd -M $USER -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_defined/tests/home_dir_root.fail.sh b/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_defined/tests/home_dir_root.fail.sh -new file mode 100644 -index 00000000000..16bb94477bc ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_defined/tests/home_dir_root.fail.sh -@@ -0,0 +1,6 @@ -+#!/bin/bash -+ -+USER="cac_user" -+useradd -M $USER -+ -+sed -i "s/\($USER:x:[0-9]*:[0-9]*:.*:\).*\(:.*\)$/\1\/\2/g" /etc/passwd -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_defined/tests/interactive_users_absent.pass.sh b/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_defined/tests/interactive_users_absent.pass.sh -new file mode 100644 -index 00000000000..ed34f0940a7 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_defined/tests/interactive_users_absent.pass.sh -@@ -0,0 +1,4 @@ -+#!/bin/bash -+ -+# remove all interactive users (ID >= 1000) from /etc/passwd -+sed -i '/.*:[0-9]\{4,\}:/d' /etc/passwd - -From 47cf69c176ce8e7ec1922bf8cdcd1d35b02552c9 Mon Sep 17 00:00:00 2001 -From: Marcus Burghardt -Date: Tue, 26 Oct 2021 14:39:11 +0200 -Subject: [PATCH 2/3] OVAL, tests and remediation for the rule: - -accounts_user_interactive_home_directory_exists ---- - .../bash/shared.sh | 2 +- - .../ansible/shared.yml | 24 +++++ - .../bash/shared.sh | 9 ++ - .../oval/shared.xml | 91 +++++++++++++++++++ - .../tests/home_dir_present.pass.sh | 10 ++ - .../tests/home_dirs_all_absent.fail.sh | 6 ++ - .../tests/home_dirs_one_absent.fail.sh | 7 ++ - .../tests/interactive_users_absent.pass.sh | 4 + - 8 files changed, 152 insertions(+), 1 deletion(-) - create mode 100644 linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_exists/ansible/shared.yml - create mode 100644 linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_exists/bash/shared.sh - create mode 100644 linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_exists/oval/shared.xml - create mode 100644 linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_exists/tests/home_dir_present.pass.sh - create mode 100644 linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_exists/tests/home_dirs_all_absent.fail.sh - create mode 100644 linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_exists/tests/home_dirs_one_absent.fail.sh - create mode 100644 linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_exists/tests/interactive_users_absent.pass.sh - -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_defined/bash/shared.sh b/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_defined/bash/shared.sh -index 23b0a85aa6a..94f8a579f1f 100644 ---- a/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_defined/bash/shared.sh -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_defined/bash/shared.sh -@@ -6,4 +6,4 @@ - - for user in `awk -F':' '{ if ($4 >= {{{ uid_min }}} && $4 != 65534) print $1 }' /etc/passwd`; do - sed -i "s/\($user:x:[0-9]*:[0-9]*:.*:\).*\(:.*\)$/\1\/home\/$user\2/g" /etc/passwd; --done -\ No newline at end of file -+done -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_exists/ansible/shared.yml b/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_exists/ansible/shared.yml -new file mode 100644 -index 00000000000..e7acc477d25 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_exists/ansible/shared.yml -@@ -0,0 +1,24 @@ -+# platform = multi_platform_all -+# reboot = false -+# strategy = restrict -+# complexity = low -+# disruption = low -+ -+- name: Get all local users from /etc/passwd -+ ansible.builtin.getent: -+ database: passwd -+ split: ':' -+ -+- name: Create local_users variable from the getent output -+ ansible.builtin.set_fact: -+ local_users: '{{ ansible_facts.getent_passwd|dict2items }}' -+ -+- name: Ensure interactive users have a home directory defined -+ ansible.builtin.user: -+ name: '{{ item.key }}' -+ home: '/home/{{ item.key }}' -+ create_home: yes -+ loop: '{{ local_users }}' -+ when: -+ - item.value[2]|int >= {{{ uid_min }}} -+ - item.value[2]|int != 65534 -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_exists/bash/shared.sh b/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_exists/bash/shared.sh -new file mode 100644 -index 00000000000..044b650f103 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_exists/bash/shared.sh -@@ -0,0 +1,9 @@ -+# platform = multi_platform_all -+# reboot = false -+# strategy = restrict -+# complexity = low -+# disruption = low -+ -+for user in $(awk -F':' '{ if ($4 >= {{{ uid_min }}} && $4 != 65534) print $1}' /etc/passwd); do -+ mkhomedir_helper $user 0077; -+done -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_exists/oval/shared.xml b/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_exists/oval/shared.xml -new file mode 100644 -index 00000000000..0a5b313f5b4 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_exists/oval/shared.xml -@@ -0,0 +1,91 @@ -+ -+ -+ {{{ oval_metadata("All Interactive Users Home Directories Must Exist") }}} -+ -+ -+ -+ -+ -+ -+ -+ -+ nobody -+ state_accounts_user_interactive_home_directory_exists_uids -+ -+ -+ -+ {{{ uid_min }}} -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ var_accounts_user_interactive_home_directory_exists_dirs_count_fs -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ var_accounts_user_interactive_home_directory_exists_dirs_count -+ -+ -+ -+ -+ -+ -+ -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_exists/tests/home_dir_present.pass.sh b/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_exists/tests/home_dir_present.pass.sh -new file mode 100644 -index 00000000000..d5434cbe4f5 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_exists/tests/home_dir_present.pass.sh -@@ -0,0 +1,10 @@ -+#!/bin/bash -+ -+USER="cac_user" -+useradd -m $USER -+ -+# This is to make sure that any possible user create in the test environment has also -+# a home dir created on the system. -+for user in $(awk -F':' '{ if ($4 >= {{{ uid_min }}} && $4 != 65534) print $1}' /etc/passwd); do -+ mkhomedir_helper $user 0077; -+done -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_exists/tests/home_dirs_all_absent.fail.sh b/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_exists/tests/home_dirs_all_absent.fail.sh -new file mode 100644 -index 00000000000..af240252de3 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_exists/tests/home_dirs_all_absent.fail.sh -@@ -0,0 +1,6 @@ -+#!/bin/bash -+ -+USER="cac_user" -+useradd -M $USER -+# This make sure home dirs related to test environment users are also removed. -+rm -Rf /home/* -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_exists/tests/home_dirs_one_absent.fail.sh b/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_exists/tests/home_dirs_one_absent.fail.sh -new file mode 100644 -index 00000000000..5bce517215c ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_exists/tests/home_dirs_one_absent.fail.sh -@@ -0,0 +1,7 @@ -+#!/bin/bash -+ -+USER1="cac_user1" -+USER2="cac_user2" -+ -+useradd -m $USER1 -+useradd -M $USER2 -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_exists/tests/interactive_users_absent.pass.sh b/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_exists/tests/interactive_users_absent.pass.sh -new file mode 100644 -index 00000000000..ed34f0940a7 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_exists/tests/interactive_users_absent.pass.sh -@@ -0,0 +1,4 @@ -+#!/bin/bash -+ -+# remove all interactive users (ID >= 1000) from /etc/passwd -+sed -i '/.*:[0-9]\{4,\}:/d' /etc/passwd - -From 0d6a5e588d71e927291641cbf2a23259995f0b2d Mon Sep 17 00:00:00 2001 -From: Marcus Burghardt -Date: Mon, 8 Nov 2021 15:09:12 +0100 -Subject: [PATCH 3/3] Improved the remediation and rule description - -Included conditional on remediation to make sure that -already compliant home directories are skipped. ---- - .../ansible/shared.yml | 3 ++- - .../bash/shared.sh | 7 +++++-- - .../rule.yml | 5 +++++ - .../tests/home_dir_defined_out_home.pass.sh | 4 ++++ - .../ansible/shared.yml | 3 +-- - 5 files changed, 17 insertions(+), 5 deletions(-) - create mode 100644 linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_defined/tests/home_dir_defined_out_home.pass.sh - -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_defined/ansible/shared.yml b/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_defined/ansible/shared.yml -index fc9b780daa8..13fbdd1ca44 100644 ---- a/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_defined/ansible/shared.yml -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_defined/ansible/shared.yml -@@ -13,7 +13,7 @@ - ansible.builtin.set_fact: - local_users: '{{ ansible_facts.getent_passwd|dict2items }}' - --- name: Ensure interactive users have a home directory defined -+- name: Ensure interactive users have an exclusive home directory defined - ansible.builtin.user: - name: '{{ item.key }}' - home: '/home/{{ item.key }}' -@@ -22,3 +22,4 @@ - when: - - item.value[2]|int >= {{{ uid_min }}} - - item.value[2]|int != 65534 -+ - not item.value[4] | regex_search('^\/\w*\/\w{1,}') -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_defined/bash/shared.sh b/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_defined/bash/shared.sh -index 94f8a579f1f..7fac61d4892 100644 ---- a/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_defined/bash/shared.sh -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_defined/bash/shared.sh -@@ -4,6 +4,9 @@ - # complexity = low - # disruption = low - --for user in `awk -F':' '{ if ($4 >= {{{ uid_min }}} && $4 != 65534) print $1 }' /etc/passwd`; do -- sed -i "s/\($user:x:[0-9]*:[0-9]*:.*:\).*\(:.*\)$/\1\/home\/$user\2/g" /etc/passwd; -+for user in $(awk -F':' '{ if ($4 >= {{{ uid_min }}} && $4 != 65534) print $1 }' /etc/passwd); do -+ # This follows the same logic of evaluation of home directories as used in OVAL. -+ if ! grep -q $user /etc/passwd | cut -d: -f6 | grep '^\/\w*\/\w\{1,\}'; then -+ sed -i "s/\($user:x:[0-9]*:[0-9]*:.*:\).*\(:.*\)$/\1\/home\/$user\2/g" /etc/passwd; -+ fi - done -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_defined/rule.yml b/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_defined/rule.yml -index 20d26032338..b58164c5403 100644 ---- a/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_defined/rule.yml -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_defined/rule.yml -@@ -8,6 +8,11 @@ description: |- - Assign home directories to all interactive users that currently do not - have a home directory assigned. - -+ This rule checks if the home directory is properly defined in a folder which has -+ at least one parent folder, like "user" in "/home/user" or "/remote/users/user". -+ Therefore, this rule will report a finding for home directories like /users, -+ /tmp or /. -+ - rationale: |- - 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. -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_defined/tests/home_dir_defined_out_home.pass.sh b/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_defined/tests/home_dir_defined_out_home.pass.sh -new file mode 100644 -index 00000000000..c7100f304ca ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_defined/tests/home_dir_defined_out_home.pass.sh -@@ -0,0 +1,4 @@ -+#!/bin/bash -+ -+USER="cac_user" -+useradd -M -d /data/$USER $USER -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_exists/ansible/shared.yml b/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_exists/ansible/shared.yml -index e7acc477d25..84382a7f488 100644 ---- a/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_exists/ansible/shared.yml -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_user_interactive_home_directory_exists/ansible/shared.yml -@@ -13,10 +13,9 @@ - ansible.builtin.set_fact: - local_users: '{{ ansible_facts.getent_passwd|dict2items }}' - --- name: Ensure interactive users have a home directory defined -+- name: Ensure interactive users have a home directory exists - ansible.builtin.user: - name: '{{ item.key }}' -- home: '/home/{{ item.key }}' - create_home: yes - loop: '{{ local_users }}' - when: diff --git a/SOURCES/scap-security-guide-0.1.59-BZ1884687C-PR_7824.patch b/SOURCES/scap-security-guide-0.1.59-BZ1884687C-PR_7824.patch deleted file mode 100644 index 631b6b5..0000000 --- a/SOURCES/scap-security-guide-0.1.59-BZ1884687C-PR_7824.patch +++ /dev/null @@ -1,662 +0,0 @@ -commit dc273bb872cc53f2d52af4396f4d3bba0acc178f -Author: Gabriel Becker -Date: Thu Feb 24 17:30:42 2022 +0100 - - Manual edited patch scap-security-guide-0.1.59-BZ1884687C-PR_7824.patch. - -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_groupownership/ansible/shared.yml b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_groupownership/ansible/shared.yml -new file mode 100644 -index 0000000..ff41e19 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_groupownership/ansible/shared.yml -@@ -0,0 +1,32 @@ -+# platform = multi_platform_all -+# reboot = false -+# strategy = restrict -+# complexity = low -+# disruption = low -+ -+- name: Get all local users from /etc/passwd -+ ansible.builtin.getent: -+ database: passwd -+ split: ':' -+ -+- name: Create local_users variable from the getent output -+ ansible.builtin.set_fact: -+ local_users: '{{ ansible_facts.getent_passwd|dict2items }}' -+ -+- name: Test for existence home directories to avoid creating them, but only fixing ownership -+ ansible.builtin.stat: -+ path: '{{ item.value[4] }}' -+ register: path_exists -+ loop: '{{ local_users }}' -+ when: -+ - item.value[2]|int >= {{{ gid_min }}} -+ - item.value[2]|int != 65534 -+ -+- name: Ensure interactive local users are the owners of their respective home directories -+ ansible.builtin.file: -+ path: '{{ item.0.value[4] }}' -+ group: '{{ item.0.value[2] }}' -+ recurse: yes -+ loop: '{{ local_users|zip(path_exists.results)|list }}' -+ when: -+ - item.1.stat is defined and item.1.stat.exists -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_groupownership/bash/shared.sh b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_groupownership/bash/shared.sh -new file mode 100644 -index 0000000..e392d2f ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_groupownership/bash/shared.sh -@@ -0,0 +1,14 @@ -+# platform = multi_platform_all -+# reboot = false -+# strategy = restrict -+# complexity = low -+# disruption = low -+ -+for user in $(awk -F':' '{ if ($4 >= {{{ gid_min }}} && $4 != 65534) print $1 }' /etc/passwd); do -+ home_dir=$(getent passwd $user | cut -d: -f6) -+ group=$(getent passwd $user | cut -d: -f4) -+ # Only update the group-ownership when necessary. This will avoid changing the inode timestamp -+ # when the group is already defined as expected, therefore not impacting in possible integrity -+ # check systems that also check inodes timestamps. -+ find $home_dir -not -group $group -exec chgrp -f $group {} \; -+done -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_groupownership/oval/shared.xml b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_groupownership/oval/shared.xml -new file mode 100644 -index 0000000..1fd016a ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_groupownership/oval/shared.xml -@@ -0,0 +1,52 @@ -+ -+ -+ {{{ oval_metadata("All User Files and Directories In The Home Directory Must Be Group-Owned By The Primary User") }}} -+ -+ -+ -+ -+ -+ -+ nobody -+ state_accounts_users_home_files_groupownership_interactive_gids -+ -+ -+ -+ {{{ gid_min }}} -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ .* -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_groupownership/rule.yml b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_groupownership/rule.yml -index 1c0f93a..31a0f1d 100644 ---- a/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_groupownership/rule.yml -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_groupownership/rule.yml -@@ -10,6 +10,9 @@ description: |- - local interactive users files and directories, use the following command: -
      $ sudo chgrp USER_GROUP /home/USER/FILE_DIR
      - -+ This rule ensures every file or directory under the home directory related -+ to an interactive user is group-owned by an interactive user. -+ - rationale: |- - If a local interactive users files are group-owned by a group of which the - user is not a member, unintended users may be able to access them. -@@ -33,3 +36,9 @@ ocil: |- - group-owned by a group the user is a member of, run the - following command: -
      $ sudo ls -lLR /home/USER
      -+ -+warnings: -+ - general: |- -+ Due to OVAL limitation, this rule can report a false negative in a -+ specific situation where two interactive users swap the group-ownership -+ of folders or files in their respective home directories. -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_groupownership/tests/expected_groupowner.pass.sh b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_groupownership/tests/expected_groupowner.pass.sh -new file mode 100644 -index 0000000..8538430 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_groupownership/tests/expected_groupowner.pass.sh -@@ -0,0 +1,6 @@ -+#!/bin/bash -+ -+USER="cac_user" -+useradd -m $USER -+echo "$USER" > /home/$USER/$USER.txt -+chgrp -f $USER /home/$USER/$USER.txt -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_groupownership/tests/home_dirs_all_absent.pass.sh b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_groupownership/tests/home_dirs_all_absent.pass.sh -new file mode 100644 -index 0000000..af24025 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_groupownership/tests/home_dirs_all_absent.pass.sh -@@ -0,0 +1,6 @@ -+#!/bin/bash -+ -+USER="cac_user" -+useradd -M $USER -+# This make sure home dirs related to test environment users are also removed. -+rm -Rf /home/* -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_groupownership/tests/home_dirs_one_absent.pass.sh b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_groupownership/tests/home_dirs_one_absent.pass.sh -new file mode 100644 -index 0000000..5bce517 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_groupownership/tests/home_dirs_one_absent.pass.sh -@@ -0,0 +1,7 @@ -+#!/bin/bash -+ -+USER1="cac_user1" -+USER2="cac_user2" -+ -+useradd -m $USER1 -+useradd -M $USER2 -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_groupownership/tests/interactive_users_absent.pass.sh b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_groupownership/tests/interactive_users_absent.pass.sh -new file mode 100644 -index 0000000..ed34f09 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_groupownership/tests/interactive_users_absent.pass.sh -@@ -0,0 +1,4 @@ -+#!/bin/bash -+ -+# remove all interactive users (ID >= 1000) from /etc/passwd -+sed -i '/.*:[0-9]\{4,\}:/d' /etc/passwd -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_groupownership/tests/unexpected_groupowner_system_gid.fail.sh b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_groupownership/tests/unexpected_groupowner_system_gid.fail.sh -new file mode 100644 -index 0000000..f105723 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_groupownership/tests/unexpected_groupowner_system_gid.fail.sh -@@ -0,0 +1,6 @@ -+#!/bin/bash -+ -+USER="cac_user" -+useradd -m $USER -+echo "$USER" > /home/$USER/$USER.txt -+chgrp 2 /home/$USER/$USER.txt -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_groupownership/tests/unexpected_groupowner_unknown_gid.fail.sh b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_groupownership/tests/unexpected_groupowner_unknown_gid.fail.sh -new file mode 100644 -index 0000000..00fa481 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_groupownership/tests/unexpected_groupowner_unknown_gid.fail.sh -@@ -0,0 +1,6 @@ -+#!/bin/bash -+ -+USER="cac_user" -+useradd -m $USER -+echo "$USER" > /home/$USER/$USER.txt -+chgrp 10005 /home/$USER/$USER.txt -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_groupownership/tests/warning_home_dirs_swapped_groupowner.pass.sh b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_groupownership/tests/warning_home_dirs_swapped_groupowner.pass.sh -new file mode 100644 -index 0000000..052aa7c ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_groupownership/tests/warning_home_dirs_swapped_groupowner.pass.sh -@@ -0,0 +1,14 @@ -+#!/bin/bash -+ -+USER1="cac_user1" -+USER2="cac_user2" -+ -+useradd -m $USER1 -+useradd -m $USER2 -+echo "$USER1" > /home/$USER1/$USER1.txt -+echo "$USER2" > /home/$USER2/$USER2.txt -+# Swap the ownership of files in two home directories -+# WARNING: This test scenario will report a false negative, as explained in the -+# warning section of this rule. -+chgrp -f $USER2 /home/$USER1/$USER1.txt -+chgrp -f $USER1 /home/$USER2/$USER2.txt -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_ownership/ansible/shared.yml b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_ownership/ansible/shared.yml -new file mode 100644 -index 0000000..40a0579 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_ownership/ansible/shared.yml -@@ -0,0 +1,32 @@ -+# platform = multi_platform_all -+# reboot = false -+# strategy = restrict -+# complexity = low -+# disruption = low -+ -+- name: Get all local users from /etc/passwd -+ ansible.builtin.getent: -+ database: passwd -+ split: ':' -+ -+- name: Create local_users variable from the getent output -+ ansible.builtin.set_fact: -+ local_users: '{{ ansible_facts.getent_passwd|dict2items }}' -+ -+- name: Test for existence home directories to avoid creating them, but only fixing ownership -+ ansible.builtin.stat: -+ path: '{{ item.value[4] }}' -+ register: path_exists -+ loop: '{{ local_users }}' -+ when: -+ - item.value[1]|int >= {{{ uid_min }}} -+ - item.value[1]|int != 65534 -+ -+- name: Ensure interactive local users are the owners of their respective home directories -+ ansible.builtin.file: -+ path: '{{ item.0.value[4] }}' -+ owner: '{{ item.0.value[1] }}' -+ recurse: yes -+ loop: '{{ local_users|zip(path_exists.results)|list }}' -+ when: -+ - item.1.stat is defined and item.1.stat.exists -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_ownership/bash/shared.sh b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_ownership/bash/shared.sh -new file mode 100644 -index 0000000..236c800 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_ownership/bash/shared.sh -@@ -0,0 +1,13 @@ -+# platform = multi_platform_all -+# reboot = false -+# strategy = restrict -+# complexity = low -+# disruption = low -+ -+for user in $(awk -F':' '{ if ($3 >= {{{ uid_min }}} && $3 != 65534) print $1 }' /etc/passwd); do -+ home_dir=$(getent passwd $user | cut -d: -f6) -+ # Only update the ownership when necessary. This will avoid changing the inode timestamp -+ # when the owner is already defined as expected, therefore not impacting in possible integrity -+ # check systems that also check inodes timestamps. -+ find $home_dir -not -user $user -exec chown -f $user {} \; -+done -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_ownership/oval/shared.xml b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_ownership/oval/shared.xml -new file mode 100644 -index 0000000..1850cfb ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_ownership/oval/shared.xml -@@ -0,0 +1,52 @@ -+ -+ -+ {{{ oval_metadata("All User Files and Directories In The Home Directory Must Have a Valid Owner") }}} -+ -+ -+ -+ -+ -+ -+ nobody -+ state_accounts_users_home_files_ownership_interactive_uids -+ -+ -+ -+ {{{ uid_min }}} -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ .* -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_ownership/rule.yml b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_ownership/rule.yml -index 13f6bfe..5bfb388 100644 ---- a/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_ownership/rule.yml -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_ownership/rule.yml -@@ -10,6 +10,9 @@ description: |- - directories, use the following command: -
      $ sudo chown -R USER /home/USER
      - -+ This rule ensures every file or directory under the home directory related -+ to an interactive user is owned by an interactive user. -+ - rationale: |- - If local interactive users do not own the files in their directories, - unauthorized users may be able to access them. Additionally, if files are not -@@ -34,3 +37,9 @@ ocil: |- - To verify all files and directories in interactive users home directory - are owned by the user, run the following command: -
      $ sudo ls -lLR /home/USER
      -+ -+warnings: -+ - general: |- -+ Due to OVAL limitation, this rule can report a false negative in a -+ specific situation where two interactive users swap the ownership of -+ folders or files in their respective home directories. -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_ownership/tests/expected_owner.pass.sh b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_ownership/tests/expected_owner.pass.sh -new file mode 100644 -index 0000000..da68cb4 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_ownership/tests/expected_owner.pass.sh -@@ -0,0 +1,6 @@ -+#!/bin/bash -+ -+USER="cac_user" -+useradd -m $USER -+echo "$USER" > /home/$USER/$USER.txt -+chown $USER /home/$USER/$USER.txt -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_ownership/tests/home_dirs_all_absent.pass.sh b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_ownership/tests/home_dirs_all_absent.pass.sh -new file mode 100644 -index 0000000..af24025 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_ownership/tests/home_dirs_all_absent.pass.sh -@@ -0,0 +1,6 @@ -+#!/bin/bash -+ -+USER="cac_user" -+useradd -M $USER -+# This make sure home dirs related to test environment users are also removed. -+rm -Rf /home/* -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_ownership/tests/home_dirs_one_absent.pass.sh b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_ownership/tests/home_dirs_one_absent.pass.sh -new file mode 100644 -index 0000000..5bce517 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_ownership/tests/home_dirs_one_absent.pass.sh -@@ -0,0 +1,7 @@ -+#!/bin/bash -+ -+USER1="cac_user1" -+USER2="cac_user2" -+ -+useradd -m $USER1 -+useradd -M $USER2 -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_ownership/tests/interactive_users_absent.pass.sh b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_ownership/tests/interactive_users_absent.pass.sh -new file mode 100644 -index 0000000..ed34f09 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_ownership/tests/interactive_users_absent.pass.sh -@@ -0,0 +1,4 @@ -+#!/bin/bash -+ -+# remove all interactive users (ID >= 1000) from /etc/passwd -+sed -i '/.*:[0-9]\{4,\}:/d' /etc/passwd -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_ownership/tests/unexpected_owner_system_id.fail.sh b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_ownership/tests/unexpected_owner_system_id.fail.sh -new file mode 100644 -index 0000000..59c46a9 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_ownership/tests/unexpected_owner_system_id.fail.sh -@@ -0,0 +1,6 @@ -+#!/bin/bash -+ -+USER="cac_user" -+useradd -m $USER -+echo "$USER" > /home/$USER/$USER.txt -+chown 2 /home/$USER/$USER.txt -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_ownership/tests/unexpected_owner_unknown_id.fail.sh b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_ownership/tests/unexpected_owner_unknown_id.fail.sh -new file mode 100644 -index 0000000..e0f5514 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_ownership/tests/unexpected_owner_unknown_id.fail.sh -@@ -0,0 +1,6 @@ -+#!/bin/bash -+ -+USER="cac_user" -+useradd -m $USER -+echo "$USER" > /home/$USER/$USER.txt -+chown 10005 /home/$USER/$USER.txt -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_ownership/tests/warning_home_dirs_swapped_owner.pass.sh b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_ownership/tests/warning_home_dirs_swapped_owner.pass.sh -new file mode 100644 -index 0000000..1174ec6 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_ownership/tests/warning_home_dirs_swapped_owner.pass.sh -@@ -0,0 +1,14 @@ -+#!/bin/bash -+ -+USER1="cac_user1" -+USER2="cac_user2" -+ -+useradd -m $USER1 -+useradd -m $USER2 -+echo "$USER1" > /home/$USER1/$USER1.txt -+echo "$USER2" > /home/$USER2/$USER2.txt -+# Swap the ownership of files in two home directories -+# WARNING: This test scenario will report a false negative, as explained in the -+# warning section of this rule. -+chown -f $USER2 /home/$USER1/$USER1.txt -+chown -f $USER1 /home/$USER2/$USER2.txt -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_permissions/ansible/shared.yml b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_permissions/ansible/shared.yml -new file mode 100644 -index 0000000..9473710 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_permissions/ansible/shared.yml -@@ -0,0 +1,33 @@ -+# platform = multi_platform_all -+# reboot = false -+# strategy = restrict -+# complexity = low -+# disruption = low -+ -+- name: Get all local users from /etc/passwd -+ ansible.builtin.getent: -+ database: passwd -+ split: ':' -+ -+- name: Create local_users variable from the getent output -+ ansible.builtin.set_fact: -+ local_users: '{{ ansible_facts.getent_passwd|dict2items }}' -+ -+- name: Test for existence home directories to avoid creating them, but only fixing group ownership -+ ansible.builtin.stat: -+ path: '{{ item.value[4] }}' -+ register: path_exists -+ loop: '{{ local_users }}' -+ when: -+ - item.value[2]|int >= {{{ uid_min }}} -+ - item.value[2]|int != 65534 -+ -+- name: Ensure interactive local users are the group-owners of their respective home directories -+ ansible.builtin.file: -+ path: '{{ item.0.value[4] }}' -+ mode: 'g-w,o=-' -+ follow: no -+ recurse: yes -+ loop: '{{ local_users|zip(path_exists.results)|list }}' -+ when: -+ - item.1.stat is defined and item.1.stat.exists -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_permissions/bash/shared.sh b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_permissions/bash/shared.sh -new file mode 100644 -index 0000000..186d55d ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_permissions/bash/shared.sh -@@ -0,0 +1,12 @@ -+# platform = multi_platform_all -+# reboot = false -+# strategy = restrict -+# complexity = low -+# disruption = low -+ -+for home_dir in $(awk -F':' '{ if ($4 >= {{{ uid_min }}} && $4 != 65534) print $6 }' /etc/passwd); do -+ # Only update the permissions when necessary. This will avoid changing the inode timestamp when -+ # the permission is already defined as expected, therefore not impacting in possible integrity -+ # check systems that also check inodes timestamps. -+ find $home_dir -perm /027 -exec chmod g-w,o=- {} \; -+done -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_permissions/oval/shared.xml b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_permissions/oval/shared.xml -new file mode 100644 -index 0000000..d3db46d ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_permissions/oval/shared.xml -@@ -0,0 +1,52 @@ -+ -+ -+ {{{ oval_metadata("All User Files and Directories In The Home Directory Must Have Mode 0750 Or Less Permissive") }}} -+ -+ -+ -+ -+ -+ -+ -+ nobody -+ state_accounts_users_home_files_permissions_interactive_uids -+ -+ -+ -+ {{{ uid_min }}} -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ .* -+ -+ -+ -+ -+ false -+ false -+ false -+ false -+ false -+ false -+ false -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_permissions/tests/acceptable_permission.pass.sh b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_permissions/tests/acceptable_permission.pass.sh -new file mode 100644 -index 0000000..3561847 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_permissions/tests/acceptable_permission.pass.sh -@@ -0,0 +1,6 @@ -+#!/bin/bash -+ -+USER="cac_user" -+useradd -m $USER -+echo "$USER" > /home/$USER/$USER.txt -+chmod -Rf 750 /home/$USER/.* -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_permissions/tests/expected_permissions.pass.sh b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_permissions/tests/expected_permissions.pass.sh -new file mode 100644 -index 0000000..8ed7fa2 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_permissions/tests/expected_permissions.pass.sh -@@ -0,0 +1,6 @@ -+#!/bin/bash -+ -+USER="cac_user" -+useradd -m $USER -+echo "$USER" > /home/$USER/$USER.txt -+chmod -Rf 700 /home/$USER/.* -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_permissions/tests/home_dirs_absent.pass.sh b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_permissions/tests/home_dirs_absent.pass.sh -new file mode 100644 -index 0000000..af24025 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_permissions/tests/home_dirs_absent.pass.sh -@@ -0,0 +1,6 @@ -+#!/bin/bash -+ -+USER="cac_user" -+useradd -M $USER -+# This make sure home dirs related to test environment users are also removed. -+rm -Rf /home/* -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_permissions/tests/interactive_users_absent.pass.sh b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_permissions/tests/interactive_users_absent.pass.sh -new file mode 100644 -index 0000000..ed34f09 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_permissions/tests/interactive_users_absent.pass.sh -@@ -0,0 +1,4 @@ -+#!/bin/bash -+ -+# remove all interactive users (ID >= 1000) from /etc/passwd -+sed -i '/.*:[0-9]\{4,\}:/d' /etc/passwd -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_permissions/tests/lenient_permission.fail.sh b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_permissions/tests/lenient_permission.fail.sh -new file mode 100644 -index 0000000..b561671 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_permissions/tests/lenient_permission.fail.sh -@@ -0,0 +1,7 @@ -+#!/bin/bash -+ -+USER="cac_user" -+useradd -m $USER -+echo "$USER" > /home/$USER/$USER.txt -+chmod -Rf 700 /home/$USER/.* -+chmod -f o+r /home/$USER/$USER.txt -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_permissions/tests/lenient_permission_hidden_files.fail.sh b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_permissions/tests/lenient_permission_hidden_files.fail.sh -new file mode 100644 -index 0000000..d7811bc ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_users_home_files_permissions/tests/lenient_permission_hidden_files.fail.sh -@@ -0,0 +1,7 @@ -+#!/bin/bash -+ -+USER="cac_user" -+useradd -m $USER -+echo "$USER" > /home/$USER/.init_file -+chmod -Rf 700 /home/$USER/.* -+chmod -f o+r /home/$USER/.init_file -diff --git a/linux_os/guide/system/accounts/accounts-session/file_groupownership_home_directories/tests/unexpected_groupowner_system_id.fail.sh b/linux_os/guide/system/accounts/accounts-session/file_groupownership_home_directories/tests/unexpected_groupowner_system_uid.fail.sh -similarity index 100% -rename from linux_os/guide/system/accounts/accounts-session/file_groupownership_home_directories/tests/unexpected_groupowner_system_id.fail.sh -rename to linux_os/guide/system/accounts/accounts-session/file_groupownership_home_directories/tests/unexpected_groupowner_system_uid.fail.sh -diff --git a/linux_os/guide/system/accounts/accounts-session/file_groupownership_home_directories/tests/unexpected_groupowner_unknown_id.fail.sh b/linux_os/guide/system/accounts/accounts-session/file_groupownership_home_directories/tests/unexpected_groupowner_unknown_uid.fail.sh -similarity index 100% -rename from linux_os/guide/system/accounts/accounts-session/file_groupownership_home_directories/tests/unexpected_groupowner_unknown_id.fail.sh -rename to linux_os/guide/system/accounts/accounts-session/file_groupownership_home_directories/tests/unexpected_groupowner_unknown_uid.fail.sh diff --git a/SOURCES/scap-security-guide-0.1.59-BZ1884687D-PR_7837.patch b/SOURCES/scap-security-guide-0.1.59-BZ1884687D-PR_7837.patch deleted file mode 100644 index d96e9e6..0000000 --- a/SOURCES/scap-security-guide-0.1.59-BZ1884687D-PR_7837.patch +++ /dev/null @@ -1,851 +0,0 @@ -From 55ec5c49441f6b99914eef15c6cc559910311934 Mon Sep 17 00:00:00 2001 -From: Marcus Burghardt -Date: Fri, 5 Nov 2021 14:02:09 +0100 -Subject: [PATCH 1/4] OVAL, tests and remediation for rule: - -accounts_user_dot_user_ownership ---- - .../ansible/shared.yml | 10 ++++ - .../bash/shared.sh | 7 +++ - .../oval/shared.xml | 52 +++++++++++++++++++ - .../accounts_user_dot_user_ownership/rule.yml | 9 ++++ - .../tests/expected_owner.pass.sh | 6 +++ - .../tests/home_dirs_all_absent.pass.sh | 6 +++ - .../home_dirs_one_absent_owner_ok.pass.sh | 10 ++++ - .../tests/interactive_users_absent.pass.sh | 4 ++ - .../tests/no_dot_file_ignored.pass.sh | 6 +++ - .../tests/unexpected_owner_system_uid.fail.sh | 6 +++ - .../unexpected_owner_unknown_uid.fail.sh | 6 +++ - .../tests/warning_swapped_owners.pass.sh | 15 ++++++ - 12 files changed, 137 insertions(+) - create mode 100644 linux_os/guide/system/accounts/accounts-session/accounts_user_dot_user_ownership/ansible/shared.yml - create mode 100644 linux_os/guide/system/accounts/accounts-session/accounts_user_dot_user_ownership/bash/shared.sh - create mode 100644 linux_os/guide/system/accounts/accounts-session/accounts_user_dot_user_ownership/oval/shared.xml - create mode 100644 linux_os/guide/system/accounts/accounts-session/accounts_user_dot_user_ownership/tests/expected_owner.pass.sh - create mode 100644 linux_os/guide/system/accounts/accounts-session/accounts_user_dot_user_ownership/tests/home_dirs_all_absent.pass.sh - create mode 100644 linux_os/guide/system/accounts/accounts-session/accounts_user_dot_user_ownership/tests/home_dirs_one_absent_owner_ok.pass.sh - create mode 100644 linux_os/guide/system/accounts/accounts-session/accounts_user_dot_user_ownership/tests/interactive_users_absent.pass.sh - create mode 100644 linux_os/guide/system/accounts/accounts-session/accounts_user_dot_user_ownership/tests/no_dot_file_ignored.pass.sh - create mode 100644 linux_os/guide/system/accounts/accounts-session/accounts_user_dot_user_ownership/tests/unexpected_owner_system_uid.fail.sh - create mode 100644 linux_os/guide/system/accounts/accounts-session/accounts_user_dot_user_ownership/tests/unexpected_owner_unknown_uid.fail.sh - create mode 100644 linux_os/guide/system/accounts/accounts-session/accounts_user_dot_user_ownership/tests/warning_swapped_owners.pass.sh - -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_user_ownership/ansible/shared.yml b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_user_ownership/ansible/shared.yml -new file mode 100644 -index 00000000000..3801e0cfdec ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_user_ownership/ansible/shared.yml -@@ -0,0 +1,10 @@ -+# platform = multi_platform_all -+# reboot = false -+# strategy = restrict -+# complexity = low -+# disruption = low -+ -+- name: Ensure interactive local users are the owners of their respective initialization files -+ ansible.builtin.command: -+ cmd: | -+ awk -F':' '{ if ($3 >= {{{ uid_min }}} && $3 != 65534) system("chown -f " $3" "$6"/.[^\.]?*") }' /etc/passwd -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_user_ownership/bash/shared.sh b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_user_ownership/bash/shared.sh -new file mode 100644 -index 00000000000..f362a2656aa ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_user_ownership/bash/shared.sh -@@ -0,0 +1,7 @@ -+# platform = multi_platform_all -+# reboot = false -+# strategy = restrict -+# complexity = low -+# disruption = low -+ -+awk -F':' '{ if ($3 >= {{{ uid_min }}} && $3 != 65534) system("chown -f " $3" "$6"/.[^\.]?*") }' /etc/passwd -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_user_ownership/oval/shared.xml b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_user_ownership/oval/shared.xml -new file mode 100644 -index 00000000000..fb12ce73b23 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_user_ownership/oval/shared.xml -@@ -0,0 +1,52 @@ -+ -+ -+ {{{ oval_metadata("User Initialization Files Must Be Owned By the Primary User") }}} -+ -+ -+ -+ -+ -+ -+ nobody -+ state_accounts_user_dot_user_ownership_interactive_uids -+ -+ -+ -+ {{{ uid_min }}} -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ ^\..* -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_user_ownership/rule.yml b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_user_ownership/rule.yml -index 37efb159c08..ec75aa01f12 100644 ---- a/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_user_ownership/rule.yml -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_user_ownership/rule.yml -@@ -9,6 +9,9 @@ description: |- - the primary owner with the following command: -
      $ sudo chown USER /home/USER/.*
      - -+ This rule ensures every initialization file related to an interactive user -+ is owned by an interactive user. -+ - rationale: |- - Local initialization files are used to configure the user's shell environment - upon logon. Malicious modification of these files could compromise accounts upon -@@ -33,3 +36,9 @@ ocil: |- - primary user, run the following command: -
      $ sudo ls -al /home/USER/.*
      - The user initialization files should be owned by USER. -+ -+warnings: -+ - general: |- -+ Due to OVAL limitation, this rule can report a false negative in a -+ specific situation where two interactive users swap the ownership of -+ their respective initialization files. -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_user_ownership/tests/expected_owner.pass.sh b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_user_ownership/tests/expected_owner.pass.sh -new file mode 100644 -index 00000000000..3d30238225e ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_user_ownership/tests/expected_owner.pass.sh -@@ -0,0 +1,6 @@ -+#!/bin/bash -+ -+USER="cac_user" -+useradd -m $USER -+touch /home/$USER/.bashrc -+chown $USER /home/$USER/.bashrc -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_user_ownership/tests/home_dirs_all_absent.pass.sh b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_user_ownership/tests/home_dirs_all_absent.pass.sh -new file mode 100644 -index 00000000000..af240252de3 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_user_ownership/tests/home_dirs_all_absent.pass.sh -@@ -0,0 +1,6 @@ -+#!/bin/bash -+ -+USER="cac_user" -+useradd -M $USER -+# This make sure home dirs related to test environment users are also removed. -+rm -Rf /home/* -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_user_ownership/tests/home_dirs_one_absent_owner_ok.pass.sh b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_user_ownership/tests/home_dirs_one_absent_owner_ok.pass.sh -new file mode 100644 -index 00000000000..840477d2c83 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_user_ownership/tests/home_dirs_one_absent_owner_ok.pass.sh -@@ -0,0 +1,10 @@ -+#!/bin/bash -+ -+USER1="cac_user1" -+USER2="cac_user2" -+ -+useradd -m $USER1 -+useradd -M $USER2 -+ -+touch /home/$USER1/.bashrc -+chown $USER1 /home/$USER1/.bashrc -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_user_ownership/tests/interactive_users_absent.pass.sh b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_user_ownership/tests/interactive_users_absent.pass.sh -new file mode 100644 -index 00000000000..ed34f0940a7 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_user_ownership/tests/interactive_users_absent.pass.sh -@@ -0,0 +1,4 @@ -+#!/bin/bash -+ -+# remove all interactive users (ID >= 1000) from /etc/passwd -+sed -i '/.*:[0-9]\{4,\}:/d' /etc/passwd -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_user_ownership/tests/no_dot_file_ignored.pass.sh b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_user_ownership/tests/no_dot_file_ignored.pass.sh -new file mode 100644 -index 00000000000..9292a46b3b2 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_user_ownership/tests/no_dot_file_ignored.pass.sh -@@ -0,0 +1,6 @@ -+#!/bin/bash -+ -+USER="cac_user" -+useradd -m $USER -+touch /home/$USER/nodotfile -+chown 2 /home/$USER/nodotfile -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_user_ownership/tests/unexpected_owner_system_uid.fail.sh b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_user_ownership/tests/unexpected_owner_system_uid.fail.sh -new file mode 100644 -index 00000000000..0373eb6a5f6 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_user_ownership/tests/unexpected_owner_system_uid.fail.sh -@@ -0,0 +1,6 @@ -+#!/bin/bash -+ -+USER="cac_user" -+useradd -m $USER -+touch /home/$USER/.bashrc -+chown 2 /home/$USER/.bashrc -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_user_ownership/tests/unexpected_owner_unknown_uid.fail.sh b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_user_ownership/tests/unexpected_owner_unknown_uid.fail.sh -new file mode 100644 -index 00000000000..da7f50ce905 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_user_ownership/tests/unexpected_owner_unknown_uid.fail.sh -@@ -0,0 +1,6 @@ -+#!/bin/bash -+ -+USER="cac_user" -+useradd -m $USER -+touch /home/$USER/.bashrc -+chown 10005 /home/$USER/.bashrc -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_user_ownership/tests/warning_swapped_owners.pass.sh b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_user_ownership/tests/warning_swapped_owners.pass.sh -new file mode 100644 -index 00000000000..b4a95ae2242 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_user_ownership/tests/warning_swapped_owners.pass.sh -@@ -0,0 +1,15 @@ -+#!/bin/bash -+ -+USER1="cac_user1" -+USER2="cac_user2" -+ -+useradd -m $USER1 -+useradd -m $USER2 -+touch /home/$USER1/.bashrc -+touch /home/$USER2/.bashrc -+ -+# Swap the ownership of files in two home directories -+# WARNING: This test scenario will report a false negative, as explained in the -+# warning section of this rule. -+chown -f $USER2 /home/$USER1/.bashrc -+chown -f $USER1 /home/$USER2/.bashrc - -From cc6318c8afc898190a090058fbdfbdfc741d4d85 Mon Sep 17 00:00:00 2001 -From: Marcus Burghardt -Date: Fri, 5 Nov 2021 14:05:19 +0100 -Subject: [PATCH 2/4] OVAL, tests and remediation for rule: - -accounts_user_dot_group_ownership ---- - .../ansible/shared.yml | 10 ++++ - .../bash/shared.sh | 7 +++ - .../oval/shared.xml | 52 +++++++++++++++++++ - .../rule.yml | 9 ++++ - .../tests/expected_groupowner.pass.sh | 6 +++ - .../tests/home_dirs_all_absent.pass.sh | 6 +++ - .../home_dirs_one_absent_group_ok.pass.sh | 10 ++++ - .../tests/interactive_users_absent.pass.sh | 4 ++ - .../tests/no_dot_file_ignored.pass.sh | 6 +++ - .../unexpected_groupowner_system_gid.fail.sh | 6 +++ - .../unexpected_groupowner_unknown_gid.fail.sh | 6 +++ - .../tests/warning_swapped_groupowners.pass.sh | 15 ++++++ - 12 files changed, 137 insertions(+) - create mode 100644 linux_os/guide/system/accounts/accounts-session/accounts_user_dot_group_ownership/ansible/shared.yml - create mode 100644 linux_os/guide/system/accounts/accounts-session/accounts_user_dot_group_ownership/bash/shared.sh - create mode 100644 linux_os/guide/system/accounts/accounts-session/accounts_user_dot_group_ownership/oval/shared.xml - create mode 100644 linux_os/guide/system/accounts/accounts-session/accounts_user_dot_group_ownership/tests/expected_groupowner.pass.sh - create mode 100644 linux_os/guide/system/accounts/accounts-session/accounts_user_dot_group_ownership/tests/home_dirs_all_absent.pass.sh - create mode 100644 linux_os/guide/system/accounts/accounts-session/accounts_user_dot_group_ownership/tests/home_dirs_one_absent_group_ok.pass.sh - create mode 100644 linux_os/guide/system/accounts/accounts-session/accounts_user_dot_group_ownership/tests/interactive_users_absent.pass.sh - create mode 100644 linux_os/guide/system/accounts/accounts-session/accounts_user_dot_group_ownership/tests/no_dot_file_ignored.pass.sh - create mode 100644 linux_os/guide/system/accounts/accounts-session/accounts_user_dot_group_ownership/tests/unexpected_groupowner_system_gid.fail.sh - create mode 100644 linux_os/guide/system/accounts/accounts-session/accounts_user_dot_group_ownership/tests/unexpected_groupowner_unknown_gid.fail.sh - create mode 100644 linux_os/guide/system/accounts/accounts-session/accounts_user_dot_group_ownership/tests/warning_swapped_groupowners.pass.sh - -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_group_ownership/ansible/shared.yml b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_group_ownership/ansible/shared.yml -new file mode 100644 -index 00000000000..1a9fa192359 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_group_ownership/ansible/shared.yml -@@ -0,0 +1,10 @@ -+# platform = multi_platform_all -+# reboot = false -+# strategy = restrict -+# complexity = low -+# disruption = low -+ -+- name: Ensure interactive local users are the group-owners of their respective initialization files -+ ansible.builtin.command: -+ cmd: | -+ awk -F':' '{ if ($3 >= {{{ uid_min }}} && $3 != 65534) system("chgrp -f " $3" "$6"/.[^\.]?*") }' /etc/passwd -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_group_ownership/bash/shared.sh b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_group_ownership/bash/shared.sh -new file mode 100644 -index 00000000000..2b0fe395e29 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_group_ownership/bash/shared.sh -@@ -0,0 +1,7 @@ -+# platform = multi_platform_all -+# reboot = false -+# strategy = restrict -+# complexity = low -+# disruption = low -+ -+awk -F':' '{ if ($3 >= {{{ uid_min }}} && $3 != 65534) system("chgrp -f " $3" "$6"/.[^\.]?*") }' /etc/passwd -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_group_ownership/oval/shared.xml b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_group_ownership/oval/shared.xml -new file mode 100644 -index 00000000000..7ee39a3e794 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_group_ownership/oval/shared.xml -@@ -0,0 +1,52 @@ -+ -+ -+ {{{ oval_metadata("User Initialization Files Must Be Group-Owned By The Primary User") }}} -+ -+ -+ -+ -+ -+ -+ nobody -+ state_accounts_user_dot_group_ownership_interactive_gids -+ -+ -+ -+ {{{ gid_min }}} -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ ^\..* -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_group_ownership/rule.yml b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_group_ownership/rule.yml -index a9cf96afc8c..d7d75a6600f 100644 ---- a/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_group_ownership/rule.yml -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_group_ownership/rule.yml -@@ -10,6 +10,9 @@ description: |- - interactive user home directory, use the following command: -
      $ sudo chgrp USER_GROUP /home/USER/.INIT_FILE
      - -+ This rule ensures every initialization file related to an interactive user -+ is group-owned by an interactive user. -+ - rationale: |- - Local initialization files for interactive users are used to configure the - user's shell environment upon logon. Malicious modification of these files could -@@ -35,3 +38,9 @@ ocil: |- - users in /etc/passwd and verify all initialization files under the - respective users home directory. Check the group owner of all local interactive users - initialization files. -+ -+warnings: -+ - general: |- -+ Due to OVAL limitation, this rule can report a false negative in a -+ specific situation where two interactive users swap the group-ownership -+ of their respective initialization files. -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_group_ownership/tests/expected_groupowner.pass.sh b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_group_ownership/tests/expected_groupowner.pass.sh -new file mode 100644 -index 00000000000..0b89e741fbf ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_group_ownership/tests/expected_groupowner.pass.sh -@@ -0,0 +1,6 @@ -+#!/bin/bash -+ -+USER="cac_user" -+useradd -m $USER -+touch /home/$USER/.bashrc -+chgrp $USER /home/$USER/.bashrc -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_group_ownership/tests/home_dirs_all_absent.pass.sh b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_group_ownership/tests/home_dirs_all_absent.pass.sh -new file mode 100644 -index 00000000000..af240252de3 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_group_ownership/tests/home_dirs_all_absent.pass.sh -@@ -0,0 +1,6 @@ -+#!/bin/bash -+ -+USER="cac_user" -+useradd -M $USER -+# This make sure home dirs related to test environment users are also removed. -+rm -Rf /home/* -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_group_ownership/tests/home_dirs_one_absent_group_ok.pass.sh b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_group_ownership/tests/home_dirs_one_absent_group_ok.pass.sh -new file mode 100644 -index 00000000000..90e1787dccc ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_group_ownership/tests/home_dirs_one_absent_group_ok.pass.sh -@@ -0,0 +1,10 @@ -+#!/bin/bash -+ -+USER1="cac_user1" -+USER2="cac_user2" -+ -+useradd -m $USER1 -+useradd -M $USER2 -+ -+touch /home/$USER1/.bashrc -+chgrp $USER1 /home/$USER1/.bashrc -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_group_ownership/tests/interactive_users_absent.pass.sh b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_group_ownership/tests/interactive_users_absent.pass.sh -new file mode 100644 -index 00000000000..ed34f0940a7 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_group_ownership/tests/interactive_users_absent.pass.sh -@@ -0,0 +1,4 @@ -+#!/bin/bash -+ -+# remove all interactive users (ID >= 1000) from /etc/passwd -+sed -i '/.*:[0-9]\{4,\}:/d' /etc/passwd -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_group_ownership/tests/no_dot_file_ignored.pass.sh b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_group_ownership/tests/no_dot_file_ignored.pass.sh -new file mode 100644 -index 00000000000..5b9e17c5384 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_group_ownership/tests/no_dot_file_ignored.pass.sh -@@ -0,0 +1,6 @@ -+#!/bin/bash -+ -+USER="cac_user" -+useradd -m $USER -+touch /home/$USER/nodotfile -+chgrp 2 /home/$USER/nodotfile -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_group_ownership/tests/unexpected_groupowner_system_gid.fail.sh b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_group_ownership/tests/unexpected_groupowner_system_gid.fail.sh -new file mode 100644 -index 00000000000..b21e7229ed2 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_group_ownership/tests/unexpected_groupowner_system_gid.fail.sh -@@ -0,0 +1,6 @@ -+#!/bin/bash -+ -+USER="cac_user" -+useradd -m $USER -+touch /home/$USER/.bashrc -+chgrp 2 /home/$USER/.bashrc -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_group_ownership/tests/unexpected_groupowner_unknown_gid.fail.sh b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_group_ownership/tests/unexpected_groupowner_unknown_gid.fail.sh -new file mode 100644 -index 00000000000..7c1bcac44d6 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_group_ownership/tests/unexpected_groupowner_unknown_gid.fail.sh -@@ -0,0 +1,6 @@ -+#!/bin/bash -+ -+USER="cac_user" -+useradd -m $USER -+touch /home/$USER/.bashrc -+chgrp 10005 /home/$USER/.bashrc -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_group_ownership/tests/warning_swapped_groupowners.pass.sh b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_group_ownership/tests/warning_swapped_groupowners.pass.sh -new file mode 100644 -index 00000000000..d58a9dd63bf ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_group_ownership/tests/warning_swapped_groupowners.pass.sh -@@ -0,0 +1,15 @@ -+#!/bin/bash -+ -+USER1="cac_user1" -+USER2="cac_user2" -+ -+useradd -m $USER1 -+useradd -m $USER2 -+touch /home/$USER1/.bashrc -+touch /home/$USER2/.bashrc -+ -+# Swap the ownership of files in two home directories -+# WARNING: This test scenario will report a false negative, as explained in the -+# warning section of this rule. -+chgrp -f $USER2 /home/$USER1/.bashrc -+chgrp -f $USER1 /home/$USER2/.bashrc - -From 2e28bd10bfec8466362e74b7c5d95481e95d0ae9 Mon Sep 17 00:00:00 2001 -From: Marcus Burghardt -Date: Fri, 5 Nov 2021 14:06:56 +0100 -Subject: [PATCH 3/4] OVAL, tests and remediation for rule: - -accounts_user_dot_no_world_writable_programs ---- - .../ansible/shared.yml | 10 ++++ - .../bash/shared.sh | 7 +++ - .../oval/shared.xml | 52 +++++++++++++++++++ - .../tests/expected_permissions.pass.sh | 6 +++ - .../tests/home_dirs_absent.pass.sh | 6 +++ - .../tests/interactive_users_absent.pass.sh | 4 ++ - .../tests/lenient_permission.fail.sh | 6 +++ - .../tests/more_restrictive_permission.pass.sh | 6 +++ - .../tests/no_dot_file_ignored.pass.sh | 6 +++ - 9 files changed, 103 insertions(+) - create mode 100644 linux_os/guide/system/accounts/accounts-session/accounts_user_dot_no_world_writable_programs/ansible/shared.yml - create mode 100644 linux_os/guide/system/accounts/accounts-session/accounts_user_dot_no_world_writable_programs/bash/shared.sh - create mode 100644 linux_os/guide/system/accounts/accounts-session/accounts_user_dot_no_world_writable_programs/oval/shared.xml - create mode 100644 linux_os/guide/system/accounts/accounts-session/accounts_user_dot_no_world_writable_programs/tests/expected_permissions.pass.sh - create mode 100644 linux_os/guide/system/accounts/accounts-session/accounts_user_dot_no_world_writable_programs/tests/home_dirs_absent.pass.sh - create mode 100644 linux_os/guide/system/accounts/accounts-session/accounts_user_dot_no_world_writable_programs/tests/interactive_users_absent.pass.sh - create mode 100644 linux_os/guide/system/accounts/accounts-session/accounts_user_dot_no_world_writable_programs/tests/lenient_permission.fail.sh - create mode 100644 linux_os/guide/system/accounts/accounts-session/accounts_user_dot_no_world_writable_programs/tests/more_restrictive_permission.pass.sh - create mode 100644 linux_os/guide/system/accounts/accounts-session/accounts_user_dot_no_world_writable_programs/tests/no_dot_file_ignored.pass.sh - -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_no_world_writable_programs/ansible/shared.yml b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_no_world_writable_programs/ansible/shared.yml -new file mode 100644 -index 00000000000..210d12a53fe ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_no_world_writable_programs/ansible/shared.yml -@@ -0,0 +1,10 @@ -+# platform = multi_platform_all -+# reboot = false -+# strategy = restrict -+# complexity = low -+# disruption = low -+ -+- name: Ensure interactive local users are the group-owners of their respective initialization files -+ ansible.builtin.command: -+ cmd: | -+ awk -F':' '{ if ($3 >= {{{ gid_min }}} && $3 != 65534) system("chmod -f g-w,o-w "$6"/.[^\.]?*") }' /etc/passwd -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_no_world_writable_programs/bash/shared.sh b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_no_world_writable_programs/bash/shared.sh -new file mode 100644 -index 00000000000..24ff95c6cd7 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_no_world_writable_programs/bash/shared.sh -@@ -0,0 +1,7 @@ -+# platform = multi_platform_all -+# reboot = false -+# strategy = restrict -+# complexity = low -+# disruption = low -+ -+awk -F':' '{ if ($4 >= {{{ uid_min }}} && $4 != 65534) system("chmod -f g-w,o-w "$6"/.[^\.]?*") }' /etc/passwd -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_no_world_writable_programs/oval/shared.xml b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_no_world_writable_programs/oval/shared.xml -new file mode 100644 -index 00000000000..ca8ecb2b447 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_no_world_writable_programs/oval/shared.xml -@@ -0,0 +1,52 @@ -+ -+ -+ {{{ oval_metadata("User Initialization Files Must Not Run World-Writable Programs") }}} -+ -+ -+ -+ -+ -+ -+ nobody -+ state_accounts_user_dot_no_world_writable_programs_interactive_uids -+ -+ -+ -+ {{{ uid_min }}} -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ ^\..* -+ -+ -+ -+ -+ false -+ false -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_no_world_writable_programs/tests/expected_permissions.pass.sh b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_no_world_writable_programs/tests/expected_permissions.pass.sh -new file mode 100644 -index 00000000000..7a2b35eba77 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_no_world_writable_programs/tests/expected_permissions.pass.sh -@@ -0,0 +1,6 @@ -+#!/bin/bash -+ -+USER="cac_user" -+useradd -m $USER -+echo "$USER" > /home/$USER/$USER.txt -+chmod -f 755 /home/$USER/.* -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_no_world_writable_programs/tests/home_dirs_absent.pass.sh b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_no_world_writable_programs/tests/home_dirs_absent.pass.sh -new file mode 100644 -index 00000000000..af240252de3 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_no_world_writable_programs/tests/home_dirs_absent.pass.sh -@@ -0,0 +1,6 @@ -+#!/bin/bash -+ -+USER="cac_user" -+useradd -M $USER -+# This make sure home dirs related to test environment users are also removed. -+rm -Rf /home/* -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_no_world_writable_programs/tests/interactive_users_absent.pass.sh b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_no_world_writable_programs/tests/interactive_users_absent.pass.sh -new file mode 100644 -index 00000000000..ed34f0940a7 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_no_world_writable_programs/tests/interactive_users_absent.pass.sh -@@ -0,0 +1,4 @@ -+#!/bin/bash -+ -+# remove all interactive users (ID >= 1000) from /etc/passwd -+sed -i '/.*:[0-9]\{4,\}:/d' /etc/passwd -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_no_world_writable_programs/tests/lenient_permission.fail.sh b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_no_world_writable_programs/tests/lenient_permission.fail.sh -new file mode 100644 -index 00000000000..5fcf95f5f96 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_no_world_writable_programs/tests/lenient_permission.fail.sh -@@ -0,0 +1,6 @@ -+#!/bin/bash -+ -+USER="cac_user" -+useradd -m $USER -+touch /home/$USER/.bashrc -+chmod -f o+w /home/$USER/.bashrc -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_no_world_writable_programs/tests/more_restrictive_permission.pass.sh b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_no_world_writable_programs/tests/more_restrictive_permission.pass.sh -new file mode 100644 -index 00000000000..655c6d32e47 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_no_world_writable_programs/tests/more_restrictive_permission.pass.sh -@@ -0,0 +1,6 @@ -+#!/bin/bash -+ -+USER="cac_user" -+useradd -m $USER -+echo "$USER" > /home/$USER/$USER.txt -+chmod -f 700 /home/$USER/.* -diff --git a/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_no_world_writable_programs/tests/no_dot_file_ignored.pass.sh b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_no_world_writable_programs/tests/no_dot_file_ignored.pass.sh -new file mode 100644 -index 00000000000..66439b768ca ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/accounts_user_dot_no_world_writable_programs/tests/no_dot_file_ignored.pass.sh -@@ -0,0 +1,6 @@ -+#!/bin/bash -+ -+USER="cac_user" -+useradd -m $USER -+echo "$USER" > /home/$USER/$USER.txt -+chmod -f o+w /home/$USER/$USER.txt - -From f7f5735115ad3fa98fac8644aa844ed54d4d5dd7 Mon Sep 17 00:00:00 2001 -From: Marcus Burghardt -Date: Fri, 5 Nov 2021 14:07:55 +0100 -Subject: [PATCH 4/4] OVAL, tests and remediation for rule: - -accounts_umask_interactive_users ---- - .../ansible/shared.yml | 12 ++++++ - .../bash/shared.sh | 9 +++++ - .../oval/shared.xml | 40 +++++++++++++++++++ - .../tests/home_dirs_all_absent.pass.sh | 6 +++ - .../tests/home_dirs_one_absent.pass.sh | 10 +++++ - .../tests/interactive_users_absent.pass.sh | 4 ++ - .../tests/no_dot_file_ignored.pass.sh | 5 +++ - .../tests/umask_defined.fail.sh | 5 +++ - 8 files changed, 91 insertions(+) - create mode 100644 linux_os/guide/system/accounts/accounts-session/user_umask/accounts_umask_interactive_users/ansible/shared.yml - create mode 100644 linux_os/guide/system/accounts/accounts-session/user_umask/accounts_umask_interactive_users/bash/shared.sh - create mode 100644 linux_os/guide/system/accounts/accounts-session/user_umask/accounts_umask_interactive_users/oval/shared.xml - create mode 100644 linux_os/guide/system/accounts/accounts-session/user_umask/accounts_umask_interactive_users/tests/home_dirs_all_absent.pass.sh - create mode 100644 linux_os/guide/system/accounts/accounts-session/user_umask/accounts_umask_interactive_users/tests/home_dirs_one_absent.pass.sh - create mode 100644 linux_os/guide/system/accounts/accounts-session/user_umask/accounts_umask_interactive_users/tests/interactive_users_absent.pass.sh - create mode 100644 linux_os/guide/system/accounts/accounts-session/user_umask/accounts_umask_interactive_users/tests/no_dot_file_ignored.pass.sh - create mode 100644 linux_os/guide/system/accounts/accounts-session/user_umask/accounts_umask_interactive_users/tests/umask_defined.fail.sh - -diff --git a/linux_os/guide/system/accounts/accounts-session/user_umask/accounts_umask_interactive_users/ansible/shared.yml b/linux_os/guide/system/accounts/accounts-session/user_umask/accounts_umask_interactive_users/ansible/shared.yml -new file mode 100644 -index 00000000000..142f10a2157 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/user_umask/accounts_umask_interactive_users/ansible/shared.yml -@@ -0,0 +1,12 @@ -+# platform = multi_platform_all -+# reboot = false -+# strategy = restrict -+# complexity = low -+# disruption = low -+ -+- name: Ensure interactive local users are the owners of their respective initialization files -+ ansible.builtin.shell: -+ cmd: | -+ for dir in $(awk -F':' '{ if ($3 >= {{{ uid_min }}} && $3 != 65534) print $6}' /etc/passwd); do -+ sed -i 's/^\([\s]*umask\s*\)/#\1/g' $dir/.[^\.]?* -+ done -diff --git a/linux_os/guide/system/accounts/accounts-session/user_umask/accounts_umask_interactive_users/bash/shared.sh b/linux_os/guide/system/accounts/accounts-session/user_umask/accounts_umask_interactive_users/bash/shared.sh -new file mode 100644 -index 00000000000..0644b221df8 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/user_umask/accounts_umask_interactive_users/bash/shared.sh -@@ -0,0 +1,9 @@ -+# platform = multi_platform_all -+# reboot = false -+# strategy = restrict -+# complexity = low -+# disruption = low -+ -+for dir in $(awk -F':' '{ if ($3 >= {{{ uid_min }}} && $3 != 65534) print $6}' /etc/passwd); do -+ sed -i 's/^\([\s]*umask\s*\)/#\1/g' $dir/.[^\.]?* -+done -diff --git a/linux_os/guide/system/accounts/accounts-session/user_umask/accounts_umask_interactive_users/oval/shared.xml b/linux_os/guide/system/accounts/accounts-session/user_umask/accounts_umask_interactive_users/oval/shared.xml -new file mode 100644 -index 00000000000..42dbdbbae46 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/user_umask/accounts_umask_interactive_users/oval/shared.xml -@@ -0,0 +1,40 @@ -+ -+ -+ {{{ oval_metadata("Ensure the Default Umask is Set Correctly For Interactive Users") }}} -+ -+ -+ -+ -+ -+ -+ nobody -+ state_accounts_umask_interactive_users_interactive_uids -+ -+ -+ -+ {{{ uid_min }}} -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ ^\..* -+ ^[\s]*umask\s* -+ 1 -+ -+ -+ -+ -+ -+ -+ -diff --git a/linux_os/guide/system/accounts/accounts-session/user_umask/accounts_umask_interactive_users/tests/home_dirs_all_absent.pass.sh b/linux_os/guide/system/accounts/accounts-session/user_umask/accounts_umask_interactive_users/tests/home_dirs_all_absent.pass.sh -new file mode 100644 -index 00000000000..af240252de3 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/user_umask/accounts_umask_interactive_users/tests/home_dirs_all_absent.pass.sh -@@ -0,0 +1,6 @@ -+#!/bin/bash -+ -+USER="cac_user" -+useradd -M $USER -+# This make sure home dirs related to test environment users are also removed. -+rm -Rf /home/* -diff --git a/linux_os/guide/system/accounts/accounts-session/user_umask/accounts_umask_interactive_users/tests/home_dirs_one_absent.pass.sh b/linux_os/guide/system/accounts/accounts-session/user_umask/accounts_umask_interactive_users/tests/home_dirs_one_absent.pass.sh -new file mode 100644 -index 00000000000..0ad9248d14b ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/user_umask/accounts_umask_interactive_users/tests/home_dirs_one_absent.pass.sh -@@ -0,0 +1,10 @@ -+#!/bin/bash -+ -+USER1="cac_user1" -+USER2="cac_user2" -+ -+useradd -m $USER1 -+useradd -M $USER2 -+ -+# Make sure no umask definition exists in the startup files -+sed -i 's/^\([\s]*umask\s*\)/#\1/g' /home/$USER1/.[^\.]?* -diff --git a/linux_os/guide/system/accounts/accounts-session/user_umask/accounts_umask_interactive_users/tests/interactive_users_absent.pass.sh b/linux_os/guide/system/accounts/accounts-session/user_umask/accounts_umask_interactive_users/tests/interactive_users_absent.pass.sh -new file mode 100644 -index 00000000000..ed34f0940a7 ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/user_umask/accounts_umask_interactive_users/tests/interactive_users_absent.pass.sh -@@ -0,0 +1,4 @@ -+#!/bin/bash -+ -+# remove all interactive users (ID >= 1000) from /etc/passwd -+sed -i '/.*:[0-9]\{4,\}:/d' /etc/passwd -diff --git a/linux_os/guide/system/accounts/accounts-session/user_umask/accounts_umask_interactive_users/tests/no_dot_file_ignored.pass.sh b/linux_os/guide/system/accounts/accounts-session/user_umask/accounts_umask_interactive_users/tests/no_dot_file_ignored.pass.sh -new file mode 100644 -index 00000000000..27f580ae45a ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/user_umask/accounts_umask_interactive_users/tests/no_dot_file_ignored.pass.sh -@@ -0,0 +1,5 @@ -+#!/bin/bash -+ -+USER="cac_user" -+useradd -m $USER -+echo "umask 022" > /home/$USER/nodotfile -diff --git a/linux_os/guide/system/accounts/accounts-session/user_umask/accounts_umask_interactive_users/tests/umask_defined.fail.sh b/linux_os/guide/system/accounts/accounts-session/user_umask/accounts_umask_interactive_users/tests/umask_defined.fail.sh -new file mode 100644 -index 00000000000..f7835392acf ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/user_umask/accounts_umask_interactive_users/tests/umask_defined.fail.sh -@@ -0,0 +1,5 @@ -+#!/bin/bash -+ -+USER="cac_user" -+useradd -m $USER -+echo "umask 022" >> /home/$USER/.bashrc diff --git a/SOURCES/scap-security-guide-0.1.59-add_missing_stig_ids-PR_7597.patch b/SOURCES/scap-security-guide-0.1.59-add_missing_stig_ids-PR_7597.patch deleted file mode 100644 index 5344d00..0000000 --- a/SOURCES/scap-security-guide-0.1.59-add_missing_stig_ids-PR_7597.patch +++ /dev/null @@ -1,74 +0,0 @@ -From 1b7bd47bd8fa3f828aca0bf0add7fc188893ef11 Mon Sep 17 00:00:00 2001 -From: Matthew Burket -Date: Tue, 21 Sep 2021 07:44:29 -0500 -Subject: [PATCH 1/2] Add STIG references for FIPS - ---- - .../integrity/crypto/configure_bind_crypto_policy/rule.yml | 1 + - .../software/integrity/crypto/configure_crypto_policy/rule.yml | 1 + - .../integrity/crypto/configure_kerberos_crypto_policy/rule.yml | 1 + - .../integrity/crypto/configure_libreswan_crypto_policy/rule.yml | 1 + - .../software/integrity/fips/enable_dracut_fips_module/rule.yml | 1 + - 5 files changed, 5 insertions(+) - -diff --git a/linux_os/guide/system/software/integrity/crypto/configure_bind_crypto_policy/rule.yml b/linux_os/guide/system/software/integrity/crypto/configure_bind_crypto_policy/rule.yml -index 5484e11ad9f..e58c9506083 100644 ---- a/linux_os/guide/system/software/integrity/crypto/configure_bind_crypto_policy/rule.yml -+++ b/linux_os/guide/system/software/integrity/crypto/configure_bind_crypto_policy/rule.yml -@@ -29,6 +29,7 @@ identifiers: - references: - nerc-cip: CIP-003-3 R4.2,CIP-007-3 R5.1 - nist: SC-13,SC-12(2),SC-12(3) -+ stigid@rhel8: RHEL-08-010020 - srg: SRG-OS-000423-GPOS-00187,SRG-OS-000426-GPOS-00190 - - ocil_clause: |- -diff --git a/linux_os/guide/system/software/integrity/crypto/configure_crypto_policy/rule.yml b/linux_os/guide/system/software/integrity/crypto/configure_crypto_policy/rule.yml -index d4ea4db6c14..5eea87ac006 100644 ---- a/linux_os/guide/system/software/integrity/crypto/configure_crypto_policy/rule.yml -+++ b/linux_os/guide/system/software/integrity/crypto/configure_crypto_policy/rule.yml -@@ -65,6 +65,7 @@ references: - nerc-cip: CIP-003-3 R4.2,CIP-007-3 R5.1,CIP-007-3 R7.1 - nist: AC-17(a),AC-17(2),CM-6(a),MA-4(6),SC-13,SC-12(2),SC-12(3) - ospp: FCS_COP.1(1),FCS_COP.1(2),FCS_COP.1(3),FCS_COP.1(4),FCS_CKM.1,FCS_CKM.2,FCS_TLSC_EXT.1 -+ stigid@rhel8: RHEL-08-010020 - srg: SRG-OS-000396-GPOS-00176,SRG-OS-000393-GPOS-00173,SRG-OS-000394-GPOS-00174 - - ocil_clause: 'cryptographic policy is not configured or is configured incorrectly' -diff --git a/linux_os/guide/system/software/integrity/crypto/configure_kerberos_crypto_policy/rule.yml b/linux_os/guide/system/software/integrity/crypto/configure_kerberos_crypto_policy/rule.yml -index b219c9d2801..e1f5e55e8cd 100644 ---- a/linux_os/guide/system/software/integrity/crypto/configure_kerberos_crypto_policy/rule.yml -+++ b/linux_os/guide/system/software/integrity/crypto/configure_kerberos_crypto_policy/rule.yml -@@ -28,6 +28,7 @@ references: - nerc-cip: CIP-003-3 R4.2,CIP-007-3 R5.1 - nist: SC-13,SC-12(2),SC-12(3) - srg: SRG-OS-000120-GPOS-00061 -+ stigid@rhel8: RHEL-08-010020 - - ocil_clause: 'the symlink does not exist or points to a different target' - -diff --git a/linux_os/guide/system/software/integrity/crypto/configure_libreswan_crypto_policy/rule.yml b/linux_os/guide/system/software/integrity/crypto/configure_libreswan_crypto_policy/rule.yml -index cd03ecf30d1..1fffb2ad2b7 100644 ---- a/linux_os/guide/system/software/integrity/crypto/configure_libreswan_crypto_policy/rule.yml -+++ b/linux_os/guide/system/software/integrity/crypto/configure_libreswan_crypto_policy/rule.yml -@@ -33,6 +33,7 @@ references: - nist: CM-6(a),MA-4(6),SC-13,SC-12(2),SC-12(3) - ospp: FCS_IPSEC_EXT.1.4,FCS_IPSEC_EXT.1.6 - srg: SRG-OS-000033-GPOS-00014 -+ stigid@rhel8: RHEL-08-010020 - - ocil_clause: |- - Libreswan is installed and /etc/ipsec.conf does not contain include /etc/crypto-policies/back-ends/libreswan.config -diff --git a/linux_os/guide/system/software/integrity/fips/enable_dracut_fips_module/rule.yml b/linux_os/guide/system/software/integrity/fips/enable_dracut_fips_module/rule.yml -index 9486031be54..fe20c1958a6 100644 ---- a/linux_os/guide/system/software/integrity/fips/enable_dracut_fips_module/rule.yml -+++ b/linux_os/guide/system/software/integrity/fips/enable_dracut_fips_module/rule.yml -@@ -30,6 +30,7 @@ references: - nerc-cip: CIP-003-3 R4.2,CIP-007-3 R5.1 - nist: SC-12(2),SC-12(3),IA-7,SC-13,CM-6(a),SC-12 - srg: SRG-OS-000478-GPOS-00223 -+ stigid@rhel8: RHEL-08-010020 - vmmsrg: SRG-OS-000120-VMM-000600,SRG-OS-000478-VMM-001980,SRG-OS-000396-VMM-001590 - - ocil_clause: 'the Dracut FIPS module is not enabled' - diff --git a/SOURCES/scap-security-guide-0.1.59-fix_6844-PR_7673.patch b/SOURCES/scap-security-guide-0.1.59-fix_6844-PR_7673.patch deleted file mode 100644 index b20d6ca..0000000 --- a/SOURCES/scap-security-guide-0.1.59-fix_6844-PR_7673.patch +++ /dev/null @@ -1,47 +0,0 @@ -From 155a46f32b02fec3fa9a99d2a6fa2f1a5287fcaf Mon Sep 17 00:00:00 2001 -From: Matthew Burket -Date: Wed, 29 Sep 2021 09:43:56 -0500 -Subject: [PATCH] Add RHEL8 FIPS STIG ID to few rules - ---- - .../integrity/crypto/configure_ssh_crypto_policy/rule.yml | 1 + - .../harden_sshd_ciphers_openssh_conf_crypto_policy/rule.yml | 1 + - .../crypto/harden_sshd_macs_openssh_conf_crypto_policy/rule.yml | 1 + - 3 files changed, 3 insertions(+) - -diff --git a/linux_os/guide/system/software/integrity/crypto/configure_ssh_crypto_policy/rule.yml b/linux_os/guide/system/software/integrity/crypto/configure_ssh_crypto_policy/rule.yml -index 9ac0b55f65a..2f4fb79eb54 100644 ---- a/linux_os/guide/system/software/integrity/crypto/configure_ssh_crypto_policy/rule.yml -+++ b/linux_os/guide/system/software/integrity/crypto/configure_ssh_crypto_policy/rule.yml -@@ -29,6 +29,7 @@ references: - nerc-cip: CIP-003-3 R4.2,CIP-007-3 R5.1,CIP-007-3 R7.1 - nist: AC-17(a),AC-17(2),CM-6(a),MA-4(6),SC-13 - srg: SRG-OS-000250-GPOS-00093 -+ stigid@rhel8: RHEL-08-010020 - - ocil_clause: 'the CRYPTO_POLICY variable is not set or is commented in the /etc/sysconfig/sshd' - -diff --git a/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/rule.yml b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/rule.yml -index 682ca436b8d..adeae314fff 100644 ---- a/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/rule.yml -+++ b/linux_os/guide/system/software/integrity/crypto/harden_sshd_ciphers_openssh_conf_crypto_policy/rule.yml -@@ -30,6 +30,7 @@ references: - disa: CCI-001453 - nist: AC-17(2) - srg: SRG-OS-000250-GPOS-00093 -+ stigid@rhel8: RHEL-08-010020 - - ocil_clause: 'Crypto Policy for OpenSSH client is not configured correctly' - -diff --git a/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_openssh_conf_crypto_policy/rule.yml b/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_openssh_conf_crypto_policy/rule.yml -index d21f68ac17a..12e527ca33d 100644 ---- a/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_openssh_conf_crypto_policy/rule.yml -+++ b/linux_os/guide/system/software/integrity/crypto/harden_sshd_macs_openssh_conf_crypto_policy/rule.yml -@@ -28,6 +28,7 @@ references: - disa: CCI-001453 - nist: AC-17(2) - srg: SRG-OS-000250-GPOS-00093 -+ stigid@rhel8: RHEL-08-010020 - - ocil_clause: 'Crypto Policy for OpenSSH client is not configured correctly' - diff --git a/SOURCES/scap-security-guide-0.1.59-fix_7333-PR_7692.patch b/SOURCES/scap-security-guide-0.1.59-fix_7333-PR_7692.patch deleted file mode 100644 index 5b0f50f..0000000 --- a/SOURCES/scap-security-guide-0.1.59-fix_7333-PR_7692.patch +++ /dev/null @@ -1,91 +0,0 @@ -From c988807382a5c0e307567def55fcedcb2e3b75b7 Mon Sep 17 00:00:00 2001 -From: Matthew Burket -Date: Mon, 4 Oct 2021 12:18:05 -0500 -Subject: [PATCH 1/4] Update rsyslog_remote_loghost to match STIG and CIS - -STIG and CIS only match *.conf files and we matched all files. -Moving to match the benchmarks. - -Fixes #7333 ---- - .../rsyslog_remote_loghost/oval/shared.xml | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/linux_os/guide/system/logging/rsyslog_sending_messages/rsyslog_remote_loghost/oval/shared.xml b/linux_os/guide/system/logging/rsyslog_sending_messages/rsyslog_remote_loghost/oval/shared.xml -index 5895b7fab24..7b5d4968886 100644 ---- a/linux_os/guide/system/logging/rsyslog_sending_messages/rsyslog_remote_loghost/oval/shared.xml -+++ b/linux_os/guide/system/logging/rsyslog_sending_messages/rsyslog_remote_loghost/oval/shared.xml -@@ -39,7 +39,7 @@ - - - /etc/rsyslog.d -- .* -+ *.conf - ^\*\.\*[\s]+(?:@|\:omrelp\:) - 1 - - -From 19d72d76e6818f47e71245dece0d6faa62cfcdb1 Mon Sep 17 00:00:00 2001 -From: Matthew Burket -Date: Mon, 4 Oct 2021 13:11:10 -0500 -Subject: [PATCH 3/4] Add packages so that test suite pass in a container - ---- - .../rsyslog_remote_loghost/tests/line_commented.fail.sh | 1 + - .../rsyslog_remote_loghost/tests/line_not_there.fail.sh | 1 + - .../rsyslog_remote_loghost/tests/remote_configured.pass.sh | 1 + - 3 files changed, 3 insertions(+) - -diff --git a/linux_os/guide/system/logging/rsyslog_sending_messages/rsyslog_remote_loghost/tests/line_commented.fail.sh b/linux_os/guide/system/logging/rsyslog_sending_messages/rsyslog_remote_loghost/tests/line_commented.fail.sh -index 52376effea2..760606278b3 100644 ---- a/linux_os/guide/system/logging/rsyslog_sending_messages/rsyslog_remote_loghost/tests/line_commented.fail.sh -+++ b/linux_os/guide/system/logging/rsyslog_sending_messages/rsyslog_remote_loghost/tests/line_commented.fail.sh -@@ -1,4 +1,5 @@ - #!/bin/bash -+# packages = rsyslog - - CONF_FILE="/etc/rsyslog.conf" - LOGHOST_LINE="*.* @@192.168.122.1:5000" -diff --git a/linux_os/guide/system/logging/rsyslog_sending_messages/rsyslog_remote_loghost/tests/line_not_there.fail.sh b/linux_os/guide/system/logging/rsyslog_sending_messages/rsyslog_remote_loghost/tests/line_not_there.fail.sh -index 8a55da88c8d..ac82180f21c 100644 ---- a/linux_os/guide/system/logging/rsyslog_sending_messages/rsyslog_remote_loghost/tests/line_not_there.fail.sh -+++ b/linux_os/guide/system/logging/rsyslog_sending_messages/rsyslog_remote_loghost/tests/line_not_there.fail.sh -@@ -1,4 +1,5 @@ - #!/bin/bash -+# packages = rsyslog - - CONF_FILE="/etc/rsyslog.conf" - sed -i "/^\*\.\*.*/d" "$CONF_FILE" -diff --git a/linux_os/guide/system/logging/rsyslog_sending_messages/rsyslog_remote_loghost/tests/remote_configured.pass.sh b/linux_os/guide/system/logging/rsyslog_sending_messages/rsyslog_remote_loghost/tests/remote_configured.pass.sh -index 8122a490f25..3c396b4e52a 100644 ---- a/linux_os/guide/system/logging/rsyslog_sending_messages/rsyslog_remote_loghost/tests/remote_configured.pass.sh -+++ b/linux_os/guide/system/logging/rsyslog_sending_messages/rsyslog_remote_loghost/tests/remote_configured.pass.sh -@@ -1,4 +1,5 @@ - #!/bin/bash -+# packages = rsyslog - - CONF_FILE="/etc/rsyslog.conf" - LOGHOST_LINE="*.* @@192.168.122.1:5000" - -From e7110e97c808b82a8d6d91c9da42f6c5422747cf Mon Sep 17 00:00:00 2001 -From: Matthew Burket -Date: Mon, 11 Oct 2021 11:33:13 -0500 -Subject: [PATCH 4/4] Fix regex on rsyslog_remote_loghost - ---- - .../rsyslog_remote_loghost/oval/shared.xml | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/linux_os/guide/system/logging/rsyslog_sending_messages/rsyslog_remote_loghost/oval/shared.xml b/linux_os/guide/system/logging/rsyslog_sending_messages/rsyslog_remote_loghost/oval/shared.xml -index 7b5d4968886..0fdd24e18c2 100644 ---- a/linux_os/guide/system/logging/rsyslog_sending_messages/rsyslog_remote_loghost/oval/shared.xml -+++ b/linux_os/guide/system/logging/rsyslog_sending_messages/rsyslog_remote_loghost/oval/shared.xml -@@ -39,7 +39,7 @@ - - - /etc/rsyslog.d -- *.conf -+ ^.+\.conf$ - ^\*\.\*[\s]+(?:@|\:omrelp\:) - 1 - diff --git a/SOURCES/scap-security-guide-0.1.59-fix_accounts_umask_interactive_users-PR_7898.patch b/SOURCES/scap-security-guide-0.1.59-fix_accounts_umask_interactive_users-PR_7898.patch deleted file mode 100644 index e61643e..0000000 --- a/SOURCES/scap-security-guide-0.1.59-fix_accounts_umask_interactive_users-PR_7898.patch +++ /dev/null @@ -1,51 +0,0 @@ -From f74121fc8b4074854e7cd96cc276711e80b54131 Mon Sep 17 00:00:00 2001 -From: Marcus Burghardt -Date: Thu, 18 Nov 2021 10:23:10 +0100 -Subject: [PATCH] Fix remediation for accounts_umask_interactive_users - -Included logic to ensure sed command considers only hidden files, -ignoring possible hidden folders. ---- - .../accounts_umask_interactive_users/ansible/shared.yml | 4 +++- - .../accounts_umask_interactive_users/bash/shared.sh | 4 +++- - .../tests/hidden_folder_ignored.pass.sh | 5 +++++ - 3 files changed, 11 insertions(+), 2 deletions(-) - create mode 100644 linux_os/guide/system/accounts/accounts-session/user_umask/accounts_umask_interactive_users/tests/hidden_folder_ignored.pass.sh - -diff --git a/linux_os/guide/system/accounts/accounts-session/user_umask/accounts_umask_interactive_users/ansible/shared.yml b/linux_os/guide/system/accounts/accounts-session/user_umask/accounts_umask_interactive_users/ansible/shared.yml -index 142f10a2157..67064ac4a3b 100644 ---- a/linux_os/guide/system/accounts/accounts-session/user_umask/accounts_umask_interactive_users/ansible/shared.yml -+++ b/linux_os/guide/system/accounts/accounts-session/user_umask/accounts_umask_interactive_users/ansible/shared.yml -@@ -8,5 +8,7 @@ - ansible.builtin.shell: - cmd: | - for dir in $(awk -F':' '{ if ($3 >= {{{ uid_min }}} && $3 != 65534) print $6}' /etc/passwd); do -- sed -i 's/^\([\s]*umask\s*\)/#\1/g' $dir/.[^\.]?* -+ for file in $(find $dir -maxdepth 1 -type f -name ".*"); do -+ sed -i 's/^\([\s]*umask\s*\)/#\1/g' $file -+ done - done -diff --git a/linux_os/guide/system/accounts/accounts-session/user_umask/accounts_umask_interactive_users/bash/shared.sh b/linux_os/guide/system/accounts/accounts-session/user_umask/accounts_umask_interactive_users/bash/shared.sh -index 0644b221df8..f81fdfe41fd 100644 ---- a/linux_os/guide/system/accounts/accounts-session/user_umask/accounts_umask_interactive_users/bash/shared.sh -+++ b/linux_os/guide/system/accounts/accounts-session/user_umask/accounts_umask_interactive_users/bash/shared.sh -@@ -5,5 +5,7 @@ - # disruption = low - - for dir in $(awk -F':' '{ if ($3 >= {{{ uid_min }}} && $3 != 65534) print $6}' /etc/passwd); do -- sed -i 's/^\([\s]*umask\s*\)/#\1/g' $dir/.[^\.]?* -+ for file in $(find $dir -maxdepth 1 -type f -name ".*"); do -+ sed -i 's/^\([\s]*umask\s*\)/#\1/g' $file -+ done - done -diff --git a/linux_os/guide/system/accounts/accounts-session/user_umask/accounts_umask_interactive_users/tests/hidden_folder_ignored.pass.sh b/linux_os/guide/system/accounts/accounts-session/user_umask/accounts_umask_interactive_users/tests/hidden_folder_ignored.pass.sh -new file mode 100644 -index 00000000000..b9e1b7519ef ---- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-session/user_umask/accounts_umask_interactive_users/tests/hidden_folder_ignored.pass.sh -@@ -0,0 +1,5 @@ -+#!/bin/bash -+ -+USER="cac_user" -+useradd -m $USER -+mkdir /home/$USER/.hiddenfolder diff --git a/SOURCES/scap-security-guide-0.1.59-multifile_templates-PR_7405.patch b/SOURCES/scap-security-guide-0.1.59-multifile_templates-PR_7405.patch deleted file mode 100644 index f626da8..0000000 --- a/SOURCES/scap-security-guide-0.1.59-multifile_templates-PR_7405.patch +++ /dev/null @@ -1,759 +0,0 @@ -commit 26f72c842ec184ed517fbf0d3224c421ad7cc9c6 -Author: Gabriel Becker -Date: Thu Feb 24 18:33:50 2022 +0100 - - Manual edited patch scap-security-guide-0.1.59-multifile_templates-PR_7405.patch. - -diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/ansible/shared.yml b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/ansible/shared.yml -deleted file mode 100644 -index f6f2ab4..0000000 ---- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/ansible/shared.yml -+++ /dev/null -@@ -1,25 +0,0 @@ --# platform = multi_platform_sle,Red Hat Enterprise Linux 8,multi_platform_fedora --# reboot = false --# strategy = restrict --# complexity = medium --# disruption = medium --- name: "Read list libraries without root ownership" -- find: -- paths: -- - "/usr/lib" -- - "/usr/lib64" -- - "/lib" -- - "/lib64" -- file_type: "directory" -- register: library_dirs_not_group_owned_by_root -- --- name: "Set group ownership of system library dirs to root" -- file: -- path: "{{ item.path }}" -- group: "root" -- state: "directory" -- mode: "{{ item.mode }}" -- with_items: "{{ library_dirs_not_group_owned_by_root.files }}" -- when: -- - library_dirs_not_group_owned_by_root.matched > 0 -- - item.gid != 0 -diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/bash/shared.sh b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/bash/shared.sh -deleted file mode 100644 -index 365b983..0000000 ---- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/bash/shared.sh -+++ /dev/null -@@ -1,7 +0,0 @@ --# platform = multi_platform_sle,Red Hat Enterprise Linux 8,multi_platform_fedora -- --find /lib \ --/lib64 \ --/usr/lib \ --/usr/lib64 \ --\! -group root -type d -exec chgrp root '{}' \; -diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/oval/shared.xml b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/oval/shared.xml -deleted file mode 100644 -index 3af60ff..0000000 ---- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/oval/shared.xml -+++ /dev/null -@@ -1,27 +0,0 @@ -- -- -- {{{ oval_metadata(" -- Checks that /lib, /lib64, /usr/lib, /usr/lib64, /lib/modules, and -- directories therein, are group-owned by root. -- ") }}} -- -- -- -- -- -- -- -- -- -- -- -- (^\/lib(|64)\/|^\/usr\/lib(|64)\/) -- -- state_group_owner_library_dirs_not_root -- -- -- -- 0 -- -- -- -diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/rule.yml b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/rule.yml -index 8c0acc0..10203c9 100644 ---- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/rule.yml -+++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/rule.yml -@@ -1,6 +1,6 @@ - documentation_complete: true - --prodtype: sle12,sle15,rhel8,fedora -+prodtype: fedora,rhel8,sle12,sle15,ubuntu2004 - - title: 'Verify that Shared Library Directories Have Root Group Ownership' - -@@ -40,6 +40,7 @@ references: - stigid@rhel8: RHEL-08-010350 - stigid@sle12: SLES-12-010876 - stigid@sle15: SLES-15-010356 -+ stigid@ubuntu2004: UBTU-20-010431 - - ocil_clause: 'any of these directories are not group-owned by root' - -@@ -52,3 +53,14 @@ ocil: |- - For each of these directories, run the following command to find files not - owned by root: -
      $ sudo find -L $DIR ! -user root -type d -exec chgrp root {} \;
      -+ -+template: -+ name: file_groupowner -+ vars: -+ filepath: -+ - /lib/ -+ - /lib64/ -+ - /usr/lib/ -+ - /usr/lib64/ -+ recursive: 'true' -+ filegid: '0' -diff --git a/products/ubuntu2004/profiles/stig.profile b/products/ubuntu2004/profiles/stig.profile -index ac96858..4c76824 100644 ---- a/products/ubuntu2004/profiles/stig.profile -+++ b/products/ubuntu2004/profiles/stig.profile -@@ -470,6 +470,7 @@ selections: - # UBTU-20-010430 The Ubuntu operating system library files must be group-owned by root. - - # UBTU-20-010431 The Ubuntu operating system library directories must be group-owned by root. -+ - dir_group_ownership_library_dirs - - # UBTU-20-010432 The Ubuntu operating system must be configured to preserve log records from failure events. - - service_rsyslog_enabled -diff --git a/shared/templates/file_groupowner/ansible.template b/shared/templates/file_groupowner/ansible.template -index 073d356..68fc2e1 100644 ---- a/shared/templates/file_groupowner/ansible.template -+++ b/shared/templates/file_groupowner/ansible.template -@@ -4,33 +4,44 @@ - # complexity = low - # disruption = low - -+{{% for path in FILEPATH %}} - {{% if IS_DIRECTORY and FILE_REGEX %}} - --- name: Find {{{ FILEPATH }}} file(s) matching {{{ FILE_REGEX }}} -+- name: Find {{{ path }}} file(s) matching {{{ FILE_REGEX[loop.index0] }}} - find: -- paths: "{{{ FILEPATH }}}" -- patterns: "{{{ FILE_REGEX }}}" -+ paths: "{{{ path }}}" -+ patterns: {{{ FILE_REGEX[loop.index0] }}} - use_regex: yes - register: files_found - --- name: Ensure group owner on {{{ FILEPATH }}} file(s) matching {{{ FILE_REGEX }}} -+- name: Ensure group owner on {{{ path }}} file(s) matching {{{ FILE_REGEX[loop.index0] }}} - file: - path: "{{ item.path }}" - group: "{{{ FILEGID }}}" - with_items: - - "{{ files_found.files }}" - -+{{% elif IS_DIRECTORY and RECURSIVE %}} -+ -+- name: Ensure group owner on {{{ path }}} recursively -+ file: -+ path: "{{{ path }}}" -+ state: directory -+ recurse: yes -+ group: "{{{ FILEGID }}}" -+ - {{% else %}} - --- name: Test for existence {{{ FILEPATH }}} -+- name: Test for existence {{{ path }}} - stat: -- path: "{{{ FILEPATH }}}" -+ path: "{{{ path }}}" - register: file_exists - --- name: Ensure group owner {{{ FILEGID }}} on {{{ FILEPATH }}} -+- name: Ensure group owner {{{ FILEGID }}} on {{{ path }}} - file: -- path: "{{{ FILEPATH }}}" -+ path: "{{{ path }}}" - group: "{{{ FILEGID }}}" - when: file_exists.stat is defined and file_exists.stat.exists - - {{% endif %}} -+{{% endfor %}} -diff --git a/shared/templates/file_groupowner/bash.template b/shared/templates/file_groupowner/bash.template -index 442e015..982d2f3 100644 ---- a/shared/templates/file_groupowner/bash.template -+++ b/shared/templates/file_groupowner/bash.template -@@ -4,13 +4,17 @@ - # complexity = low - # disruption = low - -+{{% for path in FILEPATH %}} - {{% if IS_DIRECTORY and FILE_REGEX %}} --readarray -t files < <(find {{{ FILEPATH }}}) -+readarray -t files < <(find {{{ path }}}) - for file in "${files[@]}"; do -- if basename $file | grep -q '{{{ FILE_REGEX }}}'; then -+ if basename $file | grep -qE '{{{ FILE_REGEX[loop.index0] }}}'; then - chgrp {{{ FILEGID }}} $file - fi - done -+{{% elif IS_DIRECTORY and RECURSIVE %}} -+find -L {{{ path }}} -type d -exec chgrp {{{ FILEGID }}} {} \; - {{% else %}} --chgrp {{{ FILEGID }}} {{{ FILEPATH }}} -+chgrp {{{ FILEGID }}} {{{ path }}} - {{% endif %}} -+{{% endfor %}} -diff --git a/shared/templates/file_groupowner/oval.template b/shared/templates/file_groupowner/oval.template -index 1b637a6..fd2e5db 100644 ---- a/shared/templates/file_groupowner/oval.template -+++ b/shared/templates/file_groupowner/oval.template -@@ -1,8 +1,16 @@ - - -+ {{% if FILEPATH is not string %}} -+ {{{ oval_metadata("This test makes sure that FILEPATH is group owned by " + FILEGID + ".") }}} -+ -+ {{% for filepath in FILEPATH %}} -+ -+ {{% endfor %}} -+ {{% else %}} - {{{ oval_metadata("This test makes sure that " + FILEPATH + " is group owned by " + FILEGID + ".") }}} - - -+ {{% endif %}} - - - {{%- if MISSING_FILE_PASS -%}} -@@ -12,23 +20,31 @@ - {{# All defined files must exist. When using regex, at least one file must match #}} - {{% set FILE_EXISTENCE = "all_exist" %}} - {{%- endif -%}} -- -- -- -+ -+ -+ {{% for filepath in FILEPATH %}} -+ -+ -+ - -- -+ - {{{ FILEGID }}} - -- -+ - {{%- if IS_DIRECTORY -%}} -- {{{ FILEPATH }}} -- {{%- if FILE_REGEX -%}} -- {{{ FILE_REGEX }}} -- {{%- else -%}} -- -- {{%- endif -%}} -- {{%- else -%}} -- {{{ FILEPATH }}} -- {{%- endif -%}} -+ {{%- if FILE_REGEX %}} -+ {{{ filepath[:-1] }}} -+ {{{ FILE_REGEX[loop.index0] }}} -+ {{%- elif RECURSIVE %}} -+ {{{ filepath[:-1] }}} -+ -+ {{%- else %}} -+ {{{ filepath[:-1] }}} -+ -+ {{%- endif %}} -+ {{%- else %}} -+ {{{ filepath }}} -+ {{%- endif %}} - -+ {{% endfor %}} - -diff --git a/shared/templates/file_groupowner/template.py b/shared/templates/file_groupowner/template.py -index 2263ae8..10baed9 100644 ---- a/shared/templates/file_groupowner/template.py -+++ b/shared/templates/file_groupowner/template.py -@@ -1,12 +1,25 @@ --from ssg.utils import parse_template_boolean_value -+from ssg.utils import parse_template_boolean_value, check_conflict_regex_directory - - def _file_owner_groupowner_permissions_regex(data): -- data["is_directory"] = data["filepath"].endswith("/") -- if "file_regex" in data and not data["is_directory"]: -- raise ValueError( -- "Used 'file_regex' key in rule '{0}' but filepath '{1}' does not " -- "specify a directory. Append '/' to the filepath or remove the " -- "'file_regex' key.".format(data["_rule_id"], data["filepath"])) -+ # this avoids code duplicates -+ if isinstance(data["filepath"], str): -+ data["filepath"] = [data["filepath"]] -+ -+ if "file_regex" in data: -+ # we can have a list of filepaths, but only one regex -+ # instead of declaring the same regex multiple times -+ if isinstance(data["file_regex"], str): -+ data["file_regex"] = [data["file_regex"]] * len(data["filepath"]) -+ -+ # if the length of filepaths and file_regex are not the same, then error. -+ # in case we have multiple regexes for just one filepath, than we need -+ # to declare that filepath multiple times -+ if len(data["filepath"]) != len(data["file_regex"]): -+ raise ValueError( -+ "You should have one file_path per file_regex. Please check " -+ "rule '{0}'".format(data["_rule_id"])) -+ -+ check_conflict_regex_directory(data) - - - def preprocess(data, lang): -@@ -14,6 +27,10 @@ def preprocess(data, lang): - - data["missing_file_pass"] = parse_template_boolean_value(data, parameter="missing_file_pass", default_value=False) - -+ data["recursive"] = parse_template_boolean_value(data, -+ parameter="recursive", -+ default_value=False) -+ - if lang == "oval": - data["fileid"] = data["_rule_id"].replace("file_groupowner", "") - return data -diff --git a/shared/templates/file_owner/ansible.template b/shared/templates/file_owner/ansible.template -index 6083fbe..80eaae8 100644 ---- a/shared/templates/file_owner/ansible.template -+++ b/shared/templates/file_owner/ansible.template -@@ -4,33 +4,44 @@ - # complexity = low - # disruption = low - -+{{% for path in FILEPATH %}} - {{% if IS_DIRECTORY and FILE_REGEX %}} - --- name: Find {{{ FILEPATH }}} file(s) matching {{{ FILE_REGEX }}} -+- name: Find {{{ path }}} file(s) matching {{{ FILE_REGEX[loop.index0] }}} - find: -- paths: "{{{ FILEPATH }}}" -- patterns: "{{{ FILE_REGEX }}}" -+ paths: "{{{ path }}}" -+ patterns: {{{ FILE_REGEX[loop.index0] }}} - use_regex: yes - register: files_found - --- name: Ensure group owner on {{{ FILEPATH }}} file(s) matching {{{ FILE_REGEX }}} -+- name: Ensure group owner on {{{ path }}} file(s) matching {{{ FILE_REGEX[loop.index0] }}} - file: - path: "{{ item.path }}" - owner: "{{{ FILEUID }}}" - with_items: - - "{{ files_found.files }}" - -+{{% elif IS_DIRECTORY and RECURSIVE %}} -+ -+- name: Ensure owner on {{{ path }}} recursively -+ file: -+ paths "{{{ path }}}" -+ state: directory -+ recurse: yes -+ owner: "{{{ FILEUID }}}" -+ - {{% else %}} - --- name: Test for existence {{{ FILEPATH }}} -+- name: Test for existence {{{ path }}} - stat: -- path: "{{{ FILEPATH }}}" -+ path: "{{{ path }}}" - register: file_exists - --- name: Ensure owner {{{ FILEUID }}} on {{{ FILEPATH }}} -+- name: Ensure owner {{{ FILEUID }}} on {{{ path }}} - file: -- path: "{{{ FILEPATH }}}" -+ path: "{{{ path }}}" - owner: "{{{ FILEUID }}}" - when: file_exists.stat is defined and file_exists.stat.exists - - {{% endif %}} -+{{% endfor %}} -diff --git a/shared/templates/file_owner/bash.template b/shared/templates/file_owner/bash.template -index 16025b7..27b5a2a 100644 ---- a/shared/templates/file_owner/bash.template -+++ b/shared/templates/file_owner/bash.template -@@ -4,13 +4,17 @@ - # complexity = low - # disruption = low - -+{{% for path in FILEPATH %}} - {{% if IS_DIRECTORY and FILE_REGEX %}} --readarray -t files < <(find {{{ FILEPATH }}}) -+readarray -t files < <(find {{{ path }}}) - for file in "${files[@]}"; do -- if basename $file | grep -q '{{{ FILE_REGEX }}}'; then -+ if basename $file | grep -qE '{{{ FILE_REGEX[loop.index0] }}}'; then - chown {{{ FILEUID }}} $file - fi - done -+{{% elif IS_DIRECTORY and RECURSIVE %}} -+find -L {{{ path }}} -type d -exec chown {{{ FILEUID }}} {} \; - {{% else %}} --chown {{{ FILEUID }}} {{{ FILEPATH }}} -+chown {{{ FILEUID }}} {{{ path }}} - {{% endif %}} -+{{% endfor %}} -diff --git a/shared/templates/file_owner/oval.template b/shared/templates/file_owner/oval.template -index 23ac161..105e29c 100644 ---- a/shared/templates/file_owner/oval.template -+++ b/shared/templates/file_owner/oval.template -@@ -1,8 +1,16 @@ - - -+ {{% if FILEPATH is not string %}} -+ {{{ oval_metadata("This test makes sure that FILEPATH is owned by " + FILEUID + ".") }}} -+ -+ {{% for filepath in FILEPATH %}} -+ -+ {{% endfor %}} -+ {{% else %}} - {{{ oval_metadata("This test makes sure that " + FILEPATH + " is owned by " + FILEUID + ".") }}} - - -+ {{% endif %}} - - - {{%- if MISSING_FILE_PASS -%}} -@@ -12,23 +20,30 @@ - {{# All defined files must exist. When using regex, at least one file must match #}} - {{% set FILE_EXISTENCE = "all_exist" %}} - {{%- endif -%}} -- -- -- -+ -+ {{% for filepath in FILEPATH %}} -+ -+ -+ - -- -+ - {{{ FILEUID }}} - -- -+ - {{%- if IS_DIRECTORY -%}} -- {{{ FILEPATH }}} -- {{%- if FILE_REGEX -%}} -- {{{ FILE_REGEX }}} -- {{%- else -%}} -- -- {{%- endif -%}} -- {{%- else -%}} -- {{{ FILEPATH }}} -- {{%- endif -%}} -+ {{%- if FILE_REGEX %}} -+ {{{ filepath[:-1] }}} -+ {{{ FILE_REGEX[loop.index0] }}} -+ {{%- elif RECURSIVE %}} -+ {{{ filepath[:-1] }}} -+ -+ {{%- else %}} -+ {{{ filepath[:-1] }}} -+ -+ {{%- endif %}} -+ {{%- else %}} -+ {{{ filepath }}} -+ {{%- endif %}} - -+ {{% endfor %}} - -diff --git a/shared/templates/file_owner/template.py b/shared/templates/file_owner/template.py -index 0dd0008..1391dcf 100644 ---- a/shared/templates/file_owner/template.py -+++ b/shared/templates/file_owner/template.py -@@ -1,12 +1,25 @@ --from ssg.utils import parse_template_boolean_value -+from ssg.utils import parse_template_boolean_value, check_conflict_regex_directory - - def _file_owner_groupowner_permissions_regex(data): -- data["is_directory"] = data["filepath"].endswith("/") -- if "file_regex" in data and not data["is_directory"]: -- raise ValueError( -- "Used 'file_regex' key in rule '{0}' but filepath '{1}' does not " -- "specify a directory. Append '/' to the filepath or remove the " -- "'file_regex' key.".format(data["_rule_id"], data["filepath"])) -+ # this avoids code duplicates -+ if isinstance(data["filepath"], str): -+ data["filepath"] = [data["filepath"]] -+ -+ if "file_regex" in data: -+ # we can have a list of filepaths, but only one regex -+ # instead of declaring the same regex multiple times -+ if isinstance(data["file_regex"], str): -+ data["file_regex"] = [data["file_regex"]] * len(data["filepath"]) -+ -+ # if the length of filepaths and file_regex are not the same, then error. -+ # in case we have multiple regexes for just one filepath, than we need -+ # to declare that filepath multiple times -+ if len(data["filepath"]) != len(data["file_regex"]): -+ raise ValueError( -+ "You should have one file_path per file_regex. Please check " -+ "rule '{0}'".format(data["_rule_id"])) -+ -+ check_conflict_regex_directory(data) - - - def preprocess(data, lang): -@@ -14,6 +27,10 @@ def preprocess(data, lang): - - data["missing_file_pass"] = parse_template_boolean_value(data, parameter="missing_file_pass", default_value=False) - -+ data["recursive"] = parse_template_boolean_value(data, -+ parameter="recursive", -+ default_value=False) -+ - if lang == "oval": - data["fileid"] = data["_rule_id"].replace("file_owner", "") - return data -diff --git a/shared/templates/file_permissions/ansible.template b/shared/templates/file_permissions/ansible.template -index 029d03f..fc211bd 100644 ---- a/shared/templates/file_permissions/ansible.template -+++ b/shared/templates/file_permissions/ansible.template -@@ -3,33 +3,45 @@ - # strategy = configure - # complexity = low - # disruption = low -+ -+{{% for path in FILEPATH %}} - {{% if IS_DIRECTORY and FILE_REGEX %}} - --- name: Find {{{ FILEPATH }}} file(s) -+- name: Find {{{ path }}} file(s) - find: -- paths: "{{{ FILEPATH }}}" -- patterns: "{{{ FILE_REGEX }}}" -+ paths: "{{{ path }}}" -+ patterns: {{{ FILE_REGEX[loop.index0] }}} - use_regex: yes - register: files_found - --- name: Set permissions for {{{ FILEPATH }}} file(s) -+- name: Set permissions for {{{ path }}} file(s) - file: - path: "{{ item.path }}" - mode: "{{{ FILEMODE }}}" - with_items: - - "{{ files_found.files }}" - -+{{% elif IS_DIRECTORY and RECURSIVE %}} -+ -+- name: Set permissions for {{{ path }}} recursively -+ file: -+ path: "{{{ path }}}" -+ state: directory -+ recurse: yes -+ mode: "{{{ FILEMODE }}}" -+ - {{% else %}} - --- name: Test for existence {{{ FILEPATH }}} -+- name: Test for existence {{{ path }}} - stat: -- path: "{{{ FILEPATH }}}" -+ path: "{{{ path }}}" - register: file_exists - --- name: Ensure permission {{{ FILEMODE }}} on {{{ FILEPATH }}} -+- name: Ensure permission {{{ FILEMODE }}} on {{{ path }}} - file: -- path: "{{{ FILEPATH }}}" -+ path: "{{{ path }}}" - mode: "{{{ FILEMODE }}}" - when: file_exists.stat is defined and file_exists.stat.exists - - {{% endif %}} -+{{% endfor %}} -diff --git a/shared/templates/file_permissions/bash.template b/shared/templates/file_permissions/bash.template -index af9cf4e..e0d8fe9 100644 ---- a/shared/templates/file_permissions/bash.template -+++ b/shared/templates/file_permissions/bash.template -@@ -4,13 +4,17 @@ - # complexity = low - # disruption = low - -+{{% for path in FILEPATH %}} - {{% if IS_DIRECTORY and FILE_REGEX %}} --readarray -t files < <(find {{{ FILEPATH }}}) -+readarray -t files < <(find {{{ path }}}) - for file in "${files[@]}"; do -- if basename $file | grep -q '{{{ FILE_REGEX }}}'; then -+ if basename $file | grep -qE '{{{ FILE_REGEX[loop.index0] }}}'; then - chmod {{{ FILEMODE }}} $file - fi - done -+{{% elif IS_DIRECTORY and RECURSIVE %}} -+find -L {{{ path }}} -type d -exec chmod {{{ FILEMODE }}} {} \; - {{% else %}} --chmod {{{ FILEMODE }}} {{{ FILEPATH }}} -+chmod {{{ FILEMODE }}} {{{ path }}} - {{% endif %}} -+{{% endfor %}} -diff --git a/shared/templates/file_permissions/oval.template b/shared/templates/file_permissions/oval.template -index f570ff8..89083e8 100644 ---- a/shared/templates/file_permissions/oval.template -+++ b/shared/templates/file_permissions/oval.template -@@ -16,31 +16,47 @@ - {{%- endif -%}} - - -- {{{ oval_metadata("This test makes sure that " + FILEPATH + " has mode " + FILEMODE + ". -+ {{% if FILEPATH is not string %}} -+ {{{ oval_metadata("This test makes sure that FILEPATH has mode " + FILEMODE + ". -+ If the target file or directory has an extended ACL, then it will fail the mode check. -+ ") }}} -+ -+ {{% for filepath in FILEPATH %}} -+ -+ {{% endfor %}} -+ {{% else %}} -+ {{{ oval_metadata("This test makes sure that " + FILEPATH + " has mode " + FILEMODE + ". - If the target file or directory has an extended ACL, then it will fail the mode check. - ") }}} - - -+ {{% endif %}} - - -- -- -- -- -- -+ -+ {{% for filepath in FILEPATH %}} -+ -+ -+ -+ -+ - {{{ STATEMODE | indent(6) }}} -- -- -+ -+ - - {{%- if IS_DIRECTORY %}} -- {{{ FILEPATH }}} - {{%- if FILE_REGEX %}} -- {{{ FILE_REGEX }}} -+ {{{ filepath[:-1] }}} -+ {{{ FILE_REGEX[loop.index0] }}} -+ {{%- elif RECURSIVE %}} -+ {{{ filepath[:-1] }}} -+ - {{%- else %}} -+ {{{ filepath[:-1] }}} - - {{%- endif %}} - {{%- else %}} -- {{{ FILEPATH }}} -+ {{{ filepath }}} - {{%- endif %}} - - {{%- if ALLOW_STRICTER_PERMISSIONS %}} -@@ -49,8 +65,8 @@ - https://github.com/OpenSCAP/openscap/pull/1709 but this line should be kept until the - fix is widely available. The fix is expected to be part of OpenSCAP >= 1.3.5. - #}} -- state_file_permissions{{{ FILEID }}}_mode_not_{{{ FILEMODE }}} -+ state_file_permissions{{{ FILEID }}}_{{{ loop.index0 }}}_mode_not_{{{ FILEMODE }}} - {{%- endif %}} -- -- -+ -+ {{% endfor %}} - -diff --git a/shared/templates/file_permissions/template.py b/shared/templates/file_permissions/template.py -index 677e083..6e20a62 100644 ---- a/shared/templates/file_permissions/template.py -+++ b/shared/templates/file_permissions/template.py -@@ -1,12 +1,25 @@ --from ssg.utils import parse_template_boolean_value -+from ssg.utils import parse_template_boolean_value, check_conflict_regex_directory - - def _file_owner_groupowner_permissions_regex(data): -- data["is_directory"] = data["filepath"].endswith("/") -- if "file_regex" in data and not data["is_directory"]: -- raise ValueError( -- "Used 'file_regex' key in rule '{0}' but filepath '{1}' does not " -- "specify a directory. Append '/' to the filepath or remove the " -- "'file_regex' key.".format(data["_rule_id"], data["filepath"])) -+ # this avoids code duplicates -+ if isinstance(data["filepath"], str): -+ data["filepath"] = [data["filepath"]] -+ -+ if "file_regex" in data: -+ # we can have a list of filepaths, but only one regex -+ # instead of declaring the same regex multiple times -+ if isinstance(data["file_regex"], str): -+ data["file_regex"] = [data["file_regex"]] * len(data["filepath"]) -+ -+ # if the length of filepaths and file_regex are not the same, then error. -+ # in case we have multiple regexes for just one filepath, than we need -+ # to declare that filepath multiple times -+ if len(data["filepath"]) != len(data["file_regex"]): -+ raise ValueError( -+ "You should have one file_path per file_regex. Please check " -+ "rule '{0}'".format(data["_rule_id"])) -+ -+ check_conflict_regex_directory(data) - - - def preprocess(data, lang): -@@ -16,6 +29,10 @@ def preprocess(data, lang): - - data["missing_file_pass"] = parse_template_boolean_value(data, parameter="missing_file_pass", default_value=False) - -+ data["recursive"] = parse_template_boolean_value(data, -+ parameter="recursive", -+ default_value=False) -+ - if lang == "oval": - data["fileid"] = data["_rule_id"].replace("file_permissions", "") - # build the state that describes our mode -diff --git a/ssg/utils.py b/ssg/utils.py -index b0ded09..2248b1e 100644 ---- a/ssg/utils.py -+++ b/ssg/utils.py -@@ -303,3 +303,25 @@ def parse_template_boolean_value(data, parameter, default_value): - raise ValueError( - "Template parameter {} used in rule {} cannot accept the " - "value {}".format(parameter, data["_rule_id"], value)) -+ -+ -+def check_conflict_regex_directory(data): -+ """ -+ Validate that either all path are directories OR file_regex exists. -+ -+ Throws ValueError. -+ """ -+ for f in data["filepath"]: -+ if "is_directory" in data and data["is_directory"] != f.endswith("/"): -+ raise ValueError( -+ "If passing a list of filepaths, all of them need to be " -+ "either directories or files. Mixing is not possible. " -+ "Please fix rules '{0}' filepath '{1}'".format(data["_rule_id"], f)) -+ -+ data["is_directory"] = f.endswith("/") -+ -+ if "file_regex" in data and not data["is_directory"]: -+ raise ValueError( -+ "Used 'file_regex' key in rule '{0}' but filepath '{1}' does not " -+ "specify a directory. Append '/' to the filepath or remove the " -+ "'file_regex' key.".format(data["_rule_id"], f)) diff --git a/SOURCES/scap-security-guide-0.1.59-rsyslog_encrypt_offload_fix_7741-PR_7755.patch b/SOURCES/scap-security-guide-0.1.59-rsyslog_encrypt_offload_fix_7741-PR_7755.patch deleted file mode 100644 index 7291784..0000000 --- a/SOURCES/scap-security-guide-0.1.59-rsyslog_encrypt_offload_fix_7741-PR_7755.patch +++ /dev/null @@ -1,245 +0,0 @@ -From b8fd95776ce894006163b2bb5e34682e5844ca1e Mon Sep 17 00:00:00 2001 -From: Matthew Burket -Date: Thu, 21 Oct 2021 14:43:51 -0500 -Subject: [PATCH 1/5] Always esacpe parameter in ansible_set_config_file - ---- - .../ansible/shared.yml | 5 +++-- - .../ansible/shared.yml | 5 +++-- - .../ansible/shared.yml | 5 +++-- - shared/macros-ansible.jinja | 17 ++++++++++------- - 4 files changed, 19 insertions(+), 13 deletions(-) - -diff --git a/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdriverauthmode/ansible/shared.yml b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdriverauthmode/ansible/shared.yml -index 637f90003b2..ca5a405f877 100644 ---- a/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdriverauthmode/ansible/shared.yml -+++ b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdriverauthmode/ansible/shared.yml -@@ -5,5 +5,6 @@ - # disruption = low - - {{{ ansible_set_config_file_dir(msg, "/etc/rsyslog.conf", "/etc/rsyslog.d", "/etc/rsyslog.conf", -- "$ActionSendStreamDriverAuthMode", separator=' ', separator_regex='\s', -- value="x509/name", create='yes') }}} -+ "$ActionSendStreamDriverAuthMode", separator=' ', separator_regex='\s', -+ value="x509/name", create='yes') -+}}} -diff --git a/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdrivermode/ansible/shared.yml b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdrivermode/ansible/shared.yml -index 5d11103fc0f..1f001f47e07 100644 ---- a/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdrivermode/ansible/shared.yml -+++ b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_actionsendstreamdrivermode/ansible/shared.yml -@@ -4,6 +4,7 @@ - # complexity = low - # disruption = low - --{{{ ansible_set_config_file(file="/etc/rsyslog.d/encrypt.conf", -- parameter="$ActionSendStreamDriverMode", value="1", create=true, separator=" ", separator_regex=" ") -+{{{ ansible_set_config_file_dir(msg, "/etc/rsyslog.conf", "/etc/rsyslog.d", "/etc/rsyslog.conf", -+ parameter="$ActionSendStreamDriverMode", value="1", create=true, separator=" ", -+ separator_regex=" ") - }}} -diff --git a/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_defaultnetstreamdriver/ansible/shared.yml b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_defaultnetstreamdriver/ansible/shared.yml -index 035ab152876..4016a08721e 100644 ---- a/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_defaultnetstreamdriver/ansible/shared.yml -+++ b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_defaultnetstreamdriver/ansible/shared.yml -@@ -4,6 +4,7 @@ - # complexity = low - # disruption = low - --{{{ ansible_set_config_file(file="/etc/rsyslog.d/encrypt.conf", -- parameter="$DefaultNetstreamDriver", value="gtls", create=true, separator=" ", separator_regex=" ") -+{{{ ansible_set_config_file_dir(msg, "/etc/rsyslog.conf", "/etc/rsyslog.d", "/etc/rsyslog.conf", -+ parameter="$DefaultNetstreamDriver", value="gtls", create=true, separator=" " -+ , separator_regex=" ") - }}} -diff --git a/shared/macros-ansible.jinja b/shared/macros-ansible.jinja -index 563350743fe..0f8dba56dab 100644 ---- a/shared/macros-ansible.jinja -+++ b/shared/macros-ansible.jinja -@@ -25,14 +25,17 @@ value: "Setting={{ varname1 }}" - - Note that all string-like parameters are single quoted in the YAML. - #}} --{{%- macro ansible_lineinfile(msg='', path='', regex='', new_line='', create='no', state='present', with_items='', register='', when='', validate='', insert_after='', insert_before='', check_mode=False) -%}} -+{{%- macro ansible_lineinfile(msg='', path='', regex='', new_line='', create='no', state='present', with_items='', register='', when='', validate='', insert_after='', insert_before='', check_mode=False, escape_regex=False) -%}} - - name: "{{{ msg or rule_title }}}" - lineinfile: - path: '{{{ path }}}' - create: {{{ create }}} -- {{%- if regex %}} -+ {{%- if regex and not escape_regex %}} - regexp: '{{{ regex }}}' - {{%- endif %}} -+ {{%- if regex and escape_regex %}} -+ regexp: '{{ {{{ regex }}} | regex_escape }}' -+ {{%- endif %}} - {{%- if state == 'present' %}} - line: '{{{ new_line }}}' - state: present -@@ -121,7 +124,7 @@ value: "Setting={{ varname1 }}" - ini configuration files are best served with the ini Ansible module - instead of lineinfile-based solutions. - #}} --{{%- macro ansible_set_config_file(msg, file, parameter, separator=' ', separator_regex='\s+', value='', prefix_regex='^\s*', create='no', validate='', insert_after='', insert_before='') %}} -+{{%- macro ansible_set_config_file(msg, file, parameter, separator=' ', separator_regex='\s+', value='', prefix_regex='^\s*', create='no', validate='', insert_after='', insert_before='', escape_regex=False) %}} - {{{ ansible_only_lineinfile(msg, file, prefix_regex + parameter + separator_regex, parameter + separator + value, create=create, block=True, validate=validate, insert_after=insert_after, insert_before=insert_before) }}} - {{%- endmacro %}} - -@@ -143,12 +146,12 @@ value: "Setting={{ varname1 }}" - {{%- set new_line = parameter + separator + value -%}} - - name: '{{{ msg or rule_title }}}' - block: -- {{{ ansible_lineinfile("Check for duplicate values", config_file, regex=line_regex, create='no', state='absent', register='dupes', check_mode=True)|indent }}} -- {{{ ansible_lineinfile("Deduplicate values from " + config_file, config_file, regex=line_regex, create='no', state='absent', when='dupes.found is defined and dupes.found > 1')|indent }}} -+ {{{ ansible_lineinfile("Check for duplicate values", config_file, regex=line_regex, create='no', state='absent', register='dupes', check_mode=True, escape_regex=True)|indent }}} -+ {{{ ansible_lineinfile("Deduplicate values from " + config_file, config_file, regex=line_regex, create='no', state='absent', when='dupes.found is defined and dupes.found > 1', escape_regex=True)|indent }}} - {{{ ansible_stat("Check if " + config_dir + " exists", path=config_dir, register=dir_exists)|indent }}} - {{{ ansible_find("Check if the parameter " + parameter + " is present in " + config_dir, paths=config_dir, contains=line_regex, register=dir_parameter, when=find_when)|indent }}} -- {{{ ansible_lineinfile("Remove parameter from files in " + config_dir, path="{{ item.path }}", regex=line_regex, state="absent", with_items=lineinfile_items, when=lineinfile_when)|indent }}} -- {{{ ansible_lineinfile("Insert correct line to " + set_file, set_file, regex=line_regex, new_line=new_line, create=create, state='present', validate=validate, insert_after=insert_after, insert_before=insert_before)|indent }}} -+ {{{ ansible_lineinfile("Remove parameter from files in " + config_dir, path="{{ item.path }}", regex=line_regex, state="absent", with_items=lineinfile_items, when=lineinfile_when, escape_regex=True)|indent }}} -+ {{{ ansible_lineinfile("Insert correct line to " + set_file, set_file, regex=line_regex, new_line=new_line, create=create, state='present', validate=validate, insert_after=insert_after, insert_before=insert_before, escape_regex=True)|indent }}} - {{%- endmacro %}} - - {{# - -From 5635bf94c9274511e3d63feb8d4082c4ec9144f3 Mon Sep 17 00:00:00 2001 -From: Matthew Burket -Date: Tue, 26 Oct 2021 13:01:27 -0500 -Subject: [PATCH 2/5] Fix a couple items from reviewers on ansible_lineinfile - escaping - ---- - .../ansible/shared.yml | 4 ++-- - shared/macros-ansible.jinja | 3 +-- - 2 files changed, 3 insertions(+), 4 deletions(-) - -diff --git a/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_defaultnetstreamdriver/ansible/shared.yml b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_defaultnetstreamdriver/ansible/shared.yml -index 4016a08721e..3cc18d4476e 100644 ---- a/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_defaultnetstreamdriver/ansible/shared.yml -+++ b/linux_os/guide/system/logging/ensure_rsyslog_log_file_configuration/rsyslog_encrypt_offload_defaultnetstreamdriver/ansible/shared.yml -@@ -5,6 +5,6 @@ - # disruption = low - - {{{ ansible_set_config_file_dir(msg, "/etc/rsyslog.conf", "/etc/rsyslog.d", "/etc/rsyslog.conf", -- parameter="$DefaultNetstreamDriver", value="gtls", create=true, separator=" " -- , separator_regex=" ") -+ parameter="$DefaultNetstreamDriver", value="gtls", create=true, -+ separator=" ", separator_regex=" ") - }}} -diff --git a/shared/macros-ansible.jinja b/shared/macros-ansible.jinja -index 0f8dba56dab..752d220bbfc 100644 ---- a/shared/macros-ansible.jinja -+++ b/shared/macros-ansible.jinja -@@ -32,8 +32,7 @@ value: "Setting={{ varname1 }}" - create: {{{ create }}} - {{%- if regex and not escape_regex %}} - regexp: '{{{ regex }}}' -- {{%- endif %}} -- {{%- if regex and escape_regex %}} -+ {{%- elif regex and escape_regex %}} - regexp: '{{ {{{ regex }}} | regex_escape }}' - {{%- endif %}} - {{%- if state == 'present' %}} - -From f6541126a4d19bfef8752028467659ab9d9f74ed Mon Sep 17 00:00:00 2001 -From: Matthew Burket -Date: Tue, 2 Nov 2021 08:32:18 -0500 -Subject: [PATCH 3/5] Fix escaping in ansible_lineinfile macro - ---- - shared/macros-ansible.jinja | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/shared/macros-ansible.jinja b/shared/macros-ansible.jinja -index 752d220bbfc..1e0ba6260bb 100644 ---- a/shared/macros-ansible.jinja -+++ b/shared/macros-ansible.jinja -@@ -33,7 +33,7 @@ value: "Setting={{ varname1 }}" - {{%- if regex and not escape_regex %}} - regexp: '{{{ regex }}}' - {{%- elif regex and escape_regex %}} -- regexp: '{{ {{{ regex }}} | regex_escape }}' -+ regexp: {{{ regex }}} | regex_escape - {{%- endif %}} - {{%- if state == 'present' %}} - line: '{{{ new_line }}}' - -From ef6d300a707dc272eaa9442ece135009287bfdf5 Mon Sep 17 00:00:00 2001 -From: Matthew Burket -Date: Wed, 3 Nov 2021 11:15:11 -0500 -Subject: [PATCH 4/5] Move regex_escape to ansible_set_config_file_dir - ---- - shared/macros-ansible.jinja | 16 +++++++--------- - 1 file changed, 7 insertions(+), 9 deletions(-) - -diff --git a/shared/macros-ansible.jinja b/shared/macros-ansible.jinja -index 1e0ba6260bb..8e7ce1a1206 100644 ---- a/shared/macros-ansible.jinja -+++ b/shared/macros-ansible.jinja -@@ -25,15 +25,13 @@ value: "Setting={{ varname1 }}" - - Note that all string-like parameters are single quoted in the YAML. - #}} --{{%- macro ansible_lineinfile(msg='', path='', regex='', new_line='', create='no', state='present', with_items='', register='', when='', validate='', insert_after='', insert_before='', check_mode=False, escape_regex=False) -%}} -+{{%- macro ansible_lineinfile(msg='', path='', regex='', new_line='', create='no', state='present', with_items='', register='', when='', validate='', insert_after='', insert_before='', check_mode=False) -%}} - - name: "{{{ msg or rule_title }}}" - lineinfile: - path: '{{{ path }}}' - create: {{{ create }}} -- {{%- if regex and not escape_regex %}} -+ {{%- if regex %}} - regexp: '{{{ regex }}}' -- {{%- elif regex and escape_regex %}} -- regexp: {{{ regex }}} | regex_escape - {{%- endif %}} - {{%- if state == 'present' %}} - line: '{{{ new_line }}}' -@@ -138,19 +136,19 @@ value: "Setting={{ varname1 }}" - {{%- set var_dir = config_dir | replace("/", "_") | replace("-", "_") | replace(".", "_") -%}} - {{%- set dir_exists = var_dir + "_exists" -%}} - {{%- set dir_parameter = var_dir + "_has_parameter" -%}} --{{%- set line_regex = prefix_regex + parameter + separator_regex -%}} -+{{%- set line_regex = prefix_regex + "{{\"" + parameter + "\"| regex_escape }}" + separator_regex -%}} - {{%- set find_when = dir_exists + ".stat.isdir is defined and " + dir_exists + ".stat.isdir" -%}} - {{%- set lineinfile_items = "{{ " + dir_parameter + ".files }}" -%}} - {{%- set lineinfile_when = dir_parameter + ".matched" -%}} - {{%- set new_line = parameter + separator + value -%}} - - name: '{{{ msg or rule_title }}}' - block: -- {{{ ansible_lineinfile("Check for duplicate values", config_file, regex=line_regex, create='no', state='absent', register='dupes', check_mode=True, escape_regex=True)|indent }}} -- {{{ ansible_lineinfile("Deduplicate values from " + config_file, config_file, regex=line_regex, create='no', state='absent', when='dupes.found is defined and dupes.found > 1', escape_regex=True)|indent }}} -+ {{{ ansible_lineinfile("Check for duplicate values", config_file, regex=line_regex, create='no', state='absent', register='dupes', check_mode=True)|indent }}} -+ {{{ ansible_lineinfile("Deduplicate values from " + config_file, config_file, regex=line_regex, create='no', state='absent', when='dupes.found is defined and dupes.found > 1')|indent }}} - {{{ ansible_stat("Check if " + config_dir + " exists", path=config_dir, register=dir_exists)|indent }}} - {{{ ansible_find("Check if the parameter " + parameter + " is present in " + config_dir, paths=config_dir, contains=line_regex, register=dir_parameter, when=find_when)|indent }}} -- {{{ ansible_lineinfile("Remove parameter from files in " + config_dir, path="{{ item.path }}", regex=line_regex, state="absent", with_items=lineinfile_items, when=lineinfile_when, escape_regex=True)|indent }}} -- {{{ ansible_lineinfile("Insert correct line to " + set_file, set_file, regex=line_regex, new_line=new_line, create=create, state='present', validate=validate, insert_after=insert_after, insert_before=insert_before, escape_regex=True)|indent }}} -+ {{{ ansible_lineinfile("Remove parameter from files in " + config_dir, path="{{ item.path }}", regex=line_regex, state="absent", with_items=lineinfile_items, when=lineinfile_when)|indent }}} -+ {{{ ansible_lineinfile("Insert correct line to " + set_file, set_file, regex=line_regex, new_line=new_line, create=create, state='present', validate=validate, insert_after=insert_after, insert_before=insert_before)|indent }}} - {{%- endmacro %}} - - {{# - -From c29550ef26fc283ce5e72038fddf70aa716f4d1c Mon Sep 17 00:00:00 2001 -From: Matthew Burket -Date: Thu, 4 Nov 2021 08:53:42 -0500 -Subject: [PATCH 5/5] Fix ansible-lint lint issues - ---- - shared/macros-ansible.jinja | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/shared/macros-ansible.jinja b/shared/macros-ansible.jinja -index 8e7ce1a1206..76f05e76b88 100644 ---- a/shared/macros-ansible.jinja -+++ b/shared/macros-ansible.jinja -@@ -136,7 +136,7 @@ value: "Setting={{ varname1 }}" - {{%- set var_dir = config_dir | replace("/", "_") | replace("-", "_") | replace(".", "_") -%}} - {{%- set dir_exists = var_dir + "_exists" -%}} - {{%- set dir_parameter = var_dir + "_has_parameter" -%}} --{{%- set line_regex = prefix_regex + "{{\"" + parameter + "\"| regex_escape }}" + separator_regex -%}} -+{{%- set line_regex = prefix_regex + "{{ \"" + parameter + "\"| regex_escape }}" + separator_regex -%}} - {{%- set find_when = dir_exists + ".stat.isdir is defined and " + dir_exists + ".stat.isdir" -%}} - {{%- set lineinfile_items = "{{ " + dir_parameter + ".files }}" -%}} - {{%- set lineinfile_when = dir_parameter + ".matched" -%}} diff --git a/SOURCES/scap-security-guide-0.1.59-sshd_priv_keys_600-PR_7742.patch b/SOURCES/scap-security-guide-0.1.59-sshd_priv_keys_600-PR_7742.patch deleted file mode 100644 index eb8b661..0000000 --- a/SOURCES/scap-security-guide-0.1.59-sshd_priv_keys_600-PR_7742.patch +++ /dev/null @@ -1,71 +0,0 @@ -From a5cce64337e8b8617f3bf3ee1311e80d652754ea Mon Sep 17 00:00:00 2001 -From: Gabriel Becker -Date: Thu, 14 Oct 2021 12:12:16 +0200 -Subject: [PATCH] Set sshd priv keys permissions 600 for all products. - ---- - .../file_permissions_sshd_private_key/rule.yml | 15 +++------------ - .../tests/correct_value.pass.sh | 8 +------- - .../tests/multiple_keys.fail.sh | 2 +- - 4 files changed, 7 insertions(+), 21 deletions(-) - -diff --git a/linux_os/guide/services/ssh/file_permissions_sshd_private_key/rule.yml b/linux_os/guide/services/ssh/file_permissions_sshd_private_key/rule.yml -index bda7ae4d53b..ddda4075e21 100644 ---- a/linux_os/guide/services/ssh/file_permissions_sshd_private_key/rule.yml -+++ b/linux_os/guide/services/ssh/file_permissions_sshd_private_key/rule.yml -@@ -3,11 +3,7 @@ documentation_complete: true - title: 'Verify Permissions on SSH Server Private *_key Key Files' - - description: |- -- {{% if product in ['ubuntu1804','opensuse', 'sle12', 'sle15'] %}} - {{{ describe_file_permissions(file="/etc/ssh/*_key", perms="0600") }}} -- {{% else %}} -- {{{ describe_file_permissions(file="/etc/ssh/*_key", perms="0640") }}} -- {{% endif %}} - - rationale: |- - If an unauthorized user obtains the private SSH host key file, the host could be -@@ -45,10 +41,10 @@ references: - stigid@sle12: SLES-12-030220 - stigid@sle15: SLES-15-040250 - --ocil_clause: '{{{ ocil_clause_file_permissions(file="/etc/ssh/*_key", perms="-rw-r-----") }}}' -+ocil_clause: '{{{ ocil_clause_file_permissions(file="/etc/ssh/*_key", perms="-rw-------") }}}' - - ocil: |- -- {{{ ocil_file_permissions(file="/etc/ssh/*_key", perms="-rw-r-----") }}} -+ {{{ ocil_file_permissions(file="/etc/ssh/*_key", perms="-rw-------") }}} - - template: - name: file_permissions -@@ -56,9 +52,4 @@ template: - filepath: /etc/ssh/ - missing_file_pass: 'true' - file_regex: ^.*_key$ -- filemode: '0640' -- filemode@sle12: '0600' -- filemode@sle15: '0600' -- filemode@ubuntu1604: '0600' -- filemode@ubuntu1804: '0600' -- filemode@ubuntu2004: '0600' -+ filemode: '0600' -diff --git a/linux_os/guide/services/ssh/file_permissions_sshd_private_key/tests/correct_value.pass.sh b/linux_os/guide/services/ssh/file_permissions_sshd_private_key/tests/correct_value.pass.sh -index 5790a48..f7cf8d9 100644 ---- a/linux_os/guide/services/ssh/file_permissions_sshd_private_key/tests/correct_value.pass.sh -+++ b/linux_os/guide/services/ssh/file_permissions_sshd_private_key/tests/correct_value.pass.sh -@@ -2,4 +2,4 @@ - # - - FAKE_KEY=$(mktemp -p /etc/ssh/ XXXX_key) --chmod 0640 /etc/ssh/*_key -+chmod 0600 /etc/ssh/*_key -diff --git a/linux_os/guide/services/ssh/file_permissions_sshd_private_key/tests/multiple_keys.fail.sh b/linux_os/guide/services/ssh/file_permissions_sshd_private_key/tests/multiple_keys.fail.sh -index 6df9d61b715..7c0d6019702 100644 ---- a/linux_os/guide/services/ssh/file_permissions_sshd_private_key/tests/multiple_keys.fail.sh -+++ b/linux_os/guide/services/ssh/file_permissions_sshd_private_key/tests/multiple_keys.fail.sh -@@ -4,4 +4,4 @@ - FAKE_KEY=$(mktemp -p /etc/ssh/ XXXX_key) - chmod 0777 $FAKE_KEY - FAKE_KEY2=$(mktemp -p /etc/ssh/ XXXX_key) --chmod 0640 $FAKE_KEY2 -+chmod 0600 $FAKE_KEY2 diff --git a/SOURCES/scap-security-guide-0.1.60-address_pool_directives_maxpoll_rule-PR_7910.patch b/SOURCES/scap-security-guide-0.1.60-address_pool_directives_maxpoll_rule-PR_7910.patch deleted file mode 100644 index 1b90441..0000000 --- a/SOURCES/scap-security-guide-0.1.60-address_pool_directives_maxpoll_rule-PR_7910.patch +++ /dev/null @@ -1,195 +0,0 @@ -From bac8ca5091aa74eab66691fcb7a6ac0c944de9c6 Mon Sep 17 00:00:00 2001 -From: Gabriel Becker -Date: Wed, 23 Mar 2022 17:50:18 +0100 -Subject: [PATCH] Manually edited patch - scap-security-guide-0.1.60-address_pool_directives_maxpoll_rule-PR_7910.patch. - ---- - .../chronyd_or_ntpd_set_maxpoll/ansible/shared.yml | 6 +++--- - .../ntp/chronyd_or_ntpd_set_maxpoll/bash/shared.sh | 6 +++--- - .../chronyd_or_ntpd_set_maxpoll/oval/shared.xml | 4 ++-- - .../ntp/chronyd_or_ntpd_set_maxpoll/rule.yml | 4 +++- - .../tests/chrony.pass.sh | 3 +++ - .../tests/chrony_one_pool_configured.pass.sh | 14 ++++++++++++++ - .../tests/chrony_one_pool_misconfigured.fail.sh | 14 ++++++++++++++ - .../chrony_one_pool_missing_parameter.fail.sh | 14 ++++++++++++++ - .../tests/chrony_one_server_misconfigured.fail.sh | 3 +++ - 9 files changed, 59 insertions(+), 9 deletions(-) - create mode 100644 linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/tests/chrony_one_pool_configured.pass.sh - create mode 100644 linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/tests/chrony_one_pool_misconfigured.fail.sh - create mode 100644 linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/tests/chrony_one_pool_missing_parameter.fail.sh - -diff --git a/linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/ansible/shared.yml b/linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/ansible/shared.yml -index 3c83850..da0a622 100644 ---- a/linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/ansible/shared.yml -+++ b/linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/ansible/shared.yml -@@ -1,4 +1,4 @@ --# platform = multi_platform_sle -+# platform = multi_platform_sle,multi_platform_rhel - # reboot = false - # strategy = restrict - # complexity = low -@@ -27,7 +27,7 @@ - - name: Update the maxpoll values in /etc/chrony.conf - lineinfile: - path: /etc/chrony.conf -- regex: '^(server.*maxpoll) [0-9]+(\s+.*)$' -+ regex: '^((?:server|pool).*maxpoll) [0-9]+(\s+.*)$' - line: '\1 {{ var_time_service_set_maxpoll }}\2' - backrefs: yes - when: chrony_conf_exist_result.stat.exists -@@ -43,7 +43,7 @@ - - name: Set the maxpoll values in /etc/chrony.conf - lineinfile: - path: /etc/chrony.conf -- regex: '(^server\s+((?!maxpoll).)*)$' -+ regex: '(^(?:server|pool)\s+((?!maxpoll).)*)$' - line: '\1 maxpoll {{ var_time_service_set_maxpoll }}\n' - backrefs: yes - when: chrony_conf_exist_result.stat.exists -diff --git a/linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/bash/shared.sh b/linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/bash/shared.sh -index b23deff..54b1b73 100644 ---- a/linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/bash/shared.sh -+++ b/linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/bash/shared.sh -@@ -8,9 +8,9 @@ config_file="/etc/ntp.conf" - - - # Set maxpoll values to var_time_service_set_maxpoll --sed -i "s/^\(server.*maxpoll\) [0-9][0-9]*\(.*\)$/\1 $var_time_service_set_maxpoll \2/" "$config_file" -+sed -i "s/^\(\(server\|pool\).*maxpoll\) [0-9][0-9]*\(.*\)$/\1 $var_time_service_set_maxpoll \3/" "$config_file" - --# Add maxpoll to server entries without maxpoll --grep "^server" "$config_file" | grep -v maxpoll | while read -r line ; do -+# Add maxpoll to server or pool entries without maxpoll -+grep "^\(server\|pool\)" "$config_file" | grep -v maxpoll | while read -r line ; do - sed -i "s/$line/& maxpoll $var_time_service_set_maxpoll/" "$config_file" - done -diff --git a/linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/oval/shared.xml b/linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/oval/shared.xml -index 25a8589..76f8101 100644 ---- a/linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/oval/shared.xml -+++ b/linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/oval/shared.xml -@@ -46,7 +46,7 @@ - - - ^/etc/chrony\.(conf|d/.+\.conf)$ -- ^server[\s]+[\S]+.*maxpoll[\s]+(\d+) -+ ^(?:server|pool)[\s]+[\S]+.*maxpoll[\s]+(\d+) - 1 - - -@@ -77,7 +77,7 @@ - - - ^/etc/chrony\.(conf|d/.+\.conf)$ -- ^server[\s]+[\S]+[\s]+(.*) -+ ^(?:server|pool)[\s]+[\S]+[\s]+(.*) - 1 - - -diff --git a/linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/rule.yml b/linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/rule.yml -index 77af724..bd5150b 100644 ---- a/linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/rule.yml -+++ b/linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/rule.yml -@@ -9,8 +9,10 @@ description: |- - {{{ xccdf_value("var_time_service_set_maxpoll") }}} in /etc/ntp.conf or - /etc/chrony.conf to continuously poll time servers. To configure - maxpoll in /etc/ntp.conf or /etc/chrony.conf -- add the following: -+ add the following after each `server` or `pool` entry: -
      maxpoll {{{ xccdf_value("var_time_service_set_maxpoll") }}}
      -+ to
      server
      directives. If using chrony any
      pool
      directives -+ should be configured too. - If no server or pool directives are configured, the rule evaluates - to pass. - {{% if product == "rhcos4" %}} -diff --git a/linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/tests/chrony.pass.sh b/linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/tests/chrony.pass.sh -index 38f5031..60dfc29 100644 ---- a/linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/tests/chrony.pass.sh -+++ b/linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/tests/chrony.pass.sh -@@ -5,6 +5,9 @@ - - yum remove -y ntp - -+# Remove all pool options -+sed -i "/^pool.*/d" /etc/chrony.conf -+ - if ! grep "^server" /etc/chrony.conf ; then - echo "server foo.example.net iburst maxpoll 10" >> /etc/chrony.conf - elif ! grep "^server.*maxpoll 10" /etc/chrony.conf; then -diff --git a/linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/tests/chrony_one_pool_configured.pass.sh b/linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/tests/chrony_one_pool_configured.pass.sh -new file mode 100644 -index 0000000..6cbeb0e ---- /dev/null -+++ b/linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/tests/chrony_one_pool_configured.pass.sh -@@ -0,0 +1,14 @@ -+#!/bin/bash -+# packages = chrony -+# -+# profiles = xccdf_org.ssgproject.content_profile_stig -+ -+yum remove -y ntp -+ -+# Remove all server or pool options -+sed -i "/^\(server\|pool\).*/d" /etc/chrony.conf -+ -+echo "pool pool.ntp.org iburst maxpoll 16" >> /etc/chrony.conf -+ -+systemctl enable chronyd.service -+ -diff --git a/linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/tests/chrony_one_pool_misconfigured.fail.sh b/linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/tests/chrony_one_pool_misconfigured.fail.sh -new file mode 100644 -index 0000000..12f2cda ---- /dev/null -+++ b/linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/tests/chrony_one_pool_misconfigured.fail.sh -@@ -0,0 +1,14 @@ -+#!/bin/bash -+# packages = chrony -+# -+# profiles = xccdf_org.ssgproject.content_profile_stig -+ -+yum remove -y ntp -+ -+# Remove all server or pool options -+sed -i "/^\(server\|pool\).*/d" /etc/chrony.conf -+ -+echo "pool pool.ntp.org iburst maxpoll 18" >> /etc/chrony.conf -+ -+systemctl enable chronyd.service -+ -diff --git a/linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/tests/chrony_one_pool_missing_parameter.fail.sh b/linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/tests/chrony_one_pool_missing_parameter.fail.sh -new file mode 100644 -index 0000000..1ef4798 ---- /dev/null -+++ b/linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/tests/chrony_one_pool_missing_parameter.fail.sh -@@ -0,0 +1,14 @@ -+#!/bin/bash -+# packages = chrony -+# -+# profiles = xccdf_org.ssgproject.content_profile_stig -+ -+yum remove -y ntp -+ -+# Remove all server options -+sed -i "/^\(server\|pool\).*/d" /etc/chrony.conf -+ -+echo "pool pool.ntp.org iburst" >> /etc/chrony.conf -+ -+systemctl enable chronyd.service -+ -diff --git a/linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/tests/chrony_one_server_misconfigured.fail.sh b/linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/tests/chrony_one_server_misconfigured.fail.sh -index 0fc7840..6f86faf 100644 ---- a/linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/tests/chrony_one_server_misconfigured.fail.sh -+++ b/linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/tests/chrony_one_server_misconfigured.fail.sh -@@ -5,6 +5,9 @@ - - yum remove -y ntp - -+# Remove all pool options -+sed -i "/^pool.*/d" /etc/chrony.conf -+ - if ! grep "^server.*maxpoll 10" /etc/chrony.conf; then - sed -i "s/^server.*/& maxpoll 10/" /etc/chrony.conf - fi --- -2.34.1 - diff --git a/SOURCES/scap-security-guide-0.1.60-rhel8_stig_v1r4-PR_7930.patch b/SOURCES/scap-security-guide-0.1.60-rhel8_stig_v1r4-PR_7930.patch deleted file mode 100644 index f019b6b..0000000 --- a/SOURCES/scap-security-guide-0.1.60-rhel8_stig_v1r4-PR_7930.patch +++ /dev/null @@ -1,2250 +0,0 @@ -commit a9b9db2a5e9ad655258a0f8823f57519b6bb37f8 -Author: Gabriel Becker -Date: Thu Feb 24 17:40:22 2022 +0100 - - Manual edited patch scap-security-guide-0.1.60-rhel8_stig_v1r4-PR_7930.patch. - -diff --git a/linux_os/guide/system/accounts/accounts-session/user_umask/accounts_umask_etc_csh_cshrc/rule.yml b/linux_os/guide/system/accounts/accounts-session/user_umask/accounts_umask_etc_csh_cshrc/rule.yml -index 1b71c7d..bccc7eb 100644 ---- a/linux_os/guide/system/accounts/accounts-session/user_umask/accounts_umask_etc_csh_cshrc/rule.yml -+++ b/linux_os/guide/system/accounts/accounts-session/user_umask/accounts_umask_etc_csh_cshrc/rule.yml -@@ -14,7 +14,7 @@ rationale: |- - A misconfigured umask value could result in files with excessive permissions that can be read or - written to by unauthorized users. - --severity: unknown -+severity: medium - - identifiers: - cce@rhcos4: CCE-84261-7 -@@ -31,7 +31,8 @@ references: - nerc-cip: CIP-003-3 R5.1.1,CIP-003-3 R5.3,CIP-004-3 R2.3,CIP-007-3 R2.1,CIP-007-3 R2.2,CIP-007-3 R2.3,CIP-007-3 R5.1,CIP-007-3 R5.1.1,CIP-007-3 R5.1.2 - nist: AC-6(1),CM-6(a) - nist-csf: PR.IP-2 -- srg: SRG-OS-000480-GPOS-00228 -+ srg: SRG-OS-000480-GPOS-00228,SRG-OS-000480-GPOS-00227 -+ stigid@rhel8: RHEL-08-020353 - - ocil_clause: 'the above command returns no output, or if the umask is configured incorrectly' - -diff --git a/linux_os/guide/system/accounts/accounts-session/user_umask/accounts_umask_etc_profile/rule.yml b/linux_os/guide/system/accounts/accounts-session/user_umask/accounts_umask_etc_profile/rule.yml -index 85e98cf..822463e 100644 ---- a/linux_os/guide/system/accounts/accounts-session/user_umask/accounts_umask_etc_profile/rule.yml -+++ b/linux_os/guide/system/accounts/accounts-session/user_umask/accounts_umask_etc_profile/rule.yml -@@ -12,7 +12,7 @@ rationale: |- - A misconfigured umask value could result in files with excessive permissions that can be read or - written to by unauthorized users. - --severity: unknown -+severity: medium - - identifiers: - cce@rhcos4: CCE-84262-5 -@@ -33,7 +33,8 @@ references: - nerc-cip: CIP-003-3 R5.1.1,CIP-003-3 R5.3,CIP-004-3 R2.3,CIP-007-3 R2.1,CIP-007-3 R2.2,CIP-007-3 R2.3,CIP-007-3 R5.1,CIP-007-3 R5.1.1,CIP-007-3 R5.1.2 - nist: AC-6(1),CM-6(a) - nist-csf: PR.IP-2 -- srg: SRG-OS-000480-GPOS-00228 -+ srg: SRG-OS-000480-GPOS-00228,SRG-OS-000480-GPOS-00227 -+ stigid@rhel8: RHEL-08-020353 - - ocil_clause: 'the above command returns no output, or if the umask is configured incorrectly' - -diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index 5e9a221..3582e44 100644 ---- a/products/rhel8/profiles/stig.profile -+++ b/products/rhel8/profiles/stig.profile -@@ -1,7 +1,7 @@ - documentation_complete: true - - metadata: -- version: V1R3 -+ version: V1R4 - SMEs: - - ggbecker - -@@ -11,7 +11,7 @@ title: 'DISA STIG for Red Hat Enterprise Linux 8' - - description: |- - This profile contains configuration checks that align to the -- DISA STIG for Red Hat Enterprise Linux 8 V1R3. -+ DISA STIG for Red Hat Enterprise Linux 8 V1R4. - - In addition to being applicable to Red Hat Enterprise Linux 8, DISA recognizes this - configuration baseline as applicable to the operating system tier of -@@ -162,8 +162,6 @@ selections: - # RHEL-08-010171 - - package_policycoreutils_installed - -- # RHEL-08-010180 -- - # RHEL-08-010190 - - dir_perms_world_writable_sticky_bits - -@@ -352,7 +350,6 @@ selections: - - partition_for_tmp - - # RHEL-08-010544 -- ### NOTE: Will probably show up in V1R3 - Q3 of 21' - - partition_for_var_tmp - - # RHEL-08-010550 -@@ -621,6 +618,8 @@ selections: - - # RHEL-08-020353 - - accounts_umask_etc_bashrc -+ - accounts_umask_etc_csh_cshrc -+ - accounts_umask_etc_profile - - # RHEL-08-030000 - - audit_rules_suid_privilege_function -diff --git a/products/rhel8/profiles/stig_gui.profile b/products/rhel8/profiles/stig_gui.profile -index 0fdd755..e1f0f71 100644 ---- a/products/rhel8/profiles/stig_gui.profile -+++ b/products/rhel8/profiles/stig_gui.profile -@@ -1,7 +1,7 @@ - documentation_complete: true - - metadata: -- version: V1R3 -+ version: V1R4 - SMEs: - - ggbecker - -@@ -11,7 +11,7 @@ title: 'DISA STIG with GUI for Red Hat Enterprise Linux 8' - - description: |- - This profile contains configuration checks that align to the -- DISA STIG with GUI for Red Hat Enterprise Linux 8 V1R3. -+ DISA STIG with GUI for Red Hat Enterprise Linux 8 V1R4. - - In addition to being applicable to Red Hat Enterprise Linux 8, DISA recognizes this - configuration baseline as applicable to the operating system tier of -diff --git a/products/rhel9/profiles/stig.profile b/products/rhel9/profiles/stig.profile -index 8d60468..9acb63a 100644 ---- a/products/rhel9/profiles/stig.profile -+++ b/products/rhel9/profiles/stig.profile -@@ -143,8 +143,6 @@ selections: - # RHEL-08-010171 - - package_policycoreutils_installed - -- # RHEL-08-010180 -- - # RHEL-08-010190 - - dir_perms_world_writable_sticky_bits - -@@ -309,7 +307,6 @@ selections: - - partition_for_tmp - - # RHEL-08-010544 -- ### NOTE: Will probably show up in V1R3 - Q3 of 21' - - partition_for_var_tmp - - # RHEL-08-010550 -@@ -566,6 +563,8 @@ selections: - - # RHEL-08-020353 - - accounts_umask_etc_bashrc -+ - accounts_umask_etc_csh_cshrc -+ - accounts_umask_etc_profile - - # RHEL-08-030000 - # - audit_rules_suid_privilege_function # not supported in RHEL9 ATM -diff --git a/shared/references/disa-stig-rhel8-v1r3-xccdf-manual.xml b/shared/references/disa-stig-rhel8-v1r4-xccdf-manual.xml -similarity index 80% -rename from shared/references/disa-stig-rhel8-v1r3-xccdf-manual.xml -rename to shared/references/disa-stig-rhel8-v1r4-xccdf-manual.xml -index abff501..46c5fa1 100644 ---- a/shared/references/disa-stig-rhel8-v1r3-xccdf-manual.xml -+++ b/shared/references/disa-stig-rhel8-v1r4-xccdf-manual.xml -@@ -1,4 +1,4 @@ --acceptedRed Hat Enterprise Linux 8 Security Technical Implementation GuideThis 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: disa.stig_spt@mail.mil.DISASTIG.DOD.MILRelease: 3 Benchmark Date: 23 Jul 20213.2.2.360791.10.01I - Mission Critical Classified<ProfileDescription></ProfileDescription>I - Mission Critical Sensitive<ProfileDescription></ProfileDescription>II - Mission Support Public<ProfileDescription></ProfileDescription>III - Administrative Classified<ProfileDescription></ProfileDescription>III - Administrative Sensitive<ProfileDescription></ProfileDescription>I - Mission Critical Public<ProfileDescription></ProfileDescription>II - Mission Support Classified<ProfileDescription></ProfileDescription>II - Mission Support Sensitive<ProfileDescription></ProfileDescription>III - Administrative Public<ProfileDescription></ProfileDescription>SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-010000RHEL 8 must be a vendor-supported release.<VulnDiscussion>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) ad-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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Upgrade to a supported version of RHEL 8.Verify the version of the operating system is vendor supported. - -@@ -46,7 +46,7 @@ If package updates have not been performed on the system within the timeframe th - - 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.SRG-OS-000033-GPOS-00014<GroupDescription></GroupDescription>RHEL-08-010020RHEL 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.<VulnDiscussion>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. -+If the operating system is in non-compliance with the Information Assurance Vulnerability Management (IAVM) process, this is a finding.
      SRG-OS-000033-GPOS-00014<GroupDescription></GroupDescription>RHEL-08-010020RHEL 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.<VulnDiscussion>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. - -@@ -60,19 +60,17 @@ Enable FIPS mode after installation (not strict FIPS compliant) with the followi - - $ sudo fips-mode-setup --enable - --Reboot the system for the changes to take effect.Verify the operating system implements DoD-approved encryption to protect the confidentiality of remote access sessions. -+Reboot the system for the changes to take effect.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: - --$ sudo fipscheck -+$ fips-mode-setup --check - --usage: fipscheck [-s <hmac-suffix>] <paths-to-files> -+FIPS mode is enabled - --fips mode is on -+If FIPS mode is "enabled", check to see if the kernel boot parameter is configured for FIPS mode with the following command: - --If FIPS mode is "on", check to see if the kernel boot parameter is configured for FIPS mode with the following command: -- --$ sudo grub2-editenv - list | grep fips -+$ 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 - -@@ -480,21 +478,7 @@ $ sudo yum list installed policycoreutils - - policycoreutils.x86_64 2.9-3.el8 @anaconda - --If the policycoreutils package is not installed, this is a finding.SRG-OS-000138-GPOS-00069<GroupDescription></GroupDescription>RHEL-08-010180All RHEL 8 public directories must be owned by root or a system account to prevent unauthorized and unintended information transferred via shared system resources.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-001090Configure all public directories to be owned by root or a system account to prevent unauthorized and unintended information transferred via shared system resources. -- --Set the owner of all public directories as root or a system account using the command, replace "[Public Directory]" with any directory path not owned by root or a system account: -- --$ sudo chown root [Public Directory]Check to see that all public directories are owned by root or a system account with the following command: -- --$ sudo find / -type d -perm -0002 -exec ls -lLd {} \; -- --drwxrwxrwxt 7 root root 4096 Jul 26 11:19 /tmp -- --If any of the returned directories are not owned by root or a system account, this is a finding.SRG-OS-000138-GPOS-00069<GroupDescription></GroupDescription>RHEL-08-010190A sticky bit must be set on all RHEL 8 public directories to prevent unauthorized and unintended information transferred via shared system resources.<VulnDiscussion>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. -+If the policycoreutils package is not installed, this is a finding.SRG-OS-000138-GPOS-00069<GroupDescription></GroupDescription>RHEL-08-010190A sticky bit must be set on all RHEL 8 public directories to prevent unauthorized and unintended information transferred via shared system resources.<VulnDiscussion>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. - -@@ -502,13 +486,13 @@ There may be shared resources with configurable protections (e.g., files in stor - - 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]Verify that all world-writable directories have the sticky bit set. -+$ sudo chmod 1777 [World-Writable Directory]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 - --drwxrwxrwxt 7 root root 4096 Jul 26 11:19 /tmp -+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.SRG-OS-000163-GPOS-00072<GroupDescription></GroupDescription>RHEL-08-010200RHEL 8 must be configured so that all network connections associated with SSH traffic are terminated at the end of the session or after 10 minutes of inactivity, except to fulfill documented and validated mission requirements.<VulnDiscussion>Terminating an idle SSH session within a short time period reduces the window of opportunity for unauthorized personnel to take control of a management session enabled on the console or console port that has been left unattended. In addition, quickly terminating an idle SSH session will also free up resources committed by the managed network element. - -@@ -695,7 +679,7 @@ $ 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.SRG-OS-000250-GPOS-00093<GroupDescription></GroupDescription>RHEL-08-010295The RHEL 8 operating system must implement DoD-approved TLS encryption in the GnuTLS package.<VulnDiscussion>Without cryptographic integrity protections, information can be altered by unauthorized users without detection. -+If the "MinProtocol" is set to anything older than "TLSv1.2", this is a finding.SRG-OS-000250-GPOS-00093<GroupDescription></GroupDescription>RHEL-08-010295The RHEL 8 operating system must implement DoD-approved TLS encryption in the GnuTLS package.<VulnDiscussion>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. - -@@ -707,21 +691,21 @@ Satisfies: SRG-OS-000250-GPOS-00093, SRG-OS-000423-GPOS-00187</VulnDiscussion - - +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.Verify the GnuTLS library is configured to only allow DoD-approved SSL/TLS Versions: -+A reboot is required for the changes to take effect.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.SRG-OS-000259-GPOS-00100<GroupDescription></GroupDescription>RHEL-08-010300RHEL 8 system commands must have mode 0755 or less permissive.<VulnDiscussion>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. -+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.SRG-OS-000259-GPOS-00100<GroupDescription></GroupDescription>RHEL-08-010300RHEL 8 system commands must have mode 755 or less permissive.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-001499Configure the system commands to be protected from unauthorized access. -+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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-001499Configure 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 "0755". -+Run the following command, replacing "[FILE]" with any system command with a mode more permissive than "755". - --$ sudo chmod 0755 [FILE]Verify the system commands contained in the following directories have mode "0755" or less permissive with the following command: -+$ sudo chmod 755 [FILE]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 /0022 -exec ls -l {} \; -+$ 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.SRG-OS-000259-GPOS-00100<GroupDescription></GroupDescription>RHEL-08-010310RHEL 8 system commands must be owned by root.<VulnDiscussion>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. - -@@ -733,23 +717,23 @@ $ sudo chown root [FILE]SRG-OS-000259-GPOS-00100<GroupDescription></GroupDescription>RHEL-08-010320RHEL 8 system commands must be group-owned by root or a system account.<VulnDiscussion>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. -+If any system commands are returned, this is a finding.SRG-OS-000259-GPOS-00100<GroupDescription></GroupDescription>RHEL-08-010320RHEL 8 system commands must be group-owned by root or a system account.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-001499Configure 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]Verify the system commands contained in the following directories are group-owned by "root" with the following command: -+$ sudo chgrp root [FILE]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 owned by a required system account, this is a finding.SRG-OS-000259-GPOS-00100<GroupDescription></GroupDescription>RHEL-08-010330RHEL 8 library files must have mode 0755 or less permissive.<VulnDiscussion>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. -+If any system commands are returned and is not group-owned by a required system account, this is a finding.SRG-OS-000259-GPOS-00100<GroupDescription></GroupDescription>RHEL-08-010330RHEL 8 library files must have mode 755 or less permissive.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-001499Configure 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 0755. -+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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-001499Configure 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 0755 [FILE]Verify the system-wide shared library files contained in the following directories have mode "0755" or less permissive with the following command: -+$ sudo chmod 755 [FILE]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 /0022 -type f -exec ls -l {} \; -+$ 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.SRG-OS-000259-GPOS-00100<GroupDescription></GroupDescription>RHEL-08-010340RHEL 8 library files must be owned by root.<VulnDiscussion>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. - -@@ -850,19 +834,28 @@ $ 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.SRG-OS-000366-GPOS-00153<GroupDescription></GroupDescription>RHEL-08-010372RHEL 8 must prevent the loading of a new kernel for later execution.<VulnDiscussion>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. -+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.SRG-OS-000366-GPOS-00153<GroupDescription></GroupDescription>RHEL-08-010372RHEL 8 must prevent the loading of a new kernel for later execution.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-001749Configure the operating system to disable kernel image loading. -+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. - --Add or edit the following line in a system configuration file in the "/etc/sysctl.d/" directory: -+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 -+Based on the information above, if a configuration file that begins with "99-" is created in the "/etc/sysctl.d/" directory, it will take precedence over any other configuration file on the system.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-001749Configure the operating system to disable kernel image loading. -+ -+Add or edit the following line in a system configuration file, which begins with "99-", in the "/etc/sysctl.d/" directory: - - kernel.kexec_load_disabled = 1 - - Load settings from all system configuration files with the following command: - --$ sudo sysctl --systemVerify the operating system is configured to disable kernel image loading with the following commands: -+$ sudo sysctl --systemVerify 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 -+Check the status of the kernel.kexec_load_disabled kernel parameter. - - $ sudo sysctl kernel.kexec_load_disabled - -@@ -870,29 +863,41 @@ 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 -+Check that the configuration files are present to enable this kernel parameter. - --$ sudo grep -r kernel.kexec_load_disabled /etc/sysctl.conf /etc/sysctl.d/*.conf -+$ sudo grep -r kernel.kexec_load_disabled /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.SRG-OS-000312-GPOS-00122<GroupDescription></GroupDescription>RHEL-08-010373RHEL 8 must enable kernel parameters to enforce discretionary access control on symlinks.<VulnDiscussion>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. -+If "kernel.kexec_load_disabled" is not set to "1", is missing or commented out, this is a finding. -+ -+If the configuration file does not begin with "99-", this is a finding.SRG-OS-000312-GPOS-00122<GroupDescription></GroupDescription>RHEL-08-010373RHEL 8 must enable kernel parameters to enforce discretionary access control on symlinks.<VulnDiscussion>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(). - --Satisfies: SRG-OS-000312-GPOS-00122, SRG-OS-000312-GPOS-00123, SRG-OS-000312-GPOS-00124, SRG-OS-000324-GPOS-00125</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-002165Configure the operating system to enable DAC on symlinks. -+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 -+ -+Based on the information above, if a configuration file that begins with "99-" is created in the "/etc/sysctl.d/" directory, it will take precedence over any other configuration file on the system. - --Add or edit the following line in a system configuration file in the "/etc/sysctl.d/" directory: -+Satisfies: SRG-OS-000312-GPOS-00122, SRG-OS-000312-GPOS-00123, SRG-OS-000312-GPOS-00124, SRG-OS-000324-GPOS-00125</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-002165Configure the operating system to enable DAC on symlinks. -+ -+Add or edit the following line in a system configuration file, which begins with "99-", in the "/etc/sysctl.d/" directory: - - fs.protected_symlinks = 1 - - Load settings from all system configuration files with the following command: - --$ sudo sysctl --systemVerify the operating system is configured to enable DAC on symlinks with the following commands: -+$ sudo sysctl --systemVerify the operating system is configured to enable DAC on symlinks with the following commands: - --Check the status of the fs.protected_symlinks kernel parameter -+Check the status of the fs.protected_symlinks kernel parameter. - - $ sudo sysctl fs.protected_symlinks - -@@ -900,103 +905,141 @@ 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 -+Check that the configuration files are present to enable this kernel parameter. - --$ sudo grep -r fs.protected_symlinks /etc/sysctl.conf /etc/sysctl.d/*.conf -+$ sudo grep -r fs.protected_symlinks /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.SRG-OS-000312-GPOS-00122<GroupDescription></GroupDescription>RHEL-08-010374RHEL 8 must enable kernel parameters to enforce discretionary access control on hardlinks.<VulnDiscussion>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(). -- --Satisfies: SRG-OS-000312-GPOS-00122, SRG-OS-000312-GPOS-00123, SRG-OS-000312-GPOS-00124, SRG-OS-000324-GPOS-00125</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-002165Configure the operating system to enable DAC on hardlinks. -+If "fs.protected_symlinks" is not set to "1", is missing or commented out, this is a finding. -+ -+If the configuration file does not begin with "99-", this is a finding.SRG-OS-000312-GPOS-00122<GroupDescription></GroupDescription>RHEL-08-010374RHEL 8 must enable kernel parameters to enforce discretionary access control on hardlinks.<VulnDiscussion>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 - --Add or edit the following line in a system configuration file in the "/etc/sysctl.d/" directory: -+Based on the information above, if a configuration file that begins with "99-" is created in the "/etc/sysctl.d/" directory, it will take precedence over any other configuration file on the system. -+ -+Satisfies: SRG-OS-000312-GPOS-00122, SRG-OS-000312-GPOS-00123, SRG-OS-000312-GPOS-00124, SRG-OS-000324-GPOS-00125</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-002165Configure the operating system to enable DAC on hardlinks. -+ -+Add or edit the following line in a system configuration file, which begins with "99-", in the "/etc/sysctl.d/" directory: - - fs.protected_hardlinks = 1 - - Load settings from all system configuration files with the following command: - --$ sudo sysctl --systemVerify 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 /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.SRG-OS-000138-GPOS-00069<GroupDescription></GroupDescription>RHEL-08-010375RHEL 8 must restrict access to the kernel message buffer.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-001090Configure the operating system to restrict access to the kernel message buffer. -+$ sudo sysctl --systemVerify 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 /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 the configuration file does not begin with "99-", this is a finding.SRG-OS-000138-GPOS-00069<GroupDescription></GroupDescription>RHEL-08-010375RHEL 8 must restrict access to the kernel message buffer.<VulnDiscussion>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. - --Add or edit the following line in a system configuration file in the "/etc/sysctl.d/" directory: -+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 -+ -+Based on the information above, if a configuration file that begins with "99-" is created in the "/etc/sysctl.d/" directory, it will take precedence over any other configuration file on the system.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-001090Configure the operating system to restrict access to the kernel message buffer. -+ -+Add or edit the following line in a system configuration file, which begins with "99-", in the "/etc/sysctl.d/" directory: - - kernel.dmesg_restrict = 1 - - Load settings from all system configuration files with the following command: - --$ sudo sysctl --systemVerify 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 /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.SRG-OS-000138-GPOS-00069<GroupDescription></GroupDescription>RHEL-08-010376RHEL 8 must prevent kernel profiling by unprivileged users.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-001090Configure the operating system to prevent kernel profiling by unprivileged users. -+$ sudo sysctl --systemVerify 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 /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 the configuration file does not begin with "99-", this is a finding.SRG-OS-000138-GPOS-00069<GroupDescription></GroupDescription>RHEL-08-010376RHEL 8 must prevent kernel profiling by unprivileged users.<VulnDiscussion>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. - --Add or edit the following line in a system configuration file in the "/etc/sysctl.d/" directory: -+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 -+ -+Based on the information above, if a configuration file that begins with "99-" is created in the "/etc/sysctl.d/" directory, it will take precedence over any other configuration file on the system.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-001090Configure the operating system to prevent kernel profiling by unprivileged users. -+ -+Add or edit the following line in a system configuration file, which begins with "99-", in the "/etc/sysctl.d/" directory: - - kernel.perf_event_paranoid = 2 - - Load settings from all system configuration files with the following command: - --$ sudo sysctl --systemVerify 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 /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.SRG-OS-000373-GPOS-00156<GroupDescription></GroupDescription>RHEL-08-010380RHEL 8 must require users to provide a password for privilege escalation.<VulnDiscussion>Without reauthentication, users may access resources or perform tasks for which they do not have authorization. -+$ sudo sysctl --systemVerify 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 /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 the configuration file does not begin with "99-", this is a finding.SRG-OS-000373-GPOS-00156<GroupDescription></GroupDescription>RHEL-08-010380RHEL 8 must require users to provide a password for privilege escalation.<VulnDiscussion>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. - -@@ -1093,7 +1136,7 @@ If "dmesg" does not show "NX (Execute Disable) protection" active, check the cpu - $ 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.SRG-OS-000134-GPOS-00068<GroupDescription></GroupDescription>RHEL-08-010421RHEL 8 must clear the page allocator to prevent use-after-free attacks.<VulnDiscussion>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. -+If "flags" does not contain the "nx" flag, this is a finding.SRG-OS-000134-GPOS-00068<GroupDescription></GroupDescription>RHEL-08-010421RHEL 8 must clear the page allocator to prevent use-after-free attacks.<VulnDiscussion>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. - -@@ -1103,11 +1146,11 @@ $ 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"Verify that GRUB 2 is configured to enable page poisoning to mitigate use-after-free vulnerabilities with the following commands: -+GRUB_CMDLINE_LINUX="page_poison=1"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 -+$ 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 - -@@ -1119,7 +1162,7 @@ $ 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.SRG-OS-000134-GPOS-00068<GroupDescription></GroupDescription>RHEL-08-010422RHEL 8 must disable virtual syscalls.<VulnDiscussion>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. -+If "page_poison" is not set to "1", is missing or commented out, this is a finding.SRG-OS-000134-GPOS-00068<GroupDescription></GroupDescription>RHEL-08-010422RHEL 8 must disable virtual syscalls.<VulnDiscussion>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. - -@@ -1129,11 +1172,11 @@ $ 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"Verify that GRUB 2 is configured to disable vsyscalls with the following commands: -+GRUB_CMDLINE_LINUX="vsyscall=none"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 -+$ 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 - -@@ -1145,7 +1188,7 @@ $ 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.SRG-OS-000134-GPOS-00068<GroupDescription></GroupDescription>RHEL-08-010423RHEL 8 must clear SLUB/SLAB objects to prevent use-after-free attacks.<VulnDiscussion>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. -+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.SRG-OS-000134-GPOS-00068<GroupDescription></GroupDescription>RHEL-08-010423RHEL 8 must clear SLUB/SLAB objects to prevent use-after-free attacks.<VulnDiscussion>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. - -@@ -1157,11 +1200,11 @@ $ 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"Verify that GRUB 2 is configured to enable poisoning of SLUB/SLAB objects to mitigate use-after-free vulnerabilities with the following commands: -+GRUB_CMDLINE_LINUX="slub_debug=P"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 -+$ 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 - -@@ -1173,29 +1216,43 @@ $ 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.SRG-OS-000433-GPOS-00193<GroupDescription></GroupDescription>RHEL-08-010430RHEL 8 must implement address space layout randomization (ASLR) to protect its memory from unauthorized code execution.<VulnDiscussion>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. -+If "slub_debug" is not set to "P", is missing or commented out, this is a finding.SRG-OS-000433-GPOS-00193<GroupDescription></GroupDescription>RHEL-08-010430RHEL 8 must implement address space layout randomization (ASLR) to protect its memory from unauthorized code execution.<VulnDiscussion>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. - --Examples of attacks are buffer overflow attacks.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-002824Configure the operating system to implement virtual address space randomization. -+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 - --Set the system to the required kernel parameter by adding the following line to "/etc/sysctl.d/*.conf"(or modify the line to have the required value): -+Based on the information above, if a configuration file that begins with "99-" is created in the "/etc/sysctl.d/" directory, it will take precedence over any other configuration file on the system.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-002824Configure the operating system to implement virtual address space randomization. -+ -+Add or edit the following line in a system configuration file, which begins with "99-", in the "/etc/sysctl.d/" directory: - - kernel.randomize_va_space=2 - - Issue the following command to make the changes take effect: - --$ sudo sysctl --systemVerify RHEL 8 implements ASLR with the following command: -+$ sudo sysctl --systemVerify RHEL 8 implements ASLR with the following command: - - $ sudo sysctl kernel.randomize_va_space - - kernel.randomize_va_space = 2 - --If nothing is returned, verify the kernel parameter "randomize_va_space" is set to "2" with the following command: -+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 /etc/sysctl.d/*.conf - --$ sudo cat /proc/sys/kernel/randomize_va_space -+/etc/sysctl.d/99-sysctl.conf:kernel.randomize_va_space = 2 - --2 -+If "kernel.randomize_va_space" is not set to "2", is missing or commented out, this is a finding. - --If "kernel.randomize_va_space" is not set to "2", this is a finding.SRG-OS-000437-GPOS-00194<GroupDescription></GroupDescription>RHEL-08-010440YUM must remove all software components after updated versions have been installed on RHEL 8.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-002617Configure the operating system to remove all software components after updated versions have been installed. -+If the configuration file does not begin with "99-", this is a finding.SRG-OS-000437-GPOS-00194<GroupDescription></GroupDescription>RHEL-08-010440YUM must remove all software components after updated versions have been installed on RHEL 8.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-002617Configure 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: - -@@ -1545,19 +1602,41 @@ 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.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-010671RHEL 8 must disable the kernel.core_pattern.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to disable storing core dumps by adding the following line to a file in the "/etc/sysctl.d" directory: -+If the service is active and is not documented, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-010671RHEL 8 must disable the kernel.core_pattern.<VulnDiscussion>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 -+ -+Based on the information above, if a configuration file that begins with "99-" is created in the "/etc/sysctl.d/" directory, it will take precedence over any other configuration file on the system.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to disable storing core dumps. -+ -+Add or edit the following line in a system configuration file, which begins with "99-", in the "/etc/sysctl.d/" directory: - - kernel.core_pattern = |/bin/false - - 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 --systemVerify RHEL 8 disables storing core dumps with the following commands: -+$ sudo sysctl --systemVerify 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.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-010672RHEL 8 must disable acquiring, saving, and processing core dumps.<VulnDiscussion>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. -+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 /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 the configuration file does not begin with "99-", this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-010672RHEL 8 must disable acquiring, saving, and processing core dumps.<VulnDiscussion>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. - -@@ -1646,14 +1725,13 @@ $ 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.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-010690Executable 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.<VulnDiscussion>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).</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Edit the local interactive user initialization files to change any PATH variable statements that reference directories other than their home directory. -+If less than two lines are returned that are not commented out, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-010690Executable 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.<VulnDiscussion>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).</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Edit 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.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: -+If a local interactive user requires path variables to reference a directory owned by the application, it must be documented with the ISSO.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/*/.* -+$ sudo grep -i path= /home/*/.* - - /home/[localinteractiveuser]/.bash_profile:PATH=$PATH:$HOME/.local/bin:$HOME/bin --/home/[localinteractiveuser]/.bash_profile:export PATH - - 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.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-010700All RHEL 8 world-writable directories must be owned by root, sys, bin, or an application user.<VulnDiscussion>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. - -@@ -2309,27 +2387,27 @@ Satisfies: SRG-OS-000028-GPOS-00009, SRG-OS-000030-GPOS-00011</VulnDiscussion - - $ sudo grep -i tmux /etc/shells - --If any output is produced, this is a finding.SRG-OS-000028-GPOS-00009<GroupDescription></GroupDescription>RHEL-08-020050RHEL 8 must be able to initiate directly a session lock for all connection types using smartcard when the smartcard is removed.<VulnDiscussion>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</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000056Configure 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 updateVerify 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: -+If any output is produced, this is a finding.SRG-OS-000028-GPOS-00009<GroupDescription></GroupDescription>RHEL-08-020050RHEL 8 must be able to initiate directly a session lock for all connection types using smartcard when the smartcard is removed.<VulnDiscussion>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</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000056Configure 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 updateVerify 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/* - -@@ -2875,22 +2953,24 @@ Note: The example is for a system that is configured to create users home direct - - # grep -i umask /home/*/.* - --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.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-020353RHEL 8 must define default permissions for logon and non-logon shells.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure 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. -+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.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-020353RHEL 8 must define default permissions for logon and non-logon shells.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure 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" and "etc/csh.cshrc" files to "077": -+Add or edit the lines for the "UMASK" parameter in the "/etc/bashrc", "/etc/csh.cshrc" and "/etc/profile"files to "077": - --UMASK 077Verify that the umask default for installed shells is "077". -+UMASK 077Verify that the umask default for installed shells is "077". - --Check for the value of the "UMASK" parameter in the "/etc/bashrc" and "/etc/csh.cshrc" files with the following command: -+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 either the "/etc/bashrc" or the "/etc/csh.cshrc" files, the Severity is raised to a CAT I. -+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 -+# 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.SRG-OS-000326-GPOS-00126<GroupDescription></GroupDescription>RHEL-08-030000The 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.<VulnDiscussion>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. - -@@ -4427,7 +4507,7 @@ $ sudo grep -w lastlog /etc/audit/audit.rules - - -w /var/log/lastlog -p wa -k logins - --If the command does not return a line, or the line is commented out, this is a finding.SRG-OS-000062-GPOS-00031<GroupDescription></GroupDescription>RHEL-08-030601RHEL 8 must enable auditing of processes that start prior to the audit daemon.<VulnDiscussion>Without the capability to generate audit records, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one. -+If the command does not return a line, or the line is commented out, this is a finding.SRG-OS-000062-GPOS-00031<GroupDescription></GroupDescription>RHEL-08-030601RHEL 8 must enable auditing of processes that start prior to the audit daemon.<VulnDiscussion>Without the capability to generate audit records, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one. - - If auditing is enabled late in the startup process, the actions of some startup processes may not be audited. Some audit systems also maintain state information only available if auditing is enabled before a given process is created. - -@@ -4451,9 +4531,9 @@ $ sudo grubby --update-kernel=ALL --args="audit=1" - - Add or modify the following line in "/etc/default/grub" to ensure the configuration survives kernel updates: - --GRUB_CMDLINE_LINUX="audit=1"Verify RHEL 8 enables auditing of processes that start prior to the audit daemon with the following commands: -+GRUB_CMDLINE_LINUX="audit=1"Verify RHEL 8 enables auditing of processes that start prior to the audit daemon with the following commands: - --$ sudo grub2-editenv - list | grep audit -+$ sudo grub2-editenv list | grep audit - - 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 audit=1 audit_backlog_limit=8192 boot=UUID=8d171156-cd61-421c-ba41-1c021ac29e82 - -@@ -4465,7 +4545,7 @@ $ sudo grep audit /etc/default/grub - - GRUB_CMDLINE_LINUX="audit=1" - --If "audit" is not set to "1", is missing or commented out, this is a finding.SRG-OS-000341-GPOS-00132<GroupDescription></GroupDescription>RHEL-08-030602RHEL 8 must allocate an audit_backlog_limit of sufficient size to capture processes that start prior to the audit daemon.<VulnDiscussion>Without the capability to generate audit records, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one. -+If "audit" is not set to "1", is missing or commented out, this is a finding.SRG-OS-000341-GPOS-00132<GroupDescription></GroupDescription>RHEL-08-030602RHEL 8 must allocate an audit_backlog_limit of sufficient size to capture processes that start prior to the audit daemon.<VulnDiscussion>Without the capability to generate audit records, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one. - - If auditing is enabled late in the startup process, the actions of some startup processes may not be audited. Some audit systems also maintain state information only available if auditing is enabled before a given process is created. - -@@ -4477,9 +4557,9 @@ $ sudo grubby --update-kernel=ALL --args="audit_backlog_limit=8192" - - Add or modify the following line in "/etc/default/grub" to ensure the configuration survives kernel updates: - --GRUB_CMDLINE_LINUX="audit_backlog_limit=8192"Verify RHEL 8 allocates a sufficient audit_backlog_limit to capture processes that start prior to the audit daemon with the following commands: -+GRUB_CMDLINE_LINUX="audit_backlog_limit=8192"Verify RHEL 8 allocates a sufficient audit_backlog_limit to capture processes that start prior to the audit daemon with the following commands: - --$ sudo grub2-editenv - list | grep audit -+$ sudo grub2-editenv list | grep audit - - 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 audit=1 audit_backlog_limit=8192 boot=UUID=8d171156-cd61-421c-ba41-1c021ac29e82 - -@@ -4894,7 +4974,7 @@ $ sudo yum remove sendmailSRG-OS-000095-GPOS-00049<GroupDescription></GroupDescription>RHEL-08-040004RHEL 8 must enable mitigations against processor-based vulnerabilities.<VulnDiscussion>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. -+If the sendmail package is installed, this is a finding.SRG-OS-000095-GPOS-00049<GroupDescription></GroupDescription>RHEL-08-040004RHEL 8 must enable mitigations against processor-based vulnerabilities.<VulnDiscussion>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. - - Operating systems are capable of providing a wide variety of functions and services. Some of the functions and services, provided by default, may not be necessary to support essential organizational operations (e.g., key missions, functions). - -@@ -4908,9 +4988,9 @@ $ sudo grubby --update-kernel=ALL --args="pti=on" - - Add or modify the following line in "/etc/default/grub" to ensure the configuration survives kernel updates: - --GRUB_CMDLINE_LINUX="pti=on"Verify RHEL 8 enables kernel page-table isolation with the following commands: -+GRUB_CMDLINE_LINUX="pti=on"Verify RHEL 8 enables kernel page-table isolation with the following commands: - --$ sudo grub2-editenv - list | grep pti -+$ sudo grub2-editenv list | grep pti - - 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 audit=1 audit_backlog_limit=8192 pti=on boot=UUID=8d171156-cd61-421c-ba41-1c021ac29e82 - -@@ -4987,22 +5067,22 @@ $ sudo dmesg | grep -i video - [ 47.235752] usbcore: registered new interface driver uvcvideo - [ 47.235756] USB Video Class driver (1.1.1) - --If the camera driver blacklist is missing, a camera driver is determined to be in use, and the collaborative computing device has not been authorized for use, this is a finding.SRG-OS-000095-GPOS-00049<GroupDescription></GroupDescription>RHEL-08-040021RHEL 8 must disable the asynchronous transfer mode (ATM) protocol.<VulnDiscussion>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. -+If the camera driver blacklist is missing, a camera driver is determined to be in use, and the collaborative computing device has not been authorized for use, this is a finding.SRG-OS-000095-GPOS-00049<GroupDescription></GroupDescription>RHEL-08-040021RHEL 8 must disable the asynchronous transfer mode (ATM) protocol.<VulnDiscussion>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. - - Failing to disconnect unused protocols can result in a system compromise. - --The Asynchronous Transfer Mode (ATM) is a protocol operating on network, data link, and physical layers, based on virtual circuits and virtual paths. Disabling ATM protects the system against exploitation of any laws in its implementation.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000381Configure the operating system to disable the ability to use the ATM protocol kernel module. -+The Asynchronous Transfer Mode (ATM) is a protocol operating on network, data link, and physical layers, based on virtual circuits and virtual paths. Disabling ATM protects the system against exploitation of any laws in its implementation.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000381Configure the operating system to disable the ability to use the ATM protocol kernel module. - - Add or update the following lines in the file "/etc/modprobe.d/blacklist.conf": - --install ATM /bin/true --blacklist ATM -+install atm /bin/true -+blacklist atm - --Reboot the system for the settings to take effect.Verify the operating system disables the ability to load the ATM protocol kernel module. -+Reboot the system for the settings to take effect.Verify the operating system disables the ability to load the ATM protocol kernel module. - --$ sudo grep -ri ATM /etc/modprobe.d/* | grep -i "/bin/true" -+$ sudo grep -r atm /etc/modprobe.d/* | grep "/bin/true" - --install ATM /bin/true -+install atm /bin/true - - If the command does not return any output, or the line is commented out, and use of the ATM protocol is not documented with the Information System Security Officer (ISSO) as an operational requirement, this is a finding. - -@@ -5010,26 +5090,26 @@ Verify the operating system disables the ability to use the ATM protocol. - - Check to see if the ATM protocol is disabled with the following command: - --$ sudo grep -ri ATM /etc/modprobe.d/* | grep -i "blacklist" -+$ sudo grep -r atm /etc/modprobe.d/* | grep "blacklist" - --blacklist ATM -+blacklist atm - --If the command does not return any output or the output is not "blacklist atm", and use of the ATM protocol is not documented with the Information System Security Officer (ISSO) as an operational requirement, this is a finding.SRG-OS-000095-GPOS-00049<GroupDescription></GroupDescription>RHEL-08-040022RHEL 8 must disable the controller area network (CAN) protocol.<VulnDiscussion>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. -+If the command does not return any output or the output is not "blacklist atm", and use of the ATM protocol is not documented with the Information System Security Officer (ISSO) as an operational requirement, this is a finding.SRG-OS-000095-GPOS-00049<GroupDescription></GroupDescription>RHEL-08-040022RHEL 8 must disable the controller area network (CAN) protocol.<VulnDiscussion>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. - - Failing to disconnect unused protocols can result in a system compromise. - --The Controller Area Network (CAN) is a serial communications protocol, which was initially developed for automotive and is now also used in marine, industrial, and medical applications. Disabling CAN protects the system against exploitation of any flaws in its implementation.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000381Configure the operating system to disable the ability to use the CAN protocol kernel module. -+The Controller Area Network (CAN) is a serial communications protocol, which was initially developed for automotive and is now also used in marine, industrial, and medical applications. Disabling CAN protects the system against exploitation of any flaws in its implementation.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000381Configure the operating system to disable the ability to use the CAN protocol kernel module. - - Add or update the following lines in the file "/etc/modprobe.d/blacklist.conf": - --install CAN /bin/true --blacklist CAN -+install can /bin/true -+blacklist can - --Reboot the system for the settings to take effect.Verify the operating system disables the ability to load the CAN protocol kernel module. -+Reboot the system for the settings to take effect.Verify the operating system disables the ability to load the CAN protocol kernel module. - --$ sudo grep -ri CAN /etc/modprobe.d/* | grep -i "/bin/true" -+$ sudo grep -r can /etc/modprobe.d/* | grep "/bin/true" - --install CAN /bin/true -+install can /bin/true - - If the command does not return any output, or the line is commented out, and use of the CAN protocol is not documented with the Information System Security Officer (ISSO) as an operational requirement, this is a finding. - -@@ -5037,26 +5117,26 @@ Verify the operating system disables the ability to use the CAN protocol. - - Check to see if the CAN protocol is disabled with the following command: - --$ sudo grep -ri CAN /etc/modprobe.d/* | grep -i "blacklist" -+$ sudo grep -r can /etc/modprobe.d/* | grep "blacklist" - --blacklist CAN -+blacklist can - --If the command does not return any output or the output is not "blacklist CAN", and use of the CAN protocol is not documented with the Information System Security Officer (ISSO) as an operational requirement, this is a finding.SRG-OS-000095-GPOS-00049<GroupDescription></GroupDescription>RHEL-08-040023RHEL 8 must disable the stream control transmission protocol (SCTP).<VulnDiscussion>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. -+If the command does not return any output or the output is not "blacklist can", and use of the CAN protocol is not documented with the Information System Security Officer (ISSO) as an operational requirement, this is a finding.SRG-OS-000095-GPOS-00049<GroupDescription></GroupDescription>RHEL-08-040023RHEL 8 must disable the stream control transmission protocol (SCTP).<VulnDiscussion>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. - - Failing to disconnect unused protocols can result in a system compromise. - --The Stream Control Transmission Protocol (SCTP) is a transport layer protocol, designed to support the idea of message-oriented communication, with several streams of messages within one connection. Disabling SCTP protects the system against exploitation of any flaws in its implementation.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000381Configure the operating system to disable the ability to use the SCTP kernel module. -+The Stream Control Transmission Protocol (SCTP) is a transport layer protocol, designed to support the idea of message-oriented communication, with several streams of messages within one connection. Disabling SCTP protects the system against exploitation of any flaws in its implementation.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000381Configure the operating system to disable the ability to use the SCTP kernel module. - - Add or update the following lines in the file "/etc/modprobe.d/blacklist.conf": - --install SCTP /bin/true --blacklist SCTP -+install sctp /bin/true -+blacklist sctp - --Reboot the system for the settings to take effect.Verify the operating system disables the ability to load the SCTP kernel module. -+Reboot the system for the settings to take effect.Verify the operating system disables the ability to load the SCTP kernel module. - --$ sudo grep -ri SCTP /etc/modprobe.d/* | grep -i "/bin/true" -+$ sudo grep -r sctp /etc/modprobe.d/* | grep "/bin/true" - --install SCTP /bin/true -+install sctp /bin/true - - If the command does not return any output, or the line is commented out, and use of the SCTP is not documented with the Information System Security Officer (ISSO) as an operational requirement, this is a finding. - -@@ -5064,26 +5144,26 @@ Verify the operating system disables the ability to use the SCTP. - - Check to see if the SCTP is disabled with the following command: - --$ sudo grep -ri SCTP /etc/modprobe.d/* | grep -i "blacklist" -+$ sudo grep -r sctp /etc/modprobe.d/* | grep "blacklist" - --blacklist SCTP -+blacklist sctp - --If the command does not return any output or the output is not "blacklist SCTP", and use of the SCTP is not documented with the Information System Security Officer (ISSO) as an operational requirement, this is a finding.SRG-OS-000095-GPOS-00049<GroupDescription></GroupDescription>RHEL-08-040024RHEL 8 must disable the transparent inter-process communication (TIPC) protocol.<VulnDiscussion>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. -+If the command does not return any output or the output is not "blacklist sctp", and use of the SCTP is not documented with the Information System Security Officer (ISSO) as an operational requirement, this is a finding.SRG-OS-000095-GPOS-00049<GroupDescription></GroupDescription>RHEL-08-040024RHEL 8 must disable the transparent inter-process communication (TIPC) protocol.<VulnDiscussion>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. - - Failing to disconnect unused protocols can result in a system compromise. - --The Transparent Inter-Process Communication (TIPC) protocol is designed to provide communications between nodes in a cluster. Disabling TIPC protects the system against exploitation of any flaws in its implementation.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000381Configure the operating system to disable the ability to use the TIPC protocol kernel module. -+The Transparent Inter-Process Communication (TIPC) protocol is designed to provide communications between nodes in a cluster. Disabling TIPC protects the system against exploitation of any flaws in its implementation.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000381Configure the operating system to disable the ability to use the TIPC protocol kernel module. - - Add or update the following lines in the file "/etc/modprobe.d/blacklist.conf": - --install TIPC /bin/true --blacklist TIPC -+install tipc /bin/true -+blacklist tipc - --Reboot the system for the settings to take effect.Verify the operating system disables the ability to load the TIPC protocol kernel module. -+Reboot the system for the settings to take effect.Verify the operating system disables the ability to load the TIPC protocol kernel module. - --$ sudo grep -ri TIPC /etc/modprobe.d/* | grep -i "/bin/true" -+$ sudo grep -r tipc /etc/modprobe.d/* | grep "/bin/true" - --install TIPC /bin/true -+install tipc /bin/true - - If the command does not return any output, or the line is commented out, and use of the TIPC protocol is not documented with the Information System Security Officer (ISSO) as an operational requirement, this is a finding. - -@@ -5091,11 +5171,11 @@ Verify the operating system disables the ability to use the TIPC protocol. - - Check to see if the TIPC protocol is disabled with the following command: - --$ sudo grep -ri TIPC /etc/modprobe.d/* | grep -i "blacklist" -+$ sudo grep -r tipc /etc/modprobe.d/* | grep "blacklist" - --blacklist TIPC -+blacklist tipc - --If the command does not return any output or the output is not "blacklist TIPC", and use of the TIPC protocol is not documented with the Information System Security Officer (ISSO) as an operational requirement, this is a finding.SRG-OS-000095-GPOS-00049<GroupDescription></GroupDescription>RHEL-08-040025RHEL 8 must disable mounting of cramfs.<VulnDiscussion>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. -+If the command does not return any output or the output is not "blacklist tipc", and use of the TIPC protocol is not documented with the Information System Security Officer (ISSO) as an operational requirement, this is a finding.SRG-OS-000095-GPOS-00049<GroupDescription></GroupDescription>RHEL-08-040025RHEL 8 must disable mounting of cramfs.<VulnDiscussion>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. - - Removing support for unneeded filesystem types reduces the local attack surface of the server. - -@@ -5106,9 +5186,9 @@ Add or update the following lines in the file "/etc/modprobe.d/blacklist.conf": - install cramfs /bin/true - blacklist cramfs - --Reboot the system for the settings to take effect.Verify the operating system disables the ability to load the cramfs kernel module. -+Reboot the system for the settings to take effect.Verify the operating system disables the ability to load the cramfs kernel module. - --$ sudo grep -ri cramfs /etc/modprobe.d/* | grep -i "/bin/true" -+$ sudo grep -r cramfs /etc/modprobe.d/* | grep "/bin/true" - - install cramfs /bin/true - -@@ -5118,11 +5198,11 @@ Verify the operating system disables the ability to use the cramfs kernel module - - Check to see if the cramfs kernel module is disabled with the following command: - --$ sudo grep -ri cramfs /etc/modprobe.d/* | grep -i "blacklist" -+$ sudo grep -r cramfs /etc/modprobe.d/* | grep "blacklist" - - blacklist cramfs - --If the command does not return any output or the output is not "blacklist cramfs", and use of the cramfs kernel module is not documented with the Information System Security Officer (ISSO) as an operational requirement, this is a finding.SRG-OS-000095-GPOS-00049<GroupDescription></GroupDescription>RHEL-08-040026RHEL 8 must disable IEEE 1394 (FireWire) Support.<VulnDiscussion>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. -+If the command does not return any output or the output is not "blacklist cramfs", and use of the cramfs kernel module is not documented with the Information System Security Officer (ISSO) as an operational requirement, this is a finding.SRG-OS-000095-GPOS-00049<GroupDescription></GroupDescription>RHEL-08-040026RHEL 8 must disable IEEE 1394 (FireWire) Support.<VulnDiscussion>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 IEEE 1394 (FireWire) is a serial bus standard for high-speed real-time communication. Disabling FireWire protects the system against exploitation of any flaws in its implementation.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000381Configure the operating system to disable the ability to use the firewire-core kernel module. - -@@ -5131,9 +5211,9 @@ Add or update the following lines in the file "/etc/modprobe.d/blacklist.conf": - install firewire-core /bin/true - blacklist firewire-core - --Reboot the system for the settings to take effect.Verify the operating system disables the ability to load the firewire-core kernel module. -+Reboot the system for the settings to take effect.Verify the operating system disables the ability to load the firewire-core kernel module. - --$ sudo grep -ri firewire-core /etc/modprobe.d/* | grep -i "/bin/true" -+$ sudo grep -r firewire-core /etc/modprobe.d/* | grep "/bin/true" - - install firewire-core /bin/true - -@@ -5143,7 +5223,7 @@ Verify the operating system disables the ability to use the firewire-core kernel - - Check to see if the firewire-core kernel module is disabled with the following command: - --$ sudo grep -ri firewire-core /etc/modprobe.d/* | grep -i "blacklist" -+$ sudo grep -r firewire-core /etc/modprobe.d/* | grep "blacklist" - - blacklist firewire-core - -@@ -5543,65 +5623,65 @@ $ sudo cat /etc/fstab | grep /var/log/audit - - /dev/mapper/rhel-var-log-audit /var/log/audit xfs defaults,nodev,nosuid,noexec 0 0 - --If results are returned and the "noexec" option is missing, or if /var/log/audit is mounted without the "noexec" option, this is a finding.SRG-OS-000368-GPOS-00154<GroupDescription></GroupDescription>RHEL-08-040132RHEL 8 must mount /var/tmp with the nodev option.<VulnDiscussion>The organization must identify authorized software programs and permit execution of authorized software. The process used to identify software programs that are authorized to execute on organizational information systems is commonly referred to as whitelisting. -- --The "noexec" mount option causes the system to not execute binary files. This option must be used for mounting any file system not containing approved binary files, as they may be incompatible. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access. -- --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 "nosuid" mount option causes the system to not execute "setuid" and "setgid" files with owner privileges. This option must be used for mounting any file system not containing approved "setuid" and "setguid" files. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-001764Configure the system so that /var/tmp is mounted with the "nodev" option by adding /modifying the /etc/fstab with the following line: -+If results are returned and the "noexec" option is missing, or if /var/log/audit is mounted without the "noexec" option, this is a finding.SRG-OS-000368-GPOS-00154<GroupDescription></GroupDescription>RHEL-08-040132RHEL 8 must mount /var/tmp with the nodev option.<VulnDiscussion>The organization must identify authorized software programs and permit execution of authorized software. The process used to identify software programs that are authorized to execute on organizational information systems is commonly referred to as whitelisting. -+ -+The "noexec" mount option causes the system to not execute binary files. This option must be used for mounting any file system not containing approved binary files, as they may be incompatible. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access. -+ -+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 "nosuid" mount option causes the system to not execute "setuid" and "setgid" files with owner privileges. This option must be used for mounting any file system not containing approved "setuid" and "setguid" files. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-001764Configure the system so that /var/tmp is mounted with the "nodev" option by adding /modifying the /etc/fstab with the following line: - --/dev/mapper/rhel-var-log-audit /var/tmp xfs defaults,nodev,nosuid,noexec 0 0Verify "/var/tmp" is mounted with the "nodev" option: -+/dev/mapper/rhel-var-tmp /var/tmp xfs defaults,nodev,nosuid,noexec 0 0Verify "/var/tmp" is mounted with the "nodev" option: - - $ sudo mount | grep /var/tmp - --/dev/mapper/rhel-var-log-audit on /var/tmp type xfs (rw,nodev,nosuid,noexec,seclabel) -+/dev/mapper/rhel-var-tmp on /var/tmp type xfs (rw,nodev,nosuid,noexec,seclabel) - - Verify that the "nodev" option is configured for /var/tmp: - - $ sudo cat /etc/fstab | grep /var/tmp - --/dev/mapper/rhel-var-log-audit /var/tmp xfs defaults,nodev,nosuid,noexec 0 0 -+/dev/mapper/rhel-var-tmp /var/tmp xfs defaults,nodev,nosuid,noexec 0 0 - --If results are returned and the "nodev" option is missing, or if /var/tmp is mounted without the "nodev" option, this is a finding.SRG-OS-000368-GPOS-00154<GroupDescription></GroupDescription>RHEL-08-040133RHEL 8 must mount /var/tmp with the nosuid option.<VulnDiscussion>The organization must identify authorized software programs and permit execution of authorized software. The process used to identify software programs that are authorized to execute on organizational information systems is commonly referred to as whitelisting. -- --The "noexec" mount option causes the system to not execute binary files. This option must be used for mounting any file system not containing approved binary files, as they may be incompatible. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access. -- --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 "nosuid" mount option causes the system to not execute "setuid" and "setgid" files with owner privileges. This option must be used for mounting any file system not containing approved "setuid" and "setguid" files. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-001764Configure the system so that /var/tmp is mounted with the "nosuid" option by adding /modifying the /etc/fstab with the following line: -+If results are returned and the "nodev" option is missing, or if /var/tmp is mounted without the "nodev" option, this is a finding.SRG-OS-000368-GPOS-00154<GroupDescription></GroupDescription>RHEL-08-040133RHEL 8 must mount /var/tmp with the nosuid option.<VulnDiscussion>The organization must identify authorized software programs and permit execution of authorized software. The process used to identify software programs that are authorized to execute on organizational information systems is commonly referred to as whitelisting. -+ -+The "noexec" mount option causes the system to not execute binary files. This option must be used for mounting any file system not containing approved binary files, as they may be incompatible. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access. -+ -+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 "nosuid" mount option causes the system to not execute "setuid" and "setgid" files with owner privileges. This option must be used for mounting any file system not containing approved "setuid" and "setguid" files. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-001764Configure the system so that /var/tmp is mounted with the "nosuid" option by adding /modifying the /etc/fstab with the following line: - --/dev/mapper/rhel-var-log-audit /var/tmp xfs defaults,nodev,nosuid,noexec 0 0Verify "/var/tmp" is mounted with the "nosuid" option: -+/dev/mapper/rhel-var-tmp /var/tmp xfs defaults,nodev,nosuid,noexec 0 0Verify "/var/tmp" is mounted with the "nosuid" option: - - $ sudo mount | grep /var/tmp - --/dev/mapper/rhel-var-log-audit on /var/tmp type xfs (rw,nodev,nosuid,noexec,seclabel) -+/dev/mapper/rhel-var-tmp on /var/tmp type xfs (rw,nodev,nosuid,noexec,seclabel) - - Verify that the "nosuid" option is configured for /var/tmp: - - $ sudo cat /etc/fstab | grep /var/tmp - --/dev/mapper/rhel-var-log-audit /var/tmp xfs defaults,nodev,nosuid,noexec 0 0 -+/dev/mapper/rhel-var-tmp /var/tmp xfs defaults,nodev,nosuid,noexec 0 0 - --If results are returned and the "nosuid" option is missing, or if /var/tmp is mounted without the "nosuid" option, this is a finding.SRG-OS-000368-GPOS-00154<GroupDescription></GroupDescription>RHEL-08-040134RHEL 8 must mount /var/tmp with the noexec option.<VulnDiscussion>The organization must identify authorized software programs and permit execution of authorized software. The process used to identify software programs that are authorized to execute on organizational information systems is commonly referred to as whitelisting. -- --The "noexec" mount option causes the system to not execute binary files. This option must be used for mounting any file system not containing approved binary files, as they may be incompatible. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access. -- --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 "nosuid" mount option causes the system to not execute "setuid" and "setgid" files with owner privileges. This option must be used for mounting any file system not containing approved "setuid" and "setguid" files. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-001764Configure the system so that /var/tmp is mounted with the "noexec" option by adding /modifying the /etc/fstab with the following line: -+If results are returned and the "nosuid" option is missing, or if /var/tmp is mounted without the "nosuid" option, this is a finding.SRG-OS-000368-GPOS-00154<GroupDescription></GroupDescription>RHEL-08-040134RHEL 8 must mount /var/tmp with the noexec option.<VulnDiscussion>The organization must identify authorized software programs and permit execution of authorized software. The process used to identify software programs that are authorized to execute on organizational information systems is commonly referred to as whitelisting. -+ -+The "noexec" mount option causes the system to not execute binary files. This option must be used for mounting any file system not containing approved binary files, as they may be incompatible. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access. -+ -+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. - --/dev/mapper/rhel-var-log-audit /var/tmp xfs defaults,nodev,nosuid,noexec 0 0Verify "/var/tmp" is mounted with the "noexec" option: -+The "nosuid" mount option causes the system to not execute "setuid" and "setgid" files with owner privileges. This option must be used for mounting any file system not containing approved "setuid" and "setguid" files. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-001764Configure the system so that /var/tmp is mounted with the "noexec" option by adding /modifying the /etc/fstab with the following line: -+ -+/dev/mapper/rhel-var-tmp /var/tmp xfs defaults,nodev,nosuid,noexec 0 0Verify "/var/tmp" is mounted with the "noexec" option: - - $ sudo mount | grep /var/tmp - --/dev/mapper/rhel-var-log-audit on /var/tmp type xfs (rw,nodev,nosuid,noexec,seclabel) -+/dev/mapper/rhel-var-tmp on /var/tmp type xfs (rw,nodev,nosuid,noexec,seclabel) - - Verify that the "noexec" option is configured for /var/tmp: - - $ sudo cat /etc/fstab | grep /var/tmp - --/dev/mapper/rhel-var-log-audit /var/tmp xfs defaults,nodev,nosuid,noexec 0 0 -+/dev/mapper/rhel-var-tmp /var/tmp xfs defaults,nodev,nosuid,noexec 0 0 - - If results are returned and the "noexec" option is missing, or if /var/tmp is mounted without the "noexec" option, this is a finding.SRG-OS-000368-GPOS-00154<GroupDescription></GroupDescription>RHEL-08-040135The RHEL 8 fapolicy module must be installed.<VulnDiscussion>The organization must identify authorized software programs and permit execution of authorized software. The process used to identify software programs that are authorized to execute on organizational information systems is commonly referred to as whitelisting. - -@@ -5774,13 +5854,25 @@ If the account is associated with system commands or applications, the UID shoul - - $ sudo awk -F: '$3 == 0 {print $1}' /etc/passwd - --If any accounts other than root have a UID of "0", this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040210RHEL 8 must prevent IPv6 Internet Control Message Protocol (ICMP) redirect messages from being accepted.<VulnDiscussion>ICMP redirect messages are used by routers to inform hosts that a more direct route exists for a particular destination. These messages modify the host's route table and are unauthenticated. An illicit ICMP redirect message could result in a man-in-the-middle attack.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to prevent IPv6 ICMP redirect messages from being accepted with the following command: -+If any accounts other than root have a UID of "0", this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040210RHEL 8 must prevent IPv6 Internet Control Message Protocol (ICMP) redirect messages from being accepted.<VulnDiscussion>ICMP redirect messages are used by routers to inform hosts that a more direct route exists for a particular destination. These messages modify the host's route table and are unauthenticated. An illicit ICMP redirect message could result in a man-in-the-middle attack. -+ -+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 -+ -+Based on the information above, if a configuration file that begins with "99-" is created in the "/etc/sysctl.d/" directory, it will take precedence over any other configuration file on the system.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to prevent IPv6 ICMP redirect messages from being accepted. - --$ sudo sysctl -w net.ipv6.conf.default.accept_redirects=0 -+Add or edit the following line in a system configuration file, which begins with "99-", in the "/etc/sysctl.d/" directory: - --If "0" is not the system's default value then add or update the following line in the appropriate file under "/etc/sysctl.d": -+net.ipv6.conf.default.accept_redirects = 0 -+ -+Load settings from all system configuration files with the following command: - --net.ipv6.conf.default.accept_redirects=0Verify RHEL 8 will not accept IPv6 ICMP redirect messages. -+$ sudo sysctl --systemVerify RHEL 8 will not accept IPv6 ICMP redirect messages. - - Note: If IPv6 is disabled on the system, this requirement is Not Applicable. - -@@ -5790,15 +5882,37 @@ $ sudo sysctl net.ipv6.conf.default.accept_redirects - - net.ipv6.conf.default.accept_redirects = 0 - --If the returned line does not have a value of "0", a line is not returned, or the line is commented out, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040220RHEL 8 must not send Internet Control Message Protocol (ICMP) redirects.<VulnDiscussion>ICMP redirect messages are used by routers to inform hosts that a more direct route exists for a particular destination. These messages contain information from the system's route table, possibly revealing portions of the network topology. -+If the returned line does not have a value of "0", a line is not returned, or the line is commented out, this is a finding. -+ -+Check that the configuration files are present to enable this network parameter. -+ -+$ sudo grep -r net.ipv6.conf.default.accept_redirects /etc/sysctl.d/*.conf -+ -+/etc/sysctl.d/99-sysctl.conf: net.ipv6.conf.default.accept_redirects = 0 - --There are notable differences between Internet Protocol version 4 (IPv4) and Internet Protocol version 6 (IPv6). There is only a directive to disable sending of IPv4 redirected packets. Refer to RFC4294 for an explanation of "IPv6 Node Requirements", which resulted in this difference between IPv4 and IPv6.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to not allow interfaces to perform IPv4 ICMP redirects with the following command: -+If "net.ipv6.conf.default.accept_redirects" is not set to "0", is missing or commented out, this is a finding. - --$ sudo sysctl -w net.ipv4.conf.all.send_redirects=0 -+If the configuration file does not begin with "99-", this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040220RHEL 8 must not send Internet Control Message Protocol (ICMP) redirects.<VulnDiscussion>ICMP redirect messages are used by routers to inform hosts that a more direct route exists for a particular destination. These messages contain information from the system's route table, possibly revealing portions of the network topology. - --If "0" is not the system's default value then add or update the following line in the appropriate file under "/etc/sysctl.d": -+There are notable differences between Internet Protocol version 4 (IPv4) and Internet Protocol version 6 (IPv6). There is only a directive to disable sending of IPv4 redirected packets. Refer to RFC4294 for an explanation of "IPv6 Node Requirements", which resulted in this difference between IPv4 and IPv6. - --net.ipv4.conf.all.send_redirects=0Verify RHEL 8 does not IPv4 ICMP redirect messages. -+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 -+ -+Based on the information above, if a configuration file that begins with "99-" is created in the "/etc/sysctl.d/" directory, it will take precedence over any other configuration file on the system.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to not allow interfaces to perform IPv4 ICMP redirects. -+ -+Add or edit the following line in a system configuration file, which begins with "99-", in the "/etc/sysctl.d/" directory: -+ -+net.ipv4.conf.all.send_redirects=0 -+ -+Load settings from all system configuration files with the following command: -+ -+$ sudo sysctl --systemVerify RHEL 8 does not IPv4 ICMP redirect messages. - - Note: If IPv4 is disabled on the system, this requirement is Not Applicable. - -@@ -5808,30 +5922,74 @@ $ sudo sysctl net.ipv4.conf.all.send_redirects - - net.ipv4.conf.all.send_redirects = 0 - --If the returned line does not have a value of "0", or a line is not returned, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040230RHEL 8 must not respond to Internet Control Message Protocol (ICMP) echoes sent to a broadcast address.<VulnDiscussion>Responding to broadcast ICMP echoes facilitates network mapping and provides a vector for amplification attacks. -+If the returned line does not have a value of "0", or a line is not returned, this is a finding. - --There are notable differences between Internet Protocol version 4 (IPv4) and Internet Protocol version 6 (IPv6). IPv6 does not implement the same method of broadcast as IPv4. Instead, IPv6 uses multicast addressing to the all-hosts multicast group. Refer to RFC4294 for an explanation of "IPv6 Node Requirements", which resulted in this difference between IPv4 and IPv6.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to not respond to IPv4 ICMP echoes sent to a broadcast address with the following command: -+Check that the configuration files are present to enable this network parameter. - --$ sudo sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1 -+$ sudo grep -r net.ipv4.conf.all.send_redirects /etc/sysctl.d/*.conf - --If "1" is not the system's default value then add or update the following line in the appropriate file under "/etc/sysctl.d": -+/etc/sysctl.d/99-sysctl.conf: net.ipv4.conf.all.send_redirects = 0 - --net.ipv4.icmp_echo_ignore_broadcasts=1Verify RHEL 8 does not respond to ICMP echoes sent to a broadcast address. -+If "net.ipv4.conf.all.send_redirects" is not set to "0", is missing or commented out, this is a finding. -+ -+If the configuration file does not begin with "99-", this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040230RHEL 8 must not respond to Internet Control Message Protocol (ICMP) echoes sent to a broadcast address.<VulnDiscussion>Responding to broadcast ICMP echoes facilitates network mapping and provides a vector for amplification attacks. -+ -+There are notable differences between Internet Protocol version 4 (IPv4) and Internet Protocol version 6 (IPv6). IPv6 does not implement the same method of broadcast as IPv4. Instead, IPv6 uses multicast addressing to the all-hosts multicast group. Refer to RFC4294 for an explanation of "IPv6 Node Requirements", which resulted in this difference between IPv4 and IPv6. -+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 -+ -+Based on the information above, if a configuration file that begins with "99-" is created in the "/etc/sysctl.d/" directory, it will take precedence over any other configuration file on the system.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to not respond to IPv4 ICMP echoes sent to a broadcast address. -+ -+Add or edit the following line in a system configuration file, which begins with "99-", in the "/etc/sysctl.d/" directory: -+ -+net.ipv4.icmp_echo_ignore_broadcasts=1 -+ -+Load settings from all system configuration files with the following command: -+ -+$ sudo sysctl --systemVerify RHEL 8 does not respond to ICMP echoes sent to a broadcast address. - - Note: If IPv4 is disabled on the system, this requirement is Not Applicable. -+ - Check the value of the "icmp_echo_ignore_broadcasts" variable with the following command: - - $ sudo sysctl net.ipv4.icmp_echo_ignore_broadcasts - - net.ipv4.icmp_echo_ignore_broadcasts = 1 - --If the returned line does not have a value of "1", a line is not returned, or the retuned line is commented out, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040240RHEL 8 must not forward IPv6 source-routed packets.<VulnDiscussion>Source-routed packets allow the source of the packet to suggest that routers forward the packet along a different path than configured on the router, which can be used to bypass network security measures. This requirement applies only to the forwarding of source-routed traffic, such as when forwarding is enabled and the system is functioning as a router.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to not forward IPv6 source-routed packets with the following command: -+If the returned line does not have a value of "1", a line is not returned, or the retuned line is commented out, this is a finding. -+ -+Check that the configuration files are present to enable this network parameter. -+ -+$ sudo grep -r net.ipv4.icmp_echo_ignore_broadcasts /etc/sysctl.d/*.conf -+ -+/etc/sysctl.d/99-sysctl.conf: net.ipv4.icmp_echo_ignore_broadcasts = 1 -+ -+If "net.ipv4.icmp_echo_ignore_broadcasts" is not set to "1", is missing or commented out, this is a finding. -+ -+If the configuration file does not begin with "99-", this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040240RHEL 8 must not forward IPv6 source-routed packets.<VulnDiscussion>Source-routed packets allow the source of the packet to suggest that routers forward the packet along a different path than configured on the router, which can be used to bypass network security measures. This requirement applies only to the forwarding of source-routed traffic, such as when forwarding is enabled and the system is functioning as a router. -+ -+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 -+ -+Based on the information above, if a configuration file that begins with "99-" is created in the "/etc/sysctl.d/" directory, it will take precedence over any other configuration file on the system.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to not forward IPv6 source-routed packets. -+ -+Add or edit the following line in a system configuration file, which begins with "99-", in the "/etc/sysctl.d/" directory: - --$ sudo sysctl -w net.ipv6.conf.all.accept_source_route=0 -+net.ipv6.conf.all.accept_source_route=0 - --If "0" is not the system's all value then add or update the following line in the appropriate file under "/etc/sysctl.d": -+Load settings from all system configuration files with the following command: - --net.ipv6.conf.all.accept_source_route=0Verify RHEL 8 does not accept IPv6 source-routed packets. -+$ sudo sysctl --systemVerify RHEL 8 does not accept IPv6 source-routed packets. - - Note: If IPv6 is disabled on the system, this requirement is Not Applicable. - -@@ -5841,13 +5999,35 @@ $ sudo sysctl net.ipv6.conf.all.accept_source_route - - net.ipv6.conf.all.accept_source_route = 0 - --If the returned line does not have a value of "0", a line is not returned, or the line is commented out, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040250RHEL 8 must not forward IPv6 source-routed packets by default.<VulnDiscussion>Source-routed packets allow the source of the packet to suggest that routers forward the packet along a different path than configured on the router, which can be used to bypass network security measures. This requirement applies only to the forwarding of source-routed traffic, such as when forwarding is enabled and the system is functioning as a router.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to not forward IPv6 source-routed packets by default with the following command: -+If the returned line does not have a value of "0", a line is not returned, or the line is commented out, this is a finding. -+ -+Check that the configuration files are present to enable this network parameter. -+ -+$ sudo grep -r net.ipv6.conf.all.accept_source_route /etc/sysctl.d/*.conf -+ -+/etc/sysctl.d/99-sysctl.conf: net.ipv6.conf.all.accept_source_route = 0 -+ -+If "net.ipv6.conf.all.accept_source_route" is not set to "0", is missing or commented out, this is a finding. -+ -+If the configuration file does not begin with "99-", this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040250RHEL 8 must not forward IPv6 source-routed packets by default.<VulnDiscussion>Source-routed packets allow the source of the packet to suggest that routers forward the packet along a different path than configured on the router, which can be used to bypass network security measures. This requirement applies only to the forwarding of source-routed traffic, such as when forwarding is enabled and the system is functioning as a router. - --$ sudo sysctl -w net.ipv6.conf.default.accept_source_route=0 -+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 - --If "0" is not the system's default value then add or update the following line in the appropriate file under "/etc/sysctl.d": -+Based on the information above, if a configuration file that begins with "99-" is created in the "/etc/sysctl.d/" directory, it will take precedence over any other configuration file on the system.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to not forward IPv6 source-routed packets by default. - --net.ipv6.conf.default.accept_source_route=0Verify RHEL 8 does not accept IPv6 source-routed packets by default. -+Add or edit the following line in a system configuration file, which begins with "99-", in the "/etc/sysctl.d/" directory: -+ -+net.ipv6.conf.default.accept_source_route=0 -+ -+Load settings from all system configuration files with the following command: -+ -+$ sudo sysctl --systemVerify RHEL 8 does not accept IPv6 source-routed packets by default. - - Note: If IPv6 is disabled on the system, this requirement is Not Applicable. - -@@ -5857,39 +6037,75 @@ $ sudo sysctl net.ipv6.conf.default.accept_source_route - - net.ipv6.conf.default.accept_source_route = 0 - --If the returned line does not have a value of "0", a line is not returned, or the line is commented out, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040260RHEL 8 must not be performing packet forwarding unless the system is a router.<VulnDiscussion>Routing protocol daemons are typically used on routers to exchange network topology information with other routers. If this software is used when not required, system network information may be unnecessarily transmitted across the network.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to not allow packet forwarding, unless the system is a router with the following commands: -+If the returned line does not have a value of "0", a line is not returned, or the line is commented out, this is a finding. - --$ sudo sysctl -w net.ipv4.ip_forward=0 -+Check that the configuration files are present to enable this network parameter. - --$ sudo sysctl -w net.ipv6.conf.all.forwarding=0 -+$ sudo grep -r net.ipv6.conf.default.accept_source_route /etc/sysctl.d/*.conf - --If "0" is not the system's default value then add or update the following lines in the appropriate file under "/etc/sysctl.d": -+/etc/sysctl.d/99-sysctl.conf: net.ipv6.conf.default.accept_source_route = 0 - --net.ipv4.ip_forward=0 -+If "net.ipv6.conf.default.accept_source_route" is not set to "0", is missing or commented out, this is a finding. - --net.ipv6.conf.all.forwarding=0Verify RHEL 8 is not performing packet forwarding, unless the system is a router. -+If the configuration file does not begin with "99-", this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040260RHEL 8 must not enable IPv6 packet forwarding unless the system is a router.<VulnDiscussion>Routing protocol daemons are typically used on routers to exchange network topology information with other routers. If this software is used when not required, system network information may be unnecessarily transmitted across the network. - --Note: If either IPv4 or IPv6 is disabled on the system, this requirement only applies to the active internet protocol version. -+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 - --Check to see if IP forwarding is enabled using the following commands: -+Based on the information above, if a configuration file that begins with "99-" is created in the "/etc/sysctl.d/" directory, it will take precedence over any other configuration file on the system.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to not allow IPv6 packet forwarding, unless the system is a router. - --$ sudo sysctl net.ipv4.ip_forward -+Add or edit the following line in a system configuration file, which begins with "99-", in the "/etc/sysctl.d/" directory: - --net.ipv4.ip_forward = 0 -+net.ipv6.conf.all.forwarding=0 -+ -+Load settings from all system configuration files with the following command: -+ -+$ sudo sysctl --systemVerify RHEL 8 is not performing IPv6 packet forwarding, unless the system is a router. -+ -+Note: If IPv6 is disabled on the system, this requirement is Not Applicable. -+ -+Check that IPv6 forwarding is disabled using the following commands: - - $ sudo sysctl net.ipv6.conf.all.forwarding - - net.ipv6.conf.all.forwarding = 0 - --If IP forwarding value is not "0" and is not documented with the Information System Security Officer (ISSO) as an operational requirement, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040261RHEL 8 must not accept router advertisements on all IPv6 interfaces.<VulnDiscussion>Routing protocol daemons are typically used on routers to exchange network topology information with other routers. If this software is used when not required, system network information may be unnecessarily transmitted across the network. -+If the IPv6 forwarding value is not "0" and is not documented with the Information System Security Officer (ISSO) as an operational requirement, this is a finding. -+ -+Check that the configuration files are present to enable this network parameter. -+ -+$ sudo grep -r net.ipv6.conf.all.forwarding /etc/sysctl.d/*.conf -+ -+/etc/sysctl.d/99-sysctl.conf: net.ipv6.conf.all.forwarding = 0 -+ -+If "net.ipv6.conf.all.forwarding" is not set to "0", is missing or commented out, this is a finding. -+ -+If the configuration file does not begin with "99-", this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040261RHEL 8 must not accept router advertisements on all IPv6 interfaces.<VulnDiscussion>Routing protocol daemons are typically used on routers to exchange network topology information with other routers. If this software is used when not required, system network information may be unnecessarily transmitted across the network. -+ -+An illicit router advertisement message could result in a man-in-the-middle attack. - --An illicit router advertisement message could result in a man-in-the-middle attack.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to not accept router advertisements on all IPv6 interfaces unless the system is a router with the following commands: -+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 - --$ sudo sysctl -w net.ipv6.conf.all.accept_ra=0 -+Based on the information above, if a configuration file that begins with "99-" is created in the "/etc/sysctl.d/" directory, it will take precedence over any other configuration file on the system.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to not accept router advertisements on all IPv6 interfaces unless the system is a router. - --If "0" is not the system's default value then add or update the following lines in the appropriate file under "/etc/sysctl.d": -+Add or edit the following line in a system configuration file, which begins with "99-", in the "/etc/sysctl.d/" directory: - --net.ipv6.conf.all.accept_ra=0Verify RHEL 8 does not accept router advertisements on all IPv6 interfaces, unless the system is a router. -+net.ipv6.conf.all.accept_ra=0 -+ -+Load settings from all system configuration files with the following command: -+ -+$ sudo sysctl --systemVerify RHEL 8 does not accept router advertisements on all IPv6 interfaces, unless the system is a router. - - Note: If IPv6 is disabled on the system, this requirement is not applicable. - -@@ -5899,15 +6115,37 @@ $ sudo sysctl net.ipv6.conf.all.accept_ra - - net.ipv6.conf.all.accept_ra = 0 - --If the "accept_ra" value is not "0" and is not documented with the Information System Security Officer (ISSO) as an operational requirement, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040262RHEL 8 must not accept router advertisements on all IPv6 interfaces by default.<VulnDiscussion>Routing protocol daemons are typically used on routers to exchange network topology information with other routers. If this software is used when not required, system network information may be unnecessarily transmitted across the network. -+If the "accept_ra" value is not "0" and is not documented with the Information System Security Officer (ISSO) as an operational requirement, this is a finding. -+ -+Check that the configuration files are present to enable this network parameter. -+ -+$ sudo grep -r net.ipv6.conf.all.accept_ra /etc/sysctl.d/*.conf -+ -+/etc/sysctl.d/99-sysctl.conf: net.ipv6.conf.all.accept_ra = 0 - --An illicit router advertisement message could result in a man-in-the-middle attack.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to not accept router advertisements on all IPv6 interfaces by default unless the system is a router with the following commands: -+If "net.ipv6.conf.all.accept_ra" is not set to "0", is missing or commented out, this is a finding. - --$ sudo sysctl -w net.ipv6.conf.default.accept_ra=0 -+If the configuration file does not begin with "99-", this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040262RHEL 8 must not accept router advertisements on all IPv6 interfaces by default.<VulnDiscussion>Routing protocol daemons are typically used on routers to exchange network topology information with other routers. If this software is used when not required, system network information may be unnecessarily transmitted across the network. - --If "0" is not the system's default value then add or update the following lines in the appropriate file under "/etc/sysctl.d": -+An illicit router advertisement message could result in a man-in-the-middle attack. -+ -+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 -+ -+Based on the information above, if a configuration file that begins with "99-" is created in the "/etc/sysctl.d/" directory, it will take precedence over any other configuration file on the system.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to not accept router advertisements on all IPv6 interfaces by default unless the system is a router. -+ -+Add or edit the following line in a system configuration file, which begins with "99-", in the "/etc/sysctl.d/" directory: -+ -+net.ipv6.conf.default.accept_ra=0 -+ -+Load settings from all system configuration files with the following command: - --net.ipv6.conf.default.accept_ra=0Verify RHEL 8 does not accept router advertisements on all IPv6 interfaces by default, unless the system is a router. -+$ sudo sysctl --systemVerify RHEL 8 does not accept router advertisements on all IPv6 interfaces by default, unless the system is a router. - - Note: If IPv6 is disabled on the system, this requirement is not applicable. - -@@ -5917,15 +6155,37 @@ $ sudo sysctl net.ipv6.conf.default.accept_ra - - net.ipv6.conf.default.accept_ra = 0 - --If the "accept_ra" value is not "0" and is not documented with the Information System Security Officer (ISSO) as an operational requirement, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040270RHEL 8 must not allow interfaces to perform Internet Control Message Protocol (ICMP) redirects by default.<VulnDiscussion>ICMP redirect messages are used by routers to inform hosts that a more direct route exists for a particular destination. These messages contain information from the system's route table, possibly revealing portions of the network topology. -+If the "accept_ra" value is not "0" and is not documented with the Information System Security Officer (ISSO) as an operational requirement, this is a finding. - --There are notable differences between Internet Protocol version 4 (IPv4) and Internet Protocol version 6 (IPv6). There is only a directive to disable sending of IPv4 redirected packets. Refer to RFC4294 for an explanation of "IPv6 Node Requirements", which resulted in this difference between IPv4 and IPv6.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to not allow interfaces to perform Internet Protocol version 4 (IPv4) ICMP redirects by default with the following command: -+Check that the configuration files are present to enable this network parameter. - --$ sudo sysctl -w net.ipv4.conf.default.send_redirects=0 -+$ sudo grep -r net.ipv6.conf.default.accept_ra /etc/sysctl.d/*.conf - --If "0" is not the system's default value then add or update the following line in the appropriate file under "/etc/sysctl.d": -+/etc/sysctl.d/99-sysctl.conf: net.ipv6.conf.default.accept_ra = 0 - --net.ipv4.conf.default.send_redirects=0Verify RHEL 8 does not allow interfaces to perform Internet Protocol version 4 (IPv4) ICMP redirects by default. -+If "net.ipv6.conf.default.accept_ra" is not set to "0", is missing or commented out, this is a finding. -+ -+If the configuration file does not begin with "99-", this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040270RHEL 8 must not allow interfaces to perform Internet Control Message Protocol (ICMP) redirects by default.<VulnDiscussion>ICMP redirect messages are used by routers to inform hosts that a more direct route exists for a particular destination. These messages contain information from the system's route table, possibly revealing portions of the network topology. -+ -+There are notable differences between Internet Protocol version 4 (IPv4) and Internet Protocol version 6 (IPv6). There is only a directive to disable sending of IPv4 redirected packets. Refer to RFC4294 for an explanation of "IPv6 Node Requirements", which resulted in this difference between IPv4 and IPv6. -+ -+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 -+ -+Based on the information above, if a configuration file that begins with "99-" is created in the "/etc/sysctl.d/" directory, it will take precedence over any other configuration file on the system.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to not allow interfaces to perform Internet Protocol version 4 (IPv4) ICMP redirects by default. -+ -+Add or edit the following line in a system configuration file, which begins with "99-", in the "/etc/sysctl.d/" directory: -+ -+net.ipv4.conf.default.send_redirects = 0 -+ -+Load settings from all system configuration files with the following command: -+ -+$ sudo sysctl --systemVerify RHEL 8 does not allow interfaces to perform Internet Protocol version 4 (IPv4) ICMP redirects by default. - - Note: If IPv4 is disabled on the system, this requirement is Not Applicable. - -@@ -5935,13 +6195,35 @@ $ sudo sysctl net.ipv4.conf.default.send_redirects - - net.ipv4.conf.default.send_redirects=0 - --If the returned line does not have a value of "0", or a line is not returned, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040280RHEL 8 must ignore IPv6 Internet Control Message Protocol (ICMP) redirect messages.<VulnDiscussion>ICMP redirect messages are used by routers to inform hosts that a more direct route exists for a particular destination. These messages modify the host's route table and are unauthenticated. An illicit ICMP redirect message could result in a man-in-the-middle attack.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to ignore IPv6 ICMP redirect messages with the following command: -+If the returned line does not have a value of "0", or a line is not returned, this is a finding. -+ -+Check that the configuration files are present to enable this network parameter. -+ -+$ sudo grep -r net.ipv4.conf.default.send_redirects /etc/sysctl.d/*.conf -+ -+/etc/sysctl.d/99-sysctl.conf: net.ipv4.conf.default.send_redirects = 0 - --$ sudo sysctl -w net.ipv6.conf.all.accept_redirects=0 -+If "net.ipv4.conf.default.send_redirects" is not set to "0", is missing or commented out, this is a finding. - --If "0" is not the system's default value then add or update the following line in the appropriate file under "/etc/sysctl.d": -+If the configuration file does not begin with "99-", this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040280RHEL 8 must ignore IPv6 Internet Control Message Protocol (ICMP) redirect messages.<VulnDiscussion>ICMP redirect messages are used by routers to inform hosts that a more direct route exists for a particular destination. These messages modify the host's route table and are unauthenticated. An illicit ICMP redirect message could result in a man-in-the-middle attack. - --net.ipv6.conf.all.accept_redirects = 0Verify RHEL 8 ignores IPv6 ICMP redirect messages. -+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 -+ -+Based on the information above, if a configuration file that begins with "99-" is created in the "/etc/sysctl.d/" directory, it will take precedence over any other configuration file on the system.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to ignore IPv6 ICMP redirect messages. -+ -+Add or edit the following line in a system configuration file, which begins with "99-", in the "/etc/sysctl.d/" directory: -+ -+net.ipv6.conf.all.accept_redirects = 0 -+ -+Load settings from all system configuration files with the following command: -+ -+$ sudo sysctl --systemVerify RHEL 8 ignores IPv6 ICMP redirect messages. - - Note: If IPv6 is disabled on the system, this requirement is Not Applicable. - -@@ -5951,75 +6233,181 @@ $ sudo sysctl net.ipv6.conf.all.accept_redirects - - net.ipv6.conf.all.accept_redirects = 0 - --If the returned line does not have a value of "0", a line is not returned, or the line is commented out, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040281RHEL 8 must disable access to network bpf syscall from unprivileged processes.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to prevent privilege escalation thru the kernel by disabling access to the bpf syscall by adding the following line to a file in the "/etc/sysctl.d" directory: -+If the returned line does not have a value of "0", a line is not returned, or the line is commented out, this is a finding. -+ -+Check that the configuration files are present to enable this network parameter. -+ -+$ sudo grep -r net.ipv6.conf.all.accept_redirects /etc/sysctl.d/*.conf -+ -+/etc/sysctl.d/99-sysctl.conf: net.ipv6.conf.all.accept_redirects = 0 -+ -+If "net.ipv6.conf.all.accept_redirects" is not set to "0", is missing or commented out, this is a finding. -+ -+If the configuration file does not begin with "99-", this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040281RHEL 8 must disable access to network bpf syscall from unprivileged processes.<VulnDiscussion>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 -+ -+Based on the information above, if a configuration file that begins with "99-" is created in the "/etc/sysctl.d/" directory, it will take precedence over any other configuration file on the system.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to prevent privilege escalation thru the kernel by disabling access to the bpf syscall by adding the following line to a file, which begins with "99-", in the "/etc/sysctl.d" directory: - - kernel.unprivileged_bpf_disabled = 1 - - 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 --systemVerify RHEL 8 prevents privilege escalation thru the kernel by disabling access to the bpf syscall with the following commands: -+$ sudo sysctl --systemVerify RHEL 8 prevents privilege escalation thru the kernel by disabling access to the bpf syscall with the following commands: - - $ sudo sysctl kernel.unprivileged_bpf_disabled - - kernel.unprivileged_bpf_disabled = 1 - --If the returned line does not have a value of "1", or a line is not returned, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040282RHEL 8 must restrict usage of ptrace to descendant processes.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to restrict usage of ptrace to descendant processes by adding the following line to a file in the "/etc/sysctl.d" directory: -+If the returned line does not have a value of "1", or a line is not returned, this is a finding. -+ -+Check that the configuration files are present to enable this network parameter. -+ -+$ sudo grep -r kernel.unprivileged_bpf_disabled /etc/sysctl.d/*.conf -+ -+/etc/sysctl.d/99-sysctl.conf: kernel.unprivileged_bpf_disabled = 1 -+ -+If "kernel.unprivileged_bpf_disabled" is not set to "1", is missing or commented out, this is a finding. -+ -+If the configuration file does not begin with "99-", this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040282RHEL 8 must restrict usage of ptrace to descendant processes.<VulnDiscussion>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 -+ -+Based on the information above, if a configuration file that begins with "99-" is created in the "/etc/sysctl.d/" directory, it will take precedence over any other configuration file on the system.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to restrict usage of ptrace to descendant processes by adding the following line to a file, which begins with "99-", in the "/etc/sysctl.d" directory: - - kernel.yama.ptrace_scope = 1 - - 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 --systemVerify RHEL 8 restricts usage of ptrace to descendant processes with the following commands: -+$ sudo sysctl --systemVerify RHEL 8 restricts usage of ptrace to descendant processes with the following commands: - - $ sudo sysctl kernel.yama.ptrace_scope - - kernel.yama.ptrace_scope = 1 - --If the returned line does not have a value of "1", or a line is not returned, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040283RHEL 8 must restrict exposed kernel pointer addresses access.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to restrict exposed kernel pointer addresses access by adding the following line to a file in the "/etc/sysctl.d" directory: -+If the returned line does not have a value of "1", or a line is not returned, this is a finding. -+ -+Check that the configuration files are present to enable this network parameter. -+ -+$ sudo grep -r kernel.yama.ptrace_scope /etc/sysctl.d/*.conf -+ -+/etc/sysctl.d/99-sysctl.conf: kernel.yama.ptrace_scope = 1 -+ -+If "kernel.yama.ptrace_scope" is not set to "1", is missing or commented out, this is a finding. -+ -+If the configuration file does not begin with "99-", this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040283RHEL 8 must restrict exposed kernel pointer addresses access.<VulnDiscussion>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 -+ -+Based on the information above, if a configuration file that begins with "99-" is created in the "/etc/sysctl.d/" directory, it will take precedence over any other configuration file on the system.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to restrict exposed kernel pointer addresses access by adding the following line to a file, which begins with "99-", in the "/etc/sysctl.d" directory: - - kernel.kptr_restrict = 1 - - 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 --systemVerify RHEL 8 restricts exposed kernel pointer addresses access with the following commands: -+$ sudo sysctl --systemVerify RHEL 8 restricts exposed kernel pointer addresses access with the following commands: - - $ sudo sysctl kernel.kptr_restrict - - kernel.kptr_restrict = 1 - --If the returned line does not have a value of "1", or a line is not returned, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040284RHEL 8 must disable the use of user namespaces.<VulnDiscussion>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. -+If the returned line does not have a value of "1", or a line is not returned, this is a finding. -+ -+Check that the configuration files are present to enable this network parameter. -+ -+$ sudo grep -r kernel.kptr_restrict /etc/sysctl.d/*.conf - --User namespaces are used primarily for Linux container. The value 0 disallows the use of user namespaces. When containers are not in use, namespaces should be disallowed. When containers are deployed on a system, the value should be set to a large non-zero value. The default value is 7182.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to disable the use of user namespaces by adding the following line to a file in the "/etc/sysctl.d" directory: -+/etc/sysctl.d/99-sysctl.conf: kernel.kptr_restrict = 1 - --Note: User namespaces are used primarily for Linux containers. If containers are in use, this requirement is not applicable. -+If "kernel.kptr_restrict" is not set to "1", is missing or commented out, this is a finding. -+ -+If the configuration file does not begin with "99-", this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040284RHEL 8 must disable the use of user namespaces.<VulnDiscussion>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 -+ -+Based on the information above, if a configuration file that begins with "99-" is created in the "/etc/sysctl.d/" directory, it will take precedence over any other configuration file on the system.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to disable the use of user namespaces by adding the following line to a file, which begins with "99-", in the "/etc/sysctl.d" directory: -+ -+Note: User namespaces are used primarily for Linux containers. If containers are in use, this requirement is not applicable. - - user.max_user_namespaces = 0 - - 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 --systemVerify RHEL 8 disables the use of user namespaces with the following commands: -+$ sudo sysctl --systemVerify RHEL 8 disables the use of user namespaces with the following commands: - --Note: User namespaces are used primarily for Linux containers. If containers are in use, this requirement is not applicable. -+Note: User namespaces are used primarily for Linux containers. If containers are in use, this requirement is not applicable. - - $ sudo sysctl user.max_user_namespaces - - user.max_user_namespaces = 0 - --If the returned line does not have a value of "0", or a line is not returned, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040285RHEL 8 must use reverse path filtering on all IPv4 interfaces.<VulnDiscussion>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. -+If the returned line does not have a value of "0", or a line is not returned, this is a finding. -+ -+Check that the configuration files are present to enable this network parameter. -+ -+$ sudo grep -r user.max_user_namespaces /etc/sysctl.d/*.conf - --Enabling reverse path filtering drops packets with source addresses that are not routable. There is not an equivalent filter for IPv6 traffic.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to use reverse path filtering on all IPv4 interfaces by adding the following line to a file in the "/etc/sysctl.d" directory: -+/etc/sysctl.d/99-sysctl.conf: user.max_user_namespaces = 0 -+ -+If "user.max_user_namespaces" is not set to "0", is missing or commented out, this is a finding. -+ -+If the configuration file does not begin with "99-", this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040285RHEL 8 must use reverse path filtering on all IPv4 interfaces.<VulnDiscussion>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 -+ -+Based on the information above, if a configuration file that begins with "99-" is created in the "/etc/sysctl.d/" directory, it will take precedence over any other configuration file on the system.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to use reverse path filtering on all IPv4 interfaces by adding the following line to a file, which begins with "99-", in the "/etc/sysctl.d" directory: - - net.ipv4.conf.all.rp_filter = 1 - - 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 --systemVerify RHEL 8 uses reverse path filtering on all IPv4 interfaces with the following commands: -+$ sudo sysctl --systemVerify RHEL 8 uses reverse path filtering on all IPv4 interfaces with the following commands: - - $ sudo sysctl net.ipv4.conf.all.rp_filter - - net.ipv4.conf.all.rp_filter = 1 - --If the returned line does not have a value of "1", or a line is not returned, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040290RHEL 8 must be configured to prevent unrestricted mail relaying.<VulnDiscussion>If unrestricted mail relaying is permitted, unauthorized senders could use this host as a mail relay for the purpose of sending spam or other unauthorized activity.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366If "postfix" is installed, modify the "/etc/postfix/main.cf" file to restrict client connections to the local network with the following command: -+If the returned line does not have a value of "1", or a line is not returned, this is a finding. -+ -+Check that the configuration files are present to enable this network parameter. -+ -+$ sudo grep -r net.ipv4.conf.all.rp_filter /etc/sysctl.d/*.conf -+ -+/etc/sysctl.d/99-sysctl.conf: net.ipv4.conf.all.rp_filter = 1 -+ -+If "net.ipv4.conf.all.rp_filter" is not set to "1", is missing or commented out, this is a finding. -+ -+If the configuration file does not begin with "99-", this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040290RHEL 8 must be configured to prevent unrestricted mail relaying.<VulnDiscussion>If unrestricted mail relaying is permitted, unauthorized senders could use this host as a mail relay for the purpose of sending spam or other unauthorized activity.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366If "postfix" is installed, modify the "/etc/postfix/main.cf" file to restrict client connections to the local network with the following command: - - $ sudo postconf -e 'smtpd_client_restrictions = permit_mynetworks,reject'Verify the system is configured to prevent unrestricted mail relaying. - -@@ -6237,7 +6625,7 @@ $ sudo egrep -i '(!rootpw|!targetpw|!runaspw)' /etc/sudoers /etc/sudoers.d/* | g - If no results are returned, this is a finding - If "Defaults !targetpw" is not defined, this is a finding. - If "Defaults !rootpw" is not defined, this is a finding. --If "Defaults !runaspw" is not defined, this is a finding.SRG-OS-000373-GPOS-00156<GroupDescription></GroupDescription>RHEL-08-010384RHEL 8 must require re-authentication when using the "sudo" command.<VulnDiscussion>Without re-authentication, users may access resources or perform tasks for which they do not have authorization. -+If "Defaults !runaspw" is not defined, this is a finding.SRG-OS-000373-GPOS-00156<GroupDescription></GroupDescription>RHEL-08-010384RHEL 8 must require re-authentication when using the "sudo" command.<VulnDiscussion>Without re-authentication, 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 organization requires the user to re-authenticate when using the "sudo" command. - -@@ -6247,10 +6635,10 @@ $ sudo visudo - - Add or modify the following line: - Defaults timestamp_timeout=[value] --Note: The "[value]" must be a number that is greater than or equal to "0".Verify the operating system requires re-authentication when using the "sudo" command to elevate privileges. -+Note: The "[value]" must be a number that is greater than or equal to "0".Verify the operating system requires re-authentication when using the "sudo" command to elevate privileges. - - $ sudo grep -i 'timestamp_timeout' /etc/sudoers /etc/sudoers.d/* --/etc/sudoers:Defaults timestamp_timout=0 -+/etc/sudoers:Defaults timestamp_timeout=0 - - If "timestamp_timeout" is set to a negative number, is commented out, or no results are returned, this is a finding.SRG-OS-000023-GPOS-00006<GroupDescription></GroupDescription>RHEL-08-010049RHEL 8 must display a banner before granting local or remote access to the system via a graphical user logon.<VulnDiscussion>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. - -@@ -6294,7 +6682,9 @@ $ sudo grep rounds /etc/pam.d/system-auth - - password sufficient pam_unix.so sha512 rounds=5000 - --If "rounds" has a value below "5000", or is commented out, this is a finding.SRG-OS-000080-GPOS-00048<GroupDescription></GroupDescription>RHEL-08-010141RHEL 8 operating systems booted with United Extensible Firmware Interface (UEFI) must require a unique superusers name upon booting into single-user mode and maintenance.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000213Configure the system to have a unique name for the grub superusers account. -+If "rounds" has a value below "5000", or is commented out, this is a finding.SRG-OS-000080-GPOS-00048<GroupDescription></GroupDescription>RHEL-08-010141RHEL 8 operating systems booted with United Extensible Firmware Interface (UEFI) must require a unique superusers name upon booting into single-user mode and maintenance.<VulnDiscussion>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. -+ -+The GRUB 2 superuser account is an account of last resort. Establishing a unique username for this account hardens the boot loader against brute force attacks. Due to the nature of the superuser account database being distinct from the OS account database, this allows the use of a username that is not among those within the OS account database. Examples of non-unique superusers names are root, superuser, unlock, etc.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000213Configure the system to have a unique name for the grub superusers account. - - Edit the /etc/grub.d/01_users file and add or modify the following lines: - -@@ -6304,7 +6694,7 @@ password_pbkdf2 [someuniquestringhere] ${GRUB2_PASSWORD} - - Generate a new grub.cfg file with the following command: - --$ sudo grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfgFor systems that use BIOS, this is Not Applicable. -+$ sudo grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfgFor systems that use BIOS, this is Not Applicable. - - Verify that a unique name is set as the "superusers" account: - -@@ -6312,7 +6702,9 @@ $ sudo grep -iw "superusers" /boot/efi/EFI/redhat/grub.cfg - set superusers="[someuniquestringhere]" - export superusers - --If "superusers" is not set to a unique name or is missing a name, this is a finding.SRG-OS-000080-GPOS-00048<GroupDescription></GroupDescription>RHEL-08-010149RHEL 8 operating systems booted with a BIOS must require a unique superusers name upon booting into single-user and maintenance modes.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000213Configure the system to have a unique name for the grub superusers account. -+If "superusers" is identical to any OS account name or is missing a name, this is a finding.SRG-OS-000080-GPOS-00048<GroupDescription></GroupDescription>RHEL-08-010149RHEL 8 operating systems booted with a BIOS must require a unique superusers name upon booting into single-user and maintenance modes.<VulnDiscussion>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. -+ -+The GRUB 2 superuser account is an account of last resort. Establishing a unique username for this account hardens the boot loader against brute force attacks. Due to the nature of the superuser account database being distinct from the OS account database, this allows the use of a username that is not among those within the OS account database. Examples of non-unique superusers names are root, superuser, unlock, etc.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000213Configure the system to have a unique name for the grub superusers account. - - Edit the /etc/grub.d/01_users file and add or modify the following lines: - -@@ -6322,7 +6714,7 @@ password_pbkdf2 [someuniquestringhere] ${GRUB2_PASSWORD} - - Generate a new grub.cfg file with the following command: - --$ sudo grub2-mkconfig -o /boot/grub2/grub.cfgFor systems that use UEFI, this is Not Applicable. -+$ sudo grub2-mkconfig -o /boot/grub2/grub.cfgFor systems that use UEFI, this is Not Applicable. - - Verify that a unique name is set as the "superusers" account: - -@@ -6330,7 +6722,7 @@ $ sudo grep -iw "superusers" /boot/grub2/grub.cfg - set superusers="[someuniquestringhere]" - export superusers - --If "superusers" is not set to a unique name or is missing a name, this is a finding.SRG-OS-000080-GPOS-00048<GroupDescription></GroupDescription>RHEL-08-010152RHEL 8 operating systems must require authentication upon booting into emergency mode.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000213Configure the system to require authentication upon booting into emergency mode by adding the following line to the "/usr/lib/systemd/system/emergency.service" file. -+If "superusers" is identical to any OS account name or is missing a name, this is a finding.SRG-OS-000080-GPOS-00048<GroupDescription></GroupDescription>RHEL-08-010152RHEL 8 operating systems must require authentication upon booting into emergency mode.<VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000213Configure the system to require authentication upon booting into emergency mode by adding the following line to the "/usr/lib/systemd/system/emergency.service" file. - - ExecStart=-/usr/lib/systemd/systemd-sulogin-shell emergencyCheck to see if the system requires authentication for emergency mode with the following command: - -@@ -6822,13 +7214,25 @@ $ sudo yum list installed openssh-server - - openssh-server.x86_64 8.0p1-5.el8 @anaconda - --If the "SSH server" package is not installed, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040209RHEL 8 must prevent IPv4 Internet Control Message Protocol (ICMP) redirect messages from being accepted.<VulnDiscussion>ICMP redirect messages are used by routers to inform hosts that a more direct route exists for a particular destination. These messages modify the host's route table and are unauthenticated. An illicit ICMP redirect message could result in a man-in-the-middle attack.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to prevent IPv4 ICMP redirect messages from being accepted with the following command: -+If the "SSH server" package is not installed, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040209RHEL 8 must prevent IPv4 Internet Control Message Protocol (ICMP) redirect messages from being accepted.<VulnDiscussion>ICMP redirect messages are used by routers to inform hosts that a more direct route exists for a particular destination. These messages modify the host's route table and are unauthenticated. An illicit ICMP redirect message could result in a man-in-the-middle attack. - --$ sudo sysctl -w net.ipv4.conf.default.accept_redirects=0 -+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 - --If "0" is not the system's default value then add or update the following line in the appropriate file under "/etc/sysctl.d": -+Based on the information above, if a configuration file that begins with "99-" is created in the "/etc/sysctl.d/" directory, it will take precedence over any other configuration file on the system.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to prevent IPv4 ICMP redirect messages from being accepted. - --net.ipv4.conf.default.accept_redirects=0Verify RHEL 8 will not accept IPv4 ICMP redirect messages. -+Add or edit the following line in a system configuration file, which begins with "99-", in the "/etc/sysctl.d/" directory: -+ -+net.ipv4.conf.default.accept_redirects = 0 -+ -+Load settings from all system configuration files with the following command: -+ -+$ sudo sysctl --systemVerify RHEL 8 will not accept IPv4 ICMP redirect messages. - - Note: If IPv4 is disabled on the system, this requirement is Not Applicable. - -@@ -6838,13 +7242,35 @@ $ sudo sysctl net.ipv4.conf.default.accept_redirects - - net.ipv4.conf.default.accept_redirects = 0 - --If the returned line does not have a value of "0", a line is not returned, or the line is commented out, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040239RHEL 8 must not forward IPv4 source-routed packets.<VulnDiscussion>Source-routed packets allow the source of the packet to suggest that routers forward the packet along a different path than configured on the router, which can be used to bypass network security measures. This requirement applies only to the forwarding of source-routed traffic, such as when forwarding is enabled and the system is functioning as a router.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to not forward IPv4 source-routed packets with the following command: -+If the returned line does not have a value of "0", a line is not returned, or the line is commented out, this is a finding. -+ -+Check that the configuration files are present to enable this network parameter. -+ -+$ sudo grep -r net.ipv4.conf.default.accept_redirects /etc/sysctl.d/*.conf -+ -+/etc/sysctl.d/99-sysctl.conf: net.ipv4.conf.default.accept_redirects = 0 -+ -+If "net.ipv4.conf.default.accept_redirects" is not set to "0", is missing or commented out, this is a finding. -+ -+If the configuration file does not begin with "99-", this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040239RHEL 8 must not forward IPv4 source-routed packets.<VulnDiscussion>Source-routed packets allow the source of the packet to suggest that routers forward the packet along a different path than configured on the router, which can be used to bypass network security measures. This requirement applies only to the forwarding of source-routed traffic, such as when forwarding is enabled and the system is functioning as a router. -+ -+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 -+ -+Based on the information above, if a configuration file that begins with "99-" is created in the "/etc/sysctl.d/" directory, it will take precedence over any other configuration file on the system.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to not forward IPv4 source-routed packets. -+ -+Add or edit the following line in a system configuration file, which begins with "99-", in the "/etc/sysctl.d/" directory: - --$ sudo sysctl -w net.ipv4.conf.all.accept_source_route=0 -+net.ipv4.conf.all.accept_source_route=0 - --If "0" is not the system's all value then add or update the following line in the appropriate file under "/etc/sysctl.d": -+Load settings from all system configuration files with the following command: - --net.ipv4.conf.all.accept_source_route=0Verify RHEL 8 does not accept IPv4 source-routed packets. -+$ sudo sysctl --systemVerify RHEL 8 does not accept IPv4 source-routed packets. - - Note: If IPv4 is disabled on the system, this requirement is Not Applicable. - -@@ -6854,13 +7280,35 @@ $ sudo sysctl net.ipv4.conf.all.accept_source_route - - net.ipv4.conf.all.accept_source_route = 0 - --If the returned line does not have a value of "0", a line is not returned, or the line is commented out, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040249RHEL 8 must not forward IPv4 source-routed packets by default.<VulnDiscussion>Source-routed packets allow the source of the packet to suggest that routers forward the packet along a different path than configured on the router, which can be used to bypass network security measures. This requirement applies only to the forwarding of source-routed traffic, such as when forwarding is enabled and the system is functioning as a router.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to not forward IPv4 source-routed packets by default with the following command: -+If the returned line does not have a value of "0", a line is not returned, or the line is commented out, this is a finding. -+ -+Check that the configuration files are present to enable this network parameter. -+ -+$ sudo grep -r net.ipv4.conf.all.accept_source_route /etc/sysctl.d/*.conf -+ -+/etc/sysctl.d/99-sysctl.conf: net.ipv4.conf.all.accept_source_route = 0 -+ -+If "net.ipv4.conf.all.accept_source_route" is not set to "0", is missing or commented out, this is a finding. -+ -+If the configuration file does not begin with "99-", this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040249RHEL 8 must not forward IPv4 source-routed packets by default.<VulnDiscussion>Source-routed packets allow the source of the packet to suggest that routers forward the packet along a different path than configured on the router, which can be used to bypass network security measures. This requirement applies only to the forwarding of source-routed traffic, such as when forwarding is enabled and the system is functioning as a router. - --$ sudo sysctl -w net.ipv4.conf.default.accept_source_route=0 -+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 - --If "0" is not the system's default value then add or update the following line in the appropriate file under "/etc/sysctl.d": -+Based on the information above, if a configuration file that begins with "99-" is created in the "/etc/sysctl.d/" directory, it will take precedence over any other configuration file on the system.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to not forward IPv4 source-routed packets by default. - --net.ipv4.conf.default.accept_source_route=0Verify RHEL 8 does not accept IPv4 source-routed packets by default. -+Add or edit the following line in a system configuration file, which begins with "99-", in the "/etc/sysctl.d/" directory: -+ -+net.ipv4.conf.default.accept_source_route=0 -+ -+Load settings from all system configuration files with the following command: -+ -+$ sudo sysctl --systemVerify RHEL 8 does not accept IPv4 source-routed packets by default. - - Note: If IPv4 is disabled on the system, this requirement is Not Applicable. - -@@ -6870,13 +7318,35 @@ $ sudo sysctl net.ipv4.conf.default.accept_source_route - - net.ipv4.conf.default.accept_source_route = 0 - --If the returned line does not have a value of "0", a line is not returned, or the line is commented out, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040279RHEL 8 must ignore IPv4 Internet Control Message Protocol (ICMP) redirect messages.<VulnDiscussion>ICMP redirect messages are used by routers to inform hosts that a more direct route exists for a particular destination. These messages modify the host's route table and are unauthenticated. An illicit ICMP redirect message could result in a man-in-the-middle attack.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to ignore IPv4 ICMP redirect messages with the following command: -+If the returned line does not have a value of "0", a line is not returned, or the line is commented out, this is a finding. -+ -+Check that the configuration files are present to enable this network parameter. -+ -+$ sudo grep -r net.ipv4.conf.default.accept_source_route /etc/sysctl.d/*.conf - --$ sudo sysctl -w net.ipv4.conf.all.accept_redirects=0 -+/etc/sysctl.d/99-sysctl.conf: net.ipv4.conf.default.accept_source_route = 0 - --If "0" is not the system's default value then add or update the following line in the appropriate file under "/etc/sysctl.d": -+If "net.ipv4.conf.default.accept_source_route" is not set to "0", is missing or commented out, this is a finding. - --net.ipv4.conf.all.accept_redirects = 0Verify RHEL 8 ignores IPv4 ICMP redirect messages. -+If the configuration file does not begin with "99-", this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040279RHEL 8 must ignore IPv4 Internet Control Message Protocol (ICMP) redirect messages.<VulnDiscussion>ICMP redirect messages are used by routers to inform hosts that a more direct route exists for a particular destination. These messages modify the host's route table and are unauthenticated. An illicit ICMP redirect message could result in a man-in-the-middle attack. -+ -+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 -+ -+Based on the information above, if a configuration file that begins with "99-" is created in the "/etc/sysctl.d/" directory, it will take precedence over any other configuration file on the system.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to ignore IPv4 ICMP redirect messages. -+ -+Add or edit the following line in a system configuration file, which begins with "99-", in the "/etc/sysctl.d/" directory: -+ -+net.ipv4.conf.all.accept_redirects = 0 -+ -+Load settings from all system configuration files with the following command: -+ -+$ sudo sysctl --systemVerify RHEL 8 ignores IPv4 ICMP redirect messages. - - Note: If IPv4 is disabled on the system, this requirement is Not Applicable. - -@@ -6886,20 +7356,51 @@ $ sudo sysctl net.ipv4.conf.all.accept_redirects - - net.ipv4.conf.all.accept_redirects = 0 - --If the returned line does not have a value of "0", a line is not returned, or the line is commented out, this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040286RHEL 8 must enable hardening for the Berkeley Packet Filter Just-in-time compiler.<VulnDiscussion>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. --Enabling hardening for the Berkeley Packet Filter (BPF) Just-in-time (JIT) compiler aids in mitigating JIT spraying attacks. Setting the value to "2" enables JIT hardening for all users.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to enable hardening for the BPF JIT compiler by adding the following line to a file in the "/etc/sysctl.d" directory: -+If the returned line does not have a value of "0", a line is not returned, or the line is commented out, this is a finding. -+ -+Check that the configuration files are present to enable this network parameter. -+ -+$ sudo grep -r net.ipv4.conf.all.accept_redirects /etc/sysctl.d/*.conf -+ -+/etc/sysctl.d/99-sysctl.conf: net.ipv4.conf.all.accept_redirects = 0 -+ -+If "net.ipv4.conf.all.accept_redirects" is not set to "0", is missing or commented out, this is a finding. -+ -+If the configuration file does not begin with "99-", this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040286RHEL 8 must enable hardening for the Berkeley Packet Filter Just-in-time compiler.<VulnDiscussion>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. -+ -+Enabling hardening for the Berkeley Packet Filter (BPF) Just-in-time (JIT) compiler aids in mitigating JIT spraying attacks. Setting the value to "2" enables JIT hardening for all users. -+ -+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 -+ -+Based on the information above, if a configuration file that begins with "99-" is created in the "/etc/sysctl.d/" directory, it will take precedence over any other configuration file on the system.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to enable hardening for the BPF JIT compiler by adding the following line to a file, which begins with "99-", in the "/etc/sysctl.d" directory: - - net.core.bpf_jit_harden = 2 - - 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 --systemVerify RHEL 8 enables hardening for the BPF JIT with the following commands: -+$ sudo sysctl --systemVerify RHEL 8 enables hardening for the BPF JIT with the following commands: - - $ sudo sysctl net.core.bpf_jit_harden - - net.core.bpf_jit_harden = 2 - --If the returned line does not have a value of "2", or a line is not returned, this is a finding.SRG-OS-000191-GPOS-00080<GroupDescription></GroupDescription>RHEL-08-010001The RHEL 8 operating system must implement the Endpoint Security for Linux Threat Prevention tool.<VulnDiscussion>Adding endpoint security tools can provide the capability to automatically take actions in response to malicious behavior, which can provide additional agility in reacting to network threats. These tools also often include a reporting capability to provide network awareness of the system, which may not otherwise exist in an organization's systems management regime.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-001233Install and enable the latest McAfee ENSLTP package.Per OPORD 16-0080, the preferred endpoint security tool is McAfee Endpoint Security for Linux (ENSL) in conjunction with SELinux. -+If the returned line does not have a value of "2", or a line is not returned, this is a finding. -+ -+Check that the configuration files are present to enable this network parameter. -+ -+$ sudo grep -r net.core.bpf_jit_harden /etc/sysctl.d/*.conf -+ -+/etc/sysctl.d/99-sysctl.conf: net.core.bpf_jit_harden = 2 -+ -+If "net.core.bpf_jit_harden" is not set to "2", is missing or commented out, this is a finding. -+ -+If the configuration file does not begin with "99-", this is a finding.SRG-OS-000191-GPOS-00080<GroupDescription></GroupDescription>RHEL-08-010001The RHEL 8 operating system must implement the Endpoint Security for Linux Threat Prevention tool.<VulnDiscussion>Adding endpoint security tools can provide the capability to automatically take actions in response to malicious behavior, which can provide additional agility in reacting to network threats. These tools also often include a reporting capability to provide network awareness of the system, which may not otherwise exist in an organization's systems management regime.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-001233Install and enable the latest McAfee ENSLTP package.Per OPORD 16-0080, the preferred endpoint security tool is McAfee Endpoint Security for Linux (ENSL) in conjunction with SELinux. - - Procedure: - Check that the following package has been installed: -@@ -6912,4 +7413,102 @@ Verify that the daemon is running: - - $ sudo ps -ef | grep -i mfetpd - --If the daemon is not running, this is a finding. -\ No newline at end of file -+If the daemon is not running, this is a finding.
      SRG-OS-000021-GPOS-00005<GroupDescription></GroupDescription>RHEL-08-020027RHEL 8 systems, versions 8.2 and above, must configure SELinux context type to allow the use of a non-default faillock tally directory.<VulnDiscussion>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. -+ -+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 re-enabled after system reboot. If that is undesirable, a different tally directory must be set with the "dir" option. -+ -+SELinux, enforcing a targeted policy, will require any non-default tally directory's security context type to match the default directory's security context type. Without updating the security context type, the pam_faillock module will not write failed login attempts to the non-default tally directory.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000044CCI-002238Configure RHEL 8 to allow the use of a non-default faillock tally directory while SELinux enforces a targeted policy. -+ -+Create a non-default faillock tally directory (if it does not already exist) with the following example: -+ -+$ sudo mkdir /var/log/faillock -+ -+Update the /etc/selinux/targeted/contexts/files/file_contexts.local with "faillog_t" context type for the non-default faillock tally directory with the following command: -+ -+$ sudo semanage fcontext -a -t faillog_t "/var/log/faillock(/.*)?" -+ -+Next, update the context type of the non-default faillock directory/subdirectories and files with the following command: -+ -+$ sudo restorecon -R -v /var/log/faillockIf the system does not have SELinux enabled and enforcing a targeted policy, or if the pam_faillock module is not configured for use, this requirement is not applicable. -+ -+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 location of the non-default tally directory for the pam_faillock module with the following command: -+ -+$ sudo grep -w dir /etc/security/faillock.conf -+ -+dir = /var/log/faillock -+ -+Check the security context type of the non-default tally directory with the following command: -+ -+$ sudo ls -Zd /var/log/faillock -+ -+unconfined_u:object_r:faillog_t:s0 /var/log/faillock -+ -+If the security context type of the non-default tally directory is not "faillog_t", this is a finding.SRG-OS-000021-GPOS-00005<GroupDescription></GroupDescription>RHEL-08-020028RHEL 8 systems below version 8.2 must configure SELinux context type to allow the use of a non-default faillock tally directory.<VulnDiscussion>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. -+ -+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. -+ -+SELinux, enforcing a targeted policy, will require any non-default tally directory's security context type to match the default directory's security context type. Without updating the security context type, the pam_faillock module will not write failed login attempts to the non-default tally directory.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000044CCI-002238Configure RHEL 8 to allow the use of a non-default faillock tally directory while SELinux enforces a targeted policy. -+ -+Update the /etc/selinux/targeted/contexts/files/file_contexts.local with "faillog_t" context type for the non-default faillock tally directory with the following command: -+ -+$ sudo semanage fcontext -a -t faillog_t "/var/log/faillock(/.*)?" -+ -+Next, update the context type of the non-default faillock directory/subdirectories and files with the following command: -+ -+$ sudo restorecon -R -v /var/log/faillockIf the system does not have SELinux enabled and enforcing a targeted policy, or if the pam_faillock module is not configured for use, this requirement is not applicable. -+ -+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. -+ -+Verify the location of the non-default tally directory for the pam_faillock module with the following command: -+ -+$ sudo grep -w dir /etc/pam.d/password-auth -+ -+auth required pam_faillock.so preauth dir=/var/log/faillock -+auth required pam_faillock.so authfail dir=/var/log/faillock -+ -+Check the security context type of the non-default tally directory with the following command: -+ -+$ sudo ls -Zd /var/log/faillock -+ -+unconfined_u:object_r:faillog_t:s0 /var/log/faillock -+ -+If the security context type of the non-default tally directory is not "faillog_t", this is a finding.SRG-OS-000480-GPOS-00227<GroupDescription></GroupDescription>RHEL-08-040259RHEL 8 must not enable IPv4 packet forwarding unless the system is a router.<VulnDiscussion>Routing protocol daemons are typically used on routers to exchange network topology information with other routers. If this software is used when not required, system network information may be unnecessarily transmitted across the network. -+ -+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 -+ -+Based on the information above, if a configuration file that begins with "99-" is created in the "/etc/sysctl.d/" directory, it will take precedence over any other configuration file on the system.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls>DPMS Target Red Hat Enterprise Linux 8DISADPMS TargetRed Hat Enterprise Linux 82921CCI-000366Configure RHEL 8 to not allow IPv4 packet forwarding, unless the system is a router. -+ -+Add or edit the following line in a system configuration file, which begins with "99-", in the "/etc/sysctl.d/" directory: -+ -+net.ipv4.conf.all.forwarding=0 -+ -+Load settings from all system configuration files with the following command: -+ -+$ sudo sysctl --systemVerify RHEL 8 is not performing IPv4 packet forwarding, unless the system is a router. -+ -+Note: If IPv4 is disabled on the system, this requirement is Not Applicable. -+ -+Check that IPv4 forwarding is disabled using the following command: -+ -+$ sudo sysctl net.ipv4.ip_forward -+ -+net.ipv4.ip_forward = 0 -+If the IPv4 forwarding value is not "0" and is not documented with the Information System Security Officer (ISSO) as an operational requirement, this is a finding. -+ -+Check that the configuration files are present to enable this network parameter. -+ -+$ sudo grep -r net.ipv4.conf.all.forwarding /etc/sysctl.d/*.conf -+ -+/etc/sysctl.d/99-sysctl.conf: net.ipv4.conf.all.forwarding = 0 -+ -+If "net.ipv4.conf.all.forwarding" is not set to "0", is missing or commented out, this is a finding. -+ -+If the configuration file does not begin with "99-", this is a finding. -\ No newline at end of file -diff --git a/tests/data/profile_stability/rhel8/stig.profile b/tests/data/profile_stability/rhel8/stig.profile -index ca0097b..e4f9dd8 100644 ---- a/tests/data/profile_stability/rhel8/stig.profile -+++ b/tests/data/profile_stability/rhel8/stig.profile -@@ -58,7 +58,9 @@ selections: - - accounts_passwords_pam_faillock_interval - - accounts_passwords_pam_faillock_unlock_time - - accounts_umask_etc_bashrc -+- accounts_umask_etc_csh_cshrc - - accounts_umask_etc_login_defs -+- accounts_umask_etc_profile - - accounts_umask_interactive_users - - accounts_user_dot_no_world_writable_programs - - accounts_user_home_paths_only -diff --git a/tests/data/profile_stability/rhel8/stig_gui.profile b/tests/data/profile_stability/rhel8/stig_gui.profile -index 3533208..d37d2ec 100644 ---- a/tests/data/profile_stability/rhel8/stig_gui.profile -+++ b/tests/data/profile_stability/rhel8/stig_gui.profile -@@ -69,7 +69,9 @@ selections: - - accounts_passwords_pam_faillock_interval - - accounts_passwords_pam_faillock_unlock_time - - accounts_umask_etc_bashrc -+- accounts_umask_etc_csh_cshrc - - accounts_umask_etc_login_defs -+- accounts_umask_etc_profile - - accounts_umask_interactive_users - - accounts_user_dot_no_world_writable_programs - - accounts_user_home_paths_only diff --git a/SOURCES/scap-security-guide-0.1.60-rhel9_stig_grub-PR_7931.patch b/SOURCES/scap-security-guide-0.1.60-rhel9_stig_grub-PR_7931.patch deleted file mode 100644 index a2ebc9a..0000000 --- a/SOURCES/scap-security-guide-0.1.60-rhel9_stig_grub-PR_7931.patch +++ /dev/null @@ -1,324 +0,0 @@ -commit 2e1eeff365be8fde302620fae6691ccc523f6f9e -Author: Gabriel Becker -Date: Thu Feb 24 18:19:45 2022 +0100 - - Manual edited patch scap-security-guide-0.1.60-rhel9_stig_grub-PR_7931.patch. - -diff --git a/linux_os/guide/system/bootloader-grub2/grub2_kernel_trust_cpu_rng/oval/shared.xml b/linux_os/guide/system/bootloader-grub2/grub2_kernel_trust_cpu_rng/oval/shared.xml -index c95f1d4..9035eee 100644 ---- a/linux_os/guide/system/bootloader-grub2/grub2_kernel_trust_cpu_rng/oval/shared.xml -+++ b/linux_os/guide/system/bootloader-grub2/grub2_kernel_trust_cpu_rng/oval/shared.xml -@@ -29,11 +29,34 @@ - 1 - - -- -- -- -+ {{% if product in ['rhel9'] %}} -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ /boot/loader/entries/ -+ ^.*\.conf$ -+ ^options (.*)$ -+ 1 -+ -+ {{% else %}} -+ -+ -+ -+ - - - -@@ -50,6 +73,7 @@ - ^kernelopts=(.*)$ - 1 - -+ {{% endif %}} - - -@@ -61,5 +85,4 @@ - ^(?:.*\s)?random\.trust_cpu=off(?:\s.*)?$ - - -- -
      -diff --git a/linux_os/guide/system/network/network-ipv6/disabling_ipv6/grub2_ipv6_disable_argument/rule.yml b/linux_os/guide/system/network/network-ipv6/disabling_ipv6/grub2_ipv6_disable_argument/rule.yml -index dae640f..b8ff66c 100644 ---- a/linux_os/guide/system/network/network-ipv6/disabling_ipv6/grub2_ipv6_disable_argument/rule.yml -+++ b/linux_os/guide/system/network/network-ipv6/disabling_ipv6/grub2_ipv6_disable_argument/rule.yml -@@ -1,6 +1,6 @@ - documentation_complete: true - --prodtype: fedora,rhcos4,ol7,ol8,rhel7,rhel8,rhv4,sle15 -+prodtype: fedora,ol7,ol8,rhcos4,rhel7,rhel8,rhel9,rhv4,sle15 - - title: 'Ensure IPv6 is disabled through kernel boot parameter' - -diff --git a/linux_os/guide/system/network/network-ipv6/disabling_ipv6/grub2_ipv6_disable_argument/tests/arg_not_there_rhel9.fail.sh b/linux_os/guide/system/network/network-ipv6/disabling_ipv6/grub2_ipv6_disable_argument/tests/arg_not_there_rhel9.fail.sh -new file mode 100644 -index 0000000..fc649d7 ---- /dev/null -+++ b/linux_os/guide/system/network/network-ipv6/disabling_ipv6/grub2_ipv6_disable_argument/tests/arg_not_there_rhel9.fail.sh -@@ -0,0 +1,10 @@ -+#!/bin/bash -+# platform = Red Hat Enterprise Linux 9 -+ -+# Removes ipv6.disable argument from kernel command line in //boot/loader/entries/*.conf -+ -+for file in /boot/loader/entries/*.conf ; do -+ if grep -q '^.*ipv6\.disable=.*' "$file" ; then -+ sed -i 's/\(^.*\)ipv6\.disable=[^[:space:]]*\(.*\)/\1 \2/' "$file" -+ fi -+done -diff --git a/linux_os/guide/system/network/network-ipv6/disabling_ipv6/grub2_ipv6_disable_argument/tests/wrong_value_rhel9.fail.sh b/linux_os/guide/system/network/network-ipv6/disabling_ipv6/grub2_ipv6_disable_argument/tests/wrong_value_rhel9.fail.sh -new file mode 100644 -index 0000000..3c1cde1 ---- /dev/null -+++ b/linux_os/guide/system/network/network-ipv6/disabling_ipv6/grub2_ipv6_disable_argument/tests/wrong_value_rhel9.fail.sh -@@ -0,0 +1,14 @@ -+#!/bin/bash -+# platform = Red Hat Enterprise Linux 9 -+ -+# Break the ipv6.disable argument in kernel command line in /boot/loader/entries/*.conf -+ -+for file in /boot/loader/entries/*.conf ; do -+ if grep -q '^.*ipv6\.disable=.*' "$file" ; then -+ # modify the GRUB command-line if an ipv6.disable= arg already exists -+ sed -i 's/\(^.*\)ipv6\.disable=[^[:space:]]*\(.*\)/\1 ipv6\.disable=0 \2/' "$file" -+ else -+ # no ipv6.disable=arg is present, append it -+ sed -i 's/\(^.*\(vmlinuz\|kernelopts|options\).*\)/\1 ipv6\.disable=0/' "$file" -+ fi -+done -diff --git a/shared/macros-bash.jinja b/shared/macros-bash.jinja -index b5f55ae..3eebbd9 100644 ---- a/shared/macros-bash.jinja -+++ b/shared/macros-bash.jinja -@@ -684,3 +684,43 @@ dpkg-query --show --showformat='${db:Status-Status}\n' "{{{ pkgname }}}" 2>/dev/ - rpm --quiet -q "{{{ pkgname }}}" - {{%- endif -%}} - {{%- endmacro -%}} -+ -+{{# -+ -+ Remediation for grub2 bootloader arguments -+#}} -+{{% macro grub2_bootloader_argument_remediation(ARG_NAME, ARG_NAME_VALUE) %}} -+{{% if product in ["rhel7", "ol7", "rhel9"] or 'ubuntu' in product %}} -+{{% if '/' in ARG_NAME %}} -+{{{ raise("ARG_NAME (" + ARG_NAME + ") uses sed path separator (/) in " + rule_id) }}} -+{{% elif '/' in ARG_NAME_VALUE %}} -+{{{ raise("ARG_NAME_VALUE (" + ARG_NAME_VALUE + ") uses sed path separator (/) in " + rule_id) }}} -+{{% endif %}} -+# Correct the form of default kernel command line in GRUB -+if grep -q '^GRUB_CMDLINE_LINUX=.*{{{ ARG_NAME }}}=.*"' '/etc/default/grub' ; then -+ # modify the GRUB command-line if an {{{ ARG_NAME }}}= arg already exists -+ sed -i 's/\(^GRUB_CMDLINE_LINUX=".*\){{{ ARG_NAME }}}=[^[:space:]]*\(.*"\)/\1 {{{ ARG_NAME_VALUE }}} \2/' '/etc/default/grub' -+else -+ # no {{{ ARG_NAME }}}=arg is present, append it -+ sed -i 's/\(^GRUB_CMDLINE_LINUX=".*\)"/\1 {{{ ARG_NAME_VALUE }}}"/' '/etc/default/grub' -+fi -+ -+{{% if 'ubuntu' in product %}} -+update-grub -+{{% else %}} -+# Correct the form of kernel command line for each installed kernel in the bootloader -+grubby --update-kernel=ALL --args="{{{ ARG_NAME_VALUE }}}" -+{{% endif %}} -+{{% else %}} -+# Correct grub2 kernelopts value using grub2-editenv -+existing_kernelopts="$(grub2-editenv - list | grep kernelopts)" -+if ! printf '%s' "$existing_kernelopts" | grep -qE '^kernelopts=(.*\s)?{{{ ARG_NAME_VALUE }}}(\s.*)?$'; then -+ if test -n "$existing_kernelopts"; then -+ grub2-editenv - set "$existing_kernelopts {{{ ARG_NAME_VALUE }}}" -+ else -+ grub2-editenv - set "kernelopts={{{ ARG_NAME_VALUE }}}" -+ fi -+fi -+{{% endif %}} -+ -+{{% endmacro %}} -diff --git a/shared/templates/grub2_bootloader_argument/bash.template b/shared/templates/grub2_bootloader_argument/bash.template -index cecd1f9..fd75db4 100644 ---- a/shared/templates/grub2_bootloader_argument/bash.template -+++ b/shared/templates/grub2_bootloader_argument/bash.template -@@ -1,6 +1,6 @@ - # platform = multi_platform_rhel,multi_platform_fedora,multi_platform_ol,multi_platform_rhv,multi_platform_ubuntu - --{{% if product in ["rhel7", "ol7"] or 'ubuntu' in product %}} -+{{% if product in ["rhel7", "ol7", "rhel9"] or 'ubuntu' in product %}} - {{% if '/' in ARG_NAME %}} - {{{ raise("ARG_NAME (" + ARG_NAME + ") uses sed path separator (/) in " + rule_id) }}} - {{% elif '/' in ARG_NAME_VALUE %}} -diff --git a/shared/templates/grub2_bootloader_argument/oval.template b/shared/templates/grub2_bootloader_argument/oval.template -index e8da1fe..3ea8acb 100644 ---- a/shared/templates/grub2_bootloader_argument/oval.template -+++ b/shared/templates/grub2_bootloader_argument/oval.template -@@ -2,9 +2,14 @@ - - {{{ oval_metadata("Ensure " + ARG_NAME_VALUE + " is configured in the kernel line in /etc/default/grub.") }}} - -- {{% if product in ["rhel7", "ol7"] or 'ubuntu' in product %}} -- -+ {{% if product in ["rhel7", "ol7", "rhel9"] or 'ubuntu' in product %}} -+ {{% if product in ['rhel9'] %}} -+ -+ {{% else %}} -+ -+ {{% endif %}} - - -@@ -22,7 +27,7 @@ - - - --{{% if product in ["rhel7", "ol7"] or 'ubuntu' in product %}} -+{{% if product in ["rhel7", "ol7", "rhel9"] or 'ubuntu' in product %}} - -@@ -50,6 +55,21 @@ - 1 - - -+ {{% if product in ["rhel9"] %}} -+ -+ -+ -+ -+ -+ -+ /boot/loader/entries/ -+ ^.*\.conf$ -+ ^options (.*)$ -+ 1 -+ -+ {{% else %}} - -@@ -68,6 +88,8 @@ - 1 - - -+ {{% endif %}} -+ - {{% else %}} - - -Date: Thu Feb 24 18:15:07 2022 +0100 - - Manual edited patch scap-security-guide-0.1.60-sysctl_d_directories-PR_7999.patch. - -diff --git a/linux_os/guide/system/permissions/restrictions/enable_execshield_settings/sysctl_kernel_randomize_va_space/tests/wrong_value_d_directory.fail.sh b/linux_os/guide/system/permissions/restrictions/enable_execshield_settings/sysctl_kernel_randomize_va_space/tests/wrong_value_d_directory.fail.sh -new file mode 100644 -index 0000000..48a2665 ---- /dev/null -+++ b/linux_os/guide/system/permissions/restrictions/enable_execshield_settings/sysctl_kernel_randomize_va_space/tests/wrong_value_d_directory.fail.sh -@@ -0,0 +1,23 @@ -+#!/bin/bash -+ -+. $SHARED/sysctl.sh -+ -+setting_name="kernel.randomize_va_space" -+setting_value="2" -+# sysctl -w "$setting_name=$setting_value" -+if grep -q "^$setting_name" /usr/lib/sysctl.d/50-sysctl.conf; then -+ sed -i "s/^$setting_name.*/$setting_name = $setting_value/" /usr/lib/sysctl.d/50-sysctl.conf -+else -+ echo "$setting_name = $setting_value" >> /usr/lib/sysctl.d/50-sysctl.conf -+fi -+ -+setting_name="kernel.randomize_va_space" -+setting_value="0" -+# sysctl -w "$setting_name=$setting_value" -+if grep -q "^$setting_name" /etc/sysctl.d/99-sysctl.conf; then -+ sed -i "s/^$setting_name.*/$setting_name = $setting_value/" /etc/sysctl.d/99-sysctl.conf -+else -+ echo "$setting_name = $setting_value" >> /etc/sysctl.d/99-sysctl.conf -+fi -+ -+sysctl --system -diff --git a/shared/templates/sysctl/ansible.template b/shared/templates/sysctl/ansible.template -index e4ccd84..3837b31 100644 ---- a/shared/templates/sysctl/ansible.template -+++ b/shared/templates/sysctl/ansible.template -@@ -3,6 +3,21 @@ - # strategy = disable - # complexity = low - # disruption = medium -+ -+- name: List /etc/sysctl.d/*.conf files -+ find: -+ paths: "/etc/sysctl.d/" -+ contains: '^[\s]*{{{ SYSCTLVAR }}}.*$' -+ patterns: "*.conf" -+ register: find_sysctl_d -+ -+- name: Comment out any occurrences of {{{ SYSCTLVAR }}} from /etc/sysctl.d/*.conf files -+ replace: -+ path: "{{ item }}" -+ regexp: '^[\s]*{{{ SYSCTLVAR }}}' -+ replace: '#{{{ SYSCTLVAR }}}' -+ loop: "{{ find_sysctl_d.files }}" -+ - {{%- if SYSCTLVAL == "" %}} - - (xccdf-var sysctl_{{{ SYSCTLID }}}_value) - -diff --git a/shared/templates/sysctl/bash.template b/shared/templates/sysctl/bash.template -index a762794..5ec56fd 100644 ---- a/shared/templates/sysctl/bash.template -+++ b/shared/templates/sysctl/bash.template -@@ -4,6 +4,18 @@ - # complexity = low - # disruption = medium - . /usr/share/scap-security-guide/remediation_functions -+ -+# Comment out any occurrences of {{{ SYSCTLVAR }}} from /etc/sysctl.d/*.conf files -+for f in /etc/sysctl.d/*.conf ; do -+ matching_list=$(grep -P '^(?!#).*[\s]+{{{ SYSCTLVAR }}}.*$' $f | uniq ) -+ if ! test -z "$matching_list"; then -+ while IFS= read -r entry; do -+ # comment out "{{{ SYSCTLVAR }}}" matches to preserve user data -+ sed -i "s/^${entry}$/# &/g" $f -+ done <<< "$matching_list" -+ fi -+done -+ - {{%- if SYSCTLVAL == "" %}} - {{{ bash_instantiate_variables("sysctl_" + SYSCTLID + "_value") }}} - diff --git a/SOURCES/scap-security-guide-0.1.61-RC_244-PR_8133.patch b/SOURCES/scap-security-guide-0.1.61-RC_244-PR_8133.patch new file mode 100644 index 0000000..8213f9d --- /dev/null +++ b/SOURCES/scap-security-guide-0.1.61-RC_244-PR_8133.patch @@ -0,0 +1,24 @@ +diff --git a/linux_os/guide/system/auditing/grub2_audit_backlog_limit_argument/rule.yml b/linux_os/guide/system/auditing/grub2_audit_backlog_limit_argument/rule.yml +index 9f036f83015..f94ddab2fe1 100644 +--- a/linux_os/guide/system/auditing/grub2_audit_backlog_limit_argument/rule.yml ++++ b/linux_os/guide/system/auditing/grub2_audit_backlog_limit_argument/rule.yml +@@ -32,6 +32,7 @@ references: + cis@ubuntu2004: 4.1.1.4 + disa: CCI-001849 + nist: CM-6(a) ++ ospp: FAU_STG.1,FAU_STG.3 + srg: SRG-OS-000254-GPOS-00095,SRG-OS-000341-GPOS-00132 + stigid@ol8: OL08-00-030602 + stigid@rhel8: RHEL-08-030602 +diff --git a/linux_os/guide/system/bootloader-zipl/zipl_audit_backlog_limit_argument/rule.yml b/linux_os/guide/system/bootloader-zipl/zipl_audit_backlog_limit_argument/rule.yml +index 6d76e896ffc..7396b9167c6 100644 +--- a/linux_os/guide/system/bootloader-zipl/zipl_audit_backlog_limit_argument/rule.yml ++++ b/linux_os/guide/system/bootloader-zipl/zipl_audit_backlog_limit_argument/rule.yml +@@ -25,6 +25,7 @@ identifiers: + + references: + cis@ubuntu2004: 4.1.1.4 ++ ospp: FAU_STG.1,FAU_STG.3 + + ocil_clause: 'audit backlog limit is not configured' + diff --git a/SOURCES/scap-security-guide-0.1.61-RC_246_250-PR_8070.patch b/SOURCES/scap-security-guide-0.1.61-RC_246_250-PR_8070.patch new file mode 100644 index 0000000..3bf02a5 --- /dev/null +++ b/SOURCES/scap-security-guide-0.1.61-RC_246_250-PR_8070.patch @@ -0,0 +1,26 @@ +diff --git a/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_local_events/rule.yml b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_local_events/rule.yml +index 5841f378fe6..f4780b4ae6d 100644 +--- a/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_local_events/rule.yml ++++ b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_local_events/rule.yml +@@ -22,7 +22,7 @@ identifiers: + references: + disa: CCI-000366 + nist: CM-6 +- ospp: FAU_GEN.1.1.c ++ ospp: FAU_GEN.1 + srg: SRG-OS-000062-GPOS-00031,SRG-OS-000480-GPOS-00227 + stigid@ol8: OL08-00-030061 + stigid@rhel8: RHEL-08-030061 +diff --git a/linux_os/guide/system/auditing/policy_rules/audit_basic_configuration/rule.yml b/linux_os/guide/system/auditing/policy_rules/audit_basic_configuration/rule.yml +index ba60b9b2c98..19dc3320e85 100644 +--- a/linux_os/guide/system/auditing/policy_rules/audit_basic_configuration/rule.yml ++++ b/linux_os/guide/system/auditing/policy_rules/audit_basic_configuration/rule.yml +@@ -47,7 +47,7 @@ identifiers: + + references: + nist: AU-2(a) +- ospp: FAU_GEN.1.1.c ++ ospp: FAU_GEN.1 + srg: SRG-OS-000365-GPOS-00152,SRG-OS-000475-GPOS-00220 + + ocil_clause: 'the file does not exist or the content differs' diff --git a/SOURCES/scap-security-guide-0.1.61-RC_247-PR_8114.patch b/SOURCES/scap-security-guide-0.1.61-RC_247-PR_8114.patch new file mode 100644 index 0000000..a0e2247 --- /dev/null +++ b/SOURCES/scap-security-guide-0.1.61-RC_247-PR_8114.patch @@ -0,0 +1,13 @@ +diff --git a/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_write_logs/rule.yml b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_write_logs/rule.yml +index 6c39a05550c..f169cba9f6b 100644 +--- a/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_write_logs/rule.yml ++++ b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_write_logs/rule.yml +@@ -21,7 +21,7 @@ identifiers: + + references: + nist: CM-6 +- ospp: FAU_GEN.1.1.c ++ ospp: FAU_STG.1 + srg: SRG-OS-000480-GPOS-00227 + + ocil_clause: write_logs isn't set to yes diff --git a/SOURCES/scap-security-guide-0.1.61-RC_248_249-PR_8071.patch b/SOURCES/scap-security-guide-0.1.61-RC_248_249-PR_8071.patch new file mode 100644 index 0000000..c028dff --- /dev/null +++ b/SOURCES/scap-security-guide-0.1.61-RC_248_249-PR_8071.patch @@ -0,0 +1,26 @@ +diff --git a/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_log_format/rule.yml b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_log_format/rule.yml +index 48ed2f31795..b536a68cf2a 100644 +--- a/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_log_format/rule.yml ++++ b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_log_format/rule.yml +@@ -23,7 +23,7 @@ identifiers: + references: + disa: CCI-000366 + nist: CM-6,AU-3 +- ospp: FAU_GEN.1 ++ ospp: FAU_GEN.1.2 + srg: SRG-OS-000255-GPOS-00096,SRG-OS-000480-GPOS-00227 + stigid@ol8: OL08-00-030063 + stigid@rhel8: RHEL-08-030063 +diff --git a/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_name_format/rule.yml b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_name_format/rule.yml +index a31e975c1c9..8da90cd760f 100644 +--- a/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_name_format/rule.yml ++++ b/linux_os/guide/system/auditing/configure_auditd_data_retention/auditd_name_format/rule.yml +@@ -24,7 +24,7 @@ identifiers: + references: + disa: CCI-001851 + nist: CM-6,AU-3 +- ospp: FAU_GEN.1 ++ ospp: FAU_GEN.1.2 + srg: SRG-OS-000039-GPOS-00017,SRG-OS-000342-GPOS-00133,SRG-OS-000479-GPOS-00224 + stigid@ol7: OL07-00-030211 + stigid@ol8: OL08-00-030062 diff --git a/SOURCES/scap-security-guide-0.1.61-RC_251-PR_8072.patch b/SOURCES/scap-security-guide-0.1.61-RC_251-PR_8072.patch new file mode 100644 index 0000000..3ea3530 --- /dev/null +++ b/SOURCES/scap-security-guide-0.1.61-RC_251-PR_8072.patch @@ -0,0 +1,13 @@ +diff --git a/linux_os/guide/system/auditing/policy_rules/audit_immutable_login_uids/rule.yml b/linux_os/guide/system/auditing/policy_rules/audit_immutable_login_uids/rule.yml +index ac43b654188..70357c153be 100644 +--- a/linux_os/guide/system/auditing/policy_rules/audit_immutable_login_uids/rule.yml ++++ b/linux_os/guide/system/auditing/policy_rules/audit_immutable_login_uids/rule.yml +@@ -37,7 +37,7 @@ identifiers: + references: + disa: CCI-000162 + nist: AU-2(a) +- ospp: FAU_GEN.1.1.c ++ ospp: FAU_GEN.1.2 + srg: SRG-OS-000462-GPOS-00206,SRG-OS-000475-GPOS-00220,SRG-OS-000057-GPOS-00027,SRG-OS-000058-GPOS-00028,SRG-OS-000059-GPOS-00029 + stigid@ol8: OL08-00-030122 + stigid@rhel8: RHEL-08-030122 diff --git a/SOURCES/scap-security-guide-0.1.61-RC_253-PR_8111.patch b/SOURCES/scap-security-guide-0.1.61-RC_253-PR_8111.patch new file mode 100644 index 0000000..5695dc4 --- /dev/null +++ b/SOURCES/scap-security-guide-0.1.61-RC_253-PR_8111.patch @@ -0,0 +1,12 @@ +diff --git a/linux_os/guide/system/logging/package_rsyslog_installed/rule.yml b/linux_os/guide/system/logging/package_rsyslog_installed/rule.yml +index 5af94a56910..7968d90331e 100644 +--- a/linux_os/guide/system/logging/package_rsyslog_installed/rule.yml ++++ b/linux_os/guide/system/logging/package_rsyslog_installed/rule.yml +@@ -31,6 +31,7 @@ references: + iso27001-2013: A.12.4.1,A.12.4.2,A.12.4.3,A.12.4.4,A.12.7.1 + nist: CM-6(a) + nist-csf: PR.PT-1 ++ ospp: FTP_ITC_EXT.1.1 + srg: SRG-OS-000479-GPOS-00224,SRG-OS-000051-GPOS-00024,SRG-OS-000480-GPOS-00227 + stigid@ol8: OL08-00-030670 + stigid@rhel8: RHEL-08-030670 diff --git a/SOURCES/scap-security-guide-0.1.61-RC_254-PR_8113.patch b/SOURCES/scap-security-guide-0.1.61-RC_254-PR_8113.patch new file mode 100644 index 0000000..4f77ff6 --- /dev/null +++ b/SOURCES/scap-security-guide-0.1.61-RC_254-PR_8113.patch @@ -0,0 +1,13 @@ +diff --git a/linux_os/guide/system/logging/rsyslog_sending_messages/rsyslog_remote_tls/rule.yml b/linux_os/guide/system/logging/rsyslog_sending_messages/rsyslog_remote_tls/rule.yml +index d5d49bf7426..83c6d9339de 100644 +--- a/linux_os/guide/system/logging/rsyslog_sending_messages/rsyslog_remote_tls/rule.yml ++++ b/linux_os/guide/system/logging/rsyslog_sending_messages/rsyslog_remote_tls/rule.yml +@@ -29,7 +29,7 @@ references: + anssi: BP28(R43) + ism: 0988,1405 + nist: AU-9(3),CM-6(a) +- ospp: FCS_TLSC_EXT.1,FTP_ITC_EXT.1.1 ++ ospp: FCS_TLSC_EXT.1,FTP_ITC_EXT.1.1,FIA_X509_EXT.1.1,FMT_SMF_EXT.1.1 + srg: SRG-OS-000480-GPOS-00227,SRG-OS-000120-GPOS-00061 + + ocil_clause: 'omfwd is not configured with gtls and AuthMode' diff --git a/SOURCES/scap-security-guide-0.1.61-RC_255-PR_8112.patch b/SOURCES/scap-security-guide-0.1.61-RC_255-PR_8112.patch new file mode 100644 index 0000000..d80355c --- /dev/null +++ b/SOURCES/scap-security-guide-0.1.61-RC_255-PR_8112.patch @@ -0,0 +1,13 @@ +diff --git a/linux_os/guide/system/logging/rsyslog_sending_messages/rsyslog_remote_tls_cacert/rule.yml b/linux_os/guide/system/logging/rsyslog_sending_messages/rsyslog_remote_tls_cacert/rule.yml +index 635207b571f..818f24718a0 100644 +--- a/linux_os/guide/system/logging/rsyslog_sending_messages/rsyslog_remote_tls_cacert/rule.yml ++++ b/linux_os/guide/system/logging/rsyslog_sending_messages/rsyslog_remote_tls_cacert/rule.yml +@@ -27,7 +27,7 @@ identifiers: + references: + anssi: BP28(R43) + ism: 0988,1405 +- ospp: FCS_TLSC_EXT.1,FTP_ITC_EXT.1.1 ++ ospp: FCS_TLSC_EXT.1 + srg: SRG-OS-000480-GPOS-00227 + + ocil_clause: 'CA certificate for rsyslog remote logging via TLS is not set' diff --git a/SOURCES/scap-security-guide-0.1.61-RC_277_245-PR_8069.patch b/SOURCES/scap-security-guide-0.1.61-RC_277_245-PR_8069.patch new file mode 100644 index 0000000..818f284 --- /dev/null +++ b/SOURCES/scap-security-guide-0.1.61-RC_277_245-PR_8069.patch @@ -0,0 +1,24 @@ +diff --git a/linux_os/guide/system/auditing/package_audit_installed/rule.yml b/linux_os/guide/system/auditing/package_audit_installed/rule.yml +index 8b36f0c2fa3..795089c8b83 100644 +--- a/linux_os/guide/system/auditing/package_audit_installed/rule.yml ++++ b/linux_os/guide/system/auditing/package_audit_installed/rule.yml +@@ -27,6 +27,7 @@ references: + nerc-cip: CIP-004-6 R3.3,CIP-007-3 R6.5 + nist: AC-7(a),AU-7(1),AU-7(2),AU-14,AU-12(2),AU-2(a),CM-6(a) + nist@sle12: AU-7(a),AU-7(b),AU-8(b),AU-12.1(iv),AU-12(3),AU-12(c),CM-5(1) ++ ospp: FAU_GEN.1 + srg: SRG-OS-000122-GPOS-00063,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-000359-GPOS-00146,SRG-OS-000365-GPOS-00152,SRG-OS-000474-GPOS-00219,SRG-OS-000475-GPOS-00220,SRG-OS-000480-GPOS-00227,SRG-OS-000062-GPOS-00031 + stigid@ol8: OL08-00-030180 + stigid@rhel8: RHEL-08-030180 +diff --git a/linux_os/guide/system/auditing/service_auditd_enabled/rule.yml b/linux_os/guide/system/auditing/service_auditd_enabled/rule.yml +index 320b69c3179..99edca3e270 100644 +--- a/linux_os/guide/system/auditing/service_auditd_enabled/rule.yml ++++ b/linux_os/guide/system/auditing/service_auditd_enabled/rule.yml +@@ -50,6 +50,7 @@ references: + nist: AC-2(g),AU-3,AU-10,AU-2(d),AU-12(c),AU-14(1),AC-6(9),CM-6(a),SI-4(23) + nist-csf: DE.AE-3,DE.AE-5,DE.CM-1,DE.CM-3,DE.CM-7,ID.SC-4,PR.AC-3,PR.PT-1,PR.PT-4,RS.AN-1,RS.AN-4 + nist@sle12: AU-3,AU-3(1),AU-3(1).1(ii),AU-3.1,AU-6(4),AU-6(4).1,AU-7(1),AU-7(1).1,AU-7(a),AU-14(1),AU-14(1).1,CM-6(b),CM-6.1(iv),MA-4(1)(a) ++ ospp: FAU_GEN.1 + pcidss: Req-10.1 + srg: 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-000365-GPOS-00152,SRG-OS-000392-GPOS-00172,SRG-OS-000480-GPOS-00227,SRG-OS-000062-GPOS-00031 + stigid@ol7: OL07-00-030000 diff --git a/SOURCES/scap-security-guide-0.1.61-add_RHEL_08_010331-PR_8055.patch b/SOURCES/scap-security-guide-0.1.61-add_RHEL_08_010331-PR_8055.patch index 3be366d..249a544 100644 --- a/SOURCES/scap-security-guide-0.1.61-add_RHEL_08_010331-PR_8055.patch +++ b/SOURCES/scap-security-guide-0.1.61-add_RHEL_08_010331-PR_8055.patch @@ -1,11 +1,5 @@ -commit 3c9a97de3a91b2a8fd85f13bb902e2529dd6fa67 -Author: Watson Sato -Date: Fri Feb 25 13:51:41 2022 +0100 - - Manual edited patch scap-security-guide-0.1.61-add_RHEL_08_010331-PR_8055.patch. - diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_permissions_library_dirs/ansible/shared.yml b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_permissions_library_dirs/ansible/shared.yml -index 8a28af0..02c69bd 100644 +index 8a28af022a7..02c69bddd27 100644 --- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_permissions_library_dirs/ansible/shared.yml +++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_permissions_library_dirs/ansible/shared.yml @@ -1,4 +1,4 @@ @@ -15,7 +9,7 @@ index 8a28af0..02c69bd 100644 # strategy = restrict # complexity = high diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_permissions_library_dirs/rule.yml b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_permissions_library_dirs/rule.yml -index a0f5aeb..853f8ac 100644 +index a7182849548..db89a5e47a1 100644 --- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_permissions_library_dirs/rule.yml +++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_permissions_library_dirs/rule.yml @@ -31,6 +31,8 @@ rationale: |- @@ -29,7 +23,7 @@ index a0f5aeb..853f8ac 100644 @@ -40,6 +42,8 @@ references: disa: CCI-001499 - nerc-cip: CIP-003-3 R6 + nerc-cip: CIP-003-8 R6 nist: CM-5,CM-5(6),CM-5(6).1 + srg: SRG-OS-000259-GPOS-00100 + stigid@rhel8: RHEL-08-010331 @@ -37,7 +31,7 @@ index a0f5aeb..853f8ac 100644 stigid@sle15: SLES-15-010352 stigid@ubuntu2004: UBTU-20-010427 diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_permissions_library_dirs/tests/all_dirs_ok.pass.sh b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_permissions_library_dirs/tests/all_dirs_ok.pass.sh -index af07846..6e957c3 100644 +index af078463b05..6e957c302ac 100644 --- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_permissions_library_dirs/tests/all_dirs_ok.pass.sh +++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_permissions_library_dirs/tests/all_dirs_ok.pass.sh @@ -1,4 +1,4 @@ @@ -47,7 +41,7 @@ index af07846..6e957c3 100644 for dirPath in $DIRS; do find "$dirPath" -perm /022 -type d -exec chmod go-w '{}' \; diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_permissions_library_dirs/tests/owner_only_writable_dir.pass.sh b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_permissions_library_dirs/tests/owner_only_writable_dir.pass.sh -index d58616b..55ff9ce 100644 +index d58616bcafb..55ff9cebd4f 100644 --- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_permissions_library_dirs/tests/owner_only_writable_dir.pass.sh +++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_permissions_library_dirs/tests/owner_only_writable_dir.pass.sh @@ -1,4 +1,4 @@ @@ -57,7 +51,7 @@ index d58616b..55ff9ce 100644 for dirPath in $DIRS; do chmod -R 755 "$dirPath" diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_permissions_library_dirs/tests/world_writable_dir_on_lib.fail.sh b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_permissions_library_dirs/tests/world_writable_dir_on_lib.fail.sh -index 98d18cd..c2b5b6b 100644 +index 98d18cde3ea..c2b5b6bf029 100644 --- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_permissions_library_dirs/tests/world_writable_dir_on_lib.fail.sh +++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_permissions_library_dirs/tests/world_writable_dir_on_lib.fail.sh @@ -1,4 +1,4 @@ @@ -67,7 +61,7 @@ index 98d18cd..c2b5b6b 100644 for dirPath in $DIRS; do mkdir -p "$dirPath/testme" && chmod 777 "$dirPath/testme" diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_permissions_library_dirs/tests/world_writable_dir_on_usr_lib.fail.sh b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_permissions_library_dirs/tests/world_writable_dir_on_usr_lib.fail.sh -index 6df6e2f..40e6c42 100644 +index 6df6e2f8f9b..40e6c42c829 100644 --- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_permissions_library_dirs/tests/world_writable_dir_on_usr_lib.fail.sh +++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_permissions_library_dirs/tests/world_writable_dir_on_usr_lib.fail.sh @@ -1,4 +1,4 @@ @@ -77,7 +71,7 @@ index 6df6e2f..40e6c42 100644 for dirPath in $DIRS; do mkdir -p "$dirPath/testme" && chmod 777 "$dirPath/testme" diff --git a/products/rhel8/profiles/cjis.profile b/products/rhel8/profiles/cjis.profile -index adeae4a..fab5f3f 100644 +index decba0087e8..920a55659fd 100644 --- a/products/rhel8/profiles/cjis.profile +++ b/products/rhel8/profiles/cjis.profile @@ -77,6 +77,7 @@ selections: @@ -89,10 +83,10 @@ index adeae4a..fab5f3f 100644 - set_password_hashing_algorithm_libuserconf - file_owner_etc_shadow diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index 5d03125..d51e53a 100644 +index 04f158116ee..5d98b1c894e 100644 --- a/products/rhel8/profiles/stig.profile +++ b/products/rhel8/profiles/stig.profile -@@ -224,6 +224,9 @@ selections: +@@ -228,6 +228,9 @@ selections: # RHEL-08-010330 - file_permissions_library_dirs @@ -103,10 +97,10 @@ index 5d03125..d51e53a 100644 - file_ownership_library_dirs diff --git a/products/rhel9/profiles/stig.profile b/products/rhel9/profiles/stig.profile -index 9acb63a..b751a74 100644 +index 8f79b22e3e4..2614504e9cd 100644 --- a/products/rhel9/profiles/stig.profile +++ b/products/rhel9/profiles/stig.profile -@@ -195,6 +195,9 @@ selections: +@@ -229,6 +229,9 @@ selections: # RHEL-08-010330 - file_permissions_library_dirs @@ -117,10 +111,10 @@ index 9acb63a..b751a74 100644 - file_ownership_library_dirs diff --git a/shared/references/cce-redhat-avail.txt b/shared/references/cce-redhat-avail.txt -index 1b83798..fef5fd8 100644 +index 3f6ec5e17c4..4a926bce5de 100644 --- a/shared/references/cce-redhat-avail.txt +++ b/shared/references/cce-redhat-avail.txt -@@ -2758,8 +2758,6 @@ CCE-88688-7 +@@ -2645,8 +2645,6 @@ CCE-88688-7 CCE-88689-5 CCE-88690-3 CCE-88691-1 @@ -130,10 +124,18 @@ index 1b83798..fef5fd8 100644 CCE-88695-2 CCE-88696-0 diff --git a/tests/data/profile_stability/rhel8/stig.profile b/tests/data/profile_stability/rhel8/stig.profile -index e4f9dd8..3b4b43a 100644 +index ed739e724f4..4df5c4a2e21 100644 --- a/tests/data/profile_stability/rhel8/stig.profile +++ b/tests/data/profile_stability/rhel8/stig.profile -@@ -175,6 +175,7 @@ selections: +@@ -25,6 +25,7 @@ extends: null + metadata: + version: V1R4 + SMEs: ++ - mab879 + - ggbecker + reference: https://public.cyber.mil/stigs/downloads/?_dl_facet_stigs=operating-systems%2Cunix-linux + selections: +@@ -180,6 +181,7 @@ selections: - dconf_gnome_screensaver_idle_delay - dconf_gnome_screensaver_lock_enabled - dir_group_ownership_library_dirs @@ -142,10 +144,18 @@ index e4f9dd8..3b4b43a 100644 - dir_perms_world_writable_sticky_bits - directory_group_ownership_var_log_audit diff --git a/tests/data/profile_stability/rhel8/stig_gui.profile b/tests/data/profile_stability/rhel8/stig_gui.profile -index d37d2ec..2e0e161 100644 +index 56c3fcb9f59..98746158aed 100644 --- a/tests/data/profile_stability/rhel8/stig_gui.profile +++ b/tests/data/profile_stability/rhel8/stig_gui.profile -@@ -186,6 +186,7 @@ selections: +@@ -36,6 +36,7 @@ extends: null + metadata: + version: V1R4 + SMEs: ++ - mab879 + - ggbecker + reference: https://public.cyber.mil/stigs/downloads/?_dl_facet_stigs=operating-systems%2Cunix-linux + selections: +@@ -191,6 +192,7 @@ selections: - dconf_gnome_screensaver_idle_delay - dconf_gnome_screensaver_lock_enabled - dir_group_ownership_library_dirs diff --git a/SOURCES/scap-security-guide-0.1.61-add_RHEL_08_010359-PR_8131.patch b/SOURCES/scap-security-guide-0.1.61-add_RHEL_08_010359-PR_8131.patch index e7e69fa..1175e29 100644 --- a/SOURCES/scap-security-guide-0.1.61-add_RHEL_08_010359-PR_8131.patch +++ b/SOURCES/scap-security-guide-0.1.61-add_RHEL_08_010359-PR_8131.patch @@ -1,14 +1,8 @@ -commit ae056f1639768deba6f51427419eb73f2e6e7626 -Author: Gabriel Becker -Date: Fri Feb 25 14:20:55 2022 +0100 - - Manual edited patch scap-security-guide-0.1.61-add_RHEL_08_010359-PR_8131.patch. - diff --git a/linux_os/guide/system/software/integrity/software-integrity/aide/package_aide_installed/rule.yml b/linux_os/guide/system/software/integrity/software-integrity/aide/package_aide_installed/rule.yml -index 51adb67..ed2734c 100644 +index 68b353965ec..ff106996f00 100644 --- a/linux_os/guide/system/software/integrity/software-integrity/aide/package_aide_installed/rule.yml +++ b/linux_os/guide/system/software/integrity/software-integrity/aide/package_aide_installed/rule.yml -@@ -27,7 +27,7 @@ references: +@@ -28,7 +28,7 @@ references: cis@ubuntu2004: 1.4.1 cjis: 5.10.1.3 cobit5: APO01.06,BAI01.06,BAI02.01,BAI03.05,BAI06.01,BAI10.01,BAI10.02,BAI10.03,BAI10.05,DSS01.03,DSS03.05,DSS04.07,DSS05.02,DSS05.03,DSS05.05,DSS05.07,DSS06.02,DSS06.06 @@ -17,22 +11,39 @@ index 51adb67..ed2734c 100644 isa-62443-2009: 4.3.4.3.2,4.3.4.3.3,4.3.4.4.4 isa-62443-2013: 'SR 3.1,SR 3.3,SR 3.4,SR 3.8,SR 4.1,SR 6.2,SR 7.6' ism: 1034,1288,1341,1417 -@@ -35,8 +35,8 @@ references: +@@ -36,9 +36,9 @@ references: nist: CM-6(a) nist-csf: DE.CM-1,DE.CM-7,PR.DS-1,PR.DS-6,PR.DS-8,PR.IP-1,PR.IP-3 pcidss: Req-11.5 - srg: SRG-OS-000363-GPOS-00150 -- stigid@rhel8: RHEL-08-010360 + srg: SRG-OS-000363-GPOS-00150,SRG-OS-000445-GPOS-00199 + stigid@ol8: OL08-00-010360 +- stigid@rhel8: RHEL-08-010360 + stigid@rhel8: RHEL-08-010359 stigid@sle12: SLES-12-010500 stigid@sle15: SLES-15-010420 stigid@ubuntu2004: UBTU-20-010450 diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index 705caa8..d6f0793 100644 +index ff23f83cfbf..cb72403e81a 100644 --- a/products/rhel8/profiles/stig.profile +++ b/products/rhel8/profiles/stig.profile -@@ -237,8 +237,10 @@ selections: +@@ -239,8 +239,10 @@ selections: + - root_permissions_syslibrary_files + - dir_group_ownership_library_dirs + +- # RHEL-08-010360 ++ # RHEL-08-010359 + - package_aide_installed ++ ++ # RHEL-08-010360 + - aide_scan_notification + + # RHEL-08-010370 +diff --git a/products/rhel9/profiles/stig.profile b/products/rhel9/profiles/stig.profile +index 31015d4b83c..93ecc404dc2 100644 +--- a/products/rhel9/profiles/stig.profile ++++ b/products/rhel9/profiles/stig.profile +@@ -240,8 +240,10 @@ selections: - root_permissions_syslibrary_files - dir_group_ownership_library_dirs diff --git a/SOURCES/scap-security-guide-0.1.61-add_RHEL_08_0103789_include_sudoers-PR_8196.patch b/SOURCES/scap-security-guide-0.1.61-add_RHEL_08_0103789_include_sudoers-PR_8196.patch index 95f7bda..fc41aba 100644 --- a/SOURCES/scap-security-guide-0.1.61-add_RHEL_08_0103789_include_sudoers-PR_8196.patch +++ b/SOURCES/scap-security-guide-0.1.61-add_RHEL_08_0103789_include_sudoers-PR_8196.patch @@ -1,76 +1,70 @@ -commit 804ab7d7e48d3d6a93aab8c99a1b71410553983b -Author: Watson Sato -Date: Mon Feb 28 11:44:13 2022 +0100 +From 19bd5adfd804590b15e42cc75287b792706286d5 Mon Sep 17 00:00:00 2001 +From: Watson Sato +Date: Thu, 10 Feb 2022 15:25:06 +0100 +Subject: [PATCH 1/9] Add rule to check for default sudoers includedir - Manual edited patch scap-security-guide-0.1.61-add_RHEL_08_0103789_include_sudoers-PR_8196.patch. +This rule supports RHEL-08-010379. +--- + .../ansible/shared.yml | 7 ++++ + .../sudoers_default_includedir/bash/shared.sh | 11 ++++++ + .../oval/shared.xml | 23 +++++++++++ + .../sudo/sudoers_default_includedir/rule.yml | 38 +++++++++++++++++++ + .../tests/default_includedir.pass.sh | 7 ++++ + .../tests/duplicate_includedir.fail.sh | 7 ++++ + .../tests/no_includedir.fail.sh | 4 ++ + .../tests/two_includedir.fail.sh | 8 ++++ + shared/references/cce-redhat-avail.txt | 3 -- + 9 files changed, 105 insertions(+), 3 deletions(-) + create mode 100644 linux_os/guide/system/software/sudo/sudoers_default_includedir/ansible/shared.yml + create mode 100644 linux_os/guide/system/software/sudo/sudoers_default_includedir/bash/shared.sh + create mode 100644 linux_os/guide/system/software/sudo/sudoers_default_includedir/oval/shared.xml + create mode 100644 linux_os/guide/system/software/sudo/sudoers_default_includedir/rule.yml + create mode 100644 linux_os/guide/system/software/sudo/sudoers_default_includedir/tests/default_includedir.pass.sh + create mode 100644 linux_os/guide/system/software/sudo/sudoers_default_includedir/tests/duplicate_includedir.fail.sh + create mode 100644 linux_os/guide/system/software/sudo/sudoers_default_includedir/tests/no_includedir.fail.sh + create mode 100644 linux_os/guide/system/software/sudo/sudoers_default_includedir/tests/two_includedir.fail.sh diff --git a/linux_os/guide/system/software/sudo/sudoers_default_includedir/ansible/shared.yml b/linux_os/guide/system/software/sudo/sudoers_default_includedir/ansible/shared.yml new file mode 100644 -index 0000000..0d8c9e7 +index 00000000000..d9d5933285f --- /dev/null +++ b/linux_os/guide/system/software/sudo/sudoers_default_includedir/ansible/shared.yml -@@ -0,0 +1,21 @@ +@@ -0,0 +1,7 @@ +# platform = multi_platform_all -+# reboot = false -+# strategy = configure -+# complexity = low -+# disruption = low ++# # reboot = false ++# # strategy = configure ++# # complexity = low ++# # disruption = low + +{{{ ansible_only_lineinfile(msg='Ensure sudo only has the default includedir', line_regex='^#includedir.*$', path='/etc/sudoers', new_line='#includedir /etc/sudoers.d') }}} -+{{{ ansible_lineinfile(msg='Ensure sudoers doesn\'t include other non-default file', regex='^#include[\s]+.*$', path='/etc/sudoers', state='absent') }}} -+- name: "Find out if /etc/sudoers.d/* files contain file or directory includes" -+ find: -+ path: "/etc/sudoers.d" -+ patterns: "*" -+ contains: '^#include(dir)?\s.*$' -+ register: sudoers_d_includes -+ -+- name: "Remove found occurrences of file and directory inclues from /etc/sudoers.d/* files" -+ lineinfile: -+ path: "{{ item.path }}" -+ regexp: '^#include(dir)?\s.*$' -+ state: absent -+ with_items: "{{ sudoers_d_includes.files }}" diff --git a/linux_os/guide/system/software/sudo/sudoers_default_includedir/bash/shared.sh b/linux_os/guide/system/software/sudo/sudoers_default_includedir/bash/shared.sh new file mode 100644 -index 0000000..fbff5eb +index 00000000000..3a9e2da985b --- /dev/null +++ b/linux_os/guide/system/software/sudo/sudoers_default_includedir/bash/shared.sh -@@ -0,0 +1,21 @@ +@@ -0,0 +1,11 @@ +# platform = multi_platform_all + +sudoers_config_file="/etc/sudoers" -+sudoers_config_dir="/etc/sudoers.d" +sudoers_includedir_count=$(grep -c "#includedir" "$sudoers_config_file") +if [ "$sudoers_includedir_count" -gt 1 ]; then + sed -i "/#includedir.*/d" "$sudoers_config_file" + echo "#includedir /etc/sudoers.d" >> "$sudoers_config_file" -+elif [ "$sudoers_includedir_count" -eq 0 ]; then -+ echo "#includedir /etc/sudoers.d" >> "$sudoers_config_file" -+else -+ if ! grep -q "^#includedir /etc/sudoers.d" "$sudoers_config_file"; then -+ sed -i "s|^#includedir.*|#includedir /etc/sudoers.d|g" "$sudoers_config_file" -+ fi +fi -+ -+sed -i "/^#include\s\+.*/d" "$sudoers_config_file" -+ -+if grep -Pr "^#include(dir)? .*" "$sudoers_config_dir" ; then -+ sed -i "/^#include\(dir\)\?\s\+.*/d" "$sudoers_config_dir"/* ++if [ "$sudoers_includedir_count" -eq 0 ]; then ++ echo "#includedir /etc/sudoers.d" >> "$sudoers_config_file" +fi diff --git a/linux_os/guide/system/software/sudo/sudoers_default_includedir/oval/shared.xml b/linux_os/guide/system/software/sudo/sudoers_default_includedir/oval/shared.xml new file mode 100644 -index 0000000..59cab0b +index 00000000000..5618c64291c --- /dev/null +++ b/linux_os/guide/system/software/sudo/sudoers_default_includedir/oval/shared.xml -@@ -0,0 +1,46 @@ +@@ -0,0 +1,23 @@ + + + {{{ oval_metadata("Check if sudo includes only the default includedir") }}} + + -+ -+ + + + @@ -88,34 +82,13 @@ index 0000000..59cab0b + /etc/sudoers.d + + -+ -+ -+ -+ -+ /etc/sudoers -+ ^#include[\s]+.*$ -+ 1 -+ -+ -+ -+ -+ -+ -+ /etc/sudoers.d/ -+ .* -+ ^#include(dir)?[\s]+.*$ -+ 1 -+ -+ + diff --git a/linux_os/guide/system/software/sudo/sudoers_default_includedir/rule.yml b/linux_os/guide/system/software/sudo/sudoers_default_includedir/rule.yml new file mode 100644 -index 0000000..a97bd3e +index 00000000000..5c33121f911 --- /dev/null +++ b/linux_os/guide/system/software/sudo/sudoers_default_includedir/rule.yml -@@ -0,0 +1,40 @@ +@@ -0,0 +1,38 @@ +documentation_complete: true + +prodtype: fedora,rhel7,rhel8,rhel9 @@ -128,7 +101,7 @@ index 0000000..a97bd3e + + Make sure that /etc/sudoers only includes drop-in configuration files from /etc/sudoers.d. + The /etc/sudoers should contain only one #includedir directive pointing to -+ /etc/sudoers.d, and no file in /etc/sudoers.d/ should include other files or directories. ++ /etc/sudoers.d + Note that the '#' character doesn't denote a comment in the configuration file. + +rationale: |- @@ -145,7 +118,6 @@ index 0000000..a97bd3e + +references: + disa: CCI-000366 -+ srg: SRG-OS-000480-GPOS-00227 + stigid@rhel8: RHEL-08-010379 + +ocil_clause: "the /etc/sudoers doesn't include /etc/sudores.d or includes other directories?" @@ -153,12 +125,11 @@ index 0000000..a97bd3e +ocil: |- + To determine whether sudo command includes configuration files from the appropriate directory, + run the following command: -+
      $ sudo grep -rP '^#include(dir)?' /etc/sudoers /etc/sudoers.d
      -+ If only the line /etc/sudoers:#includedir /etc/sudoers.d is returned, then the drop-in include configuration is set correctly. -+ Any other line returned is a finding. ++
      $ sudo grep 'include' /etc/sudoers
      ++ If only the line #includedir /etc/sudoers> is returned, then the drop-in file configuration is set correctly. diff --git a/linux_os/guide/system/software/sudo/sudoers_default_includedir/tests/default_includedir.pass.sh b/linux_os/guide/system/software/sudo/sudoers_default_includedir/tests/default_includedir.pass.sh new file mode 100644 -index 0000000..ac0c808 +index 00000000000..ac0c808ccd6 --- /dev/null +++ b/linux_os/guide/system/software/sudo/sudoers_default_includedir/tests/default_includedir.pass.sh @@ -0,0 +1,7 @@ @@ -171,7 +142,7 @@ index 0000000..ac0c808 +fi diff --git a/linux_os/guide/system/software/sudo/sudoers_default_includedir/tests/duplicate_includedir.fail.sh b/linux_os/guide/system/software/sudo/sudoers_default_includedir/tests/duplicate_includedir.fail.sh new file mode 100644 -index 0000000..5bad822 +index 00000000000..5bad8225625 --- /dev/null +++ b/linux_os/guide/system/software/sudo/sudoers_default_includedir/tests/duplicate_includedir.fail.sh @@ -0,0 +1,7 @@ @@ -184,7 +155,7 @@ index 0000000..5bad822 +fi diff --git a/linux_os/guide/system/software/sudo/sudoers_default_includedir/tests/no_includedir.fail.sh b/linux_os/guide/system/software/sudo/sudoers_default_includedir/tests/no_includedir.fail.sh new file mode 100644 -index 0000000..1e0ab8a +index 00000000000..1e0ab8aea92 --- /dev/null +++ b/linux_os/guide/system/software/sudo/sudoers_default_includedir/tests/no_includedir.fail.sh @@ -0,0 +1,4 @@ @@ -192,16 +163,139 @@ index 0000000..1e0ab8a +# platform = multi_platform_all + +sed -i "/#includedir.*/d" /etc/sudoers +diff --git a/linux_os/guide/system/software/sudo/sudoers_default_includedir/tests/two_includedir.fail.sh b/linux_os/guide/system/software/sudo/sudoers_default_includedir/tests/two_includedir.fail.sh +new file mode 100644 +index 00000000000..09d14eab630 +--- /dev/null ++++ b/linux_os/guide/system/software/sudo/sudoers_default_includedir/tests/two_includedir.fail.sh +@@ -0,0 +1,8 @@ ++#!/bin/bash ++# platform = multi_platform_all ++ ++# Ensure that there are two different indludedirs ++if ! grep -q "#includedir /etc/sudoers.d" /etc/sudoers; then ++ echo "#includedir /etc/sudoers.d" >> /etc/sudoers ++fi ++echo "#includedir /opt/extra_config.d" >> /etc/sudoers +diff --git a/shared/references/cce-redhat-avail.txt b/shared/references/cce-redhat-avail.txt +index 41caad9f0d0..f2990adb537 100644 +--- a/shared/references/cce-redhat-avail.txt ++++ b/shared/references/cce-redhat-avail.txt +@@ -340,7 +340,6 @@ CCE-86273-0 + CCE-86274-8 + CCE-86275-5 + CCE-86276-3 +-CCE-86277-1 + CCE-86278-9 + CCE-86279-7 + CCE-86281-3 +@@ -428,7 +427,6 @@ CCE-86373-8 + CCE-86374-6 + CCE-86375-3 + CCE-86376-1 +-CCE-86377-9 + CCE-86378-7 + CCE-86379-5 + CCE-86380-3 +@@ -524,7 +522,6 @@ CCE-86473-6 + CCE-86474-4 + CCE-86475-1 + CCE-86476-9 +-CCE-86477-7 + CCE-86478-5 + CCE-86479-3 + CCE-86480-1 + +From 99fe46922243e8dff5822e2ed6eb49addd000baa Mon Sep 17 00:00:00 2001 +From: Watson Sato +Date: Thu, 10 Feb 2022 16:21:46 +0100 +Subject: [PATCH 2/9] Select rule in RHEL8 STIG + +Select sudoers_default_indludedir aligning to RHEL8 STIG V1R5 +--- + products/rhel8/profiles/stig.profile | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile +index d92bc72971c..e13bda7a787 100644 +--- a/products/rhel8/profiles/stig.profile ++++ b/products/rhel8/profiles/stig.profile +@@ -271,6 +271,9 @@ selections: + # RHEL-08-010376 + - sysctl_kernel_perf_event_paranoid + ++ # RHEL-08-010379 ++ - sudoers_default_includedir ++ + # RHEL-08-010380 + - sudo_remove_nopasswd + + +From 3686fe72a6e27049f1c46d0a4efa07e1b42b6a20 Mon Sep 17 00:00:00 2001 +From: Watson Sato +Date: Thu, 10 Feb 2022 17:26:59 +0100 +Subject: [PATCH 3/9] Add test and fix for case when the single includedir is + wrong + +--- + .../sudo/sudoers_default_includedir/bash/shared.sh | 7 +++++-- + .../tests/wrong_includedir.fail.sh | 5 +++++ + 2 files changed, 10 insertions(+), 2 deletions(-) + create mode 100644 linux_os/guide/system/software/sudo/sudoers_default_includedir/tests/wrong_includedir.fail.sh + +diff --git a/linux_os/guide/system/software/sudo/sudoers_default_includedir/bash/shared.sh b/linux_os/guide/system/software/sudo/sudoers_default_includedir/bash/shared.sh +index 3a9e2da985b..258af02c121 100644 +--- a/linux_os/guide/system/software/sudo/sudoers_default_includedir/bash/shared.sh ++++ b/linux_os/guide/system/software/sudo/sudoers_default_includedir/bash/shared.sh +@@ -5,7 +5,10 @@ sudoers_includedir_count=$(grep -c "#includedir" "$sudoers_config_file") + if [ "$sudoers_includedir_count" -gt 1 ]; then + sed -i "/#includedir.*/d" "$sudoers_config_file" + echo "#includedir /etc/sudoers.d" >> "$sudoers_config_file" +-fi +-if [ "$sudoers_includedir_count" -eq 0 ]; then ++elif [ "$sudoers_includedir_count" -eq 0 ]; then + echo "#includedir /etc/sudoers.d" >> "$sudoers_config_file" ++else ++ if ! grep -q "^#includedir /etc/sudoers.d" /etc/sudoers; then ++ sed -i "s|^#includedir.*|#includedir /etc/sudoers.d|g" /etc/sudoers ++ fi + fi +diff --git a/linux_os/guide/system/software/sudo/sudoers_default_includedir/tests/wrong_includedir.fail.sh b/linux_os/guide/system/software/sudo/sudoers_default_includedir/tests/wrong_includedir.fail.sh +new file mode 100644 +index 00000000000..55a072adf3c +--- /dev/null ++++ b/linux_os/guide/system/software/sudo/sudoers_default_includedir/tests/wrong_includedir.fail.sh +@@ -0,0 +1,5 @@ ++#!/bin/bash ++# platform = multi_platform_all ++ ++sed -i "/#includedir.*/d" /etc/sudoers ++echo "#includedir /opt/extra_config.d" >> /etc/sudoers + +From 0b20b495ed82cead1a033170b900c13da5260603 Mon Sep 17 00:00:00 2001 +From: Watson Sato +Date: Mon, 14 Feb 2022 14:50:11 +0100 +Subject: [PATCH 4/9] Add tests for sudo file and dir includes in + /etc/sudoers.d + +--- + .../tests/sudoers.d_with_include.fail.sh | 9 +++++++++ + .../tests/sudoers.d_with_includedir.fail.sh | 9 +++++++++ + .../tests/sudoers_with_include.fail.sh | 11 +++++++++++ + 3 files changed, 29 insertions(+) + create mode 100644 linux_os/guide/system/software/sudo/sudoers_default_includedir/tests/sudoers.d_with_include.fail.sh + create mode 100644 linux_os/guide/system/software/sudo/sudoers_default_includedir/tests/sudoers.d_with_includedir.fail.sh + create mode 100644 linux_os/guide/system/software/sudo/sudoers_default_includedir/tests/sudoers_with_include.fail.sh + diff --git a/linux_os/guide/system/software/sudo/sudoers_default_includedir/tests/sudoers.d_with_include.fail.sh b/linux_os/guide/system/software/sudo/sudoers_default_includedir/tests/sudoers.d_with_include.fail.sh new file mode 100644 -index 0000000..3f14ecc +index 00000000000..554ef2e060d --- /dev/null +++ b/linux_os/guide/system/software/sudo/sudoers_default_includedir/tests/sudoers.d_with_include.fail.sh -@@ -0,0 +1,10 @@ +@@ -0,0 +1,9 @@ +#!/bin/bash +# platform = multi_platform_all + -+mkdir -p /etc/sudoers.d +# Ensure default config is there +if ! grep -q "#includedir /etc/sudoers.d" /etc/sudoers; then + echo "#includedir /etc/sudoers.d" >> /etc/sudoers @@ -210,14 +304,13 @@ index 0000000..3f14ecc +echo "#include /etc/my-sudoers" > /etc/sudoers.d/my-sudoers diff --git a/linux_os/guide/system/software/sudo/sudoers_default_includedir/tests/sudoers.d_with_includedir.fail.sh b/linux_os/guide/system/software/sudo/sudoers_default_includedir/tests/sudoers.d_with_includedir.fail.sh new file mode 100644 -index 0000000..8951507 +index 00000000000..516b68b5a3e --- /dev/null +++ b/linux_os/guide/system/software/sudo/sudoers_default_includedir/tests/sudoers.d_with_includedir.fail.sh -@@ -0,0 +1,10 @@ +@@ -0,0 +1,9 @@ +#!/bin/bash +# platform = multi_platform_all + -+mkdir -p /etc/sudoers.d +# Ensure default config is there +if ! grep -q "#includedir /etc/sudoers.d" /etc/sudoers; then + echo "#includedir /etc/sudoers.d" >> /etc/sudoers @@ -226,7 +319,7 @@ index 0000000..8951507 +echo "#includedir /etc/my-sudoers.d" > /etc/sudoers.d/my-sudoers diff --git a/linux_os/guide/system/software/sudo/sudoers_default_includedir/tests/sudoers_with_include.fail.sh b/linux_os/guide/system/software/sudo/sudoers_default_includedir/tests/sudoers_with_include.fail.sh new file mode 100644 -index 0000000..ad04880 +index 00000000000..ad04880e334 --- /dev/null +++ b/linux_os/guide/system/software/sudo/sudoers_default_includedir/tests/sudoers_with_include.fail.sh @@ -0,0 +1,11 @@ @@ -241,70 +334,166 @@ index 0000000..ad04880 +if ! grep -q "#include " /etc/sudoers; then + echo "#include /etc/my-sudoers" >> /etc/sudoers +fi -diff --git a/linux_os/guide/system/software/sudo/sudoers_default_includedir/tests/two_includedir.fail.sh b/linux_os/guide/system/software/sudo/sudoers_default_includedir/tests/two_includedir.fail.sh -new file mode 100644 -index 0000000..09d14ea ---- /dev/null -+++ b/linux_os/guide/system/software/sudo/sudoers_default_includedir/tests/two_includedir.fail.sh -@@ -0,0 +1,8 @@ -+#!/bin/bash -+# platform = multi_platform_all -+ -+# Ensure that there are two different indludedirs -+if ! grep -q "#includedir /etc/sudoers.d" /etc/sudoers; then -+ echo "#includedir /etc/sudoers.d" >> /etc/sudoers -+fi -+echo "#includedir /opt/extra_config.d" >> /etc/sudoers -diff --git a/linux_os/guide/system/software/sudo/sudoers_default_includedir/tests/wrong_includedir.fail.sh b/linux_os/guide/system/software/sudo/sudoers_default_includedir/tests/wrong_includedir.fail.sh -new file mode 100644 -index 0000000..55a072a ---- /dev/null -+++ b/linux_os/guide/system/software/sudo/sudoers_default_includedir/tests/wrong_includedir.fail.sh -@@ -0,0 +1,5 @@ -+#!/bin/bash -+# platform = multi_platform_all + +From d91e3eefe6c265c27634cb15b0f276a298f81645 Mon Sep 17 00:00:00 2001 +From: Watson Sato +Date: Mon, 14 Feb 2022 14:59:18 +0100 +Subject: [PATCH 5/9] Update rule catch and remove other sudo includes + +Any other #include or #includedir besides: +"/etc/sudoers: #includedir /etc/sudoers.d" should be removed. +--- + .../ansible/shared.yml | 14 +++++++++++ + .../sudoers_default_includedir/bash/shared.sh | 7 ++++-- + .../oval/shared.xml | 23 +++++++++++++++++++ + .../sudo/sudoers_default_includedir/rule.yml | 7 +++--- + 4 files changed, 46 insertions(+), 5 deletions(-) + +diff --git a/linux_os/guide/system/software/sudo/sudoers_default_includedir/ansible/shared.yml b/linux_os/guide/system/software/sudo/sudoers_default_includedir/ansible/shared.yml +index d9d5933285f..175a447e0d9 100644 +--- a/linux_os/guide/system/software/sudo/sudoers_default_includedir/ansible/shared.yml ++++ b/linux_os/guide/system/software/sudo/sudoers_default_includedir/ansible/shared.yml +@@ -5,3 +5,17 @@ + # # disruption = low + + {{{ ansible_only_lineinfile(msg='Ensure sudo only has the default includedir', line_regex='^#includedir.*$', path='/etc/sudoers', new_line='#includedir /etc/sudoers.d') }}} ++{{{ ansible_lineinfile(msg='Ensure sudoers doesn\'t include other non-default file', regex='^#include[\s]+.*$', path='/etc/sudoers', state='absent') }}} ++- name: "Find out if /etc/sudoers.d/* files contain file or directory includes" ++ find: ++ path: "/etc/sudoers.d" ++ patterns: "*" ++ contains: '^#include(dir)?\s.*$' ++ register: sudoers_d_includes + -+sed -i "/#includedir.*/d" /etc/sudoers -+echo "#includedir /opt/extra_config.d" >> /etc/sudoers -diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index bfb3753..f5fed4a 100644 ---- a/products/rhel8/profiles/stig.profile -+++ b/products/rhel8/profiles/stig.profile -@@ -271,6 +271,9 @@ selections: - # RHEL-08-010376 - - sysctl_kernel_perf_event_paranoid ++- name: "Remove found occurrences of file and directory inclues from /etc/sudoers.d/* files" ++ lineinfile: ++ path: "{{ item.path }}" ++ regexp: '^#include(dir)?\s.*$' ++ state: absent ++ with_items: "{{ sudoers_d_includes.files }}" +diff --git a/linux_os/guide/system/software/sudo/sudoers_default_includedir/bash/shared.sh b/linux_os/guide/system/software/sudo/sudoers_default_includedir/bash/shared.sh +index 258af02c121..2d00b471677 100644 +--- a/linux_os/guide/system/software/sudo/sudoers_default_includedir/bash/shared.sh ++++ b/linux_os/guide/system/software/sudo/sudoers_default_includedir/bash/shared.sh +@@ -1,6 +1,7 @@ + # platform = multi_platform_all -+ # RHEL-08-010379 -+ - sudoers_default_includedir + sudoers_config_file="/etc/sudoers" ++sudoers_config_dir="/etc/sudoers.d" + sudoers_includedir_count=$(grep -c "#includedir" "$sudoers_config_file") + if [ "$sudoers_includedir_count" -gt 1 ]; then + sed -i "/#includedir.*/d" "$sudoers_config_file" +@@ -8,7 +9,9 @@ if [ "$sudoers_includedir_count" -gt 1 ]; then + elif [ "$sudoers_includedir_count" -eq 0 ]; then + echo "#includedir /etc/sudoers.d" >> "$sudoers_config_file" + else +- if ! grep -q "^#includedir /etc/sudoers.d" /etc/sudoers; then +- sed -i "s|^#includedir.*|#includedir /etc/sudoers.d|g" /etc/sudoers ++ if ! grep -q "^#includedir /etc/sudoers.d" "$sudoers_config_file"; then ++ sed -i "s|^#includedir.*|#includedir /etc/sudoers.d|g" "$sudoers_config_file" + fi + fi ++sed -i "/^#include\s\+.*/d" "$sudoers_config_file" "${sudoers_config_dir}"/* ++sed -i "/^#includedir\s\+.*/d" "${sudoers_config_dir}"/* +diff --git a/linux_os/guide/system/software/sudo/sudoers_default_includedir/oval/shared.xml b/linux_os/guide/system/software/sudo/sudoers_default_includedir/oval/shared.xml +index 5618c64291c..59cab0b89de 100644 +--- a/linux_os/guide/system/software/sudo/sudoers_default_includedir/oval/shared.xml ++++ b/linux_os/guide/system/software/sudo/sudoers_default_includedir/oval/shared.xml +@@ -3,6 +3,8 @@ + {{{ oval_metadata("Check if sudo includes only the default includedir") }}} + + ++ ++ + +
      + +@@ -20,4 +22,25 @@ + /etc/sudoers.d + + ++ ++ ++ ++ ++ /etc/sudoers ++ ^#include[\s]+.*$ ++ 1 ++ + - # RHEL-08-010380 - - sudo_remove_nopasswd ++ ++ ++ ++ ++ /etc/sudoers.d/ ++ .* ++ ^#include(dir)?[\s]+.*$ ++ 1 ++ ++ +
      +diff --git a/linux_os/guide/system/software/sudo/sudoers_default_includedir/rule.yml b/linux_os/guide/system/software/sudo/sudoers_default_includedir/rule.yml +index 5c33121f911..3a8c22ac8af 100644 +--- a/linux_os/guide/system/software/sudo/sudoers_default_includedir/rule.yml ++++ b/linux_os/guide/system/software/sudo/sudoers_default_includedir/rule.yml +@@ -10,7 +10,7 @@ description: |- + + Make sure that /etc/sudoers only includes drop-in configuration files from /etc/sudoers.d. + The /etc/sudoers should contain only one #includedir directive pointing to +- /etc/sudoers.d ++ /etc/sudoers.d, and no file in /etc/sudoers.d/ should include other files or directories. + Note that the '#' character doesn't denote a comment in the configuration file. -diff --git a/shared/references/cce-redhat-avail.txt b/shared/references/cce-redhat-avail.txt -index ec92589..99bccc7 100644 ---- a/shared/references/cce-redhat-avail.txt -+++ b/shared/references/cce-redhat-avail.txt -@@ -478,7 +478,6 @@ CCE-86373-8 - CCE-86374-6 - CCE-86375-3 - CCE-86376-1 --CCE-86377-9 - CCE-86378-7 - CCE-86379-5 - CCE-86380-3 -@@ -576,7 +575,6 @@ CCE-86473-6 - CCE-86474-4 - CCE-86475-1 - CCE-86476-9 --CCE-86477-7 - CCE-86478-5 - CCE-86479-3 - CCE-86480-1 + rationale: |- +@@ -34,5 +34,6 @@ ocil_clause: "the /etc/sudoers doesn't include /etc/sudores.d or includes other + ocil: |- + To determine whether sudo command includes configuration files from the appropriate directory, + run the following command: +-
      $ sudo grep 'include' /etc/sudoers
      +- If only the line #includedir /etc/sudoers> is returned, then the drop-in file configuration is set correctly. ++
      $ sudo grep -rP '^#include(dir)?' /etc/sudoers /etc/sudoers.d
      ++ If only the line /etc/sudoers:#includedir /etc/sudoers.d is returned, then the drop-in include configuration is set correctly. ++ Any other line returned is a finding. + +From ead72b744f1fc03893184079c079df27780044c2 Mon Sep 17 00:00:00 2001 +From: Watson Sato +Date: Mon, 14 Feb 2022 15:00:46 +0100 +Subject: [PATCH 6/9] Add SRG to sudoers_default_includedir + +--- + .../system/software/sudo/sudoers_default_includedir/rule.yml | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/linux_os/guide/system/software/sudo/sudoers_default_includedir/rule.yml b/linux_os/guide/system/software/sudo/sudoers_default_includedir/rule.yml +index 3a8c22ac8af..a97bd3efb2c 100644 +--- a/linux_os/guide/system/software/sudo/sudoers_default_includedir/rule.yml ++++ b/linux_os/guide/system/software/sudo/sudoers_default_includedir/rule.yml +@@ -27,6 +27,7 @@ identifiers: + + references: + disa: CCI-000366 ++ srg: SRG-OS-000480-GPOS-00227 + stigid@rhel8: RHEL-08-010379 + + ocil_clause: "the /etc/sudoers doesn't include /etc/sudores.d or includes other directories?" + +From c1a08fe6b8e6388b89b190ca74e57af06e7c999c Mon Sep 17 00:00:00 2001 +From: Watson Sato +Date: Mon, 14 Feb 2022 16:12:32 +0100 +Subject: [PATCH 7/9] Update RHEL8 STIG profile stability data + +--- + tests/data/profile_stability/rhel8/stig.profile | 1 + + tests/data/profile_stability/rhel8/stig_gui.profile | 1 + + 2 files changed, 2 insertions(+) + diff --git a/tests/data/profile_stability/rhel8/stig.profile b/tests/data/profile_stability/rhel8/stig.profile -index 2411f02..2dbc2e4 100644 +index e4fee44f9f9..974b28757e9 100644 --- a/tests/data/profile_stability/rhel8/stig.profile +++ b/tests/data/profile_stability/rhel8/stig.profile -@@ -360,6 +360,7 @@ selections: +@@ -365,6 +365,7 @@ selections: - sudo_remove_nopasswd - sudo_require_reauthentication - sudo_restrict_privilege_elevation_to_authorized @@ -313,10 +502,10 @@ index 2411f02..2dbc2e4 100644 - sysctl_crypto_fips_enabled - sysctl_fs_protected_hardlinks diff --git a/tests/data/profile_stability/rhel8/stig_gui.profile b/tests/data/profile_stability/rhel8/stig_gui.profile -index f0a9601..cd76884 100644 +index 83d04775e3a..99e0af4f5a6 100644 --- a/tests/data/profile_stability/rhel8/stig_gui.profile +++ b/tests/data/profile_stability/rhel8/stig_gui.profile -@@ -371,6 +371,7 @@ selections: +@@ -376,6 +376,7 @@ selections: - sudo_remove_nopasswd - sudo_require_reauthentication - sudo_restrict_privilege_elevation_to_authorized @@ -324,3 +513,84 @@ index f0a9601..cd76884 100644 - sudoers_validate_passwd - sysctl_crypto_fips_enabled - sysctl_fs_protected_hardlinks + +From adae3ecbda4362e23cd1f30e053db37d6a1d403b Mon Sep 17 00:00:00 2001 +From: Watson Sato +Date: Mon, 14 Feb 2022 16:59:22 +0100 +Subject: [PATCH 8/9] Fix Ansible remediation metadata + +--- + .../sudo/sudoers_default_includedir/ansible/shared.yml | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/linux_os/guide/system/software/sudo/sudoers_default_includedir/ansible/shared.yml b/linux_os/guide/system/software/sudo/sudoers_default_includedir/ansible/shared.yml +index 175a447e0d9..0d8c9e75184 100644 +--- a/linux_os/guide/system/software/sudo/sudoers_default_includedir/ansible/shared.yml ++++ b/linux_os/guide/system/software/sudo/sudoers_default_includedir/ansible/shared.yml +@@ -1,8 +1,8 @@ + # platform = multi_platform_all +-# # reboot = false +-# # strategy = configure +-# # complexity = low +-# # disruption = low ++# reboot = false ++# strategy = configure ++# complexity = low ++# disruption = low + + {{{ ansible_only_lineinfile(msg='Ensure sudo only has the default includedir', line_regex='^#includedir.*$', path='/etc/sudoers', new_line='#includedir /etc/sudoers.d') }}} + {{{ ansible_lineinfile(msg='Ensure sudoers doesn\'t include other non-default file', regex='^#include[\s]+.*$', path='/etc/sudoers', state='absent') }}} + +From d3f048456908b316c0dcc0bff2328cf87fe6e7de Mon Sep 17 00:00:00 2001 +From: Watson Sato +Date: Mon, 14 Feb 2022 17:39:39 +0100 +Subject: [PATCH 9/9] Handle case when /etc/sudoers.d doesn't exist + +The remediation skips the directory, and the test scenarios create the +dir to ensure the test scenario works. +--- + .../sudo/sudoers_default_includedir/bash/shared.sh | 8 ++++++-- + .../tests/sudoers.d_with_include.fail.sh | 1 + + .../tests/sudoers.d_with_includedir.fail.sh | 1 + + 3 files changed, 8 insertions(+), 2 deletions(-) + +diff --git a/linux_os/guide/system/software/sudo/sudoers_default_includedir/bash/shared.sh b/linux_os/guide/system/software/sudo/sudoers_default_includedir/bash/shared.sh +index 2d00b471677..fbff5eb6f30 100644 +--- a/linux_os/guide/system/software/sudo/sudoers_default_includedir/bash/shared.sh ++++ b/linux_os/guide/system/software/sudo/sudoers_default_includedir/bash/shared.sh +@@ -13,5 +13,9 @@ else + sed -i "s|^#includedir.*|#includedir /etc/sudoers.d|g" "$sudoers_config_file" + fi + fi +-sed -i "/^#include\s\+.*/d" "$sudoers_config_file" "${sudoers_config_dir}"/* +-sed -i "/^#includedir\s\+.*/d" "${sudoers_config_dir}"/* ++ ++sed -i "/^#include\s\+.*/d" "$sudoers_config_file" ++ ++if grep -Pr "^#include(dir)? .*" "$sudoers_config_dir" ; then ++ sed -i "/^#include\(dir\)\?\s\+.*/d" "$sudoers_config_dir"/* ++fi +diff --git a/linux_os/guide/system/software/sudo/sudoers_default_includedir/tests/sudoers.d_with_include.fail.sh b/linux_os/guide/system/software/sudo/sudoers_default_includedir/tests/sudoers.d_with_include.fail.sh +index 554ef2e060d..3f14ecc1627 100644 +--- a/linux_os/guide/system/software/sudo/sudoers_default_includedir/tests/sudoers.d_with_include.fail.sh ++++ b/linux_os/guide/system/software/sudo/sudoers_default_includedir/tests/sudoers.d_with_include.fail.sh +@@ -1,6 +1,7 @@ + #!/bin/bash + # platform = multi_platform_all + ++mkdir -p /etc/sudoers.d + # Ensure default config is there + if ! grep -q "#includedir /etc/sudoers.d" /etc/sudoers; then + echo "#includedir /etc/sudoers.d" >> /etc/sudoers +diff --git a/linux_os/guide/system/software/sudo/sudoers_default_includedir/tests/sudoers.d_with_includedir.fail.sh b/linux_os/guide/system/software/sudo/sudoers_default_includedir/tests/sudoers.d_with_includedir.fail.sh +index 516b68b5a3e..89515076ff1 100644 +--- a/linux_os/guide/system/software/sudo/sudoers_default_includedir/tests/sudoers.d_with_includedir.fail.sh ++++ b/linux_os/guide/system/software/sudo/sudoers_default_includedir/tests/sudoers.d_with_includedir.fail.sh +@@ -1,6 +1,7 @@ + #!/bin/bash + # platform = multi_platform_all + ++mkdir -p /etc/sudoers.d + # Ensure default config is there + if ! grep -q "#includedir /etc/sudoers.d" /etc/sudoers; then + echo "#includedir /etc/sudoers.d" >> /etc/sudoers diff --git a/SOURCES/scap-security-guide-0.1.61-add_RHEL_08_020221-PR_8173.patch b/SOURCES/scap-security-guide-0.1.61-add_RHEL_08_020221-PR_8173.patch index acc2c6f..1b3a98b 100644 --- a/SOURCES/scap-security-guide-0.1.61-add_RHEL_08_020221-PR_8173.patch +++ b/SOURCES/scap-security-guide-0.1.61-add_RHEL_08_020221-PR_8173.patch @@ -1,16 +1,10 @@ -commit b7f5c68f8172e88aed6ce22fb70dc48ef3148ffa -Author: Watson Sato -Date: Fri Feb 25 18:23:41 2022 +0100 - - Manual edited patch scap-security-guide-0.1.61-add_RHEL_08_020221-PR_8173.patch. - diff --git a/linux_os/guide/system/accounts/accounts-pam/locking_out_password_attempts/accounts_password_pam_pwhistory_remember_password_auth/rule.yml b/linux_os/guide/system/accounts/accounts-pam/locking_out_password_attempts/accounts_password_pam_pwhistory_remember_password_auth/rule.yml -index 62b6f55..523ab62 100644 +index 5353f60975c..69a36c4959a 100644 --- a/linux_os/guide/system/accounts/accounts-pam/locking_out_password_attempts/accounts_password_pam_pwhistory_remember_password_auth/rule.yml +++ b/linux_os/guide/system/accounts/accounts-pam/locking_out_password_attempts/accounts_password_pam_pwhistory_remember_password_auth/rule.yml -@@ -41,7 +41,7 @@ references: - srg: SRG-OS-000077-GPOS-00045 +@@ -43,7 +43,7 @@ references: stigid@ol7: OL07-00-010270 + stigid@ol8: OL08-00-020220 stigid@rhel7: RHEL-07-010270 - stigid@rhel8: RHEL-08-020220 + stigid@rhel8: RHEL-08-020221 diff --git a/SOURCES/scap-security-guide-0.1.61-add_RHEL_08_040321-PR_8169.patch b/SOURCES/scap-security-guide-0.1.61-add_RHEL_08_040321-PR_8169.patch index dfa9b8b..c4167f3 100644 --- a/SOURCES/scap-security-guide-0.1.61-add_RHEL_08_040321-PR_8169.patch +++ b/SOURCES/scap-security-guide-0.1.61-add_RHEL_08_040321-PR_8169.patch @@ -1,17 +1,3 @@ -From f284885e417d86c408c9f94db02b4b7066d316be Mon Sep 17 00:00:00 2001 -From: Watson Sato -Date: Mon, 7 Feb 2022 11:34:16 +0100 -Subject: [PATCH] Add RHEL-08-040321 to RHEL8 STIG profile - -The STIG doesn't recommend the systems to target the graphical -environment by default. ---- - .../disabling_xwindows/xwindows_runlevel_target/rule.yml | 1 + - products/rhel8/profiles/stig.profile | 3 +++ - products/rhel8/profiles/stig_gui.profile | 3 +++ - tests/data/profile_stability/rhel8/stig.profile | 1 + - 4 files changed, 8 insertions(+) - diff --git a/linux_os/guide/services/xwindows/disabling_xwindows/xwindows_runlevel_target/rule.yml b/linux_os/guide/services/xwindows/disabling_xwindows/xwindows_runlevel_target/rule.yml index de0e359a44e..df56a30be80 100644 --- a/linux_os/guide/services/xwindows/disabling_xwindows/xwindows_runlevel_target/rule.yml diff --git a/SOURCES/scap-security-guide-0.1.61-add_missing_srgs-PR_8218.patch b/SOURCES/scap-security-guide-0.1.61-add_missing_srgs-PR_8218.patch new file mode 100644 index 0000000..2ff9d14 --- /dev/null +++ b/SOURCES/scap-security-guide-0.1.61-add_missing_srgs-PR_8218.patch @@ -0,0 +1,38 @@ +From 8605b236665b1022c7379e87d9445c9ca42e78f3 Mon Sep 17 00:00:00 2001 +From: Gabriel Becker +Date: Mon, 14 Feb 2022 11:41:15 +0100 +Subject: [PATCH] Add SRG references to STIG rules. + +Rules accounts_password_pam_pwquality_password_auth and accounts_password_pam_pwquality_system_auth +were missing SRG required references. +--- + .../accounts_password_pam_pwquality_password_auth/rule.yml | 2 ++ + .../accounts_password_pam_pwquality_system_auth/rule.yml | 2 ++ + 2 files changed, 4 insertions(+) + +diff --git a/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_password_auth/rule.yml b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_password_auth/rule.yml +index 6c7bb1ad7a0..34dd6e2fcca 100644 +--- a/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_password_auth/rule.yml ++++ b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_password_auth/rule.yml +@@ -22,6 +22,8 @@ identifiers: + cce@rhel9: CCE-85878-7 + + references: ++ disa: CCI-000366 ++ srg: SRG-OS-000480-GPOS-00227 + stigid@rhel8: RHEL-08-020100 + + ocil_clause: 'pam_pwquality.so is not enabled in password-auth' +diff --git a/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_system_auth/rule.yml b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_system_auth/rule.yml +index ea42ff9b07a..a5189c61608 100644 +--- a/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_system_auth/rule.yml ++++ b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_system_auth/rule.yml +@@ -22,6 +22,8 @@ identifiers: + cce@rhel9: CCE-85873-8 + + references: ++ disa: CCI-000366 ++ srg: SRG-OS-000480-GPOS-00227 + stigid@rhel8: RHEL-08-020101 + + ocil_clause: 'pam_pwquality.so is not enabled in system-auth' diff --git a/SOURCES/scap-security-guide-0.1.61-chrony_maxpoll-PR_8187.patch b/SOURCES/scap-security-guide-0.1.61-chrony_maxpoll-PR_8187.patch new file mode 100644 index 0000000..f8f14d1 --- /dev/null +++ b/SOURCES/scap-security-guide-0.1.61-chrony_maxpoll-PR_8187.patch @@ -0,0 +1,369 @@ +From bbafe0a7b4b9eb50bc622d9f9f3c0074fca932f9 Mon Sep 17 00:00:00 2001 +From: Watson Sato +Date: Wed, 9 Feb 2022 16:17:52 +0100 +Subject: [PATCH 1/2] Pass the rule when no time server nor pool is set + +If no time server or pool is configured, there is no entry to add +maxpoll option to, so the rule should evaluate to pass. +--- + .../oval/shared.xml | 50 +++++++++++++++---- + .../ntp/chronyd_or_ntpd_set_maxpoll/rule.yml | 2 + + .../tests/chrony_no_pool_nor_servers.pass.sh | 12 +++++ + 3 files changed, 54 insertions(+), 10 deletions(-) + create mode 100644 linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/tests/chrony_no_pool_nor_servers.pass.sh + +diff --git a/linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/oval/shared.xml b/linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/oval/shared.xml +index 780c2e2d0ba..76f810123f3 100644 +--- a/linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/oval/shared.xml ++++ b/linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/oval/shared.xml +@@ -3,17 +3,25 @@ + {{{ oval_metadata("Configure the maxpoll setting in /etc/ntp.conf or chrony.conf + to continuously poll the time source servers.") }}} + +- +- +- ++ ++ ++ ++ ++ ++ + +- +- +- ++ ++ ++ ++ ++ ++ + + + +@@ -77,4 +85,26 @@ + maxpoll \d+ + + ++ ++ ++ ++ ++ ^/etc/chrony\.(conf|d/.+\.conf)$ ++ ^(?:server|pool).* ++ 1 ++ ++ ++ ++ ++ ++ ++ /etc/ntp.conf ++ ^server.* ++ 1 ++ ++ + +diff --git a/linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/rule.yml b/linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/rule.yml +index 20e7467a7b5..c115ad3c115 100644 +--- a/linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/rule.yml ++++ b/linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/rule.yml +@@ -13,6 +13,8 @@ description: |- +
      maxpoll {{{ xccdf_value("var_time_service_set_maxpoll") }}}
      + to
      server
      directives. If using chrony any
      pool
      directives + should be configured too. ++ If no server or pool directives are configured, the rule evaluates ++ to pass. + {{% if product == "rhcos4" %}} +

      + Note that if the remediation shipping with this content is being used, the +diff --git a/linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/tests/chrony_no_pool_nor_servers.pass.sh b/linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/tests/chrony_no_pool_nor_servers.pass.sh +new file mode 100644 +index 00000000000..bbae20fc696 +--- /dev/null ++++ b/linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/tests/chrony_no_pool_nor_servers.pass.sh +@@ -0,0 +1,12 @@ ++#!/bin/bash ++# packages = chrony ++# ++# profiles = xccdf_org.ssgproject.content_profile_stig ++ ++yum remove -y ntp ++ ++# Remove all pool and server options ++sed -i "/^pool.*/d" /etc/chrony.conf ++sed -i "/^server.*/d" /etc/chrony.conf ++ ++systemctl enable chronyd.service + +From 60ef6eb2cce9e53ea256738ff2583b332155a318 Mon Sep 17 00:00:00 2001 +From: Watson Sato +Date: Fri, 11 Feb 2022 12:14:30 +0100 +Subject: [PATCH 2/2] Add rule ensuring Chrony only uses server directive + +This new rule only asserts that Chrony has at least one time source configured, +and that it is done with the 'server' directive. +No remediation is provided for rule, that is left for other specialized +rules. +--- + .../chronyd_server_directive/oval/shared.xml | 33 +++++++++++++++++++ + .../ntp/chronyd_server_directive/rule.yml | 32 ++++++++++++++++++ + .../tests/file_empty.fail.sh | 6 ++++ + .../tests/file_missing.fail.sh | 6 ++++ + .../tests/line_missing.fail.sh | 7 ++++ + .../tests/multiple_servers.pass.sh | 8 +++++ + .../tests/only_pool.fail.sh | 9 +++++ + .../tests/only_server.pass.sh | 6 ++++ + products/rhel8/profiles/stig.profile | 1 + + products/rhel9/profiles/stig.profile | 1 + + shared/references/cce-redhat-avail.txt | 2 -- + .../data/profile_stability/rhel8/stig.profile | 1 + + .../profile_stability/rhel8/stig_gui.profile | 1 + + 13 files changed, 111 insertions(+), 2 deletions(-) + create mode 100644 linux_os/guide/services/ntp/chronyd_server_directive/oval/shared.xml + create mode 100644 linux_os/guide/services/ntp/chronyd_server_directive/rule.yml + create mode 100644 linux_os/guide/services/ntp/chronyd_server_directive/tests/file_empty.fail.sh + create mode 100644 linux_os/guide/services/ntp/chronyd_server_directive/tests/file_missing.fail.sh + create mode 100644 linux_os/guide/services/ntp/chronyd_server_directive/tests/line_missing.fail.sh + create mode 100644 linux_os/guide/services/ntp/chronyd_server_directive/tests/multiple_servers.pass.sh + create mode 100644 linux_os/guide/services/ntp/chronyd_server_directive/tests/only_pool.fail.sh + create mode 100644 linux_os/guide/services/ntp/chronyd_server_directive/tests/only_server.pass.sh + +diff --git a/linux_os/guide/services/ntp/chronyd_server_directive/oval/shared.xml b/linux_os/guide/services/ntp/chronyd_server_directive/oval/shared.xml +new file mode 100644 +index 00000000000..2244e608047 +--- /dev/null ++++ b/linux_os/guide/services/ntp/chronyd_server_directive/oval/shared.xml +@@ -0,0 +1,33 @@ ++ ++ ++ {{{ oval_metadata("Ensure Chrony has time sources configured with server directive") }}} ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ^/etc/chrony\.(conf|d/.+\.conf)$ ++ ^[\s]*server.*$ ++ 1 ++ ++ ++ ++ ++ ++ ++ ^/etc/chrony\.(conf|d/.+\.conf)$ ++ ^[\s]+pool.*$ ++ 1 ++ ++ +diff --git a/linux_os/guide/services/ntp/chronyd_server_directive/rule.yml b/linux_os/guide/services/ntp/chronyd_server_directive/rule.yml +new file mode 100644 +index 00000000000..6dc24f1be85 +--- /dev/null ++++ b/linux_os/guide/services/ntp/chronyd_server_directive/rule.yml +@@ -0,0 +1,32 @@ ++documentation_complete: true ++ ++title: 'Ensure Chrony is only configured with the server directive' ++ ++description: |- ++ Check that Chrony only has time sources configured with the server directive. ++ ++rationale: |- ++ Depending on the infrastruture being used the pool directive may not be supported. ++ ++severity: medium ++ ++platform: chrony ++ ++warnings: ++ - general: This rule doesn't come with a remediation, the time source needs to be added by the adminstrator. ++ ++identifiers: ++ cce@rhel8: CCE-86077-5 ++ cce@rhel9: CCE-87077-4 ++ ++references: ++ disa: CCI-001891 ++ srg: SRG-OS-000355-GPOS-00143,SRG-OS-000356-GPOS-00144,SRG-OS-000359-GPOS-00146 ++ stigid@rhel8: RHEL-08-030740 ++ ++ocil_clause: 'a remote time server is not configured or configured with pool directive' ++ ++ocil: |- ++ Run the following command and verify that time sources are only configure with server directive: ++

      # grep -E "^(server|pool)" /etc/chrony.conf
      ++ A line with the appropriate server should be returned, any line returned starting with pool is a finding. +diff --git a/linux_os/guide/services/ntp/chronyd_server_directive/tests/file_empty.fail.sh b/linux_os/guide/services/ntp/chronyd_server_directive/tests/file_empty.fail.sh +new file mode 100644 +index 00000000000..d1ba0755198 +--- /dev/null ++++ b/linux_os/guide/services/ntp/chronyd_server_directive/tests/file_empty.fail.sh +@@ -0,0 +1,6 @@ ++#!/bin/bash ++# packages = chrony ++# platform = multi_platform_fedora,multi_platform_rhel ++# remediation = none ++ ++echo "" > /etc/chrony.conf +diff --git a/linux_os/guide/services/ntp/chronyd_server_directive/tests/file_missing.fail.sh b/linux_os/guide/services/ntp/chronyd_server_directive/tests/file_missing.fail.sh +new file mode 100644 +index 00000000000..12a50ebc3d2 +--- /dev/null ++++ b/linux_os/guide/services/ntp/chronyd_server_directive/tests/file_missing.fail.sh +@@ -0,0 +1,6 @@ ++#!/bin/bash ++# packages = chrony ++# platform = multi_platform_fedora,multi_platform_rhel ++# remediation = none ++ ++rm -f /etc/chrony.conf +diff --git a/linux_os/guide/services/ntp/chronyd_server_directive/tests/line_missing.fail.sh b/linux_os/guide/services/ntp/chronyd_server_directive/tests/line_missing.fail.sh +new file mode 100644 +index 00000000000..bffa8b62b1b +--- /dev/null ++++ b/linux_os/guide/services/ntp/chronyd_server_directive/tests/line_missing.fail.sh +@@ -0,0 +1,7 @@ ++#!/bin/bash ++# packages = chrony ++# platform = multi_platform_fedora,multi_platform_rhel ++# remediation = none ++ ++echo "some line" > /etc/chrony.conf ++echo "another line" >> /etc/chrony.conf +diff --git a/linux_os/guide/services/ntp/chronyd_server_directive/tests/multiple_servers.pass.sh b/linux_os/guide/services/ntp/chronyd_server_directive/tests/multiple_servers.pass.sh +new file mode 100644 +index 00000000000..5527f389316 +--- /dev/null ++++ b/linux_os/guide/services/ntp/chronyd_server_directive/tests/multiple_servers.pass.sh +@@ -0,0 +1,8 @@ ++#!/bin/bash ++# packages = chrony ++# platform = multi_platform_fedora,multi_platform_rhel ++# remediation = none ++ ++sed -i "^pool.*" /etc/chrony.conf ++echo "server 0.pool.ntp.org" > /etc/chrony.conf ++echo "server 1.pool.ntp.org" >> /etc/chrony.conf +diff --git a/linux_os/guide/services/ntp/chronyd_server_directive/tests/only_pool.fail.sh b/linux_os/guide/services/ntp/chronyd_server_directive/tests/only_pool.fail.sh +new file mode 100644 +index 00000000000..616fe8844fc +--- /dev/null ++++ b/linux_os/guide/services/ntp/chronyd_server_directive/tests/only_pool.fail.sh +@@ -0,0 +1,9 @@ ++#!/bin/bash ++# packages = chrony ++# platform = multi_platform_fedora,multi_platform_rhel ++# remediation = none ++ ++sed -i "^server.*" /etc/chrony.conf ++if ! grep "^pool.*" /etc/chrony.conf; then ++ echo "pool 0.pool.ntp.org" > /etc/chrony.conf ++fi +diff --git a/linux_os/guide/services/ntp/chronyd_server_directive/tests/only_server.pass.sh b/linux_os/guide/services/ntp/chronyd_server_directive/tests/only_server.pass.sh +new file mode 100644 +index 00000000000..21a70dc4900 +--- /dev/null ++++ b/linux_os/guide/services/ntp/chronyd_server_directive/tests/only_server.pass.sh +@@ -0,0 +1,6 @@ ++#!/bin/bash ++# packages = chrony ++# platform = multi_platform_fedora,multi_platform_rhel ++ ++sed -i "^pool.*" /etc/chrony.conf ++echo "server 0.pool.ntp.org" > /etc/chrony.conf +diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile +index 36f606ee461..2bd1fb54316 100644 +--- a/products/rhel8/profiles/stig.profile ++++ b/products/rhel8/profiles/stig.profile +@@ -909,6 +909,7 @@ selections: + # RHEL-08-030740 + # remediation fails because default configuration file contains pool instead of server keyword + - chronyd_or_ntpd_set_maxpoll ++ - chronyd_server_directive + + # RHEL-08-030741 + - chronyd_client_only +diff --git a/products/rhel9/profiles/stig.profile b/products/rhel9/profiles/stig.profile +index 374932cfd32..0d4d7b0ff97 100644 +--- a/products/rhel9/profiles/stig.profile ++++ b/products/rhel9/profiles/stig.profile +@@ -909,6 +909,7 @@ selections: + # RHEL-08-030740 + # remediation fails because default configuration file contains pool instead of server keyword + - chronyd_or_ntpd_set_maxpoll ++ - chronyd_server_directive + + # RHEL-08-030741 + - chronyd_client_only +diff --git a/shared/references/cce-redhat-avail.txt b/shared/references/cce-redhat-avail.txt +index 8c59c5d3201..0081fe1938f 100644 +--- a/shared/references/cce-redhat-avail.txt ++++ b/shared/references/cce-redhat-avail.txt +@@ -152,7 +152,6 @@ CCE-86073-4 + CCE-86074-2 + CCE-86075-9 + CCE-86076-7 +-CCE-86077-5 + CCE-86078-3 + CCE-86079-1 + CCE-86080-9 +@@ -1079,7 +1078,6 @@ CCE-87073-3 + CCE-87074-1 + CCE-87075-8 + CCE-87076-6 +-CCE-87077-4 + CCE-87078-2 + CCE-87079-0 + CCE-87080-8 +diff --git a/tests/data/profile_stability/rhel8/stig.profile b/tests/data/profile_stability/rhel8/stig.profile +index 5b06103d72e..7d44f8910d1 100644 +--- a/tests/data/profile_stability/rhel8/stig.profile ++++ b/tests/data/profile_stability/rhel8/stig.profile +@@ -160,6 +160,7 @@ selections: + - chronyd_client_only + - chronyd_no_chronyc_network + - chronyd_or_ntpd_set_maxpoll ++- chronyd_server_directive + - clean_components_post_updating + - configure_bashrc_exec_tmux + - configure_bind_crypto_policy +diff --git a/tests/data/profile_stability/rhel8/stig_gui.profile b/tests/data/profile_stability/rhel8/stig_gui.profile +index 11e0ee9515a..91546d1d418 100644 +--- a/tests/data/profile_stability/rhel8/stig_gui.profile ++++ b/tests/data/profile_stability/rhel8/stig_gui.profile +@@ -171,6 +171,7 @@ selections: + - chronyd_client_only + - chronyd_no_chronyc_network + - chronyd_or_ntpd_set_maxpoll ++- chronyd_server_directive + - clean_components_post_updating + - configure_bashrc_exec_tmux + - configure_bind_crypto_policy diff --git a/SOURCES/scap-security-guide-0.1.61-delta_tailoring_fix-PR_8262.patch b/SOURCES/scap-security-guide-0.1.61-delta_tailoring_fix-PR_8262.patch new file mode 100644 index 0000000..3b0e18d --- /dev/null +++ b/SOURCES/scap-security-guide-0.1.61-delta_tailoring_fix-PR_8262.patch @@ -0,0 +1,50 @@ +From cd544b1ceec3cfc799faf24fc83e99f950d1c9c9 Mon Sep 17 00:00:00 2001 +From: Matthew Burket +Date: Wed, 23 Feb 2022 12:21:17 -0600 +Subject: [PATCH] Ensure that get_implemented_stigs in + utils/create_scap_delta_tailoring.py works for all case + +Before this commit using resolved_rules_dir would deselect all rules +--- + utils/create_scap_delta_tailoring.py | 22 ++++++++++------------ + 1 file changed, 10 insertions(+), 12 deletions(-) + +diff --git a/utils/create_scap_delta_tailoring.py b/utils/create_scap_delta_tailoring.py +index 90e131cd01a..b1a44858a0f 100755 +--- a/utils/create_scap_delta_tailoring.py ++++ b/utils/create_scap_delta_tailoring.py +@@ -103,24 +103,22 @@ def get_implemented_stigs(product, root_path, build_config_yaml_path, + build_root): + platform_rules = get_platform_rules(product, json_path, resolved_rules_dir, build_root) + +- if resolved_rules_dir: +- platform_rules_dict = dict() +- for rule in platform_rules: +- platform_rules_dict[rule['id']] = rule +- return platform_rules_dict + product_dir = os.path.join(root_path, "products", product) + product_yaml_path = os.path.join(product_dir, "product.yml") + env_yaml = ssg.environment.open_environment(build_config_yaml_path, str(product_yaml_path)) + + known_rules = dict() + for rule in platform_rules: +- try: +- rule_obj = handle_rule_yaml(product, rule['id'], +- rule['dir'], rule['guide'], env_yaml) +- except ssg.yaml.DocumentationNotComplete: +- sys.stderr.write('Rule %s throw DocumentationNotComplete' % rule['id']) +- # Happens on non-debug build when a rule is "documentation-incomplete" +- continue ++ if resolved_rules_dir: ++ rule_obj = rule ++ else: ++ try: ++ rule_obj = handle_rule_yaml(product, rule['id'], ++ rule['dir'], rule['guide'], env_yaml) ++ except ssg.yaml.DocumentationNotComplete: ++ sys.stderr.write('Rule %s throw DocumentationNotComplete' % rule['id']) ++ # Happens on non-debug build when a rule is "documentation-incomplete" ++ continue + + if reference_str in rule_obj['references'].keys(): + ref = rule_obj['references'][reference_str] diff --git a/SOURCES/scap-security-guide-0.1.61-dont-remove-krb5-workstation-on-ovirt-PR_8233.patch b/SOURCES/scap-security-guide-0.1.61-dont-remove-krb5-workstation-on-ovirt-PR_8233.patch new file mode 100644 index 0000000..588fa8e --- /dev/null +++ b/SOURCES/scap-security-guide-0.1.61-dont-remove-krb5-workstation-on-ovirt-PR_8233.patch @@ -0,0 +1,26 @@ +From 9c57a8718f82458fe3784263fdb1e51bd08fff83 Mon Sep 17 00:00:00 2001 +From: Watson Sato +Date: Wed, 16 Feb 2022 12:46:21 +0100 +Subject: [PATCH] Do not remove krb5-workstation package on oVirt + +--- + .../system-tools/package_krb5-workstation_removed/rule.yml | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/linux_os/guide/system/software/system-tools/package_krb5-workstation_removed/rule.yml b/linux_os/guide/system/software/system-tools/package_krb5-workstation_removed/rule.yml +index 4d8951a9148..813474842ec 100644 +--- a/linux_os/guide/system/software/system-tools/package_krb5-workstation_removed/rule.yml ++++ b/linux_os/guide/system/software/system-tools/package_krb5-workstation_removed/rule.yml +@@ -27,6 +27,12 @@ references: + stigid@ol8: OL08-00-010162 + stigid@rhel8: RHEL-08-010162 + ++platforms: ++{{{ rule_notapplicable_when_ovirt_installed() | indent(4)}}} ++ ++warnings: ++{{{ ovirt_rule_notapplicable_warning("RHV hosts require ipa-client package, which has dependency on krb5-workstation") | indent(4) }}} ++ + {{{ complete_ocil_entry_package(package="krb5-workstation") }}} + + template: diff --git a/SOURCES/scap-security-guide-0.1.61-file_groupowner-PR_7791.patch b/SOURCES/scap-security-guide-0.1.61-file_groupowner-PR_7791.patch index 0e44dc0..a959133 100644 --- a/SOURCES/scap-security-guide-0.1.61-file_groupowner-PR_7791.patch +++ b/SOURCES/scap-security-guide-0.1.61-file_groupowner-PR_7791.patch @@ -1,12 +1,6 @@ -commit 3cd2b8efbf9d91967e3e65bd2029f7ab3d400314 -Author: Gabriel Becker -Date: Thu Feb 24 18:22:28 2022 +0100 - - Manual edited patch scap-security-guide-0.1.61-file_groupowner-PR_7791.patch. - diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/file_groupownership_audit_configuration/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/file_groupownership_audit_configuration/rule.yml new file mode 100644 -index 0000000..de85c89 +index 00000000000..de85c892704 --- /dev/null +++ b/linux_os/guide/system/auditing/auditd_configure_rules/file_groupownership_audit_configuration/rule.yml @@ -0,0 +1,38 @@ @@ -50,7 +44,7 @@ index 0000000..de85c89 + filegid: '0' diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/file_groupownership_audit_configuration/tests/correct_groupowner.pass.sh b/linux_os/guide/system/auditing/auditd_configure_rules/file_groupownership_audit_configuration/tests/correct_groupowner.pass.sh new file mode 100644 -index 0000000..5235e0d +index 00000000000..5235e0d05a3 --- /dev/null +++ b/linux_os/guide/system/auditing/auditd_configure_rules/file_groupownership_audit_configuration/tests/correct_groupowner.pass.sh @@ -0,0 +1,9 @@ @@ -65,7 +59,7 @@ index 0000000..5235e0d +chgrp root $AUDITFILE diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/file_groupownership_audit_configuration/tests/incorrect_groupowner.fail.sh b/linux_os/guide/system/auditing/auditd_configure_rules/file_groupownership_audit_configuration/tests/incorrect_groupowner.fail.sh new file mode 100644 -index 0000000..52378d8 +index 00000000000..52378d810a5 --- /dev/null +++ b/linux_os/guide/system/auditing/auditd_configure_rules/file_groupownership_audit_configuration/tests/incorrect_groupowner.fail.sh @@ -0,0 +1,10 @@ @@ -80,7 +74,7 @@ index 0000000..52378d8 +chgrp group_test $TESTFILLE +chgrp group_test $AUDITFILE diff --git a/linux_os/guide/system/permissions/files/permissions_var_log_dir/file_groupowner_var_log/rule.yml b/linux_os/guide/system/permissions/files/permissions_var_log_dir/file_groupowner_var_log/rule.yml -index 5ddaf9f..b99705d 100644 +index 5e2cabafc34..927d08d03d4 100644 --- a/linux_os/guide/system/permissions/files/permissions_var_log_dir/file_groupowner_var_log/rule.yml +++ b/linux_os/guide/system/permissions/files/permissions_var_log_dir/file_groupowner_var_log/rule.yml @@ -1,8 +1,15 @@ @@ -100,7 +94,7 @@ index 5ddaf9f..b99705d 100644 rationale: |- The /var/log directory contains files with logs of error -@@ -21,13 +28,16 @@ references: +@@ -22,13 +29,16 @@ references: stigid@rhel8: RHEL-08-010260 stigid@ubuntu2004: UBTU-20-010417 @@ -121,7 +115,7 @@ index 5ddaf9f..b99705d 100644 + filegid@ubuntu2004: '110' diff --git a/linux_os/guide/system/permissions/files/permissions_var_log_dir/file_groupowner_var_log_syslog/rule.yml b/linux_os/guide/system/permissions/files/permissions_var_log_dir/file_groupowner_var_log_syslog/rule.yml new file mode 100644 -index 0000000..f654279 +index 00000000000..f654279fe54 --- /dev/null +++ b/linux_os/guide/system/permissions/files/permissions_var_log_dir/file_groupowner_var_log_syslog/rule.yml @@ -0,0 +1,27 @@ @@ -154,7 +148,7 @@ index 0000000..f654279 + filegid: '4' diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_groupownership_binary_dirs/rule.yml b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_groupownership_binary_dirs/rule.yml new file mode 100644 -index 0000000..655b2cd +index 00000000000..655b2cd1aef --- /dev/null +++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_groupownership_binary_dirs/rule.yml @@ -0,0 +1,65 @@ @@ -225,7 +219,7 @@ index 0000000..655b2cd + filegid: '0' diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_ownership_library_dirs/ansible/shared.yml b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_ownership_library_dirs/ansible/shared.yml deleted file mode 100644 -index 28df783..0000000 +index 28df7839430..00000000000 --- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_ownership_library_dirs/ansible/shared.yml +++ /dev/null @@ -1,23 +0,0 @@ @@ -254,7 +248,7 @@ index 28df783..0000000 - when: library_dirs_not_owned_by_root.matched > 0 diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_groupownership_audit_binaries/rule.yml b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_groupownership_audit_binaries/rule.yml new file mode 100644 -index 0000000..f61a5f9 +index 00000000000..f61a5f988dc --- /dev/null +++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_groupownership_audit_binaries/rule.yml @@ -0,0 +1,77 @@ @@ -336,17 +330,17 @@ index 0000000..f61a5f9 + - /sbin/augenrules + filegid: '0' diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_groupownership_system_commands_dirs/bash/shared.sh b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_groupownership_system_commands_dirs/bash/shared.sh -index 5598e47..a9e8c7d 100644 +index bb7c72550e9..a9e8c7d8e25 100644 --- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_groupownership_system_commands_dirs/bash/shared.sh +++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_groupownership_system_commands_dirs/bash/shared.sh @@ -1,4 +1,4 @@ --# platform = multi_platform_sle,Red Hat Enterprise Linux 8,multi_platform_fedora +-# platform = multi_platform_sle,Oracle Linux 8,Red Hat Enterprise Linux 8,multi_platform_fedora +# platform = multi_platform_sle,Oracle Linux 8,Red Hat Enterprise Linux 8,multi_platform_fedora,multi_platform_ubuntu for SYSCMDFILES in /bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin do diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_groupownership_system_commands_dirs/tests/incorrect_groupownership.fail.sh b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_groupownership_system_commands_dirs/tests/incorrect_groupownership.fail.sh -index 7cf507c..33a0c85 100644 +index 7cf507ca5f4..33a0c85d35b 100644 --- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_groupownership_system_commands_dirs/tests/incorrect_groupownership.fail.sh +++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_groupownership_system_commands_dirs/tests/incorrect_groupownership.fail.sh @@ -1,10 +1,12 @@ @@ -363,9 +357,54 @@ index 7cf507c..33a0c85 100644 - chown nobody.nobody $TESTFILE + chgrp group_test $TESTFILE done +diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/ansible/shared.yml b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/ansible/shared.yml +deleted file mode 100644 +index 08019fd48bb..00000000000 +--- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/ansible/shared.yml ++++ /dev/null +@@ -1,26 +0,0 @@ +-# platform = multi_platform_sle,Oracle Linux 8,Red Hat Enterprise Linux 8,multi_platform_fedora +-# reboot = false +-# strategy = restrict +-# complexity = high +-# disruption = medium +- +-- name: "Read list libraries without root ownership" +- find: +- paths: +- - "/usr/lib" +- - "/usr/lib64" +- - "/lib" +- - "/lib64" +- file_type: "file" +- register: library_files_not_group_owned_by_root +- +-- name: "Set group ownership of system library files to root" +- file: +- path: "{{ item.path }}" +- group: "root" +- state: "file" +- mode: "{{ item.mode }}" +- with_items: "{{ library_files_not_group_owned_by_root.files }}" +- when: +- - library_files_not_group_owned_by_root.matched > 0 +- - item.gid != 0 +diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/bash/shared.sh b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/bash/shared.sh +deleted file mode 100644 +index 3a42beafb8a..00000000000 +--- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/bash/shared.sh ++++ /dev/null +@@ -1,7 +0,0 @@ +-# platform = multi_platform_sle,Oracle Linux 8,Red Hat Enterprise Linux 8,multi_platform_fedora +- +-find /lib \ +-/lib64 \ +-/usr/lib \ +-/usr/lib64 \ +-\! -group root -type f -exec chgrp root '{}' \; diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/oval/shared.xml b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/oval/shared.xml deleted file mode 100644 -index f5ca938..0000000 +index f5ca9380b55..00000000000 --- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/oval/shared.xml +++ /dev/null @@ -1,27 +0,0 @@ @@ -397,18 +436,18 @@ index f5ca938..0000000 - - diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/rule.yml b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/rule.yml -index 83371b8..3b983de 100644 +index 17923f52ea6..eaf04c8d36c 100644 --- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/rule.yml +++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/rule.yml @@ -1,6 +1,6 @@ documentation_complete: true --prodtype: sle12,sle15,rhel8,fedora +-prodtype: fedora,ol8,rhel8,rhel9,sle12,sle15 +prodtype: fedora,ol8,rhel8,rhel9,sle12,sle15,ubuntu2004 title: |- Verify the system-wide library files in directories -@@ -44,6 +44,7 @@ references: +@@ -46,6 +46,7 @@ references: stigid@rhel8: RHEL-08-010350 stigid@sle12: SLES-12-010875 stigid@sle15: SLES-15-010355 @@ -416,7 +455,7 @@ index 83371b8..3b983de 100644 ocil_clause: 'system wide library files are not group owned by root' -@@ -57,3 +58,14 @@ ocil: |- +@@ -59,3 +60,14 @@ ocil: |- To find if system-wide library files stored in these directories are not group-owned by root run the following command for each directory DIR:
      $ sudo find -L DIR ! -group root -type f 
      @@ -431,35 +470,26 @@ index 83371b8..3b983de 100644 + - /usr/lib64/ + file_regex: ^.*$ + filegid: '0' -diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/correct_group.pass.sh b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/correct_group.pass.sh -index a4ae285..0e982c3 100644 +diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/correct_group.pass.sh b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/correct_groupowner.pass.sh +similarity index 86% +rename from linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/correct_group.pass.sh +rename to linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/correct_groupowner.pass.sh +index a4ae2854db1..0e982c3b8ca 100644 --- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/correct_group.pass.sh -+++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/correct_group.pass.sh ++++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/correct_groupowner.pass.sh @@ -1,4 +1,4 @@ -# platform = multi_platform_sle,Red Hat Enterprise Linux 8,multi_platform_fedora +# platform = multi_platform_sle,Red Hat Enterprise Linux 8,multi_platform_fedora,multi_platform_ubuntu for SYSLIBDIRS in /lib /lib64 /usr/lib /usr/lib64 do -diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/correct_groupowner.pass.sh b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/correct_groupowner.pass.sh -new file mode 100644 -index 0000000..a4ae285 ---- /dev/null -+++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/correct_groupowner.pass.sh -@@ -0,0 +1,9 @@ -+# platform = multi_platform_sle,Red Hat Enterprise Linux 8,multi_platform_fedora -+ -+for SYSLIBDIRS in /lib /lib64 /usr/lib /usr/lib64 -+do -+ if [[ -d $SYSLIBDIRS ]] -+ then -+ find $SYSLIBDIRS ! -group root -type f -exec chgrp root '{}' \; -+ fi -+done -diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/incorrect_group.fail.sh b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/incorrect_group.fail.sh -index c96f65b..23a7703 100644 +diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/incorrect_group.fail.sh b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/incorrect_groupowner.fail.sh +similarity index 70% +rename from linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/incorrect_group.fail.sh +rename to linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/incorrect_groupowner.fail.sh +index c96f65b989c..23a7703f57d 100644 --- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/incorrect_group.fail.sh -+++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/incorrect_group.fail.sh ++++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/incorrect_groupowner.fail.sh @@ -1,10 +1,11 @@ -# platform = multi_platform_sle,Red Hat Enterprise Linux 8,multi_platform_fedora +# platform = multi_platform_sle,Red Hat Enterprise Linux 8,multi_platform_fedora,multi_platform_ubuntu @@ -474,19 +504,33 @@ index c96f65b..23a7703 100644 - chown nobody.nobody $TESTFILE + chgrp group_test $TESTFILE done -diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/incorrect_groupowner.fail.sh b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/incorrect_groupowner.fail.sh -new file mode 100644 -index 0000000..c96f65b ---- /dev/null -+++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/incorrect_groupowner.fail.sh -@@ -0,0 +1,10 @@ -+# platform = multi_platform_sle,Red Hat Enterprise Linux 8,multi_platform_fedora -+ -+for TESTFILE in /lib/test_me /lib64/test_me /usr/lib/test_me /usr/lib64/test_me -+do -+ if [[ ! -f $TESTFILE ]] -+ then -+ touch $TESTFILE -+ fi -+ chown nobody.nobody $TESTFILE -+done +diff --git a/shared/templates/file_groupowner/tests/missing_file_test.pass.sh b/shared/templates/file_groupowner/tests/missing_file_test.pass.sh +index 938e6b30819..015ff98c99d 100644 +--- a/shared/templates/file_groupowner/tests/missing_file_test.pass.sh ++++ b/shared/templates/file_groupowner/tests/missing_file_test.pass.sh +@@ -1,8 +1,20 @@ + #!/bin/bash + # + +-{{% if MISSING_FILE_PASS %}} +- rm -f {{{ FILEPATH }}} +-{{% else %}} +- true +-{{% endif %}} ++{{% for path in FILEPATH %}} ++ {{% if MISSING_FILE_PASS %}} ++ rm -f {{{ path }}} ++ {{% else %}} ++ {{% if IS_DIRECTORY and FILE_REGEX %}} ++ echo "Create specific tests for this rule because of regex" ++ {{% elif IS_DIRECTORY and RECURSIVE %}} ++ find -L {{{ path }}} -type d -exec chgrp {{{ FILEGID }}} {} \; ++ {{% else %}} ++ if [ ! -f {{{ path }}} ]; then ++ mkdir -p "$(dirname '{{{ path }}}')" ++ touch {{{ path }}} ++ fi ++ chgrp {{{ FILEGID }}} {{{ path }}} ++ {{% endif %}} ++ {{% endif %}} ++{{% endfor %}} diff --git a/SOURCES/scap-security-guide-0.1.61-file_owner-PR_7789.patch b/SOURCES/scap-security-guide-0.1.61-file_owner-PR_7789.patch index 3dd4f70..ab14309 100644 --- a/SOURCES/scap-security-guide-0.1.61-file_owner-PR_7789.patch +++ b/SOURCES/scap-security-guide-0.1.61-file_owner-PR_7789.patch @@ -1,12 +1,6 @@ -commit 74bab352f4bb5b52beaf70c6f23f60d4af4f9518 -Author: Gabriel Becker -Date: Thu Feb 24 18:42:09 2022 +0100 - - Manual edited scap-security-guide-0.1.61-file_owner-PR_7789.patch. - diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/file_ownership_audit_configuration/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/file_ownership_audit_configuration/rule.yml new file mode 100644 -index 0000000..968ef33 +index 00000000000..968ef336148 --- /dev/null +++ b/linux_os/guide/system/auditing/auditd_configure_rules/file_ownership_audit_configuration/rule.yml @@ -0,0 +1,39 @@ @@ -51,7 +45,7 @@ index 0000000..968ef33 + fileuid: '0' diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/file_ownership_audit_configuration/tests/correct_owner.pass.sh b/linux_os/guide/system/auditing/auditd_configure_rules/file_ownership_audit_configuration/tests/correct_owner.pass.sh new file mode 100644 -index 0000000..4d67307 +index 00000000000..4d67307a1ef --- /dev/null +++ b/linux_os/guide/system/auditing/auditd_configure_rules/file_ownership_audit_configuration/tests/correct_owner.pass.sh @@ -0,0 +1,6 @@ @@ -63,7 +57,7 @@ index 0000000..4d67307 +chown 0 -R /etc/audit/rules.d/ diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/file_ownership_audit_configuration/tests/incorrect_owner.fail.sh b/linux_os/guide/system/auditing/auditd_configure_rules/file_ownership_audit_configuration/tests/incorrect_owner.fail.sh new file mode 100644 -index 0000000..337074f +index 00000000000..337074fab92 --- /dev/null +++ b/linux_os/guide/system/auditing/auditd_configure_rules/file_ownership_audit_configuration/tests/incorrect_owner.fail.sh @@ -0,0 +1,7 @@ @@ -76,7 +70,7 @@ index 0000000..337074f +chown testuser_123 -R /etc/audit/rules.d/ diff --git a/linux_os/guide/system/permissions/files/permissions_var_log_dir/file_owner_var_log_syslog/rule.yml b/linux_os/guide/system/permissions/files/permissions_var_log_dir/file_owner_var_log_syslog/rule.yml new file mode 100644 -index 0000000..f1bf515 +index 00000000000..f1bf515455d --- /dev/null +++ b/linux_os/guide/system/permissions/files/permissions_var_log_dir/file_owner_var_log_syslog/rule.yml @@ -0,0 +1,27 @@ @@ -109,7 +103,7 @@ index 0000000..f1bf515 + fileuid: '104' diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_ownership_binary_dirs/rule.yml b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_ownership_binary_dirs/rule.yml new file mode 100644 -index 0000000..e236238 +index 00000000000..e2362388678 --- /dev/null +++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_ownership_binary_dirs/rule.yml @@ -0,0 +1,55 @@ @@ -170,7 +164,7 @@ index 0000000..e236238 + fileuid: '0' diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_ownership_audit_binaries/rule.yml b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_ownership_audit_binaries/rule.yml new file mode 100644 -index 0000000..0c7d9b3 +index 00000000000..0c7d9b313d5 --- /dev/null +++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_ownership_audit_binaries/rule.yml @@ -0,0 +1,77 @@ @@ -251,20 +245,8 @@ index 0000000..0c7d9b3 + - /sbin/audispd + - /sbin/augenrules + fileuid: '0' -diff --git a/products/ubuntu2004/profiles/stig.profile b/products/ubuntu2004/profiles/stig.profile -index 4c76824..487de82 100644 ---- a/products/ubuntu2004/profiles/stig.profile -+++ b/products/ubuntu2004/profiles/stig.profile -@@ -452,6 +452,7 @@ selections: - # UBTU-20-010423 The Ubuntu operating system must have directories that contain system commands set to a mode of 0755 or less permissive. - - # UBTU-20-010424 The Ubuntu operating system must have directories that contain system commands owned by root. -+ - dir_ownership_binary_dirs - - # UBTU-20-010425 The Ubuntu operating system must have directories that contain system commands group-owned by root. - diff --git a/shared/templates/file_owner/ansible.template b/shared/templates/file_owner/ansible.template -index 80eaae8..590c9fc 100644 +index 80eaae8d50b..590c9fc6055 100644 --- a/shared/templates/file_owner/ansible.template +++ b/shared/templates/file_owner/ansible.template @@ -25,7 +25,7 @@ @@ -276,3 +258,31 @@ index 80eaae8..590c9fc 100644 state: directory recurse: yes owner: "{{{ FILEUID }}}" +diff --git a/shared/templates/file_owner/tests/missing_file_test.pass.sh b/shared/templates/file_owner/tests/missing_file_test.pass.sh +index 938e6b30819..4e3683f9dcf 100644 +--- a/shared/templates/file_owner/tests/missing_file_test.pass.sh ++++ b/shared/templates/file_owner/tests/missing_file_test.pass.sh +@@ -1,8 +1,18 @@ + #!/bin/bash + # + +-{{% if MISSING_FILE_PASS %}} +- rm -f {{{ FILEPATH }}} +-{{% else %}} +- true +-{{% endif %}} ++{{% for path in FILEPATH %}} ++ {{% if MISSING_FILE_PASS %}} ++ rm -f {{{ path }}} ++ {{% else %}} ++ {{% if IS_DIRECTORY and RECURSIVE %}} ++ find -L {{{ path }}} -type d -exec chown {{{ FILEUID }}} {} \; ++ {{% else %}} ++ if [ ! -f {{{ path }}} ]; then ++ mkdir -p "$(dirname '{{{ path }}}')" ++ touch {{{ path }}} ++ fi ++ chown {{{ FILEUID }}} {{{ path }}} ++ {{% endif %}} ++ {{% endif %}} ++{{% endfor %}} diff --git a/SOURCES/scap-security-guide-0.1.61-file_permissions-PR_7788.patch b/SOURCES/scap-security-guide-0.1.61-file_permissions-PR_7788.patch index 14d5b86..5bc9aad 100644 --- a/SOURCES/scap-security-guide-0.1.61-file_permissions-PR_7788.patch +++ b/SOURCES/scap-security-guide-0.1.61-file_permissions-PR_7788.patch @@ -1,12 +1,6 @@ -commit b56ce1b9070236c1f44e936548d9ff44b2ebe8a3 -Author: Gabriel Becker -Date: Thu Feb 24 18:44:02 2022 +0100 - - Manual edited patch scap-security-guide-0.1.61-file_permissions-PR_7788.patch. - diff --git a/linux_os/guide/system/permissions/files/permissions_local_var_log/bash/ubuntu.sh b/linux_os/guide/system/permissions/files/permissions_local_var_log/bash/ubuntu.sh new file mode 100644 -index 0000000..93fd73e +index 00000000000..93fd73e6ece --- /dev/null +++ b/linux_os/guide/system/permissions/files/permissions_local_var_log/bash/ubuntu.sh @@ -0,0 +1,14 @@ @@ -26,7 +20,7 @@ index 0000000..93fd73e +fi diff --git a/linux_os/guide/system/permissions/files/permissions_local_var_log/oval/shared.xml b/linux_os/guide/system/permissions/files/permissions_local_var_log/oval/shared.xml deleted file mode 100644 -index dd95ce0..0000000 +index dd95ce05936..00000000000 --- a/linux_os/guide/system/permissions/files/permissions_local_var_log/oval/shared.xml +++ /dev/null @@ -1,36 +0,0 @@ @@ -67,10 +61,10 @@ index dd95ce0..0000000 - - diff --git a/linux_os/guide/system/permissions/files/permissions_local_var_log/rule.yml b/linux_os/guide/system/permissions/files/permissions_local_var_log/rule.yml -index 1939531..bd7e984 100644 +index 2b0431b7763..9ce79cfde4e 100644 --- a/linux_os/guide/system/permissions/files/permissions_local_var_log/rule.yml +++ b/linux_os/guide/system/permissions/files/permissions_local_var_log/rule.yml -@@ -46,3 +46,10 @@ ocil: |- +@@ -47,3 +47,10 @@ ocil: |-
            sudo find /var/log -perm /137 -type f -exec stat -c "%n %a" {} \;
            
      @@ -82,7 +76,7 @@ index 1939531..bd7e984 100644 + file_regex: '.*' + filemode: '0640' diff --git a/linux_os/guide/system/permissions/files/permissions_local_var_log/tests/var_logfile_correct_mode.pass.sh b/linux_os/guide/system/permissions/files/permissions_local_var_log/tests/var_logfile_correct_mode.pass.sh -index 5317ef2..1793259 100644 +index 5317ef272b8..1793259cff5 100644 --- a/linux_os/guide/system/permissions/files/permissions_local_var_log/tests/var_logfile_correct_mode.pass.sh +++ b/linux_os/guide/system/permissions/files/permissions_local_var_log/tests/var_logfile_correct_mode.pass.sh @@ -1,5 +1,6 @@ @@ -93,7 +87,7 @@ index 5317ef2..1793259 100644 touch /var/log/testme/test.log chmod 640 /var/log/testme/test.log diff --git a/linux_os/guide/system/permissions/files/permissions_local_var_log/tests/world_writable_dir.pass.sh b/linux_os/guide/system/permissions/files/permissions_local_var_log/tests/world_writable_dir.pass.sh -index 83db1ac..69b0814 100644 +index 83db1acf8d3..69b081473a5 100644 --- a/linux_os/guide/system/permissions/files/permissions_local_var_log/tests/world_writable_dir.pass.sh +++ b/linux_os/guide/system/permissions/files/permissions_local_var_log/tests/world_writable_dir.pass.sh @@ -1,4 +1,5 @@ @@ -104,7 +98,7 @@ index 83db1ac..69b0814 100644 chmod 777 /var/log/testme diff --git a/linux_os/guide/system/permissions/files/permissions_var_log_dir/file_permissions_var_log/bash/ubuntu.sh b/linux_os/guide/system/permissions/files/permissions_var_log_dir/file_permissions_var_log/bash/ubuntu.sh new file mode 100644 -index 0000000..93962ea +index 00000000000..93962ea66a7 --- /dev/null +++ b/linux_os/guide/system/permissions/files/permissions_var_log_dir/file_permissions_var_log/bash/ubuntu.sh @@ -0,0 +1,7 @@ @@ -117,7 +111,7 @@ index 0000000..93962ea +fi diff --git a/linux_os/guide/system/permissions/files/permissions_var_log_dir/file_permissions_var_log_syslog/rule.yml b/linux_os/guide/system/permissions/files/permissions_var_log_dir/file_permissions_var_log_syslog/rule.yml new file mode 100644 -index 0000000..73258d4 +index 00000000000..73258d40fdc --- /dev/null +++ b/linux_os/guide/system/permissions/files/permissions_var_log_dir/file_permissions_var_log_syslog/rule.yml @@ -0,0 +1,28 @@ @@ -151,7 +145,7 @@ index 0000000..73258d4 + filemode: '0640' diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_permissions_binary_dirs/rule.yml b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_permissions_binary_dirs/rule.yml new file mode 100644 -index 0000000..a666c76 +index 00000000000..a666c768870 --- /dev/null +++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_permissions_binary_dirs/rule.yml @@ -0,0 +1,57 @@ @@ -213,7 +207,7 @@ index 0000000..a666c76 + recursive: 'true' + filemode: '0755' diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_permissions_library_dirs/tests/all_dirs_ok.pass.sh b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_permissions_library_dirs/tests/all_dirs_ok.pass.sh -index 3f7239d..af07846 100644 +index 3f7239deef9..af078463b05 100644 --- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_permissions_library_dirs/tests/all_dirs_ok.pass.sh +++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_permissions_library_dirs/tests/all_dirs_ok.pass.sh @@ -1,4 +1,4 @@ @@ -223,7 +217,7 @@ index 3f7239d..af07846 100644 for dirPath in $DIRS; do find "$dirPath" -perm /022 -type d -exec chmod go-w '{}' \; diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_permissions_library_dirs/tests/owner_only_writable_dir.pass.sh b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_permissions_library_dirs/tests/owner_only_writable_dir.pass.sh -index 1f68586..d58616b 100644 +index 1f68586853d..d58616bcafb 100644 --- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_permissions_library_dirs/tests/owner_only_writable_dir.pass.sh +++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_permissions_library_dirs/tests/owner_only_writable_dir.pass.sh @@ -1,5 +1,6 @@ @@ -235,7 +229,7 @@ index 1f68586..d58616b 100644 mkdir -p "$dirPath/testme" && chmod 700 "$dirPath/testme" done diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_permissions_library_dirs/tests/world_writable_dir_on_lib.fail.sh b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_permissions_library_dirs/tests/world_writable_dir_on_lib.fail.sh -index b60a726..98d18cd 100644 +index b60a7269568..98d18cde3ea 100644 --- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_permissions_library_dirs/tests/world_writable_dir_on_lib.fail.sh +++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_permissions_library_dirs/tests/world_writable_dir_on_lib.fail.sh @@ -1,4 +1,4 @@ @@ -245,7 +239,7 @@ index b60a726..98d18cd 100644 for dirPath in $DIRS; do mkdir -p "$dirPath/testme" && chmod 777 "$dirPath/testme" diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_permissions_library_dirs/tests/world_writable_dir_on_usr_lib.fail.sh b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_permissions_library_dirs/tests/world_writable_dir_on_usr_lib.fail.sh -index 5438b51..6df6e2f 100644 +index 5438b51bb6a..6df6e2f8f9b 100644 --- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_permissions_library_dirs/tests/world_writable_dir_on_usr_lib.fail.sh +++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_permissions_library_dirs/tests/world_writable_dir_on_usr_lib.fail.sh @@ -1,4 +1,4 @@ @@ -256,7 +250,7 @@ index 5438b51..6df6e2f 100644 mkdir -p "$dirPath/testme" && chmod 777 "$dirPath/testme" diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_permissions_audit_binaries/rule.yml b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_permissions_audit_binaries/rule.yml new file mode 100644 -index 0000000..da42e99 +index 00000000000..da42e997478 --- /dev/null +++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_permissions_audit_binaries/rule.yml @@ -0,0 +1,78 @@ @@ -339,18 +333,18 @@ index 0000000..da42e99 + - /sbin/augenrules + filemode: '0755' diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_permissions_binary_dirs/bash/shared.sh b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_permissions_binary_dirs/bash/shared.sh -index 5d95c98..ab89b27 100644 +index de2e1e98dfa..ab89b277a52 100644 --- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_permissions_binary_dirs/bash/shared.sh +++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_permissions_binary_dirs/bash/shared.sh @@ -1,4 +1,4 @@ --# platform = Red Hat Virtualization 4,multi_platform_rhel,multi_platform_ol +-# platform = Red Hat Virtualization 4,multi_platform_rhel,multi_platform_ol,multi_platform_sle +# platform = Red Hat Virtualization 4,multi_platform_rhel,multi_platform_ol,multi_platform_sle,multi_platform_ubuntu DIRS="/bin /usr/bin /usr/local/bin /sbin /usr/sbin /usr/local/sbin /usr/libexec" for dirPath in $DIRS; do find "$dirPath" -perm /022 -exec chmod go-w '{}' \; diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_permissions_binary_dirs/tests/correct_permissions.pass.sh b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_permissions_binary_dirs/tests/correct_permissions.pass.sh new file mode 100644 -index 0000000..59b8838 +index 00000000000..59b8838581c --- /dev/null +++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_permissions_binary_dirs/tests/correct_permissions.pass.sh @@ -0,0 +1,6 @@ @@ -362,7 +356,7 @@ index 0000000..59b8838 +done diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_permissions_binary_dirs/tests/incorrect_permissions.fail.sh b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_permissions_binary_dirs/tests/incorrect_permissions.fail.sh new file mode 100644 -index 0000000..9d9ce30 +index 00000000000..9d9ce30064b --- /dev/null +++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_permissions_binary_dirs/tests/incorrect_permissions.fail.sh @@ -0,0 +1,6 @@ @@ -374,7 +368,7 @@ index 0000000..9d9ce30 +done diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_permissions_library_dirs/tests/correct_permissions.pass.sh b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_permissions_library_dirs/tests/correct_permissions.pass.sh new file mode 100644 -index 0000000..de388e6 +index 00000000000..de388e63325 --- /dev/null +++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_permissions_library_dirs/tests/correct_permissions.pass.sh @@ -0,0 +1,6 @@ @@ -386,7 +380,7 @@ index 0000000..de388e6 +done diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_permissions_library_dirs/tests/incorrect_permissions.fail.sh b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_permissions_library_dirs/tests/incorrect_permissions.fail.sh new file mode 100644 -index 0000000..913e75e +index 00000000000..913e75e7b17 --- /dev/null +++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_permissions_library_dirs/tests/incorrect_permissions.fail.sh @@ -0,0 +1,7 @@ @@ -397,23 +391,8 @@ index 0000000..913e75e + find "$dirPath" -type d -exec chmod go-w '{}' \; + find "$dirPath" -type f -exec chmod go+w '{}' \; +done -diff --git a/products/ubuntu2004/profiles/stig.profile b/products/ubuntu2004/profiles/stig.profile -index 487de82..091e472 100644 ---- a/products/ubuntu2004/profiles/stig.profile -+++ b/products/ubuntu2004/profiles/stig.profile -@@ -448,8 +448,10 @@ selections: - # UBTU-20-010421 The Ubuntu operating system must configure /var/log/syslog file to be owned by syslog. - - # UBTU-20-010422 The Ubuntu operating system must configure /var/log/syslog file with mode 0640 or less permissive. -+ - file_permissions_var_log_syslog - - # UBTU-20-010423 The Ubuntu operating system must have directories that contain system commands set to a mode of 0755 or less permissive. -+ - dir_permissions_binary_dirs - - # UBTU-20-010424 The Ubuntu operating system must have directories that contain system commands owned by root. - - dir_ownership_binary_dirs diff --git a/shared/templates/file_permissions/oval.template b/shared/templates/file_permissions/oval.template -index 89083e8..6b3616a 100644 +index 89083e812c1..6b3616a7f42 100644 --- a/shared/templates/file_permissions/oval.template +++ b/shared/templates/file_permissions/oval.template @@ -67,6 +67,11 @@ diff --git a/SOURCES/scap-security-guide-0.1.61-fix-ansible-service-disabled-task-PR_8226.patch b/SOURCES/scap-security-guide-0.1.61-fix-ansible-service-disabled-task-PR_8226.patch new file mode 100644 index 0000000..7103ed1 --- /dev/null +++ b/SOURCES/scap-security-guide-0.1.61-fix-ansible-service-disabled-task-PR_8226.patch @@ -0,0 +1,44 @@ +From 1c054ed40a4dbc2a48ffe7720d018c317cad8105 Mon Sep 17 00:00:00 2001 +From: Watson Sato +Date: Tue, 15 Feb 2022 14:12:55 +0100 +Subject: [PATCH] Simply mask services that should be disabled + +At some point Ansible started to return much more services in +ansible_facts.services, including services that are not installed. +This caused the task to think that the service exists, attempt to stop +and mask the service. +But systemd module fatal errors on non existing services, although the +module ends up masking the service in question. + +The bash remediations simply mask the service, even if it is not +installed. +Let's do the same with Ansible, mask the service and ignore errors. + +One down side is that every non-existing service is reported as an +error, which is ignored. But still a fatal error. +--- + shared/templates/service_disabled/ansible.template | 5 +---- + 1 file changed, 1 insertion(+), 4 deletions(-) + +diff --git a/shared/templates/service_disabled/ansible.template b/shared/templates/service_disabled/ansible.template +index 550ed563056..254f41ac7fd 100644 +--- a/shared/templates/service_disabled/ansible.template ++++ b/shared/templates/service_disabled/ansible.template +@@ -6,16 +6,13 @@ + {{%- if init_system == "systemd" %}} + - name: Disable service {{{ SERVICENAME }}} + block: +- - name: Gather the service facts +- service_facts: +- + - name: Disable service {{{ SERVICENAME }}} + systemd: + name: "{{{ DAEMONNAME }}}.service" + enabled: "no" + state: "stopped" + masked: "yes" +- when: '"{{{ DAEMONNAME }}}.service" in ansible_facts.services' ++ ignore_errors: 'yes' + + - name: "Unit Socket Exists - {{{ DAEMONNAME }}}.socket" + command: systemctl list-unit-files {{{ DAEMONNAME }}}.socket diff --git a/SOURCES/scap-security-guide-0.1.61-fix_bug_in_delta_tailering_script-PR_8245.patch b/SOURCES/scap-security-guide-0.1.61-fix_bug_in_delta_tailering_script-PR_8245.patch new file mode 100644 index 0000000..a1eb387 --- /dev/null +++ b/SOURCES/scap-security-guide-0.1.61-fix_bug_in_delta_tailering_script-PR_8245.patch @@ -0,0 +1,22 @@ +From 50eb163d9e9751c2e8cf8129523a8cf7e07a5930 Mon Sep 17 00:00:00 2001 +From: Matthew Burket +Date: Thu, 17 Feb 2022 12:49:32 -0600 +Subject: [PATCH] get_implemented_stigs in utils/create_scap_delta_tailoring.py + should return the implemented stig items + +--- + utils/create_scap_delta_tailoring.py | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/utils/create_scap_delta_tailoring.py b/utils/create_scap_delta_tailoring.py +index 2c3c5d0df32..25ad1aef66e 100755 +--- a/utils/create_scap_delta_tailoring.py ++++ b/utils/create_scap_delta_tailoring.py +@@ -127,6 +127,7 @@ def get_implemented_stigs(product, root_path, build_config_yaml_path, + known_rules[ref].append(rule['id']) + else: + known_rules[ref] = [rule['id']] ++ return known_rules + + + get_implemented_stigs.__annotations__ = {'product': str, 'root_path': str, diff --git a/SOURCES/scap-security-guide-0.1.61-fix_enable_fips_mode-PR_8255.patch b/SOURCES/scap-security-guide-0.1.61-fix_enable_fips_mode-PR_8255.patch new file mode 100644 index 0000000..d305d02 --- /dev/null +++ b/SOURCES/scap-security-guide-0.1.61-fix_enable_fips_mode-PR_8255.patch @@ -0,0 +1,116 @@ +From bc2f72ff8a23b508cef88a363e75e73474625775 Mon Sep 17 00:00:00 2001 +From: Vojtech Polasek +Date: Tue, 22 Feb 2022 17:15:43 +0100 +Subject: [PATCH 1/3] remove extend definition from ovals + +--- + .../software/integrity/fips/enable_fips_mode/oval/rhcos4.xml | 1 - + .../software/integrity/fips/enable_fips_mode/oval/shared.xml | 1 - + 2 files changed, 2 deletions(-) + +diff --git a/linux_os/guide/system/software/integrity/fips/enable_fips_mode/oval/rhcos4.xml b/linux_os/guide/system/software/integrity/fips/enable_fips_mode/oval/rhcos4.xml +index c5ae0550e6b..52d86fd4478 100644 +--- a/linux_os/guide/system/software/integrity/fips/enable_fips_mode/oval/rhcos4.xml ++++ b/linux_os/guide/system/software/integrity/fips/enable_fips_mode/oval/rhcos4.xml +@@ -5,7 +5,6 @@ + + + +- + +
      + +diff --git a/linux_os/guide/system/software/integrity/fips/enable_fips_mode/oval/shared.xml b/linux_os/guide/system/software/integrity/fips/enable_fips_mode/oval/shared.xml +index 699dca06dd1..6c3f57e143f 100644 +--- a/linux_os/guide/system/software/integrity/fips/enable_fips_mode/oval/shared.xml ++++ b/linux_os/guide/system/software/integrity/fips/enable_fips_mode/oval/shared.xml +@@ -6,7 +6,6 @@ + + + +- + +
      + + +From dbbea1998e189c4a27edc700478f55e2dfda56f8 Mon Sep 17 00:00:00 2001 +From: Vojtech Polasek +Date: Tue, 22 Feb 2022 17:17:28 +0100 +Subject: [PATCH 2/3] chang warning and description + +--- + .../integrity/fips/enable_fips_mode/rule.yml | 25 ++++--------------- + 1 file changed, 5 insertions(+), 20 deletions(-) + +diff --git a/linux_os/guide/system/software/integrity/fips/enable_fips_mode/rule.yml b/linux_os/guide/system/software/integrity/fips/enable_fips_mode/rule.yml +index 9d89114b07f..6b055eac8ff 100644 +--- a/linux_os/guide/system/software/integrity/fips/enable_fips_mode/rule.yml ++++ b/linux_os/guide/system/software/integrity/fips/enable_fips_mode/rule.yml +@@ -13,11 +13,9 @@ description: |- +
        +
      • Setting the kernel FIPS mode flag (/proc/sys/crypto/fips_enabled) to 1
      • +
      • Creating /etc/system-fips
      • +-
      • Setting the system crypto policy in /etc/crypto-policies/config to FIPS
      • ++
      • Setting the system crypto policy in /etc/crypto-policies/config to {{{ xccdf_value("var_system_crypto_policy") }}}
      • +
      • Loading the Dracut fips module
      • +
      +- This rule also ensures that the system policy is set to {{{ xccdf_value("var_system_crypto_policy") }}}. +- Furthermore, the system running in FIPS mode should be FIPS certified by NIST. + + rationale: |- + Use of weak or untested encryption algorithms undermines the purposes of utilizing encryption to +@@ -48,7 +46,7 @@ references: + ocil_clause: 'FIPS mode is not enabled' + + ocil: |- +- To verify that FIPS is enabled properly, run the following command: ++ To verify that FIPS mode is enabled properly, run the following command: +
      fips-mode-setup --check
      + The output should contain the following: +
      FIPS mode is enabled.
      +@@ -61,19 +59,6 @@ warnings: + - general: |- + The system needs to be rebooted for these changes to take effect. + - regulatory: |- +- System Crypto Modules must be provided by a vendor that undergoes +- FIPS-140 certifications. +- FIPS-140 is applicable to all Federal agencies that use +- cryptographic-based security systems to protect sensitive information +- in computer and telecommunication systems (including voice systems) as +- defined in Section 5131 of the Information Technology Management Reform +- Act of 1996, Public Law 104-106. This standard shall be used in +- designing and implementing cryptographic modules that Federal +- departments and agencies operate or are operated for them under +- contract. See {{{ weblink(link="https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.140-2.pdf") }}} +- To meet this, the system has to have cryptographic software provided by +- a vendor that has undergone this certification. This means providing +- documentation, test results, design information, and independent third +- party review by an accredited lab. While open source software is +- capable of meeting this, it does not meet FIPS-140 unless the vendor +- submits to this process. ++ This rule DOES NOT CHECK if the components of the operating system are FIPS certified. ++ You can find the list of FIPS certified modules at {{{ weblink(link="https://csrc.nist.rip/groups/STM/cmvp/documents/140-1/1401vend.htm") }}}. ++ This rule checks if the system is running in FIPS mode. See the rule description for more information about what it means. + +From 3c72eec95c617ee295099522d2817c6d217a7e63 Mon Sep 17 00:00:00 2001 +From: vojtapolasek +Date: Wed, 23 Feb 2022 09:16:09 +0100 +Subject: [PATCH 3/3] Update + linux_os/guide/system/software/integrity/fips/enable_fips_mode/rule.yml + +Co-authored-by: Gabriel Becker +--- + .../system/software/integrity/fips/enable_fips_mode/rule.yml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/linux_os/guide/system/software/integrity/fips/enable_fips_mode/rule.yml b/linux_os/guide/system/software/integrity/fips/enable_fips_mode/rule.yml +index 6b055eac8ff..30cbc939bed 100644 +--- a/linux_os/guide/system/software/integrity/fips/enable_fips_mode/rule.yml ++++ b/linux_os/guide/system/software/integrity/fips/enable_fips_mode/rule.yml +@@ -60,5 +60,5 @@ warnings: + The system needs to be rebooted for these changes to take effect. + - regulatory: |- + This rule DOES NOT CHECK if the components of the operating system are FIPS certified. +- You can find the list of FIPS certified modules at {{{ weblink(link="https://csrc.nist.rip/groups/STM/cmvp/documents/140-1/1401vend.htm") }}}. ++ You can find the list of FIPS certified modules at {{{ weblink(link="https://csrc.nist.gov/projects/cryptographic-module-validation-program/validated-modules/search") }}}. + This rule checks if the system is running in FIPS mode. See the rule description for more information about what it means. diff --git a/SOURCES/scap-security-guide-0.1.61-grub2_rule_desc_update-PR_8184.patch b/SOURCES/scap-security-guide-0.1.61-grub2_rule_desc_update-PR_8184.patch new file mode 100644 index 0000000..dd65877 --- /dev/null +++ b/SOURCES/scap-security-guide-0.1.61-grub2_rule_desc_update-PR_8184.patch @@ -0,0 +1,854 @@ +From 51a826878ade2ebb564405991937ba0e2b2b7717 Mon Sep 17 00:00:00 2001 +From: Vojtech Polasek +Date: Wed, 2 Feb 2022 14:25:30 +0100 +Subject: [PATCH 1/8] create two macros + +one provides description for grub2_argument templated rules +the second provides ocil for those cases +--- + shared/macros.jinja | 56 +++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 56 insertions(+) + +diff --git a/shared/macros.jinja b/shared/macros.jinja +index 00358e2f67c..3d41c998b0c 100644 +--- a/shared/macros.jinja ++++ b/shared/macros.jinja +@@ -1620,3 +1620,59 @@ The audit daemon must be restarted for the changes to take effect. + - no_ovirt + {{%- endif %}} + {{% endmacro %}} ++ ++{{# ++ Describe how to configure Grub2 to add an argument to the default kernel command line. ++ The parameter should be in form `parameter=value`. ++#}} ++{{%- macro describe_grub2_argument(arg_name_value) -%}} ++{{%- if product in ["rhel7", "ol7", "rhel9"] or 'ubuntu' in product -%}} ++To ensure that {{{ arg_name_value }}} is added as a kernel command line ++argument to newly installed kernels, ad {{{ arg_name_value }}} to the ++default Grub2 command line for Linux operating systems. Modify the line within ++/etc/default/grub as shown below: ++
      GRUB_CMDLINE_LINUX="... {{{ arg_name_value }}} ..."
      ++Run the following command to update command line for already installed kernels: ++{{%- if 'ubuntu' in product -%}} ++
      # update-grub
      ++{{%- else -%}} ++
      # grubby --update-kernel=ALL --args="{{{ arg_name_value }}}"
      ++{{%- endif -%}} ++{{%- else -%}} ++Configure the default Grub2 kernel command line to contain {{{ arg_name_value }}} as follows: ++
      # grub2-editenv - set "$(grub2-editenv - list | grep kernelopts) {{{ arg_name_value }}}"
      ++{{%- endif -%}} ++{{%- endmacro -%}} ++ ++{{# ++ Provide OCIL for checking if an argument for kernel command line is configured with Grub2. ++ The parameter should have form `parameter=value`. ++#}} ++{{%- macro ocil_grub2_argument(arg_name_value) -%}} ++{{%- if product in ["rhel7", "ol7", "rhel9"] or 'ubuntu' in product -%}} ++Inspect the form of default GRUB 2 command line for the Linux operating system ++in /etc/default/grub. If it includes {{{ arg_name_value }}}, ++then auditinng will be enabled for newly installed kernels. ++First check if the GRUB recovery is enabled: ++
      $ grep 'GRUB_DISABLE_RECOVERY' /etc/default/grub
      ++If this option is set to true, then check that a line is output by the following command: ++
      $ grep 'GRUB_CMDLINE_LINUX_DEFAULT.*{{{ arg_name_value }}}.*' /etc/default/grub
      ++If the recovery is disabled, check the line with ++
      $ grep 'GRUB_CMDLINE_LINUX.*{{{ arg_name_value }}}.*' /etc/default/grub
      . ++{{%- if 'ubuntu' in product -%}} ++Moreover, current Grub2 config file in /etc/grub2/grub.cfg must be checked. ++
      # grep vmlinuz {{{ grub2_boot_path }}}/grub.cfg | grep -v '{{{ arg_name_value }}}'
      ++This command should not return any output. ++{{%- else -%}} ++Moreover, command line parameters for currently installed kernels should be checked as well. ++Run the following command: ++
      # grubby --info=ALL | grep args | grep -v '{{{ arg_name_value }}}'
      ++The command should not return any output. ++{{%- endif -%}} ++{{%- else -%}} ++Inspect the form of default GRUB 2 command line for the Linux operating system ++in {{{ grub2_boot_path }}}/grubenv. If they include {{{ arg_name_value }}}, then auditing ++is enabled at boot time. ++
      # grep 'kernelopts.*{{{ arg_name_value }}}.*' {{{ grub2_boot_path }}}/grubenv
      ++{{%- endif -%}} ++{{%- endmacro -%}} + +From c8cb579db19bd55eebcb0bdc4b1432368a5c1b77 Mon Sep 17 00:00:00 2001 +From: Vojtech Polasek +Date: Wed, 2 Feb 2022 14:26:26 +0100 +Subject: [PATCH 2/8] use new macros in grub2_audit_argument + +--- + .../auditing/grub2_audit_argument/rule.yml | 45 ++----------------- + 1 file changed, 3 insertions(+), 42 deletions(-) + +diff --git a/linux_os/guide/system/auditing/grub2_audit_argument/rule.yml b/linux_os/guide/system/auditing/grub2_audit_argument/rule.yml +index 96dbe67699e..aff0521ee73 100644 +--- a/linux_os/guide/system/auditing/grub2_audit_argument/rule.yml ++++ b/linux_os/guide/system/auditing/grub2_audit_argument/rule.yml +@@ -7,15 +7,8 @@ title: 'Enable Auditing for Processes Which Start Prior to the Audit Daemon' + description: |- + To ensure all processes can be audited, even those which start + prior to the audit daemon, add the argument audit=1 to the default +- GRUB 2 command line for the Linux operating system in +-{{% if product in ["rhel7", "ol7"] %}} +- /etc/default/grub, so that the line looks similar to +-
      GRUB_CMDLINE_LINUX="... audit=1 ..."
      +- In case the GRUB_DISABLE_RECOVERY is set to true, then the parameter should be added to the GRUB_CMDLINE_LINUX_DEFAULT instead. +-{{% else %}} +- {{{ grub2_boot_path }}}/grubenv, in the manner below: +-
      # grub2-editenv - set "$(grub2-editenv - list | grep kernelopts) audit=1"
      +-{{% endif %}} ++ GRUB 2 command line for the Linux operating system. ++ {{{ describe_grub2_argument("audit=1") | indent(4) }}} + + rationale: |- + Each process on the system carries an "auditable" flag which indicates whether +@@ -59,39 +52,7 @@ references: + ocil_clause: 'auditing is not enabled at boot time' + + ocil: |- +-{{% if product in ["rhel7", "ol7", "sle12","sle15"] %}} +- Inspect the form of default GRUB 2 command line for the Linux operating system +- in /etc/default/grub. If it includes audit=1, then auditing +- is enabled at boot time. +- First check if the GRUB recovery is enabled: +-
      $ grep 'GRUB_DISABLE_RECOVERY' /etc/default/grub
      +- If this option is set to true, then check that a line is output by the following command: +-
      $ grep 'GRUB_CMDLINE_LINUX_DEFAULT.*audit=1.*' /etc/default/grub
      +- If the recovery is disabled, check the line with +-
      $ grep 'GRUB_CMDLINE_LINUX.*audit=1.*' /etc/default/grub
      . +- Moreover, current Grub2 config file in /etc/grub2/grub.cfg must be checked. +-
      # grep vmlinuz {{{ grub2_boot_path }}}/grub.cfg | grep -v 'audit=1'
      +- This command should not return any output. If it does, update the configuration with +-
      # grub2-mkconfig -o {{{ grub2_boot_path }}}/grub.cfg
      +-

      +- Alternatively, to ensure audit=1 is configured on all installed kernels, the +- following command may be used: +-
      +-
      $ sudo /sbin/grubby --update-kernel=ALL --args="audit=1"
      +-
      +-{{% else %}} +- Inspect the form of default GRUB 2 command line for the Linux operating system +- in {{{ grub2_boot_path }}}/grubenv. If they include audit=1, then auditing +- is enabled at boot time. +-
      # grep 'kernelopts.*audit=1.*' {{{ grub2_boot_path }}}/grubenv
      +-

      +- To ensure audit=1 is configured on all installed kernels, the +- following command may be used: +-
      +-
      # grub2-editenv - set "$(grub2-editenv - list | grep kernelopts) audit=1"
      +-
      +-{{% endif %}} +- ++ {{{ ocil_grub2_argument("audit=1") | indent(4) }}} + + warnings: + - management: |- + +From 3ff2c245408d3fe892222eee8171e2f84868f705 Mon Sep 17 00:00:00 2001 +From: Vojtech Polasek +Date: Thu, 3 Feb 2022 14:25:34 +0100 +Subject: [PATCH 3/8] fix omission in ocil jinja macro + +--- + shared/macros.jinja | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/shared/macros.jinja b/shared/macros.jinja +index 3d41c998b0c..16a0404b668 100644 +--- a/shared/macros.jinja ++++ b/shared/macros.jinja +@@ -1652,7 +1652,7 @@ Configure the default Grub2 kernel command line to contain {{{ arg_name_value }} + {{%- if product in ["rhel7", "ol7", "rhel9"] or 'ubuntu' in product -%}} + Inspect the form of default GRUB 2 command line for the Linux operating system + in /etc/default/grub. If it includes {{{ arg_name_value }}}, +-then auditinng will be enabled for newly installed kernels. ++then the parameter will be configured for newly installed kernels. + First check if the GRUB recovery is enabled: +
      $ grep 'GRUB_DISABLE_RECOVERY' /etc/default/grub
      + If this option is set to true, then check that a line is output by the following command: +@@ -1671,8 +1671,8 @@ The command should not return any output. + {{%- endif -%}} + {{%- else -%}} + Inspect the form of default GRUB 2 command line for the Linux operating system +-in {{{ grub2_boot_path }}}/grubenv. If they include {{{ arg_name_value }}}, then auditing +-is enabled at boot time. ++in {{{ grub2_boot_path }}}/grubenv. If they include {{{ arg_name_value }}}, then the parameter ++is configured at boot time. +
      # grep 'kernelopts.*{{{ arg_name_value }}}.*' {{{ grub2_boot_path }}}/grubenv
      + {{%- endif -%}} + {{%- endmacro -%}} + +From 976da69681d03d9b9380fc57216c30c7b4891f50 Mon Sep 17 00:00:00 2001 +From: Vojtech Polasek +Date: Thu, 3 Feb 2022 14:26:33 +0100 +Subject: [PATCH 4/8] use new jinja macros in all grub2 related rules + +--- + .../rule.yml | 15 ++----- + .../grub2_enable_iommu_force/rule.yml | 9 +++- + .../grub2_init_on_alloc_argument/rule.yml | 18 ++------ + .../grub2_kernel_trust_cpu_rng/rule.yml | 11 ++--- + .../grub2_pti_argument/rule.yml | 15 ++----- + .../grub2_vsyscall_argument/rule.yml | 15 ++----- + .../grub2_ipv6_disable_argument/rule.yml | 45 ++----------------- + .../grub2_page_poison_argument/rule.yml | 15 ++----- + .../grub2_slub_debug_argument/rule.yml | 15 ++----- + 9 files changed, 33 insertions(+), 125 deletions(-) + +diff --git a/linux_os/guide/system/auditing/grub2_audit_backlog_limit_argument/rule.yml b/linux_os/guide/system/auditing/grub2_audit_backlog_limit_argument/rule.yml +index f94ddab2fe1..868d525014f 100644 +--- a/linux_os/guide/system/auditing/grub2_audit_backlog_limit_argument/rule.yml ++++ b/linux_os/guide/system/auditing/grub2_audit_backlog_limit_argument/rule.yml +@@ -7,9 +7,8 @@ title: 'Extend Audit Backlog Limit for the Audit Daemon' + description: |- + To improve the kernel capacity to queue all log events, even those which occurred + prior to the audit daemon, add the argument audit_backlog_limit=8192 to the default +- GRUB 2 command line for the Linux operating system in +- /etc/default/grub, in the manner below: +-
      GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=VolGroup/LogVol06 rd.lvm.lv=VolGroup/lv_swap rhgb quiet rd.shell=0 audit=1 audit_backlog_limit=8192"
      ++ GRUB 2 command line for the Linux operating system. ++ {{{ describe_grub2_argument("audit_backlog_limit=8192") | indent(4) }}} + + rationale: |- + audit_backlog_limit sets the queue length for audit events awaiting transfer +@@ -40,15 +39,7 @@ references: + ocil_clause: 'audit backlog limit is not configured' + + ocil: |- +- Inspect the form of default GRUB 2 command line for the Linux operating system +- in /etc/default/grub. If they include audit=1, then auditing +- is enabled at boot time. +-

      +- To ensure audit_backlog_limit=8192 is configured on all installed kernels, the +- following command may be used: +-
      +-
      $ sudo /sbin/grubby --update-kernel=ALL --args="audit_backlog_limit=8192"
      +-
      ++ {{{ ocil_grub2_argument("audit_backlog_limit=8192") | indent(4) }}} + + warnings: + - management: |- +diff --git a/linux_os/guide/system/bootloader-grub2/grub2_enable_iommu_force/rule.yml b/linux_os/guide/system/bootloader-grub2/grub2_enable_iommu_force/rule.yml +index 0a0d76aeb23..1ff5a4d5f26 100644 +--- a/linux_os/guide/system/bootloader-grub2/grub2_enable_iommu_force/rule.yml ++++ b/linux_os/guide/system/bootloader-grub2/grub2_enable_iommu_force/rule.yml +@@ -5,9 +5,10 @@ title: 'IOMMU configuration directive' + description: |- + On x86 architecture supporting VT-d, the IOMMU manages the access control policy between the hardware devices and some + of the system critical units such as the memory. ++ {{{ describe_grub2_argument("iommu=force") | indent(4) }}} + + rationale: |- +- On x86 architectures, activating the I/OMMU prevents the system from arbritrary accesses potentially made by ++ On x86 architectures, activating the I/OMMU prevents the system from arbitrary accesses potentially made by + hardware devices. + + severity: unknown +@@ -22,6 +23,12 @@ references: + + platform: machine + ++ocil_clause: 'I/OMMU is not activated' ++ ++ocil: |- ++ {{{ ocil_grub2_argument("iommu=force") | indent(4) }}} ++ ++ + warnings: + - functionality: + Depending on the hardware, devices and operating system used, enabling IOMMU can cause hardware instabilities. +diff --git a/linux_os/guide/system/bootloader-grub2/grub2_init_on_alloc_argument/rule.yml b/linux_os/guide/system/bootloader-grub2/grub2_init_on_alloc_argument/rule.yml +index a9253c74cc6..3bb645dadb7 100644 +--- a/linux_os/guide/system/bootloader-grub2/grub2_init_on_alloc_argument/rule.yml ++++ b/linux_os/guide/system/bootloader-grub2/grub2_init_on_alloc_argument/rule.yml +@@ -6,12 +6,8 @@ title: 'Configure kernel to zero out memory before allocation' + + description: |- + To configure the kernel to zero out memory before allocating it, add the +- init_on_alloc=1 argument to the default GRUB 2 command line for +- the Linux operating system in /etc/default/grub, in the manner +- below: +-
      GRUB_CMDLINE_LINUX="crashkernel=auto quiet rd.shell=0 audit=1 audit_backlog_limit=8192 init_on_alloc=1"
      +- Update the boot parameter for existing kernels by running the following command: +-
      # grubby --update-kernel=ALL --args="init_on_alloc=1"
      ++ init_on_alloc=1 argument to the default GRUB 2 command line. ++ {{{ describe_grub2_argument("init_on_alloc=1") | indent(4) }}} + + rationale: |- + When the kernel configuration option init_on_alloc is enabled, +@@ -27,15 +23,7 @@ identifiers: + ocil_clause: 'the kernel is not configured to zero out memory before allocation' + + ocil: |- +- Make sure that the kernel is configured to zero out memory before +- allocation. Ensure that the parameter is configured in +- /etc/default/grub: +-
      grep GRUB_CMDLINE_LINUX /etc/default/grub
      +- The output should contain init_on_alloc=1. +- Run the following command to display command line parameters of all +- installed kernels: +-
      # grubby --info=ALL | grep args
      +- Ensure that each line contains the init_on_alloc=1 parameter. ++ {{{ ocil_grub2_argument("init_on_alloc=1") | indent(4) }}} + + platform: machine + +diff --git a/linux_os/guide/system/bootloader-grub2/grub2_kernel_trust_cpu_rng/rule.yml b/linux_os/guide/system/bootloader-grub2/grub2_kernel_trust_cpu_rng/rule.yml +index 308ae9cb735..d6bfc02f345 100644 +--- a/linux_os/guide/system/bootloader-grub2/grub2_kernel_trust_cpu_rng/rule.yml ++++ b/linux_os/guide/system/bootloader-grub2/grub2_kernel_trust_cpu_rng/rule.yml +@@ -11,8 +11,8 @@ description: |- + Y, make sure that it is not overridden with the boot parameter. + There must not exist the boot parameter random.trust_cpu=off. If + the option is not compiled in, make sure that random.trust_cpu=on +- is configured as a boot parameter by running the following command: +-
      sudo grub2-editenv - set "$(grub2-editenv - list | grep kernelopts) random.trust_cpu=on"
      ++ is configured as a boot parameter. ++ {{{ describe_grub2_argument("random.trust_cpu=on") | indent(4) }}} + + rationale: |- + The Linux kernel offers an option which signifies if the kernel should trust +@@ -44,11 +44,8 @@ ocil: |- + option is not overridden through a boot parameter: +
      sudo grep 'kernelopts.*random\.trust_cpu=off.*' {{{ grub2_boot_path }}}/grubenv
      + The command should not return any output. If the option is not compiled into +- the kernel, check that the option is configured through boot parameter with +- the following command: +-
      sudo grep 'kernelopts.*random\.trust_cpu=on.*' {{{ grub2_boot_path }}}/grubenv
      +- If the command does not return any output, then the boot parameter is +- missing. ++ the kernel, check that the option is configured through boot parameter. ++ {{{ ocil_grub2_argument("random.trust_cpu=on") | indent(4) }}} + + platform: machine + +diff --git a/linux_os/guide/system/bootloader-grub2/grub2_pti_argument/rule.yml b/linux_os/guide/system/bootloader-grub2/grub2_pti_argument/rule.yml +index f4f3fa39510..51b0a284746 100644 +--- a/linux_os/guide/system/bootloader-grub2/grub2_pti_argument/rule.yml ++++ b/linux_os/guide/system/bootloader-grub2/grub2_pti_argument/rule.yml +@@ -7,9 +7,8 @@ title: 'Enable Kernel Page-Table Isolation (KPTI)' + description: |- + To enable Kernel page-table isolation, + add the argument pti=on to the default +- GRUB 2 command line for the Linux operating system in +- /etc/default/grub, in the manner below: +-
      GRUB_CMDLINE_LINUX="pti=on"
      ++ GRUB 2 command line for the Linux operating system. ++ {{{ describe_grub2_argument("pti=on") | indent(4) }}} + + rationale: |- + Kernel page-table isolation is a kernel feature that mitigates +@@ -33,15 +32,7 @@ references: + ocil_clause: 'Kernel page-table isolation is not enabled' + + ocil: |- +- Inspect the form of default GRUB 2 command line for the Linux operating system +- in /etc/default/grub. If they include pti=on, +- then Kernel page-table isolation is enabled at boot time. +-

      +- To ensure pti=on is configured on all installed kernels, the +- following command may be used: +-
      +-
      $ sudo /sbin/grubby --update-kernel=ALL --args="pti=on
      +-
      ++ {{{ ocil_grub2_argument("pti=on") | indent(4) }}} + + warnings: + - management: |- +diff --git a/linux_os/guide/system/bootloader-grub2/grub2_vsyscall_argument/rule.yml b/linux_os/guide/system/bootloader-grub2/grub2_vsyscall_argument/rule.yml +index 9f38a1c13b9..1b88d13bd3c 100644 +--- a/linux_os/guide/system/bootloader-grub2/grub2_vsyscall_argument/rule.yml ++++ b/linux_os/guide/system/bootloader-grub2/grub2_vsyscall_argument/rule.yml +@@ -7,9 +7,8 @@ title: 'Disable vsyscalls' + description: |- + To disable use of virtual syscalls, + add the argument vsyscall=none to the default +- GRUB 2 command line for the Linux operating system in +- /etc/default/grub, in the manner below: +-
      GRUB_CMDLINE_LINUX="vsyscall=none"
      ++ GRUB 2 command line for the Linux operating system. ++ {{{ describe_grub2_argument("vsyscall=none") | indent(4) }}} + + rationale: |- + Virtual Syscalls provide an opportunity of attack for a user who has control +@@ -33,15 +32,7 @@ references: + ocil_clause: 'vsyscalls are enabled' + + ocil: |- +- Inspect the form of default GRUB 2 command line for the Linux operating system +- in /etc/default/grub. If they include vsyscall=none, +- then virtyal syscalls are not enabled at boot time. +-

      +- To ensure vsyscall=none is configured on all installed kernels, the +- following command may be used: +-
      +-
      $ sudo /sbin/grubby --update-kernel=ALL --args="vsyscall=none
      +-
      ++ {{{ ocil_grub2_argument("vsyscall=none") | indent(4) }}} + + warnings: + - management: |- +diff --git a/linux_os/guide/system/network/network-ipv6/disabling_ipv6/grub2_ipv6_disable_argument/rule.yml b/linux_os/guide/system/network/network-ipv6/disabling_ipv6/grub2_ipv6_disable_argument/rule.yml +index b8ff66c7d6e..c0fda343a1a 100644 +--- a/linux_os/guide/system/network/network-ipv6/disabling_ipv6/grub2_ipv6_disable_argument/rule.yml ++++ b/linux_os/guide/system/network/network-ipv6/disabling_ipv6/grub2_ipv6_disable_argument/rule.yml +@@ -7,20 +7,8 @@ title: 'Ensure IPv6 is disabled through kernel boot parameter' + description: |- + To disable IPv6 protocol support in the Linux kernel, + add the argument ipv6.disable=1 to the default +- GRUB2 command line for the Linux operating system in +-{{% if product in ["rhel7", "ol7"] %}} +- /etc/default/grub, so that the line looks similar to +-
      GRUB_CMDLINE_LINUX="... ipv6.disable=1 ..."
      +- In case the GRUB_DISABLE_RECOVERY is set to true, then the parameter should be added to the GRUB_CMDLINE_LINUX_DEFAULT instead. +- Run one of following command to ensure that the configuration is applied when booting currently installed kernels: +-
      sudo grub2-mkconfig -o {{{ grub2_boot_path }}}/grub.cfg
      +- or +-
      sudo /sbin/grubby --update-kernel=ALL --args="ipv6.disable=1"
      +-{{% else %}} +- {{{ grub2_boot_path }}}/grubenv, in the manner below: +-
      sudo  grub2-editenv - set "$(grub2-editenv - list | grep kernelopts) ipv6.disable=1"
      +-{{% endif %}} +- ++ GRUB2 command line for the Linux operating system. ++ {{{ describe_grub2_argument("ipv6.disable=1") | indent(4) }}} + + rationale: |- + Any unnecessary network stacks, including IPv6, should be disabled to reduce +@@ -40,34 +28,7 @@ references: + ocil_clause: 'IPv6 is not disabled' + + ocil: |- +- {{% if product in ["rhel7", "ol7"] %}} +- Inspect the form of default GRUB2 command line for the Linux operating system +- in /etc/default/grub. Check if it includes ipv6.disable=1. +- First check if the GRUB recovery is enabled: +-
      grep 'GRUB_DISABLE_RECOVERY' /etc/default/grub
      +- If this option is set to true, then check that the following line is output by the following command: +-
      grep 'GRUB_CMDLINE_LINUX_DEFAULT.*ipv6.disable=1.*' /etc/default/grub
      +- If the recovery is disabled, check the line with +-
      grep 'GRUB_CMDLINE_LINUX.*ipv6.disable=1.*' /etc/default/grub
      . +- Moreover, current GRUB2 config file in /etc/grub2/grub.cfg must be checked. +-
      sudo grep vmlinuz {{{ grub2_boot_path }}}/grub.cfg | grep -v 'ipv6.disable=1'
      +- This command should not return any output. If it does, update the configuration with one of following commands: +-
      sudo grub2-mkconfig -o {{{ grub2_boot_path }}}/grub.cfg
      +- or +-
      sudo /sbin/grubby --update-kernel=ALL --args="ipv6.disable=1"
      +-
      +-{{% else %}} +- Inspect the form of default GRUB2 command line for the Linux operating system +- in {{{ grub2_boot_path }}}/grubenv. Check if it includes ipv6.disable=1. +-
      sudo grep 'kernelopts.*ipv6.disable=1.*' {{{ grub2_boot_path }}}/grubenv
      +-

      +- To ensure ipv6.disable=1 is configured on all installed kernels, the +- following command may be used: +-
      +-
      sudo grub2-editenv - set "$(grub2-editenv - list | grep kernelopts) ipv6.disable=1"
      +-
      +-{{% endif %}} +- ++ {{{ ocil_grub2_argument("ipv6.disable=1") | indent(4) }}} + + warnings: + - management: |- +diff --git a/linux_os/guide/system/permissions/restrictions/poisoning/grub2_page_poison_argument/rule.yml b/linux_os/guide/system/permissions/restrictions/poisoning/grub2_page_poison_argument/rule.yml +index 3bf592fb4d8..1f4e183d9e7 100644 +--- a/linux_os/guide/system/permissions/restrictions/poisoning/grub2_page_poison_argument/rule.yml ++++ b/linux_os/guide/system/permissions/restrictions/poisoning/grub2_page_poison_argument/rule.yml +@@ -7,9 +7,8 @@ title: 'Enable page allocator poisoning' + description: |- + To enable poisoning of free pages, + add the argument page_poison=1 to the default +- GRUB 2 command line for the Linux operating system in +- /etc/default/grub, in the manner below: +-
      GRUB_CMDLINE_LINUX="page_poison=1"
      ++ GRUB 2 command line for the Linux operating system. ++ {{{ describe_grub2_argument("page_poison=1") | indent(4) }}} + + rationale: |- + Poisoning writes an arbitrary value to freed pages, so any modification or +@@ -35,15 +34,7 @@ references: + ocil_clause: 'page allocator poisoning is not enabled' + + ocil: |- +- Inspect the form of default GRUB 2 command line for the Linux operating system +- in /etc/default/grub. If they include page_poison=1, +- then page poisoning is enabled at boot time. +-

      +- To ensure page_poison=1 is configured on all installed kernels, the +- following command may be used: +-
      +-
      $ sudo /sbin/grubby --update-kernel=ALL --args="page_poison=1
      +-
      ++ {{{ ocil_grub2_argument("page_poison=1") | indent(4) }}} + + warnings: + - management: |- +diff --git a/linux_os/guide/system/permissions/restrictions/poisoning/grub2_slub_debug_argument/rule.yml b/linux_os/guide/system/permissions/restrictions/poisoning/grub2_slub_debug_argument/rule.yml +index 9964399650a..bb5dbc6c125 100644 +--- a/linux_os/guide/system/permissions/restrictions/poisoning/grub2_slub_debug_argument/rule.yml ++++ b/linux_os/guide/system/permissions/restrictions/poisoning/grub2_slub_debug_argument/rule.yml +@@ -7,9 +7,8 @@ title: 'Enable SLUB/SLAB allocator poisoning' + description: |- + To enable poisoning of SLUB/SLAB objects, + add the argument slub_debug=P to the default +- GRUB 2 command line for the Linux operating system in +- /etc/default/grub, in the manner below: +-
      GRUB_CMDLINE_LINUX="slub_debug=P"
      ++ GRUB 2 command line for the Linux operating system. ++ {{{ describe_grub2_argument("slub_debug=P") | indent(4) }}} + + rationale: |- + Poisoning writes an arbitrary value to freed objects, so any modification or +@@ -35,15 +34,7 @@ references: + ocil_clause: 'SLUB/SLAB poisoning is not enabled' + + ocil: |- +- Inspect the form of default GRUB 2 command line for the Linux operating system +- in /etc/default/grub. If they include slub_debug=P, +- then SLUB/SLAB poisoning is enabled at boot time. +-

      +- To ensure slub_debug=P is configured on all installed kernels, the +- following command may be used: +-
      +-
      $ sudo /sbin/grubby --update-kernel=ALL --args="slub_debug=P
      +-
      ++ {{{ ocil_grub2_argument("slub_debug=P") | indent(4) }}} + + warnings: + - management: |- + +From 5c39cf81d49f0eb5bb73337057fb95356784e5c6 Mon Sep 17 00:00:00 2001 +From: Vojtech Polasek +Date: Wed, 9 Feb 2022 16:05:59 +0100 +Subject: [PATCH 5/8] fix an error in ubuntu version of macro + +--- + shared/macros.jinja | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/shared/macros.jinja b/shared/macros.jinja +index 16a0404b668..54d2b299a47 100644 +--- a/shared/macros.jinja ++++ b/shared/macros.jinja +@@ -1660,7 +1660,7 @@ If this option is set to true, then check that a line is output by the following + If the recovery is disabled, check the line with +
      $ grep 'GRUB_CMDLINE_LINUX.*{{{ arg_name_value }}}.*' /etc/default/grub
      . + {{%- if 'ubuntu' in product -%}} +-Moreover, current Grub2 config file in /etc/grub2/grub.cfg must be checked. ++Moreover, current Grub2 config file in {{{ grub2_boot_path }}}/grub.cfg must be checked. +
      # grep vmlinuz {{{ grub2_boot_path }}}/grub.cfg | grep -v '{{{ arg_name_value }}}'
      + This command should not return any output. + {{%- else -%}} + +From f100d190833d168127715215e788347f806736f3 Mon Sep 17 00:00:00 2001 +From: Vojtech Polasek +Date: Wed, 9 Feb 2022 16:16:21 +0100 +Subject: [PATCH 6/8] remove warnings from rules + +they are no longer relevant, we do not use grub2-mkconfig anymore +--- + .../auditing/grub2_audit_argument/rule.yml | 18 ------------------ + .../rule.yml | 18 ------------------ + .../grub2_pti_argument/rule.yml | 18 ------------------ + .../grub2_vsyscall_argument/rule.yml | 18 ------------------ + .../grub2_ipv6_disable_argument/rule.yml | 18 ------------------ + .../grub2_page_poison_argument/rule.yml | 18 ------------------ + .../grub2_slub_debug_argument/rule.yml | 18 ------------------ + 7 files changed, 126 deletions(-) + +diff --git a/linux_os/guide/system/auditing/grub2_audit_argument/rule.yml b/linux_os/guide/system/auditing/grub2_audit_argument/rule.yml +index aff0521ee73..00a4ded2738 100644 +--- a/linux_os/guide/system/auditing/grub2_audit_argument/rule.yml ++++ b/linux_os/guide/system/auditing/grub2_audit_argument/rule.yml +@@ -54,24 +54,6 @@ ocil_clause: 'auditing is not enabled at boot time' + ocil: |- + {{{ ocil_grub2_argument("audit=1") | indent(4) }}} + +-warnings: +- - management: |- +- The GRUB 2 configuration file, grub.cfg, +- is automatically updated each time a new kernel is installed. Note that any +- changes to /etc/default/grub require rebuilding the grub.cfg +- file. To update the GRUB 2 configuration file manually, use the +-
      grub2-mkconfig -o
      command as follows: +-
        +-
      • On BIOS-based machines, issue the following command as root: +-
        ~]# grub2-mkconfig -o {{{ grub2_boot_path }}}/grub.cfg
      • +-
      • On UEFI-based machines, issue the following command as root: +-{{% if product in ["rhel7", "ol7", "rhel8", "ol8"] %}} +-
        ~]# grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
      • +-{{% else %}} +-
        ~]# grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
        +-{{% endif %}} +-
      +- + platform: grub2 + + template: +diff --git a/linux_os/guide/system/auditing/grub2_audit_backlog_limit_argument/rule.yml b/linux_os/guide/system/auditing/grub2_audit_backlog_limit_argument/rule.yml +index 868d525014f..efbc3dae1c1 100644 +--- a/linux_os/guide/system/auditing/grub2_audit_backlog_limit_argument/rule.yml ++++ b/linux_os/guide/system/auditing/grub2_audit_backlog_limit_argument/rule.yml +@@ -41,24 +41,6 @@ ocil_clause: 'audit backlog limit is not configured' + ocil: |- + {{{ ocil_grub2_argument("audit_backlog_limit=8192") | indent(4) }}} + +-warnings: +- - management: |- +- The GRUB 2 configuration file, grub.cfg, +- is automatically updated each time a new kernel is installed. Note that any +- changes to /etc/default/grub require rebuilding the grub.cfg +- file. To update the GRUB 2 configuration file manually, use the +-
      grub2-mkconfig -o
      command as follows: +-
        +-
      • On BIOS-based machines, issue the following command as root: +-
        ~]# grub2-mkconfig -o {{{ grub2_boot_path }}}/grub.cfg
      • +-
      • On UEFI-based machines, issue the following command as root: +-{{% if product in ["rhel7", "rhel8", "ol7", "ol8"] %}} +-
        ~]# grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
      • +-{{% else %}} +-
        ~]# grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
        +-{{% endif %}} +-
      +- + platform: grub2 + + template: +diff --git a/linux_os/guide/system/bootloader-grub2/grub2_pti_argument/rule.yml b/linux_os/guide/system/bootloader-grub2/grub2_pti_argument/rule.yml +index 51b0a284746..52a308e3247 100644 +--- a/linux_os/guide/system/bootloader-grub2/grub2_pti_argument/rule.yml ++++ b/linux_os/guide/system/bootloader-grub2/grub2_pti_argument/rule.yml +@@ -34,24 +34,6 @@ ocil_clause: 'Kernel page-table isolation is not enabled' + ocil: |- + {{{ ocil_grub2_argument("pti=on") | indent(4) }}} + +-warnings: +- - management: |- +- The GRUB 2 configuration file, grub.cfg, +- is automatically updated each time a new kernel is installed. Note that any +- changes to /etc/default/grub require rebuilding the grub.cfg +- file. To update the GRUB 2 configuration file manually, use the +-
      grub2-mkconfig -o
      command as follows: +-
        +-
      • On BIOS-based machines, issue the following command as root: +-
        ~]# grub2-mkconfig -o {{{ grub2_boot_path }}}/grub.cfg
      • +-
      • On UEFI-based machines, issue the following command as root: +-{{% if product in ["rhel8", "ol8"] %}} +-
        ~]# grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
      • +-{{% else %}} +-
        ~]# grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
        +-{{% endif %}} +-
      +- + platform: machine + + template: +diff --git a/linux_os/guide/system/bootloader-grub2/grub2_vsyscall_argument/rule.yml b/linux_os/guide/system/bootloader-grub2/grub2_vsyscall_argument/rule.yml +index 1b88d13bd3c..93eb31dad7b 100644 +--- a/linux_os/guide/system/bootloader-grub2/grub2_vsyscall_argument/rule.yml ++++ b/linux_os/guide/system/bootloader-grub2/grub2_vsyscall_argument/rule.yml +@@ -34,24 +34,6 @@ ocil_clause: 'vsyscalls are enabled' + ocil: |- + {{{ ocil_grub2_argument("vsyscall=none") | indent(4) }}} + +-warnings: +- - management: |- +- The GRUB 2 configuration file, grub.cfg, +- is automatically updated each time a new kernel is installed. Note that any +- changes to /etc/default/grub require rebuilding the grub.cfg +- file. To update the GRUB 2 configuration file manually, use the +-
      grub2-mkconfig -o
      command as follows: +-
        +-
      • On BIOS-based machines, issue the following command as root: +-
        ~]# grub2-mkconfig -o {{{ grub2_boot_path }}}/grub.cfg
      • +-
      • On UEFI-based machines, issue the following command as root: +-{{% if product in ["rhel7", "rhel8", "ol7", "ol8"] %}} +-
        ~]# grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
      • +-{{% else %}} +-
        ~]# grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
        +-{{% endif %}} +-
      +- + platform: machine + + template: +diff --git a/linux_os/guide/system/network/network-ipv6/disabling_ipv6/grub2_ipv6_disable_argument/rule.yml b/linux_os/guide/system/network/network-ipv6/disabling_ipv6/grub2_ipv6_disable_argument/rule.yml +index c0fda343a1a..9e1ca48efe0 100644 +--- a/linux_os/guide/system/network/network-ipv6/disabling_ipv6/grub2_ipv6_disable_argument/rule.yml ++++ b/linux_os/guide/system/network/network-ipv6/disabling_ipv6/grub2_ipv6_disable_argument/rule.yml +@@ -30,24 +30,6 @@ ocil_clause: 'IPv6 is not disabled' + ocil: |- + {{{ ocil_grub2_argument("ipv6.disable=1") | indent(4) }}} + +-warnings: +- - management: |- +- The GRUB 2 configuration file, grub.cfg, +- is automatically updated each time a new kernel is installed. Note that any +- changes to /etc/default/grub require rebuilding the grub.cfg +- file. To update the GRUB 2 configuration file manually, use the +-
      grub2-mkconfig -o
      command as follows: +-
        +-
      • On BIOS-based machines, issue the following command: +-
        sudo grub2-mkconfig -o {{{ grub2_boot_path }}}/grub.cfg
      • +-
      • On UEFI-based machines, issue the following command: +-{{% if product in ["rhel7", "ol7", "rhel8", "ol8"] %}} +-
        sudo grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
      • +-{{% else %}} +-
        sudo grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
        +-{{% endif %}} +-
      +- + platform: grub2 + + template: +diff --git a/linux_os/guide/system/permissions/restrictions/poisoning/grub2_page_poison_argument/rule.yml b/linux_os/guide/system/permissions/restrictions/poisoning/grub2_page_poison_argument/rule.yml +index 1f4e183d9e7..1ad6c6b3c44 100644 +--- a/linux_os/guide/system/permissions/restrictions/poisoning/grub2_page_poison_argument/rule.yml ++++ b/linux_os/guide/system/permissions/restrictions/poisoning/grub2_page_poison_argument/rule.yml +@@ -36,24 +36,6 @@ ocil_clause: 'page allocator poisoning is not enabled' + ocil: |- + {{{ ocil_grub2_argument("page_poison=1") | indent(4) }}} + +-warnings: +- - management: |- +- The GRUB 2 configuration file, grub.cfg, +- is automatically updated each time a new kernel is installed. Note that any +- changes to /etc/default/grub require rebuilding the grub.cfg +- file. To update the GRUB 2 configuration file manually, use the +-
      grub2-mkconfig -o
      command as follows: +-
        +-
      • On BIOS-based machines, issue the following command as root: +-
        ~]# grub2-mkconfig -o {{{ grub2_boot_path }}}/grub.cfg
      • +-
      • On UEFI-based machines, issue the following command as root: +-{{% if product in ["rhel7", "rhel8", "ol7", "ol8"] %}} +-
        ~]# grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
      • +-{{% else %}} +-
        ~]# grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
        +-{{% endif %}} +-
      +- + platform: grub2 + + template: +diff --git a/linux_os/guide/system/permissions/restrictions/poisoning/grub2_slub_debug_argument/rule.yml b/linux_os/guide/system/permissions/restrictions/poisoning/grub2_slub_debug_argument/rule.yml +index bb5dbc6c125..e40f5377c61 100644 +--- a/linux_os/guide/system/permissions/restrictions/poisoning/grub2_slub_debug_argument/rule.yml ++++ b/linux_os/guide/system/permissions/restrictions/poisoning/grub2_slub_debug_argument/rule.yml +@@ -36,24 +36,6 @@ ocil_clause: 'SLUB/SLAB poisoning is not enabled' + ocil: |- + {{{ ocil_grub2_argument("slub_debug=P") | indent(4) }}} + +-warnings: +- - management: |- +- The GRUB 2 configuration file, grub.cfg, +- is automatically updated each time a new kernel is installed. Note that any +- changes to /etc/default/grub require rebuilding the grub.cfg +- file. To update the GRUB 2 configuration file manually, use the +-
      grub2-mkconfig -o
      command as follows: +-
        +-
      • On BIOS-based machines, issue the following command as root: +-
        ~]# grub2-mkconfig -o {{{ grub2_boot_path }}}/grub.cfg
      • +-
      • On UEFI-based machines, issue the following command as root: +-{{% if product in ["rhel7", "rhel8", "ol7", "ol8"] %}} +-
        ~]# grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
      • +-{{% else %}} +-
        ~]# grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
        +-{{% endif %}} +-
      +- + platform: grub2 + + template: + +From bbc3cc093004efd0457ccb33722a4fb14b0b2fb8 Mon Sep 17 00:00:00 2001 +From: vojtapolasek +Date: Mon, 14 Feb 2022 14:29:15 +0100 +Subject: [PATCH 7/8] Update shared/macros.jinja +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Matěj Týč +--- + shared/macros.jinja | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/shared/macros.jinja b/shared/macros.jinja +index 54d2b299a47..392181e2b24 100644 +--- a/shared/macros.jinja ++++ b/shared/macros.jinja +@@ -1671,7 +1671,12 @@ The command should not return any output. + {{%- endif -%}} + {{%- else -%}} + Inspect the form of default GRUB 2 command line for the Linux operating system +-in {{{ grub2_boot_path }}}/grubenv. If they include {{{ arg_name_value }}}, then the parameter ++{{% if grub2_boot_path == grub2_uefi_boot_path or not grub2_uefi_boot_path -%}} ++in {{{ grub2_boot_path }}}/grubenv. ++{{%- else -%}} ++in grubenv that can be found either in {{{ grub2_boot_path }}} in case of legacy BIOS systems, or in {{{ grub2_uefi_boot_path }}} in case of UEFI systems. ++{{%- endif %}} ++If they include {{{ arg_name_value }}}, then the parameter + is configured at boot time. +
      # grep 'kernelopts.*{{{ arg_name_value }}}.*' {{{ grub2_boot_path }}}/grubenv
      + {{%- endif -%}} + +From 8121376668b43d21cf0f9700994bc011c3e313d7 Mon Sep 17 00:00:00 2001 +From: Vojtech Polasek +Date: Mon, 14 Feb 2022 15:17:33 +0100 +Subject: [PATCH 8/8] more modifications to description and ocil + +final touches +--- + shared/macros.jinja | 15 ++++++++++----- + 1 file changed, 10 insertions(+), 5 deletions(-) + +diff --git a/shared/macros.jinja b/shared/macros.jinja +index 392181e2b24..a89bac12f53 100644 +--- a/shared/macros.jinja ++++ b/shared/macros.jinja +@@ -1626,7 +1626,7 @@ The audit daemon must be restarted for the changes to take effect. + The parameter should be in form `parameter=value`. + #}} + {{%- macro describe_grub2_argument(arg_name_value) -%}} +-{{%- if product in ["rhel7", "ol7", "rhel9"] or 'ubuntu' in product -%}} ++{{%- if product in ["rhel7", "ol7", "rhel8", "ol8", "rhel9"] or 'ubuntu' in product -%}} + To ensure that {{{ arg_name_value }}} is added as a kernel command line + argument to newly installed kernels, ad {{{ arg_name_value }}} to the + default Grub2 command line for Linux operating systems. Modify the line within +@@ -1649,7 +1649,7 @@ Configure the default Grub2 kernel command line to contain {{{ arg_name_value }} + The parameter should have form `parameter=value`. + #}} + {{%- macro ocil_grub2_argument(arg_name_value) -%}} +-{{%- if product in ["rhel7", "ol7", "rhel9"] or 'ubuntu' in product -%}} ++{{%- if product in ["rhel7", "ol7", "rhel8", "ol8", "rhel9"] or 'ubuntu' in product -%}} + Inspect the form of default GRUB 2 command line for the Linux operating system + in /etc/default/grub. If it includes {{{ arg_name_value }}}, + then the parameter will be configured for newly installed kernels. +@@ -1660,8 +1660,12 @@ If this option is set to true, then check that a line is output by the following + If the recovery is disabled, check the line with +
      $ grep 'GRUB_CMDLINE_LINUX.*{{{ arg_name_value }}}.*' /etc/default/grub
      . + {{%- if 'ubuntu' in product -%}} +-Moreover, current Grub2 config file in {{{ grub2_boot_path }}}/grub.cfg must be checked. +-
      # grep vmlinuz {{{ grub2_boot_path }}}/grub.cfg | grep -v '{{{ arg_name_value }}}'
      ++Moreover, current Grub config file grub.cfg must be checked. The file can be found ++either in {{{ grub2_boot_path }}} in case of legacy BIOS systems, or in {{{ grub2_uefi_boot_path }}} in case of UEFI systems. ++If they include {{{ arg_name_value }}}, then the parameter ++is configured at boot time. ++
      # grep vmlinuz GRUB_CFG_FILE_PATH | grep -v '{{{ arg_name_value }}}'
      ++Fill in GRUB_CFG_FILE_PATH based on information above. + This command should not return any output. + {{%- else -%}} + Moreover, command line parameters for currently installed kernels should be checked as well. +@@ -1678,6 +1682,7 @@ in grubenv that can be found either in {{{ grub2_boot_path }}} + {{%- endif %}} + If they include {{{ arg_name_value }}}, then the parameter + is configured at boot time. +-
      # grep 'kernelopts.*{{{ arg_name_value }}}.*' {{{ grub2_boot_path }}}/grubenv
      ++
      # grep 'kernelopts.*{{{ arg_name_value }}}.*' GRUBENV_FILE_LOCATION
      ++Fill in GRUBENV_FILE_LOCATION based on information above. + {{%- endif -%}} + {{%- endmacro -%}} diff --git a/SOURCES/scap-security-guide-0.1.61-grub2_template_fix-PR_8180.patch b/SOURCES/scap-security-guide-0.1.61-grub2_template_fix-PR_8180.patch new file mode 100644 index 0000000..75a44a7 --- /dev/null +++ b/SOURCES/scap-security-guide-0.1.61-grub2_template_fix-PR_8180.patch @@ -0,0 +1,842 @@ +From 1bd88bbdc7ce8b6e2265f323cd3a777ef2240e6b Mon Sep 17 00:00:00 2001 +From: Matej Tyc +Date: Fri, 28 Jan 2022 17:11:56 +0100 +Subject: [PATCH 1/5] Change the grub2 bootloader argument template + +- Introduce the concept of product-specific bootloader config + properties that determine the check/remediation form. +- Expand the RHEL8 remediation with a check for update of + /etc/default/grub contents. +- Add a RHEL8 check that looks for kernelopts references in loader entries. +- Update tests. +--- + .../grub2_entries_reference_kernelopts.xml | 25 +++++ + .../ansible.template | 35 ++++++- + .../grub2_bootloader_argument/bash.template | 48 +++++++-- + .../grub2_bootloader_argument/oval.template | 97 +++++++++++++------ + .../arg_not_there_etcdefaultgrub.fail.sh | 2 +- + ....fail.sh => arg_not_there_grubenv.fail.sh} | 0 + 6 files changed, 164 insertions(+), 43 deletions(-) + create mode 100644 shared/checks/oval/grub2_entries_reference_kernelopts.xml + rename shared/templates/grub2_bootloader_argument/tests/{arg_not_there.fail.sh => arg_not_there_grubenv.fail.sh} (100%) + +diff --git a/shared/checks/oval/grub2_entries_reference_kernelopts.xml b/shared/checks/oval/grub2_entries_reference_kernelopts.xml +new file mode 100644 +index 00000000000..1aec9fe64d2 +--- /dev/null ++++ b/shared/checks/oval/grub2_entries_reference_kernelopts.xml +@@ -0,0 +1,25 @@ ++ ++ ++ {{{ oval_metadata( ++ "Ensure that grubenv-defined kernel options are referenced in individual boot loader entries", ++ title="Use $kernelopts in /boot/loader/entries/*.conf", ++ affected_platforms=["multi_platform_all"]) }}} ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ /boot/loader/entries/ ++ ^.*\.conf$ ++ ^options .*\b\$kernelopts\b.*$ ++ 1 ++ ++ +diff --git a/shared/templates/grub2_bootloader_argument/ansible.template b/shared/templates/grub2_bootloader_argument/ansible.template +index 58d4fab69fa..de970879c8f 100644 +--- a/shared/templates/grub2_bootloader_argument/ansible.template ++++ b/shared/templates/grub2_bootloader_argument/ansible.template +@@ -4,7 +4,34 @@ + # complexity = medium + # disruption = low + +-{{% if product in ["rhel7", "ol7", "rhel9"] or 'ubuntu' in product %}} ++{{# ++ See the OVAL template for more comments. ++ Product-specific categorization should be synced across all template content types ++-#}} ++{{% set system_with_expanded_kernel_options_in_loader_entries = false -%}} ++{{% set system_with_referenced_kernel_options_in_loader_entries = false -%}} ++{{% set system_with_kernel_options_in_grubenv = false -%}} ++{{% set system_with_kernel_options_in_etc_default_grub = false -%}} ++{{% set system_with_expanded_kernel_options_in_grub_cfg = false -%}} ++ ++{{% if product in ["rhel9"] %}} ++{{% set system_with_expanded_kernel_options_in_loader_entries = true %}} ++{{% endif -%}} ++ ++{{% if product in ["rhel8"] %}} ++{{% set system_with_referenced_kernel_options_in_loader_entries = true %}} ++{{% set system_with_kernel_options_in_grubenv = true %}} ++{{% endif -%}} ++ ++{{% if product in ["rhel7", "ol7"] or 'ubuntu' in product %}} ++{{% set system_with_expanded_kernel_options_in_grub_cfg = true %}} ++{{% endif -%}} ++ ++{{% if product in ["rhel7", "ol7", "rhel8", "ol8", "rhel9"] or 'ubuntu' in product %}} ++{{% set system_with_kernel_options_in_etc_default_grub = true %}} ++{{% endif -%}} ++ ++{{% if system_with_kernel_options_in_etc_default_grub -%}} + - name: Check {{{ ARG_NAME }}} argument exists + command: grep 'GRUB_CMDLINE_LINUX.*{{{ ARG_NAME }}}=' /etc/default/grub + failed_when: False +@@ -27,7 +54,9 @@ + - name: Update bootloader menu + command: /sbin/grubby --update-kernel=ALL --args="{{{ ARG_NAME_VALUE }}}" + +-{{% else %}} ++{{%- endif %}} ++ ++{{% if system_with_kernel_options_in_grubenv -%}} + + - name: Get current kernel parameters + ansible.builtin.shell: +@@ -50,4 +79,4 @@ + when: + - kernelopts.rc != 0 + +-{{% endif %}} ++{{%- endif %}} +diff --git a/shared/templates/grub2_bootloader_argument/bash.template b/shared/templates/grub2_bootloader_argument/bash.template +index 631e686897e..817fd1fde23 100644 +--- a/shared/templates/grub2_bootloader_argument/bash.template ++++ b/shared/templates/grub2_bootloader_argument/bash.template +@@ -1,6 +1,41 @@ + # platform = multi_platform_rhel,multi_platform_fedora,multi_platform_ol,multi_platform_rhv,multi_platform_ubuntu,multi_platform_sle ++{{# ++ See the OVAL template for more comments. ++ Product-specific categorization should be synced across all template content types ++-#}} + +-{{% if product in ["rhel7", "ol7", "rhel9"] or 'ubuntu' in product %}} ++{{% set system_with_expanded_kernel_options_in_loader_entries = false -%}} ++{{% set system_with_referenced_kernel_options_in_loader_entries = false -%}} ++{{% set system_with_kernel_options_in_grubenv = false -%}} ++{{% set system_with_kernel_options_in_etc_default_grub = false -%}} ++{{% set system_with_expanded_kernel_options_in_grub_cfg = false -%}} ++ ++{{% if product in ["rhel9"] %}} ++{{% set system_with_expanded_kernel_options_in_loader_entries = true %}} ++{{% endif -%}} ++ ++{{% if product in ["rhel8"] %}} ++{{% set system_with_referenced_kernel_options_in_loader_entries = true %}} ++{{% set system_with_kernel_options_in_grubenv = true %}} ++{{% endif -%}} ++ ++{{% if product in ["rhel7", "ol7"] or 'ubuntu' in product %}} ++{{% set system_with_expanded_kernel_options_in_grub_cfg = true %}} ++{{% endif -%}} ++ ++{{% if product in ["rhel7", "ol7", "rhel8", "ol8", "rhel9"] or 'ubuntu' in product %}} ++{{% set system_with_kernel_options_in_etc_default_grub = true %}} ++{{% endif -%}} ++ ++{{% macro update_etc_default_grub(arg_name_value) %}} ++{{% if 'ubuntu' in product %}} ++update-grub ++{{% else %}} ++grubby --update-kernel=ALL --args="{{{ arg_name_value }}}" ++{{% endif %}} ++{{% endmacro -%}} ++ ++{{% if system_with_kernel_options_in_etc_default_grub %}} + {{% if '/' in ARG_NAME %}} + {{{ raise("ARG_NAME (" + ARG_NAME + ") uses sed path separator (/) in " + rule_id) }}} + {{% elif '/' in ARG_NAME_VALUE %}} +@@ -14,14 +49,11 @@ else + # no {{{ ARG_NAME }}}=arg is present, append it + sed -i 's/\(^GRUB_CMDLINE_LINUX=".*\)"/\1 {{{ ARG_NAME_VALUE }}}"/' '/etc/default/grub' + fi +- +-{{% if 'ubuntu' in product %}} +-update-grub +-{{% else %}} +-# Correct the form of kernel command line for each installed kernel in the bootloader +-grubby --update-kernel=ALL --args="{{{ ARG_NAME_VALUE }}}" + {{% endif %}} +-{{% else %}} ++ ++{{{ update_etc_default_grub(ARG_NAME_VALUE) }}} ++ ++{{% if system_with_kernel_options_in_grubenv -%}} + # Correct grub2 kernelopts value using grub2-editenv + existing_kernelopts="$(grub2-editenv - list | grep kernelopts)" + if ! printf '%s' "$existing_kernelopts" | grep -qE '^kernelopts=(.*\s)?{{{ ARG_NAME_VALUE }}}(\s.*)?$'; then +diff --git a/shared/templates/grub2_bootloader_argument/oval.template b/shared/templates/grub2_bootloader_argument/oval.template +index 3ea8acb2910..24258a3bcbd 100644 +--- a/shared/templates/grub2_bootloader_argument/oval.template ++++ b/shared/templates/grub2_bootloader_argument/oval.template +@@ -1,15 +1,53 @@ ++{{#- ++ We set defaults to "off", and products should enable relevant ones depending on how the product configures grub. ++ - /boot/loader/entries/* may not exist don't exist ++ - If they exist, they can reference variables defined in grubenv, or they can contain literal args ++ - The grub cfg may either use those loader entries, or it can contain literal values as well ++ - Kernel opts can be stored in /etc/default/grub so they are persistent between kernel upgrades ++-#}} ++{{% set system_with_expanded_kernel_options_in_loader_entries = false -%}} ++{{% set system_with_referenced_kernel_options_in_loader_entries = false -%}} ++{{% set system_with_kernel_options_in_grubenv = false -%}} ++{{% set system_with_kernel_options_in_etc_default_grub = false -%}} ++{{% set system_with_expanded_kernel_options_in_grub_cfg = false -%}} ++ ++{{% if product in ["rhel9"] -%}} ++{{% set system_with_expanded_kernel_options_in_loader_entries = true %}} ++{{%- endif -%}} ++ ++{{% if product in ["rhel8"] -%}} ++{{% set system_with_referenced_kernel_options_in_loader_entries = true %}} ++{{% set system_with_kernel_options_in_grubenv = true %}} ++{{%- endif -%}} ++ ++{{% if product in ["rhel7", "ol7"] or 'ubuntu' in product -%}} ++{{% set system_with_expanded_kernel_options_in_grub_cfg = true %}} ++{{%- endif -%}} ++ ++{{%- if product in ["rhel7", "ol7", "rhel8", "ol8", "rhel9"] or 'ubuntu' in product %}} ++{{% set system_with_kernel_options_in_etc_default_grub = true %}} ++{{%- endif -%}} ++ + + + {{{ oval_metadata("Ensure " + ARG_NAME_VALUE + " is configured in the kernel line in /etc/default/grub.") }}} + +- {{% if product in ["rhel7", "ol7", "rhel9"] or 'ubuntu' in product %}} +- {{% if product in ['rhel9'] %}} ++ {{% if system_with_kernel_options_in_grubenv -%}} ++ ++ {{%- endif %}} ++ {{% if system_with_referenced_kernel_options_in_loader_entries -%}} ++ ++ {{%- endif %}} ++ {{% if system_with_expanded_kernel_options_in_loader_entries -%}} + +- {{% else %}} ++ {{%- endif %}} ++ {{% if system_with_expanded_kernel_options_in_grub_cfg -%}} + +- {{% endif %}} ++ {{%- endif %}} ++ {{% if system_with_kernel_options_in_etc_default_grub -%}} + + +@@ -20,14 +58,11 @@ + comment="Check GRUB_DISABLE_RECOVERY=true in /etc/default/grub" /> + + +- {{% else %}} +- +- {{% endif %}} ++ {{%- endif %}} + + + +-{{% if product in ["rhel7", "ol7", "rhel9"] or 'ubuntu' in product %}} ++{{%- if system_with_kernel_options_in_etc_default_grub %}} + +@@ -54,8 +89,25 @@ + ^\s*GRUB_CMDLINE_LINUX_DEFAULT="(.*)"$ + 1 + ++{{%- endif %}} ++ ++{{%- if system_with_kernel_options_in_grubenv %}} ++ ++ ++ ++ + +- {{% if product in ["rhel9"] %}} ++ ++ {{{ grub2_boot_path }}}/grubenv ++ ^kernelopts=(.*)$ ++ 1 ++ ++{{%- endif %}} ++ ++{{%- if system_with_expanded_kernel_options_in_loader_entries %}} + +@@ -69,7 +121,9 @@ + ^options (.*)$ + 1 + +- {{% else %}} ++{{%- endif %}} ++ ++{{%- if system_with_expanded_kernel_options_in_grub_cfg %}} + +@@ -87,26 +141,7 @@ + {{% endif %}} + 1 + +- +- {{% endif %}} +- +-{{% else %}} +- +- +- +- +- +- +- +- {{{ grub2_boot_path }}}/grubenv +- ^kernelopts=(.*)$ +- 1 +- +- +-{{% endif %}} ++{{%- endif %}} + + +diff --git a/shared/templates/grub2_bootloader_argument/tests/arg_not_there_etcdefaultgrub.fail.sh b/shared/templates/grub2_bootloader_argument/tests/arg_not_there_etcdefaultgrub.fail.sh +index a56e6d09235..a270be45952 100644 +--- a/shared/templates/grub2_bootloader_argument/tests/arg_not_there_etcdefaultgrub.fail.sh ++++ b/shared/templates/grub2_bootloader_argument/tests/arg_not_there_etcdefaultgrub.fail.sh +@@ -1,6 +1,6 @@ + #!/bin/bash + +-# platform = Red Hat Enterprise Linux 7,Red Hat Enterprise Linux 9 ++# platform = Red Hat Enterprise Linux 7,Red Hat Enterprise Linux 8,Red Hat Enterprise Linux 9 + + # Removes argument from kernel command line in /etc/default/grub + if grep -q '^GRUB_CMDLINE_LINUX=.*{{{ARG_NAME}}}=.*"' '/etc/default/grub' ; then +diff --git a/shared/templates/grub2_bootloader_argument/tests/arg_not_there.fail.sh b/shared/templates/grub2_bootloader_argument/tests/arg_not_there_grubenv.fail.sh +similarity index 100% +rename from shared/templates/grub2_bootloader_argument/tests/arg_not_there.fail.sh +rename to shared/templates/grub2_bootloader_argument/tests/arg_not_there_grubenv.fail.sh + +From 0d10bf751d5e1d7f024cd7301f8b02b38c0e3b9c Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Mat=C4=9Bj=20T=C3=BD=C4=8D?= +Date: Wed, 9 Feb 2022 11:19:06 +0100 +Subject: [PATCH 2/5] Change the default product setting + +Assume that every product stores kernel opts in the /etc/default/grub +--- + shared/templates/grub2_bootloader_argument/ansible.template | 6 +----- + shared/templates/grub2_bootloader_argument/bash.template | 6 +----- + shared/templates/grub2_bootloader_argument/oval.template | 6 +----- + 3 files changed, 3 insertions(+), 15 deletions(-) + +diff --git a/shared/templates/grub2_bootloader_argument/ansible.template b/shared/templates/grub2_bootloader_argument/ansible.template +index de970879c8f..46de9b465c2 100644 +--- a/shared/templates/grub2_bootloader_argument/ansible.template ++++ b/shared/templates/grub2_bootloader_argument/ansible.template +@@ -11,7 +11,7 @@ + {{% set system_with_expanded_kernel_options_in_loader_entries = false -%}} + {{% set system_with_referenced_kernel_options_in_loader_entries = false -%}} + {{% set system_with_kernel_options_in_grubenv = false -%}} +-{{% set system_with_kernel_options_in_etc_default_grub = false -%}} ++{{% set system_with_kernel_options_in_etc_default_grub = true -%}} + {{% set system_with_expanded_kernel_options_in_grub_cfg = false -%}} + + {{% if product in ["rhel9"] %}} +@@ -27,10 +27,6 @@ + {{% set system_with_expanded_kernel_options_in_grub_cfg = true %}} + {{% endif -%}} + +-{{% if product in ["rhel7", "ol7", "rhel8", "ol8", "rhel9"] or 'ubuntu' in product %}} +-{{% set system_with_kernel_options_in_etc_default_grub = true %}} +-{{% endif -%}} +- + {{% if system_with_kernel_options_in_etc_default_grub -%}} + - name: Check {{{ ARG_NAME }}} argument exists + command: grep 'GRUB_CMDLINE_LINUX.*{{{ ARG_NAME }}}=' /etc/default/grub +diff --git a/shared/templates/grub2_bootloader_argument/bash.template b/shared/templates/grub2_bootloader_argument/bash.template +index 817fd1fde23..b188d1e3689 100644 +--- a/shared/templates/grub2_bootloader_argument/bash.template ++++ b/shared/templates/grub2_bootloader_argument/bash.template +@@ -7,7 +7,7 @@ + {{% set system_with_expanded_kernel_options_in_loader_entries = false -%}} + {{% set system_with_referenced_kernel_options_in_loader_entries = false -%}} + {{% set system_with_kernel_options_in_grubenv = false -%}} +-{{% set system_with_kernel_options_in_etc_default_grub = false -%}} ++{{% set system_with_kernel_options_in_etc_default_grub = true -%}} + {{% set system_with_expanded_kernel_options_in_grub_cfg = false -%}} + + {{% if product in ["rhel9"] %}} +@@ -23,10 +23,6 @@ + {{% set system_with_expanded_kernel_options_in_grub_cfg = true %}} + {{% endif -%}} + +-{{% if product in ["rhel7", "ol7", "rhel8", "ol8", "rhel9"] or 'ubuntu' in product %}} +-{{% set system_with_kernel_options_in_etc_default_grub = true %}} +-{{% endif -%}} +- + {{% macro update_etc_default_grub(arg_name_value) %}} + {{% if 'ubuntu' in product %}} + update-grub +diff --git a/shared/templates/grub2_bootloader_argument/oval.template b/shared/templates/grub2_bootloader_argument/oval.template +index 24258a3bcbd..88fa7b7a3ee 100644 +--- a/shared/templates/grub2_bootloader_argument/oval.template ++++ b/shared/templates/grub2_bootloader_argument/oval.template +@@ -8,7 +8,7 @@ + {{% set system_with_expanded_kernel_options_in_loader_entries = false -%}} + {{% set system_with_referenced_kernel_options_in_loader_entries = false -%}} + {{% set system_with_kernel_options_in_grubenv = false -%}} +-{{% set system_with_kernel_options_in_etc_default_grub = false -%}} ++{{% set system_with_kernel_options_in_etc_default_grub = true -%}} + {{% set system_with_expanded_kernel_options_in_grub_cfg = false -%}} + + {{% if product in ["rhel9"] -%}} +@@ -24,10 +24,6 @@ + {{% set system_with_expanded_kernel_options_in_grub_cfg = true %}} + {{%- endif -%}} + +-{{%- if product in ["rhel7", "ol7", "rhel8", "ol8", "rhel9"] or 'ubuntu' in product %}} +-{{% set system_with_kernel_options_in_etc_default_grub = true %}} +-{{%- endif -%}} +- + + + {{{ oval_metadata("Ensure " + ARG_NAME_VALUE + " is configured in the kernel line in /etc/default/grub.") }}} + +From fac0aeb351d7acab1112482d11a0be73df662496 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Mat=C4=9Bj=20T=C3=BD=C4=8D?= +Date: Fri, 11 Feb 2022 14:55:53 +0100 +Subject: [PATCH 3/5] Improve the template further + +- Fix the $kernelopts regex - $ is not a word char. +- Use grubby exclusively on RHEL systems and structure remediations differently than OVAL checks +- Exclude the rescue.conf loader entry from checks, as it is not a boot entry for general use. +--- + .../grub2_entries_reference_kernelopts.xml | 2 +- + .../ansible.template | 72 +------------------ + .../grub2_bootloader_argument/bash.template | 67 +++++------------ + .../grub2_bootloader_argument/oval.template | 7 +- + .../tests/invalid_rescue.pass.sh | 6 ++ + tests/test_rule_in_container.sh | 2 +- + 6 files changed, 33 insertions(+), 123 deletions(-) + create mode 100644 shared/templates/grub2_bootloader_argument/tests/invalid_rescue.pass.sh + +diff --git a/shared/checks/oval/grub2_entries_reference_kernelopts.xml b/shared/checks/oval/grub2_entries_reference_kernelopts.xml +index 1aec9fe64d2..30f3965a037 100644 +--- a/shared/checks/oval/grub2_entries_reference_kernelopts.xml ++++ b/shared/checks/oval/grub2_entries_reference_kernelopts.xml +@@ -19,7 +19,7 @@ + + /boot/loader/entries/ + ^.*\.conf$ +- ^options .*\b\$kernelopts\b.*$ ++ ^options(?:\s+.*)?\s+\$kernelopts\b.*$ + 1 + + +diff --git a/shared/templates/grub2_bootloader_argument/ansible.template b/shared/templates/grub2_bootloader_argument/ansible.template +index 46de9b465c2..db3b4430d4b 100644 +--- a/shared/templates/grub2_bootloader_argument/ansible.template ++++ b/shared/templates/grub2_bootloader_argument/ansible.template +@@ -4,75 +4,5 @@ + # complexity = medium + # disruption = low + +-{{# +- See the OVAL template for more comments. +- Product-specific categorization should be synced across all template content types +--#}} +-{{% set system_with_expanded_kernel_options_in_loader_entries = false -%}} +-{{% set system_with_referenced_kernel_options_in_loader_entries = false -%}} +-{{% set system_with_kernel_options_in_grubenv = false -%}} +-{{% set system_with_kernel_options_in_etc_default_grub = true -%}} +-{{% set system_with_expanded_kernel_options_in_grub_cfg = false -%}} +- +-{{% if product in ["rhel9"] %}} +-{{% set system_with_expanded_kernel_options_in_loader_entries = true %}} +-{{% endif -%}} +- +-{{% if product in ["rhel8"] %}} +-{{% set system_with_referenced_kernel_options_in_loader_entries = true %}} +-{{% set system_with_kernel_options_in_grubenv = true %}} +-{{% endif -%}} +- +-{{% if product in ["rhel7", "ol7"] or 'ubuntu' in product %}} +-{{% set system_with_expanded_kernel_options_in_grub_cfg = true %}} +-{{% endif -%}} +- +-{{% if system_with_kernel_options_in_etc_default_grub -%}} +-- name: Check {{{ ARG_NAME }}} argument exists +- command: grep 'GRUB_CMDLINE_LINUX.*{{{ ARG_NAME }}}=' /etc/default/grub +- failed_when: False +- register: argcheck +- +-- name: Replace existing {{{ ARG_NAME }}} argument +- replace: +- path: /etc/default/grub +- regexp: '{{{ ARG_NAME }}}=\w+' +- replace: '{{{ ARG_NAME_VALUE }}}' +- when: argcheck.rc == 0 +- +-- name: Add {{{ ARG_NAME }}} argument +- replace: +- path: /etc/default/grub +- regexp: '(GRUB_CMDLINE_LINUX=.*)"' +- replace: '\1 {{{ ARG_NAME_VALUE }}}"' +- when: argcheck.rc != 0 +- +-- name: Update bootloader menu ++- name: Update grub defaults and the bootloader menu + command: /sbin/grubby --update-kernel=ALL --args="{{{ ARG_NAME_VALUE }}}" +- +-{{%- endif %}} +- +-{{% if system_with_kernel_options_in_grubenv -%}} +- +-- name: Get current kernel parameters +- ansible.builtin.shell: +- cmd: '/usr/bin/grub2-editenv - list | grep "kernelopts="' +- register: kernelopts +- ignore_errors: yes +- changed_when: False +- +-- name: Update the bootloader menu +- command: /usr/bin/grub2-editenv - set "{{ item }} {{{ ARG_NAME_VALUE }}}" +- with_items: "{{ kernelopts.stdout_lines | select('match', '^kernelopts.*') | list }}" +- when: +- - kernelopts.rc == 0 +- - kernelopts.stdout_lines is defined +- - kernelopts.stdout_lines | length > 0 +- - kernelopts.stdout | regex_search('^kernelopts=(?:.*\s)?{{{ ARG_NAME_VALUE }}}(?:\s.*)?$', multiline=True) is none +- +-- name: Update the bootloader menu when there are no entries previously set +- command: /usr/bin/grub2-editenv - set "kernelopts={{{ ARG_NAME_VALUE }}}" +- when: +- - kernelopts.rc != 0 +- +-{{%- endif %}} +diff --git a/shared/templates/grub2_bootloader_argument/bash.template b/shared/templates/grub2_bootloader_argument/bash.template +index b188d1e3689..5f97efd498f 100644 +--- a/shared/templates/grub2_bootloader_argument/bash.template ++++ b/shared/templates/grub2_bootloader_argument/bash.template +@@ -4,59 +4,28 @@ + Product-specific categorization should be synced across all template content types + -#}} + +-{{% set system_with_expanded_kernel_options_in_loader_entries = false -%}} +-{{% set system_with_referenced_kernel_options_in_loader_entries = false -%}} +-{{% set system_with_kernel_options_in_grubenv = false -%}} +-{{% set system_with_kernel_options_in_etc_default_grub = true -%}} +-{{% set system_with_expanded_kernel_options_in_grub_cfg = false -%}} ++{{% set grub_helper_executable = "grubby" -%}} ++{{% set grub_helper_args = ["--update-kernel=ALL", "--args=" ~ ARG_NAME_VALUE] -%}} + +-{{% if product in ["rhel9"] %}} +-{{% set system_with_expanded_kernel_options_in_loader_entries = true %}} +-{{% endif -%}} +- +-{{% if product in ["rhel8"] %}} +-{{% set system_with_referenced_kernel_options_in_loader_entries = true %}} +-{{% set system_with_kernel_options_in_grubenv = true %}} +-{{% endif -%}} +- +-{{% if product in ["rhel7", "ol7"] or 'ubuntu' in product %}} +-{{% set system_with_expanded_kernel_options_in_grub_cfg = true %}} +-{{% endif -%}} +- +-{{% macro update_etc_default_grub(arg_name_value) %}} +-{{% if 'ubuntu' in product %}} +-update-grub +-{{% else %}} +-grubby --update-kernel=ALL --args="{{{ arg_name_value }}}" +-{{% endif %}} +-{{% endmacro -%}} +- +-{{% if system_with_kernel_options_in_etc_default_grub %}} +-{{% if '/' in ARG_NAME %}} +-{{{ raise("ARG_NAME (" + ARG_NAME + ") uses sed path separator (/) in " + rule_id) }}} +-{{% elif '/' in ARG_NAME_VALUE %}} +-{{{ raise("ARG_NAME_VALUE (" + ARG_NAME_VALUE + ") uses sed path separator (/) in " + rule_id) }}} +-{{% endif %}} ++{{%- macro update_etc_default_grub_manually() -%}} + # Correct the form of default kernel command line in GRUB + if grep -q '^GRUB_CMDLINE_LINUX=.*{{{ ARG_NAME }}}=.*"' '/etc/default/grub' ; then +- # modify the GRUB command-line if an {{{ ARG_NAME }}}= arg already exists +- sed -i 's/\(^GRUB_CMDLINE_LINUX=".*\){{{ ARG_NAME }}}=[^[:space:]]*\(.*"\)/\1 {{{ ARG_NAME_VALUE }}} \2/' '/etc/default/grub' ++ # modify the GRUB command-line if an {{{ ARG_NAME }}}= arg already exists ++ sed -i 's/\(^GRUB_CMDLINE_LINUX=".*\){{{ ARG_NAME }}}=[^[:space:]]*\(.*"\)/\1 {{{ ARG_NAME_VALUE }}} \2/' '/etc/default/grub' + else +- # no {{{ ARG_NAME }}}=arg is present, append it +- sed -i 's/\(^GRUB_CMDLINE_LINUX=".*\)"/\1 {{{ ARG_NAME_VALUE }}}"/' '/etc/default/grub' ++ # no {{{ ARG_NAME }}}=arg is present, append it ++ sed -i 's/\(^GRUB_CMDLINE_LINUX=".*\)"/\1 {{{ ARG_NAME_VALUE }}}"/' '/etc/default/grub' + fi +-{{% endif %}} ++{{%- endmacro %}} ++ ++{{% if 'ubuntu' in product %}} ++{{{ update_etc_default_grub_manually() }}} ++{{% set grub_helper_executable = "update-grub" -%}} ++{{% endif -%}} + +-{{{ update_etc_default_grub(ARG_NAME_VALUE) }}} ++{{% if product in ["rhel8", "ol8"] %}} ++{{# Suppress the None output of append -#}} ++{{{ grub_helper_args.append("--env=/boot/grub2/grubenv") or "" -}}} ++{{% endif -%}} + +-{{% if system_with_kernel_options_in_grubenv -%}} +-# Correct grub2 kernelopts value using grub2-editenv +-existing_kernelopts="$(grub2-editenv - list | grep kernelopts)" +-if ! printf '%s' "$existing_kernelopts" | grep -qE '^kernelopts=(.*\s)?{{{ ARG_NAME_VALUE }}}(\s.*)?$'; then +- if test -n "$existing_kernelopts"; then +- grub2-editenv - set "$existing_kernelopts {{{ ARG_NAME_VALUE }}}" +- else +- grub2-editenv - set "kernelopts={{{ ARG_NAME_VALUE }}}" +- fi +-fi +-{{% endif %}} ++{{{ grub_helper_executable }}} {{{ " ".join(grub_helper_args) }}} +diff --git a/shared/templates/grub2_bootloader_argument/oval.template b/shared/templates/grub2_bootloader_argument/oval.template +index 88fa7b7a3ee..6981cc14045 100644 +--- a/shared/templates/grub2_bootloader_argument/oval.template ++++ b/shared/templates/grub2_bootloader_argument/oval.template +@@ -1,6 +1,6 @@ + {{#- + We set defaults to "off", and products should enable relevant ones depending on how the product configures grub. +- - /boot/loader/entries/* may not exist don't exist ++ - /boot/loader/entries/* may not exist. + - If they exist, they can reference variables defined in grubenv, or they can contain literal args + - The grub cfg may either use those loader entries, or it can contain literal values as well + - Kernel opts can be stored in /etc/default/grub so they are persistent between kernel upgrades +@@ -116,7 +116,12 @@ + ^.*\.conf$ + ^options (.*)$ + 1 ++ state_grub2_rescue_entry_for_{{{ _RULE_ID }}} + ++ ++ ++ rescue.conf ++ + {{%- endif %}} + + {{%- if system_with_expanded_kernel_options_in_grub_cfg %}} +diff --git a/shared/templates/grub2_bootloader_argument/tests/invalid_rescue.pass.sh b/shared/templates/grub2_bootloader_argument/tests/invalid_rescue.pass.sh +new file mode 100644 +index 00000000000..ee6e2c67f34 +--- /dev/null ++++ b/shared/templates/grub2_bootloader_argument/tests/invalid_rescue.pass.sh +@@ -0,0 +1,6 @@ ++# platform = Red Hat Enterprise Linux 7,Red Hat Enterprise Linux 9 ++# packages = grub2,grubby ++ ++{{{ grub2_bootloader_argument_remediation(ARG_NAME, ARG_NAME_VALUE) }}} ++ ++echo "I am an invalid boot entry, but nobody should care, because I am rescue" > /boot/loader/entries/trololol-rescue.conf +diff --git a/tests/test_rule_in_container.sh b/tests/test_rule_in_container.sh +index 395fc4e856c..a8691ca7463 100755 +--- a/tests/test_rule_in_container.sh ++++ b/tests/test_rule_in_container.sh +@@ -221,7 +221,7 @@ additional_args=() + test "$_arg_dontclean" = on && additional_args+=(--dontclean) + + # Don't act on the default value. +-test -n "$_arg_scenarios" && additional_args+=(--scenario "'$_arg_scenarios'") ++test -n "$_arg_scenarios" && additional_args+=(--scenario "$_arg_scenarios") + + test -n "$_arg_datastream" && additional_args+=(--datastream "$_arg_datastream") + + +From 8dda6030dea885c7c7e7e8f1024f5f2edf5bc36c Mon Sep 17 00:00:00 2001 +From: Matej Tyc +Date: Mon, 14 Feb 2022 13:45:09 +0100 +Subject: [PATCH 4/5] Add support for checks of both BIOS/UEFI systems + +--- + .../grub2_bootloader_argument/oval.template | 57 +++++++++++++++---- + 1 file changed, 46 insertions(+), 11 deletions(-) + +diff --git a/shared/templates/grub2_bootloader_argument/oval.template b/shared/templates/grub2_bootloader_argument/oval.template +index 6981cc14045..71367465663 100644 +--- a/shared/templates/grub2_bootloader_argument/oval.template ++++ b/shared/templates/grub2_bootloader_argument/oval.template +@@ -10,6 +10,7 @@ + {{% set system_with_kernel_options_in_grubenv = false -%}} + {{% set system_with_kernel_options_in_etc_default_grub = true -%}} + {{% set system_with_expanded_kernel_options_in_grub_cfg = false -%}} ++{{% set system_with_bios_and_uefi_support = false -%}} + + {{% if product in ["rhel9"] -%}} + {{% set system_with_expanded_kernel_options_in_loader_entries = true %}} +@@ -24,13 +25,25 @@ + {{% set system_with_expanded_kernel_options_in_grub_cfg = true %}} + {{%- endif -%}} + ++{{% if grub2_uefi_boot_path and grub2_uefi_boot_path != grub2_boot_path -%}} ++{{% set system_with_bios_and_uefi_support = true %}} ++{{%- endif -%}} ++ + + + {{{ oval_metadata("Ensure " + ARG_NAME_VALUE + " is configured in the kernel line in /etc/default/grub.") }}} + + {{% if system_with_kernel_options_in_grubenv -%}} ++ {{% if system_with_bios_and_uefi_support -%}} ++ ++ {{%- endif %}} + ++ {{% if system_with_bios_and_uefi_support -%}} ++ ++ ++ {{%- endif %}} + {{%- endif %}} + {{% if system_with_referenced_kernel_options_in_loader_entries -%}} + +@@ -40,8 +53,16 @@ + comment="Check if {{{ ARG_NAME_VALUE }}} is present in the boot parameters in the /boot/loader/entries/*.conf" /> + {{%- endif %}} + {{% if system_with_expanded_kernel_options_in_grub_cfg -%}} ++ {{% if system_with_bios_and_uefi_support -%}} ++ ++ {{%- endif %}} + ++ {{% if system_with_bios_and_uefi_support -%}} ++ ++ ++ {{%- endif %}} + {{%- endif %}} + {{% if system_with_kernel_options_in_etc_default_grub -%}} + +@@ -88,19 +109,26 @@ + {{%- endif %}} + + {{%- if system_with_kernel_options_in_grubenv %}} +- +- ++ + + + +- +- {{{ grub2_boot_path }}}/grubenv ++ {{{ path }}} + ^kernelopts=(.*)$ + 1 + ++{{%- endmacro %}} ++ ++{{{ test_and_object_for_kernel_options_grub_env("grub2_" ~ SANITIZED_ARG_NAME ~ "_argument_grub_env", grub2_boot_path ~ "/grubenv") }}} ++{{% if system_with_bios_and_uefi_support -%}} ++{{{ test_and_object_for_kernel_options_grub_env("grub2_" ~ SANITIZED_ARG_NAME ~ "_argument_grub_env_uefi", grub2_uefi_boot_path ~ "/grubenv") }}} ++{{%- endif %}} + {{%- endif %}} + + {{%- if system_with_expanded_kernel_options_in_loader_entries %}} +@@ -120,21 +148,22 @@ + + + +- rescue.conf ++ .*rescue.conf$ + + {{%- endif %}} + + {{%- if system_with_expanded_kernel_options_in_grub_cfg %}} +- +- ++ + + + +- +- {{{ grub2_boot_path }}}/grub.cfg ++ {{{ path }}} + {{% if product in ["rhel7"] or 'ubuntu' in product %}} + ^.*/vmlinuz.*(root=.*)$ + {{% else %}} +@@ -142,6 +171,12 @@ + {{% endif %}} + 1 + ++{{%- endmacro %}} ++ ++{{{ test_and_object_for_kernel_options_grub_cfg("grub2_" + SANITIZED_ARG_NAME + "_argument_grub_cfg", grub2_boot_path ~ "/grub.cfg") }}} ++{{% if system_with_bios_and_uefi_support -%}} ++{{{ test_and_object_for_kernel_options_grub_cfg("grub2_" + SANITIZED_ARG_NAME + "_argument_grub_cfg_uefi", grub2_uefi_boot_path ~ "/grub.cfg") }}} ++{{%- endif %}} + {{%- endif %}} + + +Date: Mon, 14 Feb 2022 14:49:34 +0100 +Subject: [PATCH 5/5] Correct test scenario metadata + +- Grubenv doesn't relate to anything else than RHEL8 +- The grubby remediation has different behavior in corner-cases + that are technically unsupported, so the corresponding test scenario has been dropped. +--- + .../grub2_audit_argument/tests/blank_grubenv_rhel8.fail.sh | 1 + + .../auditing/grub2_audit_argument/tests/correct_grubenv.pass.sh | 2 +- + 2 files changed, 2 insertions(+), 1 deletion(-) + +diff --git a/linux_os/guide/system/auditing/grub2_audit_argument/tests/blank_grubenv_rhel8.fail.sh b/linux_os/guide/system/auditing/grub2_audit_argument/tests/blank_grubenv_rhel8.fail.sh +index 5af2acc317e..956c8ac79fd 100644 +--- a/linux_os/guide/system/auditing/grub2_audit_argument/tests/blank_grubenv_rhel8.fail.sh ++++ b/linux_os/guide/system/auditing/grub2_audit_argument/tests/blank_grubenv_rhel8.fail.sh +@@ -1,6 +1,7 @@ + #!/bin/bash + + # platform = Red Hat Enterprise Linux 8 ++# remediation = none + + # Removes audit argument from kernel command line in /boot/grub2/grubenv + file="/boot/grub2/grubenv" +diff --git a/linux_os/guide/system/auditing/grub2_audit_argument/tests/correct_grubenv.pass.sh b/linux_os/guide/system/auditing/grub2_audit_argument/tests/correct_grubenv.pass.sh +index 0ec9a1d6e38..9823b08dff9 100644 +--- a/linux_os/guide/system/auditing/grub2_audit_argument/tests/correct_grubenv.pass.sh ++++ b/linux_os/guide/system/auditing/grub2_audit_argument/tests/correct_grubenv.pass.sh +@@ -1,4 +1,4 @@ + #!/bin/bash +-# platform = Red Hat Enterprise Linux 8,Red Hat Enterprise Linux 9 ++# platform = Red Hat Enterprise Linux 8 + + grub2-editenv - set "$(grub2-editenv - list | grep kernelopts) audit=1" diff --git a/SOURCES/scap-security-guide-0.1.61-no_time_servers_chrony-PR_8187.patch b/SOURCES/scap-security-guide-0.1.61-no_time_servers_chrony-PR_8187.patch deleted file mode 100644 index 62a127f..0000000 --- a/SOURCES/scap-security-guide-0.1.61-no_time_servers_chrony-PR_8187.patch +++ /dev/null @@ -1,315 +0,0 @@ -commit ecedabee39e65415001ba59bf3c927329a10720f -Author: Watson Sato -Date: Mon Feb 28 11:40:02 2022 +0100 - - Manual edited patch scap-security-guide-0.1.61-no_time_servers_chrony-PR_8187.patch. - -diff --git a/linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/oval/shared.xml b/linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/oval/shared.xml -index a7b2a62..25a8589 100644 ---- a/linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/oval/shared.xml -+++ b/linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/oval/shared.xml -@@ -3,17 +3,25 @@ - {{{ oval_metadata("Configure the maxpoll setting in /etc/ntp.conf or chrony.conf - to continuously poll the time source servers.") }}} - -- -- -- -+ -+ -+ -+ -+ -+ - -- -- -- -+ -+ -+ -+ -+ -+ - - - -@@ -77,4 +85,26 @@ - maxpoll \d+ - - -+ -+ -+ -+ -+ ^/etc/chrony\.(conf|d/.+\.conf)$ -+ ^(?:server|pool).* -+ 1 -+ -+ -+ -+ -+ -+ -+ /etc/ntp.conf -+ ^server.* -+ 1 -+ -+ - -diff --git a/linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/rule.yml b/linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/rule.yml -index 854e8e8..77af724 100644 ---- a/linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/rule.yml -+++ b/linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/rule.yml -@@ -11,6 +11,8 @@ description: |- - maxpoll in /etc/ntp.conf or /etc/chrony.conf - add the following: -
      maxpoll {{{ xccdf_value("var_time_service_set_maxpoll") }}}
      -+ If no server or pool directives are configured, the rule evaluates -+ to pass. - {{% if product == "rhcos4" %}} -

      - Note that if the remediation shipping with this content is being used, the -diff --git a/linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/tests/chrony_no_pool_nor_servers.pass.sh b/linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/tests/chrony_no_pool_nor_servers.pass.sh -new file mode 100644 -index 0000000..bbae20f ---- /dev/null -+++ b/linux_os/guide/services/ntp/chronyd_or_ntpd_set_maxpoll/tests/chrony_no_pool_nor_servers.pass.sh -@@ -0,0 +1,12 @@ -+#!/bin/bash -+# packages = chrony -+# -+# profiles = xccdf_org.ssgproject.content_profile_stig -+ -+yum remove -y ntp -+ -+# Remove all pool and server options -+sed -i "/^pool.*/d" /etc/chrony.conf -+sed -i "/^server.*/d" /etc/chrony.conf -+ -+systemctl enable chronyd.service -diff --git a/linux_os/guide/services/ntp/chronyd_server_directive/oval/shared.xml b/linux_os/guide/services/ntp/chronyd_server_directive/oval/shared.xml -new file mode 100644 -index 0000000..2244e60 ---- /dev/null -+++ b/linux_os/guide/services/ntp/chronyd_server_directive/oval/shared.xml -@@ -0,0 +1,33 @@ -+ -+ -+ {{{ oval_metadata("Ensure Chrony has time sources configured with server directive") }}} -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ ^/etc/chrony\.(conf|d/.+\.conf)$ -+ ^[\s]*server.*$ -+ 1 -+ -+ -+ -+ -+ -+ -+ ^/etc/chrony\.(conf|d/.+\.conf)$ -+ ^[\s]+pool.*$ -+ 1 -+ -+ -diff --git a/linux_os/guide/services/ntp/chronyd_server_directive/rule.yml b/linux_os/guide/services/ntp/chronyd_server_directive/rule.yml -new file mode 100644 -index 0000000..6dc24f1 ---- /dev/null -+++ b/linux_os/guide/services/ntp/chronyd_server_directive/rule.yml -@@ -0,0 +1,32 @@ -+documentation_complete: true -+ -+title: 'Ensure Chrony is only configured with the server directive' -+ -+description: |- -+ Check that Chrony only has time sources configured with the server directive. -+ -+rationale: |- -+ Depending on the infrastruture being used the pool directive may not be supported. -+ -+severity: medium -+ -+platform: chrony -+ -+warnings: -+ - general: This rule doesn't come with a remediation, the time source needs to be added by the adminstrator. -+ -+identifiers: -+ cce@rhel8: CCE-86077-5 -+ cce@rhel9: CCE-87077-4 -+ -+references: -+ disa: CCI-001891 -+ srg: SRG-OS-000355-GPOS-00143,SRG-OS-000356-GPOS-00144,SRG-OS-000359-GPOS-00146 -+ stigid@rhel8: RHEL-08-030740 -+ -+ocil_clause: 'a remote time server is not configured or configured with pool directive' -+ -+ocil: |- -+ Run the following command and verify that time sources are only configure with server directive: -+

      # grep -E "^(server|pool)" /etc/chrony.conf
      -+ A line with the appropriate server should be returned, any line returned starting with pool is a finding. -diff --git a/linux_os/guide/services/ntp/chronyd_server_directive/tests/file_empty.fail.sh b/linux_os/guide/services/ntp/chronyd_server_directive/tests/file_empty.fail.sh -new file mode 100644 -index 0000000..d1ba075 ---- /dev/null -+++ b/linux_os/guide/services/ntp/chronyd_server_directive/tests/file_empty.fail.sh -@@ -0,0 +1,6 @@ -+#!/bin/bash -+# packages = chrony -+# platform = multi_platform_fedora,multi_platform_rhel -+# remediation = none -+ -+echo "" > /etc/chrony.conf -diff --git a/linux_os/guide/services/ntp/chronyd_server_directive/tests/file_missing.fail.sh b/linux_os/guide/services/ntp/chronyd_server_directive/tests/file_missing.fail.sh -new file mode 100644 -index 0000000..12a50eb ---- /dev/null -+++ b/linux_os/guide/services/ntp/chronyd_server_directive/tests/file_missing.fail.sh -@@ -0,0 +1,6 @@ -+#!/bin/bash -+# packages = chrony -+# platform = multi_platform_fedora,multi_platform_rhel -+# remediation = none -+ -+rm -f /etc/chrony.conf -diff --git a/linux_os/guide/services/ntp/chronyd_server_directive/tests/line_missing.fail.sh b/linux_os/guide/services/ntp/chronyd_server_directive/tests/line_missing.fail.sh -new file mode 100644 -index 0000000..bffa8b6 ---- /dev/null -+++ b/linux_os/guide/services/ntp/chronyd_server_directive/tests/line_missing.fail.sh -@@ -0,0 +1,7 @@ -+#!/bin/bash -+# packages = chrony -+# platform = multi_platform_fedora,multi_platform_rhel -+# remediation = none -+ -+echo "some line" > /etc/chrony.conf -+echo "another line" >> /etc/chrony.conf -diff --git a/linux_os/guide/services/ntp/chronyd_server_directive/tests/multiple_servers.pass.sh b/linux_os/guide/services/ntp/chronyd_server_directive/tests/multiple_servers.pass.sh -new file mode 100644 -index 0000000..5527f38 ---- /dev/null -+++ b/linux_os/guide/services/ntp/chronyd_server_directive/tests/multiple_servers.pass.sh -@@ -0,0 +1,8 @@ -+#!/bin/bash -+# packages = chrony -+# platform = multi_platform_fedora,multi_platform_rhel -+# remediation = none -+ -+sed -i "^pool.*" /etc/chrony.conf -+echo "server 0.pool.ntp.org" > /etc/chrony.conf -+echo "server 1.pool.ntp.org" >> /etc/chrony.conf -diff --git a/linux_os/guide/services/ntp/chronyd_server_directive/tests/only_pool.fail.sh b/linux_os/guide/services/ntp/chronyd_server_directive/tests/only_pool.fail.sh -new file mode 100644 -index 0000000..616fe88 ---- /dev/null -+++ b/linux_os/guide/services/ntp/chronyd_server_directive/tests/only_pool.fail.sh -@@ -0,0 +1,9 @@ -+#!/bin/bash -+# packages = chrony -+# platform = multi_platform_fedora,multi_platform_rhel -+# remediation = none -+ -+sed -i "^server.*" /etc/chrony.conf -+if ! grep "^pool.*" /etc/chrony.conf; then -+ echo "pool 0.pool.ntp.org" > /etc/chrony.conf -+fi -diff --git a/linux_os/guide/services/ntp/chronyd_server_directive/tests/only_server.pass.sh b/linux_os/guide/services/ntp/chronyd_server_directive/tests/only_server.pass.sh -new file mode 100644 -index 0000000..21a70dc ---- /dev/null -+++ b/linux_os/guide/services/ntp/chronyd_server_directive/tests/only_server.pass.sh -@@ -0,0 +1,6 @@ -+#!/bin/bash -+# packages = chrony -+# platform = multi_platform_fedora,multi_platform_rhel -+ -+sed -i "^pool.*" /etc/chrony.conf -+echo "server 0.pool.ntp.org" > /etc/chrony.conf -diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index 7e142a9..bfb3753 100644 ---- a/products/rhel8/profiles/stig.profile -+++ b/products/rhel8/profiles/stig.profile -@@ -910,6 +910,7 @@ selections: - # RHEL-08-030740 - # remediation fails because default configuration file contains pool instead of server keyword - - chronyd_or_ntpd_set_maxpoll -+ - chronyd_server_directive - - # RHEL-08-030741 - - chronyd_client_only -diff --git a/shared/references/cce-redhat-avail.txt b/shared/references/cce-redhat-avail.txt -index 0584677..ec92589 100644 ---- a/shared/references/cce-redhat-avail.txt -+++ b/shared/references/cce-redhat-avail.txt -@@ -188,7 +188,6 @@ CCE-86073-4 - CCE-86074-2 - CCE-86075-9 - CCE-86076-7 --CCE-86077-5 - CCE-86078-3 - CCE-86079-1 - CCE-86080-9 -@@ -1168,7 +1167,6 @@ CCE-87073-3 - CCE-87074-1 - CCE-87075-8 - CCE-87076-6 --CCE-87077-4 - CCE-87078-2 - CCE-87079-0 - CCE-87080-8 -diff --git a/tests/data/profile_stability/rhel8/stig.profile b/tests/data/profile_stability/rhel8/stig.profile -index 26391b9..2411f02 100644 ---- a/tests/data/profile_stability/rhel8/stig.profile -+++ b/tests/data/profile_stability/rhel8/stig.profile -@@ -154,6 +154,7 @@ selections: - - chronyd_client_only - - chronyd_no_chronyc_network - - chronyd_or_ntpd_set_maxpoll -+- chronyd_server_directive - - clean_components_post_updating - - configure_bashrc_exec_tmux - - configure_bind_crypto_policy -diff --git a/tests/data/profile_stability/rhel8/stig_gui.profile b/tests/data/profile_stability/rhel8/stig_gui.profile -index 31a3264..f0a9601 100644 ---- a/tests/data/profile_stability/rhel8/stig_gui.profile -+++ b/tests/data/profile_stability/rhel8/stig_gui.profile -@@ -165,6 +165,7 @@ selections: - - chronyd_client_only - - chronyd_no_chronyc_network - - chronyd_or_ntpd_set_maxpoll -+- chronyd_server_directive - - clean_components_post_updating - - configure_bashrc_exec_tmux - - configure_bind_crypto_policy diff --git a/SOURCES/scap-security-guide-0.1.61-pwquality-PR_8185.patch b/SOURCES/scap-security-guide-0.1.61-pwquality-PR_8185.patch new file mode 100644 index 0000000..3e38e50 --- /dev/null +++ b/SOURCES/scap-security-guide-0.1.61-pwquality-PR_8185.patch @@ -0,0 +1,855 @@ +diff --git a/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_password_auth/ansible/shared.yml b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_password_auth/ansible/shared.yml +new file mode 100644 +index 00000000000..b44c91cbf4a +--- /dev/null ++++ b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_password_auth/ansible/shared.yml +@@ -0,0 +1,150 @@ ++# platform = Red Hat Virtualization 4,multi_platform_fedora,multi_platform_rhel ++# reboot = false ++# strategy = configure ++# complexity = low ++# disruption = medium ++ ++- name: Check for existing pam_pwquality.so entry ++ ansible.builtin.lineinfile: ++ path: "/etc/pam.d/password-auth" ++ create: no ++ regexp: '^password.*pam_pwquality.so.*' ++ state: absent ++ check_mode: true ++ changed_when: false ++ register: result_pam_pwquality_present ++ ++- name: Check if system relies on authselect ++ ansible.builtin.stat: ++ path: /usr/bin/authselect ++ register: result_authselect_present ++ ++- name: "Remediation where authselect tool is present" ++ block: ++ - name: Check the integrity of the current authselect profile ++ ansible.builtin.command: ++ cmd: authselect check ++ register: result_authselect_check_cmd ++ changed_when: false ++ ignore_errors: true ++ ++ - name: Informative message based on the authselect integrity check result ++ ansible.builtin.assert: ++ that: ++ - result_authselect_check_cmd is success ++ fail_msg: ++ - authselect integrity check failed. Remediation aborted! ++ - This remediation could not be applied because the authselect profile is not intact. ++ - It is not recommended to manually edit the PAM files when authselect is available. ++ - In cases where the default authselect profile does not cover a specific demand, a custom authselect profile is recommended. ++ success_msg: ++ - authselect integrity check passed ++ ++ - name: Get authselect current profile ++ ansible.builtin.shell: ++ cmd: authselect current -r | awk '{ print $1 }' ++ register: result_authselect_profile ++ changed_when: false ++ when: ++ - result_authselect_check_cmd is success ++ ++ - name: Define the current authselect profile as a local fact ++ ansible.builtin.set_fact: ++ authselect_current_profile: "{{ result_authselect_profile.stdout }}" ++ authselect_custom_profile: "{{ result_authselect_profile.stdout }}" ++ when: ++ - result_authselect_profile is not skipped ++ - result_authselect_profile.stdout is match("custom/") ++ ++ - name: Define the new authselect custom profile as a local fact ++ ansible.builtin.set_fact: ++ authselect_current_profile: "{{ result_authselect_profile.stdout }}" ++ authselect_custom_profile: "custom/hardening" ++ when: ++ - result_authselect_profile is not skipped ++ - result_authselect_profile.stdout is not match("custom/") ++ ++ - name: Get authselect current features to also enable them in the custom profile ++ ansible.builtin.shell: ++ cmd: authselect current | tail -n+3 | awk '{ print $2 }' ++ register: result_authselect_features ++ changed_when: false ++ when: ++ - result_authselect_profile is not skipped ++ - authselect_current_profile is not match("custom/") ++ ++ - name: Check if any custom profile with the same name was already created in the past ++ ansible.builtin.stat: ++ path: /etc/authselect/{{ authselect_custom_profile }} ++ register: result_authselect_custom_profile_present ++ changed_when: false ++ when: ++ - authselect_current_profile is not match("custom/") ++ ++ - name: Create a custom profile based on the current profile ++ ansible.builtin.command: ++ cmd: authselect create-profile hardening -b sssd ++ when: ++ - result_authselect_check_cmd is success ++ - authselect_current_profile is not match("custom/") ++ - not result_authselect_custom_profile_present.stat.exists ++ ++ - name: Ensure the desired configuration is present in the custom profile ++ ansible.builtin.lineinfile: ++ dest: "/etc/authselect/{{ authselect_custom_profile }}/password-auth" ++ insertbefore: ^password.*sufficient.*pam_unix.so.* ++ line: "password requisite pam_pwquality.so" ++ when: ++ - result_authselect_profile is not skipped ++ - result_pam_pwquality_present.found == 0 ++ ++ - name: Ensure a backup of current authselect profile before selecting the custom profile ++ ansible.builtin.command: ++ cmd: authselect apply-changes -b --backup=before-pwquality-hardening.backup ++ register: result_authselect_backup ++ when: ++ - result_authselect_check_cmd is success ++ - result_authselect_profile is not skipped ++ - authselect_current_profile is not match("custom/") ++ - authselect_custom_profile is not match(authselect_current_profile) ++ ++ - name: Ensure the custom profile is selected ++ ansible.builtin.command: ++ cmd: authselect select {{ authselect_custom_profile }} --force ++ register: result_pam_authselect_select_profile ++ when: ++ - result_authselect_check_cmd is success ++ - result_authselect_profile is not skipped ++ - authselect_current_profile is not match("custom/") ++ - authselect_custom_profile is not match(authselect_current_profile) ++ ++ - name: Restore the authselect features in the custom profile ++ ansible.builtin.command: ++ cmd: authselect enable-feature {{ item }} ++ loop: "{{ result_authselect_features.stdout_lines }}" ++ when: ++ - result_authselect_profile is not skipped ++ - result_authselect_features is not skipped ++ - result_pam_authselect_select_profile is not skipped ++ ++ - name: Ensure the custom profile changes are applied ++ ansible.builtin.command: ++ cmd: authselect apply-changes -b --backup=after-pwquality-hardening.backup ++ when: ++ - result_authselect_check_cmd is success ++ - result_authselect_profile is not skipped ++ when: ++ - result_authselect_present.stat.exists ++ ++# For systems without authselect ++- name: "Remediation where authselect tool is not present and PAM files are directly edited" ++ block: ++ - name: Ensure the desired configuration is present in the custom profile ++ ansible.builtin.lineinfile: ++ dest: "/etc/pam.d/password-auth" ++ insertbefore: ^password.*sufficient.*pam_unix.so.* ++ line: "password requisite pam_pwquality.so" ++ when: ++ - result_pam_pwquality_present.found == 0 ++ when: ++ - not result_authselect_present.stat.exists +diff --git a/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_password_auth/bash/shared.sh b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_password_auth/bash/shared.sh +new file mode 100644 +index 00000000000..d2fca2a79ca +--- /dev/null ++++ b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_password_auth/bash/shared.sh +@@ -0,0 +1,41 @@ ++# platform = Red Hat Virtualization 4,multi_platform_fedora,multi_platform_rhel ++ ++PAM_FILE="password-auth" ++ ++if [ -f /usr/bin/authselect ]; then ++ if authselect check; then ++ CURRENT_PROFILE=$(authselect current -r | awk '{ print $1 }') ++ # Standard profiles delivered with authselect should not be modified. ++ # If not already in use, a custom profile is created preserving the enabled features. ++ if [[ ! $CURRENT_PROFILE == custom/* ]]; then ++ ENABLED_FEATURES=$(authselect current | tail -n+3 | awk '{ print $2 }') ++ authselect create-profile hardening -b $CURRENT_PROFILE ++ CURRENT_PROFILE="custom/hardening" ++ # Ensure a backup before changing the profile ++ authselect apply-changes -b --backup=before-pwquality-hardening.backup ++ authselect select $CURRENT_PROFILE ++ for feature in $ENABLED_FEATURES; do ++ authselect enable-feature $feature; ++ done ++ fi ++ # Include the desired configuration in the custom profile ++ CUSTOM_FILE="/etc/authselect/$CURRENT_PROFILE/$PAM_FILE" ++ # The line should be included on the top password section ++ if [ $(grep -c "^\s*password.*requisite.*pam_pwquality.so" $CUSTOM_FILE) -eq 0 ]; then ++ sed -i --follow-symlinks '0,/^password.*/s/^password.*/password requisite pam_pwquality.so\n&/' $CUSTOM_FILE ++ fi ++ authselect apply-changes -b --backup=after-pwquality-hardening.backup ++ else ++ echo " ++authselect integrity check failed. Remediation aborted! ++This remediation could not be applied because the authselect profile is not intact. ++It is not recommended to manually edit the PAM files when authselect is available. ++In cases where the default authselect profile does not cover a specific demand, a custom authselect profile is recommended." ++ false ++ fi ++else ++ FILE_PATH="/etc/pam.d/$PAM_FILE" ++ if [ $(grep -c "^\s*password.*requisite.*pam_pwquality.so" $FILE_PATH) -eq 0 ]; then ++ sed -i --follow-symlinks '0,/^password.*/s/^password.*/password requisite pam_pwquality.so\n&/' $FILE_PATH ++ fi ++fi +diff --git a/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_password_auth/oval/shared.xml b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_password_auth/oval/shared.xml +new file mode 100644 +index 00000000000..84f32456beb +--- /dev/null ++++ b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_password_auth/oval/shared.xml +@@ -0,0 +1,21 @@ ++ ++ ++ {{{ oval_metadata("The PAM module pam_pwquality is used in password-auth") }}} ++ ++ ++ ++ ++ ++ ++ /etc/pam.d/password-auth ++ ^password[\s]*requisite[\s]*pam_pwquality\.so ++ 1 ++ ++ ++ ++ ++ ++ +diff --git a/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_password_auth/rule.yml b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_password_auth/rule.yml +new file mode 100644 +index 00000000000..6c7bb1ad7a0 +--- /dev/null ++++ b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_password_auth/rule.yml +@@ -0,0 +1,35 @@ ++documentation_complete: true ++ ++prodtype: fedora,rhel7,rhel8,rhel9,rhv4 ++ ++title: 'Ensure PAM password complexity module is enabled in password-auth' ++ ++description: |- ++ To enable PAM password complexity in password-auth file: ++ Edit the password section in ++ /etc/pam.d/password-auth to show ++ password requisite pam_pwquality.so. ++ ++rationale: |- ++ Enabling PAM password complexity permits to enforce strong passwords and consequently ++ makes the system less prone to dictionary attacks. ++ ++severity: medium ++ ++identifiers: ++ cce@rhel7: CCE-85876-1 ++ cce@rhel8: CCE-85877-9 ++ cce@rhel9: CCE-85878-7 ++ ++references: ++ stigid@rhel8: RHEL-08-020100 ++ ++ocil_clause: 'pam_pwquality.so is not enabled in password-auth' ++ ++ocil: |- ++ To check if pam_pwhistory.so is enabled in password-auth, run the following command: ++
      $ grep pam_pwquality /etc/pam.d/password-auth
      ++ The output should be similar to the following: ++
      password    requisite                                    pam_pwquality.so
      ++ ++platform: pam +diff --git a/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_password_auth/tests/authselect_commented_entry.fail.sh b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_password_auth/tests/authselect_commented_entry.fail.sh +new file mode 100644 +index 00000000000..3d696c36b76 +--- /dev/null ++++ b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_password_auth/tests/authselect_commented_entry.fail.sh +@@ -0,0 +1,11 @@ ++#!/bin/bash ++# packages = authselect ++# platform = Red Hat Enterprise Linux 8,Red Hat Enterprise Linux 9,multi_platform_fedora ++ ++authselect create-profile hardening -b sssd ++CUSTOM_PROFILE="custom/hardening" ++authselect select $CUSTOM_PROFILE --force ++ ++CUSTOM_SYSTEM_AUTH="/etc/authselect/$CUSTOM_PROFILE/password-auth" ++sed -i --follow-symlinks -e '/^password\s*requisite\s*pam_pwquality\.so/ s/^#*/#/g' $CUSTOM_SYSTEM_AUTH ++authselect apply-changes -b +diff --git a/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_password_auth/tests/authselect_correct_entry.pass.sh b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_password_auth/tests/authselect_correct_entry.pass.sh +new file mode 100644 +index 00000000000..0435899262b +--- /dev/null ++++ b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_password_auth/tests/authselect_correct_entry.pass.sh +@@ -0,0 +1,13 @@ ++#!/bin/bash ++# packages = authselect ++# platform = Red Hat Enterprise Linux 8,Red Hat Enterprise Linux 9,multi_platform_fedora ++ ++authselect create-profile hardening -b sssd ++CUSTOM_PROFILE="custom/hardening" ++authselect select $CUSTOM_PROFILE --force ++ ++CUSTOM_SYSTEM_AUTH="/etc/authselect/$CUSTOM_PROFILE/password-auth" ++if [ $(grep -c "^\s*password.*requisite.*pam_pwquality.so" $CUSTOM_SYSTEM_AUTH) -eq 0 ]; then ++ sed -i --follow-symlinks '0,/^password.*/s/^password.*/password requisite pam_pwquality.so\n&/' $CUSTOM_SYSTEM_AUTH ++fi ++authselect apply-changes -b +diff --git a/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_password_auth/tests/authselect_missing_entry.fail.sh b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_password_auth/tests/authselect_missing_entry.fail.sh +new file mode 100644 +index 00000000000..472616a51f6 +--- /dev/null ++++ b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_password_auth/tests/authselect_missing_entry.fail.sh +@@ -0,0 +1,11 @@ ++#!/bin/bash ++# packages = authselect ++# platform = Red Hat Enterprise Linux 8,Red Hat Enterprise Linux 9,multi_platform_fedora ++ ++authselect create-profile hardening -b sssd ++CUSTOM_PROFILE="custom/hardening" ++authselect select $CUSTOM_PROFILE --force ++ ++CUSTOM_SYSTEM_AUTH="/etc/authselect/$CUSTOM_PROFILE/password-auth" ++sed -i --follow-symlinks '/^password\s*requisite\s*pam_pwquality\.so/d' $CUSTOM_SYSTEM_AUTH ++authselect apply-changes -b +diff --git a/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_password_auth/tests/authselect_modified_pam.fail.sh b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_password_auth/tests/authselect_modified_pam.fail.sh +new file mode 100644 +index 00000000000..59f9d6f77c4 +--- /dev/null ++++ b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_password_auth/tests/authselect_modified_pam.fail.sh +@@ -0,0 +1,9 @@ ++#!/bin/bash ++# packages = authselect ++# platform = Red Hat Enterprise Linux 8,Red Hat Enterprise Linux 9,multi_platform_fedora ++# remediation = none ++ ++SYSTEM_AUTH_FILE="/etc/pam.d/password-auth" ++ ++# This modification will break the integrity checks done by authselect. ++sed -i --follow-symlinks -e '/^password\s*requisite\s*pam_pwquality\.so/ s/^#*/#/g' $SYSTEM_AUTH_FILE +diff --git a/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_password_auth/tests/correct_entry.pass.sh b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_password_auth/tests/correct_entry.pass.sh +new file mode 100644 +index 00000000000..71f87b19045 +--- /dev/null ++++ b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_password_auth/tests/correct_entry.pass.sh +@@ -0,0 +1,8 @@ ++#!/bin/bash ++# packages = pam ++# platform = Red Hat Enterprise Linux 7,Red Hat Virtualization 4,multi_platform_fedora ++ ++config_file=/etc/pam.d/password-auth ++if [ $(grep -c "^\s*password.*requisite.*pam_pwquality.so" $config_file) -eq 0 ]; then ++ sed -i --follow-symlinks '0,/^password.*/s/^password.*/password requisite pam_pwquality.so\n&/' $config_file ++fi +diff --git a/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_password_auth/tests/missing_entry.fail.sh b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_password_auth/tests/missing_entry.fail.sh +new file mode 100644 +index 00000000000..95b73b24d26 +--- /dev/null ++++ b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_password_auth/tests/missing_entry.fail.sh +@@ -0,0 +1,7 @@ ++#!/bin/bash ++# platform = Red Hat Enterprise Linux 7,Red Hat Virtualization 4,multi_platform_fedora ++# packages = pam ++ ++config_file=/etc/pam.d/password-auth ++ ++sed -i --follow-symlinks '/^password\s*requisite\s*pam_pwquality\.so/d' $config_file +diff --git a/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_system_auth/ansible/shared.yml b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_system_auth/ansible/shared.yml +new file mode 100644 +index 00000000000..13cd20458ed +--- /dev/null ++++ b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_system_auth/ansible/shared.yml +@@ -0,0 +1,150 @@ ++# platform = Red Hat Virtualization 4,multi_platform_fedora,multi_platform_rhel ++# reboot = false ++# strategy = configure ++# complexity = low ++# disruption = medium ++ ++- name: Check for existing pam_pwquality.so entry ++ ansible.builtin.lineinfile: ++ path: "/etc/pam.d/system-auth" ++ create: no ++ regexp: '^password.*pam_pwquality.so.*' ++ state: absent ++ check_mode: true ++ changed_when: false ++ register: result_pam_pwquality_present ++ ++- name: Check if system relies on authselect ++ ansible.builtin.stat: ++ path: /usr/bin/authselect ++ register: result_authselect_present ++ ++- name: "Remediation where authselect tool is present" ++ block: ++ - name: Check the integrity of the current authselect profile ++ ansible.builtin.command: ++ cmd: authselect check ++ register: result_authselect_check_cmd ++ changed_when: false ++ ignore_errors: true ++ ++ - name: Informative message based on the authselect integrity check result ++ ansible.builtin.assert: ++ that: ++ - result_authselect_check_cmd is success ++ fail_msg: ++ - authselect integrity check failed. Remediation aborted! ++ - This remediation could not be applied because the authselect profile is not intact. ++ - It is not recommended to manually edit the PAM files when authselect is available. ++ - In cases where the default authselect profile does not cover a specific demand, a custom authselect profile is recommended. ++ success_msg: ++ - authselect integrity check passed ++ ++ - name: Get authselect current profile ++ ansible.builtin.shell: ++ cmd: authselect current -r | awk '{ print $1 }' ++ register: result_authselect_profile ++ changed_when: false ++ when: ++ - result_authselect_check_cmd is success ++ ++ - name: Define the current authselect profile as a local fact ++ ansible.builtin.set_fact: ++ authselect_current_profile: "{{ result_authselect_profile.stdout }}" ++ authselect_custom_profile: "{{ result_authselect_profile.stdout }}" ++ when: ++ - result_authselect_profile is not skipped ++ - result_authselect_profile.stdout is match("custom/") ++ ++ - name: Define the new authselect custom profile as a local fact ++ ansible.builtin.set_fact: ++ authselect_current_profile: "{{ result_authselect_profile.stdout }}" ++ authselect_custom_profile: "custom/hardening" ++ when: ++ - result_authselect_profile is not skipped ++ - result_authselect_profile.stdout is not match("custom/") ++ ++ - name: Get authselect current features to also enable them in the custom profile ++ ansible.builtin.shell: ++ cmd: authselect current | tail -n+3 | awk '{ print $2 }' ++ register: result_authselect_features ++ changed_when: false ++ when: ++ - result_authselect_profile is not skipped ++ - authselect_current_profile is not match("custom/") ++ ++ - name: Check if any custom profile with the same name was already created in the past ++ ansible.builtin.stat: ++ path: /etc/authselect/{{ authselect_custom_profile }} ++ register: result_authselect_custom_profile_present ++ changed_when: false ++ when: ++ - authselect_current_profile is not match("custom/") ++ ++ - name: Create a custom profile based on the current profile ++ ansible.builtin.command: ++ cmd: authselect create-profile hardening -b sssd ++ when: ++ - result_authselect_check_cmd is success ++ - authselect_current_profile is not match("custom/") ++ - not result_authselect_custom_profile_present.stat.exists ++ ++ - name: Ensure the desired configuration is present in the custom profile ++ ansible.builtin.lineinfile: ++ dest: "/etc/authselect/{{ authselect_custom_profile }}/system-auth" ++ insertbefore: ^password.*sufficient.*pam_unix.so.* ++ line: "password requisite pam_pwquality.so" ++ when: ++ - result_authselect_profile is not skipped ++ - result_pam_pwquality_present.found == 0 ++ ++ - name: Ensure a backup of current authselect profile before selecting the custom profile ++ ansible.builtin.command: ++ cmd: authselect apply-changes -b --backup=before-pwquality-hardening.backup ++ register: result_authselect_backup ++ when: ++ - result_authselect_check_cmd is success ++ - result_authselect_profile is not skipped ++ - authselect_current_profile is not match("custom/") ++ - authselect_custom_profile is not match(authselect_current_profile) ++ ++ - name: Ensure the custom profile is selected ++ ansible.builtin.command: ++ cmd: authselect select {{ authselect_custom_profile }} --force ++ register: result_pam_authselect_select_profile ++ when: ++ - result_authselect_check_cmd is success ++ - result_authselect_profile is not skipped ++ - authselect_current_profile is not match("custom/") ++ - authselect_custom_profile is not match(authselect_current_profile) ++ ++ - name: Restore the authselect features in the custom profile ++ ansible.builtin.command: ++ cmd: authselect enable-feature {{ item }} ++ loop: "{{ result_authselect_features.stdout_lines }}" ++ when: ++ - result_authselect_profile is not skipped ++ - result_authselect_features is not skipped ++ - result_pam_authselect_select_profile is not skipped ++ ++ - name: Ensure the custom profile changes are applied ++ ansible.builtin.command: ++ cmd: authselect apply-changes -b --backup=after-pwquality-hardening.backup ++ when: ++ - result_authselect_check_cmd is success ++ - result_authselect_profile is not skipped ++ when: ++ - result_authselect_present.stat.exists ++ ++# For systems without authselect ++- name: "Remediation where authselect tool is not present and PAM files are directly edited" ++ block: ++ - name: Ensure the desired configuration is present in the custom profile ++ ansible.builtin.lineinfile: ++ dest: "/etc/pam.d/system-auth" ++ insertbefore: ^password.*sufficient.*pam_unix.so.* ++ line: "password requisite pam_pwquality.so" ++ when: ++ - result_pam_pwquality_present.found == 0 ++ when: ++ - not result_authselect_present.stat.exists +diff --git a/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_system_auth/bash/shared.sh b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_system_auth/bash/shared.sh +new file mode 100644 +index 00000000000..9a7972a3f93 +--- /dev/null ++++ b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_system_auth/bash/shared.sh +@@ -0,0 +1,41 @@ ++# platform = Red Hat Virtualization 4,multi_platform_fedora,multi_platform_rhel ++ ++PAM_FILE="system-auth" ++ ++if [ -f /usr/bin/authselect ]; then ++ if authselect check; then ++ CURRENT_PROFILE=$(authselect current -r | awk '{ print $1 }') ++ # Standard profiles delivered with authselect should not be modified. ++ # If not already in use, a custom profile is created preserving the enabled features. ++ if [[ ! $CURRENT_PROFILE == custom/* ]]; then ++ ENABLED_FEATURES=$(authselect current | tail -n+3 | awk '{ print $2 }') ++ authselect create-profile hardening -b $CURRENT_PROFILE ++ CURRENT_PROFILE="custom/hardening" ++ # Ensure a backup before changing the profile ++ authselect apply-changes -b --backup=before-pwquality-hardening.backup ++ authselect select $CURRENT_PROFILE ++ for feature in $ENABLED_FEATURES; do ++ authselect enable-feature $feature; ++ done ++ fi ++ # Include the desired configuration in the custom profile ++ CUSTOM_FILE="/etc/authselect/$CURRENT_PROFILE/$PAM_FILE" ++ # The line should be included on the top password section ++ if [ $(grep -c "^\s*password.*requisite.*pam_pwquality.so" $CUSTOM_FILE) -eq 0 ]; then ++ sed -i --follow-symlinks '0,/^password.*/s/^password.*/password requisite pam_pwquality.so\n&/' $CUSTOM_FILE ++ fi ++ authselect apply-changes -b --backup=after-pwquality-hardening.backup ++ else ++ echo " ++authselect integrity check failed. Remediation aborted! ++This remediation could not be applied because the authselect profile is not intact. ++It is not recommended to manually edit the PAM files when authselect is available. ++In cases where the default authselect profile does not cover a specific demand, a custom authselect profile is recommended." ++ false ++ fi ++else ++ FILE_PATH="/etc/pam.d/$PAM_FILE" ++ if [ $(grep -c "^\s*password.*requisite.*pam_pwquality.so" $FILE_PATH) -eq 0 ]; then ++ sed -i --follow-symlinks '0,/^password.*/s/^password.*/password requisite pam_pwquality.so\n&/' $FILE_PATH ++ fi ++fi +diff --git a/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_system_auth/oval/shared.xml b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_system_auth/oval/shared.xml +new file mode 100644 +index 00000000000..f8d241f1ff2 +--- /dev/null ++++ b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_system_auth/oval/shared.xml +@@ -0,0 +1,21 @@ ++ ++ ++ {{{ oval_metadata("The PAM module pam_pwquality is used in system-auth") }}} ++ ++ ++ ++ ++ ++ ++ /etc/pam.d/system-auth ++ ^password[\s]*requisite[\s]*pam_pwquality\.so ++ 1 ++ ++ ++ ++ ++ ++ +diff --git a/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_system_auth/rule.yml b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_system_auth/rule.yml +new file mode 100644 +index 00000000000..ea42ff9b07a +--- /dev/null ++++ b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_system_auth/rule.yml +@@ -0,0 +1,35 @@ ++documentation_complete: true ++ ++prodtype: fedora,rhel7,rhel8,rhel9,rhv4 ++ ++title: 'Ensure PAM password complexity module is enabled in system-auth' ++ ++description: |- ++ To enable PAM password complexity in system-auth file: ++ Edit the password section in ++ /etc/pam.d/system-auth to show ++ password requisite pam_pwquality.so. ++ ++rationale: |- ++ Enabling PAM password complexity permits to enforce strong passwords and consequently ++ makes the system less prone to dictionary attacks. ++ ++severity: medium ++ ++identifiers: ++ cce@rhel7: CCE-85874-6 ++ cce@rhel8: CCE-85872-0 ++ cce@rhel9: CCE-85873-8 ++ ++references: ++ stigid@rhel8: RHEL-08-020101 ++ ++ocil_clause: 'pam_pwquality.so is not enabled in system-auth' ++ ++ocil: |- ++ To check if pam_pwhistory.so is enabled in system-auth, run the following command: ++
      $ grep pam_pwquality /etc/pam.d/system-auth
      ++ The output should be similar to the following: ++
      password    requisite                                    pam_pwquality.so
      ++ ++platform: pam +diff --git a/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_system_auth/tests/authselect_commented_entry.fail.sh b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_system_auth/tests/authselect_commented_entry.fail.sh +new file mode 100644 +index 00000000000..849f16d0f93 +--- /dev/null ++++ b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_system_auth/tests/authselect_commented_entry.fail.sh +@@ -0,0 +1,11 @@ ++#!/bin/bash ++# packages = authselect ++# platform = Red Hat Enterprise Linux 8,Red Hat Enterprise Linux 9,multi_platform_fedora ++ ++authselect create-profile hardening -b sssd ++CUSTOM_PROFILE="custom/hardening" ++authselect select $CUSTOM_PROFILE --force ++ ++CUSTOM_SYSTEM_AUTH="/etc/authselect/$CUSTOM_PROFILE/system-auth" ++sed -i --follow-symlinks -e '/^password\s*requisite\s*pam_pwquality\.so/ s/^#*/#/g' $CUSTOM_SYSTEM_AUTH ++authselect apply-changes -b +diff --git a/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_system_auth/tests/authselect_correct_entry.pass.sh b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_system_auth/tests/authselect_correct_entry.pass.sh +new file mode 100644 +index 00000000000..6a98c244980 +--- /dev/null ++++ b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_system_auth/tests/authselect_correct_entry.pass.sh +@@ -0,0 +1,13 @@ ++#!/bin/bash ++# packages = authselect ++# platform = Red Hat Enterprise Linux 8,Red Hat Enterprise Linux 9,multi_platform_fedora ++ ++authselect create-profile hardening -b sssd ++CUSTOM_PROFILE="custom/hardening" ++authselect select $CUSTOM_PROFILE --force ++ ++CUSTOM_SYSTEM_AUTH="/etc/authselect/$CUSTOM_PROFILE/system-auth" ++if [ $(grep -c "^\s*password.*requisite.*pam_pwquality.so" $CUSTOM_SYSTEM_AUTH) -eq 0 ]; then ++ sed -i --follow-symlinks '0,/^password.*/s/^password.*/password requisite pam_pwquality.so\n&/' $CUSTOM_SYSTEM_AUTH ++fi ++authselect apply-changes -b +diff --git a/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_system_auth/tests/authselect_missing_entry.fail.sh b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_system_auth/tests/authselect_missing_entry.fail.sh +new file mode 100644 +index 00000000000..6786f6c13d7 +--- /dev/null ++++ b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_system_auth/tests/authselect_missing_entry.fail.sh +@@ -0,0 +1,11 @@ ++#!/bin/bash ++# packages = authselect ++# platform = Red Hat Enterprise Linux 8,Red Hat Enterprise Linux 9,multi_platform_fedora ++ ++authselect create-profile hardening -b sssd ++CUSTOM_PROFILE="custom/hardening" ++authselect select $CUSTOM_PROFILE --force ++ ++CUSTOM_SYSTEM_AUTH="/etc/authselect/$CUSTOM_PROFILE/system-auth" ++sed -i --follow-symlinks '/^password\s*requisite\s*pam_pwquality\.so/d' $CUSTOM_SYSTEM_AUTH ++authselect apply-changes -b +diff --git a/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_system_auth/tests/authselect_modified_pam.fail.sh b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_system_auth/tests/authselect_modified_pam.fail.sh +new file mode 100644 +index 00000000000..b3d9e5884f5 +--- /dev/null ++++ b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_system_auth/tests/authselect_modified_pam.fail.sh +@@ -0,0 +1,9 @@ ++#!/bin/bash ++# packages = authselect ++# platform = Red Hat Enterprise Linux 8,Red Hat Enterprise Linux 9,multi_platform_fedora ++# remediation = none ++ ++SYSTEM_AUTH_FILE="/etc/pam.d/system-auth" ++ ++# This modification will break the integrity checks done by authselect. ++sed -i --follow-symlinks -e '/^password\s*requisite\s*pam_pwquality\.so/ s/^#*/#/g' $SYSTEM_AUTH_FILE +diff --git a/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_system_auth/tests/correct_entry.pass.sh b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_system_auth/tests/correct_entry.pass.sh +new file mode 100644 +index 00000000000..71f87b19045 +--- /dev/null ++++ b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_system_auth/tests/correct_entry.pass.sh +@@ -0,0 +1,8 @@ ++#!/bin/bash ++# packages = pam ++# platform = Red Hat Enterprise Linux 7,Red Hat Virtualization 4,multi_platform_fedora ++ ++config_file=/etc/pam.d/password-auth ++if [ $(grep -c "^\s*password.*requisite.*pam_pwquality.so" $config_file) -eq 0 ]; then ++ sed -i --follow-symlinks '0,/^password.*/s/^password.*/password requisite pam_pwquality.so\n&/' $config_file ++fi +diff --git a/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_system_auth/tests/missing_entry.fail.sh b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_system_auth/tests/missing_entry.fail.sh +new file mode 100644 +index 00000000000..3c8f6f79fe9 +--- /dev/null ++++ b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_pwquality_system_auth/tests/missing_entry.fail.sh +@@ -0,0 +1,7 @@ ++#!/bin/bash ++# platform = Red Hat Enterprise Linux 7,Red Hat Virtualization 4,multi_platform_fedora ++# packages = pam ++ ++config_file=/etc/pam.d/system-auth ++ ++sed -i --follow-symlinks '/^password\s*requisite\s*pam_pwquality\.so/d' $config_file +diff --git a/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_retry/rule.yml b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_retry/rule.yml +index eeb55a6ff5c..6b2219a3eab 100644 +--- a/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_retry/rule.yml ++++ b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_retry/rule.yml +@@ -6,13 +6,16 @@ title: 'Ensure PAM Enforces Password Requirements - Authentication Retry Prompts + + description: |- + To configure the number of retry prompts that are permitted per-session: ++ {{% if product in ['rhel8', 'rhel9'] %}} ++ Edit the /etc/security/pwquality.conf to include ++ {{% else %}} + Edit the pam_pwquality.so statement in + {{% if 'ubuntu' not in product %}} +- /etc/pam.d/system-auth {{% if product in ['rhel8', 'rhel9'] %}} and +- /etc/pam.d/password-auth {{% endif %}} to show ++ /etc/pam.d/system-auth to show + {{% else %}} + /etc/pam.d/common-password to show + {{% endif %}} ++ {{% endif %}} + retry={{{xccdf_value("var_password_pam_retry") }}}, or a lower value if site + policy is more restrictive. The DoD requirement is a maximum of 3 prompts + per session. +@@ -48,17 +51,21 @@ references: + stigid@ol7: OL07-00-010119 + stigid@ol8: OL08-00-020100 + stigid@rhel7: RHEL-07-010119 +- stigid@rhel8: RHEL-08-020100 ++ stigid@rhel8: RHEL-08-020104 + stigid@ubuntu2004: UBTU-20-010057 + + ocil_clause: 'it is not the required value' + + ocil: |- + To check how many retry attempts are permitted on a per-session basis, run the following command: ++ {{% if product in ['rhel8', 'rhel9'] %}} ++
      $ grep retry /etc/security/pwquality.conf
      ++ {{% else %}} + {{% if 'ubuntu' in product %}} +
      $ grep pam_pwquality /etc/pam.d/common-password
      + {{% else %}} +-
      $ grep pam_pwquality /etc/pam.d/system-auth {{% if product in ['rhel8', 'rhel9'] %}}/etc/pam.d/password-auth{{% endif %}}
      ++
      $ grep pam_pwquality /etc/pam.d/system-auth
      ++ {{% endif %}} + {{% endif %}} + The retry parameter will indicate how many attempts are permitted. + The DoD required value is less than or equal to 3. +diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile +index d92bc72971c..62fc512f05e 100644 +--- a/products/rhel8/profiles/stig.profile ++++ b/products/rhel8/profiles/stig.profile +@@ -523,6 +523,20 @@ selections: + - sssd_enable_certmap + + # RHEL-08-020100 ++ - accounts_password_pam_pwquality_password_auth ++ ++ # RHEL-08-020101 ++ - accounts_password_pam_pwquality_system_auth ++ ++ # RHEL-08-020102 ++ # This is only required for RHEL8 systems below version 8.4 where the ++ # retry parameter was not yet available on /etc/security/pwquality.conf. ++ ++ # RHEL-08-020103 ++ # This is only required for RHEL8 systems below version 8.4 where the ++ # retry parameter was not yet available on /etc/security/pwquality.conf. ++ ++ # RHEL-08-020104 + - accounts_password_pam_retry + + # RHEL-08-020110 +diff --git a/products/rhel9/profiles/stig.profile b/products/rhel9/profiles/stig.profile +index 42c6d0e9aca..ad08a6d3410 100644 +--- a/products/rhel9/profiles/stig.profile ++++ b/products/rhel9/profiles/stig.profile +@@ -524,6 +524,20 @@ selections: + - sssd_enable_certmap + + # RHEL-08-020100 ++ - accounts_password_pam_pwquality_password_auth ++ ++ # RHEL-08-020101 ++ - accounts_password_pam_pwquality_system_auth ++ ++ # RHEL-08-020102 ++ # This is only required for RHEL8 systems below version 8.4 where the ++ # retry parameter was not yet available on /etc/security/pwquality.conf. ++ ++ # RHEL-08-020103 ++ # This is only required for RHEL8 systems below version 8.4 where the ++ # retry parameter was not yet available on /etc/security/pwquality.conf. ++ ++ # RHEL-08-020104 + - accounts_password_pam_retry + + # RHEL-08-020110 +diff --git a/tests/data/profile_stability/rhel8/stig.profile b/tests/data/profile_stability/rhel8/stig.profile +index e4fee44f9f9..33e82401c3d 100644 +--- a/tests/data/profile_stability/rhel8/stig.profile ++++ b/tests/data/profile_stability/rhel8/stig.profile +@@ -53,6 +53,8 @@ selections: + - accounts_password_pam_ocredit + - accounts_password_pam_pwhistory_remember_password_auth + - accounts_password_pam_pwhistory_remember_system_auth ++- accounts_password_pam_pwquality_password_auth ++- accounts_password_pam_pwquality_system_auth + - accounts_password_pam_retry + - accounts_password_pam_ucredit + - accounts_password_pam_unix_rounds_password_auth +diff --git a/tests/data/profile_stability/rhel8/stig_gui.profile b/tests/data/profile_stability/rhel8/stig_gui.profile +index 83d04775e3a..5beeb4f28af 100644 +--- a/tests/data/profile_stability/rhel8/stig_gui.profile ++++ b/tests/data/profile_stability/rhel8/stig_gui.profile +@@ -64,6 +64,8 @@ selections: + - accounts_password_pam_ocredit + - accounts_password_pam_pwhistory_remember_password_auth + - accounts_password_pam_pwhistory_remember_system_auth ++- accounts_password_pam_pwquality_password_auth ++- accounts_password_pam_pwquality_system_auth + - accounts_password_pam_retry + - accounts_password_pam_ucredit + - accounts_password_pam_unix_rounds_password_auth diff --git a/SOURCES/scap-security-guide-0.1.61-rear_not_applicable_aarch64-PR_8221.patch b/SOURCES/scap-security-guide-0.1.61-rear_not_applicable_aarch64-PR_8221.patch new file mode 100644 index 0000000..c5bc6f7 --- /dev/null +++ b/SOURCES/scap-security-guide-0.1.61-rear_not_applicable_aarch64-PR_8221.patch @@ -0,0 +1,126 @@ +From 622558873703704bd97fde1874a9a782d4cb8b0e Mon Sep 17 00:00:00 2001 +From: Gabriel Becker +Date: Mon, 14 Feb 2022 17:51:50 +0100 +Subject: [PATCH] Introduce CPE for aarch64 and make package_rear_installed n/a + aarch64. + +This rule is not applicable for RHEL9 only. +--- + .../package_rear_installed/rule.yml | 4 +++ + shared/applicability/arch.yml | 12 +++++++ + ...proc_sys_kernel_osrelease_arch_aarch64.xml | 33 +++++++++++++++++++ + ..._sys_kernel_osrelease_arch_not_aarch64.xml | 16 +++++++++ + ssg/constants.py | 2 ++ + 5 files changed, 67 insertions(+) + create mode 100644 shared/checks/oval/proc_sys_kernel_osrelease_arch_aarch64.xml + create mode 100644 shared/checks/oval/proc_sys_kernel_osrelease_arch_not_aarch64.xml + +diff --git a/linux_os/guide/system/software/system-tools/package_rear_installed/rule.yml b/linux_os/guide/system/software/system-tools/package_rear_installed/rule.yml +index 6e3c11e5749..efb591654a9 100644 +--- a/linux_os/guide/system/software/system-tools/package_rear_installed/rule.yml ++++ b/linux_os/guide/system/software/system-tools/package_rear_installed/rule.yml +@@ -25,6 +25,10 @@ ocil: '{{{ ocil_package(package="rear") }}}' + # The package is not available for s309x on RHEL<8.5 + # platform: not_s390x_arch + ++{{%- if product == "rhel9" %}} ++platform: not_aarch64_arch ++{{%- endif %}} ++ + template: + name: package_installed + vars: +diff --git a/shared/applicability/arch.yml b/shared/applicability/arch.yml +index d2cbd102310..9ac05317a95 100644 +--- a/shared/applicability/arch.yml ++++ b/shared/applicability/arch.yml +@@ -12,3 +12,15 @@ cpes: + check_id: proc_sys_kernel_osrelease_arch_s390x + bash_conditional: 'grep -q s390x /proc/sys/kernel/osrelease' + ++ - not_aarch64_arch: ++ name: "cpe:/a:not_aarch64_arch" ++ title: "System architecture is not AARCH64" ++ check_id: proc_sys_kernel_osrelease_arch_not_aarch64 ++ bash_conditional: "! grep -q aarch64 /proc/sys/kernel/osrelease" ++ ++ - aarch64_arch: ++ name: "cpe:/a:aarch64_arch" ++ title: "System architecture is AARCH64" ++ check_id: proc_sys_kernel_osrelease_arch_aarch64 ++ bash_conditional: 'grep -q aarch64 /proc/sys/kernel/osrelease' ++ +diff --git a/shared/checks/oval/proc_sys_kernel_osrelease_arch_aarch64.xml b/shared/checks/oval/proc_sys_kernel_osrelease_arch_aarch64.xml +new file mode 100644 +index 00000000000..3d54f81e6d4 +--- /dev/null ++++ b/shared/checks/oval/proc_sys_kernel_osrelease_arch_aarch64.xml +@@ -0,0 +1,33 @@ ++ ++ ++ ++ Test that the architecture is aarch64 ++ ++ multi_platform_all ++ ++ Check that architecture of kernel in /proc/sys/kernel/osrelease is aarch64 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ /proc/sys/kernel/osrelease ++ ^.*\.(.*)$ ++ 1 ++ ++ ++ ++ ^aarch64$ ++ ++ +diff --git a/shared/checks/oval/proc_sys_kernel_osrelease_arch_not_aarch64.xml b/shared/checks/oval/proc_sys_kernel_osrelease_arch_not_aarch64.xml +new file mode 100644 +index 00000000000..3fce66ee00a +--- /dev/null ++++ b/shared/checks/oval/proc_sys_kernel_osrelease_arch_not_aarch64.xml +@@ -0,0 +1,16 @@ ++ ++ ++ ++ Test for different architecture than aarch64 ++ ++ multi_platform_all ++ ++ Check that architecture of kernel in /proc/sys/kernel/osrelease is not aarch64 ++ ++ ++ ++ ++ ++ +diff --git a/ssg/constants.py b/ssg/constants.py +index 64d7d36c989..92cc2f8de34 100644 +--- a/ssg/constants.py ++++ b/ssg/constants.py +@@ -424,6 +424,8 @@ + "non-uefi": None, + "not_s390x_arch": None, + "s390x_arch": None, ++ "not_aarch64_arch": None, ++ "aarch64_arch": None, + "ovirt": None, + "no_ovirt": None, + } diff --git a/SOURCES/scap-security-guide-0.1.61-remove_RHEL_08_010560-PR_8145.patch b/SOURCES/scap-security-guide-0.1.61-remove_RHEL_08_010560-PR_8145.patch new file mode 100644 index 0000000..2351cfc --- /dev/null +++ b/SOURCES/scap-security-guide-0.1.61-remove_RHEL_08_010560-PR_8145.patch @@ -0,0 +1,44 @@ +diff --git a/controls/stig_rhel8.yml b/controls/stig_rhel8.yml +index d7821c2e3b8..fe6b0f01186 100644 +--- a/controls/stig_rhel8.yml ++++ b/controls/stig_rhel8.yml +@@ -584,11 +584,6 @@ controls: + rules: + - sshd_disable_root_login + status: automated +- - id: RHEL-08-010560 +- levels: +- - medium +- title: The auditd service must be running in RHEL 8. +- status: pending + - id: RHEL-08-010561 + levels: + - medium +diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile +index 7c89bcbf659..09fa85df181 100644 +--- a/products/rhel8/profiles/stig.profile ++++ b/products/rhel8/profiles/stig.profile +@@ -368,9 +368,6 @@ selections: + # RHEL-08-010550 + - sshd_disable_root_login + +- # RHEL-08-010560 +- - service_auditd_enabled +- + # RHEL-08-010561 + - service_rsyslog_enabled + +diff --git a/products/rhel9/profiles/stig.profile b/products/rhel9/profiles/stig.profile +index 690991f697b..eb2cac913bd 100644 +--- a/products/rhel9/profiles/stig.profile ++++ b/products/rhel9/profiles/stig.profile +@@ -369,9 +369,6 @@ selections: + # RHEL-08-010550 + - sshd_disable_root_login + +- # RHEL-08-010560 +- - service_auditd_enabled +- + # RHEL-08-010561 + - service_rsyslog_enabled + diff --git a/SOURCES/scap-security-guide-0.1.61-remove_client_alive_max-PR_8197.patch b/SOURCES/scap-security-guide-0.1.61-remove_client_alive_max-PR_8197.patch index 3efa3b3..e9f7e42 100644 --- a/SOURCES/scap-security-guide-0.1.61-remove_client_alive_max-PR_8197.patch +++ b/SOURCES/scap-security-guide-0.1.61-remove_client_alive_max-PR_8197.patch @@ -1,14 +1,8 @@ -commit 2a3e271027ddfef1b8ebf55f4d02a0c6a8eb445f -Author: Watson Sato -Date: Mon Feb 28 11:12:44 2022 +0100 - - Manual edited patch scap-security-guide-0.1.61-remove_client_alive_max-PR_8197.patch. - diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index 5829039..eb6cf83 100644 +index d92bc72971c..98cabee38dd 100644 --- a/products/rhel8/profiles/stig.profile +++ b/products/rhel8/profiles/stig.profile -@@ -50,7 +50,7 @@ selections: +@@ -51,7 +51,7 @@ selections: - var_password_pam_lcredit=1 - var_password_pam_retry=3 - var_password_pam_minlen=15 @@ -17,7 +11,39 @@ index 5829039..eb6cf83 100644 - sshd_approved_macs=stig - sshd_approved_ciphers=stig - sshd_idle_timeout_value=10_minutes -@@ -168,11 +168,13 @@ selections: +@@ -170,11 +170,13 @@ selections: + # RHEL-08-010190 + - dir_perms_world_writable_sticky_bits + +- # RHEL-08-010200 +- - sshd_set_keepalive_0 +- +- # RHEL-08-010201 +- - sshd_set_idle_timeout ++ # These two items don't behave as they used to in RHEL8.6 and RHEL9 ++ # anymore. They will be disabled for now until an alternative ++ # solution is found. ++ # # RHEL-08-010200 ++ # - sshd_set_keepalive_0 ++ # # RHEL-08-010201 ++ # - sshd_set_idle_timeout + + # RHEL-08-010210 + - file_permissions_var_log_messages +diff --git a/products/rhel9/profiles/stig.profile b/products/rhel9/profiles/stig.profile +index 42c6d0e9aca..842f17c7021 100644 +--- a/products/rhel9/profiles/stig.profile ++++ b/products/rhel9/profiles/stig.profile +@@ -52,7 +52,7 @@ selections: + - var_password_pam_lcredit=1 + - var_password_pam_retry=3 + - var_password_pam_minlen=15 +- - var_sshd_set_keepalive=0 ++ # - var_sshd_set_keepalive=0 + - sshd_approved_macs=stig + - sshd_approved_ciphers=stig + - sshd_idle_timeout_value=10_minutes +@@ -171,11 +171,13 @@ selections: # RHEL-08-010190 - dir_perms_world_writable_sticky_bits @@ -37,10 +63,10 @@ index 5829039..eb6cf83 100644 # RHEL-08-010210 - file_permissions_var_log_messages diff --git a/tests/data/profile_stability/rhel8/stig.profile b/tests/data/profile_stability/rhel8/stig.profile -index b9eeff5..f181bd9 100644 +index e4fee44f9f9..e3c8ebfc9a5 100644 --- a/tests/data/profile_stability/rhel8/stig.profile +++ b/tests/data/profile_stability/rhel8/stig.profile -@@ -347,8 +347,6 @@ selections: +@@ -353,8 +353,6 @@ selections: - sshd_enable_warning_banner - sshd_print_last_log - sshd_rekey_limit @@ -49,7 +75,7 @@ index b9eeff5..f181bd9 100644 - sshd_use_strong_rng - sshd_x11_use_localhost - sssd_certificate_verification -@@ -416,7 +414,6 @@ selections: +@@ -423,7 +421,6 @@ selections: - var_password_pam_ucredit=1 - var_password_pam_lcredit=1 - var_password_pam_retry=3 @@ -58,10 +84,10 @@ index b9eeff5..f181bd9 100644 - sshd_approved_ciphers=stig - sshd_idle_timeout_value=10_minutes diff --git a/tests/data/profile_stability/rhel8/stig_gui.profile b/tests/data/profile_stability/rhel8/stig_gui.profile -index 54bf46d..48e7d03 100644 +index 83d04775e3a..8ef48e0654b 100644 --- a/tests/data/profile_stability/rhel8/stig_gui.profile +++ b/tests/data/profile_stability/rhel8/stig_gui.profile -@@ -358,8 +358,6 @@ selections: +@@ -364,8 +364,6 @@ selections: - sshd_enable_warning_banner - sshd_print_last_log - sshd_rekey_limit @@ -70,7 +96,7 @@ index 54bf46d..48e7d03 100644 - sshd_use_strong_rng - sshd_x11_use_localhost - sssd_certificate_verification -@@ -426,7 +424,6 @@ selections: +@@ -432,7 +430,6 @@ selections: - var_password_pam_ucredit=1 - var_password_pam_lcredit=1 - var_password_pam_retry=3 diff --git a/SOURCES/scap-security-guide-0.1.61-remove_tmux_process_running_check-PR_8246.patch b/SOURCES/scap-security-guide-0.1.61-remove_tmux_process_running_check-PR_8246.patch index 485235f..1f5cc1a 100644 --- a/SOURCES/scap-security-guide-0.1.61-remove_tmux_process_running_check-PR_8246.patch +++ b/SOURCES/scap-security-guide-0.1.61-remove_tmux_process_running_check-PR_8246.patch @@ -1,11 +1,26 @@ -commit e5b8b968d882aa8fa1795dcabf185781f59b5671 -Author: Watson Sato -Date: Mon Feb 28 12:01:18 2022 +0100 +From 0ffb73fe67cb5773037f62895e6fdc93195f7c38 Mon Sep 17 00:00:00 2001 +From: Gabriel Becker +Date: Mon, 21 Feb 2022 12:55:10 +0100 +Subject: [PATCH] Remove tmux process runinng check from + configure_bashrc_exec_tmux. - Manual edited patch scap-security-guide-0.1.61-remove_tmux_process_running_check-PR_8246.patch. +This check can cause troubles since the user must be logged to show up +as tmux running. For example, an evaluation happening through a cron job +wouldn't be able to make this rule work, since no terminal is being +used. +--- + .../configure_bashrc_exec_tmux/oval/shared.xml | 10 ---------- + .../configure_bashrc_exec_tmux/rule.yml | 14 +------------- + .../tests/correct_value.pass.sh | 1 - + .../tests/correct_value_d_directory.pass.sh | 1 - + .../tests/duplicate_value_multiple_files.pass.sh | 1 - + .../tests/tmux_not_running.fail.sh | 13 ------------- + .../tests/wrong_value.fail.sh | 2 -- + 7 files changed, 1 insertion(+), 41 deletions(-) + delete mode 100644 linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/configure_bashrc_exec_tmux/tests/tmux_not_running.fail.sh diff --git a/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/configure_bashrc_exec_tmux/oval/shared.xml b/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/configure_bashrc_exec_tmux/oval/shared.xml -index 4cb2f9e..58f91ea 100644 +index 4cb2f9e0e04..58f91eadf66 100644 --- a/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/configure_bashrc_exec_tmux/oval/shared.xml +++ b/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/configure_bashrc_exec_tmux/oval/shared.xml @@ -4,7 +4,6 @@ @@ -31,7 +46,7 @@ index 4cb2f9e..58f91ea 100644 - diff --git a/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/configure_bashrc_exec_tmux/rule.yml b/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/configure_bashrc_exec_tmux/rule.yml -index 6be090b..0e4db6d 100644 +index 7afc5fc5e6b..9f224748894 100644 --- a/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/configure_bashrc_exec_tmux/rule.yml +++ b/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/configure_bashrc_exec_tmux/rule.yml @@ -8,19 +8,11 @@ description: |- @@ -54,8 +69,8 @@ index 6be090b..0e4db6d 100644 severity: medium identifiers: -@@ -33,7 +25,7 @@ references: - srg: SRG-OS-000031-GPOS-00012,SRG-OS-000028-GPOS-00009 +@@ -34,7 +26,7 @@ references: + stigid@ol8: OL08-00-020041 stigid@rhel8: RHEL-08-020041 -ocil_clause: 'exec tmux is not present at the end of bashrc or tmux process is not running' @@ -63,7 +78,7 @@ index 6be090b..0e4db6d 100644 ocil: |- To verify that tmux is configured to execute, -@@ -45,9 +37,5 @@ ocil: |- +@@ -46,9 +38,5 @@ ocil: |- name=$(ps -o comm= -p $parent) case "$name" in sshd|login) exec tmux ;; esac fi @@ -74,7 +89,7 @@ index 6be090b..0e4db6d 100644 platform: machine diff --git a/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/configure_bashrc_exec_tmux/tests/correct_value.pass.sh b/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/configure_bashrc_exec_tmux/tests/correct_value.pass.sh -index 221c186..fbc7590 100644 +index 221c18665ef..fbc7590f27d 100644 --- a/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/configure_bashrc_exec_tmux/tests/correct_value.pass.sh +++ b/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/configure_bashrc_exec_tmux/tests/correct_value.pass.sh @@ -9,4 +9,3 @@ if [ "$PS1" ]; then @@ -83,7 +98,7 @@ index 221c186..fbc7590 100644 -tmux new-session -s root -d diff --git a/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/configure_bashrc_exec_tmux/tests/correct_value_d_directory.pass.sh b/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/configure_bashrc_exec_tmux/tests/correct_value_d_directory.pass.sh -index 1702bb1..6107f86 100644 +index 1702bb17e79..6107f86f248 100644 --- a/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/configure_bashrc_exec_tmux/tests/correct_value_d_directory.pass.sh +++ b/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/configure_bashrc_exec_tmux/tests/correct_value_d_directory.pass.sh @@ -10,4 +10,3 @@ if [ "$PS1" ]; then @@ -91,9 +106,18 @@ index 1702bb1..6107f86 100644 EOF -tmux new-session -s root -d +diff --git a/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/configure_bashrc_exec_tmux/tests/duplicate_value_multiple_files.pass.sh b/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/configure_bashrc_exec_tmux/tests/duplicate_value_multiple_files.pass.sh +index 16d4acfcb5a..c662221eca1 100644 +--- a/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/configure_bashrc_exec_tmux/tests/duplicate_value_multiple_files.pass.sh ++++ b/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/configure_bashrc_exec_tmux/tests/duplicate_value_multiple_files.pass.sh +@@ -17,4 +17,3 @@ if [ "$PS1" ]; then + fi + EOF + +-tmux new-session -s root -d diff --git a/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/configure_bashrc_exec_tmux/tests/tmux_not_running.fail.sh b/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/configure_bashrc_exec_tmux/tests/tmux_not_running.fail.sh deleted file mode 100644 -index 6cb9d83..0000000 +index 6cb9d83efc5..00000000000 --- a/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/configure_bashrc_exec_tmux/tests/tmux_not_running.fail.sh +++ /dev/null @@ -1,13 +0,0 @@ @@ -111,7 +135,7 @@ index 6cb9d83..0000000 - -killall tmux || true diff --git a/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/configure_bashrc_exec_tmux/tests/wrong_value.fail.sh b/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/configure_bashrc_exec_tmux/tests/wrong_value.fail.sh -index f13a8b0..9b46165 100644 +index f13a8b038e4..9b461654572 100644 --- a/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/configure_bashrc_exec_tmux/tests/wrong_value.fail.sh +++ b/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/configure_bashrc_exec_tmux/tests/wrong_value.fail.sh @@ -101,5 +101,3 @@ if [ -z "$BASHRCSOURCED" ]; then diff --git a/SOURCES/scap-security-guide-0.1.61-resize-anssi-kickstart-partitions-PR_8261.patch b/SOURCES/scap-security-guide-0.1.61-resize-anssi-kickstart-partitions-PR_8261.patch new file mode 100644 index 0000000..19105ff --- /dev/null +++ b/SOURCES/scap-security-guide-0.1.61-resize-anssi-kickstart-partitions-PR_8261.patch @@ -0,0 +1,79 @@ +From ea49c71011c1815b2889c5a004c79c99faff4a1c Mon Sep 17 00:00:00 2001 +From: Watson Sato +Date: Wed, 23 Feb 2022 18:23:22 +0100 +Subject: [PATCH] Adjsut partitions sizes to acomodate a GUI install + +The GUI requires more room in the /usr partition. +Let's reduce /otp, /srv and /home, which should not have any data. +--- + .../rhel8/kickstart/ssg-rhel8-anssi_bp28_enhanced-ks.cfg | 8 ++++---- + products/rhel8/kickstart/ssg-rhel8-anssi_bp28_high-ks.cfg | 8 ++++---- + .../kickstart/ssg-rhel8-anssi_bp28_intermediary-ks.cfg | 8 ++++---- + 3 files changed, 12 insertions(+), 12 deletions(-) + +diff --git a/products/rhel8/kickstart/ssg-rhel8-anssi_bp28_enhanced-ks.cfg b/products/rhel8/kickstart/ssg-rhel8-anssi_bp28_enhanced-ks.cfg +index 9c02e5c2ac1..cc18e8cd16f 100644 +--- a/products/rhel8/kickstart/ssg-rhel8-anssi_bp28_enhanced-ks.cfg ++++ b/products/rhel8/kickstart/ssg-rhel8-anssi_bp28_enhanced-ks.cfg +@@ -100,13 +100,13 @@ volgroup VolGroup --pesize=4096 pv.01 + # Create particular logical volumes (optional) + logvol / --fstype=xfs --name=LogVol06 --vgname=VolGroup --size=3192 --grow + # Ensure /usr Located On Separate Partition +-logvol /usr --fstype=xfs --name=LogVol08 --vgname=VolGroup --size=5000 --fsoptions="nodev" ++logvol /usr --fstype=xfs --name=LogVol08 --vgname=VolGroup --size=6536 --fsoptions="nodev" + # Ensure /opt Located On Separate Partition +-logvol /opt --fstype=xfs --name=LogVol09 --vgname=VolGroup --size=1024 --fsoptions="nodev,nosuid" ++logvol /opt --fstype=xfs --name=LogVol09 --vgname=VolGroup --size=512 --fsoptions="nodev,nosuid" + # Ensure /srv Located On Separate Partition +-logvol /srv --fstype=xfs --name=LogVol10 --vgname=VolGroup --size=1024 --fsoptions="nodev,nosuid" ++logvol /srv --fstype=xfs --name=LogVol10 --vgname=VolGroup --size=512 --fsoptions="nodev,nosuid" + # Ensure /home Located On Separate Partition +-logvol /home --fstype=xfs --name=home --vgname=VolGroup --size=1024 --fsoptions="nodev" ++logvol /home --fstype=xfs --name=home --vgname=VolGroup --size=512 --fsoptions="nodev" + # Ensure /tmp Located On Separate Partition + logvol /tmp --fstype=xfs --name=tmp --vgname=VolGroup --size=1024 --fsoptions="nodev,nosuid,noexec" + # Ensure /var/tmp Located On Separate Partition +diff --git a/products/rhel8/kickstart/ssg-rhel8-anssi_bp28_high-ks.cfg b/products/rhel8/kickstart/ssg-rhel8-anssi_bp28_high-ks.cfg +index 68729408698..3e99b4d0f99 100644 +--- a/products/rhel8/kickstart/ssg-rhel8-anssi_bp28_high-ks.cfg ++++ b/products/rhel8/kickstart/ssg-rhel8-anssi_bp28_high-ks.cfg +@@ -104,13 +104,13 @@ volgroup VolGroup --pesize=4096 pv.01 + # Create particular logical volumes (optional) + logvol / --fstype=xfs --name=LogVol06 --vgname=VolGroup --size=3192 --grow + # Ensure /usr Located On Separate Partition +-logvol /usr --fstype=xfs --name=LogVol08 --vgname=VolGroup --size=5000 --fsoptions="nodev" ++logvol /usr --fstype=xfs --name=LogVol08 --vgname=VolGroup --size=6536 --fsoptions="nodev" + # Ensure /opt Located On Separate Partition +-logvol /opt --fstype=xfs --name=LogVol09 --vgname=VolGroup --size=1024 --fsoptions="nodev,nosuid" ++logvol /opt --fstype=xfs --name=LogVol09 --vgname=VolGroup --size=512 --fsoptions="nodev,nosuid" + # Ensure /srv Located On Separate Partition +-logvol /srv --fstype=xfs --name=LogVol10 --vgname=VolGroup --size=1024 --fsoptions="nodev,nosuid" ++logvol /srv --fstype=xfs --name=LogVol10 --vgname=VolGroup --size=512 --fsoptions="nodev,nosuid" + # Ensure /home Located On Separate Partition +-logvol /home --fstype=xfs --name=home --vgname=VolGroup --size=1024 --fsoptions="nodev" ++logvol /home --fstype=xfs --name=home --vgname=VolGroup --size=512 --fsoptions="nodev" + # Ensure /tmp Located On Separate Partition + logvol /tmp --fstype=xfs --name=tmp --vgname=VolGroup --size=1024 --fsoptions="nodev,nosuid,noexec" + # Ensure /var/tmp Located On Separate Partition +diff --git a/products/rhel8/kickstart/ssg-rhel8-anssi_bp28_intermediary-ks.cfg b/products/rhel8/kickstart/ssg-rhel8-anssi_bp28_intermediary-ks.cfg +index 1f703d127e5..31d10a7e97e 100644 +--- a/products/rhel8/kickstart/ssg-rhel8-anssi_bp28_intermediary-ks.cfg ++++ b/products/rhel8/kickstart/ssg-rhel8-anssi_bp28_intermediary-ks.cfg +@@ -100,13 +100,13 @@ volgroup VolGroup --pesize=4096 pv.01 + # Create particular logical volumes (optional) + logvol / --fstype=xfs --name=LogVol06 --vgname=VolGroup --size=3192 --grow + # Ensure /usr Located On Separate Partition +-logvol /usr --fstype=xfs --name=LogVol08 --vgname=VolGroup --size=5000 --fsoptions="nodev" ++logvol /usr --fstype=xfs --name=LogVol08 --vgname=VolGroup --size=6536 --fsoptions="nodev" + # Ensure /opt Located On Separate Partition +-logvol /opt --fstype=xfs --name=LogVol09 --vgname=VolGroup --size=1024 --fsoptions="nodev,nosuid" ++logvol /opt --fstype=xfs --name=LogVol09 --vgname=VolGroup --size=512 --fsoptions="nodev,nosuid" + # Ensure /srv Located On Separate Partition +-logvol /srv --fstype=xfs --name=LogVol10 --vgname=VolGroup --size=1024 --fsoptions="nodev,nosuid" ++logvol /srv --fstype=xfs --name=LogVol10 --vgname=VolGroup --size=512 --fsoptions="nodev,nosuid" + # Ensure /home Located On Separate Partition +-logvol /home --fstype=xfs --name=home --vgname=VolGroup --size=1024 --fsoptions="nodev" ++logvol /home --fstype=xfs --name=home --vgname=VolGroup --size=512 --fsoptions="nodev" + # Ensure /tmp Located On Separate Partition + logvol /tmp --fstype=xfs --name=tmp --vgname=VolGroup --size=1024 --fsoptions="nodev,nosuid,noexec" + # Ensure /var/tmp Located On Separate Partition diff --git a/SOURCES/scap-security-guide-0.1.61-rhel86_ospp_fix_audit_ospp_general-PR_8152.patch b/SOURCES/scap-security-guide-0.1.61-rhel86_ospp_fix_audit_ospp_general-PR_8152.patch new file mode 100644 index 0000000..85f12d9 --- /dev/null +++ b/SOURCES/scap-security-guide-0.1.61-rhel86_ospp_fix_audit_ospp_general-PR_8152.patch @@ -0,0 +1,285 @@ +diff --git a/linux_os/guide/system/auditing/policy_rules/audit_access_failed/rule.yml b/linux_os/guide/system/auditing/policy_rules/audit_access_failed/rule.yml +index 09dc1566bbf..26c7eea79d1 100644 +--- a/linux_os/guide/system/auditing/policy_rules/audit_access_failed/rule.yml ++++ b/linux_os/guide/system/auditing/policy_rules/audit_access_failed/rule.yml +@@ -6,10 +6,10 @@ title: 'Configure auditing of unsuccessful file accesses' + + {{% set file_contents_audit_access_failed = + "## Unsuccessful file access (any other opens) This has to go last. +--a always,exit -F arch=b32 -S open,openat,open_by_handle_at -F exit=-EACCES -F auid>=1000 -F auid!=unset -F key=unsuccessful-access +--a always,exit -F arch=b64 -S open,openat,open_by_handle_at -F exit=-EACCES -F auid>=1000 -F auid!=unset -F key=unsuccessful-access +--a always,exit -F arch=b32 -S open,openat,open_by_handle_at -F exit=-EPERM -F auid>=1000 -F auid!=unset -F key=unsuccessful-access +--a always,exit -F arch=b64 -S open,openat,open_by_handle_at -F exit=-EPERM -F auid>=1000 -F auid!=unset -F key=unsuccessful-access" %}} ++-a always,exit -F arch=b32 -S open,openat,openat2,open_by_handle_at -F exit=-EACCES -F auid>=1000 -F auid!=unset -F key=unsuccessful-access ++-a always,exit -F arch=b64 -S open,openat,openat2,open_by_handle_at -F exit=-EACCES -F auid>=1000 -F auid!=unset -F key=unsuccessful-access ++-a always,exit -F arch=b32 -S open,openat,openat2,open_by_handle_at -F exit=-EPERM -F auid>=1000 -F auid!=unset -F key=unsuccessful-access ++-a always,exit -F arch=b64 -S open,openat,openat2,open_by_handle_at -F exit=-EPERM -F auid>=1000 -F auid!=unset -F key=unsuccessful-access" %}} + + description: |- + Ensure that unsuccessful attempts to access a file are audited. +diff --git a/linux_os/guide/system/auditing/policy_rules/audit_access_success/rule.yml b/linux_os/guide/system/auditing/policy_rules/audit_access_success/rule.yml +index 5ce9fe6799c..262cf290ec0 100644 +--- a/linux_os/guide/system/auditing/policy_rules/audit_access_success/rule.yml ++++ b/linux_os/guide/system/auditing/policy_rules/audit_access_success/rule.yml +@@ -7,8 +7,8 @@ title: 'Configure auditing of successful file accesses' + {{% set file_contents_audit_access_success = + "## Successful file access (any other opens) This has to go last. + ## These next two are likely to result in a whole lot of events +--a always,exit -F arch=b32 -S open,openat,open_by_handle_at -F success=1 -F auid>=1000 -F auid!=unset -F key=successful-access +--a always,exit -F arch=b64 -S open,openat,open_by_handle_at -F success=1 -F auid>=1000 -F auid!=unset -F key=successful-access" %}} ++-a always,exit -F arch=b32 -S open,openat,openat2,open_by_handle_at -F success=1 -F auid>=1000 -F auid!=unset -F key=successful-access ++-a always,exit -F arch=b64 -S open,openat,openat2,open_by_handle_at -F success=1 -F auid>=1000 -F auid!=unset -F key=successful-access" %}} + + description: |- + Ensure that successful attempts to access a file are audited. +diff --git a/linux_os/guide/system/auditing/policy_rules/audit_ospp_general/rule.yml b/linux_os/guide/system/auditing/policy_rules/audit_ospp_general/rule.yml +index e37291c68a1..bdc59faa5f7 100644 +--- a/linux_os/guide/system/auditing/policy_rules/audit_ospp_general/rule.yml ++++ b/linux_os/guide/system/auditing/policy_rules/audit_ospp_general/rule.yml +@@ -4,7 +4,7 @@ prodtype: ol8,rhcos4,rhel8,rhel9 + + title: 'Perform general configuration of Audit for OSPP' + +-{{% if product == "rhel9" %}} ++ + {{% set file_contents_audit_ospp_general = + "## The purpose of these rules is to meet the requirements for Operating + ## System Protection Profile (OSPP)v4.2. These rules depends on having +@@ -90,89 +90,7 @@ title: 'Perform general configuration of Audit for OSPP' + ## state results from that policy. This would be handled entirely by + ## that daemon. + " %}} +-{{% else %}} +-{{% set file_contents_audit_ospp_general = +-"## The purpose of these rules is to meet the requirements for Operating +-## System Protection Profile (OSPP)v4.2. These rules depends on having +-## the following rule files copied to /etc/audit/rules.d: +-## +-## 10-base-config.rules, 11-loginuid.rules, +-## 30-ospp-v42-1-create-failed.rules, 30-ospp-v42-1-create-success.rules, +-## 30-ospp-v42-2-modify-failed.rules, 30-ospp-v42-2-modify-success.rules, +-## 30-ospp-v42-3-access-failed.rules, 30-ospp-v42-3-access-success.rules, +-## 30-ospp-v42-4-delete-failed.rules, 30-ospp-v42-4-delete-success.rules, +-## 30-ospp-v42-5-perm-change-failed.rules, +-## 30-ospp-v42-5-perm-change-success.rules, +-## 30-ospp-v42-6-owner-change-failed.rules, +-## 30-ospp-v42-6-owner-change-success.rules +-## +-## original copies may be found in /usr/share/audit/sample-rules/ +- +- +-## User add delete modify. This is covered by pam. However, someone could +-## open a file and directly create or modify a user, so we'll watch passwd and +-## shadow for writes +--a always,exit -F arch=b32 -S openat,open_by_handle_at -F a2&03 -F path=/etc/passwd -F auid>=1000 -F auid!=unset -F key=user-modify +--a always,exit -F arch=b64 -S openat,open_by_handle_at -F a2&03 -F path=/etc/passwd -F auid>=1000 -F auid!=unset -F key=user-modify +--a always,exit -F arch=b32 -S open -F a1&03 -F path=/etc/passwd -F auid>=1000 -F auid!=unset -F key=user-modify +--a always,exit -F arch=b64 -S open -F a1&03 -F path=/etc/passwd -F auid>=1000 -F auid!=unset -F key=user-modify +--a always,exit -F arch=b32 -S openat,open_by_handle_at -F a2&03 -F path=/etc/shadow -F auid>=1000 -F auid!=unset -F key=user-modify +--a always,exit -F arch=b64 -S openat,open_by_handle_at -F a2&03 -F path=/etc/shadow -F auid>=1000 -F auid!=unset -F key=user-modify +--a always,exit -F arch=b32 -S open -F a1&03 -F path=/etc/shadow -F auid>=1000 -F auid!=unset -F key=user-modify +--a always,exit -F arch=b64 -S open -F a1&03 -F path=/etc/shadow -F auid>=1000 -F auid!=unset -F key=user-modify +- +-## User enable and disable. This is entirely handled by pam. +- +-## Group add delete modify. This is covered by pam. However, someone could +-## open a file and directly create or modify a user, so we'll watch group and +-## gshadow for writes +--a always,exit -F path=/etc/passwd -F perm=wa -F auid>=1000 -F auid!=unset -F key=user-modify +--a always,exit -F path=/etc/shadow -F perm=wa -F auid>=1000 -F auid!=unset -F key=user-modify +--a always,exit -F path=/etc/group -F perm=wa -F auid>=1000 -F auid!=unset -F key=group-modify +--a always,exit -F path=/etc/gshadow -F perm=wa -F auid>=1000 -F auid!=unset -F key=group-modify +- + +-## Use of special rights for config changes. This would be use of setuid +-## programs that relate to user accts. This is not all setuid apps because +-## requirements are only for ones that affect system configuration. +--a always,exit -F path=/usr/sbin/unix_chkpwd -F perm=x -F auid>=1000 -F auid!=unset -F key=special-config-changes +--a always,exit -F path=/usr/sbin/usernetctl -F perm=x -F auid>=1000 -F auid!=unset -F key=special-config-changes +--a always,exit -F path=/usr/sbin/userhelper -F perm=x -F auid>=1000 -F auid!=unset -F key=special-config-changes +--a always,exit -F path=/usr/sbin/seunshare -F perm=x -F auid>=1000 -F auid!=unset -F key=special-config-changes +--a always,exit -F path=/usr/bin/mount -F perm=x -F auid>=1000 -F auid!=unset -F key=special-config-changes +--a always,exit -F path=/usr/bin/newgrp -F perm=x -F auid>=1000 -F auid!=unset -F key=special-config-changes +--a always,exit -F path=/usr/bin/newuidmap -F perm=x -F auid>=1000 -F auid!=unset -F key=special-config-changes +--a always,exit -F path=/usr/bin/gpasswd -F perm=x -F auid>=1000 -F auid!=unset -F key=special-config-changes +--a always,exit -F path=/usr/bin/newgidmap -F perm=x -F auid>=1000 -F auid!=unset -F key=special-config-changes +--a always,exit -F path=/usr/bin/umount -F perm=x -F auid>=1000 -F auid!=unset -F key=special-config-changes +--a always,exit -F path=/usr/bin/passwd -F perm=x -F auid>=1000 -F auid!=unset -F key=special-config-changes +--a always,exit -F path=/usr/bin/crontab -F perm=x -F auid>=1000 -F auid!=unset -F key=special-config-changes +--a always,exit -F path=/usr/bin/at -F perm=x -F auid>=1000 -F auid!=unset -F key=special-config-changes +- +-## Privilege escalation via su or sudo. This is entirely handled by pam. +- +-## Audit log access +--a always,exit -F dir=/var/log/audit/ -F perm=r -F auid>=1000 -F auid!=unset -F key=access-audit-trail +-## Attempts to Alter Process and Session Initiation Information +--a always,exit -F path=/var/run/utmp -F perm=wa -F auid>=1000 -F auid!=unset -F key=session +--a always,exit -F path=/var/log/btmp -F perm=wa -F auid>=1000 -F auid!=unset -F key=session +--a always,exit -F path=/var/log/wtmp -F perm=wa -F auid>=1000 -F auid!=unset -F key=session +- +-## Attempts to modify MAC controls +--a always,exit -F dir=/etc/selinux/ -F perm=wa -F auid>=1000 -F auid!=unset -F key=MAC-policy +- +-## Software updates. This is entirely handled by rpm. +- +-## System start and shutdown. This is entirely handled by systemd +- +-## Kernel Module loading. This is handled in 43-module-load.rules +- +-## Application invocation. The requirements list an optional requirement +-## FPT_SRP_EXT.1 Software Restriction Policies. This event is intended to +-## state results from that policy. This would be handled entirely by +-## that daemon. +-" %}} +-{{% endif %}} + + description: |- + Configure some basic Audit parameters specific for OSPP profile. +diff --git a/linux_os/guide/system/auditing/policy_rules/audit_ospp_general/tests/correct_rules.pass.sh b/linux_os/guide/system/auditing/policy_rules/audit_ospp_general/tests/correct_rules.pass.sh +index ffe2344db56..c59e7e5e1f2 100644 +--- a/linux_os/guide/system/auditing/policy_rules/audit_ospp_general/tests/correct_rules.pass.sh ++++ b/linux_os/guide/system/auditing/policy_rules/audit_ospp_general/tests/correct_rules.pass.sh +@@ -1,3 +1,3 @@ +-# platform = Red Hat Enterprise Linux 8 ++# platform = Red Hat Enterprise Linux 8,Red Hat Enterprise Linux 9 + + cp $SHARED/audit/30-ospp-v42.rules /etc/audit/rules.d/ +diff --git a/linux_os/guide/system/auditing/policy_rules/audit_ospp_general/tests/correct_rules_rhel9.pass.sh b/linux_os/guide/system/auditing/policy_rules/audit_ospp_general/tests/correct_rules_rhel9.pass.sh +deleted file mode 100644 +index 96ef5ae0a23..00000000000 +--- a/linux_os/guide/system/auditing/policy_rules/audit_ospp_general/tests/correct_rules_rhel9.pass.sh ++++ /dev/null +@@ -1,3 +0,0 @@ +-# platform = Red Hat Enterprise Linux 9 +- +-cp $SHARED/audit/30-ospp-v42_rhel9.rules /etc/audit/rules.d/30-ospp-v42.rules +diff --git a/tests/shared/audit/30-ospp-v42-3-access-failed.rules b/tests/shared/audit/30-ospp-v42-3-access-failed.rules +index a5aad3a95ce..39ac7a883ca 100644 +--- a/tests/shared/audit/30-ospp-v42-3-access-failed.rules ++++ b/tests/shared/audit/30-ospp-v42-3-access-failed.rules +@@ -1,5 +1,5 @@ + ## Unsuccessful file access (any other opens) This has to go last. +--a always,exit -F arch=b32 -S open,openat,open_by_handle_at -F exit=-EACCES -F auid>=1000 -F auid!=unset -F key=unsuccessful-access +--a always,exit -F arch=b64 -S open,openat,open_by_handle_at -F exit=-EACCES -F auid>=1000 -F auid!=unset -F key=unsuccessful-access +--a always,exit -F arch=b32 -S open,openat,open_by_handle_at -F exit=-EPERM -F auid>=1000 -F auid!=unset -F key=unsuccessful-access +--a always,exit -F arch=b64 -S open,openat,open_by_handle_at -F exit=-EPERM -F auid>=1000 -F auid!=unset -F key=unsuccessful-access ++-a always,exit -F arch=b32 -S open,openat,openat2,open_by_handle_at -F exit=-EACCES -F auid>=1000 -F auid!=unset -F key=unsuccessful-access ++-a always,exit -F arch=b64 -S open,openat,openat2,open_by_handle_at -F exit=-EACCES -F auid>=1000 -F auid!=unset -F key=unsuccessful-access ++-a always,exit -F arch=b32 -S open,openat,openat2,open_by_handle_at -F exit=-EPERM -F auid>=1000 -F auid!=unset -F key=unsuccessful-access ++-a always,exit -F arch=b64 -S open,openat,openat2,open_by_handle_at -F exit=-EPERM -F auid>=1000 -F auid!=unset -F key=unsuccessful-access +diff --git a/tests/shared/audit/30-ospp-v42-3-access-success.rules b/tests/shared/audit/30-ospp-v42-3-access-success.rules +index 0c8a6b65760..79004ce0c21 100644 +--- a/tests/shared/audit/30-ospp-v42-3-access-success.rules ++++ b/tests/shared/audit/30-ospp-v42-3-access-success.rules +@@ -1,4 +1,4 @@ + ## Successful file access (any other opens) This has to go last. + ## These next two are likely to result in a whole lot of events +--a always,exit -F arch=b32 -S open,openat,open_by_handle_at -F success=1 -F auid>=1000 -F auid!=unset -F key=successful-access +--a always,exit -F arch=b64 -S open,openat,open_by_handle_at -F success=1 -F auid>=1000 -F auid!=unset -F key=successful-access ++-a always,exit -F arch=b32 -S open,openat,openat2,open_by_handle_at -F success=1 -F auid>=1000 -F auid!=unset -F key=successful-access ++-a always,exit -F arch=b64 -S open,openat,openat2,open_by_handle_at -F success=1 -F auid>=1000 -F auid!=unset -F key=successful-access +diff --git a/tests/shared/audit/30-ospp-v42.rules b/tests/shared/audit/30-ospp-v42.rules +index 3dced17255c..2d3c48265b6 100644 +--- a/tests/shared/audit/30-ospp-v42.rules ++++ b/tests/shared/audit/30-ospp-v42.rules +@@ -57,6 +57,10 @@ + + ## Privilege escalation via su or sudo. This is entirely handled by pam. + ++## Watch for configuration changes to privilege escalation. ++-a always,exit -F path=/etc/sudoers -F perm=wa -F key=special-config-changes ++-a always,exit -F dir=/etc/sudoers.d/ -F perm=wa -F key=special-config-changes ++ + ## Audit log access + -a always,exit -F dir=/var/log/audit/ -F perm=r -F auid>=1000 -F auid!=unset -F key=access-audit-trail + ## Attempts to Alter Process and Session Initiation Information +diff --git a/tests/shared/audit/30-ospp-v42_rhel9.rules b/tests/shared/audit/30-ospp-v42_rhel9.rules +deleted file mode 100644 +index 2d3c48265b6..00000000000 +--- a/tests/shared/audit/30-ospp-v42_rhel9.rules ++++ /dev/null +@@ -1,84 +0,0 @@ +-## The purpose of these rules is to meet the requirements for Operating +-## System Protection Profile (OSPP)v4.2. These rules depends on having +-## the following rule files copied to /etc/audit/rules.d: +-## +-## 10-base-config.rules, 11-loginuid.rules, +-## 30-ospp-v42-1-create-failed.rules, 30-ospp-v42-1-create-success.rules, +-## 30-ospp-v42-2-modify-failed.rules, 30-ospp-v42-2-modify-success.rules, +-## 30-ospp-v42-3-access-failed.rules, 30-ospp-v42-3-access-success.rules, +-## 30-ospp-v42-4-delete-failed.rules, 30-ospp-v42-4-delete-success.rules, +-## 30-ospp-v42-5-perm-change-failed.rules, +-## 30-ospp-v42-5-perm-change-success.rules, +-## 30-ospp-v42-6-owner-change-failed.rules, +-## 30-ospp-v42-6-owner-change-success.rules +-## +-## original copies may be found in /usr/share/audit/sample-rules/ +- +- +-## User add delete modify. This is covered by pam. However, someone could +-## open a file and directly create or modify a user, so we'll watch passwd and +-## shadow for writes +--a always,exit -F arch=b32 -S openat,open_by_handle_at -F a2&03 -F path=/etc/passwd -F auid>=1000 -F auid!=unset -F key=user-modify +--a always,exit -F arch=b64 -S openat,open_by_handle_at -F a2&03 -F path=/etc/passwd -F auid>=1000 -F auid!=unset -F key=user-modify +--a always,exit -F arch=b32 -S open -F a1&03 -F path=/etc/passwd -F auid>=1000 -F auid!=unset -F key=user-modify +--a always,exit -F arch=b64 -S open -F a1&03 -F path=/etc/passwd -F auid>=1000 -F auid!=unset -F key=user-modify +--a always,exit -F arch=b32 -S openat,open_by_handle_at -F a2&03 -F path=/etc/shadow -F auid>=1000 -F auid!=unset -F key=user-modify +--a always,exit -F arch=b64 -S openat,open_by_handle_at -F a2&03 -F path=/etc/shadow -F auid>=1000 -F auid!=unset -F key=user-modify +--a always,exit -F arch=b32 -S open -F a1&03 -F path=/etc/shadow -F auid>=1000 -F auid!=unset -F key=user-modify +--a always,exit -F arch=b64 -S open -F a1&03 -F path=/etc/shadow -F auid>=1000 -F auid!=unset -F key=user-modify +- +-## User enable and disable. This is entirely handled by pam. +- +-## Group add delete modify. This is covered by pam. However, someone could +-## open a file and directly create or modify a user, so we'll watch group and +-## gshadow for writes +--a always,exit -F path=/etc/passwd -F perm=wa -F auid>=1000 -F auid!=unset -F key=user-modify +--a always,exit -F path=/etc/shadow -F perm=wa -F auid>=1000 -F auid!=unset -F key=user-modify +--a always,exit -F path=/etc/group -F perm=wa -F auid>=1000 -F auid!=unset -F key=group-modify +--a always,exit -F path=/etc/gshadow -F perm=wa -F auid>=1000 -F auid!=unset -F key=group-modify +- +- +-## Use of special rights for config changes. This would be use of setuid +-## programs that relate to user accts. This is not all setuid apps because +-## requirements are only for ones that affect system configuration. +--a always,exit -F path=/usr/sbin/unix_chkpwd -F perm=x -F auid>=1000 -F auid!=unset -F key=special-config-changes +--a always,exit -F path=/usr/sbin/usernetctl -F perm=x -F auid>=1000 -F auid!=unset -F key=special-config-changes +--a always,exit -F path=/usr/sbin/userhelper -F perm=x -F auid>=1000 -F auid!=unset -F key=special-config-changes +--a always,exit -F path=/usr/sbin/seunshare -F perm=x -F auid>=1000 -F auid!=unset -F key=special-config-changes +--a always,exit -F path=/usr/bin/mount -F perm=x -F auid>=1000 -F auid!=unset -F key=special-config-changes +--a always,exit -F path=/usr/bin/newgrp -F perm=x -F auid>=1000 -F auid!=unset -F key=special-config-changes +--a always,exit -F path=/usr/bin/newuidmap -F perm=x -F auid>=1000 -F auid!=unset -F key=special-config-changes +--a always,exit -F path=/usr/bin/gpasswd -F perm=x -F auid>=1000 -F auid!=unset -F key=special-config-changes +--a always,exit -F path=/usr/bin/newgidmap -F perm=x -F auid>=1000 -F auid!=unset -F key=special-config-changes +--a always,exit -F path=/usr/bin/umount -F perm=x -F auid>=1000 -F auid!=unset -F key=special-config-changes +--a always,exit -F path=/usr/bin/passwd -F perm=x -F auid>=1000 -F auid!=unset -F key=special-config-changes +--a always,exit -F path=/usr/bin/crontab -F perm=x -F auid>=1000 -F auid!=unset -F key=special-config-changes +--a always,exit -F path=/usr/bin/at -F perm=x -F auid>=1000 -F auid!=unset -F key=special-config-changes +- +-## Privilege escalation via su or sudo. This is entirely handled by pam. +- +-## Watch for configuration changes to privilege escalation. +--a always,exit -F path=/etc/sudoers -F perm=wa -F key=special-config-changes +--a always,exit -F dir=/etc/sudoers.d/ -F perm=wa -F key=special-config-changes +- +-## Audit log access +--a always,exit -F dir=/var/log/audit/ -F perm=r -F auid>=1000 -F auid!=unset -F key=access-audit-trail +-## Attempts to Alter Process and Session Initiation Information +--a always,exit -F path=/var/run/utmp -F perm=wa -F auid>=1000 -F auid!=unset -F key=session +--a always,exit -F path=/var/log/btmp -F perm=wa -F auid>=1000 -F auid!=unset -F key=session +--a always,exit -F path=/var/log/wtmp -F perm=wa -F auid>=1000 -F auid!=unset -F key=session +- +-## Attempts to modify MAC controls +--a always,exit -F dir=/etc/selinux/ -F perm=wa -F auid>=1000 -F auid!=unset -F key=MAC-policy +- +-## Software updates. This is entirely handled by rpm. +- +-## System start and shutdown. This is entirely handled by systemd +- +-## Kernel Module loading. This is handled in 43-module-load.rules +- +-## Application invocation. The requirements list an optional requirement +-## FPT_SRP_EXT.1 Software Restriction Policies. This event is intended to +-## state results from that policy. This would be handled entirely by +-## that daemon. +- diff --git a/SOURCES/scap-security-guide-0.1.61-rhel8_stig_audit_rules-PR_8174.patch b/SOURCES/scap-security-guide-0.1.61-rhel8_stig_audit_rules-PR_8174.patch index 5b1c8e0..8b785cd 100644 --- a/SOURCES/scap-security-guide-0.1.61-rhel8_stig_audit_rules-PR_8174.patch +++ b/SOURCES/scap-security-guide-0.1.61-rhel8_stig_audit_rules-PR_8174.patch @@ -1,16 +1,10 @@ -commit 3064c4bc94047b1ca4c91db6008ded0694121563 -Author: Watson Sato -Date: Mon Feb 28 10:57:59 2022 +0100 - - Manual edited patch scap-security-guide-0.1.61-rhel8_stig_audit_rules-PR_8174.patch. - diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fchmod/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fchmod/rule.yml -index 6c3cc55..9208a17 100644 +index a0b3efcbf79..1bc7afbb224 100644 --- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fchmod/rule.yml +++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fchmod/rule.yml -@@ -55,7 +55,7 @@ references: - srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215,SRG-OS-000064-GPOS-00033,SRG-OS-000466-GPOS-00210,SRG-OS-000458-GPOS-00203 - stigid@ol7: OL07-00-030420 +@@ -58,7 +58,7 @@ references: + stigid@ol7: OL07-00-030410 + stigid@ol8: OL08-00-030540 stigid@rhel7: RHEL-07-030420 - stigid@rhel8: RHEL-08-030540 + stigid@rhel8: RHEL-08-030490 @@ -18,25 +12,25 @@ index 6c3cc55..9208a17 100644 stigid@sle15: SLES-15-030300 stigid@ubuntu2004: UBTU-20-010153 diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fchmodat/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fchmodat/rule.yml -index 3e51d48..595824c 100644 +index 83dd57f2b6d..dc8211684f2 100644 --- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fchmodat/rule.yml +++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fchmodat/rule.yml -@@ -55,7 +55,7 @@ references: - srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215,SRG-OS-000064-GPOS-00033,SRG-OS-000466-GPOS-00210,SRG-OS-000458-GPOS-00203 - stigid@ol7: OL07-00-030430 +@@ -58,7 +58,7 @@ references: + stigid@ol7: OL07-00-030410 + stigid@ol8: OL08-00-030530 stigid@rhel7: RHEL-07-030430 - stigid@rhel8: RHEL-08-030530 + stigid@rhel8: RHEL-08-030490 stigid@sle12: SLES-12-020480 - stigid@sle15: SLES-12-030310 + stigid@sle15: SLES-15-030310 stigid@ubuntu2004: UBTU-20-010154 diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fchown/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fchown/rule.yml -index d89875f..470a995 100644 +index 1b78aab4a1a..07592bb2fd9 100644 --- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fchown/rule.yml +++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fchown/rule.yml -@@ -58,7 +58,7 @@ references: - srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215,SRG-OS-000064-GPOS-00033,SRG-OS-000466-GPOS-00210,SRG-OS-000458-GPOS-00203,SRG-OS-000474-GPOS-00219 - stigid@ol7: OL07-00-030380 +@@ -61,7 +61,7 @@ references: + stigid@ol7: OL07-00-030370 + stigid@ol8: OL08-00-030520 stigid@rhel7: RHEL-07-030380 - stigid@rhel8: RHEL-08-030520 + stigid@rhel8: RHEL-08-030480 @@ -44,12 +38,12 @@ index d89875f..470a995 100644 stigid@sle15: SLES-15-030260 stigid@ubuntu2004: UBTU-20-010149 diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fchownat/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fchownat/rule.yml -index e6caaeb..4db008f 100644 +index 360c60de06d..084970765b2 100644 --- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fchownat/rule.yml +++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fchownat/rule.yml -@@ -55,7 +55,7 @@ references: - srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215,SRG-OS-000064-GPOS-00033,SRG-OS-000466-GPOS-00210,SRG-OS-000458-GPOS-00203,SRG-OS-000474-GPOS-00219 - stigid@ol7: OL07-00-030400 +@@ -58,7 +58,7 @@ references: + stigid@ol7: OL07-00-030370 + stigid@ol8: OL08-00-030510 stigid@rhel7: RHEL-07-030400 - stigid@rhel8: RHEL-08-030510 + stigid@rhel8: RHEL-08-030480 @@ -57,12 +51,12 @@ index e6caaeb..4db008f 100644 stigid@sle15: SLES-15-030280 stigid@ubuntu2004: UBTU-20-010150 diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fremovexattr/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fremovexattr/rule.yml -index b9ad3c7..cd4b200 100644 +index 19bf8a5b981..5695440ad7d 100644 --- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fremovexattr/rule.yml +++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fremovexattr/rule.yml -@@ -72,7 +72,7 @@ references: - srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000458-GPOS-00203,SRG-OS-000462-GPOS-00206,SRG-OS-000463-GPOS-00207,SRG-OS-000471-GPOS-00215,SRG-OS-000474-GPOS-00219,SRG-OS-000466-GPOS-00210,SRG-OS-000064-GPOS-00033 - stigid@ol7: OL07-00-030480 +@@ -75,7 +75,7 @@ references: + stigid@ol7: OL07-00-030440 + stigid@ol8: OL08-00-030240 stigid@rhel7: RHEL-07-030480 - stigid@rhel8: RHEL-08-030240 + stigid@rhel8: RHEL-08-030200 @@ -70,12 +64,12 @@ index b9ad3c7..cd4b200 100644 stigid@sle15: SLES-15-030210 stigid@ubuntu2004: UBTU-20-010147 diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fsetxattr/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fsetxattr/rule.yml -index cedf05f..dc6ef7f 100644 +index 40cd114042e..ab536a8ae0a 100644 --- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fsetxattr/rule.yml +++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_fsetxattr/rule.yml -@@ -67,7 +67,7 @@ references: - srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000458-GPOS-00203,SRG-OS-000462-GPOS-00206,SRG-OS-000463-GPOS-00207,SRG-OS-000468-GPOS-00212,SRG-OS-000471-GPOS-00215,SRG-OS-000474-GPOS-00219,SRG-OS-000064-GPOS-00033 - stigid@ol7: OL07-00-030450 +@@ -70,7 +70,7 @@ references: + stigid@ol7: OL07-00-030440 + stigid@ol8: OL08-00-030230 stigid@rhel7: RHEL-07-030450 - stigid@rhel8: RHEL-08-030230 + stigid@rhel8: RHEL-08-030200 @@ -83,12 +77,12 @@ index cedf05f..dc6ef7f 100644 stigid@sle15: SLES-15-030230 stigid@ubuntu2004: UBTU-20-010144 diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_lchown/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_lchown/rule.yml -index 190509c..e57e177 100644 +index 81dddd9fb71..d1f4ee35ccb 100644 --- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_lchown/rule.yml +++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_lchown/rule.yml -@@ -55,7 +55,7 @@ references: - srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215,SRG-OS-000064-GPOS-00033,SRG-OS-000466-GPOS-00210,SRG-OS-000458-GPOS-00203,SRG-OS-000474-GPOS-00219 - stigid@ol7: OL07-00-030390 +@@ -58,7 +58,7 @@ references: + stigid@ol7: OL07-00-030370 + stigid@ol8: OL08-00-030500 stigid@rhel7: RHEL-07-030390 - stigid@rhel8: RHEL-08-030500 + stigid@rhel8: RHEL-08-030480 @@ -96,12 +90,12 @@ index 190509c..e57e177 100644 stigid@sle15: SLES-15-030270 stigid@ubuntu2004: UBTU-20-010151 diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_lsetxattr/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_lsetxattr/rule.yml -index 3662262..52ee93a 100644 +index fa15012b05f..a2425e373bc 100644 --- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_lsetxattr/rule.yml +++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_lsetxattr/rule.yml -@@ -66,7 +66,7 @@ references: - srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000458-GPOS-00203,SRG-OS-000462-GPOS-00206,SRG-OS-000463-GPOS-00207,SRG-OS-000468-GPOS-00212,SRG-OS-000471-GPOS-00215,SRG-OS-000474-GPOS-00219,SRG-OS-000064-GPOS-00033 - stigid@ol7: OL07-00-030460 +@@ -69,7 +69,7 @@ references: + stigid@ol7: OL07-00-030440 + stigid@ol8: OL08-00-030220 stigid@rhel7: RHEL-07-030460 - stigid@rhel8: RHEL-08-030220 + stigid@rhel8: RHEL-08-030200 @@ -109,12 +103,12 @@ index 3662262..52ee93a 100644 stigid@ubuntu2004: UBTU-20-010143 vmmsrg: SRG-OS-000458-VMM-001810,SRG-OS-000474-VMM-001940 diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_removexattr/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_removexattr/rule.yml -index ac9d349..c462eb7 100644 +index 6d15eecee2c..0be27fbe860 100644 --- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_removexattr/rule.yml +++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_removexattr/rule.yml -@@ -71,7 +71,7 @@ references: - srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000458-GPOS-00203,SRG-OS-000462-GPOS-00206,SRG-OS-000463-GPOS-00207,SRG-OS-000468-GPOS-00212,SRG-OS-000471-GPOS-00215,SRG-OS-000474-GPOS-00219,SRG-OS-000466-GPOS-00210,SRG-OS-000064-GPOS-00033 - stigid@ol7: OL07-00-030470 +@@ -74,7 +74,7 @@ references: + stigid@ol7: OL07-00-030440 + stigid@ol8: OL08-00-030210 stigid@rhel7: RHEL-07-030470 - stigid@rhel8: RHEL-08-030210 + stigid@rhel8: RHEL-08-030200 @@ -122,12 +116,12 @@ index ac9d349..c462eb7 100644 stigid@sle15: SLES-15-030190 stigid@ubuntu2004: UBTU-20-010145 diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_setxattr/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_setxattr/rule.yml -index b661a1f..23630ec 100644 +index 6f7cea26e16..5dc13a0a43a 100644 --- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_setxattr/rule.yml +++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_dac_actions/audit_rules_dac_modification_setxattr/rule.yml -@@ -67,7 +67,7 @@ references: - srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215,SRG-OS-000064-GPOS-00033,SRG-OS-000458-GPOS-00203 +@@ -70,7 +70,7 @@ references: stigid@ol7: OL07-00-030440 + stigid@ol8: OL08-00-030270 stigid@rhel7: RHEL-07-030440 - stigid@rhel8: RHEL-08-030270 + stigid@rhel8: RHEL-08-030200 @@ -135,12 +129,12 @@ index b661a1f..23630ec 100644 stigid@sle15: SLES-15-030220 stigid@ubuntu2004: UBTU-20-010142 diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events_renameat/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events_renameat/rule.yml -index 37620a3..0f25e93 100644 +index 718dcb8a9d9..120d6fa84d3 100644 --- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events_renameat/rule.yml +++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events_renameat/rule.yml -@@ -48,7 +48,7 @@ references: - srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215,SRG-OS-000466-GPOS-00210,SRG-OS-000467-GPOS-00211,SRG-OS-000468-GPOS-00212 - stigid@ol7: OL07-00-030890 +@@ -52,7 +52,7 @@ references: + stigid@ol7: OL07-00-030910 + stigid@ol8: OL08-00-030362 stigid@rhel7: RHEL-07-030890 - stigid@rhel8: RHEL-08-030362 + stigid@rhel8: RHEL-08-030361 @@ -148,12 +142,12 @@ index 37620a3..0f25e93 100644 vmmsrg: SRG-OS-000466-VMM-001870,SRG-OS-000468-VMM-001890 diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events_rmdir/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events_rmdir/rule.yml -index e6b4004..7c5b3b0 100644 +index 643f075f46a..4caa7c66986 100644 --- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events_rmdir/rule.yml +++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events_rmdir/rule.yml -@@ -47,7 +47,7 @@ references: - srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215,SRG-OS-000466-GPOS-00210,SRG-OS-000467-GPOS-00211,SRG-OS-000468-GPOS-00212 - stigid@ol7: OL07-00-030900 +@@ -49,7 +49,7 @@ references: + stigid@ol7: OL07-00-030910 + stigid@ol8: OL08-00-030363 stigid@rhel7: RHEL-07-030900 - stigid@rhel8: RHEL-08-030363 + stigid@rhel8: RHEL-08-030361 @@ -161,12 +155,12 @@ index e6b4004..7c5b3b0 100644 {{{ complete_ocil_entry_audit_syscall(syscall="rmdir") }}} diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events_unlink/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events_unlink/rule.yml -index bfe53b7..209c622 100644 +index 9cf3c4668bc..8fea9dc4582 100644 --- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events_unlink/rule.yml +++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events_unlink/rule.yml -@@ -48,7 +48,7 @@ references: - srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215,SRG-OS-000466-GPOS-00210,SRG-OS-000467-GPOS-00211,SRG-OS-000468-GPOS-00212 +@@ -52,7 +52,7 @@ references: stigid@ol7: OL07-00-030910 + stigid@ol8: OL08-00-030364 stigid@rhel7: RHEL-07-030910 - stigid@rhel8: RHEL-08-030364 + stigid@rhel8: RHEL-08-030361 @@ -174,12 +168,12 @@ index bfe53b7..209c622 100644 vmmsrg: SRG-OS-000466-VMM-001870,SRG-OS-000468-VMM-001890 diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events_unlinkat/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events_unlinkat/rule.yml -index bd246f1..56c644e 100644 +index d0ebbdbd723..bee18e99b52 100644 --- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events_unlinkat/rule.yml +++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_deletion_events/audit_rules_file_deletion_events_unlinkat/rule.yml -@@ -48,7 +48,7 @@ references: - srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215,SRG-OS-000466-GPOS-00210,SRG-OS-000467-GPOS-00211,SRG-OS-000468-GPOS-00212 - stigid@ol7: OL07-00-030920 +@@ -52,7 +52,7 @@ references: + stigid@ol7: OL07-00-030910 + stigid@ol8: OL08-00-030365 stigid@rhel7: RHEL-07-030920 - stigid@rhel8: RHEL-08-030365 + stigid@rhel8: RHEL-08-030361 @@ -187,12 +181,12 @@ index bd246f1..56c644e 100644 vmmsrg: SRG-OS-000466-VMM-001870,SRG-OS-000468-VMM-001890 diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_creat/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_creat/rule.yml -index 5c751cb..4516c7c 100644 +index 373b12525e1..736c6643b57 100644 --- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_creat/rule.yml +++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_creat/rule.yml -@@ -60,7 +60,7 @@ references: - srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215,SRG-OS-000064-GPOS-00033,SRG-OS-000458-GPOS-00203,SRG-OS-000461-GPOS-00205 - stigid@ol7: OL07-00-030500 +@@ -63,7 +63,7 @@ references: + stigid@ol7: OL07-00-030510 + stigid@ol8: OL08-00-030470 stigid@rhel7: RHEL-07-030500 - stigid@rhel8: RHEL-08-030470 + stigid@rhel8: RHEL-08-030420 @@ -200,12 +194,12 @@ index 5c751cb..4516c7c 100644 stigid@sle15: SLES-15-030160 stigid@ubuntu2004: UBTU-20-010158 diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_ftruncate/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_ftruncate/rule.yml -index 76bcea1..4a845c3 100644 +index 2b2d82a736b..6b4176d53e3 100644 --- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_ftruncate/rule.yml +++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_ftruncate/rule.yml -@@ -63,7 +63,7 @@ references: - srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215,SRG-OS-000064-GPOS-00033,SRG-OS-000458-GPOS-00203,SRG-OS-000461-GPOS-00205 - stigid@ol7: OL07-00-030550 +@@ -66,7 +66,7 @@ references: + stigid@ol7: OL07-00-030510 + stigid@ol8: OL08-00-030460 stigid@rhel7: RHEL-07-030550 - stigid@rhel8: RHEL-08-030460 + stigid@rhel8: RHEL-08-030420 @@ -213,12 +207,12 @@ index 76bcea1..4a845c3 100644 stigid@sle15: SLES-15-030320 stigid@ubuntu2004: UBTU-20-010157 diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_open/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_open/rule.yml -index 7c6764d..fc6cf35 100644 +index dcb3d0f0525..90d45b6787e 100644 --- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_open/rule.yml +++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_open/rule.yml -@@ -63,7 +63,7 @@ references: - srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215,SRG-OS-000064-GPOS-00033,SRG-OS-000458-GPOS-00203,SRG-OS-000461-GPOS-00205 +@@ -66,7 +66,7 @@ references: stigid@ol7: OL07-00-030510 + stigid@ol8: OL08-00-030440 stigid@rhel7: RHEL-07-030510 - stigid@rhel8: RHEL-08-030440 + stigid@rhel8: RHEL-08-030420 @@ -226,12 +220,12 @@ index 7c6764d..fc6cf35 100644 stigid@sle15: SLES-15-030150 stigid@ubuntu2004: UBTU-20-010155 diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_open_by_handle_at/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_open_by_handle_at/rule.yml -index 9bb5ffe..be08972 100644 +index e68d892bb90..6df936e489c 100644 --- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_open_by_handle_at/rule.yml +++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_open_by_handle_at/rule.yml -@@ -59,7 +59,7 @@ references: - srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215,SRG-OS-000064-GPOS-00033,SRG-OS-000458-GPOS-00203,SRG-OS-000461-GPOS-00205 - stigid@ol7: OL07-00-030530 +@@ -60,7 +60,7 @@ references: + stigid@ol7: OL07-00-030510 + stigid@ol8: OL08-00-030450 stigid@rhel7: RHEL-07-030530 - stigid@rhel8: RHEL-08-030450 + stigid@rhel8: RHEL-08-030420 @@ -239,12 +233,12 @@ index 9bb5ffe..be08972 100644 stigid@sle15: SLES-15-030180 stigid@ubuntu2004: UBTU-20-010160 diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_openat/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_openat/rule.yml -index c99656c..63aa3f3 100644 +index cd6bd545e71..1b6ae818e48 100644 --- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_openat/rule.yml +++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_file_modification/audit_rules_unsuccessful_file_modification_openat/rule.yml -@@ -63,7 +63,7 @@ references: - srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215,SRG-OS-000064-GPOS-00033,SRG-OS-000458-GPOS-00203,SRG-OS-000461-GPOS-00205 - stigid@ol7: OL07-00-030520 +@@ -66,7 +66,7 @@ references: + stigid@ol7: OL07-00-030510 + stigid@ol8: OL08-00-030430 stigid@rhel7: RHEL-07-030520 - stigid@rhel8: RHEL-08-030430 + stigid@rhel8: RHEL-08-030420 @@ -252,12 +246,12 @@ index c99656c..63aa3f3 100644 stigid@sle15: SLES-15-030170 stigid@ubuntu2004: UBTU-20-010159 diff --git a/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading_finit/rule.yml b/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading_finit/rule.yml -index aa17002..62cc33d 100644 +index 50e5b4e4f02..2f1c6d0bf22 100644 --- a/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading_finit/rule.yml +++ b/linux_os/guide/system/auditing/auditd_configure_rules/audit_kernel_module_loading/audit_rules_kernel_module_loading_finit/rule.yml -@@ -50,7 +50,7 @@ references: - srg: SRG-OS-000037-GPOS-00015,SRG-OS-000042-GPOS-00020,SRG-OS-000062-GPOS-00031,SRG-OS-000392-GPOS-00172,SRG-OS-000462-GPOS-00206,SRG-OS-000471-GPOS-00215,SRG-OS-000471-GPOS-00216,SRG-OS-000477-GPOS-00222 - stigid@ol7: OL07-00-030821 +@@ -51,7 +51,7 @@ references: + stigid@ol7: OL07-00-030820 + stigid@ol8: OL08-00-030380 stigid@rhel7: RHEL-07-030821 - stigid@rhel8: RHEL-08-030380 + stigid@rhel8: RHEL-08-030360 @@ -265,9 +259,125 @@ index aa17002..62cc33d 100644 stigid@sle15: SLES-15-030530 stigid@ubuntu2004: UBTU-20-010180 diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index a641eee..5829039 100644 +index ffca983d0bd..d92bc72971c 100644 --- a/products/rhel8/profiles/stig.profile +++ b/products/rhel8/profiles/stig.profile +@@ -560,6 +560,8 @@ selections: + + # RHEL-08-020220 + - accounts_password_pam_pwhistory_remember_system_auth ++ ++ # RHEL-08-020221 + - accounts_password_pam_pwhistory_remember_password_auth + + # RHEL-08-020230 +@@ -712,18 +714,11 @@ selections: + + # RHEL-08-030200 + - audit_rules_dac_modification_lremovexattr +- +- # RHEL-08-030210 + - audit_rules_dac_modification_removexattr +- +- # RHEL-08-030220 + - audit_rules_dac_modification_lsetxattr +- +- # RHEL-08-030230 + - audit_rules_dac_modification_fsetxattr +- +- # RHEL-08-030240 + - audit_rules_dac_modification_fremovexattr ++ - audit_rules_dac_modification_setxattr + + # RHEL-08-030250 + - audit_rules_privileged_commands_chage +@@ -731,8 +726,6 @@ selections: + # RHEL-08-030260 + - audit_rules_execution_chcon + +- # RHEL-08-030270 +- - audit_rules_dac_modification_setxattr + + # RHEL-08-030280 + - audit_rules_privileged_commands_ssh_agent +@@ -787,28 +780,18 @@ selections: + + # RHEL-08-030360 + - audit_rules_kernel_module_loading_init ++ - audit_rules_kernel_module_loading_finit + + # RHEL-08-030361 + - audit_rules_file_deletion_events_rename +- +- # RHEL-08-030362 + - audit_rules_file_deletion_events_renameat +- +- # RHEL-08-030363 + - audit_rules_file_deletion_events_rmdir +- +- # RHEL-08-030364 + - audit_rules_file_deletion_events_unlink +- +- # RHEL-08-030365 + - audit_rules_file_deletion_events_unlinkat + + # RHEL-08-030370 + - audit_rules_privileged_commands_gpasswd + +- # RHEL-08-030380 +- - audit_rules_kernel_module_loading_finit +- + # RHEL-08-030390 + - audit_rules_kernel_module_loading_delete + +@@ -820,41 +803,21 @@ selections: + + # RHEL-08-030420 + - audit_rules_unsuccessful_file_modification_truncate +- +- # RHEL-08-030430 + - audit_rules_unsuccessful_file_modification_openat +- +- # RHEL-08-030440 + - audit_rules_unsuccessful_file_modification_open +- +- # RHEL-08-030450 + - audit_rules_unsuccessful_file_modification_open_by_handle_at +- +- # RHEL-08-030460 + - audit_rules_unsuccessful_file_modification_ftruncate +- +- # RHEL-08-030470 + - audit_rules_unsuccessful_file_modification_creat + + # RHEL-08-030480 + - audit_rules_dac_modification_chown +- +- # RHEL-08-030490 +- - audit_rules_dac_modification_chmod +- +- # RHEL-08-030500 + - audit_rules_dac_modification_lchown +- +- # RHEL-08-030510 + - audit_rules_dac_modification_fchownat +- +- # RHEL-08-030520 + - audit_rules_dac_modification_fchown + +- # RHEL-08-030530 ++ # RHEL-08-030490 ++ - audit_rules_dac_modification_chmod + - audit_rules_dac_modification_fchmodat +- +- # RHEL-08-030540 + - audit_rules_dac_modification_fchmod + + # RHEL-08-030550 +diff --git a/products/rhel9/profiles/stig.profile b/products/rhel9/profiles/stig.profile +index eb2cac913bd..42c6d0e9aca 100644 +--- a/products/rhel9/profiles/stig.profile ++++ b/products/rhel9/profiles/stig.profile @@ -561,6 +561,8 @@ selections: # RHEL-08-020220 @@ -297,16 +407,17 @@ index a641eee..5829039 100644 # RHEL-08-030250 - audit_rules_privileged_commands_chage -@@ -732,8 +727,6 @@ selections: +@@ -732,9 +727,6 @@ selections: # RHEL-08-030260 - audit_rules_execution_chcon - # RHEL-08-030270 - - audit_rules_dac_modification_setxattr - +- # RHEL-08-030280 - audit_rules_privileged_commands_ssh_agent -@@ -788,28 +781,18 @@ selections: + +@@ -788,28 +780,18 @@ selections: # RHEL-08-030360 - audit_rules_kernel_module_loading_init @@ -336,7 +447,7 @@ index a641eee..5829039 100644 # RHEL-08-030390 - audit_rules_kernel_module_loading_delete -@@ -821,41 +804,21 @@ selections: +@@ -821,41 +803,21 @@ selections: # RHEL-08-030420 - audit_rules_unsuccessful_file_modification_truncate diff --git a/SOURCES/scap-security-guide-0.1.61-rhel8_stig_v1r5-PR_8050.patch b/SOURCES/scap-security-guide-0.1.61-rhel8_stig_v1r5-PR_8050.patch index c03a033..5ec2d98 100644 --- a/SOURCES/scap-security-guide-0.1.61-rhel8_stig_v1r5-PR_8050.patch +++ b/SOURCES/scap-security-guide-0.1.61-rhel8_stig_v1r5-PR_8050.patch @@ -1,12 +1,6 @@ -commit b2b8afa337bce598b9b56a243e7ad0be7ee9194e -Author: Gabriel Becker -Date: Fri Feb 25 14:18:51 2022 +0100 - - Manual edited patch scap-security-guide-0.1.61-rhel8_stig_v1r5-PR_8050.patch. - diff --git a/linux_os/guide/system/accounts/accounts-pam/set_password_hashing_algorithm/set_password_hashing_algorithm_passwordauth/bash/shared.sh b/linux_os/guide/system/accounts/accounts-pam/set_password_hashing_algorithm/set_password_hashing_algorithm_passwordauth/bash/shared.sh new file mode 100644 -index 0000000..1c151a1 +index 00000000000..1c151a1ec1a --- /dev/null +++ b/linux_os/guide/system/accounts/accounts-pam/set_password_hashing_algorithm/set_password_hashing_algorithm_passwordauth/bash/shared.sh @@ -0,0 +1,5 @@ @@ -17,7 +11,7 @@ index 0000000..1c151a1 +fi diff --git a/linux_os/guide/system/accounts/accounts-pam/set_password_hashing_algorithm/set_password_hashing_algorithm_passwordauth/oval/shared.xml b/linux_os/guide/system/accounts/accounts-pam/set_password_hashing_algorithm/set_password_hashing_algorithm_passwordauth/oval/shared.xml new file mode 100644 -index 0000000..24fdbe4 +index 00000000000..24fdbe4c1d4 --- /dev/null +++ b/linux_os/guide/system/accounts/accounts-pam/set_password_hashing_algorithm/set_password_hashing_algorithm_passwordauth/oval/shared.xml @@ -0,0 +1,19 @@ @@ -42,7 +36,7 @@ index 0000000..24fdbe4 + diff --git a/linux_os/guide/system/accounts/accounts-pam/set_password_hashing_algorithm/set_password_hashing_algorithm_passwordauth/rule.yml b/linux_os/guide/system/accounts/accounts-pam/set_password_hashing_algorithm/set_password_hashing_algorithm_passwordauth/rule.yml new file mode 100644 -index 0000000..9375269 +index 00000000000..9375269161d --- /dev/null +++ b/linux_os/guide/system/accounts/accounts-pam/set_password_hashing_algorithm/set_password_hashing_algorithm_passwordauth/rule.yml @@ -0,0 +1,72 @@ @@ -120,7 +114,7 @@ index 0000000..9375269 +platform: pam diff --git a/linux_os/guide/system/accounts/accounts-pam/set_password_hashing_algorithm/set_password_hashing_algorithm_passwordauth/tests/correct.pass.sh b/linux_os/guide/system/accounts/accounts-pam/set_password_hashing_algorithm/set_password_hashing_algorithm_passwordauth/tests/correct.pass.sh new file mode 100644 -index 0000000..a924fe5 +index 00000000000..a924fe5bd97 --- /dev/null +++ b/linux_os/guide/system/accounts/accounts-pam/set_password_hashing_algorithm/set_password_hashing_algorithm_passwordauth/tests/correct.pass.sh @@ -0,0 +1,5 @@ @@ -131,7 +125,7 @@ index 0000000..a924fe5 +fi diff --git a/linux_os/guide/system/accounts/accounts-pam/set_password_hashing_algorithm/set_password_hashing_algorithm_passwordauth/tests/missing.fail.sh b/linux_os/guide/system/accounts/accounts-pam/set_password_hashing_algorithm/set_password_hashing_algorithm_passwordauth/tests/missing.fail.sh new file mode 100644 -index 0000000..68e925a +index 00000000000..68e925a645f --- /dev/null +++ b/linux_os/guide/system/accounts/accounts-pam/set_password_hashing_algorithm/set_password_hashing_algorithm_passwordauth/tests/missing.fail.sh @@ -0,0 +1,3 @@ @@ -139,11 +133,12 @@ index 0000000..68e925a + +sed -i --follow-symlinks "/^password.*sufficient.*pam_unix.so/ s/sha512//g" "/etc/pam.d/password-auth" diff --git a/linux_os/guide/system/accounts/accounts-pam/set_password_hashing_algorithm/set_password_hashing_algorithm_systemauth/bash/shared.sh b/linux_os/guide/system/accounts/accounts-pam/set_password_hashing_algorithm/set_password_hashing_algorithm_systemauth/bash/shared.sh -index 02af406..e7503fe 100644 +index 542ea521a6c..e7503feeecb 100644 --- a/linux_os/guide/system/accounts/accounts-pam/set_password_hashing_algorithm/set_password_hashing_algorithm_systemauth/bash/shared.sh +++ b/linux_os/guide/system/accounts/accounts-pam/set_password_hashing_algorithm/set_password_hashing_algorithm_systemauth/bash/shared.sh @@ -1,7 +1,9 @@ - # platform = multi_platform_wrlinux,multi_platform_rhel,multi_platform_fedora,multi_platform_ol,multi_platform_rhv +-# platform = multi_platform_wrlinux,multi_platform_rhel,multi_platform_fedora,multi_platform_ol,multi_platform_rhv,multi_platform_sle ++# platform = multi_platform_wrlinux,multi_platform_rhel,multi_platform_fedora,multi_platform_ol,multi_platform_rhv AUTH_FILES[0]="/etc/pam.d/system-auth" +{{%- if product == "rhel7" %}} @@ -153,7 +148,7 @@ index 02af406..e7503fe 100644 for pamFile in "${AUTH_FILES[@]}" do diff --git a/linux_os/guide/system/accounts/accounts-pam/set_password_hashing_algorithm/set_password_hashing_algorithm_systemauth/oval/shared.xml b/linux_os/guide/system/accounts/accounts-pam/set_password_hashing_algorithm/set_password_hashing_algorithm_systemauth/oval/shared.xml -index d76b6f8..a754a84 100644 +index d76b6f80c0c..a754a84df6c 100644 --- a/linux_os/guide/system/accounts/accounts-pam/set_password_hashing_algorithm/set_password_hashing_algorithm_systemauth/oval/shared.xml +++ b/linux_os/guide/system/accounts/accounts-pam/set_password_hashing_algorithm/set_password_hashing_algorithm_systemauth/oval/shared.xml @@ -3,6 +3,9 @@ @@ -167,12 +162,12 @@ index d76b6f8..a754a84 100644 diff --git a/linux_os/guide/system/accounts/accounts-pam/set_password_hashing_algorithm/set_password_hashing_algorithm_systemauth/rule.yml b/linux_os/guide/system/accounts/accounts-pam/set_password_hashing_algorithm/set_password_hashing_algorithm_systemauth/rule.yml -index 24ab30d..58fcea9 100644 +index 13da9dd4086..59fb48e93b5 100644 --- a/linux_os/guide/system/accounts/accounts-pam/set_password_hashing_algorithm/set_password_hashing_algorithm_systemauth/rule.yml +++ b/linux_os/guide/system/accounts/accounts-pam/set_password_hashing_algorithm/set_password_hashing_algorithm_systemauth/rule.yml -@@ -69,7 +69,7 @@ references: - srg: SRG-OS-000073-GPOS-00041 +@@ -70,7 +70,7 @@ references: stigid@ol7: OL07-00-010200 + stigid@ol8: OL08-00-010160 stigid@rhel7: RHEL-07-010200 - stigid@rhel8: RHEL-08-010160 + stigid@rhel8: RHEL-08-010159 @@ -180,7 +175,7 @@ index 24ab30d..58fcea9 100644 stigid@sle15: SLES-15-020170 vmmsrg: SRG-OS-000480-VMM-002000 diff --git a/linux_os/guide/system/accounts/accounts-pam/set_password_hashing_algorithm/set_password_hashing_algorithm_systemauth/tests/correct.pass.sh b/linux_os/guide/system/accounts/accounts-pam/set_password_hashing_algorithm/set_password_hashing_algorithm_systemauth/tests/correct.pass.sh -index 7e48176..fb9feec 100644 +index 7e481760670..fb9feec4d27 100644 --- a/linux_os/guide/system/accounts/accounts-pam/set_password_hashing_algorithm/set_password_hashing_algorithm_systemauth/tests/correct.pass.sh +++ b/linux_os/guide/system/accounts/accounts-pam/set_password_hashing_algorithm/set_password_hashing_algorithm_systemauth/tests/correct.pass.sh @@ -1,7 +1,9 @@ @@ -194,7 +189,7 @@ index 7e48176..fb9feec 100644 for pamFile in "${AUTH_FILES[@]}" do diff --git a/linux_os/guide/system/accounts/accounts-pam/set_password_hashing_algorithm/set_password_hashing_algorithm_systemauth/tests/missing.fail.sh b/linux_os/guide/system/accounts/accounts-pam/set_password_hashing_algorithm/set_password_hashing_algorithm_systemauth/tests/missing.fail.sh -index 09bb82d..2f35381 100644 +index 09bb82dd1d7..2f35381d475 100644 --- a/linux_os/guide/system/accounts/accounts-pam/set_password_hashing_algorithm/set_password_hashing_algorithm_systemauth/tests/missing.fail.sh +++ b/linux_os/guide/system/accounts/accounts-pam/set_password_hashing_algorithm/set_password_hashing_algorithm_systemauth/tests/missing.fail.sh @@ -1,7 +1,9 @@ @@ -207,8 +202,20 @@ index 09bb82d..2f35381 100644 for pamFile in "${AUTH_FILES[@]}" do +diff --git a/products/rhel8/profiles/pci-dss.profile b/products/rhel8/profiles/pci-dss.profile +index 3ada8e6fe49..4df21f4ae6e 100644 +--- a/products/rhel8/profiles/pci-dss.profile ++++ b/products/rhel8/profiles/pci-dss.profile +@@ -126,6 +126,7 @@ selections: + - service_pcscd_enabled + - sssd_enable_smartcards + - set_password_hashing_algorithm_systemauth ++ - set_password_hashing_algorithm_passwordauth + - set_password_hashing_algorithm_logindefs + - set_password_hashing_algorithm_libuserconf + - file_owner_etc_shadow diff --git a/products/rhel8/profiles/rht-ccp.profile b/products/rhel8/profiles/rht-ccp.profile -index d76bb38..1045be3 100644 +index 15abd98a6a5..7188062df72 100644 --- a/products/rhel8/profiles/rht-ccp.profile +++ b/products/rhel8/profiles/rht-ccp.profile @@ -54,6 +54,7 @@ selections: @@ -220,10 +227,36 @@ index d76bb38..1045be3 100644 - set_password_hashing_algorithm_libuserconf - require_singleuser_auth diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index d51e53a..705caa8 100644 +index 04f158116ee..8d69bb48d38 100644 --- a/products/rhel8/profiles/stig.profile +++ b/products/rhel8/profiles/stig.profile -@@ -147,6 +147,9 @@ selections: +@@ -149,6 +149,9 @@ selections: + # RHEL-08-010152 + - require_emergency_target_auth + ++ # RHEL-08-010159 ++ - set_password_hashing_algorithm_passwordauth ++ + # RHEL-08-010160 + - set_password_hashing_algorithm_systemauth + +diff --git a/products/rhel9/profiles/pci-dss.profile b/products/rhel9/profiles/pci-dss.profile +index beb1acda31d..1e4044f4e7e 100644 +--- a/products/rhel9/profiles/pci-dss.profile ++++ b/products/rhel9/profiles/pci-dss.profile +@@ -123,6 +123,7 @@ selections: + - service_pcscd_enabled + - sssd_enable_smartcards + - set_password_hashing_algorithm_systemauth ++ - set_password_hashing_algorithm_passwordauth + - set_password_hashing_algorithm_logindefs + - set_password_hashing_algorithm_libuserconf + - file_owner_etc_shadow +diff --git a/products/rhel9/profiles/stig.profile b/products/rhel9/profiles/stig.profile +index 8f79b22e3e4..b9f557de030 100644 +--- a/products/rhel9/profiles/stig.profile ++++ b/products/rhel9/profiles/stig.profile +@@ -150,6 +150,9 @@ selections: # RHEL-08-010152 - require_emergency_target_auth @@ -234,10 +267,10 @@ index d51e53a..705caa8 100644 - set_password_hashing_algorithm_systemauth diff --git a/products/rhv4/profiles/pci-dss.profile b/products/rhv4/profiles/pci-dss.profile -index 90e196e..f1fb1f8 100644 +index c4ed0ec2d48..d00f44996d8 100644 --- a/products/rhv4/profiles/pci-dss.profile +++ b/products/rhv4/profiles/pci-dss.profile -@@ -115,6 +115,7 @@ selections: +@@ -121,6 +121,7 @@ selections: - service_pcscd_enabled - sssd_enable_smartcards - set_password_hashing_algorithm_systemauth @@ -246,10 +279,10 @@ index 90e196e..f1fb1f8 100644 - set_password_hashing_algorithm_libuserconf - file_owner_etc_shadow diff --git a/products/rhv4/profiles/rhvh-stig.profile b/products/rhv4/profiles/rhvh-stig.profile -index ef28fa1..d17833b 100644 +index 01c2fd8cc2d..9cf416665ab 100644 --- a/products/rhv4/profiles/rhvh-stig.profile +++ b/products/rhv4/profiles/rhvh-stig.profile -@@ -355,6 +355,7 @@ selections: +@@ -356,6 +356,7 @@ selections: - set_password_hashing_algorithm_libuserconf - set_password_hashing_algorithm_logindefs - set_password_hashing_algorithm_systemauth @@ -258,10 +291,10 @@ index ef28fa1..d17833b 100644 - var_smartcard_drivers=cac - configure_opensc_card_drivers diff --git a/products/rhv4/profiles/rhvh-vpp.profile b/products/rhv4/profiles/rhvh-vpp.profile -index 9be3e34..3b5802d 100644 +index c2b6c106937..e66fe435508 100644 --- a/products/rhv4/profiles/rhvh-vpp.profile +++ b/products/rhv4/profiles/rhvh-vpp.profile -@@ -200,6 +200,7 @@ selections: +@@ -201,6 +201,7 @@ selections: - accounts_password_pam_unix_remember - set_password_hashing_algorithm_logindefs - set_password_hashing_algorithm_systemauth @@ -270,10 +303,10 @@ index 9be3e34..3b5802d 100644 - no_empty_passwords diff --git a/shared/references/cce-redhat-avail.txt b/shared/references/cce-redhat-avail.txt -index fef5fd8..d8daeb3 100644 +index 3f6ec5e17c4..4aa925037b1 100644 --- a/shared/references/cce-redhat-avail.txt +++ b/shared/references/cce-redhat-avail.txt -@@ -69,9 +69,6 @@ CCE-85939-7 +@@ -53,9 +53,6 @@ CCE-85939-7 CCE-85940-5 CCE-85941-3 CCE-85942-1 @@ -284,7 +317,7 @@ index fef5fd8..d8daeb3 100644 CCE-85948-8 CCE-85949-6 diff --git a/tests/data/profile_stability/rhel8/pci-dss.profile b/tests/data/profile_stability/rhel8/pci-dss.profile -index f58bcf9..e235d49 100644 +index f58bcf91cf2..e235d492438 100644 --- a/tests/data/profile_stability/rhel8/pci-dss.profile +++ b/tests/data/profile_stability/rhel8/pci-dss.profile @@ -1,5 +1,9 @@ @@ -298,6 +331,14 @@ index f58bcf9..e235d49 100644 reference: https://www.pcisecuritystandards.org/documents/PCI_DSS_v3-2-1.pdf selections: - account_disable_post_pw_expiration +@@ -120,6 +124,7 @@ selections: + - service_pcscd_enabled + - set_password_hashing_algorithm_libuserconf + - set_password_hashing_algorithm_logindefs ++- set_password_hashing_algorithm_passwordauth + - set_password_hashing_algorithm_systemauth + - sshd_set_idle_timeout + - sshd_set_keepalive_0 @@ -136,4 +141,8 @@ selections: - var_multiple_time_servers=rhel - var_sshd_set_keepalive=0 @@ -309,10 +350,10 @@ index f58bcf9..e235d49 100644 +filter_rules: '' +documentation_complete: true diff --git a/tests/data/profile_stability/rhel8/stig.profile b/tests/data/profile_stability/rhel8/stig.profile -index 3b4b43a..1b4b955 100644 +index ed739e724f4..c5fcbf47de2 100644 --- a/tests/data/profile_stability/rhel8/stig.profile +++ b/tests/data/profile_stability/rhel8/stig.profile -@@ -332,6 +332,7 @@ selections: +@@ -336,6 +337,7 @@ selections: - service_systemd-coredump_disabled - service_usbguard_enabled - set_password_hashing_algorithm_logindefs @@ -321,10 +362,10 @@ index 3b4b43a..1b4b955 100644 - sshd_disable_compression - sshd_disable_empty_passwords diff --git a/tests/data/profile_stability/rhel8/stig_gui.profile b/tests/data/profile_stability/rhel8/stig_gui.profile -index 2e0e161..3568e07 100644 +index 56c3fcb9f59..49ec4ae41ac 100644 --- a/tests/data/profile_stability/rhel8/stig_gui.profile +++ b/tests/data/profile_stability/rhel8/stig_gui.profile -@@ -343,6 +343,7 @@ selections: +@@ -347,6 +348,7 @@ selections: - service_systemd-coredump_disabled - service_usbguard_enabled - set_password_hashing_algorithm_logindefs diff --git a/SOURCES/scap-security-guide-0.1.61-rhel9_ospp_remove_kernel_rules-PR_8092.patch b/SOURCES/scap-security-guide-0.1.61-rhel9_ospp_remove_kernel_rules-PR_8092.patch new file mode 100644 index 0000000..a90c8d5 --- /dev/null +++ b/SOURCES/scap-security-guide-0.1.61-rhel9_ospp_remove_kernel_rules-PR_8092.patch @@ -0,0 +1,397 @@ +From 742e103392746dac771663247d169cfe498ee658 Mon Sep 17 00:00:00 2001 +From: Vojtech Polasek +Date: Fri, 21 Jan 2022 14:02:16 +0100 +Subject: [PATCH 1/7] modify vsyscall rules according to rhel9 ospp + +add references +make rules scored in th e profile +--- + .../system/bootloader-grub2/grub2_vsyscall_argument/rule.yml | 1 + + .../system/bootloader-zipl/zipl_vsyscall_argument/rule.yml | 3 +++ + products/rhel9/profiles/ospp.profile | 4 ---- + 3 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/linux_os/guide/system/bootloader-grub2/grub2_vsyscall_argument/rule.yml b/linux_os/guide/system/bootloader-grub2/grub2_vsyscall_argument/rule.yml +index 1dd26fea9b6..9f38a1c13b9 100644 +--- a/linux_os/guide/system/bootloader-grub2/grub2_vsyscall_argument/rule.yml ++++ b/linux_os/guide/system/bootloader-grub2/grub2_vsyscall_argument/rule.yml +@@ -25,6 +25,7 @@ identifiers: + references: + disa: CCI-001084 + nist: CM-7(a) ++ ospp: FPT_ASLR_EXT.1 + srg: SRG-OS-000480-GPOS-00227,SRG-OS-000134-GPOS-00068 + stigid@ol8: OL08-00-010422 + stigid@rhel8: RHEL-08-010422 +diff --git a/linux_os/guide/system/bootloader-zipl/zipl_vsyscall_argument/rule.yml b/linux_os/guide/system/bootloader-zipl/zipl_vsyscall_argument/rule.yml +index 52b192ffc52..9d645c8876e 100644 +--- a/linux_os/guide/system/bootloader-zipl/zipl_vsyscall_argument/rule.yml ++++ b/linux_os/guide/system/bootloader-zipl/zipl_vsyscall_argument/rule.yml +@@ -21,6 +21,9 @@ identifiers: + cce@rhel8: CCE-83381-4 + cce@rhel9: CCE-84100-7 + ++references: ++ ospp: FPT_ASLR_EXT.1 ++ + ocil_clause: 'vsyscalls are enabled' + + ocil: |- +diff --git a/products/rhel9/profiles/ospp.profile b/products/rhel9/profiles/ospp.profile +index 287a28c43c5..f0b850a4ced 100644 +--- a/products/rhel9/profiles/ospp.profile ++++ b/products/rhel9/profiles/ospp.profile +@@ -128,8 +128,6 @@ selections: + - grub2_slub_debug_argument + - grub2_page_poison_argument + - grub2_vsyscall_argument +- - grub2_vsyscall_argument.role=unscored +- - grub2_vsyscall_argument.severity=info + - grub2_pti_argument + - grub2_kernel_trust_cpu_rng + +@@ -421,5 +419,3 @@ selections: + - zipl_slub_debug_argument + - zipl_page_poison_argument + - zipl_vsyscall_argument +- - zipl_vsyscall_argument.role=unscored +- - zipl_vsyscall_argument.severity=info + +From d167658d46accbc75200a5d145a746322f1c2d4a Mon Sep 17 00:00:00 2001 +From: Vojtech Polasek +Date: Fri, 21 Jan 2022 14:05:24 +0100 +Subject: [PATCH 2/7] add ospp references to fips rules + +--- + .../software/integrity/fips/enable_dracut_fips_module/rule.yml | 1 + + .../system/software/integrity/fips/enable_fips_mode/rule.yml | 2 +- + 2 files changed, 2 insertions(+), 1 deletion(-) + +diff --git a/linux_os/guide/system/software/integrity/fips/enable_dracut_fips_module/rule.yml b/linux_os/guide/system/software/integrity/fips/enable_dracut_fips_module/rule.yml +index f342b9b8d95..3b7c3229b6f 100644 +--- a/linux_os/guide/system/software/integrity/fips/enable_dracut_fips_module/rule.yml ++++ b/linux_os/guide/system/software/integrity/fips/enable_dracut_fips_module/rule.yml +@@ -29,6 +29,7 @@ references: + ism: "1446" + nerc-cip: CIP-003-8 R4.2,CIP-007-3 R5.1 + nist: SC-12(2),SC-12(3),IA-7,SC-13,CM-6(a),SC-12 ++ ospp: FCS_RBG_EXT.1 + srg: SRG-OS-000478-GPOS-00223 + stigid@ol8: OL08-00-010020 + stigid@rhel8: RHEL-08-010020 +diff --git a/linux_os/guide/system/software/integrity/fips/enable_fips_mode/rule.yml b/linux_os/guide/system/software/integrity/fips/enable_fips_mode/rule.yml +index 7559e61600d..9d89114b07f 100644 +--- a/linux_os/guide/system/software/integrity/fips/enable_fips_mode/rule.yml ++++ b/linux_os/guide/system/software/integrity/fips/enable_fips_mode/rule.yml +@@ -39,7 +39,7 @@ references: + ism: "1446" + nerc-cip: CIP-003-8 R4.2,CIP-007-3 R5.1 + nist: SC-12(2),SC-12(3),IA-7,SC-13,CM-6(a),SC-12 +- ospp: FCS_COP.1(1),FCS_COP.1(2),FCS_COP.1(3),FCS_COP.1(4),FCS_CKM.1,FCS_CKM.2,FCS_TLSC_EXT.1 ++ ospp: FCS_COP.1(1),FCS_COP.1(2),FCS_COP.1(3),FCS_COP.1(4),FCS_CKM.1,FCS_CKM.2,FCS_TLSC_EXT.1,FCS_RBG_EXT.1 + srg: SRG-OS-000478-GPOS-00223,SRG-OS-000396-GPOS-00176 + stigid@ol8: OL08-00-010020 + stigid@rhel8: RHEL-08-010020 + +From f05e895bb96b64a5142e62e3dd0f7208633d5c23 Mon Sep 17 00:00:00 2001 +From: Vojtech Polasek +Date: Fri, 21 Jan 2022 14:08:36 +0100 +Subject: [PATCH 3/7] drop no longer needed rules from ospp rhel9 profile + +--- + products/rhel9/profiles/ospp.profile | 6 ------ + 1 file changed, 6 deletions(-) + +diff --git a/products/rhel9/profiles/ospp.profile b/products/rhel9/profiles/ospp.profile +index f0b850a4ced..7e30054bc98 100644 +--- a/products/rhel9/profiles/ospp.profile ++++ b/products/rhel9/profiles/ospp.profile +@@ -125,11 +125,7 @@ selections: + ## Boot prompt + - grub2_audit_argument + - grub2_audit_backlog_limit_argument +- - grub2_slub_debug_argument +- - grub2_page_poison_argument + - grub2_vsyscall_argument +- - grub2_pti_argument +- - grub2_kernel_trust_cpu_rng + + ## Security Settings + - sysctl_kernel_kptr_restrict +@@ -416,6 +412,4 @@ selections: + - zipl_bootmap_is_up_to_date + - zipl_audit_argument + - zipl_audit_backlog_limit_argument +- - zipl_slub_debug_argument +- - zipl_page_poison_argument + - zipl_vsyscall_argument + +From 972ae269eff95de8a6914056d38e58b7aeafb8c3 Mon Sep 17 00:00:00 2001 +From: Vojtech Polasek +Date: Fri, 21 Jan 2022 15:12:46 +0100 +Subject: [PATCH 4/7] add grub2_init_on_alloc rule + +--- + .../grub2_init_on_alloc_argument/rule.yml | 46 +++++++++++++++++++ + shared/references/cce-redhat-avail.txt | 1 - + 2 files changed, 46 insertions(+), 1 deletion(-) + create mode 100644 linux_os/guide/system/bootloader-grub2/grub2_init_on_alloc_argument/rule.yml + +diff --git a/linux_os/guide/system/bootloader-grub2/grub2_init_on_alloc_argument/rule.yml b/linux_os/guide/system/bootloader-grub2/grub2_init_on_alloc_argument/rule.yml +new file mode 100644 +index 00000000000..592e2fb117d +--- /dev/null ++++ b/linux_os/guide/system/bootloader-grub2/grub2_init_on_alloc_argument/rule.yml +@@ -0,0 +1,46 @@ ++documentation_complete: true ++ ++prodtype: rhel9 ++ ++title: 'Configure kernel to zero out memory before allocation (through Grub2)' ++ ++description: |- ++ To configure the kernel to zero out memory before allocating it, add the ++ init_on_alloc=1 argument to the default GRUB 2 command line for ++ the Linux operating system in /etc/default/grub, in the manner ++ below: ++
      GRUB_CMDLINE_LINUX="crashkernel=auto quiet rd.shell=0 audit=1 audit_backlog_limit=8192 init_on_alloc=1"
      ++ Update the boot parameter for existing kernels by running the following command: ++
      # grubby --update-kernel=ALL --args="init_on_alloc=1"
      ++ ++rationale: |- ++ When the kernel configuration option init_on_alloc is enabled, ++ all page allocator and slab allocator memory will be zeroed when allocated, ++ eliminating many kinds of "uninitialized heap memory" flaws, effectively ++ preventing data leaks. ++ ++severity: medium ++ ++identifiers: ++ cce@rhel9: CCE-85867-0 ++ ++ocil_clause: 'the kernel is not configured to zero out memory before allocation' ++ ++ocil: |- ++ Make sure that the kernel is configured to zero out memory before ++ allocation. Ensure that the parameter is configured in ++ /etc/default/grub: ++
      grep GRUB_CMDLINE_LINUX /etc/default/grub
      ++ The output should contain init_on_alloc=1. ++ Run the following command to display command line parameters of all ++ installed kernels: ++
      # grubby --info=ALL | grep args
      ++ Ensure that each line contains the init_on_alloc=1 parameter. ++ ++platform: machine ++ ++template: ++ name: grub2_bootloader_argument ++ vars: ++ arg_name: init_on_alloc ++ arg_value: '1' +diff --git a/shared/references/cce-redhat-avail.txt b/shared/references/cce-redhat-avail.txt +index 8aad24b20f7..6835189cd99 100644 +--- a/shared/references/cce-redhat-avail.txt ++++ b/shared/references/cce-redhat-avail.txt +@@ -1,4 +1,3 @@ +-CCE-85867-0 + CCE-85868-8 + CCE-85872-0 + CCE-85873-8 + +From a865514257c85d79aaf7e4286d8723aa1ad8de03 Mon Sep 17 00:00:00 2001 +From: Vojtech Polasek +Date: Mon, 24 Jan 2022 10:01:23 +0100 +Subject: [PATCH 5/7] add zipl_init_on_alloc_argument rule + +--- + .../zipl_init_on_alloc_argument/rule.yml | 41 +++++++++++++++++++ + .../tests/correct_option.pass.sh | 15 +++++++ + .../tests/missing_in_cmdline.fail.sh | 13 ++++++ + .../tests/missing_in_entry.fail.sh | 13 ++++++ + shared/references/cce-redhat-avail.txt | 1 - + 5 files changed, 82 insertions(+), 1 deletion(-) + create mode 100644 linux_os/guide/system/bootloader-zipl/zipl_init_on_alloc_argument/rule.yml + create mode 100644 linux_os/guide/system/bootloader-zipl/zipl_init_on_alloc_argument/tests/correct_option.pass.sh + create mode 100644 linux_os/guide/system/bootloader-zipl/zipl_init_on_alloc_argument/tests/missing_in_cmdline.fail.sh + create mode 100644 linux_os/guide/system/bootloader-zipl/zipl_init_on_alloc_argument/tests/missing_in_entry.fail.sh + +diff --git a/linux_os/guide/system/bootloader-zipl/zipl_init_on_alloc_argument/rule.yml b/linux_os/guide/system/bootloader-zipl/zipl_init_on_alloc_argument/rule.yml +new file mode 100644 +index 00000000000..b47a7757327 +--- /dev/null ++++ b/linux_os/guide/system/bootloader-zipl/zipl_init_on_alloc_argument/rule.yml +@@ -0,0 +1,41 @@ ++documentation_complete: true ++ ++prodtype: rhel9 ++ ++title: 'Configure kernel to zero out memory before allocation (through zIPl)' ++ ++description: |- ++ To ensure that the kernel is configured to zero out memory before ++ allocation, check that all boot entries in ++ /boot/loader/entries/*.conf have init_on_alloc=1 ++ included in its options.
      ++ ++ To ensure that new kernels and boot entries continue to zero out memory ++ before allocation, add init_on_alloc=1 to /etc/kernel/cmdline. ++ ++rationale: |- ++ When the kernel configuration option init_on_alloc is enabled, ++ all page allocator and slab allocator memory will be zeroed when allocated, ++ eliminating many kinds of "uninitialized heap memory" flaws, effectively ++ preventing data leaks. ++ ++severity: medium ++ ++identifiers: ++ cce@rhel9: CCE-85868-8 ++ ++ocil_clause: 'the kernel is not configured to zero out memory before allocation' ++ ++ocil: |- ++ To check that the kernel is configured to zero out memory before allocation ++ time, check all boot entries with following command: ++
      sudo grep -L"^options\s+.*\binit_on_alloc=1\b" /boot/loader/entries/*.conf
      ++ No line should be returned, each line returned is a boot entry that doesn't enable audit. ++ ++platform: machine ++ ++template: ++ name: zipl_bls_entries_option ++ vars: ++ arg_name: init_on_alloc ++ arg_value: '1' +diff --git a/linux_os/guide/system/bootloader-zipl/zipl_init_on_alloc_argument/tests/correct_option.pass.sh b/linux_os/guide/system/bootloader-zipl/zipl_init_on_alloc_argument/tests/correct_option.pass.sh +new file mode 100644 +index 00000000000..50cf1b78f70 +--- /dev/null ++++ b/linux_os/guide/system/bootloader-zipl/zipl_init_on_alloc_argument/tests/correct_option.pass.sh +@@ -0,0 +1,15 @@ ++#!/bin/bash ++# platform = multi_platform_fedora,Red Hat Enterprise Linux 8, Red Hat Enterprise Linux 9 ++ ++# Make sure boot loader entries contain init_on_alloc=1 ++for file in /boot/loader/entries/*.conf ++do ++ if ! grep -q '^options.*init_on_alloc=1.*$' "$file" ; then ++ sed -i '/^options / s/$/ init_on_alloc=1/' "$file" ++ fi ++done ++ ++# Make sure /etc/kernel/cmdline contains init_on_alloc=1 ++if ! grep -qs '^(.*\s)?init_on_alloc=1(\s.*)?$' /etc/kernel/cmdline ; then ++ echo "init_on_alloc=1" >> /etc/kernel/cmdline ++fi +diff --git a/linux_os/guide/system/bootloader-zipl/zipl_init_on_alloc_argument/tests/missing_in_cmdline.fail.sh b/linux_os/guide/system/bootloader-zipl/zipl_init_on_alloc_argument/tests/missing_in_cmdline.fail.sh +new file mode 100644 +index 00000000000..7c0d9154776 +--- /dev/null ++++ b/linux_os/guide/system/bootloader-zipl/zipl_init_on_alloc_argument/tests/missing_in_cmdline.fail.sh +@@ -0,0 +1,13 @@ ++#!/bin/bash ++# platform = multi_platform_fedora,Red Hat Enterprise Linux 8, Red Hat Enterprise Linux 9 ++ ++# Make sure boot loader entries contain init_on_alloc=1 ++for file in /boot/loader/entries/*.conf ++do ++ if ! grep -q '^options.*init_on_alloc=1.*$' "$file" ; then ++ sed -i '/^options / s/$/ init_on_alloc=1/' "$file" ++ fi ++done ++ ++# Make sure /etc/kernel/cmdline doesn't contain init_on_alloc=1 ++sed -Ei 's/(^.*)init_on_alloc=1(.*?)$/\1\2/' /etc/kernel/cmdline || true +diff --git a/linux_os/guide/system/bootloader-zipl/zipl_init_on_alloc_argument/tests/missing_in_entry.fail.sh b/linux_os/guide/system/bootloader-zipl/zipl_init_on_alloc_argument/tests/missing_in_entry.fail.sh +new file mode 100644 +index 00000000000..9d330c9192d +--- /dev/null ++++ b/linux_os/guide/system/bootloader-zipl/zipl_init_on_alloc_argument/tests/missing_in_entry.fail.sh +@@ -0,0 +1,13 @@ ++#!/bin/bash ++# platform = multi_platform_fedora,Red Hat Enterprise Linux 8, Red Hat Enterprise Linux 9 ++ ++# Remove init_on_alloc=1 from all boot entries ++sed -Ei 's/(^options.*\s)init_on_alloc=1(.*?)$/\1\2/' /boot/loader/entries/* ++# But make sure one boot loader entry contains init_on_alloc=1 ++sed -i '/^options / s/$/ init_on_alloc=1/' /boot/loader/entries/*rescue.conf ++sed -Ei 's/(^options.*\s)\$kernelopts(.*?)$/\1\2/' /boot/loader/entries/*rescue.conf ++ ++# Make sure /etc/kernel/cmdline contains init_on_alloc=1 ++if ! grep -qs '^(.*\s)?init_on_alloc=1(\s.*)?$' /etc/kernel/cmdline ; then ++ echo "init_on_alloc=1" >> /etc/kernel/cmdline ++fi +diff --git a/shared/references/cce-redhat-avail.txt b/shared/references/cce-redhat-avail.txt +index 6835189cd99..05a641aeaf0 100644 +--- a/shared/references/cce-redhat-avail.txt ++++ b/shared/references/cce-redhat-avail.txt +@@ -1,4 +1,3 @@ +-CCE-85868-8 + CCE-85872-0 + CCE-85873-8 + CCE-85874-6 + +From 9ca5ec04e734941b1c401369b6da6672b42824b1 Mon Sep 17 00:00:00 2001 +From: Vojtech Polasek +Date: Mon, 24 Jan 2022 10:07:24 +0100 +Subject: [PATCH 6/7] add new rules to rhel9 ospp + +--- + products/rhel9/profiles/ospp.profile | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/products/rhel9/profiles/ospp.profile b/products/rhel9/profiles/ospp.profile +index 7e30054bc98..28c7e92d298 100644 +--- a/products/rhel9/profiles/ospp.profile ++++ b/products/rhel9/profiles/ospp.profile +@@ -126,6 +126,7 @@ selections: + - grub2_audit_argument + - grub2_audit_backlog_limit_argument + - grub2_vsyscall_argument ++ - grub2_init_on_alloc_argument + + ## Security Settings + - sysctl_kernel_kptr_restrict +@@ -413,3 +414,4 @@ selections: + - zipl_audit_argument + - zipl_audit_backlog_limit_argument + - zipl_vsyscall_argument ++ - zipl_init_on_alloc_argument + +From 42a118bcc615051ae4cd268a5fc758aa5d75108d Mon Sep 17 00:00:00 2001 +From: Vojtech Polasek +Date: Thu, 27 Jan 2022 14:08:20 +0100 +Subject: [PATCH 7/7] make rule names consistent + +--- + .../bootloader-grub2/grub2_init_on_alloc_argument/rule.yml | 2 +- + .../system/bootloader-zipl/zipl_init_on_alloc_argument/rule.yml | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/linux_os/guide/system/bootloader-grub2/grub2_init_on_alloc_argument/rule.yml b/linux_os/guide/system/bootloader-grub2/grub2_init_on_alloc_argument/rule.yml +index 592e2fb117d..a9253c74cc6 100644 +--- a/linux_os/guide/system/bootloader-grub2/grub2_init_on_alloc_argument/rule.yml ++++ b/linux_os/guide/system/bootloader-grub2/grub2_init_on_alloc_argument/rule.yml +@@ -2,7 +2,7 @@ documentation_complete: true + + prodtype: rhel9 + +-title: 'Configure kernel to zero out memory before allocation (through Grub2)' ++title: 'Configure kernel to zero out memory before allocation' + + description: |- + To configure the kernel to zero out memory before allocating it, add the +diff --git a/linux_os/guide/system/bootloader-zipl/zipl_init_on_alloc_argument/rule.yml b/linux_os/guide/system/bootloader-zipl/zipl_init_on_alloc_argument/rule.yml +index b47a7757327..fa272250a28 100644 +--- a/linux_os/guide/system/bootloader-zipl/zipl_init_on_alloc_argument/rule.yml ++++ b/linux_os/guide/system/bootloader-zipl/zipl_init_on_alloc_argument/rule.yml +@@ -2,7 +2,7 @@ documentation_complete: true + + prodtype: rhel9 + +-title: 'Configure kernel to zero out memory before allocation (through zIPl)' ++title: 'Configure kernel to zero out memory before allocation in zIPL' + + description: |- + To ensure that the kernel is configured to zero out memory before diff --git a/SOURCES/scap-security-guide-0.1.61-selinux_state_rhel8_anssi_enhanced-PR_8182.patch b/SOURCES/scap-security-guide-0.1.61-selinux_state_rhel8_anssi_enhanced-PR_8182.patch new file mode 100644 index 0000000..e1c22ac --- /dev/null +++ b/SOURCES/scap-security-guide-0.1.61-selinux_state_rhel8_anssi_enhanced-PR_8182.patch @@ -0,0 +1,155 @@ +diff --git a/controls/anssi.yml b/controls/anssi.yml +index ff3736711dd..5c3d5f34ea8 100644 +--- a/controls/anssi.yml ++++ b/controls/anssi.yml +@@ -72,6 +72,7 @@ controls: + SELinux policies limit the privileges of services and daemons to only what they require. + rules: + - selinux_state ++ - var_selinux_state=enforcing + + - id: R4 + levels: +diff --git a/products/rhel8/profiles/anssi_bp28_enhanced.profile b/products/rhel8/profiles/anssi_bp28_enhanced.profile +index 2a49527c10a..8f2ee31493b 100644 +--- a/products/rhel8/profiles/anssi_bp28_enhanced.profile ++++ b/products/rhel8/profiles/anssi_bp28_enhanced.profile +@@ -17,4 +17,3 @@ description: |- + + selections: + - anssi:all:enhanced +- - '!selinux_state' +diff --git a/products/rhel9/profiles/anssi_bp28_enhanced.profile b/products/rhel9/profiles/anssi_bp28_enhanced.profile +index 89e0d260390..da048c9b556 100644 +--- a/products/rhel9/profiles/anssi_bp28_enhanced.profile ++++ b/products/rhel9/profiles/anssi_bp28_enhanced.profile +@@ -17,4 +17,3 @@ description: |- + + selections: + - anssi:all:enhanced +- - '!selinux_state' +diff --git a/tests/unit/ssg-module/data/controls_dir/abcd-levels.yml b/tests/unit/ssg-module/data/controls_dir/abcd-levels.yml +index 2e60ec43532..b201c495b8d 100644 +--- a/tests/unit/ssg-module/data/controls_dir/abcd-levels.yml ++++ b/tests/unit/ssg-module/data/controls_dir/abcd-levels.yml +@@ -42,3 +42,29 @@ controls: + rules: + - var_password_pam_minlen=2 + - var_some_variable=3 ++ ++ # S5, S6 and S7 are used to test if level inheritance is working corectly ++ # when multiple levels select the same rule ++ - id: S5 ++ title: Default Crypto Policy ++ levels: ++ - low ++ rules: ++ - configure_crypto_policy ++ - var_system_crypto_policy=default_policy ++ ++ - id: S6 ++ title: FIPS Crypto Policy ++ levels: ++ - medium ++ rules: ++ - configure_crypto_policy ++ - var_system_crypto_policy=fips ++ ++ - id: S7 ++ title: Future Crypto Policy ++ levels: ++ - high ++ rules: ++ - configure_crypto_policy ++ - var_system_crypto_policy=future +diff --git a/tests/unit/ssg-module/test_controls.py b/tests/unit/ssg-module/test_controls.py +index d3d6280042a..fb569280736 100644 +--- a/tests/unit/ssg-module/test_controls.py ++++ b/tests/unit/ssg-module/test_controls.py +@@ -92,6 +92,20 @@ def test_controls_levels(): + c_4b = controls_manager.get_control("abcd-levels", "S4.b") + assert c_4b.levels == ["high"] + ++ c_5 = controls_manager.get_control("abcd-levels", "S5") ++ assert c_5.levels == ["low"] ++ ++ c_6 = controls_manager.get_control("abcd-levels", "S6") ++ assert c_6.levels == ["medium"] ++ ++ c_7 = controls_manager.get_control("abcd-levels", "S7") ++ assert c_7.levels == ["high"] ++ ++ # test if all crypto-policy controls have the rule selected ++ assert "configure_crypto_policy" in c_5.selections ++ assert "configure_crypto_policy" in c_6.selections ++ assert "configure_crypto_policy" in c_7.selections ++ + # just the essential controls + low_controls = controls_manager.get_all_controls_of_level( + "abcd-levels", "low") +@@ -104,25 +118,34 @@ def test_controls_levels(): + + assert len(high_controls) == len(all_controls) + assert len(low_controls) <= len(high_controls) +- assert len(low_controls) == 4 +- assert len(medium_controls) == 5 ++ assert len(low_controls) == 5 ++ assert len(medium_controls) == 7 + + # test overriding of variables in levels + assert c_2.variables["var_password_pam_minlen"] == "1" + assert "var_password_pam_minlen" not in c_3.variables.keys() + assert c_4b.variables["var_password_pam_minlen"] == "2" + ++ variable_found = False + for c in low_controls: + if "var_password_pam_minlen" in c.variables.keys(): ++ variable_found = True + assert c.variables["var_password_pam_minlen"] == "1" ++ assert variable_found + ++ variable_found = False + for c in medium_controls: + if "var_password_pam_minlen" in c.variables.keys(): ++ variable_found = True + assert c.variables["var_password_pam_minlen"] == "1" ++ assert variable_found + ++ variable_found = False + for c in high_controls: + if "var_password_pam_minlen" in c.variables.keys(): ++ variable_found = True + assert c.variables["var_password_pam_minlen"] == "2" ++ assert variable_found + + # now test if controls of lower level has the variable definition correctly removed + # because it is overriden by higher level controls +@@ -141,6 +164,28 @@ def test_controls_levels(): + assert s2_low[0].variables["var_some_variable"] == "1" + assert s2_low[0].variables["var_password_pam_minlen"] == "1" + ++ # check that low, medium and high levels have crypto policy selected ++ s5_low = [c for c in low_controls if c.id == "S5"] ++ assert len(s5_low) == 1 ++ assert "configure_crypto_policy" in s5_low[0].selections ++ ++ s5_medium = [c for c in medium_controls if c.id == "S5"] ++ assert len(s5_medium) == 1 ++ assert "configure_crypto_policy" in s5_medium[0].selections ++ s6_medium = [c for c in medium_controls if c.id == "S6"] ++ assert len(s6_medium) == 1 ++ assert "configure_crypto_policy" in s6_medium[0].selections ++ ++ s5_high = [c for c in high_controls if c.id == "S5"] ++ assert len(s5_high) == 1 ++ assert "configure_crypto_policy" in s5_high[0].selections ++ s6_high = [c for c in high_controls if c.id == "S6"] ++ assert len(s6_high) == 1 ++ assert "configure_crypto_policy" in s6_high[0].selections ++ s7_high = [c for c in high_controls if c.id == "S7"] ++ assert len(s7_high) == 1 ++ assert "configure_crypto_policy" in s7_high[0].selections ++ + + def test_controls_load_product(): + product_yaml = os.path.join(ssg_root, "products", "rhel8", "product.yml") diff --git a/SOURCES/scap-security-guide-0.1.61-sudoers_timestamp_timeout-PR_8220.patch b/SOURCES/scap-security-guide-0.1.61-sudoers_timestamp_timeout-PR_8220.patch new file mode 100644 index 0000000..c64e503 --- /dev/null +++ b/SOURCES/scap-security-guide-0.1.61-sudoers_timestamp_timeout-PR_8220.patch @@ -0,0 +1,163 @@ +From 573ae69742cf372d41da6c56a3051745326055cd Mon Sep 17 00:00:00 2001 +From: Gabriel Becker +Date: Mon, 14 Feb 2022 15:54:37 +0100 +Subject: [PATCH] Update RHEL-08-010385 to allow only one occurrence of config. + +This configuration must appear at only one place so it doesn't get +overriden by a different file that can loaded on a different order and +the intended configuration is replaced by non-compliant value. +--- + .../ansible/shared.yml | 36 ++++++++++++++++++ + .../bash/shared.sh | 38 +++++++++++++++++++ + .../oval/shared.xml | 4 +- + .../sudo_require_reauthentication/rule.yml | 14 +------ + .../tests/multiple_correct_value.fail.sh | 10 +++++ + 5 files changed, 87 insertions(+), 15 deletions(-) + create mode 100644 linux_os/guide/system/software/sudo/sudo_require_reauthentication/ansible/shared.yml + create mode 100644 linux_os/guide/system/software/sudo/sudo_require_reauthentication/bash/shared.sh + create mode 100644 linux_os/guide/system/software/sudo/sudo_require_reauthentication/tests/multiple_correct_value.fail.sh + +diff --git a/linux_os/guide/system/software/sudo/sudo_require_reauthentication/ansible/shared.yml b/linux_os/guide/system/software/sudo/sudo_require_reauthentication/ansible/shared.yml +new file mode 100644 +index 00000000000..b0c67a69af9 +--- /dev/null ++++ b/linux_os/guide/system/software/sudo/sudo_require_reauthentication/ansible/shared.yml +@@ -0,0 +1,36 @@ ++# platform = multi_platform_all ++# reboot = false ++# strategy = restrict ++# complexity = low ++# disruption = low ++ ++{{{ ansible_instantiate_variables("var_sudo_timestamp_timeout") }}} ++- name: "Find out if /etc/sudoers.d/* files contain 'Defaults timestamp_timeout' to be deduplicated" ++ find: ++ path: "/etc/sudoers.d" ++ patterns: "*" ++ contains: '^[\s]*Defaults\s.*\btimestamp_timeout=.*' ++ register: sudoers_d_defaults_timestamp_timeout ++ ++- name: "Remove found occurrences of 'Defaults timestamp_timeout' from /etc/sudoers.d/* files" ++ lineinfile: ++ path: "{{ item.path }}" ++ regexp: '^[\s]*Defaults\s.*\btimestamp_timeout=.*' ++ state: absent ++ with_items: "{{ sudoers_d_defaults_timestamp_timeout.files }}" ++ ++- name: Ensure timestamp_timeout is enabled with the appropriate value in /etc/sudoers ++ lineinfile: ++ path: /etc/sudoers ++ regexp: '^[\s]*Defaults\s(.*)\btimestamp_timeout=[-]?\w+\b(.*)$' ++ line: 'Defaults \1timestamp_timeout={{ var_sudo_timestamp_timeout }}\2' ++ validate: /usr/sbin/visudo -cf %s ++ backrefs: yes ++ register: edit_sudoers_timestamp_timeout_option ++ ++- name: Enable timestamp_timeout option with appropriate value in /etc/sudoers ++ lineinfile: # noqa 503 ++ path: /etc/sudoers ++ line: 'Defaults timestamp_timeout={{ var_sudo_timestamp_timeout }}' ++ validate: /usr/sbin/visudo -cf %s ++ when: edit_sudoers_timestamp_timeout_option is defined and not edit_sudoers_timestamp_timeout_option.changed +diff --git a/linux_os/guide/system/software/sudo/sudo_require_reauthentication/bash/shared.sh b/linux_os/guide/system/software/sudo/sudo_require_reauthentication/bash/shared.sh +new file mode 100644 +index 00000000000..0b623ed4a49 +--- /dev/null ++++ b/linux_os/guide/system/software/sudo/sudo_require_reauthentication/bash/shared.sh +@@ -0,0 +1,38 @@ ++# platform = multi_platform_all ++# reboot = false ++# strategy = restrict ++# complexity = low ++# disruption = low ++ ++ ++{{{ bash_instantiate_variables("var_sudo_timestamp_timeout") }}} ++ ++if grep -x '^[\s]*Defaults.*\btimestamp_timeout=.*' /etc/sudoers.d/*; then ++ find /etc/sudoers.d/ -type f -exec sed -i "/^[\s]*Defaults.*\btimestamp_timeout=.*/d" {} \; ++fi ++ ++if /usr/sbin/visudo -qcf /etc/sudoers; then ++ cp /etc/sudoers /etc/sudoers.bak ++ if ! grep -P '^[\s]*Defaults.*\btimestamp_timeout=[-]?\w+\b\b.*$' /etc/sudoers; then ++ # sudoers file doesn't define Option timestamp_timeout ++ echo "Defaults timestamp_timeout=${var_sudo_timestamp_timeout}" >> /etc/sudoers ++ else ++ # sudoers file defines Option timestamp_timeout, remediate if appropriate value is not set ++ if ! grep -P "^[\s]*Defaults.*\btimestamp_timeout=${var_sudo_timestamp_timeout}\b.*$" /etc/sudoers; then ++ ++ sed -Ei "s/(^[\s]*Defaults.*\btimestamp_timeout=)[-]?\w+(\b.*$)/\1${var_sudo_timestamp_timeout}\2/" /etc/sudoers ++ fi ++ fi ++ ++ # Check validity of sudoers and cleanup bak ++ if /usr/sbin/visudo -qcf /etc/sudoers; then ++ rm -f /etc/sudoers.bak ++ else ++ echo "Fail to validate remediated /etc/sudoers, reverting to original file." ++ mv /etc/sudoers.bak /etc/sudoers ++ false ++ fi ++else ++ echo "Skipping remediation, /etc/sudoers failed to validate" ++ false ++fi +diff --git a/linux_os/guide/system/software/sudo/sudo_require_reauthentication/oval/shared.xml b/linux_os/guide/system/software/sudo/sudo_require_reauthentication/oval/shared.xml +index 8f404ca6065..dfc319b6f1f 100644 +--- a/linux_os/guide/system/software/sudo/sudo_require_reauthentication/oval/shared.xml ++++ b/linux_os/guide/system/software/sudo/sudo_require_reauthentication/oval/shared.xml +@@ -6,13 +6,13 @@ + + + +- ++ + + + + + +- /etc/sudoers ++ ^/etc/sudoers(\.d/.*)?$ + ^[\s]*Defaults[\s]+timestamp_timeout=([-]?[\d]+)$ + 1 + +diff --git a/linux_os/guide/system/software/sudo/sudo_require_reauthentication/rule.yml b/linux_os/guide/system/software/sudo/sudo_require_reauthentication/rule.yml +index 42c6e28f9e6..eebb96678f1 100644 +--- a/linux_os/guide/system/software/sudo/sudo_require_reauthentication/rule.yml ++++ b/linux_os/guide/system/software/sudo/sudo_require_reauthentication/rule.yml +@@ -50,16 +50,4 @@ ocil: |- +
      sudo grep -ri '^Defaults.*timestamp_timeout' /etc/sudoers /etc/sudoers.d
      + The output should be: +
      /etc/sudoers:Defaults timestamp_timeout=0
      or "timestamp_timeout" is set to a positive number. +- +-template: +- name: sudo_defaults_option +- vars: +- option: timestamp_timeout +- variable_name: "var_sudo_timestamp_timeout" +- # optional minus char added so remediation can detect properly if item is already configured +- option_regex_suffix: '=[-]?\w+\b' +- backends: +- # Template is not able to accomodate this particular check. +- # It needs to check for an integer greater than or equal to zero +- oval: "off" +- ++ If results are returned from more than one file location, this is a finding. +diff --git a/linux_os/guide/system/software/sudo/sudo_require_reauthentication/tests/multiple_correct_value.fail.sh b/linux_os/guide/system/software/sudo/sudo_require_reauthentication/tests/multiple_correct_value.fail.sh +new file mode 100644 +index 00000000000..a258d6632b5 +--- /dev/null ++++ b/linux_os/guide/system/software/sudo/sudo_require_reauthentication/tests/multiple_correct_value.fail.sh +@@ -0,0 +1,10 @@ ++#!/bin/bash ++ ++ ++if grep -q 'timestamp_timeout' /etc/sudoers; then ++ sed -i 's/.*timestamp_timeout.*/Defaults timestamp_timeout=3/' /etc/sudoers ++else ++ echo "Defaults timestamp_timeout=3" >> /etc/sudoers ++fi ++ ++echo "Defaults timestamp_timeout=3" > /etc/sudoers.d/00-complianceascode-test.conf diff --git a/SOURCES/scap-security-guide-0.1.61-update_RHEL_08_010030-PR_8183.patch b/SOURCES/scap-security-guide-0.1.61-update_RHEL_08_010030-PR_8183.patch index 862bb8d..1f30bf6 100644 --- a/SOURCES/scap-security-guide-0.1.61-update_RHEL_08_010030-PR_8183.patch +++ b/SOURCES/scap-security-guide-0.1.61-update_RHEL_08_010030-PR_8183.patch @@ -1,14 +1,3 @@ -From 92b0f4069bced7d9e1e459db0799d7d2fb9faa59 Mon Sep 17 00:00:00 2001 -From: Gabriel Becker -Date: Wed, 9 Feb 2022 14:47:52 +0100 -Subject: [PATCH] Update ocil_clause of encrypt_partitions to exclude boot - partition. - -Boot partitions are not part of required partitions to be encrypted. ---- - .../software/disk_partitioning/encrypt_partitions/rule.yml | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - diff --git a/linux_os/guide/system/software/disk_partitioning/encrypt_partitions/rule.yml b/linux_os/guide/system/software/disk_partitioning/encrypt_partitions/rule.yml index e9d25a34fbd..13231dc2cc9 100644 --- a/linux_os/guide/system/software/disk_partitioning/encrypt_partitions/rule.yml diff --git a/SOURCES/scap-security-guide-0.1.61-update_RHEL_08_010287-PR_8051.patch b/SOURCES/scap-security-guide-0.1.61-update_RHEL_08_010287-PR_8051.patch index c380505..ad5b814 100644 --- a/SOURCES/scap-security-guide-0.1.61-update_RHEL_08_010287-PR_8051.patch +++ b/SOURCES/scap-security-guide-0.1.61-update_RHEL_08_010287-PR_8051.patch @@ -1,27 +1,36 @@ -commit 35b2bc766287571aa1e826344730a41ae790c379 -Author: Gabriel Becker -Date: Fri Feb 25 13:29:19 2022 +0100 - - Manual edited patch scap-security-guide-0.1.61-update_RHEL_08_010287-PR_8051.patch. - diff --git a/linux_os/guide/system/software/integrity/crypto/configure_ssh_crypto_policy/rule.yml b/linux_os/guide/system/software/integrity/crypto/configure_ssh_crypto_policy/rule.yml -index 729e478..caccb6c 100644 +index 395129acb66..60b0ce0eb7d 100644 --- a/linux_os/guide/system/software/integrity/crypto/configure_ssh_crypto_policy/rule.yml +++ b/linux_os/guide/system/software/integrity/crypto/configure_ssh_crypto_policy/rule.yml -@@ -28,7 +28,7 @@ references: - nerc-cip: CIP-003-3 R4.2,CIP-007-3 R5.1,CIP-007-3 R7.1 +@@ -30,7 +30,7 @@ references: nist: AC-17(a),AC-17(2),CM-6(a),MA-4(6),SC-13 srg: SRG-OS-000250-GPOS-00093 + stigid@ol8: OL08-00-010020 - stigid@rhel8: RHEL-08-010020 + stigid@rhel8: RHEL-08-010287 ocil_clause: 'the CRYPTO_POLICY variable is not set or is commented in the /etc/sysconfig/sshd' diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index 6b9d799..5d03125 100644 +index 04f158116ee..60eafa9c566 100644 --- a/products/rhel8/profiles/stig.profile +++ b/products/rhel8/profiles/stig.profile -@@ -189,9 +189,7 @@ selections: +@@ -191,9 +191,7 @@ selections: + # RHEL-08-010260 + - file_groupowner_var_log + +- # *** SHARED *** # +- # RHEL-08-010290 && RHEL-08-010291 +- # *** SHARED *** # ++ # RHEL-08-010287 + - configure_ssh_crypto_policy + + # RHEL-08-010290 +diff --git a/products/rhel9/profiles/stig.profile b/products/rhel9/profiles/stig.profile +index 8f79b22e3e4..9bd1a2b0f51 100644 +--- a/products/rhel9/profiles/stig.profile ++++ b/products/rhel9/profiles/stig.profile +@@ -192,9 +192,7 @@ selections: # RHEL-08-010260 - file_groupowner_var_log diff --git a/SOURCES/scap-security-guide-0.1.61-update_RHEL_08_010383-PR_8138.patch b/SOURCES/scap-security-guide-0.1.61-update_RHEL_08_010383-PR_8138.patch index 90fd05e..f421060 100644 --- a/SOURCES/scap-security-guide-0.1.61-update_RHEL_08_010383-PR_8138.patch +++ b/SOURCES/scap-security-guide-0.1.61-update_RHEL_08_010383-PR_8138.patch @@ -1,35 +1,59 @@ -From 133d331a04e1ba27324291006c65c2bfa467e49d Mon Sep 17 00:00:00 2001 -From: Gabriel Becker -Date: Tue, 1 Feb 2022 16:54:16 +0100 -Subject: [PATCH 1/2] Update RHEL-08-010383 to require only one occurrence of a - config. - -The V1R5 release of RHEL8 STIG requires that the configuration should be -present only in one configuration file to prevent any ordering problem -when the modules loads the configuration using drop-in files that use -the lexicographically order of file names. ---- - .../sudo/sudoers_validate_passwd/ansible/shared.yml | 6 +++--- - .../sudo/sudoers_validate_passwd/oval/shared.xml | 12 ++++++------ - .../software/sudo/sudoers_validate_passwd/rule.yml | 3 ++- - .../tests/sudoers_validate_passwd_duplicates.fail.sh | 7 +++++++ - 4 files changed, 18 insertions(+), 10 deletions(-) - create mode 100644 linux_os/guide/system/software/sudo/sudoers_validate_passwd/tests/sudoers_validate_passwd_duplicates.fail.sh - diff --git a/linux_os/guide/system/software/sudo/sudoers_validate_passwd/ansible/shared.yml b/linux_os/guide/system/software/sudo/sudoers_validate_passwd/ansible/shared.yml -index 08ffd76aed6..19673634fb3 100644 +index 08ffd76aed6..399ca1ea3ce 100644 --- a/linux_os/guide/system/software/sudo/sudoers_validate_passwd/ansible/shared.yml +++ b/linux_os/guide/system/software/sudo/sudoers_validate_passwd/ansible/shared.yml -@@ -4,6 +4,6 @@ +@@ -4,6 +4,26 @@ # complexity = low # disruption = low -{{{ ansible_lineinfile(msg='Ensure that Defaults !targetpw is defined in sudoers', path='/etc/sudoers', new_line='Defaults !targetpw', create='yes', state='present') }}} -{{{ ansible_lineinfile(msg='Ensure that Defaults !rootpw is defined in sudoers', path='/etc/sudoers', new_line='Defaults !rootpw', create='yes', state='present') }}} -{{{ ansible_lineinfile(msg='Ensure that Defaults !runaspw is defined in sudoers', path='/etc/sudoers', new_line='Defaults !runaspw', create='yes', state='present') }}} ++{{%- macro delete_line_in_sudoers_d(line) %}} ++- name: "Find out if /etc/sudoers.d/* files contain {{{ line }}} to be deduplicated" ++ find: ++ path: "/etc/sudoers.d" ++ patterns: "*" ++ contains: '^{{{ line }}}$' ++ register: sudoers_d_defaults ++ ++- name: "Remove found occurrences of {{{ line }}} from /etc/sudoers.d/* files" ++ lineinfile: ++ path: "{{ item.path }}" ++ regexp: "^{{{ line }}}$" ++ state: absent ++ with_items: "{{ sudoers_d_defaults.files }}" ++{{%- endmacro %}} ++ ++{{{- delete_line_in_sudoers_d("Defaults !targetpw") }}} ++{{{- delete_line_in_sudoers_d("Defaults !rootpw") }}} ++{{{- delete_line_in_sudoers_d("Defaults !runaspw") }}} ++ +{{{ ansible_only_lineinfile(msg='Ensure that Defaults !targetpw is defined in sudoers', line_regex='^Defaults !targetpw$', path='/etc/sudoers', new_line='Defaults !targetpw') }}} +{{{ ansible_only_lineinfile(msg='Ensure that Defaults !rootpw is defined in sudoers', line_regex='^Defaults !rootpw$', path='/etc/sudoers', new_line='Defaults !rootpw') }}} +{{{ ansible_only_lineinfile(msg='Ensure that Defaults !runaspw is defined in sudoers', line_regex='^Defaults !runaspw$', path='/etc/sudoers', new_line='Defaults !runaspw') }}} +diff --git a/linux_os/guide/system/software/sudo/sudoers_validate_passwd/bash/shared.sh b/linux_os/guide/system/software/sudo/sudoers_validate_passwd/bash/shared.sh +index ea0ac67fa1c..3b327f3fc88 100644 +--- a/linux_os/guide/system/software/sudo/sudoers_validate_passwd/bash/shared.sh ++++ b/linux_os/guide/system/software/sudo/sudoers_validate_passwd/bash/shared.sh +@@ -1,5 +1,17 @@ + # platform = multi_platform_all + ++{{%- macro delete_line_in_sudoers_d(line) %}} ++if grep -x '^{{{line}}}$' /etc/sudoers.d/*; then ++ find /etc/sudoers.d/ -type f -exec sed -i "/{{{line}}}/d" {} \; ++fi ++{{%- endmacro %}} ++ ++{{{- delete_line_in_sudoers_d("Defaults !targetpw") }}} ++{{{- delete_line_in_sudoers_d("Defaults !rootpw") }}} ++{{{- delete_line_in_sudoers_d("Defaults !runaspw") }}} ++ + {{{ set_config_file(path="/etc/sudoers", parameter="Defaults !targetpw", value="", create=true, insensitive=false, separator="", separator_regex="", prefix_regex="") }}} + {{{ set_config_file(path="/etc/sudoers", parameter="Defaults !rootpw", value="", create=true, insensitive=false, separator="", separator_regex="", prefix_regex="") }}} + {{{ set_config_file(path="/etc/sudoers", parameter="Defaults !runaspw", value="", create=true, insensitive=false, separator="", separator_regex="", prefix_regex="") }}} ++ ++ diff --git a/linux_os/guide/system/software/sudo/sudoers_validate_passwd/oval/shared.xml b/linux_os/guide/system/software/sudo/sudoers_validate_passwd/oval/shared.xml index 646e6bfb7c0..b3fadd53bee 100644 --- a/linux_os/guide/system/software/sudo/sudoers_validate_passwd/oval/shared.xml @@ -92,98 +116,31 @@ index ccc29b77d15..698021d8fd0 100644 If "Defaults !targetpw" is not defined, this is a finding. If "Defaults !rootpw" is not defined, this is a finding. If "Defaults !runaspw" is not defined, this is a finding. -diff --git a/linux_os/guide/system/software/sudo/sudoers_validate_passwd/tests/sudoers_validate_passwd_duplicates.fail.sh b/linux_os/guide/system/software/sudo/sudoers_validate_passwd/tests/sudoers_validate_passwd_duplicates.fail.sh +diff --git a/linux_os/guide/system/software/sudo/sudoers_validate_passwd/tests/sudoers_d_duplicate.fail.sh b/linux_os/guide/system/software/sudo/sudoers_validate_passwd/tests/sudoers_d_duplicate.fail.sh new file mode 100644 -index 00000000000..6247b5230e4 +index 00000000000..a258d108a00 --- /dev/null -+++ b/linux_os/guide/system/software/sudo/sudoers_validate_passwd/tests/sudoers_validate_passwd_duplicates.fail.sh -@@ -0,0 +1,7 @@ ++++ b/linux_os/guide/system/software/sudo/sudoers_validate_passwd/tests/sudoers_d_duplicate.fail.sh +@@ -0,0 +1,9 @@ +# platform = multi_platform_fedora,multi_platform_ol,multi_platform_rhel,SUSE Linux Enterprise 15 +# packages = sudo + +echo 'Defaults !targetpw' >> /etc/sudoers +echo 'Defaults !rootpw' >> /etc/sudoers +echo 'Defaults !runaspw' >> /etc/sudoers -+echo 'Defaults !runaspw' >> /etc/sudoers - -From 315b248c77252fc3145cdf34fede98b1a32a7c04 Mon Sep 17 00:00:00 2001 -From: Gabriel Becker -Date: Wed, 9 Feb 2022 15:24:23 +0100 -Subject: [PATCH 2/2] Update remediations of sudoers_validate_passwd to remove - duplicates. - ---- - .../ansible/shared.yml | 20 +++++++++++++++++++ - .../sudoers_validate_passwd/bash/shared.sh | 12 +++++++++++ - .../tests/sudoers_d_duplicate.fail.sh | 9 +++++++++ - 3 files changed, 41 insertions(+) - create mode 100644 linux_os/guide/system/software/sudo/sudoers_validate_passwd/tests/sudoers_d_duplicate.fail.sh - -diff --git a/linux_os/guide/system/software/sudo/sudoers_validate_passwd/ansible/shared.yml b/linux_os/guide/system/software/sudo/sudoers_validate_passwd/ansible/shared.yml -index 19673634fb3..399ca1ea3ce 100644 ---- a/linux_os/guide/system/software/sudo/sudoers_validate_passwd/ansible/shared.yml -+++ b/linux_os/guide/system/software/sudo/sudoers_validate_passwd/ansible/shared.yml -@@ -4,6 +4,26 @@ - # complexity = low - # disruption = low - -+{{%- macro delete_line_in_sudoers_d(line) %}} -+- name: "Find out if /etc/sudoers.d/* files contain {{{ line }}} to be deduplicated" -+ find: -+ path: "/etc/sudoers.d" -+ patterns: "*" -+ contains: '^{{{ line }}}$' -+ register: sudoers_d_defaults -+ -+- name: "Remove found occurrences of {{{ line }}} from /etc/sudoers.d/* files" -+ lineinfile: -+ path: "{{ item.path }}" -+ regexp: "^{{{ line }}}$" -+ state: absent -+ with_items: "{{ sudoers_d_defaults.files }}" -+{{%- endmacro %}} -+ -+{{{- delete_line_in_sudoers_d("Defaults !targetpw") }}} -+{{{- delete_line_in_sudoers_d("Defaults !rootpw") }}} -+{{{- delete_line_in_sudoers_d("Defaults !runaspw") }}} -+ - {{{ ansible_only_lineinfile(msg='Ensure that Defaults !targetpw is defined in sudoers', line_regex='^Defaults !targetpw$', path='/etc/sudoers', new_line='Defaults !targetpw') }}} - {{{ ansible_only_lineinfile(msg='Ensure that Defaults !rootpw is defined in sudoers', line_regex='^Defaults !rootpw$', path='/etc/sudoers', new_line='Defaults !rootpw') }}} - {{{ ansible_only_lineinfile(msg='Ensure that Defaults !runaspw is defined in sudoers', line_regex='^Defaults !runaspw$', path='/etc/sudoers', new_line='Defaults !runaspw') }}} -diff --git a/linux_os/guide/system/software/sudo/sudoers_validate_passwd/bash/shared.sh b/linux_os/guide/system/software/sudo/sudoers_validate_passwd/bash/shared.sh -index ea0ac67fa1c..3b327f3fc88 100644 ---- a/linux_os/guide/system/software/sudo/sudoers_validate_passwd/bash/shared.sh -+++ b/linux_os/guide/system/software/sudo/sudoers_validate_passwd/bash/shared.sh -@@ -1,5 +1,17 @@ - # platform = multi_platform_all - -+{{%- macro delete_line_in_sudoers_d(line) %}} -+if grep -x '^{{{line}}}$' /etc/sudoers.d/*; then -+ find /etc/sudoers.d/ -type f -exec sed -i "/{{{line}}}/d" {} \; -+fi -+{{%- endmacro %}} -+ -+{{{- delete_line_in_sudoers_d("Defaults !targetpw") }}} -+{{{- delete_line_in_sudoers_d("Defaults !rootpw") }}} -+{{{- delete_line_in_sudoers_d("Defaults !runaspw") }}} -+ - {{{ set_config_file(path="/etc/sudoers", parameter="Defaults !targetpw", value="", create=true, insensitive=false, separator="", separator_regex="", prefix_regex="") }}} - {{{ set_config_file(path="/etc/sudoers", parameter="Defaults !rootpw", value="", create=true, insensitive=false, separator="", separator_regex="", prefix_regex="") }}} - {{{ set_config_file(path="/etc/sudoers", parameter="Defaults !runaspw", value="", create=true, insensitive=false, separator="", separator_regex="", prefix_regex="") }}} -+ -+ -diff --git a/linux_os/guide/system/software/sudo/sudoers_validate_passwd/tests/sudoers_d_duplicate.fail.sh b/linux_os/guide/system/software/sudo/sudoers_validate_passwd/tests/sudoers_d_duplicate.fail.sh ++echo 'Defaults !targetpw' >> /etc/sudoers.d/00-complianceascode.conf ++echo 'Defaults !rootpw' >> /etc/sudoers.d/00-complianceascode.conf ++echo 'Defaults !runaspw' >> /etc/sudoers.d/00-complianceascode.conf +diff --git a/linux_os/guide/system/software/sudo/sudoers_validate_passwd/tests/sudoers_validate_passwd_duplicates.fail.sh b/linux_os/guide/system/software/sudo/sudoers_validate_passwd/tests/sudoers_validate_passwd_duplicates.fail.sh new file mode 100644 -index 00000000000..a258d108a00 +index 00000000000..6247b5230e4 --- /dev/null -+++ b/linux_os/guide/system/software/sudo/sudoers_validate_passwd/tests/sudoers_d_duplicate.fail.sh -@@ -0,0 +1,9 @@ ++++ b/linux_os/guide/system/software/sudo/sudoers_validate_passwd/tests/sudoers_validate_passwd_duplicates.fail.sh +@@ -0,0 +1,7 @@ +# platform = multi_platform_fedora,multi_platform_ol,multi_platform_rhel,SUSE Linux Enterprise 15 +# packages = sudo + +echo 'Defaults !targetpw' >> /etc/sudoers +echo 'Defaults !rootpw' >> /etc/sudoers +echo 'Defaults !runaspw' >> /etc/sudoers -+echo 'Defaults !targetpw' >> /etc/sudoers.d/00-complianceascode.conf -+echo 'Defaults !rootpw' >> /etc/sudoers.d/00-complianceascode.conf -+echo 'Defaults !runaspw' >> /etc/sudoers.d/00-complianceascode.conf ++echo 'Defaults !runaspw' >> /etc/sudoers diff --git a/SOURCES/scap-security-guide-0.1.61-update_RHEL_08_010385-PR_8220.patch b/SOURCES/scap-security-guide-0.1.61-update_RHEL_08_010385-PR_8220.patch deleted file mode 100644 index 634920e..0000000 --- a/SOURCES/scap-security-guide-0.1.61-update_RHEL_08_010385-PR_8220.patch +++ /dev/null @@ -1,164 +0,0 @@ -From 17320d95043eb6acec223c6b1fe40f04d58d184d Mon Sep 17 00:00:00 2001 -From: Gabriel Becker -Date: Mon, 21 Mar 2022 14:55:11 +0100 -Subject: [PATCH] 8220. - ---- - .../ansible/shared.yml | 36 +++++++++++++++++ - .../bash/shared.sh | 39 +++++++++++++++++++ - .../oval/shared.xml | 4 +- - .../sudo_require_reauthentication/rule.yml | 14 +------ - .../tests/multiple_correct_value.fail.sh | 10 +++++ - 5 files changed, 88 insertions(+), 15 deletions(-) - create mode 100644 linux_os/guide/system/software/sudo/sudo_require_reauthentication/ansible/shared.yml - create mode 100644 linux_os/guide/system/software/sudo/sudo_require_reauthentication/bash/shared.sh - create mode 100644 linux_os/guide/system/software/sudo/sudo_require_reauthentication/tests/multiple_correct_value.fail.sh - -diff --git a/linux_os/guide/system/software/sudo/sudo_require_reauthentication/ansible/shared.yml b/linux_os/guide/system/software/sudo/sudo_require_reauthentication/ansible/shared.yml -new file mode 100644 -index 0000000..b0c67a6 ---- /dev/null -+++ b/linux_os/guide/system/software/sudo/sudo_require_reauthentication/ansible/shared.yml -@@ -0,0 +1,36 @@ -+# platform = multi_platform_all -+# reboot = false -+# strategy = restrict -+# complexity = low -+# disruption = low -+ -+{{{ ansible_instantiate_variables("var_sudo_timestamp_timeout") }}} -+- name: "Find out if /etc/sudoers.d/* files contain 'Defaults timestamp_timeout' to be deduplicated" -+ find: -+ path: "/etc/sudoers.d" -+ patterns: "*" -+ contains: '^[\s]*Defaults\s.*\btimestamp_timeout=.*' -+ register: sudoers_d_defaults_timestamp_timeout -+ -+- name: "Remove found occurrences of 'Defaults timestamp_timeout' from /etc/sudoers.d/* files" -+ lineinfile: -+ path: "{{ item.path }}" -+ regexp: '^[\s]*Defaults\s.*\btimestamp_timeout=.*' -+ state: absent -+ with_items: "{{ sudoers_d_defaults_timestamp_timeout.files }}" -+ -+- name: Ensure timestamp_timeout is enabled with the appropriate value in /etc/sudoers -+ lineinfile: -+ path: /etc/sudoers -+ regexp: '^[\s]*Defaults\s(.*)\btimestamp_timeout=[-]?\w+\b(.*)$' -+ line: 'Defaults \1timestamp_timeout={{ var_sudo_timestamp_timeout }}\2' -+ validate: /usr/sbin/visudo -cf %s -+ backrefs: yes -+ register: edit_sudoers_timestamp_timeout_option -+ -+- name: Enable timestamp_timeout option with appropriate value in /etc/sudoers -+ lineinfile: # noqa 503 -+ path: /etc/sudoers -+ line: 'Defaults timestamp_timeout={{ var_sudo_timestamp_timeout }}' -+ validate: /usr/sbin/visudo -cf %s -+ when: edit_sudoers_timestamp_timeout_option is defined and not edit_sudoers_timestamp_timeout_option.changed -diff --git a/linux_os/guide/system/software/sudo/sudo_require_reauthentication/bash/shared.sh b/linux_os/guide/system/software/sudo/sudo_require_reauthentication/bash/shared.sh -new file mode 100644 -index 0000000..f291f53 ---- /dev/null -+++ b/linux_os/guide/system/software/sudo/sudo_require_reauthentication/bash/shared.sh -@@ -0,0 +1,39 @@ -+# platform = multi_platform_all -+# reboot = false -+# strategy = restrict -+# complexity = low -+# disruption = low -+ -+. /usr/share/scap-security-guide/remediation_functions -+ -+{{{ bash_instantiate_variables("var_sudo_timestamp_timeout") }}} -+ -+if grep -x '^[\s]*Defaults.*\btimestamp_timeout=.*' /etc/sudoers.d/*; then -+ find /etc/sudoers.d/ -type f -exec sed -i "/^[\s]*Defaults.*\btimestamp_timeout=.*/d" {} \; -+fi -+ -+if /usr/sbin/visudo -qcf /etc/sudoers; then -+ cp /etc/sudoers /etc/sudoers.bak -+ if ! grep -P '^[\s]*Defaults.*\btimestamp_timeout=[-]?\w+\b\b.*$' /etc/sudoers; then -+ # sudoers file doesn't define Option timestamp_timeout -+ echo "Defaults timestamp_timeout=${var_sudo_timestamp_timeout}" >> /etc/sudoers -+ else -+ # sudoers file defines Option timestamp_timeout, remediate if appropriate value is not set -+ if ! grep -P "^[\s]*Defaults.*\btimestamp_timeout=${var_sudo_timestamp_timeout}\b.*$" /etc/sudoers; then -+ -+ sed -Ei "s/(^[\s]*Defaults.*\btimestamp_timeout=)[-]?\w+(\b.*$)/\1${var_sudo_timestamp_timeout}\2/" /etc/sudoers -+ fi -+ fi -+ -+ # Check validity of sudoers and cleanup bak -+ if /usr/sbin/visudo -qcf /etc/sudoers; then -+ rm -f /etc/sudoers.bak -+ else -+ echo "Fail to validate remediated /etc/sudoers, reverting to original file." -+ mv /etc/sudoers.bak /etc/sudoers -+ false -+ fi -+else -+ echo "Skipping remediation, /etc/sudoers failed to validate" -+ false -+fi -diff --git a/linux_os/guide/system/software/sudo/sudo_require_reauthentication/oval/shared.xml b/linux_os/guide/system/software/sudo/sudo_require_reauthentication/oval/shared.xml -index 8f404ca..dfc319b 100644 ---- a/linux_os/guide/system/software/sudo/sudo_require_reauthentication/oval/shared.xml -+++ b/linux_os/guide/system/software/sudo/sudo_require_reauthentication/oval/shared.xml -@@ -6,13 +6,13 @@ - - - -- -+ - - - - - -- /etc/sudoers -+ ^/etc/sudoers(\.d/.*)?$ - ^[\s]*Defaults[\s]+timestamp_timeout=([-]?[\d]+)$ - 1 - -diff --git a/linux_os/guide/system/software/sudo/sudo_require_reauthentication/rule.yml b/linux_os/guide/system/software/sudo/sudo_require_reauthentication/rule.yml -index 8622d6a..f7a14a8 100644 ---- a/linux_os/guide/system/software/sudo/sudo_require_reauthentication/rule.yml -+++ b/linux_os/guide/system/software/sudo/sudo_require_reauthentication/rule.yml -@@ -45,16 +45,4 @@ ocil: |- -
      sudo grep -ri '^Defaults.*timestamp_timeout' /etc/sudoers /etc/sudoers.d
      - The output should be: -
      /etc/sudoers:Defaults timestamp_timeout=0
      or "timestamp_timeout" is set to a positive number. -- --template: -- name: sudo_defaults_option -- vars: -- option: timestamp_timeout -- variable_name: "var_sudo_timestamp_timeout" -- # optional minus char added so remediation can detect properly if item is already configured -- option_regex_suffix: '=[-]?\w+\b' -- backends: -- # Template is not able to accomodate this particular check. -- # It needs to check for an integer greater than or equal to zero -- oval: "off" -- -+ If results are returned from more than one file location, this is a finding. -diff --git a/linux_os/guide/system/software/sudo/sudo_require_reauthentication/tests/multiple_correct_value.fail.sh b/linux_os/guide/system/software/sudo/sudo_require_reauthentication/tests/multiple_correct_value.fail.sh -new file mode 100644 -index 0000000..a258d66 ---- /dev/null -+++ b/linux_os/guide/system/software/sudo/sudo_require_reauthentication/tests/multiple_correct_value.fail.sh -@@ -0,0 +1,10 @@ -+#!/bin/bash -+ -+ -+if grep -q 'timestamp_timeout' /etc/sudoers; then -+ sed -i 's/.*timestamp_timeout.*/Defaults timestamp_timeout=3/' /etc/sudoers -+else -+ echo "Defaults timestamp_timeout=3" >> /etc/sudoers -+fi -+ -+echo "Defaults timestamp_timeout=3" > /etc/sudoers.d/00-complianceascode-test.conf --- -2.34.1 - diff --git a/SOURCES/scap-security-guide-0.1.61-update_RHEL_08_020041-PR_8146.patch b/SOURCES/scap-security-guide-0.1.61-update_RHEL_08_020041-PR_8146.patch index 4283a6d..5c27f1f 100644 --- a/SOURCES/scap-security-guide-0.1.61-update_RHEL_08_020041-PR_8146.patch +++ b/SOURCES/scap-security-guide-0.1.61-update_RHEL_08_020041-PR_8146.patch @@ -1,15 +1,9 @@ -commit 36b22c1b5f2cf6bdbe346cbca9c185f75e5dc8e6 -Author: Watson Sato -Date: Mon Feb 28 11:28:39 2022 +0100 - - Manual edited patch scap-security-guide-0.1.61-update_RHEL_08_020041-PR_8146.patch. - diff --git a/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/configure_bashrc_exec_tmux/bash/shared.sh b/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/configure_bashrc_exec_tmux/bash/shared.sh -index 0c544bf..4519460 100644 +index 737d725872d..08b62057bde 100644 --- a/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/configure_bashrc_exec_tmux/bash/shared.sh +++ b/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/configure_bashrc_exec_tmux/bash/shared.sh @@ -1,7 +1,11 @@ - # platform = multi_platform_fedora,Red Hat Enterprise Linux 8,Oracle Linux 8 + # platform = multi_platform_all +# reboot = true +# strategy = enable +# complexity = low @@ -22,7 +16,7 @@ index 0c544bf..4519460 100644 parent=$(ps -o ppid= -p $$) name=$(ps -o comm= -p $parent) diff --git a/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/configure_bashrc_exec_tmux/oval/shared.xml b/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/configure_bashrc_exec_tmux/oval/shared.xml -index 00ac349..4cb2f9e 100644 +index 00ac349e292..4cb2f9e0e04 100644 --- a/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/configure_bashrc_exec_tmux/oval/shared.xml +++ b/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/configure_bashrc_exec_tmux/oval/shared.xml @@ -4,21 +4,27 @@ @@ -62,7 +56,7 @@ index 00ac349..4cb2f9e 100644 + diff --git a/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/configure_bashrc_exec_tmux/rule.yml b/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/configure_bashrc_exec_tmux/rule.yml -index c43b8cb..6be090b 100644 +index 3ba0f4a2d8f..7afc5fc5e6b 100644 --- a/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/configure_bashrc_exec_tmux/rule.yml +++ b/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/configure_bashrc_exec_tmux/rule.yml @@ -7,12 +7,20 @@ title: 'Support session locking with tmux' @@ -87,8 +81,8 @@ index c43b8cb..6be090b 100644 severity: medium identifiers: -@@ -25,17 +33,21 @@ references: - srg: SRG-OS-000031-GPOS-00012,SRG-OS-000028-GPOS-00009 +@@ -26,17 +34,21 @@ references: + stigid@ol8: OL08-00-020041 stigid@rhel8: RHEL-08-020041 -ocil_clause: 'exec tmux is not present at the end of bashrc' @@ -113,7 +107,7 @@ index c43b8cb..6be090b 100644 platform: machine diff --git a/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/configure_bashrc_exec_tmux/tests/correct_value.pass.sh b/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/configure_bashrc_exec_tmux/tests/correct_value.pass.sh new file mode 100644 -index 0000000..221c186 +index 00000000000..221c18665ef --- /dev/null +++ b/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/configure_bashrc_exec_tmux/tests/correct_value.pass.sh @@ -0,0 +1,12 @@ @@ -131,7 +125,7 @@ index 0000000..221c186 +tmux new-session -s root -d diff --git a/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/configure_bashrc_exec_tmux/tests/correct_value_d_directory.pass.sh b/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/configure_bashrc_exec_tmux/tests/correct_value_d_directory.pass.sh new file mode 100644 -index 0000000..1702bb1 +index 00000000000..1702bb17e79 --- /dev/null +++ b/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/configure_bashrc_exec_tmux/tests/correct_value_d_directory.pass.sh @@ -0,0 +1,13 @@ @@ -148,13 +142,14 @@ index 0000000..1702bb1 +EOF + +tmux new-session -s root -d -diff --git a/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/configure_bashrc_exec_tmux/tests/duplicate_value_multiple_files.fail.sh b/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/configure_bashrc_exec_tmux/tests/duplicate_value_multiple_files.fail.sh +diff --git a/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/configure_bashrc_exec_tmux/tests/duplicate_value_multiple_files.pass.sh b/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/configure_bashrc_exec_tmux/tests/duplicate_value_multiple_files.pass.sh new file mode 100644 -index 0000000..1dc38b8 +index 00000000000..16d4acfcb5a --- /dev/null -+++ b/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/configure_bashrc_exec_tmux/tests/duplicate_value_multiple_files.fail.sh -@@ -0,0 +1,17 @@ ++++ b/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/configure_bashrc_exec_tmux/tests/duplicate_value_multiple_files.pass.sh +@@ -0,0 +1,20 @@ +#!/bin/bash ++# packages = tmux + +cat >> /etc/profile.d/00-complianceascode.conf <<'EOF' +if [ "$PS1" ]; then @@ -171,9 +166,11 @@ index 0000000..1dc38b8 + case "$name" in sshd|login) exec tmux ;; esac +fi +EOF ++ ++tmux new-session -s root -d diff --git a/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/configure_bashrc_exec_tmux/tests/tmux_not_running.fail.sh b/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/configure_bashrc_exec_tmux/tests/tmux_not_running.fail.sh new file mode 100644 -index 0000000..6cb9d83 +index 00000000000..6cb9d83efc5 --- /dev/null +++ b/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/configure_bashrc_exec_tmux/tests/tmux_not_running.fail.sh @@ -0,0 +1,13 @@ @@ -192,7 +189,7 @@ index 0000000..6cb9d83 +killall tmux || true diff --git a/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/configure_bashrc_exec_tmux/tests/wrong_value.fail.sh b/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/configure_bashrc_exec_tmux/tests/wrong_value.fail.sh new file mode 100644 -index 0000000..f13a8b0 +index 00000000000..f13a8b038e4 --- /dev/null +++ b/linux_os/guide/system/accounts/accounts-physical/screen_locking/console_screen_locking/configure_bashrc_exec_tmux/tests/wrong_value.fail.sh @@ -0,0 +1,105 @@ diff --git a/SOURCES/scap-security-guide-0.1.61-update_RHEL_08_040320-PR_8170.patch b/SOURCES/scap-security-guide-0.1.61-update_RHEL_08_040320-PR_8170.patch index 0633c61..c561b1a 100644 --- a/SOURCES/scap-security-guide-0.1.61-update_RHEL_08_040320-PR_8170.patch +++ b/SOURCES/scap-security-guide-0.1.61-update_RHEL_08_040320-PR_8170.patch @@ -1,11 +1,5 @@ -commit 8fe724cfa0f4cea726ddd7adb44cfbba0931b865 -Author: Watson Sato -Date: Mon Feb 28 10:38:13 2022 +0100 - - Manual edited patch scap-security-guide-0.1.61-update_RHEL_08_040320-PR_8170.patch. - diff --git a/linux_os/guide/services/xwindows/disabling_xwindows/xwindows_remove_packages/ansible/shared.yml b/linux_os/guide/services/xwindows/disabling_xwindows/xwindows_remove_packages/ansible/shared.yml -index 5b3afb3..67d6836 100644 +index 5b3afb324df..67d6836e873 100644 --- a/linux_os/guide/services/xwindows/disabling_xwindows/xwindows_remove_packages/ansible/shared.yml +++ b/linux_os/guide/services/xwindows/disabling_xwindows/xwindows_remove_packages/ansible/shared.yml @@ -14,12 +14,3 @@ @@ -22,7 +16,7 @@ index 5b3afb3..67d6836 100644 - force: yes - diff --git a/linux_os/guide/services/xwindows/disabling_xwindows/xwindows_remove_packages/bash/shared.sh b/linux_os/guide/services/xwindows/disabling_xwindows/xwindows_remove_packages/bash/shared.sh -index dbabe57..496dc74 100644 +index dbabe572d2a..496dc74be7c 100644 --- a/linux_os/guide/services/xwindows/disabling_xwindows/xwindows_remove_packages/bash/shared.sh +++ b/linux_os/guide/services/xwindows/disabling_xwindows/xwindows_remove_packages/bash/shared.sh @@ -12,6 +12,3 @@ @@ -34,7 +28,7 @@ index dbabe57..496dc74 100644 -systemctl set-default multi-user.target \ No newline at end of file diff --git a/linux_os/guide/services/xwindows/disabling_xwindows/xwindows_remove_packages/oval/shared.xml b/linux_os/guide/services/xwindows/disabling_xwindows/xwindows_remove_packages/oval/shared.xml -index 0710efe..0868ec6 100644 +index 0710efe9f1b..0868ec6eae7 100644 --- a/linux_os/guide/services/xwindows/disabling_xwindows/xwindows_remove_packages/oval/shared.xml +++ b/linux_os/guide/services/xwindows/disabling_xwindows/xwindows_remove_packages/oval/shared.xml @@ -2,10 +2,6 @@ @@ -49,21 +43,37 @@ index 0710efe..0868ec6 100644 test_ref="package_xorg-x11-server-Xorg_removed" /> sudo {{{ pkg_manager }}} remove xorg-x11-server-Xorg xorg-x11-server-common xorg-x11-server-utils xorg-x11-server-Xwayland + {{% endif %}} +- Additionally, setting the system's default target to +- multi-user.target will prevent automatic startup of the X server. +- To do so, run: +-
      $ systemctl set-default multi-user.target
      +- You should see the following output: +-
      Removed symlink /etc/systemd/system/default.target.
      +-    Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/multi-user.target.
      +- + + rationale: |- + Unnecessary service packages must not be installed to decrease the attack surface of the system. X windows has a long history of security +@@ -72,6 +64,8 @@ warnings: The installation and use of a Graphical User Interface (GUI) increases your attack vector and decreases your overall security posture. Removing the package xorg-x11-server-common package will remove the graphical target which might bring your system to an inconsistent state requiring additional configuration to access the system - again. If a GUI is an operational requirement, a tailored profile that removes this rule should used before + again. + The rule xwindows_runlevel_target can be used to configure the system to boot into the multi-user.target. -+ If a GUI is an operational requirement, a tailored profile that removes this rule should used before ++ If a GUI is an operational requirement, a tailored profile that removes this rule should be used before continuing installation. + {{{ ovirt_rule_notapplicable_warning("X11 graphic libraries are dependency of OpenStack Cinderlib storage provider") | indent(4) }}} diff --git a/linux_os/guide/services/xwindows/disabling_xwindows/xwindows_remove_packages/tests/correct_target.pass.sh b/linux_os/guide/services/xwindows/disabling_xwindows/xwindows_remove_packages/tests/correct_target.pass.sh deleted file mode 100644 -index 9bf62a4..0000000 +index 9bf62a42d28..00000000000 --- a/linux_os/guide/services/xwindows/disabling_xwindows/xwindows_remove_packages/tests/correct_target.pass.sh +++ /dev/null @@ -1,5 +0,0 @@ @@ -74,7 +84,7 @@ index 9bf62a4..0000000 -systemctl set-default multi-user.target diff --git a/linux_os/guide/services/xwindows/disabling_xwindows/xwindows_remove_packages/tests/correct_target_under_lib.pass.sh b/linux_os/guide/services/xwindows/disabling_xwindows/xwindows_remove_packages/tests/correct_target_under_lib.pass.sh deleted file mode 100644 -index 4eeb697..0000000 +index 4eeb6971486..00000000000 --- a/linux_os/guide/services/xwindows/disabling_xwindows/xwindows_remove_packages/tests/correct_target_under_lib.pass.sh +++ /dev/null @@ -1,5 +0,0 @@ @@ -85,7 +95,7 @@ index 4eeb697..0000000 -ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target diff --git a/linux_os/guide/services/xwindows/disabling_xwindows/xwindows_remove_packages/tests/packages_installed.fail.sh b/linux_os/guide/services/xwindows/disabling_xwindows/xwindows_remove_packages/tests/packages_installed.fail.sh new file mode 100644 -index 0000000..b3908cf +index 00000000000..b3908cff002 --- /dev/null +++ b/linux_os/guide/services/xwindows/disabling_xwindows/xwindows_remove_packages/tests/packages_installed.fail.sh @@ -0,0 +1,8 @@ @@ -99,7 +109,7 @@ index 0000000..b3908cf +{{% endif %}} diff --git a/linux_os/guide/services/xwindows/disabling_xwindows/xwindows_remove_packages/tests/packages_installed_removed.pass.sh b/linux_os/guide/services/xwindows/disabling_xwindows/xwindows_remove_packages/tests/packages_installed_removed.pass.sh new file mode 100644 -index 0000000..abafdbd +index 00000000000..abafdbd624a --- /dev/null +++ b/linux_os/guide/services/xwindows/disabling_xwindows/xwindows_remove_packages/tests/packages_installed_removed.pass.sh @@ -0,0 +1,16 @@ @@ -121,7 +131,7 @@ index 0000000..abafdbd +{{% endif %}} diff --git a/linux_os/guide/services/xwindows/disabling_xwindows/xwindows_remove_packages/tests/packages_removed.pass.sh b/linux_os/guide/services/xwindows/disabling_xwindows/xwindows_remove_packages/tests/packages_removed.pass.sh new file mode 100644 -index 0000000..a403e10 +index 00000000000..a403e108082 --- /dev/null +++ b/linux_os/guide/services/xwindows/disabling_xwindows/xwindows_remove_packages/tests/packages_removed.pass.sh @@ -0,0 +1,8 @@ @@ -135,7 +145,7 @@ index 0000000..a403e10 +{{% endif %}} diff --git a/linux_os/guide/services/xwindows/disabling_xwindows/xwindows_remove_packages/tests/rhel7_packages_installed_correct_target.fail.sh b/linux_os/guide/services/xwindows/disabling_xwindows/xwindows_remove_packages/tests/rhel7_packages_installed_correct_target.fail.sh deleted file mode 100644 -index ff7d0ef..0000000 +index ff7d0efda29..00000000000 --- a/linux_os/guide/services/xwindows/disabling_xwindows/xwindows_remove_packages/tests/rhel7_packages_installed_correct_target.fail.sh +++ /dev/null @@ -1,4 +0,0 @@ @@ -145,7 +155,7 @@ index ff7d0ef..0000000 - diff --git a/linux_os/guide/services/xwindows/disabling_xwindows/xwindows_remove_packages/tests/rhel7_packages_installed_wrong_target.fail.sh b/linux_os/guide/services/xwindows/disabling_xwindows/xwindows_remove_packages/tests/rhel7_packages_installed_wrong_target.fail.sh deleted file mode 100644 -index d8ecd8c..0000000 +index d8ecd8c7361..00000000000 --- a/linux_os/guide/services/xwindows/disabling_xwindows/xwindows_remove_packages/tests/rhel7_packages_installed_wrong_target.fail.sh +++ /dev/null @@ -1,5 +0,0 @@ @@ -156,7 +166,7 @@ index d8ecd8c..0000000 -systemctl set-default graphical.target diff --git a/linux_os/guide/services/xwindows/disabling_xwindows/xwindows_remove_packages/tests/rhel8_packages_installed_correct_target.fail.sh b/linux_os/guide/services/xwindows/disabling_xwindows/xwindows_remove_packages/tests/rhel8_packages_installed_correct_target.fail.sh deleted file mode 100644 -index 14f1a97..0000000 +index 14f1a97bc4f..00000000000 --- a/linux_os/guide/services/xwindows/disabling_xwindows/xwindows_remove_packages/tests/rhel8_packages_installed_correct_target.fail.sh +++ /dev/null @@ -1,4 +0,0 @@ @@ -166,7 +176,7 @@ index 14f1a97..0000000 - diff --git a/linux_os/guide/services/xwindows/disabling_xwindows/xwindows_remove_packages/tests/rhel8_packages_installed_wrong_target.fail.sh b/linux_os/guide/services/xwindows/disabling_xwindows/xwindows_remove_packages/tests/rhel8_packages_installed_wrong_target.fail.sh deleted file mode 100644 -index c678ef7..0000000 +index c678ef711d9..00000000000 --- a/linux_os/guide/services/xwindows/disabling_xwindows/xwindows_remove_packages/tests/rhel8_packages_installed_wrong_target.fail.sh +++ /dev/null @@ -1,5 +0,0 @@ @@ -177,7 +187,7 @@ index c678ef7..0000000 -systemctl set-default graphical.target diff --git a/linux_os/guide/services/xwindows/disabling_xwindows/xwindows_remove_packages/tests/wrong_target.fail.sh b/linux_os/guide/services/xwindows/disabling_xwindows/xwindows_remove_packages/tests/wrong_target.fail.sh deleted file mode 100644 -index bf8a615..0000000 +index bf8a615b1dc..00000000000 --- a/linux_os/guide/services/xwindows/disabling_xwindows/xwindows_remove_packages/tests/wrong_target.fail.sh +++ /dev/null @@ -1,5 +0,0 @@ @@ -188,7 +198,7 @@ index bf8a615..0000000 -systemctl set-default graphical.target diff --git a/linux_os/guide/services/xwindows/disabling_xwindows/xwindows_remove_packages/tests/wrong_target_under_lib.fail.sh b/linux_os/guide/services/xwindows/disabling_xwindows/xwindows_remove_packages/tests/wrong_target_under_lib.fail.sh deleted file mode 100644 -index 652088b..0000000 +index 652088b85ae..00000000000 --- a/linux_os/guide/services/xwindows/disabling_xwindows/xwindows_remove_packages/tests/wrong_target_under_lib.fail.sh +++ /dev/null @@ -1,5 +0,0 @@ diff --git a/SOURCES/scap-security-guide-0.1.61-update_RHEL_08_STIG-PR_8139.patch b/SOURCES/scap-security-guide-0.1.61-update_RHEL_08_STIG-PR_8139.patch index 5e164f8..ed6e199 100644 --- a/SOURCES/scap-security-guide-0.1.61-update_RHEL_08_STIG-PR_8139.patch +++ b/SOURCES/scap-security-guide-0.1.61-update_RHEL_08_STIG-PR_8139.patch @@ -1,14 +1,30 @@ -commit ed9b2df569f3cbc7fcfaf475a0f18d6108b9a244 -Author: Watson Sato -Date: Fri Feb 25 18:12:54 2022 +0100 - - Manual edited patch scap-security-guide-0.1.61-update_RHEL_08_STIG-PR_8139.patch. - +diff --git a/docs/manual/developer/05_tools_and_utilities.md b/docs/manual/developer/05_tools_and_utilities.md +index 6a37ca35207..b38e3b0f0a5 100644 +--- a/docs/manual/developer/05_tools_and_utilities.md ++++ b/docs/manual/developer/05_tools_and_utilities.md +@@ -64,7 +64,7 @@ options: + + Example + +- $ ./utils/build_stig_control.py -p rhel8 -m shared/references/disa-stig-rhel8-v1r4-xccdf-manual.xml ++ $ ./utils/build_stig_control.py -p rhel8 -m shared/references/disa-stig-rhel8-v1r5-xccdf-manual.xml + + + ## Generating login banner regular expressions diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index 5b2cc0f..a641eee 100644 +index cb72403e81a..d5f0c07cbc5 100644 --- a/products/rhel8/profiles/stig.profile +++ b/products/rhel8/profiles/stig.profile -@@ -11,7 +11,7 @@ title: 'DISA STIG for Red Hat Enterprise Linux 8' +@@ -1,7 +1,7 @@ + documentation_complete: true + + metadata: +- version: V1R4 ++ version: V1R5 + SMEs: + - mab879 + - ggbecker +@@ -12,7 +12,7 @@ title: 'DISA STIG for Red Hat Enterprise Linux 8' description: |- This profile contains configuration checks that align to the @@ -18,10 +34,19 @@ index 5b2cc0f..a641eee 100644 In addition to being applicable to Red Hat Enterprise Linux 8, DISA recognizes this configuration baseline as applicable to the operating system tier of diff --git a/products/rhel8/profiles/stig_gui.profile b/products/rhel8/profiles/stig_gui.profile -index e1f0f71..07ff3cb 100644 +index 1f87acf264a..d1577215b07 100644 --- a/products/rhel8/profiles/stig_gui.profile +++ b/products/rhel8/profiles/stig_gui.profile -@@ -11,7 +11,7 @@ title: 'DISA STIG with GUI for Red Hat Enterprise Linux 8' +@@ -1,7 +1,7 @@ + documentation_complete: true + + metadata: +- version: V1R4 ++ version: V1R5 + SMEs: + - mab879 + - ggbecker +@@ -12,7 +12,7 @@ title: 'DISA STIG with GUI for Red Hat Enterprise Linux 8' description: |- This profile contains configuration checks that align to the @@ -30,11 +55,11566 @@ index e1f0f71..07ff3cb 100644 In addition to being applicable to Red Hat Enterprise Linux 8, DISA recognizes this configuration baseline as applicable to the operating system tier of +diff --git a/shared/references/disa-stig-rhel8-v1r3-xccdf-scap.xml b/shared/references/disa-stig-rhel8-v1r4-xccdf-scap.xml +similarity index 89% +rename from shared/references/disa-stig-rhel8-v1r3-xccdf-scap.xml +rename to shared/references/disa-stig-rhel8-v1r4-xccdf-scap.xml +index 3af966c9a02..24c8f3e51a8 100644 +--- a/shared/references/disa-stig-rhel8-v1r3-xccdf-scap.xml ++++ b/shared/references/disa-stig-rhel8-v1r4-xccdf-scap.xml +@@ -1,36 +1,36 @@ + +- +- ++ ++ + +- ++ + +- ++ + + + + +- ++ + +- ++ + + + + +- +- ++ ++ + + +- ++ + + + Red Hat Enterprise Linux 8 +- oval:mil.disa.stig.rhel8:def:1 ++ oval:mil.disa.stig.rhel8:def:1 + + + +- ++ + +- accepted ++ accepted + Red Hat Enterprise Linux 8 Security Technical Implementation Guide + 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: disa.stig_spt@mail.mil. + +@@ -40,11 +40,11 @@ + DISA + STIG.DOD.MIL + +- Release: 1.3 Benchmark Date: 27 Oct 2021 ++ Release: 1.4 Benchmark Date: 27 Jan 2022 + 3.2.2.36079 + 1.10.0 + +- 001.003 ++ 001.004 + + DISA + DISA +@@ -103,7 +103,6 @@ + + + +- + + + +@@ -157,7 +156,6 @@ + + + +- + + + +@@ -180,13 +178,8 @@ + + + +- +- +- +- + + +- + + + +@@ -206,28 +199,13 @@ + + + +- +- +- +- + +- + + + + +- +- +- +- +- + + +- +- +- +- +- + + + +@@ -355,7 +333,6 @@ + + + +- + + + +@@ -409,7 +386,6 @@ + + + +- + + + +@@ -432,13 +408,8 @@ + + + +- +- +- +- + + +- + + + +@@ -458,28 +429,13 @@ + + + +- +- +- +- + +- + + + + +- +- +- +- +- + + +- +- +- +- +- + + + +@@ -607,7 +563,6 @@ + + + +- + + + +@@ -661,7 +616,6 @@ + + + +- + + + +@@ -684,13 +638,8 @@ + + + +- +- +- +- + + +- + + + +@@ -710,28 +659,13 @@ + + + +- +- +- +- + +- + + + + +- +- +- +- +- + + +- +- +- +- +- + + + +@@ -859,7 +793,6 @@ + + + +- + + + +@@ -913,7 +846,6 @@ + + + +- + + + +@@ -936,13 +868,8 @@ + + + +- +- +- +- + + +- + + + +@@ -962,28 +889,13 @@ + + + +- +- +- +- + +- + + + + +- +- +- +- +- + + +- +- +- +- +- + + + +@@ -1111,7 +1023,6 @@ + + + +- + + + +@@ -1165,7 +1076,6 @@ + + + +- + + + +@@ -1188,13 +1098,8 @@ + + + +- +- +- +- + + +- + + + +@@ -1214,28 +1119,13 @@ + + + +- +- +- +- + +- + + + + +- +- +- +- +- + + +- +- +- +- +- + + + +@@ -1363,7 +1253,6 @@ + + + +- + + + +@@ -1417,7 +1306,6 @@ + + + +- + + + +@@ -1440,13 +1328,8 @@ + + + +- +- +- +- + + +- + + + +@@ -1466,28 +1349,13 @@ + + + +- +- +- +- + +- + + + + +- +- +- +- +- + + +- +- +- +- +- + + + +@@ -1615,7 +1483,6 @@ + + + +- + + + +@@ -1669,7 +1536,6 @@ + + + +- + + + +@@ -1692,13 +1558,8 @@ + + + +- +- +- +- + + +- + + + +@@ -1718,28 +1579,13 @@ + + + +- +- +- +- + +- + + + + +- +- +- +- +- + + +- +- +- +- +- + + + +@@ -1867,7 +1713,6 @@ + + + +- + + + +@@ -1921,7 +1766,6 @@ + + + +- + + + +@@ -1944,13 +1788,8 @@ + + + +- +- +- +- + + +- + + + +@@ -1970,28 +1809,13 @@ + + + +- +- +- +- + +- + + + + +- +- +- +- +- + + +- +- +- +- +- + + + +@@ -2119,7 +1943,6 @@ + + + +- + + + +@@ -2173,7 +1996,6 @@ + + + +- + + + +@@ -2196,13 +2018,8 @@ + + + +- +- +- +- + + +- + + + +@@ -2222,28 +2039,13 @@ + + + +- +- +- +- + +- + + + + +- +- +- +- +- + + +- +- +- +- +- + + + +@@ -2324,9 +2126,9 @@ + This profile only includes rules that are Severity Category I. + + +- ++ + +- ++ + + + +@@ -2338,7 +2140,7 @@ + + + +- ++ + + + +@@ -2363,7 +2165,6 @@ + + + +- + + + +@@ -2390,13 +2191,13 @@ + + + +- ++ + +- ++ + + + +- ++ + + + +@@ -2404,7 +2205,7 @@ + + + +- ++ + + + +@@ -2416,7 +2217,6 @@ + + + +- + + + +@@ -2438,14 +2238,9 @@ + + + +- +- +- +- +- ++ + + +- + + + +@@ -2463,30 +2258,15 @@ + + + +- +- +- +- +- +- ++ ++ + +- + + + +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ + + + +@@ -2510,7 +2290,7 @@ + + + +- ++ + + + +@@ -2553,8 +2333,8 @@ + + + +- +- ++ ++ + + + SRG-OS-000480-GPOS-00227 +@@ -2576,7 +2356,7 @@ Red Hat offers the Extended Update Support (EUS) ad-on to a Red Hat Enterprise L + Upgrade to a supported version of RHEL 8. + + +- ++ + + + +@@ -2612,7 +2392,7 @@ $ sudo fips-mode-setup --enable + Reboot the system for the changes to take effect. + + +- ++ + + + +@@ -2642,7 +2422,7 @@ Edit/Modify the following line in the "/etc/login.defs" file and set "[ENCRYPT_M + ENCRYPT_METHOD SHA512 + + +- ++ + + + +@@ -2666,16 +2446,16 @@ Passwords need to be protected at all times, and encryption is the standard meth + Lock all interactive user accounts not using SHA-512 hashing until the passwords can be regenerated with SHA-512. + + +- ++ + + + + + SRG-OS-000073-GPOS-00041 + <GroupDescription></GroupDescription> +- ++ + RHEL-08-010130 +- The RHEL 8 password-auth file must be configured to use a sufficient number of hashing rounds. ++ The RHEL 8 shadow password suite must be configured to use a sufficient number of hashing rounds. + <VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> +@@ -2687,14 +2467,14 @@ Passwords need to be protected at all times, and encryption is the standard meth + 2921 + + CCI-000196 +- Configure RHEL 8 to encrypt all stored passwords with a strong cryptographic hash. ++ Configure RHEL 8 to encrypt all stored passwords with a strong cryptographic hash. + +-Edit/modify the following line in the "/etc/pam.d/password-auth" file and set "rounds" to a value no lower than "5000": ++Edit/modify the following line in the "/etc/login.defs" file and set "SHA_CRYPT_MIN_ROUNDS" to a value no lower than "5000": + +-password sufficient pam_unix.so sha512 rounds=5000 +- ++SHA_CRYPT_MIN_ROUNDS 5000 ++ + +- ++ + + + +@@ -2722,7 +2502,7 @@ Enter password: + Confirm password: + + +- ++ + + + +@@ -2750,7 +2530,7 @@ Enter password: + Confirm password: + + +- ++ + + + +@@ -2774,14 +2554,14 @@ Confirm password: + ExecStart=-/usr/lib/systemd/systemd-sulogin-shell rescue + + +- ++ + + + + + SRG-OS-000120-GPOS-00061 + <GroupDescription></GroupDescription> +- ++ + RHEL-08-010160 + 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. + <VulnDiscussion>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. +@@ -2797,14 +2577,14 @@ FIPS 140-2 is the current standard for validating that mechanisms used to access + 2921 + + CCI-000803 +- Configure RHEL 8 to use a FIPS 140-2 approved cryptographic hashing algorithm for system authentication. ++ 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 rounds=5000 +- ++password sufficient pam_unix.so sha512 ++ + +- ++ + + + +@@ -2834,7 +2614,7 @@ FIPS 140-2 is the current standard for validating that mechanisms used to access + Remove any files with the .keytab extension from the operating system. + + +- ++ + + + +@@ -2864,7 +2644,7 @@ FIPS 140-2 is the current standard for validating that mechanisms used to access + $ sudo yum remove krb5-workstation + + +- ++ + + + +@@ -2890,7 +2670,7 @@ Policycoreutils contains the policy core utilities that are required for basic o + $ sudo yum install policycoreutils + + +- ++ + + + +@@ -2926,7 +2706,7 @@ In order for the changes to take effect, the SSH daemon must be restarted. + $ sudo systemctl restart sshd.service + + +- ++ + + + +@@ -2952,7 +2732,7 @@ The structure and content of error messages must be carefully considered by the + $ sudo chmod 0640 /var/log/messages + + +- ++ + + + +@@ -2978,7 +2758,7 @@ The structure and content of error messages must be carefully considered by the + $ sudo chown root /var/log/messages + + +- ++ + + + +@@ -3004,7 +2784,7 @@ The structure and content of error messages must be carefully considered by the + $ sudo chgrp root /var/log/messages + + +- ++ + + + +@@ -3030,7 +2810,7 @@ The structure and content of error messages must be carefully considered by the + $ sudo chmod 0755 /var/log + + +- ++ + + + +@@ -3056,7 +2836,7 @@ The structure and content of error messages must be carefully considered by the + $ sudo chown root /var/log + + +- ++ + + + +@@ -3082,7 +2862,7 @@ The structure and content of error messages must be carefully considered by the + $ sudo chgrp root /var/log + + +- ++ + + + +@@ -3112,14 +2892,14 @@ SSH_USE_STRONG_RNG=32 + The SSH service must be restarted for changes to take effect. + + +- ++ + + + + + SRG-OS-000250-GPOS-00093 + <GroupDescription></GroupDescription> +- ++ + RHEL-08-010294 + The RHEL 8 operating system must implement DoD-approved TLS encryption in the OpenSSL package. + <VulnDiscussion>Without cryptographic integrity protections, information can be altered by unauthorized users without detection. +@@ -3139,14 +2919,18 @@ Satisfies: SRG-OS-000250-GPOS-00093, SRG-OS-000393-GPOS-00173, SRG-OS-000394-GPO + 2921 + + CCI-001453 +- 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: ++ 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. +- ++ + +- ++ + + + +@@ -3174,7 +2958,7 @@ Run the following command, replacing "[FILE]" with any system command with a mod + $ sudo chmod 755 [FILE] + + +- ++ + + + +@@ -3202,7 +2986,7 @@ Run the following command, replacing "[FILE]" with any system command file not o + $ sudo chown root [FILE] + + +- ++ + + + +@@ -3230,7 +3014,7 @@ Run the following command, replacing "[FILE]" with any system command file not g + $ sudo chgrp root [FILE] + + +- ++ + + + +@@ -3258,7 +3042,7 @@ Verifying the authenticity of the software prior to installation validates the i + gpgcheck=1 + + +- ++ + + + +@@ -3288,7 +3072,7 @@ Set the "localpkg_gpgcheck" option to "True" in the "/etc/dnf/dnf.conf" file: + localpkg_gpgcheck=True + + +- ++ + + + +@@ -3329,7 +3113,7 @@ Load settings from all system configuration files with the following command: + $ sudo sysctl --system + + +- ++ + + + +@@ -3375,7 +3159,7 @@ Load settings from all system configuration files with the following command: + $ sudo sysctl --system + + +- ++ + + + +@@ -3421,7 +3205,7 @@ Load settings from all system configuration files with the following command: + $ sudo sysctl --system + + +- ++ + + + +@@ -3467,7 +3251,7 @@ Load settings from all system configuration files with the following command: + $ sudo sysctl --system + + +- ++ + + + +@@ -3513,7 +3297,7 @@ Load settings from all system configuration files with the following command: + $ sudo sysctl --system + + +- ++ + + + +@@ -3539,7 +3323,7 @@ Satisfies: SRG-OS-000373-GPOS-00156, SRG-OS-000373-GPOS-00157, SRG-OS-000373-GPO + Remove any occurrence of "NOPASSWD" found in "/etc/sudoers" file or files in the "/etc/sudoers.d" directory. + + +- ++ + + + +@@ -3565,7 +3349,7 @@ Satisfies: SRG-OS-000373-GPOS-00156, SRG-OS-000373-GPOS-00157, SRG-OS-000373-GPO + Remove any occurrence of "!authenticate" found in "/etc/sudoers" file or files in the "/etc/sudoers.d" directory. + + +- ++ + + + +@@ -3597,7 +3381,7 @@ This requirement only applies to components where this is specific to the functi + $ sudo yum install openssl-pkcs11 + + +- ++ + + + +@@ -3623,7 +3407,7 @@ Set the "clean_requirements_on_remove" option to "True" in the "/etc/dnf/dnf.con + clean_requirements_on_remove=True + + +- ++ + + + +@@ -3653,7 +3437,7 @@ SELINUXTYPE=targeted + A reboot is required for the changes to take effect. + + +- ++ + + + +@@ -3677,7 +3461,7 @@ A reboot is required for the changes to take effect. + $ sudo rm /etc/ssh/shosts.equiv + + +- ++ + + + +@@ -3701,7 +3485,7 @@ $ sudo rm /etc/ssh/shosts.equiv + $ sudo rm /[path]/[to]/[file]/.shosts + + +- ++ + + + +@@ -3729,7 +3513,7 @@ The SSH daemon must be restarted for the changes to take effect. To restart the + $ sudo systemctl restart sshd.service + + +- ++ + + + +@@ -3757,7 +3541,7 @@ The SSH daemon must be restarted for the changes to take effect. To restart the + $ sudo systemctl restart sshd.service + + +- ++ + + + +@@ -3785,7 +3569,7 @@ The SSH daemon must be restarted for the changes to take effect. To restart the + $ sudo systemctl restart sshd.service + + +- ++ + + + +@@ -3811,7 +3595,7 @@ Compression no + The SSH service must be restarted for changes to take effect. + + +- ++ + + + +@@ -3841,7 +3625,7 @@ The SSH daemon must be restarted for the changes to take effect. To restart the + $ sudo systemctl restart sshd.service + + +- ++ + + + +@@ -3871,7 +3655,7 @@ The SSH daemon must be restarted for the changes to take effect. To restart the + $ sudo systemctl restart sshd.service + + +- ++ + + + +@@ -3893,7 +3677,7 @@ $ sudo systemctl restart sshd.service + Migrate the "/var" path onto a separate file system. + + +- ++ + + + +@@ -3915,7 +3699,7 @@ $ sudo systemctl restart sshd.service + Migrate the "/var/log" path onto a separate file system. + + +- ++ + + + +@@ -3937,7 +3721,7 @@ $ sudo systemctl restart sshd.service + Migrate the system audit data path onto a separate file system. + + +- ++ + + + +@@ -3959,7 +3743,7 @@ $ sudo systemctl restart sshd.service + Migrate the "/tmp" directory onto a separate file system/partition. + + +- ++ + + + +@@ -3989,35 +3773,7 @@ The SSH daemon must be restarted for the changes to take effect. To restart the + $ sudo systemctl restart sshd.service + + +- +- +- +- +- +- SRG-OS-000480-GPOS-00227 +- <GroupDescription></GroupDescription> +- +- RHEL-08-010560 +- The auditd service must be running in RHEL 8. +- <VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> +- +- DPMS Target Red Hat Enterprise Linux 8 +- DISA +- DPMS Target +- Red Hat Enterprise Linux 8 +- 2921 +- +- CCI-000366 +- Start the auditd service, and enable the auditd service with the following commands: +- +-$ sudo systemctl start auditd.service +- +-$ sudo systemctl enable auditd.service +- +- +- ++ + + + +@@ -4045,7 +3801,7 @@ $ sudo systemctl start rsyslog.service + $ sudo systemctl enable rsyslog.service + + +- ++ + + + +@@ -4067,7 +3823,7 @@ $ sudo systemctl enable rsyslog.service + Configure the "/etc/fstab" to use the "nosuid" option on the /boot directory. + + +- ++ + + + +@@ -4089,7 +3845,7 @@ $ sudo systemctl enable rsyslog.service + Configure the "/etc/fstab" to use the "nodev" option on all non-root local partitions. + + +- ++ + + + +@@ -4111,7 +3867,7 @@ $ sudo systemctl enable rsyslog.service + Configure the "/etc/fstab" to use the "noexec" option on file systems that are being imported via NFS. + + +- ++ + + + +@@ -4133,7 +3889,7 @@ $ sudo systemctl enable rsyslog.service + Configure the "/etc/fstab" to use the "nodev" option on file systems that are being imported via NFS. + + +- ++ + + + +@@ -4155,7 +3911,7 @@ $ sudo systemctl enable rsyslog.service + Configure the "/etc/fstab" to use the "nosuid" option on file systems that are being imported via NFS. + + +- ++ + + + +@@ -4195,7 +3951,7 @@ The system configuration files need to be reloaded for the changes to take effec + $ sudo sysctl --system + + +- ++ + + + +@@ -4223,7 +3979,7 @@ Add the following line to the top of the /etc/security/limits.conf or in a ".con + * hard core 0 + + +- ++ + + + +@@ -4251,7 +4007,7 @@ Add or modify the following line in /etc/systemd/coredump.conf: + Storage=none + + +- ++ + + + +@@ -4279,7 +4035,7 @@ Add or modify the following line in /etc/systemd/coredump.conf: + ProcessSizeMax=0 + + +- ++ + + + +@@ -4303,7 +4059,7 @@ ProcessSizeMax=0 + CREATE_HOME yes + + +- ++ + + + +@@ -4333,7 +4089,7 @@ The SSH daemon must be restarted for the changes to take effect. To restart the + $ sudo systemctl restart sshd.service + + +- ++ + + + +@@ -4371,7 +4127,7 @@ The "sssd" service must be restarted for the changes to take effect. To restart + $ sudo systemctl restart sssd.service + + +- ++ + + + +@@ -4403,7 +4159,7 @@ Add/Modify the "/etc/security/faillock.conf" file to match the following line: + deny = 3 + + +- ++ + + + +@@ -4441,7 +4197,7 @@ The "sssd" service must be restarted for the changes to take effect. To restart + $ sudo systemctl restart sssd.service + + +- ++ + + + +@@ -4473,7 +4229,7 @@ Add/Modify the "/etc/security/faillock.conf" file to match the following line: + fail_interval = 900 + + +- ++ + + + +@@ -4511,7 +4267,7 @@ The "sssd" service must be restarted for the changes to take effect. To restart + $ sudo systemctl restart sssd.service + + +- ++ + + + +@@ -4543,7 +4299,7 @@ Add/Modify the "/etc/security/faillock.conf" file to match the following line: + unlock_time = 0 + + +- ++ + + + +@@ -4581,7 +4337,7 @@ The "sssd" service must be restarted for the changes to take effect. To restart + $ sudo systemctl restart sssd.service + + +- ++ + + + +@@ -4613,7 +4369,7 @@ Add/Modify the "/etc/security/faillock.conf" file to match the following line: + silent + + +- ++ + + + +@@ -4653,7 +4409,7 @@ The "sssd" service must be restarted for the changes to take effect. To restart + $ sudo systemctl restart sssd.service + + +- ++ + + + +@@ -4685,7 +4441,7 @@ Add/Modify the "/etc/security/faillock.conf" file to match the following line: + audit + + +- ++ + + + +@@ -4725,7 +4481,7 @@ The "sssd" service must be restarted for the changes to take effect. To restart + $ sudo systemctl restart sssd.service + + +- ++ + + + +@@ -4757,7 +4513,7 @@ Add/Modify the "/etc/security/faillock.conf" file to match the following line: + even_deny_root + + +- ++ + + + +@@ -4785,7 +4541,7 @@ Add the following line to the top of the /etc/security/limits.conf or in a ".con + * hard maxlogins 10 + + +- ++ + + + +@@ -4817,14 +4573,14 @@ Create a global configuration file "/etc/tmux.conf" and add the following line: + set -g lock-command vlock + + +- ++ + + + + + SRG-OS-000028-GPOS-00009 + <GroupDescription></GroupDescription> +- ++ + RHEL-08-020041 + RHEL 8 must ensure session control is automatically started at shell initialization. + <VulnDiscussion>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. +@@ -4842,14 +4598,18 @@ Satisfies: SRG-OS-000028-GPOS-00009, SRG-OS-000030-GPOS-00011</VulnDiscussion + 2921 + + CCI-000056 +- Configure the operating system to initialize the tmux terminal multiplexer as each shell is called by adding the following line to the end of the "/etc/bashrc" configuration file: ++ 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: + +-[ -n "$PS1" -a -z "$TMUX" ] && exec tmux ++If [ "$PS1" ]; then ++parent=$(ps -o ppid= -p $$) ++name=$(ps -o comm= -p $parent) ++case "$name" in (sshd|login) exec tmux ;; esac ++fi + + This setting will take effect at next logon. +- ++ + +- ++ + + + +@@ -4877,23 +4637,21 @@ Satisfies: SRG-OS-000028-GPOS-00009, SRG-OS-000030-GPOS-00011</VulnDiscussion + 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. + + +- ++ + + + + + SRG-OS-000069-GPOS-00037 + <GroupDescription></GroupDescription> +- ++ + RHEL-08-020100 +- RHEL 8 must ensure a password complexity module is enabled. ++ RHEL 8 must ensure the password complexity module is enabled in the password-auth file. + <VulnDiscussion>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 +- +-Note the value of "retry" set in these configuration files should be between "1" and "3". Manual changes to the listed files may be overwritten by the "authselect" program.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++/etc/pam.d/system-auth</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -4901,15 +4659,15 @@ Note the value of "retry" set in these configuration files should be between "1" + Red Hat Enterprise Linux 8 + 2921 + +- CCI-000192 +- Configure the operating system to use "pwquality" to enforce password complexity rules. ++ CCI-000366 ++ Configure the operating system to use "pwquality" to enforce password complexity rules. + +-Add the following line to both "/etc/pam.d/password-auth" and "/etc/pam.d/system-auth" (or modify the line to have the required value): ++Add the following line to the "/etc/pam.d/password-auth" file (or modify the line to have the required value): + +-password required pam_pwquality.so retry=3 +- ++password required pam_pwquality.so ++ + +- ++ + + + +@@ -4939,7 +4697,7 @@ Add the following line to /etc/security/pwquality.conf (or modify the line to ha + ucredit = -1 + + +- ++ + + + +@@ -4969,7 +4727,7 @@ Add the following line to /etc/security/pwquality.conf (or modify the line to ha + lcredit = -1 + + +- ++ + + + +@@ -4999,14 +4757,14 @@ Add the following line to /etc/security/pwquality.conf (or modify the line to ha + dcredit = -1 + + +- ++ + + + + + SRG-OS-000072-GPOS-00040 + <GroupDescription></GroupDescription> +- ++ + RHEL-08-020140 + RHEL 8 must require the maximum number of repeating characters of the same character class be limited to four when passwords are changed. + <VulnDiscussion>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. +@@ -5029,7 +4787,7 @@ Add the following line to "/etc/security/pwquality.conf" conf (or modify the lin + maxclassrepeat = 4 + + +- ++ + + + +@@ -5059,7 +4817,7 @@ Add the following line to "/etc/security/pwquality.conf conf" (or modify the lin + maxrepeat = 3 + + +- ++ + + + +@@ -5089,7 +4847,7 @@ Add the following line to "/etc/security/pwquality.conf conf" (or modify the lin + minclass = 4 + + +- ++ + + + +@@ -5119,7 +4877,7 @@ Add the following line to "/etc/security/pwquality.conf" (or modify the line to + difok = 8 + + +- ++ + + + +@@ -5143,7 +4901,7 @@ difok = 8 + $ sudo chage -m 1 [user] + + +- ++ + + + +@@ -5169,7 +4927,7 @@ Add the following line in "/etc/login.defs" (or modify the line to have the requ + PASS_MIN_DAYS 1 + + +- ++ + + + +@@ -5195,7 +4953,7 @@ Add, or modify the following line in the "/etc/login.defs" file: + PASS_MAX_DAYS 60 + + +- ++ + + + +@@ -5219,19 +4977,19 @@ PASS_MAX_DAYS 60 + $ sudo chage -M 60 [user] + + +- ++ + + + + + SRG-OS-000077-GPOS-00045 + <GroupDescription></GroupDescription> +- ++ + RHEL-08-020220 +- RHEL 8 passwords must be prohibited from reuse for a minimum of five generations. ++ RHEL 8 must be configured in the password-auth file to prohibit password reuse for a minimum of five generations. + <VulnDiscussion>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 utilizes "pwquality" consecutively as a mechanism to enforce password complexity. This is set in both: ++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. + +@@ -5244,14 +5002,14 @@ Note that manual changes to the listed files may be overwritten by the "authsele + 2921 + + CCI-000200 +- Configure the operating system to prohibit password reuse for a minimum of five generations. ++ 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/system-auth" and "/etc/pam.d/password-auth" (or modify the line to have the required value): ++Add the following line in "/etc/pam.d/password-auth" (or modify the line to have the required value): + + password required pam_pwhistory.so use_authtok remember=5 retry=3 +- ++ + +- ++ + + + +@@ -5285,7 +5043,7 @@ Add the following line to "/etc/security/pwquality.conf" (or modify the line to + minlen = 15 + + +- ++ + + + +@@ -5315,7 +5073,7 @@ Add, or modify the following line in the "/etc/login.defs" file: + PASS_MIN_LEN 15 + + +- ++ + + + +@@ -5345,7 +5103,7 @@ $ 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. + + +- ++ + + + +@@ -5375,7 +5133,7 @@ Add the following line to /etc/security/pwquality.conf (or modify the line to ha + ocredit = -1 + + +- ++ + + + +@@ -5401,7 +5159,7 @@ Add or update the following line in the "/etc/security/pwquality.conf" file or a + dictcheck=1 + + +- ++ + + + +@@ -5429,7 +5187,7 @@ Modify the "/etc/login.defs" file to set the "FAIL_DELAY" parameter to "4" or gr + FAIL_DELAY 4 + + +- ++ + + + +@@ -5457,7 +5215,7 @@ The SSH daemon must be restarted for the changes to take effect. To restart the + $ sudo systemctl restart sshd.service + + +- ++ + + + +@@ -5485,7 +5243,7 @@ PrintLastLog yes + The SSH service must be restarted for changes to "sshd_config" to take effect. + + +- ++ + + + +@@ -5511,7 +5269,7 @@ Add or edit the line for the "UMASK" parameter in "/etc/login.defs" file to "077 + UMASK 077 + + +- ++ + + + +@@ -5545,7 +5303,7 @@ Add or update the following file system rules to "/etc/audit/rules.d/audit.rules + The audit daemon must be restarted for the changes to take effect. + + +- ++ + + + +@@ -5575,7 +5333,7 @@ Edit the following line in "/etc/audit/auditd.conf" to ensure that administrator + action_mail_acct = root + + +- ++ + + + +@@ -5607,37 +5365,7 @@ 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". + + +- +- +- +- +- +- SRG-OS-000047-GPOS-00023 +- <GroupDescription></GroupDescription> +- +- RHEL-08-030050 +- The RHEL 8 System Administrator (SA) and Information System Security Officer (ISSO) (at a minimum) must be alerted when the audit storage volume is full. +- <VulnDiscussion>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.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> +- +- DPMS Target Red Hat Enterprise Linux 8 +- DISA +- DPMS Target +- Red Hat Enterprise Linux 8 +- 2921 +- +- CCI-000140 +- Configure RHEL 8 to notify the System Administrator (SA) and Information System Security Officer (ISSO) when the audit storage volume is full by configuring the "max_log_file_action" parameter in the "/etc/audit/auditd.conf" file with the a value of "syslog" or "keep_logs": +- +-max_log_file_action = syslog +- +- +- ++ + + + +@@ -5671,7 +5399,7 @@ 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". + + +- ++ + + + +@@ -5699,7 +5427,7 @@ Add or update the following line in "/etc/audit/auditd.conf" file: + local_events = yes + + +- ++ + + + +@@ -5731,7 +5459,7 @@ name_format = hostname + The audit daemon must be restarted for changes to take effect. + + +- ++ + + + +@@ -5761,7 +5489,7 @@ log_format = ENRICHED + The audit daemon must be restarted for changes to take effect. + + +- ++ + + + +@@ -5789,7 +5517,7 @@ Satisfies: SRG-OS-000057-GPOS-00027, SRG-OS-000058-GPOS-00028, SRG-OS-000059-GPO + log_group = root + + +- ++ + + + +@@ -5819,7 +5547,7 @@ $ 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". + + +- ++ + + + +@@ -5847,7 +5575,7 @@ Satisfies: SRG-OS-000057-GPOS-00027, SRG-OS-000058-GPOS-00028, SRG-OS-000059-GPO + log_group = root + + +- ++ + + + +@@ -5877,7 +5605,7 @@ $ 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". + + +- ++ + + + +@@ -5907,7 +5635,7 @@ $ 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". + + +- ++ + + + +@@ -5937,7 +5665,7 @@ $ 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". + + +- ++ + + + +@@ -5969,7 +5697,7 @@ Satisfies: SRG-OS-000057-GPOS-00027, SRG-OS-000058-GPOS-00028, SRG-OS-000059-GPO + 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. + + +- ++ + + + +@@ -5999,7 +5727,7 @@ Satisfies: SRG-OS-000057-GPOS-00027, SRG-OS-000058-GPOS-00028, SRG-OS-000059-GPO + --loginuid-immutable + + +- ++ + + + +@@ -6031,7 +5759,7 @@ Add or update the following file system rule to "/etc/audit/rules.d/audit.rules" + The audit daemon must be restarted for the changes to take effect. + + +- ++ + + + +@@ -6063,7 +5791,7 @@ Add or update the following file system rule to "/etc/audit/rules.d/audit.rules" + The audit daemon must be restarted for the changes to take effect. + + +- ++ + + + +@@ -6095,7 +5823,7 @@ Add or update the following file system rule to "/etc/audit/rules.d/audit.rules" + The audit daemon must be restarted for the changes to take effect. + + +- ++ + + + +@@ -6127,7 +5855,7 @@ Add or update the following file system rule to "/etc/audit/rules.d/audit.rules" + The audit daemon must be restarted for the changes to take effect. + + +- ++ + + + +@@ -6159,7 +5887,7 @@ Add or update the following file system rule to "/etc/audit/rules.d/audit.rules" + The audit daemon must be restarted for the changes to take effect. + + +- ++ + + + +@@ -6191,7 +5919,7 @@ Add or update the following file system rule to "/etc/audit/rules.d/audit.rules" + The audit daemon must be restarted for the changes to take effect. + + +- ++ + + + +@@ -6223,7 +5951,7 @@ Add or update the following file system rule to "/etc/audit/rules.d/audit.rules" + The audit daemon must be restarted for the changes to take effect. + + +- ++ + + + +@@ -6255,7 +5983,7 @@ Install the audit service (if the audit service is not already installed) with t + $ sudo yum install audit + + +- ++ + + + +@@ -6287,167 +6015,32 @@ Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPO + The audit daemon must be restarted for the changes to take effect. + + +- ++ + + + + + SRG-OS-000062-GPOS-00031 + <GroupDescription></GroupDescription> +- ++ + RHEL-08-030200 +- The RHEL 8 audit system must be configured to audit any usage of the lremovexattr system call. +- <VulnDiscussion>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). "Lremovexattr" is a system call that removes extended attributes. This is used for removal of extended attributes from symbolic links. +- +-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-000392-GPOS-00172, SRG-OS-000458-GPOS-00203, SRG-OS-000462-GPOS-00206, SRG-OS-000463-GPOS-00207, SRG-OS-000468-GPOS-00212, SRG-OS-000471-GPOS-00215, SRG-OS-000474-GPOS-00219, SRG-OS-000466-GPOS-00210</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> +- +- DPMS Target Red Hat Enterprise Linux 8 +- DISA +- DPMS Target +- Red Hat Enterprise Linux 8 +- 2921 +- +- CCI-000169 +- Configure RHEL 8 to audit the execution of the "lremovexattr" system call, by adding or updating the following lines to "/etc/audit/rules.d/audit.rules": +- +--a always,exit -F arch=b32 -S lremovexattr -F auid>=1000 -F auid!=unset -k perm_mod +--a always,exit -F arch=b64 -S lremovexattr -F auid>=1000 -F auid!=unset -k perm_mod +- +--a always,exit -F arch=b32 -S lremovexattr -F auid=0 -k perm_mod +--a always,exit -F arch=b64 -S lremovexattr -F auid=0 -k perm_mod +- +-The audit daemon must be restarted for the changes to take effect. +- +- +- +- +- +- +- +- SRG-OS-000062-GPOS-00031 +- <GroupDescription></GroupDescription> +- +- RHEL-08-030210 +- The RHEL 8 audit system must be configured to audit any usage of the removexattr system call. ++ The RHEL 8 audit system must be configured to audit any usage of the setxattr, fsetxattr, lsetxattr, removexattr, fremovexattr, and lremovexattr system calls. + <VulnDiscussion>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). "Removexattr" is a system call that removes extended attributes. +- +-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-000392-GPOS-00172, SRG-OS-000458-GPOS-00203, SRG-OS-000462-GPOS-00206, SRG-OS-000463-GPOS-00207, SRG-OS-000468-GPOS-00212, SRG-OS-000471-GPOS-00215, SRG-OS-000474-GPOS-00219, SRG-OS-000466-GPOS-00210</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> +- +- DPMS Target Red Hat Enterprise Linux 8 +- DISA +- DPMS Target +- Red Hat Enterprise Linux 8 +- 2921 +- +- CCI-000169 +- Configure RHEL 8 to audit the execution of the "removexattr" system call, by adding or updating the following lines to "/etc/audit/rules.d/audit.rules": +- +--a always,exit -F arch=b32 -S removexattr -F auid>=1000 -F auid!=unset -k perm_mod +--a always,exit -F arch=b64 -S removexattr -F auid>=1000 -F auid!=unset -k perm_mod +- +--a always,exit -F arch=b32 -S removexattr -F auid=0 -k perm_mod +--a always,exit -F arch=b64 -S removexattr -F auid=0 -k perm_mod +- +-The audit daemon must be restarted for the changes to take effect. +- +- +- +- +- +- +- +- SRG-OS-000062-GPOS-00031 +- <GroupDescription></GroupDescription> +- +- RHEL-08-030220 +- The RHEL 8 audit system must be configured to audit any usage of the lsetxattr system call. +- <VulnDiscussion>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). + +-Audit records can be generated from various components within the information system (e.g., module or policy filter). "Lsetxattr" is a system call used to set an extended attribute value. This is used to set extended attributes on a symbolic link. ++"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 file. ++"Lremovexattr" is a system call that removes extended attributes. This is used for removal of extended attributes from symbolic links. + + 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-000392-GPOS-00172, SRG-OS-000458-GPOS-00203, SRG-OS-000462-GPOS-00206, SRG-OS-000463-GPOS-00207, SRG-OS-000468-GPOS-00212, SRG-OS-000471-GPOS-00215, SRG-OS-000474-GPOS-00219</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> +- +- DPMS Target Red Hat Enterprise Linux 8 +- DISA +- DPMS Target +- Red Hat Enterprise Linux 8 +- 2921 +- +- CCI-000169 +- Configure RHEL 8 to audit the execution of the "lsetxattr" system call, by adding or updating the following lines to "/etc/audit/rules.d/audit.rules": +- +--a always,exit -F arch=b32 -S lsetxattr -F auid>=1000 -F auid!=unset -k perm_mod +--a always,exit -F arch=b64 -S lsetxattr -F auid>=1000 -F auid!=unset -k perm_mod +- +--a always,exit -F arch=b32 -S lsetxattr -F auid=0 -k perm_mod +--a always,exit -F arch=b64 -S lsetxattr -F auid=0 -k perm_mod +- +-The audit daemon must be restarted for the changes to take effect. +- +- +- +- +- +- +- +- SRG-OS-000062-GPOS-00031 +- <GroupDescription></GroupDescription> +- +- RHEL-08-030230 +- The RHEL 8 audit system must be configured to audit any usage of the fsetxattr system call. +- <VulnDiscussion>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). "Fsetxattr" is a system call used to set an extended attribute value. This is used to set extended attributes on a file. +- +-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-000392-GPOS-00172, SRG-OS-000458-GPOS-00203, SRG-OS-000462-GPOS-00206, SRG-OS-000463-GPOS-00207, SRG-OS-000468-GPOS-00212, SRG-OS-000471-GPOS-00215, SRG-OS-000474-GPOS-00219</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> +- +- DPMS Target Red Hat Enterprise Linux 8 +- DISA +- DPMS Target +- Red Hat Enterprise Linux 8 +- 2921 +- +- CCI-000169 +- Configure RHEL 8 to audit the execution of the "fsetxattr" system call, by adding or updating the following lines to "/etc/audit/rules.d/audit.rules": +- +--a always,exit -F arch=b32 -S fsetxattr -F auid>=1000 -F auid!=unset -k perm_mod +--a always,exit -F arch=b64 -S fsetxattr -F auid>=1000 -F auid!=unset -k perm_mod +- +--a always,exit -F arch=b32 -S fsetxattr -F auid=0 -k perm_mod +--a always,exit -F arch=b64 -S fsetxattr -F auid=0 -k perm_mod +- +-The audit daemon must be restarted for the changes to take effect. +- +- +- +- +- +- +- +- SRG-OS-000062-GPOS-00031 +- <GroupDescription></GroupDescription> +- +- RHEL-08-030240 +- The RHEL 8 audit system must be configured to audit any usage of the fremovexattr system call. +- <VulnDiscussion>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). "Fremovexattr" is a system call that removes extended attributes. This is used for removal of extended attributes from a file. +- +-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. ++The system call rules are loaded into a matching engine that intercepts each syscall made by all programs on the system. Therefore, it is very important to use syscall rules only when absolutely necessary since these affect performance. The more rules, the bigger the performance hit. The performance can be helped, however, by combining syscalls into one rule whenever possible. + +-Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000458-GPOS-00203, SRG-OS-000462-GPOS-00206, SRG-OS-000463-GPOS-00207, SRG-OS-000471-GPOS-00215, SRG-OS-000474-GPOS-00219, SRG-OS-000466-GPOS-00210</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000392-GPOS-00172, SRG-OS-000458-GPOS-00203, SRG-OS-000462-GPOS-00206, SRG-OS-000463-GPOS-00207, SRG-OS-000468-GPOS-00212, SRG-OS-000471-GPOS-00215, SRG-OS-000474-GPOS-00219, SRG-OS-000466-GPOS-00210</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -6456,18 +6049,18 @@ Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPO + 2921 + + CCI-000169 +- Configure RHEL 8 to audit the execution of the "fremovexattr" system call by adding or updating the following lines to "/etc/audit/rules.d/audit.rules": ++ Configure RHEL 8 to audit the execution of the "setxattr", "fsetxattr", "lsetxattr", "removexattr", "fremovexattr", and "lremovexattr" system calls by adding or updating the following lines to "/etc/audit/rules.d/audit.rules": + +--a always,exit -F arch=b32 -S fremovexattr -F auid>=1000 -F auid!=unset -k perm_mod +--a always,exit -F arch=b64 -S fremovexattr -F auid>=1000 -F auid!=unset -k perm_mod ++-a always,exit -F arch=b32 -S setxattr,fsetxattr,lsetxattr,removexattr,fremovexattr,lremovexattr -F auid>=1000 -F auid!=unset -k perm_mod ++-a always,exit -F arch=b64 -S setxattr,fsetxattr,lsetxattr,removexattr,fremovexattr,lremovexattr -F auid>=1000 -F auid!=unset -k perm_mod + +--a always,exit -F arch=b32 -S fremovexattr -F auid=0 -k perm_mod +--a always,exit -F arch=b64 -S fremovexattr -F auid=0 -k perm_mod ++-a always,exit -F arch=b32 -S setxattr,fsetxattr,lsetxattr,removexattr,fremovexattr,lremovexattr -F auid=0 -k perm_mod ++-a always,exit -F arch=b64 -S setxattr,fsetxattr,lsetxattr,removexattr,fremovexattr,lremovexattr -F auid=0 -k perm_mod + + The audit daemon must be restarted for the changes to take effect. +- ++ + +- ++ + + + +@@ -6499,7 +6092,7 @@ Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPO + The audit daemon must be restarted for the changes to take effect. + + +- ++ + + + +@@ -6531,43 +6124,7 @@ Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPO + The audit daemon must be restarted for the changes to take effect. + + +- +- +- +- +- +- SRG-OS-000062-GPOS-00031 +- <GroupDescription></GroupDescription> +- +- RHEL-08-030270 +- The RHEL 8 audit system must be configured to audit any usage of the setxattr system call. +- <VulnDiscussion>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. +- +-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-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> +- +- DPMS Target Red Hat Enterprise Linux 8 +- DISA +- DPMS Target +- Red Hat Enterprise Linux 8 +- 2921 +- +- CCI-000169 +- Configure RHEL 8 to audit the execution of the "setxattr" system call, by adding or updating the following lines to "/etc/audit/rules.d/audit.rules": +- +--a always,exit -F arch=b32 -S setxattr -F auid>=1000 -F auid!=unset -k perm_mod +--a always,exit -F arch=b64 -S setxattr -F auid>=1000 -F auid!=unset -k perm_mod +- +--a always,exit -F arch=b32 -S setxattr -F auid=0 -k perm_mod +--a always,exit -F arch=b64 -S setxattr -F auid=0 -k perm_mod +- +-The audit daemon must be restarted for the changes to take effect. +- +- +- ++ + + + +@@ -6599,7 +6156,7 @@ Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPO + The audit daemon must be restarted for the changes to take effect. + + +- ++ + + + +@@ -6631,7 +6188,7 @@ Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPO + The audit daemon must be restarted for the changes to take effect. + + +- ++ + + + +@@ -6663,7 +6220,7 @@ Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPO + The audit daemon must be restarted for the changes to take effect. + + +- ++ + + + +@@ -6695,7 +6252,7 @@ Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPO + The audit daemon must be restarted for the changes to take effect. + + +- ++ + + + +@@ -6728,7 +6285,7 @@ Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPO + The audit daemon must be restarted for the changes to take effect. + + +- ++ + + + +@@ -6760,7 +6317,7 @@ Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPO + The audit daemon must be restarted for the changes to take effect. + + +- ++ + + + +@@ -6792,7 +6349,7 @@ Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPO + The audit daemon must be restarted for the changes to take effect. + + +- ++ + + + +@@ -6824,7 +6381,7 @@ Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPO + The audit daemon must be restarted for the changes to take effect. + + +- ++ + + + +@@ -6856,7 +6413,7 @@ Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPO + The audit daemon must be restarted for the changes to take effect. + + +- ++ + + + +@@ -6888,7 +6445,7 @@ Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPO + The audit daemon must be restarted for the changes to take effect. + + +- ++ + + + +@@ -6920,7 +6477,7 @@ Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPO + The audit daemon must be restarted for the changes to take effect. + + +- ++ + + + +@@ -6952,7 +6509,7 @@ Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPO + The audit daemon must be restarted for the changes to take effect. + + +- ++ + + + +@@ -6984,7 +6541,7 @@ Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPO + The audit daemon must be restarted for the changes to take effect. + + +- ++ + + + +@@ -7016,7 +6573,7 @@ Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPO + The audit daemon must be restarted for the changes to take effect. + + +- ++ + + + +@@ -7048,7 +6605,7 @@ Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPO + The audit daemon must be restarted for the changes to take effect. + + +- ++ + + + +@@ -7080,7 +6637,7 @@ Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPO + The audit daemon must be restarted for the changes to take effect. + + +- ++ + + + +@@ -7112,23 +6669,25 @@ Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPO + The audit daemon must be restarted for the changes to take effect. + + +- ++ + + + + + SRG-OS-000062-GPOS-00031 + <GroupDescription></GroupDescription> +- ++ + RHEL-08-030360 +- Successful/unsuccessful uses of the init_module command in RHEL 8 must generate an audit record. ++ Successful/unsuccessful uses of the init_module and finit_module system calls in RHEL 8 must generate an audit record. + <VulnDiscussion>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 "init_module" command is used to load a kernel module. ++Audit records can be generated from various components within the information system (e.g., module or policy filter). The "init_module" and "finit_module" system calls are used to load a kernel module. + + 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-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++The system call rules are loaded into a matching engine that intercepts each syscall made by all programs on the system. Therefore, it is very important to use syscall rules only when absolutely necessary since these affect performance. The more rules, the bigger the performance hit. The performance can be helped, however, by combining syscalls into one rule whenever possible. ++ ++Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -7137,31 +6696,38 @@ Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPO + 2921 + + CCI-000169 +- Configure the audit system to generate an audit event for any successful/unsuccessful use of the "init_module" command by adding or updating the following rules in the "/etc/audit/rules.d/audit.rules" file: ++ Configure the audit system to generate an audit event for any successful/unsuccessful use of the "init_module" and "finit_module" system calls by adding or updating the following rules in the "/etc/audit/rules.d/audit.rules" file: + +--a always,exit -F arch=b32 -S init_module -F auid>=1000 -F auid!=unset -k module_chng +--a always,exit -F arch=b64 -S init_module -F auid>=1000 -F auid!=unset -k module_chng ++-a always,exit -F arch=b32 -S init_module,finit_module -F auid>=1000 -F auid!=unset -k module_chng ++-a always,exit -F arch=b64 -S init_module,finit_module -F auid>=1000 -F auid!=unset -k module_chng + + The audit daemon must be restarted for the changes to take effect. +- ++ + +- ++ + + + + + SRG-OS-000062-GPOS-00031 + <GroupDescription></GroupDescription> +- ++ + RHEL-08-030361 +- Successful/unsuccessful uses of the rename command in RHEL 8 must generate an audit record. ++ Successful/unsuccessful uses of the rename, unlink, rmdir, renameat, and unlinkat system calls in RHEL 8 must generate an audit record. + <VulnDiscussion>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 "rename" command will rename the specified files by replacing the first occurrence of expression in their name by replacement. ++Audit records can be generated from various components within the information system (e.g., module or policy filter). The "rename" system call will rename the specified files by replacing the first occurrence of expression in their name by replacement. ++ ++The "unlink" system call deletes a name from the filesystem. If that name was the last link to a file and no processes have the file open, the file is deleted and the space it was using is made available for reuse. ++The "rmdir" system call removes empty directories. ++The "renameat" system call renames a file, moving it between directories if required. ++The "unlinkat" system call operates in exactly the same way as either "unlink" or "rmdir" except for the differences described in the manual page. + + 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-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++The system call rules are loaded into a matching engine that intercepts each syscall made by all programs on the system. Therefore, it is very important to use syscall rules only when absolutely necessary since these affect performance. The more rules, the bigger the performance hit. Performance can be helped, however, by combining syscalls into one rule whenever possible. ++ ++Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -7170,27 +6736,27 @@ Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPO + 2921 + + CCI-000169 +- Configure the audit system to generate an audit event for any successful/unsuccessful use of the "rename" command by adding or updating the following rules in the "/etc/audit/rules.d/audit.rules" file: ++ Configure the audit system to generate an audit event for any successful/unsuccessful use of the "rename", "unlink", "rmdir", "renameat", and "unlinkat" system calls by adding or updating the following rules in the "/etc/audit/rules.d/audit.rules" file: + +--a always,exit -F arch=b32 -S rename -F auid>=1000 -F auid!=unset -k delete +--a always,exit -F arch=b64 -S rename -F auid>=1000 -F auid!=unset -k delete ++-a always,exit -F arch=b32 -S rename,unlink,rmdir,renameat,unlinkat -F auid>=1000 -F auid!=unset -k delete ++-a always,exit -F arch=b64 -S rename,unlink,rmdir,renameat,unlinkat -F auid>=1000 -F auid!=unset -k delete + + The audit daemon must be restarted for the changes to take effect. +- ++ + +- ++ + + + +- ++ + SRG-OS-000062-GPOS-00031 + <GroupDescription></GroupDescription> +- +- RHEL-08-030362 +- Successful/unsuccessful uses of the renameat command in RHEL 8 must generate an audit record. ++ ++ RHEL-08-030370 ++ Successful/unsuccessful uses of the gpasswd command in RHEL 8 must generate an audit record. + <VulnDiscussion>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 "renameat" command renames a file, moving it between directories if required. ++Audit records can be generated from various components within the information system (e.g., module or policy filter). The "gpasswd" command is used to administer /etc/group and /etc/gshadow. Every group can have administrators, members and a password. + + 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. + +@@ -7203,27 +6769,26 @@ Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPO + 2921 + + CCI-000169 +- Configure the audit system to generate an audit event for any successful/unsuccessful use of the "renameat" command by adding or updating the following rules in the "/etc/audit/rules.d/audit.rules" file: ++ Configure the audit system to generate an audit event for any successful/unsuccessful uses of the "gpasswd" command by adding or updating the following rule in the "/etc/audit/rules.d/audit.rules" file: + +--a always,exit -F arch=b32 -S renameat -F auid>=1000 -F auid!=unset -k delete +--a always,exit -F arch=b64 -S renameat -F auid>=1000 -F auid!=unset -k delete ++-a always,exit -F path=/usr/bin/gpasswd -F perm=x -F auid>=1000 -F auid!=unset -k privileged-gpasswd + + The audit daemon must be restarted for the changes to take effect. +- ++ + +- ++ + + + +- ++ + SRG-OS-000062-GPOS-00031 + <GroupDescription></GroupDescription> +- +- RHEL-08-030363 +- Successful/unsuccessful uses of the rmdir command in RHEL 8 must generate an audit record. ++ ++ RHEL-08-030390 ++ Successful/unsuccessful uses of the delete_module command in RHEL 8 must generate an audit record. + <VulnDiscussion>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 "rmdir" command removes empty directories. ++Audit records can be generated from various components within the information system (e.g., module or policy filter). The "delete_module" command is used to unload a kernel module. + + 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. + +@@ -7236,27 +6801,27 @@ Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPO + 2921 + + CCI-000169 +- Configure the audit system to generate an audit event for any successful/unsuccessful use of the "rmdir" command by adding or updating the following rules in the "/etc/audit/rules.d/audit.rules" file: ++ Configure the audit system to generate an audit event for any successful/unsuccessful use of the "delete_module" command by adding or updating the following rules in the "/etc/audit/rules.d/audit.rules" file: + +--a always,exit -F arch=b32 -S rmdir -F auid>=1000 -F auid!=unset -k delete +--a always,exit -F arch=b64 -S rmdir -F auid>=1000 -F auid!=unset -k delete ++-a always,exit -F arch=b32 -S delete_module -F auid>=1000 -F auid!=unset -k module_chng ++-a always,exit -F arch=b64 -S delete_module -F auid>=1000 -F auid!=unset -k module_chng + + The audit daemon must be restarted for the changes to take effect. +- ++ + +- ++ + + + +- ++ + SRG-OS-000062-GPOS-00031 + <GroupDescription></GroupDescription> +- +- RHEL-08-030364 +- Successful/unsuccessful uses of the unlink command in RHEL 8 must generate an audit record. ++ ++ RHEL-08-030400 ++ Successful/unsuccessful uses of the crontab command in RHEL 8 must generate an audit record. + <VulnDiscussion>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 "unlink" command deletes a name from the filesystem. If that name was the last link to a file and no processes have the file open, the file is deleted and the space it was using is made available for reuse. ++Audit records can be generated from various components within the information system (e.g., module or policy filter). The "crontab" command is used to maintain crontab files for individual users. Crontab is the program used to install, remove, or list the tables used to drive the cron daemon. This is similar to the task scheduler used in other operating systems. + + 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. + +@@ -7269,27 +6834,26 @@ Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPO + 2921 + + CCI-000169 +- Configure the audit system to generate an audit event for any successful/unsuccessful use of the "unlink" command by adding or updating the following rules in the "/etc/audit/rules.d/audit.rules" file: ++ Configure the audit system to generate an audit event for any successful/unsuccessful uses of the "crontab" command by adding or updating the following rule in the "/etc/audit/rules.d/audit.rules" file: + +--a always,exit -F arch=b32 -S unlink -F auid>=1000 -F auid!=unset -k delete +--a always,exit -F arch=b64 -S unlink -F auid>=1000 -F auid!=unset -k delete ++-a always,exit -F path=/usr/bin/crontab -F perm=x -F auid>=1000 -F auid!=unset -k privileged-crontab + + The audit daemon must be restarted for the changes to take effect. +- ++ + +- ++ + + + +- ++ + SRG-OS-000062-GPOS-00031 + <GroupDescription></GroupDescription> +- +- RHEL-08-030365 +- Successful/unsuccessful uses of the unlinkat command in RHEL 8 must generate an audit record. ++ ++ RHEL-08-030410 ++ Successful/unsuccessful uses of the chsh command in RHEL 8 must generate an audit record. + <VulnDiscussion>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 "unlinkat" system call operates in exactly the same way as either "unlink" or "rmdir" except for the differences described in the manual page. ++Audit records can be generated from various components within the information system (e.g., module or policy filter). The "chsh" command is used to change the login shell. + + 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. + +@@ -7302,31 +6866,37 @@ Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPO + 2921 + + CCI-000169 +- Configure the audit system to generate an audit event for any successful/unsuccessful use of the "unlinkat" command by adding or updating the following rules in the "/etc/audit/rules.d/audit.rules" file: ++ Configure the audit system to generate an audit event for any successful/unsuccessful use of the "chsh" command by adding or updating the following rule in the "/etc/audit/rules.d/audit.rules" file: + +--a always,exit -F arch=b32 -S unlinkat -F auid>=1000 -F auid!=unset -k delete +--a always,exit -F arch=b64 -S unlinkat -F auid>=1000 -F auid!=unset -k delete ++-a always,exit -F path=/usr/bin/chsh -F perm=x -F auid>=1000 -F auid!=unset -k priv_cmd + + The audit daemon must be restarted for the changes to take effect. +- ++ + +- ++ + + + +- ++ + SRG-OS-000062-GPOS-00031 + <GroupDescription></GroupDescription> +- +- RHEL-08-030370 +- Successful/unsuccessful uses of the gpasswd command in RHEL 8 must generate an audit record. ++ ++ RHEL-08-030420 ++ Successful/unsuccessful uses of the truncate, ftruncate, creat, open, openat, and open_by_handle_at system calls in RHEL 8 must generate an audit record. + <VulnDiscussion>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 "gpasswd" command is used to administer /etc/group and /etc/gshadow. Every group can have administrators, members and a password. ++Audit records can be generated from various components within the information system (e.g., module or policy filter). The "truncate" and "ftruncate" functions are used to truncate a file to a specified length. ++ ++The "creat" system call is used to open and possibly create a file or device. ++The "open" system call opens a file specified by a pathname. If the specified file does not exist, it may optionally be created by "open". ++The "openat" system call opens a file specified by a relative pathname. ++The "name_to_handle_at" and "open_by_handle_at" system calls split the functionality of "openat" into two parts: "name_to_handle_at" returns an opaque handle that corresponds to a specified file; "open_by_handle_at" opens the file corresponding to a handle returned by a previous call to "name_to_handle_at" and returns an open file descriptor. + + 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-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++The system call rules are loaded into a matching engine that intercepts each syscall made by all programs on the system. Therefore, it is very important to use syscall rules only when absolutely necessary since these affect performance. The more rules, the bigger the performance hit. The performance can be helped, however, by combining syscalls into one rule whenever possible. ++ ++Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215, SRG-OS-000064-GPOS-00033</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -7335,30 +6905,40 @@ Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPO + 2921 + + CCI-000169 +- Configure the audit system to generate an audit event for any successful/unsuccessful uses of the "gpasswd" command by adding or updating the following rule in the "/etc/audit/rules.d/audit.rules" file: ++ Configure the audit system to generate an audit event for any successful/unsuccessful use of the "truncate", "ftruncate", "creat", "open", "openat", and "open_by_handle_at" system calls by adding or updating the following rules in the "/etc/audit/rules.d/audit.rules" file: + +--a always,exit -F path=/usr/bin/gpasswd -F perm=x -F auid>=1000 -F auid!=unset -k privileged-gpasswd ++-a always,exit -F arch=b32 -S truncate,ftruncate,creat,open,openat,open_by_handle_at -F exit=-EPERM -F auid>=1000 -F auid!=unset -k perm_access ++-a always,exit -F arch=b64 -S truncate,ftruncate,creat,open,openat,open_by_handle_at -F exit=-EPERM -F auid>=1000 -F auid!=unset -k perm_access ++ ++-a always,exit -F arch=b32 -S truncate,ftruncate,creat,open,openat,open_by_handle_at -F exit=-EACCES -F auid>=1000 -F auid!=unset -k perm_access ++-a always,exit -F arch=b64 -S truncate,ftruncate,creat,open,openat,open_by_handle_at -F exit=-EACCES -F auid>=1000 -F auid!=unset -k perm_access + + The audit daemon must be restarted for the changes to take effect. +- ++ + +- ++ + + + +- ++ + SRG-OS-000062-GPOS-00031 + <GroupDescription></GroupDescription> +- +- RHEL-08-030380 +- Successful/unsuccessful uses of the finit_module command in RHEL 8 must generate an audit record. ++ ++ RHEL-08-030480 ++ Successful/unsuccessful uses of the chown, fchown, fchownat, and lchown system calls in RHEL 8 must generate an audit record. + <VulnDiscussion>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 "finit_module" command is used to load a kernel module. ++Audit records can be generated from various components within the information system (e.g., module or policy filter). The "chown" command is used to change file owner and group. ++ ++The "fchown" system call is used to change the ownership of a file referred to by the open file descriptor. ++The "fchownat" system call is used to change ownership of a file relative to a directory file descriptor. ++The "lchown" system call is used to change the ownership of the file specified by a path, which does not dereference symbolic links. + + 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-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++The system call rules are loaded into a matching engine that intercepts each syscall made by all programs on the system. Therefore, it is very important to use syscall rules only when absolutely necessary since these affect performance. The more rules, the bigger the performance hit. The performance can be helped, however, by combining syscalls into one rule whenever possible. ++ ++Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215, SRG-OS-000064-GPOS-00033, SRG-OS-000466-GPOS-00210</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -7367,31 +6947,36 @@ Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPO + 2921 + + CCI-000169 +- Configure the audit system to generate an audit event for any successful/unsuccessful use of the "finit_module" command by adding or updating the following rules in the "/etc/audit/rules.d/audit.rules" file: ++ Configure the audit system to generate an audit event for any successful/unsuccessful use of the "chown", "fchown", "fchownat", and "lchown" system calls by adding or updating the following line to "/etc/audit/rules.d/audit.rules": + +--a always,exit -F arch=b32 -S finit_module -F auid>=1000 -F auid!=unset -k module_chng +--a always,exit -F arch=b64 -S finit_module -F auid>=1000 -F auid!=unset -k module_chng ++-a always,exit -F arch=b32 -S chown,fchown,fchownat,lchown -F auid>=1000 -F auid!=unset -k perm_mod ++-a always,exit -F arch=b64 -S chown,fchown,fchownat,lchown -F auid>=1000 -F auid!=unset -k perm_mod + + The audit daemon must be restarted for the changes to take effect. +- ++ + +- ++ + + + +- ++ + SRG-OS-000062-GPOS-00031 + <GroupDescription></GroupDescription> +- +- RHEL-08-030390 +- Successful/unsuccessful uses of the delete_module command in RHEL 8 must generate an audit record. ++ ++ RHEL-08-030490 ++ Successful/unsuccessful uses of the chmod, fchmod, and fchmodat system calls in RHEL 8 must generate an audit record. + <VulnDiscussion>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 "delete_module" command is used to unload a kernel module. ++Audit records can be generated from various components within the information system (e.g., module or policy filter). The "chmod" system call changes the file mode bits of each given file according to mode, which can be either a symbolic representation of changes to make, or an octal number representing the bit pattern for the new mode bits. ++ ++The "fchmod" system call is used to change permissions of a file. ++The "fchmodat" system call is used to change permissions of a file relative to a directory file descriptor. + + 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-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++The system call rules are loaded into a matching engine that intercepts each syscall made by all programs on the system. Therefore, it is very important to use syscall rules only when absolutely necessary since these affect performance. The more rules, the bigger the performance hit. Performance can be helped, however, by combining syscalls into one rule whenever possible. ++ ++Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215, SRG-OS-000064-GPOS-00033, SRG-OS-000466-GPOS-00210</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -7400,31 +6985,31 @@ Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPO + 2921 + + CCI-000169 +- Configure the audit system to generate an audit event for any successful/unsuccessful use of the "delete_module" command by adding or updating the following rules in the "/etc/audit/rules.d/audit.rules" file: ++ Configure the audit system to generate an audit event for any successful/unsuccessful use of the "chmod", "fchmod", and "fchmodat" syscalls by adding or updating the following line to "/etc/audit/rules.d/audit.rules": + +--a always,exit -F arch=b32 -S delete_module -F auid>=1000 -F auid!=unset -k module_chng +--a always,exit -F arch=b64 -S delete_module -F auid>=1000 -F auid!=unset -k module_chng ++-a always,exit -F arch=b32 -S chmod,fchmod,fchmodat -F auid>=1000 -F auid!=unset -k perm_mod ++-a always,exit -F arch=b64 -S chmod,fchmod,fchmodat -F auid>=1000 -F auid!=unset -k perm_mod + + The audit daemon must be restarted for the changes to take effect. +- ++ + +- ++ + + + +- ++ + SRG-OS-000062-GPOS-00031 + <GroupDescription></GroupDescription> +- +- RHEL-08-030400 +- Successful/unsuccessful uses of the crontab command in RHEL 8 must generate an audit record. ++ ++ RHEL-08-030550 ++ Successful/unsuccessful uses of the sudo command in RHEL 8 must generate an audit record. + <VulnDiscussion>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 "crontab" command is used to maintain crontab files for individual users. Crontab is the program used to install, remove, or list the tables used to drive the cron daemon. This is similar to the task scheduler used in other operating systems. ++Audit records can be generated from various components within the information system (e.g., module or policy filter). The "sudo" command allows a permitted user to execute a command as the superuser or another user, as specified by the security policy. + + 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-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215, SRG-OS-000466-GPOS-00210</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -7433,30 +7018,30 @@ Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPO + 2921 + + CCI-000169 +- Configure the audit system to generate an audit event for any successful/unsuccessful uses of the "crontab" command by adding or updating the following rule in the "/etc/audit/rules.d/audit.rules" file: ++ Configure the audit system to generate an audit event for any successful/unsuccessful use of the "sudo" command by adding or updating the following rule in the "/etc/audit/rules.d/audit.rules" file: + +--a always,exit -F path=/usr/bin/crontab -F perm=x -F auid>=1000 -F auid!=unset -k privileged-crontab ++-a always,exit -F path=/usr/bin/sudo -F perm=x -F auid>=1000 -F auid!=unset -k priv_cmd + + The audit daemon must be restarted for the changes to take effect. +- ++ + +- ++ + + + +- ++ + SRG-OS-000062-GPOS-00031 + <GroupDescription></GroupDescription> +- +- RHEL-08-030410 +- Successful/unsuccessful uses of the chsh command in RHEL 8 must generate an audit record. ++ ++ RHEL-08-030560 ++ Successful/unsuccessful uses of the usermod command in RHEL 8 must generate an audit record. + <VulnDiscussion>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 "chsh" command is used to change the login shell. ++Audit records can be generated from various components within the information system (e.g., module or policy filter). The "usermod" command modifies the system account files to reflect the changes that are specified on the command line. + + 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-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215, SRG-OS-000466-GPOS-00210</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -7465,30 +7050,30 @@ Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPO + 2921 + + CCI-000169 +- Configure the audit system to generate an audit event for any successful/unsuccessful use of the "chsh" command by adding or updating the following rule in the "/etc/audit/rules.d/audit.rules" file: ++ Configure the audit system to generate an audit event for any successful/unsuccessful uses of the "usermod" command by adding or updating the following rule in the "/etc/audit/rules.d/audit.rules" file: + +--a always,exit -F path=/usr/bin/chsh -F perm=x -F auid>=1000 -F auid!=unset -k priv_cmd ++-a always,exit -F path=/usr/sbin/usermod -F perm=x -F auid>=1000 -F auid!=unset -k privileged-usermod + + The audit daemon must be restarted for the changes to take effect. +- ++ + +- ++ + + + +- ++ + SRG-OS-000062-GPOS-00031 + <GroupDescription></GroupDescription> +- +- RHEL-08-030420 +- Successful/unsuccessful uses of the truncate command in RHEL 8 must generate an audit record. ++ ++ RHEL-08-030570 ++ Successful/unsuccessful uses of the chacl command in RHEL 8 must generate an audit record. + <VulnDiscussion>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 "truncate" and "ftruncate" functions are used to truncate a file to a specified length. ++Audit records can be generated from various components within the information system (e.g., module or policy filter). The "chacl" command is used to change the access control list of a file or directory. + + 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-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215, SRG-OS-000064-GPOS-00033</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215, SRG-OS-000466-GPOS-00210</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -7497,34 +7082,40 @@ Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPO + 2921 + + CCI-000169 +- Configure the audit system to generate an audit event for any successful/unsuccessful use of the "truncate" command by adding or updating the following rules in the "/etc/audit/rules.d/audit.rules" file: +- +--a always,exit -F arch=b32 -S truncate -F exit=-EPERM -F auid>=1000 -F auid!=unset -k perm_access +--a always,exit -F arch=b64 -S truncate -F exit=-EPERM -F auid>=1000 -F auid!=unset -k perm_access ++ Configure the audit system to generate an audit event for any successful/unsuccessful use of the "chacl" command by adding or updating the following rule in the "/etc/audit/rules.d/audit.rules" file: + +--a always,exit -F arch=b32 -S truncate -F exit=-EACCES -F auid>=1000 -F auid!=unset -k perm_access +--a always,exit -F arch=b64 -S truncate -F exit=-EACCES -F auid>=1000 -F auid!=unset -k perm_access ++-a always,exit -F path=/usr/bin/chacl -F perm=x -F auid>=1000 -F auid!=unset -k perm_mod + + The audit daemon must be restarted for the changes to take effect. +- ++ + +- ++ + + + +- ++ + SRG-OS-000062-GPOS-00031 + <GroupDescription></GroupDescription> +- +- RHEL-08-030430 +- Successful/unsuccessful uses of the openat system call in RHEL 8 must generate an audit record. +- <VulnDiscussion>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. ++ ++ RHEL-08-030580 ++ Successful/unsuccessful uses of the kmod command in RHEL 8 must generate an audit record. ++ <VulnDiscussion>Without the capability to generate audit records, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one. + +-Audit records can be generated from various components within the information system (e.g., module or policy filter). The "openat" system call opens a file specified by a relative pathname. ++Audit records can be generated from various components within the information system (e.g., module or policy filter). The "kmod" command is used to control Linux Kernel modules. + +-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. ++The list of audited events is the set of events for which audits are to be generated. This set of events is typically a subset of the list of all events for which the system is capable of generating audit records. + +-Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215, SRG-OS-000064-GPOS-00033</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++DoD has defined the list of events for which RHEL 8 will provide an audit record generation capability as the following: ++ ++1) Successful and unsuccessful attempts to access, modify, or delete privileges, security objects, security levels, or categories of information (e.g., classification levels); ++ ++2) Access actions, such as successful and unsuccessful logon attempts, privileged activities or other system-level access, starting and ending time for user access to the system, concurrent logons from different workstations, successful and unsuccessful accesses to objects, all program initiations, and all direct access to the information system; ++ ++3) All account creations, modifications, disabling, and terminations; and ++ ++4) All kernel module load, unload, and restart actions. ++ ++Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215, SRG-OS-000471-GPOS-00216, SRG-OS-000477-GPOS-00222</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -7533,34 +7124,40 @@ Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPO + 2921 + + CCI-000169 +- Configure the audit system to generate an audit event for any successful/unsuccessful use of the "openat" command by adding or updating the following rules in the "/etc/audit/rules.d/audit.rules" file: +- +--a always,exit -F arch=b32 -S openat -F exit=-EPERM -F auid>=1000 -F auid!=unset -k perm_access +--a always,exit -F arch=b64 -S openat -F exit=-EPERM -F auid>=1000 -F auid!=unset -k perm_access ++ Configure RHEL 8 to audit the execution of the module management program "kmod" by adding or updating the following line to "/etc/audit/rules.d/audit.rules": + +--a always,exit -F arch=b32 -S openat -F exit=-EACCES -F auid>=1000 -F auid!=unset -k perm_access +--a always,exit -F arch=b64 -S openat -F exit=-EACCES -F auid>=1000 -F auid!=unset -k perm_access ++-a always,exit -F path=/usr/bin/kmod -F perm=x -F auid>=1000 -F auid!=unset -k modules + + The audit daemon must be restarted for the changes to take effect. +- ++ + +- ++ + + + +- ++ + SRG-OS-000062-GPOS-00031 + <GroupDescription></GroupDescription> +- +- RHEL-08-030440 +- Successful/unsuccessful uses of the open system call in RHEL 8 must generate an audit record. +- <VulnDiscussion>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. ++ ++ RHEL-08-030600 ++ Successful/unsuccessful modifications to the lastlog file in RHEL 8 must generate an audit record. ++ <VulnDiscussion>Without the capability to generate audit records, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one. + +-Audit records can be generated from various components within the information system (e.g., module or policy filter). The "open system" call opens a file specified by a pathname. If the specified file does not exist, it may optionally be created by "open". ++Audit records can be generated from various components within the information system (e.g., module or policy filter). + +-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. ++The list of audited events is the set of events for which audits are to be generated. This set of events is typically a subset of the list of all events for which the system is capable of generating audit records. ++ ++DoD has defined the list of events for which RHEL 8 will provide an audit record generation capability as the following: ++ ++1) Successful and unsuccessful attempts to access, modify, or delete privileges, security objects, security levels, or categories of information (e.g., classification levels); ++ ++2) Access actions, such as successful and unsuccessful logon attempts, privileged activities or other system-level access, starting and ending time for user access to the system, concurrent logons from different workstations, successful and unsuccessful accesses to objects, all program initiations, and all direct access to the information system; ++ ++3) All account creations, modifications, disabling, and terminations; and + +-Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215, SRG-OS-000064-GPOS-00033</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++4) All kernel module load, unload, and restart actions. ++ ++Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215, SRG-OS-000473-GPOS-00218</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -7569,34 +7166,24 @@ Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPO + 2921 + + CCI-000169 +- Configure the audit system to generate an audit event for any successful/unsuccessful use of the "open" system call by adding or updating the following rules in the "/etc/audit/rules.d/audit.rules" file: +- +--a always,exit -F arch=b32 -S open -F exit=-EPERM -F auid>=1000 -F auid!=unset -k perm_access +--a always,exit -F arch=b64 -S open -F exit=-EPERM -F auid>=1000 -F auid!=unset -k perm_access ++ Configure the audit system to generate an audit event for any successful/unsuccessful modifications to the "lastlog" file by adding or updating the following rules in the "/etc/audit/rules.d/audit.rules" file: + +--a always,exit -F arch=b32 -S open -F exit=-EACCES -F auid>=1000 -F auid!=unset -k perm_access +--a always,exit -F arch=b64 -S open -F exit=-EACCES -F auid>=1000 -F auid!=unset -k perm_access ++-w /var/log/lastlog -p wa -k logins + + The audit daemon must be restarted for the changes to take effect. +- ++ + +- ++ + + + +- +- SRG-OS-000062-GPOS-00031 ++ ++ SRG-OS-000063-GPOS-00032 + <GroupDescription></GroupDescription> +- +- RHEL-08-030450 +- Successful/unsuccessful uses of the open_by_handle_at system call in RHEL 8 must generate an audit record. +- <VulnDiscussion>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 "name_to_handle_at" and "open_by_handle_at" system calls split the functionality of openat into two parts: "name_to_handle_at" returns an opaque handle that corresponds to a specified file; "open_by_handle_at" opens the file corresponding to a handle returned by a previous call to "name_to_handle_at" and returns an open file descriptor. +- +-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-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215, SRG-OS-000064-GPOS-00033</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++ ++ RHEL-08-030610 ++ RHEL 8 must allow only the Information System Security Manager (ISSM) (or individuals or roles appointed by the ISSM) to select which auditable events are to be audited. ++ <VulnDiscussion>Without the capability to restrict the roles and individuals that can select which events are audited, unauthorized personnel may be able to prevent the auditing of critical events. Misconfigured audits may degrade the system's performance by overwhelming the audit log. Misconfigured audits may also make it more difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -7604,35 +7191,29 @@ Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPO + Red Hat Enterprise Linux 8 + 2921 + +- CCI-000169 +- Configure the audit system to generate an audit event for any successful/unsuccessful use of the "open_by_handle_at" system call by adding or updating the following rules in the "/etc/audit/rules.d/audit.rules" file: +- +--a always,exit -F arch=b32 -S open_by_handle_at -F exit=-EPERM -F auid>=1000 -F auid!=unset -k perm_access +--a always,exit -F arch=b64 -S open_by_handle_at -F exit=-EPERM -F auid>=1000 -F auid!=unset -k perm_access +- +--a always,exit -F arch=b32 -S open_by_handle_at -F exit=-EACCES -F auid>=1000 -F auid!=unset -k perm_access +--a always,exit -F arch=b64 -S open_by_handle_at -F exit=-EACCES -F auid>=1000 -F auid!=unset -k perm_access ++ CCI-000171 ++ Configure the files in directory "/etc/audit/rules.d/" and the "/etc/audit/auditd.conf" file to have a mode of "0640" with the following commands: + +-The audit daemon must be restarted for the changes to take effect. +- ++$ sudo chmod 0640 /etc/audit/rules.d/audit.rules ++$ sudo chmod 0640 /etc/audit/rules.d/[customrulesfile].rules ++$ sudo chmod 0640 /etc/audit/auditd.conf ++ + +- ++ + + + +- +- SRG-OS-000062-GPOS-00031 ++ ++ SRG-OS-000256-GPOS-00097 + <GroupDescription></GroupDescription> +- +- RHEL-08-030460 +- Successful/unsuccessful uses of the ftruncate command in RHEL 8 must generate an audit record. +- <VulnDiscussion>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 "truncate" and "ftruncate" functions are used to truncate a file to a specified length. ++ ++ RHEL-08-030620 ++ RHEL 8 audit tools must have a mode of 0755 or less permissive. ++ <VulnDiscussion>Protecting audit information also includes identifying and protecting the tools used to view and manipulate log data. Therefore, protecting audit tools is necessary to prevent unauthorized operation on audit information. + +-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. ++RHEL 8 systems providing tools to interface with audit information will leverage user permissions and roles identifying the user accessing the tools, and the corresponding rights the user enjoys, to make access decisions regarding the access to audit tools. + +-Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215, SRG-OS-000064-GPOS-00033</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++Audit tools include, but are not limited to, vendor-provided and open source audit tools needed to successfully view and manipulate audit information system activity and records. Audit tools include custom queries and report generators.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -7640,35 +7221,31 @@ Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPO + Red Hat Enterprise Linux 8 + 2921 + +- CCI-000169 +- Configure the audit system to generate an audit event for any successful/unsuccessful use of the "ftruncate" command by adding or updating the following rules in the "/etc/audit/rules.d/audit.rules" file: +- +--a always,exit -F arch=b32 -S ftruncate -F exit=-EPERM -F auid>=1000 -F auid!=unset -k perm_access +--a always,exit -F arch=b64 -S ftruncate -F exit=-EPERM -F auid>=1000 -F auid!=unset -k perm_access ++ CCI-001493 ++ Configure the audit tools to be protected from unauthorized access by setting the correct permissive mode using the following command: + +--a always,exit -F arch=b32 -S ftruncate -F exit=-EACCES -F auid>=1000 -F auid!=unset -k perm_access +--a always,exit -F arch=b64 -S ftruncate -F exit=-EACCES -F auid>=1000 -F auid!=unset -k perm_access ++$ sudo chmod 0755 [audit_tool] + +-The audit daemon must be restarted for the changes to take effect. +- ++Replace "[audit_tool]" with the audit tool that does not have the correct permissive mode. ++ + +- ++ + + + +- +- SRG-OS-000062-GPOS-00031 ++ ++ SRG-OS-000256-GPOS-00097 + <GroupDescription></GroupDescription> +- +- RHEL-08-030470 +- Successful/unsuccessful uses of the creat system call in RHEL 8 must generate an audit record. +- <VulnDiscussion>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. ++ ++ RHEL-08-030630 ++ RHEL 8 audit tools must be owned by root. ++ <VulnDiscussion>Protecting audit information also includes identifying and protecting the tools used to view and manipulate log data. Therefore, protecting audit tools is necessary to prevent unauthorized operation on audit information. + +-Audit records can be generated from various components within the information system (e.g., module or policy filter). The "creat" system call is used to open and possibly create a file or device. ++RHEL 8 systems providing tools to interface with audit information will leverage user permissions and roles identifying the user accessing the tools, and the corresponding rights the user enjoys, to make access decisions regarding the access to audit tools. + +-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. ++Audit tools include, but are not limited to, vendor-provided and open source audit tools needed to successfully view and manipulate audit information system activity and records. Audit tools include custom queries and report generators. + +-Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215, SRG-OS-000064-GPOS-00033</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++Satisfies: SRG-OS-000256-GPOS-00097, SRG-OS-000257-GPOS-00098, SRG-OS-000258-GPOS-00099</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -7676,35 +7253,31 @@ Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPO + Red Hat Enterprise Linux 8 + 2921 + +- CCI-000169 +- Configure the audit system to generate an audit event for any successful/unsuccessful use of the "creat" system call by adding or updating the following rules in the "/etc/audit/rules.d/audit.rules" file: +- +--a always,exit -F arch=b32 -S creat -F exit=-EPERM -F auid>=1000 -F auid!=unset -k perm_access +--a always,exit -F arch=b64 -S creat -F exit=-EPERM -F auid>=1000 -F auid!=unset -k perm_access ++ CCI-001493 ++ Configure the audit tools to be owned by "root", by running the following command: + +--a always,exit -F arch=b32 -S creat -F exit=-EACCES -F auid>=1000 -F auid!=unset -k perm_access +--a always,exit -F arch=b64 -S creat -F exit=-EACCES -F auid>=1000 -F auid!=unset -k perm_access ++$ sudo chown root [audit_tool] + +-The audit daemon must be restarted for the changes to take effect. +- ++Replace "[audit_tool]" with each audit tool not owned by "root". ++ + +- ++ + + + +- +- SRG-OS-000062-GPOS-00031 ++ ++ SRG-OS-000256-GPOS-00097 + <GroupDescription></GroupDescription> +- +- RHEL-08-030480 +- Successful/unsuccessful uses of the chown command in RHEL 8 must generate an audit record. +- <VulnDiscussion>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. ++ ++ RHEL-08-030640 ++ RHEL 8 audit tools must be group-owned by root. ++ <VulnDiscussion>Protecting audit information also includes identifying and protecting the tools used to view and manipulate log data. Therefore, protecting audit tools is necessary to prevent unauthorized operation on audit information. + +-Audit records can be generated from various components within the information system (e.g., module or policy filter). The "chown" command is used to change file owner and group. ++RHEL 8 systems providing tools to interface with audit information will leverage user permissions and roles identifying the user accessing the tools, and the corresponding rights the user enjoys, to make access decisions regarding the access to audit tools. + +-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. ++Audit tools include, but are not limited to, vendor-provided and open source audit tools needed to successfully view and manipulate audit information system activity and records. Audit tools include custom queries and report generators. + +-Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215, SRG-OS-000064-GPOS-00033, SRG-OS-000466-GPOS-00210</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++Satisfies: SRG-OS-000256-GPOS-00097, SRG-OS-000257-GPOS-00098, SRG-OS-000258-GPOS-00099</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -7712,32 +7285,36 @@ Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPO + Red Hat Enterprise Linux 8 + 2921 + +- CCI-000169 +- Configure the audit system to generate an audit event for any successful/unsuccessful use of the "chown" command by adding or updating the following line to "/etc/audit/rules.d/audit.rules": ++ CCI-001493 ++ Configure the audit tools to be group-owned by "root", by running the following command: + +--a always,exit -F arch=b32 -S chown -F auid>=1000 -F auid!=unset -k perm_mod +--a always,exit -F arch=b64 -S chown -F auid>=1000 -F auid!=unset -k perm_mod ++$ sudo chgrp root [audit_tool] + +-The audit daemon must be restarted for the changes to take effect. +- ++Replace "[audit_tool]" with each audit tool not group-owned by "root". ++ + +- ++ + + + +- +- SRG-OS-000062-GPOS-00031 ++ ++ SRG-OS-000480-GPOS-00227 + <GroupDescription></GroupDescription> +- +- RHEL-08-030490 +- Successful/unsuccessful uses of the chmod command in RHEL 8 must generate an audit record. +- <VulnDiscussion>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. ++ ++ RHEL-08-030670 ++ RHEL 8 must have the packages required for offloading audit logs installed. ++ <VulnDiscussion>Information stored in one location is vulnerable to accidental or incidental deletion or alteration. + +-Audit records can be generated from various components within the information system (e.g., module or policy filter). The "chmod" command changes the file mode bits of each given file according to mode, which can be either a symbolic representation of changes to make, or an octal number representing the bit pattern for the new mode bits. ++Off-loading is a common process in information systems with limited audit storage capacity. + +-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. ++RHEL 8 installation media provides "rsyslogd". "rsyslogd" is a system utility providing support for message logging. Support for both internet and UNIX domain sockets enables this utility to support both local and remote logging. Couple this utility with "gnutls" (which is a secure communications library implementing the SSL, TLS and DTLS protocols), and you have a method to securely encrypt and off-load auditing. + +-Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215, SRG-OS-000064-GPOS-00033, SRG-OS-000466-GPOS-00210</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++Rsyslog provides three ways to forward message: the traditional UDP transport, which is extremely lossy but standard; the plain TCP based transport, which loses messages only during certain situations but is widely available; and the RELP transport, which does not lose messages but is currently available only as part of the rsyslogd 3.15.0 and above. ++Examples of each configuration: ++UDP *.* @remotesystemname ++TCP *.* @@remotesystemname ++RELP *.* :omrelp:remotesystemname:2514 ++Note that a port number was given as there is no standard port for RELP.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -7745,32 +7322,34 @@ Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPO + Red Hat Enterprise Linux 8 + 2921 + +- CCI-000169 +- Configure the audit system to generate an audit event for any successful/unsuccessful use of the "chmod" command by adding or updating the following line to "/etc/audit/rules.d/audit.rules": +- +--a always,exit -F arch=b32 -S chmod -F auid>=1000 -F auid!=unset -k perm_mod +--a always,exit -F arch=b64 -S chmod -F auid>=1000 -F auid!=unset -k perm_mod ++ CCI-000366 ++ Configure the operating system to offload audit logs by installing the required packages with the following command: + +-The audit daemon must be restarted for the changes to take effect. +- ++$ sudo yum install rsyslog ++ + +- ++ + + + +- +- SRG-OS-000062-GPOS-00031 ++ ++ SRG-OS-000480-GPOS-00227 + <GroupDescription></GroupDescription> +- +- RHEL-08-030500 +- Successful/unsuccessful uses of the lchown system call in RHEL 8 must generate an audit record. +- <VulnDiscussion>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. ++ ++ RHEL-08-030680 ++ RHEL 8 must have the packages required for encrypting offloaded audit logs installed. ++ <VulnDiscussion>Information stored in one location is vulnerable to accidental or incidental deletion or alteration. + +-Audit records can be generated from various components within the information system (e.g., module or policy filter). The "lchown" system call is used to change the ownership of the file specified by a path, which does not dereference symbolic links. ++Off-loading is a common process in information systems with limited audit storage capacity. + +-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. ++RHEL 8 installation media provides "rsyslogd". "rsyslogd" is a system utility providing support for message logging. Support for both internet and UNIX domain sockets enables this utility to support both local and remote logging. Couple this utility with "rsyslog-gnutls" (which is a secure communications library implementing the SSL, TLS and DTLS protocols), and you have a method to securely encrypt and off-load auditing. + +-Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215, SRG-OS-000064-GPOS-00033, SRG-OS-000466-GPOS-00210</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++Rsyslog provides three ways to forward message: the traditional UDP transport, which is extremely lossy but standard; the plain TCP based transport, which loses messages only during certain situations but is widely available; and the RELP transport, which does not lose messages but is currently available only as part of the rsyslogd 3.15.0 and above. ++Examples of each configuration: ++UDP *.* @remotesystemname ++TCP *.* @@remotesystemname ++RELP *.* :omrelp:remotesystemname:2514 ++Note that a port number was given as there is no standard port for RELP.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -7778,32 +7357,29 @@ Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPO + Red Hat Enterprise Linux 8 + 2921 + +- CCI-000169 +- Configure the audit system to generate an audit event for any successful/unsuccessful use of the "lchown" system call by adding or updating the following lines to "/etc/audit/rules.d/audit.rules": +- +--a always,exit -F arch=b32 -S lchown -F auid>=1000 -F auid!=unset -k perm_mod +--a always,exit -F arch=b64 -S lchown -F auid>=1000 -F auid!=unset -k perm_mod ++ CCI-000366 ++ Configure the operating system to encrypt offloaded audit logs by installing the required packages with the following command: + +-The audit daemon must be restarted for the changes to take effect. +- ++$ sudo yum install rsyslog-gnutls ++ + +- ++ + + + +- +- SRG-OS-000062-GPOS-00031 ++ ++ SRG-OS-000342-GPOS-00133 + <GroupDescription></GroupDescription> +- +- RHEL-08-030510 +- Successful/unsuccessful uses of the fchownat system call in RHEL 8 must generate an audit record. +- <VulnDiscussion>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. ++ ++ RHEL-08-030700 ++ RHEL 8 must take appropriate action when the internal event queue is full. ++ <VulnDiscussion>Information stored in one location is vulnerable to accidental or incidental deletion or alteration. + +-Audit records can be generated from various components within the information system (e.g., module or policy filter). The "fchownat" system call is used to change ownership of a file relative to a directory file descriptor. ++Off-loading is a common process in information systems with limited audit storage capacity. + +-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. ++RHEL 8 installation media provides "rsyslogd". "rsyslogd" is a system utility providing support for message logging. Support for both internet and UNIX domain sockets enables this utility to support both local and remote logging. Couple this utility with "gnutls" (which is a secure communications library implementing the SSL, TLS and DTLS protocols), and you have a method to securely encrypt and off-load auditing. + +-Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215, SRG-OS-000064-GPOS-00033, SRG-OS-000466-GPOS-00210</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++Satisfies: SRG-OS-000342-GPOS-00133, SRG-OS-000479-GPOS-00224</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -7811,32 +7387,25 @@ Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPO + Red Hat Enterprise Linux 8 + 2921 + +- CCI-000169 +- Configure the audit system to generate an audit event for any successful/unsuccessful use of the "fchownat" system call by adding or updating the following lines to "/etc/audit/rules.d/audit.rules": ++ CCI-001851 ++ Edit the /etc/audit/auditd.conf file and add or update the "overflow_action" option: + +--a always,exit -F arch=b32 -S fchownat -F auid>=1000 -F auid!=unset -k perm_mod +--a always,exit -F arch=b64 -S fchownat -F auid>=1000 -F auid!=unset -k perm_mod ++overflow_action = syslog + +-The audit daemon must be restarted for the changes to take effect. +- ++The audit daemon must be restarted for changes to take effect. ++ + +- ++ + + + +- +- SRG-OS-000062-GPOS-00031 ++ ++ SRG-OS-000343-GPOS-00134 + <GroupDescription></GroupDescription> +- +- RHEL-08-030520 +- Successful/unsuccessful uses of the fchown system call in RHEL 8 must generate an audit record. +- <VulnDiscussion>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 "fchown" system call is used to change the ownership of a file referred to by the open file descriptor. +- +-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-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215, SRG-OS-000064-GPOS-00033, SRG-OS-000466-GPOS-00210</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++ ++ RHEL-08-030730 ++ RHEL 8 must take action when allocated audit record storage volume reaches 75 percent of the repository maximum audit record storage capacity. ++ <VulnDiscussion>If security personnel are not notified immediately when storage volume reaches 75 percent utilization, they are unable to plan for audit record storage capacity expansion.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -7844,32 +7413,31 @@ Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPO + Red Hat Enterprise Linux 8 + 2921 + +- CCI-000169 +- Configure the audit system to generate an audit event for any successful/unsuccessful use of the "fchown" system call by adding or updating the following line to "/etc/audit/rules.d/audit.rules": ++ CCI-001855 ++ Configure the operating system to initiate an action to notify the SA and ISSO (at a minimum) when allocated audit record storage volume reaches 75 percent of the repository maximum audit record storage capacity by adding/modifying the following line in the /etc/audit/auditd.conf file. + +--a always,exit -F arch=b32 -S fchown -F auid>=1000 -F auid!=unset -k perm_mod +--a always,exit -F arch=b64 -S fchown -F auid>=1000 -F auid!=unset -k perm_mod ++space_left = 25% + +-The audit daemon must be restarted for the changes to take effect. +- ++Note: Option names and values in the auditd.conf file are case insensitive. ++ + +- ++ + + + +- +- SRG-OS-000062-GPOS-00031 ++ ++ SRG-OS-000095-GPOS-00049 + <GroupDescription></GroupDescription> +- +- RHEL-08-030530 +- Successful/unsuccessful uses of the fchmodat system call in RHEL 8 must generate an audit record. +- <VulnDiscussion>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. ++ ++ RHEL-08-030741 ++ RHEL 8 must disable the chrony daemon from acting as a server. ++ <VulnDiscussion>Inaccurate time stamps make it more difficult to correlate events and can lead to an inaccurate analysis. Determining the correct time a particular event occurred on a system is critical when conducting forensic analysis and investigating system events. Sources outside the configured acceptable allowance (drift) may be inaccurate. + +-Audit records can be generated from various components within the information system (e.g., module or policy filter). The "fchmodat" system call is used to change permissions of a file relative to a directory file descriptor. ++Minimizing the exposure of the server functionality of the chrony daemon diminishes the attack surface. + +-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. ++RHEL 8 utilizes the "timedatectl" command to view the status of the "systemd-timesyncd.service". The "timedatectl" status will display the local time, UTC, and the offset from UTC. + +-Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215, SRG-OS-000064-GPOS-00033, SRG-OS-000466-GPOS-00210</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++Note that USNO offers authenticated NTP service to DoD and U.S. Government agencies operating on the NIPR and SIPR networks. Visit https://www.usno.navy.mil/USNO/time/ntp/dod-customers for more information.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -7877,32 +7445,29 @@ Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPO + Red Hat Enterprise Linux 8 + 2921 + +- CCI-000169 +- Configure the audit system to generate an audit event for any successful/unsuccessful use of the "fchmodat" system call by adding or updating the following lines to "/etc/audit/rules.d/audit.rules": +- +--a always,exit -F arch=b32 -S fchmodat -F auid>=1000 -F auid!=unset -k perm_mod +--a always,exit -F arch=b64 -S fchmodat -F auid>=1000 -F auid!=unset -k perm_mod ++ CCI-000381 ++ Configure the operating system to disable the chrony daemon from acting as a server by adding/modifying the following line in the /etc/chrony.conf file. + +-The audit daemon must be restarted for the changes to take effect. +- ++port 0 ++ + +- ++ + + + +- +- SRG-OS-000062-GPOS-00031 ++ ++ SRG-OS-000095-GPOS-00049 + <GroupDescription></GroupDescription> +- +- RHEL-08-030540 +- Successful/unsuccessful uses of the fchmod system call in RHEL 8 must generate an audit record. +- <VulnDiscussion>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. ++ ++ RHEL-08-030742 ++ RHEL 8 must disable network management of the chrony daemon. ++ <VulnDiscussion>Inaccurate time stamps make it more difficult to correlate events and can lead to an inaccurate analysis. Determining the correct time a particular event occurred on a system is critical when conducting forensic analysis and investigating system events. Sources outside the configured acceptable allowance (drift) may be inaccurate. + +-Audit records can be generated from various components within the information system (e.g., module or policy filter). The "fchmod" system call is used to change permissions of a file. ++Not exposing the management interface of the chrony daemon on the network diminishes the attack space. + +-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. ++RHEL 8 utilizes the "timedatectl" command to view the status of the "systemd-timesyncd.service". The "timedatectl" status will display the local time, UTC, and the offset from UTC. + +-Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215, SRG-OS-000064-GPOS-00033, SRG-OS-000466-GPOS-00210</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++Note that USNO offers authenticated NTP service to DoD and U.S. Government agencies operating on the NIPR and SIPR networks. Visit https://www.usno.navy.mil/USNO/time/ntp/dod-customers for more information.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -7910,32 +7475,33 @@ Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPO + Red Hat Enterprise Linux 8 + 2921 + +- CCI-000169 +- Configure the audit system to generate an audit event for any successful/unsuccessful use of the "fchmod" system call by adding or updating the following line to "/etc/audit/rules.d/audit.rules": +- +--a always,exit -F arch=b32 -S fchmod -F auid>=1000 -F auid!=unset -k perm_mod +--a always,exit -F arch=b64 -S fchmod -F auid>=1000 -F auid!=unset -k perm_mod ++ CCI-000381 ++ Configure the operating system disable network management of the chrony daemon by adding/modifying the following line in the /etc/chrony.conf file. + +-The audit daemon must be restarted for the changes to take effect. +- ++cmdport 0 ++ + +- ++ + + + +- +- SRG-OS-000062-GPOS-00031 ++ ++ SRG-OS-000095-GPOS-00049 + <GroupDescription></GroupDescription> +- +- RHEL-08-030550 +- Successful/unsuccessful uses of the sudo command in RHEL 8 must generate an audit record. +- <VulnDiscussion>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. ++ ++ RHEL-08-040000 ++ RHEL 8 must not have the telnet-server package installed. ++ <VulnDiscussion>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. + +-Audit records can be generated from various components within the information system (e.g., module or policy filter). The "sudo" command allows a permitted user to execute a command as the superuser or another user, as specified by the security policy. ++Operating systems are capable of providing a wide variety of functions and services. Some of the functions and services, provided by default, may not be necessary to support essential organizational operations (e.g., key missions, functions). + +-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. ++Examples of non-essential capabilities include, but are not limited to, games, software packages, tools, and demonstration software not related to requirements or providing a wide array of functionality not required for every mission, but which cannot be disabled. + +-Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215, SRG-OS-000466-GPOS-00210</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++Verify the operating system is configured to disable non-essential capabilities. The most secure way of ensuring a non-essential capability is disabled is to not have the capability installed. ++ ++The telnet service provides an unencrypted remote access service that does not provide for the confidentiality and integrity of user passwords or the remote session. ++ ++If a privileged user were to log on using this service, the privileged user password could be compromised.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -7943,31 +7509,29 @@ Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPO + Red Hat Enterprise Linux 8 + 2921 + +- CCI-000169 +- Configure the audit system to generate an audit event for any successful/unsuccessful use of the "sudo" command by adding or updating the following rule in the "/etc/audit/rules.d/audit.rules" file: +- +--a always,exit -F path=/usr/bin/sudo -F perm=x -F auid>=1000 -F auid!=unset -k priv_cmd ++ CCI-000381 ++ Configure the operating system to disable non-essential capabilities by removing the telnet-server package from the system with the following command: + +-The audit daemon must be restarted for the changes to take effect. +- ++$ sudo yum remove telnet-server ++ + +- ++ + + + +- +- SRG-OS-000062-GPOS-00031 ++ ++ SRG-OS-000095-GPOS-00049 + <GroupDescription></GroupDescription> +- +- RHEL-08-030560 +- Successful/unsuccessful uses of the usermod command in RHEL 8 must generate an audit record. +- <VulnDiscussion>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. ++ ++ RHEL-08-040001 ++ RHEL 8 must not have any automated bug reporting tools installed. ++ <VulnDiscussion>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. + +-Audit records can be generated from various components within the information system (e.g., module or policy filter). The "usermod" command modifies the system account files to reflect the changes that are specified on the command line. ++Operating systems are capable of providing a wide variety of functions and services. Some of the functions and services, provided by default, may not be necessary to support essential organizational operations (e.g., key missions, functions). + +-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. ++Examples of non-essential capabilities include, but are not limited to, games, software packages, tools, and demonstration software not related to requirements or providing a wide array of functionality not required for every mission, but which cannot be disabled. + +-Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215, SRG-OS-000466-GPOS-00210</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++Verify the operating system is configured to disable non-essential capabilities. The most secure way of ensuring a non-essential capability is disabled is to not have the capability installed.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -7975,31 +7539,29 @@ Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPO + Red Hat Enterprise Linux 8 + 2921 + +- CCI-000169 +- Configure the audit system to generate an audit event for any successful/unsuccessful uses of the "usermod" command by adding or updating the following rule in the "/etc/audit/rules.d/audit.rules" file: +- +--a always,exit -F path=/usr/sbin/usermod -F perm=x -F auid>=1000 -F auid!=unset -k privileged-usermod ++ CCI-000381 ++ Configure the operating system to disable non-essential capabilities by removing automated bug reporting packages from the system with the following command: + +-The audit daemon must be restarted for the changes to take effect. +- ++$ sudo yum remove abrt* ++ + +- ++ + + + +- +- SRG-OS-000062-GPOS-00031 ++ ++ SRG-OS-000095-GPOS-00049 + <GroupDescription></GroupDescription> +- +- RHEL-08-030570 +- Successful/unsuccessful uses of the chacl command in RHEL 8 must generate an audit record. +- <VulnDiscussion>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. ++ ++ RHEL-08-040002 ++ RHEL 8 must not have the sendmail package installed. ++ <VulnDiscussion>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. + +-Audit records can be generated from various components within the information system (e.g., module or policy filter). The "chacl" command is used to change the access control list of a file or directory. ++Operating systems are capable of providing a wide variety of functions and services. Some of the functions and services, provided by default, may not be necessary to support essential organizational operations (e.g., key missions, functions). + +-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. ++Examples of non-essential capabilities include, but are not limited to, games, software packages, tools, and demonstration software not related to requirements or providing a wide array of functionality not required for every mission, but which cannot be disabled. + +-Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215, SRG-OS-000466-GPOS-00210</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++Verify the operating system is configured to disable non-essential capabilities. The most secure way of ensuring a non-essential capability is disabled is to not have the capability installed.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -8007,41 +7569,31 @@ Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPO + Red Hat Enterprise Linux 8 + 2921 + +- CCI-000169 +- Configure the audit system to generate an audit event for any successful/unsuccessful use of the "chacl" command by adding or updating the following rule in the "/etc/audit/rules.d/audit.rules" file: +- +--a always,exit -F path=/usr/bin/chacl -F perm=x -F auid>=1000 -F auid!=unset -k perm_mod ++ CCI-000381 ++ Configure the operating system to disable non-essential capabilities by removing the sendmail package from the system with the following command: + +-The audit daemon must be restarted for the changes to take effect. +- ++$ sudo yum remove sendmail ++ + +- ++ + + + +- +- SRG-OS-000062-GPOS-00031 ++ ++ SRG-OS-000095-GPOS-00049 + <GroupDescription></GroupDescription> +- +- RHEL-08-030580 +- Successful/unsuccessful uses of the kmod command in RHEL 8 must generate an audit record. +- <VulnDiscussion>Without the capability to generate audit records, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one. +- +-Audit records can be generated from various components within the information system (e.g., module or policy filter). The "kmod" command is used to control Linux Kernel modules. +- +-The list of audited events is the set of events for which audits are to be generated. This set of events is typically a subset of the list of all events for which the system is capable of generating audit records. +- +-DoD has defined the list of events for which RHEL 8 will provide an audit record generation capability as the following: +- +-1) Successful and unsuccessful attempts to access, modify, or delete privileges, security objects, security levels, or categories of information (e.g., classification levels); ++ ++ RHEL-08-040010 ++ RHEL 8 must not have the rsh-server package installed. ++ <VulnDiscussion>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. + +-2) Access actions, such as successful and unsuccessful logon attempts, privileged activities or other system-level access, starting and ending time for user access to the system, concurrent logons from different workstations, successful and unsuccessful accesses to objects, all program initiations, and all direct access to the information system; ++Operating systems are capable of providing a wide variety of functions and services. Some of the functions and services, provided by default, may not be necessary to support essential organizational operations (e.g., key missions, functions). + +-3) All account creations, modifications, disabling, and terminations; and ++The rsh-server service provides an unencrypted remote access service that does not provide for the confidentiality and integrity of user passwords or the remote session and has very weak authentication. + +-4) All kernel module load, unload, and restart actions. ++If a privileged user were to log on using this service, the privileged user password could be compromised. + +-Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215, SRG-OS-000471-GPOS-00216, SRG-OS-000477-GPOS-00222</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++Satisfies: SRG-OS-000095-GPOS-00049, SRG-OS-000074-GPOS-00042</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -8049,41 +7601,27 @@ Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPO + Red Hat Enterprise Linux 8 + 2921 + +- CCI-000169 +- Configure RHEL 8 to audit the execution of the module management program "kmod" by adding or updating the following line to "/etc/audit/rules.d/audit.rules": +- +--a always,exit -F path=/usr/bin/kmod -F perm=x -F auid>=1000 -F auid!=unset -k modules ++ CCI-000381 ++ Configure the operating system to disable non-essential capabilities by removing the rsh-server package from the system with the following command: + +-The audit daemon must be restarted for the changes to take effect. +- ++$ sudo yum remove rsh-server ++ + +- ++ + + + +- +- SRG-OS-000062-GPOS-00031 ++ ++ SRG-OS-000095-GPOS-00049 + <GroupDescription></GroupDescription> +- +- RHEL-08-030600 +- Successful/unsuccessful modifications to the lastlog file in RHEL 8 must generate an audit record. +- <VulnDiscussion>Without the capability to generate audit records, it would be difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one. +- +-Audit records can be generated from various components within the information system (e.g., module or policy filter). +- +-The list of audited events is the set of events for which audits are to be generated. This set of events is typically a subset of the list of all events for which the system is capable of generating audit records. +- +-DoD has defined the list of events for which RHEL 8 will provide an audit record generation capability as the following: +- +-1) Successful and unsuccessful attempts to access, modify, or delete privileges, security objects, security levels, or categories of information (e.g., classification levels); +- +-2) Access actions, such as successful and unsuccessful logon attempts, privileged activities or other system-level access, starting and ending time for user access to the system, concurrent logons from different workstations, successful and unsuccessful accesses to objects, all program initiations, and all direct access to the information system; +- +-3) All account creations, modifications, disabling, and terminations; and ++ ++ RHEL-08-040021 ++ RHEL 8 must disable the asynchronous transfer mode (ATM) protocol. ++ <VulnDiscussion>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. + +-4) All kernel module load, unload, and restart actions. ++Failing to disconnect unused protocols can result in a system compromise. + +-Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000471-GPOS-00215, SRG-OS-000473-GPOS-00218</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++The Asynchronous Transfer Mode (ATM) is a protocol operating on network, data link, and physical layers, based on virtual circuits and virtual paths. Disabling ATM protects the system against exploitation of any laws in its implementation.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -8091,25 +7629,32 @@ Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPO + Red Hat Enterprise Linux 8 + 2921 + +- CCI-000169 +- Configure the audit system to generate an audit event for any successful/unsuccessful modifications to the "lastlog" file by adding or updating the following rules in the "/etc/audit/rules.d/audit.rules" file: ++ CCI-000381 ++ Configure the operating system to disable the ability to use the ATM protocol kernel module. + +--w /var/log/lastlog -p wa -k logins ++Add or update the following lines in the file "/etc/modprobe.d/blacklist.conf": + +-The audit daemon must be restarted for the changes to take effect. +- ++install atm /bin/true ++blacklist atm ++ ++Reboot the system for the settings to take effect. ++ + +- ++ + + + +- +- SRG-OS-000063-GPOS-00032 ++ ++ SRG-OS-000095-GPOS-00049 + <GroupDescription></GroupDescription> +- +- RHEL-08-030610 +- RHEL 8 must allow only the Information System Security Manager (ISSM) (or individuals or roles appointed by the ISSM) to select which auditable events are to be audited. +- <VulnDiscussion>Without the capability to restrict the roles and individuals that can select which events are audited, unauthorized personnel may be able to prevent the auditing of critical events. Misconfigured audits may degrade the system's performance by overwhelming the audit log. Misconfigured audits may also make it more difficult to establish, correlate, and investigate the events relating to an incident or identify those responsible for one.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++ ++ RHEL-08-040022 ++ RHEL 8 must disable the controller area network (CAN) protocol. ++ <VulnDiscussion>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. ++ ++Failing to disconnect unused protocols can result in a system compromise. ++ ++The Controller Area Network (CAN) is a serial communications protocol, which was initially developed for automotive and is now also used in marine, industrial, and medical applications. Disabling CAN protects the system against exploitation of any flaws in its implementation.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -8117,29 +7662,32 @@ The audit daemon must be restarted for the changes to take effect.Red Hat Enterprise Linux 8 + 2921 + +- CCI-000171 +- Configure the files in directory "/etc/audit/rules.d/" and the "/etc/audit/auditd.conf" file to have a mode of "0640" with the following commands: ++ CCI-000381 ++ Configure the operating system to disable the ability to use the CAN protocol kernel module. + +-$ sudo chmod 0640 /etc/audit/rules.d/audit.rules +-$ sudo chmod 0640 /etc/audit/rules.d/[customrulesfile].rules +-$ sudo chmod 0640 /etc/audit/auditd.conf +- ++Add or update the following lines in the file "/etc/modprobe.d/blacklist.conf": ++ ++install can /bin/true ++blacklist can ++ ++Reboot the system for the settings to take effect. ++ + +- ++ + + + +- +- SRG-OS-000256-GPOS-00097 ++ ++ SRG-OS-000095-GPOS-00049 + <GroupDescription></GroupDescription> +- +- RHEL-08-030620 +- RHEL 8 audit tools must have a mode of 0755 or less permissive. +- <VulnDiscussion>Protecting audit information also includes identifying and protecting the tools used to view and manipulate log data. Therefore, protecting audit tools is necessary to prevent unauthorized operation on audit information. ++ ++ RHEL-08-040023 ++ RHEL 8 must disable the stream control transmission protocol (SCTP). ++ <VulnDiscussion>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. + +-RHEL 8 systems providing tools to interface with audit information will leverage user permissions and roles identifying the user accessing the tools, and the corresponding rights the user enjoys, to make access decisions regarding the access to audit tools. ++Failing to disconnect unused protocols can result in a system compromise. + +-Audit tools include, but are not limited to, vendor-provided and open source audit tools needed to successfully view and manipulate audit information system activity and records. Audit tools include custom queries and report generators.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++The Stream Control Transmission Protocol (SCTP) is a transport layer protocol, designed to support the idea of message-oriented communication, with several streams of messages within one connection. Disabling SCTP protects the system against exploitation of any flaws in its implementation.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -8147,31 +7695,32 @@ Audit tools include, but are not limited to, vendor-provided and open source aud + Red Hat Enterprise Linux 8 + 2921 + +- CCI-001493 +- Configure the audit tools to be protected from unauthorized access by setting the correct permissive mode using the following command: ++ CCI-000381 ++ Configure the operating system to disable the ability to use the SCTP kernel module. + +-$ sudo chmod 0755 [audit_tool] ++Add or update the following lines in the file "/etc/modprobe.d/blacklist.conf": + +-Replace "[audit_tool]" with the audit tool that does not have the correct permissive mode. +- ++install sctp /bin/true ++blacklist sctp ++ ++Reboot the system for the settings to take effect. ++ + +- ++ + + + +- +- SRG-OS-000256-GPOS-00097 +- <GroupDescription></GroupDescription> +- +- RHEL-08-030630 +- RHEL 8 audit tools must be owned by root. +- <VulnDiscussion>Protecting audit information also includes identifying and protecting the tools used to view and manipulate log data. Therefore, protecting audit tools is necessary to prevent unauthorized operation on audit information. +- +-RHEL 8 systems providing tools to interface with audit information will leverage user permissions and roles identifying the user accessing the tools, and the corresponding rights the user enjoys, to make access decisions regarding the access to audit tools. ++ ++ SRG-OS-000095-GPOS-00049 ++ <GroupDescription></GroupDescription> ++ ++ RHEL-08-040024 ++ RHEL 8 must disable the transparent inter-process communication (TIPC) protocol. ++ <VulnDiscussion>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. + +-Audit tools include, but are not limited to, vendor-provided and open source audit tools needed to successfully view and manipulate audit information system activity and records. Audit tools include custom queries and report generators. ++Failing to disconnect unused protocols can result in a system compromise. + +-Satisfies: SRG-OS-000256-GPOS-00097, SRG-OS-000257-GPOS-00098, SRG-OS-000258-GPOS-00099</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++The Transparent Inter-Process Communication (TIPC) protocol is designed to provide communications between nodes in a cluster. Disabling TIPC protects the system against exploitation of any flaws in its implementation.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -8179,31 +7728,32 @@ Satisfies: SRG-OS-000256-GPOS-00097, SRG-OS-000257-GPOS-00098, SRG-OS-000258-GPO + Red Hat Enterprise Linux 8 + 2921 + +- CCI-001493 +- Configure the audit tools to be owned by "root", by running the following command: ++ CCI-000381 ++ Configure the operating system to disable the ability to use the TIPC protocol kernel module. + +-$ sudo chown root [audit_tool] ++Add or update the following lines in the file "/etc/modprobe.d/blacklist.conf": + +-Replace "[audit_tool]" with each audit tool not owned by "root". +- ++install tipc /bin/true ++blacklist tipc ++ ++Reboot the system for the settings to take effect. ++ + +- ++ + + + +- +- SRG-OS-000256-GPOS-00097 ++ ++ SRG-OS-000095-GPOS-00049 + <GroupDescription></GroupDescription> +- +- RHEL-08-030640 +- RHEL 8 audit tools must be group-owned by root. +- <VulnDiscussion>Protecting audit information also includes identifying and protecting the tools used to view and manipulate log data. Therefore, protecting audit tools is necessary to prevent unauthorized operation on audit information. +- +-RHEL 8 systems providing tools to interface with audit information will leverage user permissions and roles identifying the user accessing the tools, and the corresponding rights the user enjoys, to make access decisions regarding the access to audit tools. ++ ++ RHEL-08-040025 ++ RHEL 8 must disable mounting of cramfs. ++ <VulnDiscussion>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. + +-Audit tools include, but are not limited to, vendor-provided and open source audit tools needed to successfully view and manipulate audit information system activity and records. Audit tools include custom queries and report generators. ++Removing support for unneeded filesystem types reduces the local attack surface of the server. + +-Satisfies: SRG-OS-000256-GPOS-00097, SRG-OS-000257-GPOS-00098, SRG-OS-000258-GPOS-00099</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++Compressed ROM/RAM file system (or cramfs) is a read-only file system designed for simplicity and space-efficiency. It is mainly used in embedded and small-footprint systems.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -8211,36 +7761,30 @@ Satisfies: SRG-OS-000256-GPOS-00097, SRG-OS-000257-GPOS-00098, SRG-OS-000258-GPO + Red Hat Enterprise Linux 8 + 2921 + +- CCI-001493 +- Configure the audit tools to be group-owned by "root", by running the following command: ++ CCI-000381 ++ Configure the operating system to disable the ability to use the cramfs kernel module. + +-$ sudo chgrp root [audit_tool] ++Add or update the following lines in the file "/etc/modprobe.d/blacklist.conf": + +-Replace "[audit_tool]" with each audit tool not group-owned by "root". +- ++install cramfs /bin/true ++blacklist cramfs ++ ++Reboot the system for the settings to take effect. ++ + +- ++ + + + +- +- SRG-OS-000480-GPOS-00227 ++ ++ SRG-OS-000095-GPOS-00049 + <GroupDescription></GroupDescription> +- +- RHEL-08-030670 +- RHEL 8 must have the packages required for offloading audit logs installed. +- <VulnDiscussion>Information stored in one location is vulnerable to accidental or incidental deletion or alteration. +- +-Off-loading is a common process in information systems with limited audit storage capacity. +- +-RHEL 8 installation media provides "rsyslogd". "rsyslogd" is a system utility providing support for message logging. Support for both internet and UNIX domain sockets enables this utility to support both local and remote logging. Couple this utility with "gnutls" (which is a secure communications library implementing the SSL, TLS and DTLS protocols), and you have a method to securely encrypt and off-load auditing. ++ ++ RHEL-08-040026 ++ RHEL 8 must disable IEEE 1394 (FireWire) Support. ++ <VulnDiscussion>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. + +-Rsyslog provides three ways to forward message: the traditional UDP transport, which is extremely lossy but standard; the plain TCP based transport, which loses messages only during certain situations but is widely available; and the RELP transport, which does not lose messages but is currently available only as part of the rsyslogd 3.15.0 and above. +-Examples of each configuration: +-UDP *.* @remotesystemname +-TCP *.* @@remotesystemname +-RELP *.* :omrelp:remotesystemname:2514 +-Note that a port number was given as there is no standard port for RELP.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++The IEEE 1394 (FireWire) is a serial bus standard for high-speed real-time communication. Disabling FireWire protects the system against exploitation of any flaws in its implementation.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -8248,34 +7792,30 @@ Note that a port number was given as there is no standard port for RELP.</Vul + Red Hat Enterprise Linux 8 + 2921 + +- CCI-000366 +- Configure the operating system to offload audit logs by installing the required packages with the following command: ++ CCI-000381 ++ Configure the operating system to disable the ability to use the firewire-core kernel module. + +-$ sudo yum install rsyslog +- ++Add or update the following lines in the file "/etc/modprobe.d/blacklist.conf": ++ ++install firewire-core /bin/true ++blacklist firewire-core ++ ++Reboot the system for the settings to take effect. ++ + +- ++ + + + +- +- SRG-OS-000480-GPOS-00227 ++ ++ SRG-OS-000114-GPOS-00059 + <GroupDescription></GroupDescription> +- +- RHEL-08-030680 +- RHEL 8 must have the packages required for encrypting offloaded audit logs installed. +- <VulnDiscussion>Information stored in one location is vulnerable to accidental or incidental deletion or alteration. +- +-Off-loading is a common process in information systems with limited audit storage capacity. +- +-RHEL 8 installation media provides "rsyslogd". "rsyslogd" is a system utility providing support for message logging. Support for both internet and UNIX domain sockets enables this utility to support both local and remote logging. Couple this utility with "rsyslog-gnutls" (which is a secure communications library implementing the SSL, TLS and DTLS protocols), and you have a method to securely encrypt and off-load auditing. ++ ++ RHEL-08-040080 ++ RHEL 8 must be configured to disable USB mass storage. ++ <VulnDiscussion>USB mass storage permits easy introduction of unknown devices, thereby facilitating malicious activity. + +-Rsyslog provides three ways to forward message: the traditional UDP transport, which is extremely lossy but standard; the plain TCP based transport, which loses messages only during certain situations but is widely available; and the RELP transport, which does not lose messages but is currently available only as part of the rsyslogd 3.15.0 and above. +-Examples of each configuration: +-UDP *.* @remotesystemname +-TCP *.* @@remotesystemname +-RELP *.* :omrelp:remotesystemname:2514 +-Note that a port number was given as there is no standard port for RELP.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++Satisfies: SRG-OS-000114-GPOS-00059, SRG-OS-000378-GPOS-00163</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -8283,29 +7823,32 @@ Note that a port number was given as there is no standard port for RELP.</Vul + Red Hat Enterprise Linux 8 + 2921 + +- CCI-000366 +- Configure the operating system to encrypt offloaded audit logs by installing the required packages with the following command: ++ CCI-000778 ++ Configure the operating system to disable the ability to use the USB Storage kernel module and the ability to use USB mass storage devices. + +-$ sudo yum install rsyslog-gnutls +- ++Add or update the following lines in the file "/etc/modprobe.d/blacklist.conf": ++ ++install usb-storage /bin/true ++blacklist usb-storage ++ ++Reboot the system for the settings to take effect. ++ + +- ++ + + + +- +- SRG-OS-000342-GPOS-00133 ++ ++ SRG-OS-000300-GPOS-00118 + <GroupDescription></GroupDescription> +- +- RHEL-08-030700 +- RHEL 8 must take appropriate action when the internal event queue is full. +- <VulnDiscussion>Information stored in one location is vulnerable to accidental or incidental deletion or alteration. +- +-Off-loading is a common process in information systems with limited audit storage capacity. ++ ++ RHEL-08-040111 ++ RHEL 8 Bluetooth must be disabled. ++ <VulnDiscussion>Without protection of communications with wireless peripherals, confidentiality and integrity may be compromised because unprotected communications can be intercepted and either read, altered, or used to compromise the RHEL 8 operating system. + +-RHEL 8 installation media provides "rsyslogd". "rsyslogd" is a system utility providing support for message logging. Support for both internet and UNIX domain sockets enables this utility to support both local and remote logging. Couple this utility with "gnutls" (which is a secure communications library implementing the SSL, TLS and DTLS protocols), and you have a method to securely encrypt and off-load auditing. ++This requirement applies to wireless peripheral technologies (e.g., wireless mice, keyboards, displays, etc.) used with RHEL 8 systems. Wireless peripherals (e.g., Wi-Fi/Bluetooth/IR Keyboards, Mice, and Pointing Devices and Near Field Communications [NFC]) present a unique challenge by creating an open, unsecured port on a computer. Wireless peripherals must meet DoD requirements for wireless data transmission and be approved for use by the Authorizing Official (AO). Even though some wireless peripherals, such as mice and pointing devices, do not ordinarily carry information that need to be protected, modification of communications with these wireless peripherals may be used to compromise the RHEL 8 operating system. Communication paths outside the physical protection of a controlled boundary are exposed to the possibility of interception and modification. + +-Satisfies: SRG-OS-000342-GPOS-00133, SRG-OS-000479-GPOS-00224</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++Protecting the confidentiality and integrity of communications with wireless peripherals can be accomplished by physical means (e.g., employing physical barriers to wireless radio frequencies) or by logical means (e.g., employing cryptographic techniques). If physical means of protection are employed, then logical means (cryptography) do not have to be employed, and vice versa. If the wireless peripheral is only passing telemetry data, encryption of the data may not be required.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -8313,25 +7856,33 @@ Satisfies: SRG-OS-000342-GPOS-00133, SRG-OS-000479-GPOS-00224</VulnDiscussion + Red Hat Enterprise Linux 8 + 2921 + +- CCI-001851 +- Edit the /etc/audit/auditd.conf file and add or update the "overflow_action" option: ++ CCI-001443 ++ Configure the operating system to disable the Bluetooth adapter when not in use. + +-overflow_action = syslog ++Build or modify the "/etc/modprobe.d/bluetooth.conf" file with the following line: + +-The audit daemon must be restarted for changes to take effect. +- ++install bluetooth /bin/true ++ ++Reboot the system for the settings to take effect. ++ + +- ++ + + + +- +- SRG-OS-000343-GPOS-00134 ++ ++ SRG-OS-000368-GPOS-00154 + <GroupDescription></GroupDescription> +- +- RHEL-08-030730 +- RHEL 8 must take action when allocated audit record storage volume reaches 75 percent of the repository maximum audit record storage capacity. +- <VulnDiscussion>If security personnel are not notified immediately when storage volume reaches 75 percent utilization, they are unable to plan for audit record storage capacity expansion.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++ ++ RHEL-08-040120 ++ RHEL 8 must mount /dev/shm with the nodev option. ++ <VulnDiscussion>The organization must identify authorized software programs and permit execution of authorized software. The process used to identify software programs that are authorized to execute on organizational information systems is commonly referred to as whitelisting. ++ ++The "noexec" mount option causes the system to not execute binary files. This option must be used for mounting any file system not containing approved binary files, as they may be incompatible. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access. ++ ++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 "nosuid" mount option causes the system to not execute "setuid" and "setgid" files with owner privileges. This option must be used for mounting any file system not containing approved "setuid" and "setguid" files. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -8339,31 +7890,27 @@ The audit daemon must be restarted for changes to take effect. + Red Hat Enterprise Linux 8 + 2921 + +- CCI-001855 +- Configure the operating system to initiate an action to notify the SA and ISSO (at a minimum) when allocated audit record storage volume reaches 75 percent of the repository maximum audit record storage capacity by adding/modifying the following line in the /etc/audit/auditd.conf file. +- +-space_left = 25% ++ CCI-001764 ++ Configure the system so that /dev/shm is mounted with the "nodev" option by adding /modifying the /etc/fstab with the following line: + +-Note: Option names and values in the auditd.conf file are case insensitive. +- ++tmpfs /dev/shm tmpfs defaults,nodev,nosuid,noexec 0 0 ++ + +- ++ + + + +- +- SRG-OS-000095-GPOS-00049 ++ ++ SRG-OS-000368-GPOS-00154 + <GroupDescription></GroupDescription> +- +- RHEL-08-030741 +- RHEL 8 must disable the chrony daemon from acting as a server. +- <VulnDiscussion>Inaccurate time stamps make it more difficult to correlate events and can lead to an inaccurate analysis. Determining the correct time a particular event occurred on a system is critical when conducting forensic analysis and investigating system events. Sources outside the configured acceptable allowance (drift) may be inaccurate. +- +-Minimizing the exposure of the server functionality of the chrony daemon diminishes the attack surface. +- +-RHEL 8 utilizes the "timedatectl" command to view the status of the "systemd-timesyncd.service". The "timedatectl" status will display the local time, UTC, and the offset from UTC. ++ ++ RHEL-08-040121 ++ RHEL 8 must mount /dev/shm with the nosuid option. ++ <VulnDiscussion>The organization must identify authorized software programs and permit execution of authorized software. The process used to identify software programs that are authorized to execute on organizational information systems is commonly referred to as whitelisting. + +-Note that USNO offers authenticated NTP service to DoD and U.S. Government agencies operating on the NIPR and SIPR networks. Visit https://www.usno.navy.mil/USNO/time/ntp/dod-customers for more information.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++The "noexec" mount option causes the system to not execute binary files. This option must be used for mounting any file system not containing approved binary files, as they may be incompatible. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access. ++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 "nosuid" mount option causes the system to not execute "setuid" and "setgid" files with owner privileges. This option must be used for mounting any file system not containing approved "setuid" and "setguid" files. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -8371,29 +7918,29 @@ Note that USNO offers authenticated NTP service to DoD and U.S. Government agenc + Red Hat Enterprise Linux 8 + 2921 + +- CCI-000381 +- Configure the operating system to disable the chrony daemon from acting as a server by adding/modifying the following line in the /etc/chrony.conf file. ++ CCI-001764 ++ Configure the system so that /dev/shm is mounted with the "nosuid" option by adding /modifying the /etc/fstab with the following line: + +-port 0 +- ++tmpfs /dev/shm tmpfs defaults,nodev,nosuid,noexec 0 0 ++ + +- ++ + + + +- +- SRG-OS-000095-GPOS-00049 ++ ++ SRG-OS-000368-GPOS-00154 + <GroupDescription></GroupDescription> +- +- RHEL-08-030742 +- RHEL 8 must disable network management of the chrony daemon. +- <VulnDiscussion>Inaccurate time stamps make it more difficult to correlate events and can lead to an inaccurate analysis. Determining the correct time a particular event occurred on a system is critical when conducting forensic analysis and investigating system events. Sources outside the configured acceptable allowance (drift) may be inaccurate. ++ ++ RHEL-08-040122 ++ RHEL 8 must mount /dev/shm with the noexec option. ++ <VulnDiscussion>The organization must identify authorized software programs and permit execution of authorized software. The process used to identify software programs that are authorized to execute on organizational information systems is commonly referred to as whitelisting. + +-Not exposing the management interface of the chrony daemon on the network diminishes the attack space. ++The "noexec" mount option causes the system to not execute binary files. This option must be used for mounting any file system not containing approved binary files, as they may be incompatible. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access. + +-RHEL 8 utilizes the "timedatectl" command to view the status of the "systemd-timesyncd.service". The "timedatectl" status will display the local time, UTC, and the offset from UTC. ++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. + +-Note that USNO offers authenticated NTP service to DoD and U.S. Government agencies operating on the NIPR and SIPR networks. Visit https://www.usno.navy.mil/USNO/time/ntp/dod-customers for more information.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++The "nosuid" mount option causes the system to not execute "setuid" and "setgid" files with owner privileges. This option must be used for mounting any file system not containing approved "setuid" and "setguid" files. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -8401,33 +7948,29 @@ Note that USNO offers authenticated NTP service to DoD and U.S. Government agenc + Red Hat Enterprise Linux 8 + 2921 + +- CCI-000381 +- Configure the operating system disable network management of the chrony daemon by adding/modifying the following line in the /etc/chrony.conf file. ++ CCI-001764 ++ Configure the system so that /dev/shm is mounted with the "noexec" option by adding /modifying the /etc/fstab with the following line: + +-cmdport 0 +- ++tmpfs /dev/shm tmpfs defaults,nodev,nosuid,noexec 0 0 ++ + +- ++ + + + +- +- SRG-OS-000095-GPOS-00049 ++ ++ SRG-OS-000368-GPOS-00154 + <GroupDescription></GroupDescription> +- +- RHEL-08-040000 +- RHEL 8 must not have the telnet-server package installed. +- <VulnDiscussion>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. ++ ++ RHEL-08-040123 ++ RHEL 8 must mount /tmp with the nodev option. ++ <VulnDiscussion>The organization must identify authorized software programs and permit execution of authorized software. The process used to identify software programs that are authorized to execute on organizational information systems is commonly referred to as whitelisting. + +-Operating systems are capable of providing a wide variety of functions and services. Some of the functions and services, provided by default, may not be necessary to support essential organizational operations (e.g., key missions, functions). ++The "noexec" mount option causes the system to not execute binary files. This option must be used for mounting any file system not containing approved binary files, as they may be incompatible. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access. + +-Examples of non-essential capabilities include, but are not limited to, games, software packages, tools, and demonstration software not related to requirements or providing a wide array of functionality not required for every mission, but which cannot be disabled. +- +-Verify the operating system is configured to disable non-essential capabilities. The most secure way of ensuring a non-essential capability is disabled is to not have the capability installed. +- +-The telnet service provides an unencrypted remote access service that does not provide for the confidentiality and integrity of user passwords or the remote session. ++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. + +-If a privileged user were to log on using this service, the privileged user password could be compromised.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++The "nosuid" mount option causes the system to not execute "setuid" and "setgid" files with owner privileges. This option must be used for mounting any file system not containing approved "setuid" and "setguid" files. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -8435,29 +7978,27 @@ If a privileged user were to log on using this service, the privileged user pass + Red Hat Enterprise Linux 8 + 2921 + +- CCI-000381 +- Configure the operating system to disable non-essential capabilities by removing the telnet-server package from the system with the following command: ++ CCI-001764 ++ Configure the system so that /tmp is mounted with the "nodev" option by adding /modifying the /etc/fstab with the following line: + +-$ sudo yum remove telnet-server +- ++/dev/mapper/rhel-tmp /tmp xfs defaults,nodev,nosuid,noexec 0 0 ++ + +- ++ + + + +- +- SRG-OS-000095-GPOS-00049 ++ ++ SRG-OS-000368-GPOS-00154 + <GroupDescription></GroupDescription> +- +- RHEL-08-040001 +- RHEL 8 must not have any automated bug reporting tools installed. +- <VulnDiscussion>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. +- +-Operating systems are capable of providing a wide variety of functions and services. Some of the functions and services, provided by default, may not be necessary to support essential organizational operations (e.g., key missions, functions). +- +-Examples of non-essential capabilities include, but are not limited to, games, software packages, tools, and demonstration software not related to requirements or providing a wide array of functionality not required for every mission, but which cannot be disabled. ++ ++ RHEL-08-040124 ++ RHEL 8 must mount /tmp with the nosuid option. ++ <VulnDiscussion>The organization must identify authorized software programs and permit execution of authorized software. The process used to identify software programs that are authorized to execute on organizational information systems is commonly referred to as whitelisting. + +-Verify the operating system is configured to disable non-essential capabilities. The most secure way of ensuring a non-essential capability is disabled is to not have the capability installed.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++The "noexec" mount option causes the system to not execute binary files. This option must be used for mounting any file system not containing approved binary files, as they may be incompatible. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access. ++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 "nosuid" mount option causes the system to not execute "setuid" and "setgid" files with owner privileges. This option must be used for mounting any file system not containing approved "setuid" and "setguid" files. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -8465,29 +8006,29 @@ Verify the operating system is configured to disable non-essential capabilities. + Red Hat Enterprise Linux 8 + 2921 + +- CCI-000381 +- Configure the operating system to disable non-essential capabilities by removing automated bug reporting packages from the system with the following command: ++ CCI-001764 ++ Configure the system so that /tmp is mounted with the "nosuid" option by adding /modifying the /etc/fstab with the following line: + +-$ sudo yum remove abrt* +- ++/dev/mapper/rhel-tmp /tmp xfs defaults,nodev,nosuid,noexec 0 0 ++ + +- ++ + + + +- +- SRG-OS-000095-GPOS-00049 ++ ++ SRG-OS-000368-GPOS-00154 + <GroupDescription></GroupDescription> +- +- RHEL-08-040002 +- RHEL 8 must not have the sendmail package installed. +- <VulnDiscussion>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. ++ ++ RHEL-08-040125 ++ RHEL 8 must mount /tmp with the noexec option. ++ <VulnDiscussion>The organization must identify authorized software programs and permit execution of authorized software. The process used to identify software programs that are authorized to execute on organizational information systems is commonly referred to as whitelisting. + +-Operating systems are capable of providing a wide variety of functions and services. Some of the functions and services, provided by default, may not be necessary to support essential organizational operations (e.g., key missions, functions). ++The "noexec" mount option causes the system to not execute binary files. This option must be used for mounting any file system not containing approved binary files, as they may be incompatible. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access. + +-Examples of non-essential capabilities include, but are not limited to, games, software packages, tools, and demonstration software not related to requirements or providing a wide array of functionality not required for every mission, but which cannot be disabled. ++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. + +-Verify the operating system is configured to disable non-essential capabilities. The most secure way of ensuring a non-essential capability is disabled is to not have the capability installed.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++The "nosuid" mount option causes the system to not execute "setuid" and "setgid" files with owner privileges. This option must be used for mounting any file system not containing approved "setuid" and "setguid" files. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -8495,31 +8036,29 @@ Verify the operating system is configured to disable non-essential capabilities. + Red Hat Enterprise Linux 8 + 2921 + +- CCI-000381 +- Configure the operating system to disable non-essential capabilities by removing the sendmail package from the system with the following command: ++ CCI-001764 ++ Configure the system so that /tmp is mounted with the "noexec" option by adding /modifying the /etc/fstab with the following line: + +-$ sudo yum remove sendmail +- ++/dev/mapper/rhel-tmp /tmp xfs defaults,nodev,nosuid,noexec 0 0 ++ + +- ++ + + + +- +- SRG-OS-000095-GPOS-00049 ++ ++ SRG-OS-000368-GPOS-00154 + <GroupDescription></GroupDescription> +- +- RHEL-08-040010 +- RHEL 8 must not have the rsh-server package installed. +- <VulnDiscussion>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. +- +-Operating systems are capable of providing a wide variety of functions and services. Some of the functions and services, provided by default, may not be necessary to support essential organizational operations (e.g., key missions, functions). ++ ++ RHEL-08-040126 ++ RHEL 8 must mount /var/log with the nodev option. ++ <VulnDiscussion>The organization must identify authorized software programs and permit execution of authorized software. The process used to identify software programs that are authorized to execute on organizational information systems is commonly referred to as whitelisting. + +-The rsh-server service provides an unencrypted remote access service that does not provide for the confidentiality and integrity of user passwords or the remote session and has very weak authentication. ++The "noexec" mount option causes the system to not execute binary files. This option must be used for mounting any file system not containing approved binary files, as they may be incompatible. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access. + +-If a privileged user were to log on using this service, the privileged user password could be compromised. ++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. + +-Satisfies: SRG-OS-000095-GPOS-00049, SRG-OS-000074-GPOS-00042</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++The "nosuid" mount option causes the system to not execute "setuid" and "setgid" files with owner privileges. This option must be used for mounting any file system not containing approved "setuid" and "setguid" files. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -8527,27 +8066,29 @@ Satisfies: SRG-OS-000095-GPOS-00049, SRG-OS-000074-GPOS-00042</VulnDiscussion + Red Hat Enterprise Linux 8 + 2921 + +- CCI-000381 +- Configure the operating system to disable non-essential capabilities by removing the rsh-server package from the system with the following command: ++ CCI-001764 ++ Configure the system so that /var/log is mounted with the "nodev" option by adding /modifying the /etc/fstab with the following line: + +-$ sudo yum remove rsh-server +- ++/dev/mapper/rhel-var-log /var/log xfs defaults,nodev,nosuid,noexec 0 0 ++ + +- ++ + + + +- +- SRG-OS-000095-GPOS-00049 ++ ++ SRG-OS-000368-GPOS-00154 + <GroupDescription></GroupDescription> +- +- RHEL-08-040021 +- RHEL 8 must disable the asynchronous transfer mode (ATM) protocol. +- <VulnDiscussion>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. ++ ++ RHEL-08-040127 ++ RHEL 8 must mount /var/log with the nosuid option. ++ <VulnDiscussion>The organization must identify authorized software programs and permit execution of authorized software. The process used to identify software programs that are authorized to execute on organizational information systems is commonly referred to as whitelisting. + +-Failing to disconnect unused protocols can result in a system compromise. ++The "noexec" mount option causes the system to not execute binary files. This option must be used for mounting any file system not containing approved binary files, as they may be incompatible. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access. + +-The Asynchronous Transfer Mode (ATM) is a protocol operating on network, data link, and physical layers, based on virtual circuits and virtual paths. Disabling ATM protects the system against exploitation of any laws in its implementation.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++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 "nosuid" mount option causes the system to not execute "setuid" and "setgid" files with owner privileges. This option must be used for mounting any file system not containing approved "setuid" and "setguid" files. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -8555,32 +8096,29 @@ The Asynchronous Transfer Mode (ATM) is a protocol operating on network, data li + Red Hat Enterprise Linux 8 + 2921 + +- CCI-000381 +- Configure the operating system to disable the ability to use the ATM protocol kernel module. +- +-Add or update the following lines in the file "/etc/modprobe.d/blacklist.conf": +- +-install atm /bin/true +-blacklist atm ++ CCI-001764 ++ Configure the system so that /var/log is mounted with the "nosuid" option by adding /modifying the /etc/fstab with the following line: + +-Reboot the system for the settings to take effect. +- ++/dev/mapper/rhel-var-log /var/log xfs defaults,nodev,nosuid,noexec 0 0 ++ + +- ++ + + + +- +- SRG-OS-000095-GPOS-00049 ++ ++ SRG-OS-000368-GPOS-00154 + <GroupDescription></GroupDescription> +- +- RHEL-08-040022 +- RHEL 8 must disable the controller area network (CAN) protocol. +- <VulnDiscussion>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. ++ ++ RHEL-08-040128 ++ RHEL 8 must mount /var/log with the noexec option. ++ <VulnDiscussion>The organization must identify authorized software programs and permit execution of authorized software. The process used to identify software programs that are authorized to execute on organizational information systems is commonly referred to as whitelisting. + +-Failing to disconnect unused protocols can result in a system compromise. ++The "noexec" mount option causes the system to not execute binary files. This option must be used for mounting any file system not containing approved binary files, as they may be incompatible. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access. + +-The Controller Area Network (CAN) is a serial communications protocol, which was initially developed for automotive and is now also used in marine, industrial, and medical applications. Disabling CAN protects the system against exploitation of any flaws in its implementation.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++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 "nosuid" mount option causes the system to not execute "setuid" and "setgid" files with owner privileges. This option must be used for mounting any file system not containing approved "setuid" and "setguid" files. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -8588,32 +8126,29 @@ The Controller Area Network (CAN) is a serial communications protocol, which was + Red Hat Enterprise Linux 8 + 2921 + +- CCI-000381 +- Configure the operating system to disable the ability to use the CAN protocol kernel module. +- +-Add or update the following lines in the file "/etc/modprobe.d/blacklist.conf": +- +-install can /bin/true +-blacklist can ++ CCI-001764 ++ Configure the system so that /var/log is mounted with the "noexec" option by adding /modifying the /etc/fstab with the following line: + +-Reboot the system for the settings to take effect. +- ++/dev/mapper/rhel-var-log /var/log xfs defaults,nodev,nosuid,noexec 0 0 ++ + +- ++ + + + +- +- SRG-OS-000095-GPOS-00049 ++ ++ SRG-OS-000368-GPOS-00154 + <GroupDescription></GroupDescription> +- +- RHEL-08-040023 +- RHEL 8 must disable the stream control transmission protocol (SCTP). +- <VulnDiscussion>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. ++ ++ RHEL-08-040129 ++ RHEL 8 must mount /var/log/audit with the nodev option. ++ <VulnDiscussion>The organization must identify authorized software programs and permit execution of authorized software. The process used to identify software programs that are authorized to execute on organizational information systems is commonly referred to as whitelisting. + +-Failing to disconnect unused protocols can result in a system compromise. ++The "noexec" mount option causes the system to not execute binary files. This option must be used for mounting any file system not containing approved binary files, as they may be incompatible. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access. + +-The Stream Control Transmission Protocol (SCTP) is a transport layer protocol, designed to support the idea of message-oriented communication, with several streams of messages within one connection. Disabling SCTP protects the system against exploitation of any flaws in its implementation.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++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 "nosuid" mount option causes the system to not execute "setuid" and "setgid" files with owner privileges. This option must be used for mounting any file system not containing approved "setuid" and "setguid" files. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -8621,32 +8156,29 @@ The Stream Control Transmission Protocol (SCTP) is a transport layer protocol, d + Red Hat Enterprise Linux 8 + 2921 + +- CCI-000381 +- Configure the operating system to disable the ability to use the SCTP kernel module. +- +-Add or update the following lines in the file "/etc/modprobe.d/blacklist.conf": +- +-install sctp /bin/true +-blacklist sctp ++ CCI-001764 ++ Configure the system so that /var/log/audit is mounted with the "nodev" option by adding /modifying the /etc/fstab with the following line: + +-Reboot the system for the settings to take effect. +- ++/dev/mapper/rhel-var-log-audit /var/log/audit xfs defaults,nodev,nosuid,noexec 0 0 ++ + +- ++ + + + +- +- SRG-OS-000095-GPOS-00049 ++ ++ SRG-OS-000368-GPOS-00154 + <GroupDescription></GroupDescription> +- +- RHEL-08-040024 +- RHEL 8 must disable the transparent inter-process communication (TIPC) protocol. +- <VulnDiscussion>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. ++ ++ RHEL-08-040130 ++ RHEL 8 must mount /var/log/audit with the nosuid option. ++ <VulnDiscussion>The organization must identify authorized software programs and permit execution of authorized software. The process used to identify software programs that are authorized to execute on organizational information systems is commonly referred to as whitelisting. + +-Failing to disconnect unused protocols can result in a system compromise. ++The "noexec" mount option causes the system to not execute binary files. This option must be used for mounting any file system not containing approved binary files, as they may be incompatible. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access. + +-The Transparent Inter-Process Communication (TIPC) protocol is designed to provide communications between nodes in a cluster. Disabling TIPC protects the system against exploitation of any flaws in its implementation.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++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 "nosuid" mount option causes the system to not execute "setuid" and "setgid" files with owner privileges. This option must be used for mounting any file system not containing approved "setuid" and "setguid" files. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -8654,32 +8186,29 @@ The Transparent Inter-Process Communication (TIPC) protocol is designed to provi + Red Hat Enterprise Linux 8 + 2921 + +- CCI-000381 +- Configure the operating system to disable the ability to use the TIPC protocol kernel module. +- +-Add or update the following lines in the file "/etc/modprobe.d/blacklist.conf": +- +-install tipc /bin/true +-blacklist tipc ++ CCI-001764 ++ Configure the system so that /var/log/audit is mounted with the "nosuid" option by adding /modifying the /etc/fstab with the following line: + +-Reboot the system for the settings to take effect. +- ++/dev/mapper/rhel-var-log-audit /var/log/audit xfs defaults,nodev,nosuid,noexec 0 0 ++ + +- ++ + + + +- +- SRG-OS-000095-GPOS-00049 ++ ++ SRG-OS-000368-GPOS-00154 + <GroupDescription></GroupDescription> +- +- RHEL-08-040025 +- RHEL 8 must disable mounting of cramfs. +- <VulnDiscussion>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. ++ ++ RHEL-08-040131 ++ RHEL 8 must mount /var/log/audit with the noexec option. ++ <VulnDiscussion>The organization must identify authorized software programs and permit execution of authorized software. The process used to identify software programs that are authorized to execute on organizational information systems is commonly referred to as whitelisting. + +-Removing support for unneeded filesystem types reduces the local attack surface of the server. ++The "noexec" mount option causes the system to not execute binary files. This option must be used for mounting any file system not containing approved binary files, as they may be incompatible. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access. + +-Compressed ROM/RAM file system (or cramfs) is a read-only file system designed for simplicity and space-efficiency. It is mainly used in embedded and small-footprint systems.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++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 "nosuid" mount option causes the system to not execute "setuid" and "setgid" files with owner privileges. This option must be used for mounting any file system not containing approved "setuid" and "setguid" files. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -8687,103 +8216,29 @@ Compressed ROM/RAM file system (or cramfs) is a read-only file system designed f + Red Hat Enterprise Linux 8 + 2921 + +- CCI-000381 +- Configure the operating system to disable the ability to use the cramfs kernel module. +- +-Add or update the following lines in the file "/etc/modprobe.d/blacklist.conf": +- +-install cramfs /bin/true +-blacklist cramfs ++ CCI-001764 ++ Configure the system so that /var/log/audit is mounted with the "noexec" option by adding /modifying the /etc/fstab with the following line: + +-Reboot the system for the settings to take effect. +- ++/dev/mapper/rhel-var-log-audit /var/log/audit xfs defaults,nodev,nosuid,noexec 0 0 ++ + +- ++ + + + +- +- SRG-OS-000095-GPOS-00049 ++ ++ SRG-OS-000368-GPOS-00154 + <GroupDescription></GroupDescription> +- +- RHEL-08-040026 +- RHEL 8 must disable IEEE 1394 (FireWire) Support. +- <VulnDiscussion>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 IEEE 1394 (FireWire) is a serial bus standard for high-speed real-time communication. Disabling FireWire protects the system against exploitation of any flaws in its implementation.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> +- +- DPMS Target Red Hat Enterprise Linux 8 +- DISA +- DPMS Target +- Red Hat Enterprise Linux 8 +- 2921 +- +- CCI-000381 +- Configure the operating system to disable the ability to use the firewire-core kernel module. +- +-Add or update the following lines in the file "/etc/modprobe.d/blacklist.conf": +- +-install firewire-core /bin/true +-blacklist firewire-core +- +-Reboot the system for the settings to take effect. +- +- +- +- +- +- +- +- SRG-OS-000114-GPOS-00059 +- <GroupDescription></GroupDescription> +- +- RHEL-08-040080 +- RHEL 8 must be configured to disable USB mass storage. +- <VulnDiscussion>USB mass storage permits easy introduction of unknown devices, thereby facilitating malicious activity. +- +-Satisfies: SRG-OS-000114-GPOS-00059, SRG-OS-000378-GPOS-00163</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> +- +- DPMS Target Red Hat Enterprise Linux 8 +- DISA +- DPMS Target +- Red Hat Enterprise Linux 8 +- 2921 +- +- CCI-000778 +- Configure the operating system to disable the ability to use the USB Storage kernel module. +- +-Create a file under "/etc/modprobe.d" with the following command: +- +-$ sudo touch /etc/modprobe.d/usb-storage.conf +- +-Add the following line to the created file: +- +-install usb-storage /bin/true +- +-Configure the operating system to disable the ability to use USB mass storage devices. +- +-$ sudo vi /etc/modprobe.d/blacklist.conf +- +-Add or update the line: ++ ++ RHEL-08-040132 ++ RHEL 8 must mount /var/tmp with the nodev option. ++ <VulnDiscussion>The organization must identify authorized software programs and permit execution of authorized software. The process used to identify software programs that are authorized to execute on organizational information systems is commonly referred to as whitelisting. + +-blacklist usb-storage +- +- +- +- +- +- +- +- SRG-OS-000300-GPOS-00118 +- <GroupDescription></GroupDescription> +- +- RHEL-08-040111 +- RHEL 8 Bluetooth must be disabled. +- <VulnDiscussion>Without protection of communications with wireless peripherals, confidentiality and integrity may be compromised because unprotected communications can be intercepted and either read, altered, or used to compromise the RHEL 8 operating system. ++The "noexec" mount option causes the system to not execute binary files. This option must be used for mounting any file system not containing approved binary files, as they may be incompatible. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access. + +-This requirement applies to wireless peripheral technologies (e.g., wireless mice, keyboards, displays, etc.) used with RHEL 8 systems. Wireless peripherals (e.g., Wi-Fi/Bluetooth/IR Keyboards, Mice, and Pointing Devices and Near Field Communications [NFC]) present a unique challenge by creating an open, unsecured port on a computer. Wireless peripherals must meet DoD requirements for wireless data transmission and be approved for use by the Authorizing Official (AO). Even though some wireless peripherals, such as mice and pointing devices, do not ordinarily carry information that need to be protected, modification of communications with these wireless peripherals may be used to compromise the RHEL 8 operating system. Communication paths outside the physical protection of a controlled boundary are exposed to the possibility of interception and modification. ++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. + +-Protecting the confidentiality and integrity of communications with wireless peripherals can be accomplished by physical means (e.g., employing physical barriers to wireless radio frequencies) or by logical means (e.g., employing cryptographic techniques). If physical means of protection are employed, then logical means (cryptography) do not have to be employed, and vice versa. If the wireless peripheral is only passing telemetry data, encryption of the data may not be required.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++The "nosuid" mount option causes the system to not execute "setuid" and "setgid" files with owner privileges. This option must be used for mounting any file system not containing approved "setuid" and "setguid" files. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -8791,26 +8246,22 @@ Protecting the confidentiality and integrity of communications with wireless per + Red Hat Enterprise Linux 8 + 2921 + +- CCI-001443 +- Configure the operating system to disable the Bluetooth adapter when not in use. +- +-Build or modify the "/etc/modprobe.d/bluetooth.conf" file with the following line: +- +-install bluetooth /bin/true ++ CCI-001764 ++ Configure the system so that /var/tmp is mounted with the "nodev" option by adding /modifying the /etc/fstab with the following line: + +-Reboot the system for the settings to take effect. +- ++/dev/mapper/rhel-var-tmp /var/tmp xfs defaults,nodev,nosuid,noexec 0 0 ++ + +- ++ + + + +- ++ + SRG-OS-000368-GPOS-00154 + <GroupDescription></GroupDescription> +- +- RHEL-08-040120 +- RHEL 8 must mount /dev/shm with the nodev option. ++ ++ RHEL-08-040133 ++ RHEL 8 must mount /var/tmp with the nosuid option. + <VulnDiscussion>The organization must identify authorized software programs and permit execution of authorized software. The process used to identify software programs that are authorized to execute on organizational information systems is commonly referred to as whitelisting. + + The "noexec" mount option causes the system to not execute binary files. This option must be used for mounting any file system not containing approved binary files, as they may be incompatible. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access. +@@ -8826,25 +8277,27 @@ The "nosuid" mount option causes the system to not execute "setuid" and "setgid" + 2921 + + CCI-001764 +- Configure the system so that /dev/shm is mounted with the "nodev" option by adding /modifying the /etc/fstab with the following line: ++ Configure the system so that /var/tmp is mounted with the "nosuid" option by adding /modifying the /etc/fstab with the following line: + +-tmpfs /dev/shm tmpfs defaults,nodev,nosuid,noexec 0 0 +- ++/dev/mapper/rhel-var-tmp /var/tmp xfs defaults,nodev,nosuid,noexec 0 0 ++ + +- ++ + + + +- ++ + SRG-OS-000368-GPOS-00154 + <GroupDescription></GroupDescription> +- +- RHEL-08-040121 +- RHEL 8 must mount /dev/shm with the nosuid option. ++ ++ RHEL-08-040134 ++ RHEL 8 must mount /var/tmp with the noexec option. + <VulnDiscussion>The organization must identify authorized software programs and permit execution of authorized software. The process used to identify software programs that are authorized to execute on organizational information systems is commonly referred to as whitelisting. + + The "noexec" mount option causes the system to not execute binary files. This option must be used for mounting any file system not containing approved binary files, as they may be incompatible. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access. ++ + 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 "nosuid" mount option causes the system to not execute "setuid" and "setgid" files with owner privileges. This option must be used for mounting any file system not containing approved "setuid" and "setguid" files. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 +@@ -8854,28 +8307,28 @@ The "nosuid" mount option causes the system to not execute "setuid" and "setgid" + 2921 + + CCI-001764 +- Configure the system so that /dev/shm is mounted with the "nosuid" option by adding /modifying the /etc/fstab with the following line: ++ Configure the system so that /var/tmp is mounted with the "noexec" option by adding /modifying the /etc/fstab with the following line: + +-tmpfs /dev/shm tmpfs defaults,nodev,nosuid,noexec 0 0 +- ++/dev/mapper/rhel-var-tmp /var/tmp xfs defaults,nodev,nosuid,noexec 0 0 ++ + +- ++ + + + +- +- SRG-OS-000368-GPOS-00154 ++ ++ SRG-OS-000423-GPOS-00187 + <GroupDescription></GroupDescription> +- +- RHEL-08-040122 +- RHEL 8 must mount /dev/shm with the noexec option. +- <VulnDiscussion>The organization must identify authorized software programs and permit execution of authorized software. The process used to identify software programs that are authorized to execute on organizational information systems is commonly referred to as whitelisting. ++ ++ RHEL-08-040160 ++ All RHEL 8 networked systems must have and implement SSH to protect the confidentiality and integrity of transmitted and received information, as well as information during preparation for transmission. ++ <VulnDiscussion>Without protection of the transmitted information, confidentiality and integrity may be compromised because unprotected communications can be intercepted and either read or altered. + +-The "noexec" mount option causes the system to not execute binary files. This option must be used for mounting any file system not containing approved binary files, as they may be incompatible. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access. ++This requirement applies to both internal and external networks and all types of information system components from which information can be transmitted (e.g., servers, mobile devices, notebook computers, printers, copiers, scanners, and facsimile machines). Communication paths outside the physical protection of a controlled boundary are exposed to the possibility of interception and modification. + +-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. ++Protecting the confidentiality and integrity of organizational information can be accomplished by physical means (e.g., employing physical distribution systems) or by logical means (e.g., employing cryptographic techniques). If physical means of protection are employed, then logical means (cryptography) do not have to be employed, and vice versa. + +-The "nosuid" mount option causes the system to not execute "setuid" and "setgid" files with owner privileges. This option must be used for mounting any file system not containing approved "setuid" and "setguid" files. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++Satisfies: SRG-OS-000423-GPOS-00187, SRG-OS-000424-GPOS-00188, SRG-OS-000425-GPOS-00189, SRG-OS-000426-GPOS-00190</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -8883,29 +8336,31 @@ The "nosuid" mount option causes the system to not execute "setuid" and "setgid" + Red Hat Enterprise Linux 8 + 2921 + +- CCI-001764 +- Configure the system so that /dev/shm is mounted with the "noexec" option by adding /modifying the /etc/fstab with the following line: ++ CCI-002418 ++ Configure the SSH service to automatically start after reboot with the following command: + +-tmpfs /dev/shm tmpfs defaults,nodev,nosuid,noexec 0 0 +- ++$ sudo systemctl enable sshd.service ++ + +- ++ + + + +- +- SRG-OS-000368-GPOS-00154 ++ ++ SRG-OS-000033-GPOS-00014 + <GroupDescription></GroupDescription> +- +- RHEL-08-040123 +- RHEL 8 must mount /tmp with the nodev option. +- <VulnDiscussion>The organization must identify authorized software programs and permit execution of authorized software. The process used to identify software programs that are authorized to execute on organizational information systems is commonly referred to as whitelisting. ++ ++ RHEL-08-040161 ++ RHEL 8 must force a frequent session key renegotiation for SSH connections to the server. ++ <VulnDiscussion>Without protection of the transmitted information, confidentiality and integrity may be compromised because unprotected communications can be intercepted and either read or altered. + +-The "noexec" mount option causes the system to not execute binary files. This option must be used for mounting any file system not containing approved binary files, as they may be incompatible. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access. ++This requirement applies to both internal and external networks and all types of information system components from which information can be transmitted (e.g., servers, mobile devices, notebook computers, printers, copiers, scanners, and facsimile machines). Communication paths outside the physical protection of a controlled boundary are exposed to the possibility of interception and modification. + +-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. ++Protecting the confidentiality and integrity of organizational information can be accomplished by physical means (e.g., employing physical distribution systems) or by logical means (e.g., employing cryptographic techniques). If physical means of protection are employed, then logical means (cryptography) do not have to be employed, and vice versa. + +-The "nosuid" mount option causes the system to not execute "setuid" and "setgid" files with owner privileges. This option must be used for mounting any file system not containing approved "setuid" and "setguid" files. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++Session key regeneration limits the chances of a session key becoming compromised. ++ ++Satisfies: SRG-OS-000033-GPOS-00014, SRG-OS-000420-GPOS-00186, SRG-OS-000424-GPOS-00188</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -8913,27 +8368,27 @@ The "nosuid" mount option causes the system to not execute "setuid" and "setgid" + Red Hat Enterprise Linux 8 + 2921 + +- CCI-001764 +- Configure the system so that /tmp is mounted with the "nodev" option by adding /modifying the /etc/fstab with the following line: ++ CCI-000068 ++ Configure the system to force a frequent session key renegotiation for SSH connections to the server by add or modifying the following line in the "/etc/ssh/sshd_config" file: + +-/dev/mapper/rhel-tmp /tmp xfs defaults,nodev,nosuid,noexec 0 0 +- ++RekeyLimit 1G 1h ++ ++Restart the SSH daemon for the settings to take effect. ++ ++$ sudo systemctl restart sshd.service ++ + +- ++ + + + +- +- SRG-OS-000368-GPOS-00154 ++ ++ SRG-OS-000480-GPOS-00227 + <GroupDescription></GroupDescription> +- +- RHEL-08-040124 +- RHEL 8 must mount /tmp with the nosuid option. +- <VulnDiscussion>The organization must identify authorized software programs and permit execution of authorized software. The process used to identify software programs that are authorized to execute on organizational information systems is commonly referred to as whitelisting. +- +-The "noexec" mount option causes the system to not execute binary files. This option must be used for mounting any file system not containing approved binary files, as they may be incompatible. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access. +-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 "nosuid" mount option causes the system to not execute "setuid" and "setgid" files with owner privileges. This option must be used for mounting any file system not containing approved "setuid" and "setguid" files. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++ ++ RHEL-08-040172 ++ The systemd Ctrl-Alt-Delete burst key sequence in RHEL 8 must be disabled. ++ <VulnDiscussion>A locally logged-on user who presses Ctrl-Alt-Delete when at the console can reboot the system. If accidentally pressed, as could happen in the case of a mixed OS environment, this can create the risk of short-term loss of availability of systems due to unintentional reboot. In a graphical user environment, risk of unintentional reboot from the Ctrl-Alt-Delete sequence is reduced because the user will be prompted before any action is taken.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -8941,29 +8396,27 @@ The "nosuid" mount option causes the system to not execute "setuid" and "setgid" + Red Hat Enterprise Linux 8 + 2921 + +- CCI-001764 +- Configure the system so that /tmp is mounted with the "nosuid" option by adding /modifying the /etc/fstab with the following line: ++ CCI-000366 ++ Configure the system to disable the CtrlAltDelBurstAction by added or modifying the following line in the "/etc/systemd/system.conf" configuration file: + +-/dev/mapper/rhel-tmp /tmp xfs defaults,nodev,nosuid,noexec 0 0 +- ++CtrlAltDelBurstAction=none ++ ++Reload the daemon for this change to take effect. ++ ++$ sudo systemctl daemon-reload ++ + +- ++ + + + +- +- SRG-OS-000368-GPOS-00154 ++ ++ SRG-OS-000480-GPOS-00227 + <GroupDescription></GroupDescription> +- +- RHEL-08-040125 +- RHEL 8 must mount /tmp with the noexec option. +- <VulnDiscussion>The organization must identify authorized software programs and permit execution of authorized software. The process used to identify software programs that are authorized to execute on organizational information systems is commonly referred to as whitelisting. +- +-The "noexec" mount option causes the system to not execute binary files. This option must be used for mounting any file system not containing approved binary files, as they may be incompatible. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access. +- +-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 "nosuid" mount option causes the system to not execute "setuid" and "setgid" files with owner privileges. This option must be used for mounting any file system not containing approved "setuid" and "setguid" files. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++ ++ RHEL-08-040190 ++ The Trivial File Transfer Protocol (TFTP) server package must not be installed if not required for RHEL 8 operational support. ++ <VulnDiscussion>If TFTP is required for operational support (such as the transmission of router configurations) its use must be documented with the Information System Security Officer (ISSO), restricted to only authorized personnel, and have access control rules established.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -8971,29 +8424,23 @@ The "nosuid" mount option causes the system to not execute "setuid" and "setgid" + Red Hat Enterprise Linux 8 + 2921 + +- CCI-001764 +- Configure the system so that /tmp is mounted with the "noexec" option by adding /modifying the /etc/fstab with the following line: ++ CCI-000366 ++ Remove the TFTP package from the system with the following command: + +-/dev/mapper/rhel-tmp /tmp xfs defaults,nodev,nosuid,noexec 0 0 +- ++$ sudo yum remove tftp-server ++ + +- ++ + + + +- +- SRG-OS-000368-GPOS-00154 ++ ++ SRG-OS-000480-GPOS-00227 + <GroupDescription></GroupDescription> +- +- RHEL-08-040126 +- RHEL 8 must mount /var/log with the nodev option. +- <VulnDiscussion>The organization must identify authorized software programs and permit execution of authorized software. The process used to identify software programs that are authorized to execute on organizational information systems is commonly referred to as whitelisting. +- +-The "noexec" mount option causes the system to not execute binary files. This option must be used for mounting any file system not containing approved binary files, as they may be incompatible. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access. +- +-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 "nosuid" mount option causes the system to not execute "setuid" and "setgid" files with owner privileges. This option must be used for mounting any file system not containing approved "setuid" and "setguid" files. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++ ++ RHEL-08-040200 ++ The root account must be the only account having unrestricted access to the RHEL 8 system. ++ <VulnDiscussion>If an account other than root also has a User Identifier (UID) of "0", it has root authority, giving that account unrestricted access to the entire operating system. Multiple accounts with a UID of "0" afford an opportunity for potential intruders to guess a password for a privileged account.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -9001,29 +8448,33 @@ The "nosuid" mount option causes the system to not execute "setuid" and "setgid" + Red Hat Enterprise Linux 8 + 2921 + +- CCI-001764 +- Configure the system so that /var/log is mounted with the "nodev" option by adding /modifying the /etc/fstab with the following line: ++ CCI-000366 ++ Change the UID of any account on the system, other than root, that has a UID of "0". + +-/dev/mapper/rhel-var-log /var/log xfs defaults,nodev,nosuid,noexec 0 0 +- ++If the account is associated with system commands or applications, the UID should be changed to one greater than "0" but less than "1000". Otherwise, assign a UID of greater than "1000" that has not already been assigned. ++ + +- ++ + + + +- +- SRG-OS-000368-GPOS-00154 ++ ++ SRG-OS-000480-GPOS-00227 + <GroupDescription></GroupDescription> +- +- RHEL-08-040127 +- RHEL 8 must mount /var/log with the nosuid option. +- <VulnDiscussion>The organization must identify authorized software programs and permit execution of authorized software. The process used to identify software programs that are authorized to execute on organizational information systems is commonly referred to as whitelisting. +- +-The "noexec" mount option causes the system to not execute binary files. This option must be used for mounting any file system not containing approved binary files, as they may be incompatible. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access. ++ ++ RHEL-08-040210 ++ RHEL 8 must prevent IPv6 Internet Control Message Protocol (ICMP) redirect messages from being accepted. ++ <VulnDiscussion>ICMP redirect messages are used by routers to inform hosts that a more direct route exists for a particular destination. These messages modify the host's route table and are unauthenticated. An illicit ICMP redirect message could result in a man-in-the-middle attack. + +-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 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 + +-The "nosuid" mount option causes the system to not execute "setuid" and "setgid" files with owner privileges. This option must be used for mounting any file system not containing approved "setuid" and "setguid" files. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++Based on the information above, if a configuration file that begins with "99-" is created in the "/etc/sysctl.d/" directory, it will take precedence over any other configuration file on the system.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -9031,29 +8482,41 @@ The "nosuid" mount option causes the system to not execute "setuid" and "setgid" + Red Hat Enterprise Linux 8 + 2921 + +- CCI-001764 +- Configure the system so that /var/log is mounted with the "nosuid" option by adding /modifying the /etc/fstab with the following line: ++ CCI-000366 ++ Configure RHEL 8 to prevent IPv6 ICMP redirect messages from being accepted. + +-/dev/mapper/rhel-var-log /var/log xfs defaults,nodev,nosuid,noexec 0 0 +- ++Add or edit the following line in a system configuration file, which begins with "99-", in the "/etc/sysctl.d/" directory: ++ ++net.ipv6.conf.default.accept_redirects = 0 ++ ++Load settings from all system configuration files with the following command: ++ ++$ sudo sysctl --system ++ + +- ++ + + + +- +- SRG-OS-000368-GPOS-00154 ++ ++ SRG-OS-000480-GPOS-00227 + <GroupDescription></GroupDescription> +- +- RHEL-08-040128 +- RHEL 8 must mount /var/log with the noexec option. +- <VulnDiscussion>The organization must identify authorized software programs and permit execution of authorized software. The process used to identify software programs that are authorized to execute on organizational information systems is commonly referred to as whitelisting. ++ ++ RHEL-08-040220 ++ RHEL 8 must not send Internet Control Message Protocol (ICMP) redirects. ++ <VulnDiscussion>ICMP redirect messages are used by routers to inform hosts that a more direct route exists for a particular destination. These messages contain information from the system's route table, possibly revealing portions of the network topology. + +-The "noexec" mount option causes the system to not execute binary files. This option must be used for mounting any file system not containing approved binary files, as they may be incompatible. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access. ++There are notable differences between Internet Protocol version 4 (IPv4) and Internet Protocol version 6 (IPv6). There is only a directive to disable sending of IPv4 redirected packets. Refer to RFC4294 for an explanation of "IPv6 Node Requirements", which resulted in this difference between IPv4 and IPv6. + +-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 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 + +-The "nosuid" mount option causes the system to not execute "setuid" and "setgid" files with owner privileges. This option must be used for mounting any file system not containing approved "setuid" and "setguid" files. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++Based on the information above, if a configuration file that begins with "99-" is created in the "/etc/sysctl.d/" directory, it will take precedence over any other configuration file on the system.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -9061,29 +8524,40 @@ The "nosuid" mount option causes the system to not execute "setuid" and "setgid" + Red Hat Enterprise Linux 8 + 2921 + +- CCI-001764 +- Configure the system so that /var/log is mounted with the "noexec" option by adding /modifying the /etc/fstab with the following line: ++ CCI-000366 ++ Configure RHEL 8 to not allow interfaces to perform IPv4 ICMP redirects. + +-/dev/mapper/rhel-var-log /var/log xfs defaults,nodev,nosuid,noexec 0 0 +- ++Add or edit the following line in a system configuration file, which begins with "99-", in the "/etc/sysctl.d/" directory: ++ ++net.ipv4.conf.all.send_redirects=0 ++ ++Load settings from all system configuration files with the following command: ++ ++$ sudo sysctl --system ++ + +- ++ + + + +- +- SRG-OS-000368-GPOS-00154 ++ ++ SRG-OS-000480-GPOS-00227 + <GroupDescription></GroupDescription> +- +- RHEL-08-040129 +- RHEL 8 must mount /var/log/audit with the nodev option. +- <VulnDiscussion>The organization must identify authorized software programs and permit execution of authorized software. The process used to identify software programs that are authorized to execute on organizational information systems is commonly referred to as whitelisting. +- +-The "noexec" mount option causes the system to not execute binary files. This option must be used for mounting any file system not containing approved binary files, as they may be incompatible. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access. ++ ++ RHEL-08-040230 ++ RHEL 8 must not respond to Internet Control Message Protocol (ICMP) echoes sent to a broadcast address. ++ <VulnDiscussion>Responding to broadcast ICMP echoes facilitates network mapping and provides a vector for amplification attacks. + +-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. ++There are notable differences between Internet Protocol version 4 (IPv4) and Internet Protocol version 6 (IPv6). IPv6 does not implement the same method of broadcast as IPv4. Instead, IPv6 uses multicast addressing to the all-hosts multicast group. Refer to RFC4294 for an explanation of "IPv6 Node Requirements", which resulted in this difference between IPv4 and IPv6. ++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 + +-The "nosuid" mount option causes the system to not execute "setuid" and "setgid" files with owner privileges. This option must be used for mounting any file system not containing approved "setuid" and "setguid" files. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++Based on the information above, if a configuration file that begins with "99-" is created in the "/etc/sysctl.d/" directory, it will take precedence over any other configuration file on the system.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -9091,29 +8565,39 @@ The "nosuid" mount option causes the system to not execute "setuid" and "setgid" + Red Hat Enterprise Linux 8 + 2921 + +- CCI-001764 +- Configure the system so that /var/log/audit is mounted with the "nodev" option by adding /modifying the /etc/fstab with the following line: ++ CCI-000366 ++ Configure RHEL 8 to not respond to IPv4 ICMP echoes sent to a broadcast address. + +-/dev/mapper/rhel-var-log-audit /var/log/audit xfs defaults,nodev,nosuid,noexec 0 0 +- ++Add or edit the following line in a system configuration file, which begins with "99-", in the "/etc/sysctl.d/" directory: ++ ++net.ipv4.icmp_echo_ignore_broadcasts=1 ++ ++Load settings from all system configuration files with the following command: ++ ++$ sudo sysctl --system ++ + +- ++ + + + +- +- SRG-OS-000368-GPOS-00154 ++ ++ SRG-OS-000480-GPOS-00227 + <GroupDescription></GroupDescription> +- +- RHEL-08-040130 +- RHEL 8 must mount /var/log/audit with the nosuid option. +- <VulnDiscussion>The organization must identify authorized software programs and permit execution of authorized software. The process used to identify software programs that are authorized to execute on organizational information systems is commonly referred to as whitelisting. +- +-The "noexec" mount option causes the system to not execute binary files. This option must be used for mounting any file system not containing approved binary files, as they may be incompatible. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access. ++ ++ RHEL-08-040240 ++ RHEL 8 must not forward IPv6 source-routed packets. ++ <VulnDiscussion>Source-routed packets allow the source of the packet to suggest that routers forward the packet along a different path than configured on the router, which can be used to bypass network security measures. This requirement applies only to the forwarding of source-routed traffic, such as when forwarding is enabled and the system is functioning as a router. + +-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 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 + +-The "nosuid" mount option causes the system to not execute "setuid" and "setgid" files with owner privileges. This option must be used for mounting any file system not containing approved "setuid" and "setguid" files. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++Based on the information above, if a configuration file that begins with "99-" is created in the "/etc/sysctl.d/" directory, it will take precedence over any other configuration file on the system.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -9121,29 +8605,39 @@ The "nosuid" mount option causes the system to not execute "setuid" and "setgid" + Red Hat Enterprise Linux 8 + 2921 + +- CCI-001764 +- Configure the system so that /var/log/audit is mounted with the "nosuid" option by adding /modifying the /etc/fstab with the following line: ++ CCI-000366 ++ Configure RHEL 8 to not forward IPv6 source-routed packets. + +-/dev/mapper/rhel-var-log-audit /var/log/audit xfs defaults,nodev,nosuid,noexec 0 0 +- ++Add or edit the following line in a system configuration file, which begins with "99-", in the "/etc/sysctl.d/" directory: ++ ++net.ipv6.conf.all.accept_source_route=0 ++ ++Load settings from all system configuration files with the following command: ++ ++$ sudo sysctl --system ++ + +- ++ + + + +- +- SRG-OS-000368-GPOS-00154 ++ ++ SRG-OS-000480-GPOS-00227 + <GroupDescription></GroupDescription> +- +- RHEL-08-040131 +- RHEL 8 must mount /var/log/audit with the noexec option. +- <VulnDiscussion>The organization must identify authorized software programs and permit execution of authorized software. The process used to identify software programs that are authorized to execute on organizational information systems is commonly referred to as whitelisting. +- +-The "noexec" mount option causes the system to not execute binary files. This option must be used for mounting any file system not containing approved binary files, as they may be incompatible. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access. ++ ++ RHEL-08-040250 ++ RHEL 8 must not forward IPv6 source-routed packets by default. ++ <VulnDiscussion>Source-routed packets allow the source of the packet to suggest that routers forward the packet along a different path than configured on the router, which can be used to bypass network security measures. This requirement applies only to the forwarding of source-routed traffic, such as when forwarding is enabled and the system is functioning as a router. + +-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 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 + +-The "nosuid" mount option causes the system to not execute "setuid" and "setgid" files with owner privileges. This option must be used for mounting any file system not containing approved "setuid" and "setguid" files. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++Based on the information above, if a configuration file that begins with "99-" is created in the "/etc/sysctl.d/" directory, it will take precedence over any other configuration file on the system.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -9151,29 +8645,39 @@ The "nosuid" mount option causes the system to not execute "setuid" and "setgid" + Red Hat Enterprise Linux 8 + 2921 + +- CCI-001764 +- Configure the system so that /var/log/audit is mounted with the "noexec" option by adding /modifying the /etc/fstab with the following line: ++ CCI-000366 ++ Configure RHEL 8 to not forward IPv6 source-routed packets by default. + +-/dev/mapper/rhel-var-log-audit /var/log/audit xfs defaults,nodev,nosuid,noexec 0 0 +- ++Add or edit the following line in a system configuration file, which begins with "99-", in the "/etc/sysctl.d/" directory: ++ ++net.ipv6.conf.default.accept_source_route=0 ++ ++Load settings from all system configuration files with the following command: ++ ++$ sudo sysctl --system ++ + +- ++ + + + +- +- SRG-OS-000368-GPOS-00154 ++ ++ SRG-OS-000480-GPOS-00227 + <GroupDescription></GroupDescription> +- +- RHEL-08-040132 +- RHEL 8 must mount /var/tmp with the nodev option. +- <VulnDiscussion>The organization must identify authorized software programs and permit execution of authorized software. The process used to identify software programs that are authorized to execute on organizational information systems is commonly referred to as whitelisting. +- +-The "noexec" mount option causes the system to not execute binary files. This option must be used for mounting any file system not containing approved binary files, as they may be incompatible. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access. ++ ++ RHEL-08-040260 ++ RHEL 8 must not enable IPv6 packet forwarding unless the system is a router. ++ <VulnDiscussion>Routing protocol daemons are typically used on routers to exchange network topology information with other routers. If this software is used when not required, system network information may be unnecessarily transmitted across the network. + +-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 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 + +-The "nosuid" mount option causes the system to not execute "setuid" and "setgid" files with owner privileges. This option must be used for mounting any file system not containing approved "setuid" and "setguid" files. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++Based on the information above, if a configuration file that begins with "99-" is created in the "/etc/sysctl.d/" directory, it will take precedence over any other configuration file on the system.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -9181,29 +8685,41 @@ The "nosuid" mount option causes the system to not execute "setuid" and "setgid" + Red Hat Enterprise Linux 8 + 2921 + +- CCI-001764 +- Configure the system so that /var/tmp is mounted with the "nodev" option by adding /modifying the /etc/fstab with the following line: ++ CCI-000366 ++ Configure RHEL 8 to not allow IPv6 packet forwarding, unless the system is a router. + +-/dev/mapper/rhel-var-tmp /var/tmp xfs defaults,nodev,nosuid,noexec 0 0 +- ++Add or edit the following line in a system configuration file, which begins with "99-", in the "/etc/sysctl.d/" directory: ++ ++net.ipv6.conf.all.forwarding=0 ++ ++Load settings from all system configuration files with the following command: ++ ++$ sudo sysctl --system ++ + +- ++ + + + +- +- SRG-OS-000368-GPOS-00154 ++ ++ SRG-OS-000480-GPOS-00227 + <GroupDescription></GroupDescription> +- +- RHEL-08-040133 +- RHEL 8 must mount /var/tmp with the nosuid option. +- <VulnDiscussion>The organization must identify authorized software programs and permit execution of authorized software. The process used to identify software programs that are authorized to execute on organizational information systems is commonly referred to as whitelisting. ++ ++ RHEL-08-040261 ++ RHEL 8 must not accept router advertisements on all IPv6 interfaces. ++ <VulnDiscussion>Routing protocol daemons are typically used on routers to exchange network topology information with other routers. If this software is used when not required, system network information may be unnecessarily transmitted across the network. + +-The "noexec" mount option causes the system to not execute binary files. This option must be used for mounting any file system not containing approved binary files, as they may be incompatible. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access. ++An illicit router advertisement message could result in a man-in-the-middle attack. + +-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 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 + +-The "nosuid" mount option causes the system to not execute "setuid" and "setgid" files with owner privileges. This option must be used for mounting any file system not containing approved "setuid" and "setguid" files. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++Based on the information above, if a configuration file that begins with "99-" is created in the "/etc/sysctl.d/" directory, it will take precedence over any other configuration file on the system.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -9211,119 +8727,41 @@ The "nosuid" mount option causes the system to not execute "setuid" and "setgid" + Red Hat Enterprise Linux 8 + 2921 + +- CCI-001764 +- Configure the system so that /var/tmp is mounted with the "nosuid" option by adding /modifying the /etc/fstab with the following line: ++ CCI-000366 ++ Configure RHEL 8 to not accept router advertisements on all IPv6 interfaces unless the system is a router. + +-/dev/mapper/rhel-var-tmp /var/tmp xfs defaults,nodev,nosuid,noexec 0 0 +- +- +- +- +- +- +- +- SRG-OS-000368-GPOS-00154 +- <GroupDescription></GroupDescription> +- +- RHEL-08-040134 +- RHEL 8 must mount /var/tmp with the noexec option. +- <VulnDiscussion>The organization must identify authorized software programs and permit execution of authorized software. The process used to identify software programs that are authorized to execute on organizational information systems is commonly referred to as whitelisting. +- +-The "noexec" mount option causes the system to not execute binary files. This option must be used for mounting any file system not containing approved binary files, as they may be incompatible. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access. +- +-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 "nosuid" mount option causes the system to not execute "setuid" and "setgid" files with owner privileges. This option must be used for mounting any file system not containing approved "setuid" and "setguid" files. Executing files from untrusted file systems increases the opportunity for unprivileged users to attain unauthorized administrative access.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> +- +- DPMS Target Red Hat Enterprise Linux 8 +- DISA +- DPMS Target +- Red Hat Enterprise Linux 8 +- 2921 +- +- CCI-001764 +- Configure the system so that /var/tmp is mounted with the "noexec" option by adding /modifying the /etc/fstab with the following line: +- +-/dev/mapper/rhel-var-tmp /var/tmp xfs defaults,nodev,nosuid,noexec 0 0 +- +- +- +- +- +- +- +- SRG-OS-000423-GPOS-00187 +- <GroupDescription></GroupDescription> +- +- RHEL-08-040160 +- All RHEL 8 networked systems must have and implement SSH to protect the confidentiality and integrity of transmitted and received information, as well as information during preparation for transmission. +- <VulnDiscussion>Without protection of the transmitted information, confidentiality and integrity may be compromised because unprotected communications can be intercepted and either read or altered. +- +-This requirement applies to both internal and external networks and all types of information system components from which information can be transmitted (e.g., servers, mobile devices, notebook computers, printers, copiers, scanners, and facsimile machines). Communication paths outside the physical protection of a controlled boundary are exposed to the possibility of interception and modification. ++Add or edit the following line in a system configuration file, which begins with "99-", in the "/etc/sysctl.d/" directory: + +-Protecting the confidentiality and integrity of organizational information can be accomplished by physical means (e.g., employing physical distribution systems) or by logical means (e.g., employing cryptographic techniques). If physical means of protection are employed, then logical means (cryptography) do not have to be employed, and vice versa. ++net.ipv6.conf.all.accept_ra=0 + +-Satisfies: SRG-OS-000423-GPOS-00187, SRG-OS-000424-GPOS-00188, SRG-OS-000425-GPOS-00189, SRG-OS-000426-GPOS-00190</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> +- +- DPMS Target Red Hat Enterprise Linux 8 +- DISA +- DPMS Target +- Red Hat Enterprise Linux 8 +- 2921 +- +- CCI-002418 +- Configure the SSH service to automatically start after reboot with the following command: ++Load settings from all system configuration files with the following command: + +-$ sudo systemctl enable sshd.service +- ++$ sudo sysctl --system ++ + +- ++ + + + +- +- SRG-OS-000033-GPOS-00014 ++ ++ SRG-OS-000480-GPOS-00227 + <GroupDescription></GroupDescription> +- +- RHEL-08-040161 +- RHEL 8 must force a frequent session key renegotiation for SSH connections to the server. +- <VulnDiscussion>Without protection of the transmitted information, confidentiality and integrity may be compromised because unprotected communications can be intercepted and either read or altered. +- +-This requirement applies to both internal and external networks and all types of information system components from which information can be transmitted (e.g., servers, mobile devices, notebook computers, printers, copiers, scanners, and facsimile machines). Communication paths outside the physical protection of a controlled boundary are exposed to the possibility of interception and modification. +- +-Protecting the confidentiality and integrity of organizational information can be accomplished by physical means (e.g., employing physical distribution systems) or by logical means (e.g., employing cryptographic techniques). If physical means of protection are employed, then logical means (cryptography) do not have to be employed, and vice versa. +- +-Session key regeneration limits the chances of a session key becoming compromised. +- +-Satisfies: SRG-OS-000033-GPOS-00014, SRG-OS-000420-GPOS-00186, SRG-OS-000424-GPOS-00188</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> +- +- DPMS Target Red Hat Enterprise Linux 8 +- DISA +- DPMS Target +- Red Hat Enterprise Linux 8 +- 2921 +- +- CCI-000068 +- Configure the system to force a frequent session key renegotiation for SSH connections to the server by add or modifying the following line in the "/etc/ssh/sshd_config" file: ++ ++ RHEL-08-040262 ++ RHEL 8 must not accept router advertisements on all IPv6 interfaces by default. ++ <VulnDiscussion>Routing protocol daemons are typically used on routers to exchange network topology information with other routers. If this software is used when not required, system network information may be unnecessarily transmitted across the network. + +-RekeyLimit 1G 1h ++An illicit router advertisement message could result in a man-in-the-middle attack. + +-Restart the SSH daemon for the settings to take effect. ++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 + +-$ sudo systemctl restart sshd.service +- +- +- +- +- +- +- +- SRG-OS-000480-GPOS-00227 +- <GroupDescription></GroupDescription> +- +- RHEL-08-040172 +- The systemd Ctrl-Alt-Delete burst key sequence in RHEL 8 must be disabled. +- <VulnDiscussion>A locally logged-on user who presses Ctrl-Alt-Delete when at the console can reboot the system. If accidentally pressed, as could happen in the case of a mixed OS environment, this can create the risk of short-term loss of availability of systems due to unintentional reboot. In a graphical user environment, risk of unintentional reboot from the Ctrl-Alt-Delete sequence is reduced because the user will be prompted before any action is taken.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++Based on the information above, if a configuration file that begins with "99-" is created in the "/etc/sysctl.d/" directory, it will take precedence over any other configuration file on the system.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -9332,74 +8770,30 @@ $ sudo systemctl restart sshd.service + 2921 + + CCI-000366 +- Configure the system to disable the CtrlAltDelBurstAction by added or modifying the following line in the "/etc/systemd/system.conf" configuration file: ++ Configure RHEL 8 to not accept router advertisements on all IPv6 interfaces by default unless the system is a router. + +-CtrlAltDelBurstAction=none ++Add or edit the following line in a system configuration file, which begins with "99-", in the "/etc/sysctl.d/" directory: + +-Reload the daemon for this change to take effect. ++net.ipv6.conf.default.accept_ra=0 + +-$ sudo systemctl daemon-reload +- +- +- +- +- +- +- +- SRG-OS-000480-GPOS-00227 +- <GroupDescription></GroupDescription> +- +- RHEL-08-040190 +- The Trivial File Transfer Protocol (TFTP) server package must not be installed if not required for RHEL 8 operational support. +- <VulnDiscussion>If TFTP is required for operational support (such as the transmission of router configurations) its use must be documented with the Information System Security Officer (ISSO), restricted to only authorized personnel, and have access control rules established.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> +- +- DPMS Target Red Hat Enterprise Linux 8 +- DISA +- DPMS Target +- Red Hat Enterprise Linux 8 +- 2921 +- +- CCI-000366 +- Remove the TFTP package from the system with the following command: ++Load settings from all system configuration files with the following command: + +-$ sudo yum remove tftp-server +- ++$ sudo sysctl --system ++ + +- ++ + + + +- ++ + SRG-OS-000480-GPOS-00227 + <GroupDescription></GroupDescription> +- +- RHEL-08-040200 +- The root account must be the only account having unrestricted access to the RHEL 8 system. +- <VulnDiscussion>If an account other than root also has a User Identifier (UID) of "0", it has root authority, giving that account unrestricted access to the entire operating system. Multiple accounts with a UID of "0" afford an opportunity for potential intruders to guess a password for a privileged account.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> +- +- DPMS Target Red Hat Enterprise Linux 8 +- DISA +- DPMS Target +- Red Hat Enterprise Linux 8 +- 2921 +- +- CCI-000366 +- Change the UID of any account on the system, other than root, that has a UID of "0". ++ ++ RHEL-08-040270 ++ RHEL 8 must not allow interfaces to perform Internet Control Message Protocol (ICMP) redirects by default. ++ <VulnDiscussion>ICMP redirect messages are used by routers to inform hosts that a more direct route exists for a particular destination. These messages contain information from the system's route table, possibly revealing portions of the network topology. + +-If the account is associated with system commands or applications, the UID should be changed to one greater than "0" but less than "1000". Otherwise, assign a UID of greater than "1000" that has not already been assigned. +- +- +- +- +- +- +- +- SRG-OS-000480-GPOS-00227 +- <GroupDescription></GroupDescription> +- +- RHEL-08-040210 +- RHEL 8 must prevent IPv6 Internet Control Message Protocol (ICMP) redirect messages from being accepted. +- <VulnDiscussion>ICMP redirect messages are used by routers to inform hosts that a more direct route exists for a particular destination. These messages modify the host's route table and are unauthenticated. An illicit ICMP redirect message could result in a man-in-the-middle attack. ++There are notable differences between Internet Protocol version 4 (IPv4) and Internet Protocol version 6 (IPv6). There is only a directive to disable sending of IPv4 redirected packets. Refer to RFC4294 for an explanation of "IPv6 Node Requirements", which resulted in this difference between IPv4 and IPv6. + + 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 +@@ -9418,30 +8812,28 @@ Based on the information above, if a configuration file that begins with "99-" i + 2921 + + CCI-000366 +- Configure RHEL 8 to prevent IPv6 ICMP redirect messages from being accepted. ++ Configure RHEL 8 to not allow interfaces to perform Internet Protocol version 4 (IPv4) ICMP redirects by default. + + Add or edit the following line in a system configuration file, which begins with "99-", in the "/etc/sysctl.d/" directory: + +-net.ipv6.conf.default.accept_redirects = 0 ++net.ipv4.conf.default.send_redirects = 0 + + Load settings from all system configuration files with the following command: + + $ sudo sysctl --system +- ++ + +- ++ + + + +- ++ + SRG-OS-000480-GPOS-00227 + <GroupDescription></GroupDescription> +- +- RHEL-08-040220 +- RHEL 8 must not send Internet Control Message Protocol (ICMP) redirects. +- <VulnDiscussion>ICMP redirect messages are used by routers to inform hosts that a more direct route exists for a particular destination. These messages contain information from the system's route table, possibly revealing portions of the network topology. +- +-There are notable differences between Internet Protocol version 4 (IPv4) and Internet Protocol version 6 (IPv6). There is only a directive to disable sending of IPv4 redirected packets. Refer to RFC4294 for an explanation of "IPv6 Node Requirements", which resulted in this difference between IPv4 and IPv6. ++ ++ RHEL-08-040280 ++ RHEL 8 must ignore IPv6 Internet Control Message Protocol (ICMP) redirect messages. ++ <VulnDiscussion>ICMP redirect messages are used by routers to inform hosts that a more direct route exists for a particular destination. These messages modify the host's route table and are unauthenticated. An illicit ICMP redirect message could result in a man-in-the-middle attack. + + 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 +@@ -9460,30 +8852,29 @@ Based on the information above, if a configuration file that begins with "99-" i + 2921 + + CCI-000366 +- Configure RHEL 8 to not allow interfaces to perform IPv4 ICMP redirects. ++ Configure RHEL 8 to ignore IPv6 ICMP redirect messages. + + Add or edit the following line in a system configuration file, which begins with "99-", in the "/etc/sysctl.d/" directory: + +-net.ipv4.conf.all.send_redirects=0 ++net.ipv6.conf.all.accept_redirects = 0 + + Load settings from all system configuration files with the following command: + + $ sudo sysctl --system +- ++ + +- ++ + + + +- ++ + SRG-OS-000480-GPOS-00227 + <GroupDescription></GroupDescription> +- +- RHEL-08-040230 +- RHEL 8 must not respond to Internet Control Message Protocol (ICMP) echoes sent to a broadcast address. +- <VulnDiscussion>Responding to broadcast ICMP echoes facilitates network mapping and provides a vector for amplification attacks. ++ ++ RHEL-08-040281 ++ RHEL 8 must disable access to network bpf syscall from unprivileged processes. ++ <VulnDiscussion>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. + +-There are notable differences between Internet Protocol version 4 (IPv4) and Internet Protocol version 6 (IPv6). IPv6 does not implement the same method of broadcast as IPv4. Instead, IPv6 uses multicast addressing to the all-hosts multicast group. Refer to RFC4294 for an explanation of "IPv6 Node Requirements", which resulted in this difference between IPv4 and IPv6. + 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 +@@ -9501,28 +8892,26 @@ Based on the information above, if a configuration file that begins with "99-" i + 2921 + + CCI-000366 +- Configure RHEL 8 to not respond to IPv4 ICMP echoes sent to a broadcast address. +- +-Add or edit the following line in a system configuration file, which begins with "99-", in the "/etc/sysctl.d/" directory: ++ Configure RHEL 8 to prevent privilege escalation thru the kernel by disabling access to the bpf syscall by adding the following line to a file, which begins with "99-", in the "/etc/sysctl.d" directory: + +-net.ipv4.icmp_echo_ignore_broadcasts=1 ++kernel.unprivileged_bpf_disabled = 1 + +-Load settings from all system configuration files with the following command: ++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 +- ++ + +- ++ + + + +- ++ + SRG-OS-000480-GPOS-00227 + <GroupDescription></GroupDescription> +- +- RHEL-08-040240 +- RHEL 8 must not forward IPv6 source-routed packets. +- <VulnDiscussion>Source-routed packets allow the source of the packet to suggest that routers forward the packet along a different path than configured on the router, which can be used to bypass network security measures. This requirement applies only to the forwarding of source-routed traffic, such as when forwarding is enabled and the system is functioning as a router. ++ ++ RHEL-08-040282 ++ RHEL 8 must restrict usage of ptrace to descendant processes. ++ <VulnDiscussion>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 +@@ -9541,28 +8930,26 @@ Based on the information above, if a configuration file that begins with "99-" i + 2921 + + CCI-000366 +- Configure RHEL 8 to not forward IPv6 source-routed packets. +- +-Add or edit the following line in a system configuration file, which begins with "99-", in the "/etc/sysctl.d/" directory: ++ Configure RHEL 8 to restrict usage of ptrace to descendant processes by adding the following line to a file, which begins with "99-", in the "/etc/sysctl.d" directory: + +-net.ipv6.conf.all.accept_source_route=0 ++kernel.yama.ptrace_scope = 1 + +-Load settings from all system configuration files with the following command: ++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 +- ++ + +- ++ + + + +- ++ + SRG-OS-000480-GPOS-00227 + <GroupDescription></GroupDescription> +- +- RHEL-08-040250 +- RHEL 8 must not forward IPv6 source-routed packets by default. +- <VulnDiscussion>Source-routed packets allow the source of the packet to suggest that routers forward the packet along a different path than configured on the router, which can be used to bypass network security measures. This requirement applies only to the forwarding of source-routed traffic, such as when forwarding is enabled and the system is functioning as a router. ++ ++ RHEL-08-040283 ++ RHEL 8 must restrict exposed kernel pointer addresses access. ++ <VulnDiscussion>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 +@@ -9581,28 +8968,26 @@ Based on the information above, if a configuration file that begins with "99-" i + 2921 + + CCI-000366 +- Configure RHEL 8 to not forward IPv6 source-routed packets by default. ++ Configure RHEL 8 to restrict exposed kernel pointer addresses access by adding the following line to a file, which begins with "99-", in the "/etc/sysctl.d" directory: + +-Add or edit the following line in a system configuration file, which begins with "99-", in the "/etc/sysctl.d/" directory: ++kernel.kptr_restrict = 1 + +-net.ipv6.conf.default.accept_source_route=0 +- +-Load settings from all system configuration files with the following command: ++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 +- ++ + +- ++ + + + +- ++ + SRG-OS-000480-GPOS-00227 + <GroupDescription></GroupDescription> +- +- RHEL-08-040260 +- RHEL 8 must not enable IPv6 packet forwarding unless the system is a router. +- <VulnDiscussion>Routing protocol daemons are typically used on routers to exchange network topology information with other routers. If this software is used when not required, system network information may be unnecessarily transmitted across the network. ++ ++ RHEL-08-040284 ++ RHEL 8 must disable the use of user namespaces. ++ <VulnDiscussion>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 +@@ -9621,30 +9006,28 @@ Based on the information above, if a configuration file that begins with "99-" i + 2921 + + CCI-000366 +- Configure RHEL 8 to not allow IPv6 packet forwarding, unless the system is a router. ++ Configure RHEL 8 to disable the use of user namespaces by adding the following line to a file, which begins with "99-", in the "/etc/sysctl.d" directory: + +-Add or edit the following line in a system configuration file, which begins with "99-", in the "/etc/sysctl.d/" directory: ++Note: User namespaces are used primarily for Linux containers. If containers are in use, this requirement is not applicable. + +-net.ipv6.conf.all.forwarding=0 ++user.max_user_namespaces = 0 + +-Load settings from all system configuration files with the following command: ++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 +- ++ + +- ++ + + + +- ++ + SRG-OS-000480-GPOS-00227 + <GroupDescription></GroupDescription> +- +- RHEL-08-040261 +- RHEL 8 must not accept router advertisements on all IPv6 interfaces. +- <VulnDiscussion>Routing protocol daemons are typically used on routers to exchange network topology information with other routers. If this software is used when not required, system network information may be unnecessarily transmitted across the network. +- +-An illicit router advertisement message could result in a man-in-the-middle attack. ++ ++ RHEL-08-040285 ++ RHEL 8 must use reverse path filtering on all IPv4 interfaces. ++ <VulnDiscussion>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 +@@ -9663,40 +9046,26 @@ Based on the information above, if a configuration file that begins with "99-" i + 2921 + + CCI-000366 +- Configure RHEL 8 to not accept router advertisements on all IPv6 interfaces unless the system is a router. +- +-Add or edit the following line in a system configuration file, which begins with "99-", in the "/etc/sysctl.d/" directory: ++ Configure RHEL 8 to use reverse path filtering on all IPv4 interfaces by adding the following line to a file, which begins with "99-", in the "/etc/sysctl.d" directory: + +-net.ipv6.conf.all.accept_ra=0 ++net.ipv4.conf.all.rp_filter = 1 + +-Load settings from all system configuration files with the following command: ++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 +- ++ + +- ++ + + + +- ++ + SRG-OS-000480-GPOS-00227 + <GroupDescription></GroupDescription> +- +- RHEL-08-040262 +- RHEL 8 must not accept router advertisements on all IPv6 interfaces by default. +- <VulnDiscussion>Routing protocol daemons are typically used on routers to exchange network topology information with other routers. If this software is used when not required, system network information may be unnecessarily transmitted across the network. +- +-An illicit router advertisement message could result in a man-in-the-middle attack. +- +-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 +- +-Based on the information above, if a configuration file that begins with "99-" is created in the "/etc/sysctl.d/" directory, it will take precedence over any other configuration file on the system.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++ ++ RHEL-08-040290 ++ RHEL 8 must be configured to prevent unrestricted mail relaying. ++ <VulnDiscussion>If unrestricted mail relaying is permitted, unauthorized senders could use this host as a mail relay for the purpose of sending spam or other unauthorized activity.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -9705,40 +9074,26 @@ Based on the information above, if a configuration file that begins with "99-" i + 2921 + + CCI-000366 +- Configure RHEL 8 to not accept router advertisements on all IPv6 interfaces by default unless the system is a router. +- +-Add or edit the following line in a system configuration file, which begins with "99-", in the "/etc/sysctl.d/" directory: +- +-net.ipv6.conf.default.accept_ra=0 +- +-Load settings from all system configuration files with the following command: ++ If "postfix" is installed, modify the "/etc/postfix/main.cf" file to restrict client connections to the local network with the following command: + +-$ sudo sysctl --system +- ++$ sudo postconf -e 'smtpd_client_restrictions = permit_mynetworks,reject' ++ + +- ++ + + + +- ++ + SRG-OS-000480-GPOS-00227 + <GroupDescription></GroupDescription> +- +- RHEL-08-040270 +- RHEL 8 must not allow interfaces to perform Internet Control Message Protocol (ICMP) redirects by default. +- <VulnDiscussion>ICMP redirect messages are used by routers to inform hosts that a more direct route exists for a particular destination. These messages contain information from the system's route table, possibly revealing portions of the network topology. +- +-There are notable differences between Internet Protocol version 4 (IPv4) and Internet Protocol version 6 (IPv6). There is only a directive to disable sending of IPv4 redirected packets. Refer to RFC4294 for an explanation of "IPv6 Node Requirements", which resulted in this difference between IPv4 and IPv6. ++ ++ RHEL-08-040340 ++ RHEL 8 remote X connections for interactive users must be disabled unless to fulfill documented and validated mission requirements. ++ <VulnDiscussion>The security risk of using X11 forwarding is that the client's X11 display server may be exposed to attack when the SSH client requests forwarding. A system administrator may have a stance in which they want to protect clients that may expose themselves to attack by unwittingly requesting X11 forwarding, which can warrant a "no" setting. + +-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 ++X11 forwarding should be enabled with caution. Users with the ability to bypass file permissions on the remote host (for the user's X11 authorization database) can access the local X11 display through the forwarded connection. An attacker may then be able to perform activities such as keystroke monitoring if the ForwardX11Trusted option is also enabled. + +-Based on the information above, if a configuration file that begins with "99-" is created in the "/etc/sysctl.d/" directory, it will take precedence over any other configuration file on the system.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++If X11 services are not required for the system's intended function, they should be disabled or restricted as appropriate to the system’s needs.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -9747,38 +9102,26 @@ Based on the information above, if a configuration file that begins with "99-" i + 2921 + + CCI-000366 +- Configure RHEL 8 to not allow interfaces to perform Internet Protocol version 4 (IPv4) ICMP redirects by default. +- +-Add or edit the following line in a system configuration file, which begins with "99-", in the "/etc/sysctl.d/" directory: ++ Edit the "/etc/ssh/sshd_config" file to uncomment or add the line for the "X11Forwarding" keyword and set its value to "no" (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): + +-net.ipv4.conf.default.send_redirects = 0 ++X11Forwarding no + +-Load settings from all system configuration files with the following command: ++The SSH service must be restarted for changes to take effect: + +-$ sudo sysctl --system +- ++$ sudo systemctl restart sshd ++ + +- ++ + + + +- ++ + SRG-OS-000480-GPOS-00227 + <GroupDescription></GroupDescription> +- +- RHEL-08-040280 +- RHEL 8 must ignore IPv6 Internet Control Message Protocol (ICMP) redirect messages. +- <VulnDiscussion>ICMP redirect messages are used by routers to inform hosts that a more direct route exists for a particular destination. These messages modify the host's route table and are unauthenticated. An illicit ICMP redirect message could result in a man-in-the-middle attack. +- +-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 +- +-Based on the information above, if a configuration file that begins with "99-" is created in the "/etc/sysctl.d/" directory, it will take precedence over any other configuration file on the system.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++ ++ RHEL-08-040341 ++ The RHEL 8 SSH daemon must prevent remote hosts from connecting to the proxy display. ++ <VulnDiscussion>When X11 forwarding is enabled, there may be additional exposure to the server and client displays if the sshd proxy display is configured to listen on the wildcard address. By default, sshd binds the forwarding server to the loopback address and sets the hostname part of the DIPSLAY environment variable to localhost. This prevents remote hosts from connecting to the proxy display.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -9787,38 +9130,24 @@ Based on the information above, if a configuration file that begins with "99-" i + 2921 + + CCI-000366 +- Configure RHEL 8 to ignore IPv6 ICMP redirect messages. +- +-Add or edit the following line in a system configuration file, which begins with "99-", in the "/etc/sysctl.d/" directory: +- +-net.ipv6.conf.all.accept_redirects = 0 ++ Configure the SSH daemon to prevent remote hosts from connecting to the proxy display. + +-Load settings from all system configuration files with the following command: ++Edit the "/etc/ssh/sshd_config" file to uncomment or add the line for the "X11UseLocalhost" keyword and set its value to "yes" (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): + +-$ sudo sysctl --system +- ++X11UseLocalhost yes ++ + +- ++ + + + +- ++ + SRG-OS-000480-GPOS-00227 + <GroupDescription></GroupDescription> +- +- RHEL-08-040281 +- RHEL 8 must disable access to network bpf syscall from unprivileged processes. +- <VulnDiscussion>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 +- +-Based on the information above, if a configuration file that begins with "99-" is created in the "/etc/sysctl.d/" directory, it will take precedence over any other configuration file on the system.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++ ++ RHEL-08-040350 ++ If the Trivial File Transfer Protocol (TFTP) server is required, the RHEL 8 TFTP daemon must be configured to operate in secure mode. ++ <VulnDiscussion>Restricting TFTP to a specific directory prevents remote users from copying, transferring, or overwriting system files.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -9827,36 +9156,22 @@ Based on the information above, if a configuration file that begins with "99-" i + 2921 + + CCI-000366 +- Configure RHEL 8 to prevent privilege escalation thru the kernel by disabling access to the bpf syscall by adding the following line to a file, which begins with "99-", in the "/etc/sysctl.d" directory: +- +-kernel.unprivileged_bpf_disabled = 1 +- +-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: ++ Configure the TFTP daemon to operate in secure mode by adding the following line to "/etc/xinetd.d/tftp" (or modify the line to have the required value): + +-$ sudo sysctl --system +- ++server_args = -s /var/lib/tftpboot ++ + +- ++ + + + +- ++ + SRG-OS-000480-GPOS-00227 + <GroupDescription></GroupDescription> +- +- RHEL-08-040282 +- RHEL 8 must restrict usage of ptrace to descendant processes. +- <VulnDiscussion>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 +- +-Based on the information above, if a configuration file that begins with "99-" is created in the "/etc/sysctl.d/" directory, it will take precedence over any other configuration file on the system.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++ ++ RHEL-08-040360 ++ A File Transfer Protocol (FTP) server package must not be installed unless mission essential on RHEL 8. ++ <VulnDiscussion>The FTP service provides an unencrypted remote access that does not provide for the confidentiality and integrity of user passwords or the remote session. If a privileged user were to log on using this service, the privileged user password could be compromised. SSH or other encrypted file transfer methods must be used in place of this service.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -9865,36 +9180,26 @@ Based on the information above, if a configuration file that begins with "99-" i + 2921 + + CCI-000366 +- Configure RHEL 8 to restrict usage of ptrace to descendant processes by adding the following line to a file, which begins with "99-", in the "/etc/sysctl.d" directory: +- +-kernel.yama.ptrace_scope = 1 +- +-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: ++ Document the FTP server package with the ISSO as an operational requirement or remove it from the system with the following command: + +-$ sudo sysctl --system +- ++$ sudo yum remove vsftpd ++ + +- ++ + + + +- ++ + SRG-OS-000480-GPOS-00227 + <GroupDescription></GroupDescription> +- +- RHEL-08-040283 +- RHEL 8 must restrict exposed kernel pointer addresses access. ++ ++ RHEL-08-040370 ++ The gssproxy package must not be installed unless mission essential on RHEL 8. + <VulnDiscussion>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 ++Operating systems are capable of providing a wide variety of functions and services. Some of the functions and services, provided by default, may not be necessary to support essential organizational operations (e.g., key missions, functions). + +-Based on the information above, if a configuration file that begins with "99-" is created in the "/etc/sysctl.d/" directory, it will take precedence over any other configuration file on the system.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++The gssproxy package is a proxy for GSS API credential handling and could expose secrets on some networks. It is not needed for normal function of the OS.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -9902,267 +9207,27 @@ Based on the information above, if a configuration file that begins with "99-" i + Red Hat Enterprise Linux 8 + 2921 + +- CCI-000366 +- Configure RHEL 8 to restrict exposed kernel pointer addresses access by adding the following line to a file, which begins with "99-", in the "/etc/sysctl.d" directory: +- +-kernel.kptr_restrict = 1 +- +-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: ++ CCI-000381 ++ Document the gssproxy package with the ISSO as an operational requirement or remove it from the system with the following command: + +-$ sudo sysctl --system +- ++$ sudo yum remove gssproxy ++ + +- ++ + + + +- ++ + SRG-OS-000480-GPOS-00227 + <GroupDescription></GroupDescription> +- +- RHEL-08-040284 +- RHEL 8 must disable the use of user namespaces. ++ ++ RHEL-08-040380 ++ The iprutils package must not be installed unless mission essential on RHEL 8. + <VulnDiscussion>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 ++Operating systems are capable of providing a wide variety of functions and services. Some of the functions and services, provided by default, may not be necessary to support essential organizational operations (e.g., key missions, functions). + +-Based on the information above, if a configuration file that begins with "99-" is created in the "/etc/sysctl.d/" directory, it will take precedence over any other configuration file on the system.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> +- +- DPMS Target Red Hat Enterprise Linux 8 +- DISA +- DPMS Target +- Red Hat Enterprise Linux 8 +- 2921 +- +- CCI-000366 +- Configure RHEL 8 to disable the use of user namespaces by adding the following line to a file, which begins with "99-", in the "/etc/sysctl.d" directory: +- +-Note: User namespaces are used primarily for Linux containers. If containers are in use, this requirement is not applicable. +- +-user.max_user_namespaces = 0 +- +-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 +- +- +- +- +- +- +- +- SRG-OS-000480-GPOS-00227 +- <GroupDescription></GroupDescription> +- +- RHEL-08-040285 +- RHEL 8 must use reverse path filtering on all IPv4 interfaces. +- <VulnDiscussion>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 +- +-Based on the information above, if a configuration file that begins with "99-" is created in the "/etc/sysctl.d/" directory, it will take precedence over any other configuration file on the system.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> +- +- DPMS Target Red Hat Enterprise Linux 8 +- DISA +- DPMS Target +- Red Hat Enterprise Linux 8 +- 2921 +- +- CCI-000366 +- Configure RHEL 8 to use reverse path filtering on all IPv4 interfaces by adding the following line to a file, which begins with "99-", in the "/etc/sysctl.d" directory: +- +-net.ipv4.conf.all.rp_filter = 1 +- +-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 +- +- +- +- +- +- +- +- SRG-OS-000480-GPOS-00227 +- <GroupDescription></GroupDescription> +- +- RHEL-08-040290 +- RHEL 8 must be configured to prevent unrestricted mail relaying. +- <VulnDiscussion>If unrestricted mail relaying is permitted, unauthorized senders could use this host as a mail relay for the purpose of sending spam or other unauthorized activity.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> +- +- DPMS Target Red Hat Enterprise Linux 8 +- DISA +- DPMS Target +- Red Hat Enterprise Linux 8 +- 2921 +- +- CCI-000366 +- If "postfix" is installed, modify the "/etc/postfix/main.cf" file to restrict client connections to the local network with the following command: +- +-$ sudo postconf -e 'smtpd_client_restrictions = permit_mynetworks,reject' +- +- +- +- +- +- +- +- SRG-OS-000480-GPOS-00227 +- <GroupDescription></GroupDescription> +- +- RHEL-08-040340 +- RHEL 8 remote X connections for interactive users must be disabled unless to fulfill documented and validated mission requirements. +- <VulnDiscussion>The security risk of using X11 forwarding is that the client's X11 display server may be exposed to attack when the SSH client requests forwarding. A system administrator may have a stance in which they want to protect clients that may expose themselves to attack by unwittingly requesting X11 forwarding, which can warrant a "no" setting. +- +-X11 forwarding should be enabled with caution. Users with the ability to bypass file permissions on the remote host (for the user's X11 authorization database) can access the local X11 display through the forwarded connection. An attacker may then be able to perform activities such as keystroke monitoring if the ForwardX11Trusted option is also enabled. +- +-If X11 services are not required for the system's intended function, they should be disabled or restricted as appropriate to the system’s needs.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> +- +- DPMS Target Red Hat Enterprise Linux 8 +- DISA +- DPMS Target +- Red Hat Enterprise Linux 8 +- 2921 +- +- CCI-000366 +- Edit the "/etc/ssh/sshd_config" file to uncomment or add the line for the "X11Forwarding" keyword and set its value to "no" (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): +- +-X11Forwarding no +- +-The SSH service must be restarted for changes to take effect: +- +-$ sudo systemctl restart sshd +- +- +- +- +- +- +- +- SRG-OS-000480-GPOS-00227 +- <GroupDescription></GroupDescription> +- +- RHEL-08-040341 +- The RHEL 8 SSH daemon must prevent remote hosts from connecting to the proxy display. +- <VulnDiscussion>When X11 forwarding is enabled, there may be additional exposure to the server and client displays if the sshd proxy display is configured to listen on the wildcard address. By default, sshd binds the forwarding server to the loopback address and sets the hostname part of the DIPSLAY environment variable to localhost. This prevents remote hosts from connecting to the proxy display.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> +- +- DPMS Target Red Hat Enterprise Linux 8 +- DISA +- DPMS Target +- Red Hat Enterprise Linux 8 +- 2921 +- +- CCI-000366 +- Configure the SSH daemon to prevent remote hosts from connecting to the proxy display. +- +-Edit the "/etc/ssh/sshd_config" file to uncomment or add the line for the "X11UseLocalhost" keyword and set its value to "yes" (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): +- +-X11UseLocalhost yes +- +- +- +- +- +- +- +- SRG-OS-000480-GPOS-00227 +- <GroupDescription></GroupDescription> +- +- RHEL-08-040350 +- If the Trivial File Transfer Protocol (TFTP) server is required, the RHEL 8 TFTP daemon must be configured to operate in secure mode. +- <VulnDiscussion>Restricting TFTP to a specific directory prevents remote users from copying, transferring, or overwriting system files.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> +- +- DPMS Target Red Hat Enterprise Linux 8 +- DISA +- DPMS Target +- Red Hat Enterprise Linux 8 +- 2921 +- +- CCI-000366 +- Configure the TFTP daemon to operate in secure mode by adding the following line to "/etc/xinetd.d/tftp" (or modify the line to have the required value): +- +-server_args = -s /var/lib/tftpboot +- +- +- +- +- +- +- +- SRG-OS-000480-GPOS-00227 +- <GroupDescription></GroupDescription> +- +- RHEL-08-040360 +- A File Transfer Protocol (FTP) server package must not be installed unless mission essential on RHEL 8. +- <VulnDiscussion>The FTP service provides an unencrypted remote access that does not provide for the confidentiality and integrity of user passwords or the remote session. If a privileged user were to log on using this service, the privileged user password could be compromised. SSH or other encrypted file transfer methods must be used in place of this service.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> +- +- DPMS Target Red Hat Enterprise Linux 8 +- DISA +- DPMS Target +- Red Hat Enterprise Linux 8 +- 2921 +- +- CCI-000366 +- Document the FTP server package with the ISSO as an operational requirement or remove it from the system with the following command: +- +-$ sudo yum remove vsftpd +- +- +- +- +- +- +- +- SRG-OS-000480-GPOS-00227 +- <GroupDescription></GroupDescription> +- +- RHEL-08-040370 +- The gssproxy package must not be installed unless mission essential on RHEL 8. +- <VulnDiscussion>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. +- +-Operating systems are capable of providing a wide variety of functions and services. Some of the functions and services, provided by default, may not be necessary to support essential organizational operations (e.g., key missions, functions). +- +-The gssproxy package is a proxy for GSS API credential handling and could expose secrets on some networks. It is not needed for normal function of the OS.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> +- +- DPMS Target Red Hat Enterprise Linux 8 +- DISA +- DPMS Target +- Red Hat Enterprise Linux 8 +- 2921 +- +- CCI-000381 +- Document the gssproxy package with the ISSO as an operational requirement or remove it from the system with the following command: +- +-$ sudo yum remove gssproxy +- +- +- +- +- +- +- +- SRG-OS-000480-GPOS-00227 +- <GroupDescription></GroupDescription> +- +- RHEL-08-040380 +- The iprutils package must not be installed unless mission essential on RHEL 8. +- <VulnDiscussion>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. +- +-Operating systems are capable of providing a wide variety of functions and services. Some of the functions and services, provided by default, may not be necessary to support essential organizational operations (e.g., key missions, functions). +- +-The iprutils package provides a suite of utilities to manage and configure SCSI devices supported by the ipr SCSI storage device driver.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> ++The iprutils package provides a suite of utilities to manage and configure SCSI devices supported by the ipr SCSI storage device driver.</VulnDiscussion><FalsePositives></FalsePositives><FalseNegatives></FalseNegatives><Documentable>false</Documentable><Mitigations></Mitigations><SeverityOverrideGuidance></SeverityOverrideGuidance><PotentialImpacts></PotentialImpacts><ThirdPartyTools></ThirdPartyTools><MitigationControl></MitigationControl><Responsibility></Responsibility><IAControls></IAControls> + + DPMS Target Red Hat Enterprise Linux 8 + DISA +@@ -10176,7 +9241,7 @@ The iprutils package provides a suite of utilities to manage and configure SCSI + $ sudo yum remove iprutils + + +- ++ + + + +@@ -10204,7 +9269,7 @@ The tuned package contains a daemon that tunes the system settings dynamically. + $ sudo yum remove tuned + + +- ++ + + + +@@ -10234,7 +9299,7 @@ FIPS 140-2 is the current standard for validating that mechanisms used to access + $ sudo yum remove krb5-server + + +- ++ + + + +@@ -10258,14 +9323,14 @@ ALL ALL=(ALL) ALL + ALL ALL=(ALL:ALL) ALL + + +- ++ + + + + + SRG-OS-000480-GPOS-00227 + <GroupDescription></GroupDescription> +- ++ + RHEL-08-010383 + RHEL 8 must use the invoking user's password for privilege escalation when using "sudo". + <VulnDiscussion>The sudoers security policy requires that users authenticate themselves before they can use sudo. When sudoers requires authentication, it validates the invoking user's credentials. If the rootpw, targetpw, or runaspw flags are defined and not disabled, by default the operating system will prompt the invoking user for the "root" user password. +@@ -10284,14 +9349,14 @@ Defaults !rootpw + Defaults !runaspw + + +- ++ + + + + + SRG-OS-000373-GPOS-00156 + <GroupDescription></GroupDescription> +- ++ + RHEL-08-010384 + RHEL 8 must require re-authentication when using the "sudo" command. + <VulnDiscussion>Without re-authentication, users may access resources or perform tasks for which they do not have authorization. +@@ -10316,18 +9381,18 @@ Defaults timestamp_timeout=[value] + Note: The "[value]" must be a number that is greater than or equal to "0". + + +- ++ + + + + + +- ++ + + + repotool + 5.10 +- 2021-10-04T21:38:10 ++ 2022-01-03T11:44:33 + + + +@@ -10358,7 +9423,7 @@ Note: The "[value]" must be a number that is greater than or equal to "0". + + +- ++ + + RHEL-08-010000 - RHEL 8 must be a vendor-supported release. + +@@ -10369,8 +9434,9 @@ Note: The "[value]" must be a number that is greater than or equal to "0". + +- ++ + ++ + + + +@@ -10420,9 +9486,9 @@ Passwords need to be protected at all times, and encryption is the standard meth + + + +- ++ + +- RHEL-08-010130 - The RHEL 8 password-auth file must be configured to use a sufficient number of hashing rounds. ++ RHEL-08-010130 - The RHEL 8 shadow password suite must be configured to use a sufficient number of hashing rounds. + + Red Hat Enterprise Linux 8 + +@@ -10431,7 +9497,8 @@ Passwords need to be protected at all times, and encryption is the standard meth + 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. + + +- ++ ++ + + + +@@ -10506,2717 +9573,2410 @@ RHEL 8 systems utilizing encryption are required to use FIPS-compliant mechanism + + 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. +- +- +- +- +- +- +- +- +- +- RHEL-08-010162 - The krb5-workstation package must not be installed on RHEL 8. +- +- Red Hat Enterprise Linux 8 +- +- 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. +- +- +- +- +- +- +- +- +- +- RHEL-08-010171 - RHEL 8 must have the policycoreutils package installed. +- +- Red Hat Enterprise Linux 8 +- +- 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. +- +- +- +- +- +- +- +- RHEL-08-010200 - RHEL 8 must be configured so that all network connections associated with SSH traffic are terminated at the end of the session or after 10 minutes of inactivity, except to fulfill documented and validated mission requirements. +- +- Red Hat Enterprise Linux 8 +- +- Terminating an idle SSH session within a short time period reduces the window of opportunity for unauthorized personnel to take control of a management session enabled on the console or console port that has been left unattended. In addition, quickly terminating an idle SSH session will also free up resources committed by the managed network element. +- +-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 that the operating system terminates all sessions or network access; it only ends the inactive session and releases the resources associated with that session. +- +-RHEL 8 utilizes /etc/ssh/sshd_config for configurations of OpenSSH. Within the sshd_config the product of the values of "ClientAliveInterval" and "ClientAliveCountMax" are used to establish the inactivity threshold. The "ClientAliveInterval" is a timeout interval in seconds after which if no data has been received from the client, sshd will send a message through the encrypted channel to request a response from the client. The "ClientAliveCountMax" is the number of client alive messages that may be sent without sshd receiving any messages back from the client. If this threshold is met, sshd will disconnect the client. +- +- +- +- +- +- +- +- +- RHEL-08-010210 - The RHEL 8 /var/log/messages file must have mode 0640 or less permissive. +- +- Red Hat Enterprise Linux 8 +- +- 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. +- +- +- +- +- +- +- +- RHEL-08-010220 - The RHEL 8 /var/log/messages file must be owned by root. +- +- Red Hat Enterprise Linux 8 +- +- 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. +- +- +- +- +- +- +- +- RHEL-08-010230 - The RHEL 8 /var/log/messages file must be group-owned by root. +- +- Red Hat Enterprise Linux 8 +- +- 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. +- +- +- +- +- +- +- +- RHEL-08-010240 - The RHEL 8 /var/log directory must have mode 0755 or less permissive. +- +- Red Hat Enterprise Linux 8 +- +- 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. +- +- +- +- +- +- +- +- RHEL-08-010250 - The RHEL 8 /var/log directory must be owned by root. +- +- Red Hat Enterprise Linux 8 +- +- 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. +- +- +- +- +- +- +- +- RHEL-08-010260 - The RHEL 8 /var/log directory must be group-owned by root. +- +- Red Hat Enterprise Linux 8 +- +- 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. +- +- +- +- +- +- +- +- RHEL-08-010292 - RHEL 8 must ensure the SSH server uses strong entropy. +- +- Red Hat Enterprise Linux 8 +- +- 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. +- +- +- +- +- +- +- +- +- +- RHEL-08-010294 - The RHEL 8 operating system must implement DoD-approved TLS encryption in the OpenSSL package. +- +- Red Hat Enterprise Linux 8 +- +- 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. +- +- +- +- +- +- +- +- RHEL-08-010300 - RHEL 8 system commands must have mode 755 or less permissive. +- +- Red Hat Enterprise Linux 8 +- +- 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. +- +- +- +- +- +- +- +- RHEL-08-010310 - RHEL 8 system commands must be owned by root. +- +- Red Hat Enterprise Linux 8 +- +- 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. +- +- +- +- +- +- +- +- RHEL-08-010320 - RHEL 8 system commands must be group-owned by root or a system account. +- +- Red Hat Enterprise Linux 8 +- +- 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. +- +- +- +- +- +- +- +- RHEL-08-010370 - 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. +- +- Red Hat Enterprise Linux 8 +- +- 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. +- +- +- +- +- +- +- +- +- RHEL-08-010371 - 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. +- +- Red Hat Enterprise Linux 8 +- +- 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. +- +- +- +- +- +- +- +- RHEL-08-010372 - RHEL 8 must prevent the loading of a new kernel for later execution. +- +- Red Hat Enterprise Linux 8 +- +- 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 +-Based on the information above, if a configuration file that begins with "99-" is created in the "/etc/sysctl.d/" directory, it will take precedence over any other configuration file on the system. +- +- +- +- +- +- +- +- +- RHEL-08-010373 - RHEL 8 must enable kernel parameters to enforce discretionary access control on symlinks. +- +- Red Hat Enterprise Linux 8 +- +- 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 lexicographically latest name will take precedence. Files are read from directories in the following list from top to bottom. Once a file of a gien 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 +- +-Based on the information above, if a configuration file begins with "99-" is created in the "/etc/sysctl.d/" directory, it will take precedence over any other configurationfile on the system. +- +- +- +- +- +- +- +- +- RHEL-08-010374 - RHEL 8 must enable kernel parameters to enforce discretionary access control on hardlinks. +- +- Red Hat Enterprise Linux 8 +- +- 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 +- +-Based on the information above, if a configuration file that begins with "99-" is created in the "/etc/sysctl.d/" directory, it will take precedence over any other configuration file on the system. +- +- +- +- +- +- +- +- +- RHEL-08-010375 - RHEL 8 must restrict access to the kernel message buffer. +- +- Red Hat Enterprise Linux 8 +- +- 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 lexicographically latest name will take precedence. Files are read from directories in the following list from top to bottom. Once a file of a gien 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 +- +-Based on the information above, if a configuration file begins with "99-" is created in the "/etc/sysctl.d/" directory, it will take precedence over any other configurationfile on the system. +- +- +- +- +- +- +- +- +- RHEL-08-010376 - RHEL 8 must prevent kernel profiling by unprivileged users. +- +- Red Hat Enterprise Linux 8 +- +- 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 +- +-Based on the information above, if a configuration file that begins with "99-" is created in the "/etc/sysctl.d/" directory, it will take precedence over any other configuration file on the system. +- +- +- +- ++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. ++ ++ ++ ++ ++ + + +- ++ + +- RHEL-08-010380 - RHEL 8 must require users to provide a password for privilege escalation. ++ RHEL-08-010162 - The krb5-workstation package must not be installed on RHEL 8. + + Red Hat Enterprise Linux 8 + +- Without reauthentication, users may access resources or perform tasks for which they do not have authorization. ++ 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. + +-When operating systems provide the capability to escalate a functional capability, it is critical the user reauthenticate. ++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. + +- +- +- ++ ++ ++ ++ + + +- ++ + +- RHEL-08-010381 - RHEL 8 must require users to reauthenticate for privilege escalation. ++ RHEL-08-010171 - RHEL 8 must have the policycoreutils package installed. + + Red Hat Enterprise Linux 8 + +- Without reauthentication, users may access resources or perform tasks for which they do not have authorization. ++ 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. + +-When operating systems provide the capability to escalate a functional capability, it is critical the user reauthenticate. ++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. + + +- +- ++ + + +- ++ + +- RHEL-08-010390 - RHEL 8 must have the packages required for multifactor authentication installed. ++ RHEL-08-010200 - RHEL 8 must be configured so that all network connections associated with SSH traffic are terminated at the end of the session or after 10 minutes of inactivity, except to fulfill documented and validated mission requirements. + + Red Hat Enterprise Linux 8 + +- 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. ++ Terminating an idle SSH session within a short time period reduces the window of opportunity for unauthorized personnel to take control of a management session enabled on the console or console port that has been left unattended. In addition, quickly terminating an idle SSH session will also free up resources committed by the managed network element. + +-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. ++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 that the operating system terminates all sessions or network access; it only ends the inactive session and releases the resources associated with that session. + +-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). ++RHEL 8 utilizes /etc/ssh/sshd_config for configurations of OpenSSH. Within the sshd_config the product of the values of "ClientAliveInterval" and "ClientAliveCountMax" are used to establish the inactivity threshold. The "ClientAliveInterval" is a timeout interval in seconds after which if no data has been received from the client, sshd will send a message through the encrypted channel to request a response from the client. The "ClientAliveCountMax" is the number of client alive messages that may be sent without sshd receiving any messages back from the client. If this threshold is met, sshd will disconnect the client. + +- +- ++ ++ ++ + + +- ++ + +- RHEL-08-010440 - YUM must remove all software components after updated versions have been installed on RHEL 8. ++ RHEL-08-010210 - The RHEL 8 /var/log/messages file must have mode 0640 or less permissive. + + Red Hat Enterprise Linux 8 + +- 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. ++ 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. + + +- ++ + + +- ++ + +- RHEL-08-010450 - RHEL 8 must enable the SELinux targeted policy. ++ RHEL-08-010220 - The RHEL 8 /var/log/messages file must be owned by root. + + Red Hat Enterprise Linux 8 + +- 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. ++ 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. + +-This requirement applies to operating systems performing security function verification/testing and/or systems and environments that require this functionality. ++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. + + +- ++ + + +- ++ + +- RHEL-08-010460 - There must be no shosts.equiv files on the RHEL 8 operating system. ++ RHEL-08-010230 - The RHEL 8 /var/log/messages file must be group-owned by root. + + Red Hat Enterprise Linux 8 + +- 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. ++ 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. + + +- ++ + + +- ++ + +- RHEL-08-010470 - There must be no .shosts files on the RHEL 8 operating system. ++ RHEL-08-010240 - The RHEL 8 /var/log directory must have mode 0755 or less permissive. + + Red Hat Enterprise Linux 8 + +- 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. ++ 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. + + +- ++ + + +- ++ + +- RHEL-08-010480 - The RHEL 8 SSH public host key files must have mode 0644 or less permissive. ++ RHEL-08-010250 - The RHEL 8 /var/log directory must be owned by root. + + Red Hat Enterprise Linux 8 + +- If a public host key file is modified by an unauthorized user, the SSH service may be compromised. ++ 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. + +- +- +- ++ ++ + + +- ++ + +- RHEL-08-010490 - The RHEL 8 SSH private host key files must have mode 0600 or less permissive. ++ RHEL-08-010260 - The RHEL 8 /var/log directory must be group-owned by root. + + Red Hat Enterprise Linux 8 + +- If an unauthorized user obtains the private SSH host key file, the host could be impersonated. ++ 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. + +- +- +- ++ ++ + + +- ++ + +- RHEL-08-010500 - The RHEL 8 SSH daemon must perform strict mode checking of home directory configuration files. ++ RHEL-08-010292 - RHEL 8 must ensure the SSH server uses strong entropy. + + Red Hat Enterprise Linux 8 + +- 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. ++ 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. + +- +- +- ++ ++ ++ ++ + + +- ++ + +- RHEL-08-010510 - The RHEL 8 SSH daemon must not allow compression or must only allow compression after successful authentication. ++ RHEL-08-010294 - The RHEL 8 operating system must implement DoD-approved TLS encryption in the OpenSSL package. + + Red Hat Enterprise Linux 8 + +- If compression is allowed in an SSH connection prior to authentication, vulnerabilities in the compression software could result in compromise of the system from an unauthenticated connection, potentially with root privileges. ++ 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. + +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + +- ++ + +- RHEL-08-010520 - The RHEL 8 SSH daemon must not allow authentication using known hosts authentication. ++ RHEL-08-010300 - RHEL 8 system commands must have mode 755 or less permissive. + + Red Hat Enterprise Linux 8 + +- 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. ++ 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. + +- +- +- ++ ++ + + +- ++ + +- RHEL-08-010521 - The RHEL 8 SSH daemon must not allow Kerberos authentication, except to fulfill documented and validated mission requirements. ++ RHEL-08-010310 - RHEL 8 system commands must be owned by root. + + Red Hat Enterprise Linux 8 + +- Configuring these settings for the SSH daemon provides additional assurance that remote logon via SSH will not use Kerberos authentication, even in the event of misconfiguration elsewhere. ++ 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. + +- +- +- ++ ++ + + +- ++ + +- RHEL-08-010540 - RHEL 8 must use a separate file system for /var. ++ RHEL-08-010320 - RHEL 8 system commands must be group-owned by root or a system account. + + Red Hat Enterprise Linux 8 + +- The use of separate file systems for different paths can protect the system from failures resulting from a file system becoming full or failing. ++ 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. + + +- +- ++ + + +- ++ + +- RHEL-08-010541 - RHEL 8 must use a separate file system for /var/log. ++ RHEL-08-010370 - 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. + + Red Hat Enterprise Linux 8 + +- The use of separate file systems for different paths can protect the system from failures resulting from a file system becoming full or failing. ++ 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. + + +- +- ++ ++ + + +- ++ + +- RHEL-08-010542 - RHEL 8 must use a separate file system for the system audit data path. ++ RHEL-08-010371 - 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. + + Red Hat Enterprise Linux 8 + +- The use of separate file systems for different paths can protect the system from failures resulting from a file system becoming full or failing. ++ 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. + + +- +- ++ + + +- ++ + +- RHEL-08-010543 - A separate RHEL 8 filesystem must be used for the /tmp directory. ++ RHEL-08-010372 - RHEL 8 must prevent the loading of a new kernel for later execution. + + Red Hat Enterprise Linux 8 + +- The use of separate file systems for different paths can protect the system from failures resulting from a file system becoming full or failing. ++ 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 ++Based on the information above, if a configuration file that begins with "99-" is created in the "/etc/sysctl.d/" directory, it will take precedence over any other configuration file on the system. + +- +- +- ++ ++ ++ + + +- ++ + +- RHEL-08-010550 - RHEL 8 must not permit direct logons to the root account using remote access via SSH. ++ RHEL-08-010373 - RHEL 8 must enable kernel parameters to enforce discretionary access control on symlinks. + + Red Hat Enterprise Linux 8 + +- 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. ++ 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 lexicographically latest name will take precedence. Files are read from directories in the following list from top to bottom. Once a file of a gien 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 ++ ++Based on the information above, if a configuration file begins with "99-" is created in the "/etc/sysctl.d/" directory, it will take precedence over any other configurationfile on the system. + +- +- +- ++ ++ ++ + + +- ++ + +- RHEL-08-010560 - The auditd service must be running in RHEL 8. ++ RHEL-08-010374 - RHEL 8 must enable kernel parameters to enforce discretionary access control on hardlinks. + + Red Hat Enterprise Linux 8 + +- 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. ++ 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. + +-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. ++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 ++ ++Based on the information above, if a configuration file that begins with "99-" is created in the "/etc/sysctl.d/" directory, it will take precedence over any other configuration file on the system. + +- +- +- ++ ++ ++ + + +- ++ + +- RHEL-08-010561 - The rsyslog service must be running in RHEL 8. ++ RHEL-08-010375 - RHEL 8 must restrict access to the kernel message buffer. + + Red Hat Enterprise Linux 8 + +- 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. ++ 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. + +-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. ++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 lexicographically latest name will take precedence. Files are read from directories in the following list from top to bottom. Once a file of a gien 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 ++ ++Based on the information above, if a configuration file begins with "99-" is created in the "/etc/sysctl.d/" directory, it will take precedence over any other configurationfile on the system. + +- +- +- ++ ++ ++ + + +- ++ + +- RHEL-08-010571 - RHEL 8 must prevent files with the setuid and setgid bit set from being executed on the /boot directory. ++ RHEL-08-010376 - RHEL 8 must prevent kernel profiling by unprivileged users. + + Red Hat Enterprise Linux 8 + +- 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. ++ 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 ++ ++Based on the information above, if a configuration file that begins with "99-" is created in the "/etc/sysctl.d/" directory, it will take precedence over any other configuration file on the system. + +- +- +- +- +- +- ++ ++ ++ + + +- ++ + +- RHEL-08-010580 - RHEL 8 must prevent special devices on non-root local partitions. ++ RHEL-08-010380 - RHEL 8 must require users to provide a password for privilege escalation. + + Red Hat Enterprise Linux 8 + +- 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. ++ 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. + + +- +- ++ ++ + + +- ++ + +- RHEL-08-010630 - RHEL 8 must prevent code from being executed on file systems that are imported via Network File System (NFS). ++ RHEL-08-010381 - RHEL 8 must require users to reauthenticate for privilege escalation. + + Red Hat Enterprise Linux 8 + +- 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. ++ 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. + +- +- +- ++ ++ ++ + + +- ++ + +- RHEL-08-010640 - RHEL 8 must prevent special devices on file systems that are imported via Network File System (NFS). ++ RHEL-08-010390 - RHEL 8 must have the packages required for multifactor authentication installed. + + Red Hat Enterprise Linux 8 + +- 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. ++ 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). + + +- +- ++ + + +- ++ + +- RHEL-08-010650 - 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). ++ RHEL-08-010440 - YUM must remove all software components after updated versions have been installed on RHEL 8. + + Red Hat Enterprise Linux 8 + +- 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. ++ 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. + +- +- +- ++ ++ + + +- ++ + +- RHEL-08-010671 - RHEL 8 must disable the kernel.core_pattern. ++ RHEL-08-010450 - RHEL 8 must enable the SELinux targeted policy. + + Red Hat Enterprise Linux 8 + +- 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 ++ 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. + +-Based on the information above, if a configuration file that begins with "99-" is created in the "/etc/sysctl.d/" directory, it will take precedence over any other configuration file on the system. ++This requirement applies to operating systems performing security function verification/testing and/or systems and environments that require this functionality. + +- +- +- ++ ++ + + +- ++ + +- RHEL-08-010673 - RHEL 8 must disable core dumps for all users. ++ RHEL-08-010460 - There must be no shosts.equiv files on the RHEL 8 operating system. + + Red Hat Enterprise Linux 8 + +- 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. ++ 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. + +- +- +- ++ ++ + + +- ++ + +- RHEL-08-010674 - RHEL 8 must disable storing core dumps. ++ RHEL-08-010470 - There must be no .shosts files on the RHEL 8 operating system. + + Red Hat Enterprise Linux 8 + +- 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. ++ 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. + + +- ++ + + +- ++ + +- RHEL-08-010675 - RHEL 8 must disable core dump backtraces. ++ RHEL-08-010480 - The RHEL 8 SSH public host key files must have mode 0644 or less permissive. + + Red Hat Enterprise Linux 8 + +- 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. ++ If a public host key file is modified by an unauthorized user, the SSH service may be compromised. + +- +- ++ ++ ++ + + +- ++ + +- RHEL-08-010760 - All RHEL 8 local interactive user accounts must be assigned a home directory upon creation ++ RHEL-08-010490 - The RHEL 8 SSH private host key files must have mode 0600 or less permissive. + + Red Hat Enterprise Linux 8 + +- 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. ++ If an unauthorized user obtains the private SSH host key file, the host could be impersonated. + +- +- ++ ++ ++ + + +- ++ + +- RHEL-08-010830 - RHEL 8 must not allow users to override SSH environment variables. ++ RHEL-08-010500 - The RHEL 8 SSH daemon must perform strict mode checking of home directory configuration files. + + Red Hat Enterprise Linux 8 + +- SSH environment options potentially allow users to bypass access restriction in some configurations. ++ 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. + +- +- +- ++ ++ ++ + + +- ++ + +- RHEL-08-020010 - RHEL 8 must automatically lock an account when three unsuccessful logon attempts occur. ++ RHEL-08-010510 - The RHEL 8 SSH daemon must not allow compression or must only allow compression after successful authentication. + + Red Hat Enterprise Linux 8 + +- 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 also re-enabled after system reboot. If that is undesirable a different tally directory must be set with the "dir" option. ++ If compression is allowed in an SSH connection prior to authentication, vulnerabilities in the compression software could result in compromise of the system from an unauthenticated connection, potentially with root privileges. + +- +- +- +- +- +- +- +- +- +- ++ ++ ++ + + +- ++ + +- RHEL-08-020011 - RHEL 8 must automatically lock an account when three unsuccessful logon attempts occur. ++ RHEL-08-010520 - The RHEL 8 SSH daemon must not allow authentication using known hosts authentication. + + Red Hat Enterprise Linux 8 + +- 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 also re-enabled after system reboot. If that is undesirable a different tally directory must be set with the "dir" option. ++ 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. + +- +- +- ++ ++ ++ + + +- ++ + +- RHEL-08-020012 - RHEL 8 must automatically lock an account when three unsuccessful logon attempts occur during a 15-minute time period. ++ RHEL-08-010521 - The RHEL 8 SSH daemon must not allow Kerberos authentication, except to fulfill documented and validated mission requirements. + + Red Hat Enterprise Linux 8 + +- 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. ++ Configuring these settings for the SSH daemon provides additional assurance that remote logon via SSH will not use Kerberos authentication, even in the event of misconfiguration elsewhere. + +- +- +- +- +- +- ++ ++ ++ + + +- ++ + +- RHEL-08-020013 - RHEL 8 must automatically lock an account when three unsuccessful logon attempts occur during a 15-minute time period. ++ RHEL-08-010540 - RHEL 8 must use a separate file system for /var. + + Red Hat Enterprise Linux 8 + +- 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. ++ The use of separate file systems for different paths can protect the system from failures resulting from a file system becoming full or failing. + +- +- +- ++ ++ ++ + + +- ++ + +- RHEL-08-020014 - 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. ++ RHEL-08-010541 - RHEL 8 must use a separate file system for /var/log. + + Red Hat Enterprise Linux 8 + +- 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. ++ The use of separate file systems for different paths can protect the system from failures resulting from a file system becoming full or failing. + +- +- +- +- +- +- +- +- ++ ++ ++ + + +- ++ + +- RHEL-08-020015 - 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. ++ RHEL-08-010542 - RHEL 8 must use a separate file system for the system audit data path. + + Red Hat Enterprise Linux 8 + +- 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. ++ The use of separate file systems for different paths can protect the system from failures resulting from a file system becoming full or failing. + +- +- +- ++ ++ ++ + + +- ++ + +- RHEL-08-020018 - RHEL 8 must prevent system messages from being presented when three unsuccessful logon attempts occur. ++ RHEL-08-010543 - A separate RHEL 8 filesystem must be used for the /tmp directory. + + Red Hat Enterprise Linux 8 + +- 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 also re-enabled after system reboot. If that is undesirable a different tally directory must be set with the "dir" option. ++ The use of separate file systems for different paths can protect the system from failures resulting from a file system becoming full or failing. + +- +- +- +- +- +- ++ ++ ++ + + +- ++ + +- RHEL-08-020019 - RHEL 8 must prevent system messages from being presented when three unsuccessful logon attempts occur. ++ RHEL-08-010550 - RHEL 8 must not permit direct logons to the root account using remote access via SSH. + + Red Hat Enterprise Linux 8 + +- 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 also re-enabled after system reboot. If that is undesirable a different tally directory must be set with the "dir" option. ++ 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. + +- +- +- ++ ++ ++ + + +- ++ + +- RHEL-08-020020 - RHEL 8 must log user name information when unsuccessful logon attempts occur. ++ RHEL-08-010560 - The auditd service must be running in RHEL 8. + + Red Hat Enterprise Linux 8 + +- 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. ++ 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. + +-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 also re-enabled after system reboot. If that is undesirable a different tally directory must be set with the "dir" option. ++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. + +- +- +- +- +- +- ++ ++ ++ + + +- ++ + +- RHEL-08-020021 - RHEL 8 must prevent system messages from being presented when three unsuccessful logon attempts occur. ++ RHEL-08-010561 - The rsyslog service must be running in RHEL 8. + + Red Hat Enterprise Linux 8 + +- 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. ++ 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. + +-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 also re-enabled after system reboot. If that is undesirable a different tally directory must be set with the "dir" option. ++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. + +- +- +- ++ ++ ++ + + +- ++ + +- RHEL-08-020022 - 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. ++ RHEL-08-010571 - RHEL 8 must prevent files with the setuid and setgid bit set from being executed on the /boot directory. + + Red Hat Enterprise Linux 8 + +- 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 also re-enabled after system reboot. If that is undesirable a different tally directory must be set with the "dir" option. ++ 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. + +- +- +- +- +- ++ ++ ++ ++ ++ + + + +- ++ + +- RHEL-08-020023 - 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. ++ RHEL-08-010580 - RHEL 8 must prevent special devices on non-root local partitions. + + Red Hat Enterprise Linux 8 + +- 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 also re-enabled after system reboot. If that is undesirable a different tally directory must be set with the "dir" option. ++ 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. + +- +- +- ++ ++ ++ + + +- ++ + +- RHEL-08-020024 - RHEL 8 must limit the number of concurrent sessions to ten for all accounts and/or account types. ++ RHEL-08-010630 - RHEL 8 must prevent code from being executed on file systems that are imported via Network File System (NFS). + + Red Hat Enterprise Linux 8 + +- 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. ++ 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. + +- +- +- ++ ++ ++ + + +- ++ + +- RHEL-08-020040 - RHEL 8 must enable a user session lock until that user re-establishes access using established identification and authentication procedures for command line sessions. ++ RHEL-08-010640 - RHEL 8 must prevent special devices on file systems that are imported via Network File System (NFS). + + Red Hat Enterprise Linux 8 + +- 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. ++ 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. + + +- ++ ++ + + +- ++ + +- RHEL-08-020041 - RHEL 8 must ensure session control is automatically started at shell initialization. ++ RHEL-08-010650 - 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). + + Red Hat Enterprise Linux 8 + +- 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. ++ 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. + +- +- ++ ++ ++ + + +- ++ + +- RHEL-08-020042 - RHEL 8 must prevent users from disabling session control mechanisms. ++ RHEL-08-010671 - RHEL 8 must disable the kernel.core_pattern. + + Red Hat Enterprise Linux 8 + +- 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. ++ 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 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. ++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 + +-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. ++Based on the information above, if a configuration file that begins with "99-" is created in the "/etc/sysctl.d/" directory, it will take precedence over any other configuration file on the system. + +- +- ++ ++ ++ + + +- ++ + +- RHEL-08-020100 - RHEL 8 must ensure a password complexity module is enabled. ++ RHEL-08-010673 - RHEL 8 must disable core dumps for all users. + + Red Hat Enterprise Linux 8 + +- 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 ++ 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. + +-Note the value of "retry" set in these configuration files should be between "1" and "3". Manual changes to the listed files may be overwritten by the "authselect" program. ++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. + +- +- +- ++ ++ ++ + + +- ++ + +- RHEL-08-020110 - RHEL 8 must enforce password complexity by requiring that at least one uppercase character be used. ++ RHEL-08-010674 - RHEL 8 must disable storing core dumps. + + Red Hat Enterprise Linux 8 + +- 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. ++ 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. + +-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". ++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. + + +- ++ + + +- ++ + +- RHEL-08-020120 - RHEL 8 must enforce password complexity by requiring that at least one lower-case character be used. ++ RHEL-08-010675 - RHEL 8 must disable core dump backtraces. + + Red Hat Enterprise Linux 8 + +- 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. ++ 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. + +-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". ++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. + + +- ++ + + +- ++ + +- RHEL-08-020130 - RHEL 8 must enforce password complexity by requiring that at least one numeric character be used. ++ RHEL-08-010760 - All RHEL 8 local interactive user accounts must be assigned a home directory upon creation + + Red Hat Enterprise Linux 8 + +- 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". ++ 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. + + +- ++ + + +- ++ + +- RHEL-08-020140 - RHEL 8 must require the maximum number of repeating characters of the same character class be limited to four when passwords are changed. ++ RHEL-08-010830 - RHEL 8 must not allow users to override SSH environment variables. + + Red Hat Enterprise Linux 8 + +- 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. ++ SSH environment options potentially allow users to bypass access restriction in some configurations. + +- +- ++ ++ ++ + + +- ++ + +- RHEL-08-020150 - RHEL 8 must require the maximum number of repeating characters be limited to three when passwords are changed. ++ RHEL-08-020010 - RHEL 8 must automatically lock an account when three unsuccessful logon attempts occur. + + Red Hat Enterprise Linux 8 + +- 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. ++ 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. + +-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 can utilize the "pam_faillock.so" for this purpose. Note that manual changes to the listed files may be overwritten by the "authselect" program. + +-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. ++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 also re-enabled after system reboot. If that is undesirable a different tally directory must be set with the "dir" option. + +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + +- ++ + +- RHEL-08-020160 - RHEL 8 must require the change of at least four character classes when passwords are changed. ++ RHEL-08-020011 - RHEL 8 must automatically lock an account when three unsuccessful logon attempts occur. + + Red Hat Enterprise Linux 8 + +- 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. ++ 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. + +-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). ++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 also re-enabled after system reboot. If that is undesirable a different tally directory must be set with the "dir" option. + +- +- ++ ++ ++ + + +- ++ + +- RHEL-08-020170 - RHEL 8 must require the change of at least 8 characters when passwords are changed. ++ RHEL-08-020012 - RHEL 8 must automatically lock an account when three unsuccessful logon attempts occur during a 15-minute time period. + + Red Hat Enterprise Linux 8 + +- 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. ++ 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. + +-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 can utilize the "pam_faillock.so" for this purpose. Note that manual changes to the listed files may be overwritten by the "authselect" program. + +-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. ++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. + +- +- ++ ++ ++ ++ ++ ++ + + +- ++ + +- RHEL-08-020180 - RHEL 8 passwords must have a 24 hours/1 day minimum password lifetime restriction in /etc/shadow. ++ RHEL-08-020013 - RHEL 8 must automatically lock an account when three unsuccessful logon attempts occur during a 15-minute time period. + + Red Hat Enterprise Linux 8 + +- 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. ++ 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. + +- +- +- ++ ++ ++ + + +- ++ + +- RHEL-08-020190 - RHEL 8 passwords for new users or password changes must have a 24 hours/1 day minimum password lifetime restriction in /etc/logins.def. ++ RHEL-08-020014 - 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. + + Red Hat Enterprise Linux 8 + +- 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. ++ 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. + +- +- ++ ++ ++ ++ ++ ++ ++ ++ + + +- ++ + +- RHEL-08-020200 - RHEL 8 user account passwords must have a 60-day maximum password lifetime restriction. ++ RHEL-08-020015 - 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. + + Red Hat Enterprise Linux 8 + +- 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. ++ 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. + +- +- ++ ++ ++ + + +- ++ + +- RHEL-08-020210 - RHEL 8 user account passwords must be configured so that existing passwords are restricted to a 60-day maximum lifetime. ++ RHEL-08-020018 - RHEL 8 must prevent system messages from being presented when three unsuccessful logon attempts occur. + + Red Hat Enterprise Linux 8 + +- 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. ++ 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 also re-enabled after system reboot. If that is undesirable a different tally directory must be set with the "dir" option. + +- +- +- +- +- ++ ++ ++ ++ ++ ++ + + +- ++ + +- RHEL-08-020220 - RHEL 8 passwords must be prohibited from reuse for a minimum of five generations. ++ RHEL-08-020019 - RHEL 8 must prevent system messages from being presented when three unsuccessful logon attempts occur. + + Red Hat Enterprise Linux 8 + +- 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. ++ 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 utilizes "pwquality" consecutively as a mechanism to enforce password complexity. This is set in both: +-/etc/pam.d/password-auth +-/etc/pam.d/system-auth. ++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. + +-Note that manual changes to the listed files may be overwritten by the "authselect" program. ++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 also re-enabled after system reboot. If that is undesirable a different tally directory must be set with the "dir" option. + +- +- +- ++ ++ ++ + + +- ++ + +- RHEL-08-020230 - RHEL 8 passwords must have a minimum of 15 characters. ++ RHEL-08-020020 - RHEL 8 must log user name information when unsuccessful logon attempts occur. + + Red Hat Enterprise Linux 8 + +- 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. ++ 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. + +-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. ++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. + +-The DoD minimum password requirement is 15 characters. ++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 also re-enabled after system reboot. If that is undesirable a different tally directory must be set with the "dir" option. + +- +- ++ ++ ++ ++ ++ ++ + + +- ++ + +- RHEL-08-020231 - RHEL 8 passwords for new users must have a minimum of 15 characters. ++ RHEL-08-020021 - RHEL 8 must prevent system messages from being presented when three unsuccessful logon attempts occur. + + Red Hat Enterprise Linux 8 + +- The shorter the password, the lower the number of possible combinations that need to be tested before the password is compromised. ++ 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. + +-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. ++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. + +-The DoD minimum password requirement is 15 characters. ++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 also re-enabled after system reboot. If that is undesirable a different tally directory must be set with the "dir" option. + +- +- ++ ++ ++ + + +- ++ + +- RHEL-08-020260 - RHEL 8 account identifiers (individuals, groups, roles, and devices) must be disabled after 35 days of inactivity. ++ RHEL-08-020022 - 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. + + Red Hat Enterprise Linux 8 + +- 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. ++ 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 needs to track periods of inactivity and disable application identifiers after 35 days of inactivity. ++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 also re-enabled after system reboot. If that is undesirable a different tally directory must be set with the "dir" option. + +- +- ++ ++ ++ ++ ++ ++ + + +- ++ + +- RHEL-08-020280 - All RHEL 8 passwords must contain at least one special character. ++ RHEL-08-020023 - 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. + + Red Hat Enterprise Linux 8 + +- 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. ++ 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. + +-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. ++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. + +-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". ++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 also re-enabled after system reboot. If that is undesirable a different tally directory must be set with the "dir" option. + +- +- ++ ++ ++ + + +- ++ + +- RHEL-08-020300 - RHEL 8 must prevent the use of dictionary words for passwords. ++ RHEL-08-020024 - RHEL 8 must limit the number of concurrent sessions to ten for all accounts and/or account types. + + Red Hat Enterprise Linux 8 + +- 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. ++ 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. + + +- ++ ++ + + +- ++ + +- RHEL-08-020310 - RHEL 8 must enforce a delay of at least four seconds between logon prompts following a failed logon attempt. ++ RHEL-08-020040 - RHEL 8 must enable a user session lock until that user re-establishes access using established identification and authentication procedures for command line sessions. + + Red Hat Enterprise Linux 8 + +- 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. ++ 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. + +-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. ++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. + + +- ++ + + +- ++ + +- RHEL-08-020330 - RHEL 8 must not have accounts configured with blank or null passwords. ++ RHEL-08-020041 - RHEL 8 must ensure session control is automatically started at shell initialization. + + Red Hat Enterprise Linux 8 + +- 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. ++ 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. + +- +- ++ ++ ++ + + +- ++ + +- RHEL-08-020350 - RHEL 8 must display the date and time of the last successful account logon upon an SSH logon. ++ RHEL-08-020042 - RHEL 8 must prevent users from disabling session control mechanisms. + + Red Hat Enterprise Linux 8 + +- Providing users with feedback on when account accesses via SSH last occurred facilitates user recognition and reporting of unauthorized account use. ++ 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. + +- +- +- ++ ++ + + +- ++ + +- RHEL-08-020351 - 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. ++ RHEL-08-020100 - RHEL 8 must ensure the password complexity module is enabled in the password-auth file. + + Red Hat Enterprise Linux 8 + +- Setting the most restrictive default permissions ensures that when new accounts are created, they do not have unnecessary access. ++ 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 + + +- ++ + + +- ++ + +- RHEL-08-030000 - 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. ++ RHEL-08-020110 - RHEL 8 must enforce password complexity by requiring that at least one uppercase character be used. + + Red Hat Enterprise Linux 8 + +- 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. ++ 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". + + +- +- +- +- +- ++ + + +- ++ + +- RHEL-08-030020 - The RHEL 8 System Administrator (SA) and Information System Security Officer (ISSO) (at a minimum) must be alerted of an audit processing failure event. ++ RHEL-08-020120 - RHEL 8 must enforce password complexity by requiring that at least one lower-case character be used. + + Red Hat Enterprise Linux 8 + +- 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. ++ 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. + +-Audit processing failures include software/hardware errors, failures in the audit capturing mechanisms, and audit storage capacity being reached or exceeded. ++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. + +-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. ++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". + + +- ++ + + +- ++ + +- RHEL-08-030040 - The RHEL 8 System must take appropriate action when an audit processing failure occurs. ++ RHEL-08-020130 - RHEL 8 must enforce password complexity by requiring that at least one numeric character be used. + + Red Hat Enterprise Linux 8 + +- 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. ++ 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. + +-Audit processing failures include software/hardware errors, failures in the audit capturing mechanisms, and audit storage capacity being reached or exceeded. ++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. + +-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. ++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". + + +- ++ + + +- ++ + +- RHEL-08-030050 - The RHEL 8 System Administrator (SA) and Information System Security Officer (ISSO) (at a minimum) must be alerted when the audit storage volume is full. ++ RHEL-08-020140 - RHEL 8 must require the maximum number of repeating characters of the same character class be limited to four when passwords are changed. + + Red Hat Enterprise Linux 8 + +- 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: ++ 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. + +-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. ++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. + +-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. ++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. + + +- ++ + + +- ++ + +- RHEL-08-030060 - The RHEL 8 audit system must take appropriate action when the audit storage volume is full. ++ RHEL-08-020150 - RHEL 8 must require the maximum number of repeating characters be limited to three when passwords are changed. + + Red Hat Enterprise Linux 8 + +- 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: ++ 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. + +-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. ++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. + +-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. ++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. + + +- ++ + + +- ++ + +- RHEL-08-030061 - The RHEL 8 audit system must audit local events. ++ RHEL-08-020160 - RHEL 8 must require the change of at least four character classes when passwords are changed. + + Red Hat Enterprise Linux 8 + +- 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. ++ 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. + +-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. ++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). + + +- ++ + + +- ++ + +- RHEL-08-030062 - RHEL 8 must label all off-loaded audit logs before sending them to the central log server. ++ RHEL-08-020170 - RHEL 8 must require the change of at least 8 characters when passwords are changed. + + Red Hat Enterprise Linux 8 + +- 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. ++ 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. + +-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. ++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. + +-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. ++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. + + +- ++ + + +- ++ + +- RHEL-08-030063 - RHEL 8 must resolve audit information before writing to disk. ++ RHEL-08-020180 - RHEL 8 passwords must have a 24 hours/1 day minimum password lifetime restriction in /etc/shadow. + + Red Hat Enterprise Linux 8 + +- 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. ++ 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. + + +- ++ ++ + + +- ++ + +- RHEL-08-030070 - RHEL 8 audit logs must have a mode of 0600 or less permissive to prevent unauthorized read access. ++ RHEL-08-020190 - RHEL 8 passwords for new users or password changes must have a 24 hours/1 day minimum password lifetime restriction in /etc/logins.def. + + Red Hat Enterprise Linux 8 + +- 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. ++ 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. + + +- ++ + + +- ++ + +- RHEL-08-030080 - RHEL 8 audit logs must be owned by root to prevent unauthorized read access. ++ RHEL-08-020200 - RHEL 8 user account passwords must have a 60-day maximum password lifetime restriction. + + Red Hat Enterprise Linux 8 + +- 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. ++ 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. + + +- ++ + + +- ++ + +- RHEL-08-030090 - RHEL 8 audit logs must be group-owned by root to prevent unauthorized read access. ++ RHEL-08-020210 - RHEL 8 user account passwords must be configured so that existing passwords are restricted to a 60-day maximum lifetime. + + Red Hat Enterprise Linux 8 + +- 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. ++ 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. + + +- ++ ++ ++ ++ + + +- ++ + +- RHEL-08-030100 - RHEL 8 audit log directory must be owned by root to prevent unauthorized read access. ++ RHEL-08-020220 - RHEL 8 must be configured in the password-auth file to prohibit password reuse for a minimum of five generations. + + Red Hat Enterprise Linux 8 + +- Unauthorized disclosure of audit records can reveal system and configuration data to attackers, thus compromising its confidentiality. ++ 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. + +-Audit information includes all information (e.g., audit records, audit settings, audit reports) needed to successfully audit RHEL 8 activity. ++RHEL 8 utilizes "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. + + +- ++ + + +- ++ + +- RHEL-08-030110 - RHEL 8 audit log directory must be group-owned by root to prevent unauthorized read access. ++ RHEL-08-020230 - RHEL 8 passwords must have a minimum of 15 characters. + + Red Hat Enterprise Linux 8 + +- Unauthorized disclosure of audit records can reveal system and configuration data to attackers, thus compromising its confidentiality. ++ The shorter the password, the lower the number of possible combinations that need to be tested before the password is compromised. + +-Audit information includes all information (e.g., audit records, audit settings, audit reports) needed to successfully audit RHEL 8 activity. ++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. + + +- ++ + + +- ++ + +- RHEL-08-030120 - RHEL 8 audit log directory must have a mode of 0700 or less permissive to prevent unauthorized read access. ++ RHEL-08-020231 - RHEL 8 passwords for new users must have a minimum of 15 characters. + + Red Hat Enterprise Linux 8 + +- Unauthorized disclosure of audit records can reveal system and configuration data to attackers, thus compromising its confidentiality. ++ The shorter the password, the lower the number of possible combinations that need to be tested before the password is compromised. + +-Audit information includes all information (e.g., audit records, audit settings, audit reports) needed to successfully audit RHEL 8 system activity. ++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. + + +- ++ + + +- ++ + +- RHEL-08-030121 - RHEL 8 audit system must protect auditing rules from unauthorized change. ++ RHEL-08-020260 - RHEL 8 account identifiers (individuals, groups, roles, and devices) must be disabled after 35 days of inactivity. + + Red Hat Enterprise Linux 8 + +- 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. ++ 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. + +-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. ++RHEL 8 needs to track periods of inactivity and disable application identifiers after 35 days of inactivity. + + +- ++ + + +- ++ + +- RHEL-08-030122 - RHEL 8 audit system must protect logon UIDs from unauthorized change. ++ RHEL-08-020280 - All RHEL 8 passwords must contain at least one special character. + + Red Hat Enterprise Linux 8 + +- Unauthorized disclosure of audit records can reveal system and configuration data to attackers, thus compromising its confidentiality. ++ 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. + +-Audit information includes all information (e.g., audit records, audit settings, audit reports) needed to successfully audit RHEL 8 system activity. ++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. + +-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. ++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". + + +- ++ + + +- ++ + +- RHEL-08-030130 - RHEL 8 must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/shadow. ++ RHEL-08-020300 - RHEL 8 must prevent the use of dictionary words for passwords. + + Red Hat Enterprise Linux 8 + +- 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). ++ 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. + +- +- +- ++ ++ ++ + + +- ++ + +- RHEL-08-030140 - RHEL 8 must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/security/opasswd. ++ RHEL-08-020310 - RHEL 8 must enforce a delay of at least four seconds between logon prompts following a failed logon attempt. + + Red Hat Enterprise Linux 8 + +- 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. ++ 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. + +-Audit records can be generated from various components within the information system (e.g., module or policy filter). ++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. + + +- +- ++ + + +- ++ + +- RHEL-08-030150 - RHEL 8 must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/passwd. ++ RHEL-08-020330 - RHEL 8 must not have accounts configured with blank or null passwords. + + Red Hat Enterprise Linux 8 + +- 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). ++ 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. + +- +- +- ++ ++ + + +- ++ + +- RHEL-08-030160 - RHEL 8 must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/gshadow. ++ RHEL-08-020350 - RHEL 8 must display the date and time of the last successful account logon upon an SSH logon. + + Red Hat Enterprise Linux 8 + +- 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). ++ Providing users with feedback on when account accesses via SSH last occurred facilitates user recognition and reporting of unauthorized account use. + +- +- +- ++ ++ ++ + + +- ++ + +- RHEL-08-030170 - RHEL 8 must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/group. ++ RHEL-08-020351 - 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. + + Red Hat Enterprise Linux 8 + +- 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). ++ Setting the most restrictive default permissions ensures that when new accounts are created, they do not have unnecessary access. + + +- +- ++ + + +- ++ + +- RHEL-08-030171 - RHEL 8 must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/sudoers. ++ RHEL-08-030000 - 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. + + Red Hat Enterprise Linux 8 + +- 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). ++ 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. + + +- +- ++ ++ ++ ++ ++ + + +- ++ + +- RHEL-08-030172 - RHEL 8 must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/sudoers.d/. ++ RHEL-08-030020 - The RHEL 8 System Administrator (SA) and Information System Security Officer (ISSO) (at a minimum) must be alerted of an audit processing failure event. + + Red Hat Enterprise Linux 8 + +- 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. ++ 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 records can be generated from various components within the information system (e.g., module or policy filter). ++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. + + +- +- ++ + + +- ++ + +- RHEL-08-030180 - The RHEL 8 audit package must be installed. ++ RHEL-08-030040 - The RHEL 8 System must take appropriate action when an audit processing failure occurs. + + Red Hat Enterprise Linux 8 + +- 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. ++ 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 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. ++Audit processing failures include software/hardware errors, failures in the audit capturing mechanisms, and audit storage capacity being reached or exceeded. + +-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. ++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. + + +- ++ + + +- ++ + +- RHEL-08-030190 - Successful/unsuccessful uses of the su command in RHEL 8 must generate an audit record. ++ RHEL-08-030060 - The RHEL 8 audit system must take appropriate action when the audit storage volume is full. + + Red Hat Enterprise Linux 8 + +- 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. ++ 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. + +-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 availability is an overriding concern, other approved actions in response to an audit failure are as follows: + +-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. ++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. + + +- +- ++ + + +- ++ + +- RHEL-08-030200 - The RHEL 8 audit system must be configured to audit any usage of the lremovexattr system call. ++ RHEL-08-030061 - The RHEL 8 audit system must audit local events. + + Red Hat Enterprise Linux 8 + +- 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). "Lremovexattr" is a system call that removes extended attributes. This is used for removal of extended attributes from symbolic links. ++ 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. + +-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. ++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. + + +- +- +- +- +- ++ + + +- ++ + +- RHEL-08-030210 - The RHEL 8 audit system must be configured to audit any usage of the removexattr system call ++ RHEL-08-030062 - RHEL 8 must label all off-loaded audit logs before sending them to the central log server. + + Red Hat Enterprise Linux 8 + +- 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. ++ 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 records can be generated from various components within the information system (e.g., module or policy filter). "Removexattr" is a system call that removes extended attributes. ++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. + +-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. ++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. + +-Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000458-GPOS-00203, SRG-OS-000462-GPOS-00206, SRG-OS-000463-GPOS-00207, SRG-OS-000468-GPOS-00212, SRG-OS-000471-GPOS-00215, SRG-OS-000474-GPOS-00219, SRG-OS-000466-GPOS-00210 ++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. + + +- +- +- +- +- ++ + + +- ++ + +- RHEL-08-030220 - The RHEL 8 audit system must be configured to audit any usage of the lsetxattr system call. ++ RHEL-08-030063 - RHEL 8 must resolve audit information before writing to disk. + + Red Hat Enterprise Linux 8 + +- 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. ++ 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 records can be generated from various components within the information system (e.g., module or policy filter). "Lsetxattr" is a system call used to set an extended attribute value. This is used to set extended attributes on a symbolic link. ++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. + +-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. ++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. + + +- +- +- +- +- ++ + + +- ++ + +- RHEL-08-030230 - The RHEL 8 audit system must be configured to audit any usage of the fsetxattr system call ++ RHEL-08-030070 - RHEL 8 audit logs must have a mode of 0600 or less permissive to prevent unauthorized read access. + + Red Hat Enterprise Linux 8 + +- Audit records can be generated from various components within the information system (e.g., module or policy filter). "Fsetxattr" is a system call used to set an extended attribute value. This is used to set extended attributes on a file. +- +-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. ++ 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. + +-Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000458-GPOS-00203, SRG-OS-000462-GPOS-00206, SRG-OS-000463-GPOS-00207, SRG-OS-000468-GPOS-00212, SRG-OS-000471-GPOS-00215, SRG-OS-000474-GPOS-00219 ++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. + + +- +- +- +- +- ++ + + +- ++ + +- RHEL-08-030240 - The RHEL 8 audit system must be configured to audit any usage of the fremovexattr system call ++ RHEL-08-030080 - RHEL 8 audit logs must be owned by root to prevent unauthorized read access. + + Red Hat Enterprise Linux 8 + +- 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). "Fremovexattr" is a system call that removes extended attributes. This is used for removal of extended attributes from a file. +- +-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. ++ 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. + +-Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000458-GPOS-00203, SRG-OS-000462-GPOS-00206, SRG-OS-000463-GPOS-00207, SRG-OS-000471-GPOS-00215, SRG-OS-000474-GPOS-00219, SRG-OS-000466-GPOS-00210 ++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. + + +- +- +- +- +- ++ + + +- ++ + +- RHEL-08-030250 - Successful/unsuccessful uses of the chage command in RHEL 8 must generate an audit record ++ RHEL-08-030090 - RHEL 8 audit logs must be group-owned by root to prevent unauthorized read access. + + Red Hat Enterprise Linux 8 + +- 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 "chage" command is used to change or view user password expiry information. +- +-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. ++ Unauthorized disclosure of audit records can reveal system and configuration data to attackers, thus compromising its confidentiality. + +-Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000468-GPOS-00212, SRG-OS-000471-GPOS-00215 ++Audit information includes all information (e.g., audit records, audit settings, audit reports) needed to successfully audit RHEL 8 activity. + + +- +- ++ + + +- ++ + +- RHEL-08-030260 - Successful/unsuccessful uses of the chcon command in RHEL 8 must generate an audit record ++ RHEL-08-030100 - RHEL 8 audit log directory must be owned by root to prevent unauthorized read access. + + Red Hat Enterprise Linux 8 + +- 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 "chcon" command is used to change file SELinux security context. +- +-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. ++ Unauthorized disclosure of audit records can reveal system and configuration data to attackers, thus compromising its confidentiality. + +-Satisfies: SRG-OS-000062-GPOS-00031, SRG-OS-000037-GPOS-00015, SRG-OS-000042-GPOS-00020, SRG-OS-000062-GPOS-00031, SRG-OS-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000468-GPOS-00212, SRG-OS-000471-GPOS-00215 ++Audit information includes all information (e.g., audit records, audit settings, audit reports) needed to successfully audit RHEL 8 activity. + + +- +- ++ + + +- ++ + +- RHEL-08-030270 - The RHEL 8 audit system must be configured to audit any usage of the setxattr system call. ++ RHEL-08-030110 - RHEL 8 audit log directory must be group-owned by root to prevent unauthorized read access. + + Red Hat Enterprise Linux 8 + +- 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. ++ Unauthorized disclosure of audit records can reveal system and configuration data to attackers, thus compromising its confidentiality. + +-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. ++Audit information includes all information (e.g., audit records, audit settings, audit reports) needed to successfully audit RHEL 8 activity. + + +- +- +- +- +- ++ + + +- ++ + +- RHEL-08-030280 - Successful/unsuccessful uses of the ssh-agent in RHEL 8 must generate an audit record. ++ RHEL-08-030120 - RHEL 8 audit log directory must have a mode of 0700 or less permissive to prevent unauthorized read access. + + Red Hat Enterprise Linux 8 + +- 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 "ssh-agent" is a program to hold private keys used for public key authentication. ++ Unauthorized disclosure of audit records can reveal system and configuration data to attackers, thus compromising its confidentiality. + +-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. ++Audit information includes all information (e.g., audit records, audit settings, audit reports) needed to successfully audit RHEL 8 system activity. + + +- +- ++ + + +- ++ + +- RHEL-08-030290 - Successful/unsuccessful uses of the passwd command in RHEL 8 must generate an audit record. ++ RHEL-08-030121 - RHEL 8 audit system must protect auditing rules from unauthorized change. + + Red Hat Enterprise Linux 8 + +- 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. ++ Unauthorized disclosure of audit records can reveal system and configuration data to attackers, thus compromising its confidentiality. + +-Audit records can be generated from various components within the information system (e.g., module or policy filter). The "passwd" command is used to change passwords for user accounts. ++Audit information includes all information (e.g., audit records, audit settings, audit reports) needed to successfully audit RHEL 8 system activity. + +-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. ++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. + + +- +- ++ + + +- ++ + +- RHEL-08-030300 - Successful/unsuccessful uses of the mount command in RHEL 8 must generate an audit record. ++ RHEL-08-030122 - RHEL 8 audit system must protect logon UIDs from unauthorized change. + + Red Hat Enterprise Linux 8 + +- 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. ++ Unauthorized disclosure of audit records can reveal system and configuration data to attackers, thus compromising its confidentiality. + +-Audit records can be generated from various components within the information system (e.g., module or policy filter). The "mount" command is used to mount a filesystem. ++Audit information includes all information (e.g., audit records, audit settings, audit reports) needed to successfully audit RHEL 8 system activity. + +-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. ++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. + + +- +- ++ + + +- ++ + +- RHEL-08-030301 - Successful/unsuccessful uses of the umount command in RHEL 8 must generate an audit record. ++ RHEL-08-030130 - RHEL 8 must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/shadow. + + Red Hat Enterprise Linux 8 + + 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 "umount" command is used to unmount a filesystem. +- +-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. ++Audit records can be generated from various components within the information system (e.g., module or policy filter). + + +- +- ++ ++ + + +- ++ + +- RHEL-08-030302 - Successful/unsuccessful uses of the mount syscall in RHEL 8 must generate an audit record. ++ RHEL-08-030140 - RHEL 8 must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/security/opasswd. + + Red Hat Enterprise Linux 8 + + 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 "mount" syscall is used to mount a filesystem. +- +-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. ++Audit records can be generated from various components within the information system (e.g., module or policy filter). + + + +- +- ++ + + +- ++ + +- RHEL-08-030310 - Successful/unsuccessful uses of the unix_update in RHEL 8 must generate an audit record. ++ RHEL-08-030150 - RHEL 8 must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/passwd. + + Red Hat Enterprise Linux 8 + +- Reconstruction of harmful events or forensic analysis is not possible if audit records do not contain enough information. +- +-At a minimum, the organization must audit the full-text recording of privileged commands. The organization must maintain audit trails in sufficient detail to reconstruct events to determine the cause and impact of compromise. "Unix_update" is a helper program for the "pam_unix" module that updates the password for a given user. It is not intended to be run directly from the command line and logs a security violation if done so. ++ 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. + +-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. ++Audit records can be generated from various components within the information system (e.g., module or policy filter). + + +- +- ++ ++ + + +- ++ + +- RHEL-08-030311 - Successful/unsuccessful uses of postdrop in RHEL 8 must generate an audit record. ++ RHEL-08-030160 - RHEL 8 must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/gshadow. + + Red Hat Enterprise Linux 8 + +- Reconstruction of harmful events or forensic analysis is not possible if audit records do not contain enough information. +- +-At a minimum, the organization must audit the full-text recording of privileged commands. The organization must maintain audit trails in sufficient detail to reconstruct events to determine the cause and impact of compromise. The "postdrop" command creates a file in the maildrop directory and copies its standard input to the file. ++ 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. + +-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. ++Audit records can be generated from various components within the information system (e.g., module or policy filter). + + +- +- ++ ++ + + +- ++ + +- RHEL-08-030312 - Successful/unsuccessful uses of postqueue in RHEL 8 must generate an audit record. ++ RHEL-08-030170 - RHEL 8 must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/group. + + Red Hat Enterprise Linux 8 + +- Reconstruction of harmful events or forensic analysis is not possible if audit records do not contain enough information. +- +-At a minimum, the organization must audit the full-text recording of privileged commands. The organization must maintain audit trails in sufficient detail to reconstruct events to determine the cause and impact of compromise. The "postqueue" command implements the Postfix user interface for queue management. ++ 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. + +-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. ++Audit records can be generated from various components within the information system (e.g., module or policy filter). + + +- +- ++ ++ + + +- ++ + +- RHEL-08-030313 - Successful/unsuccessful uses of semanage in RHEL 8 must generate an audit record. ++ RHEL-08-030171 - RHEL 8 must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/sudoers. + + Red Hat Enterprise Linux 8 + +- Reconstruction of harmful events or forensic analysis is not possible if audit records do not contain enough information. +- +-At a minimum, the organization must audit the full-text recording of privileged commands. The organization must maintain audit trails in sufficient detail to reconstruct events to determine the cause and impact of compromise. The "semanage" command is used to configure certain elements of SELinux policy without requiring modification to or recompilation from policy sources. ++ 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. + +-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. ++Audit records can be generated from various components within the information system (e.g., module or policy filter). + + + +- ++ + + +- ++ + +- RHEL-08-030314 - Successful/unsuccessful uses of setfiles in RHEL 8 must generate an audit record. ++ RHEL-08-030172 - RHEL 8 must generate audit records for all account creations, modifications, disabling, and termination events that affect /etc/sudoers.d/. + + Red Hat Enterprise Linux 8 + +- Reconstruction of harmful events or forensic analysis is not possible if audit records do not contain enough information. +- +-At a minimum, the organization must audit the full-text recording of privileged commands. The organization must maintain audit trails in sufficient detail to reconstruct events to determine the cause and impact of compromise. The "setfiles" command is primarily used to initialize the security context fields (extended attributes) on one or more filesystems (or parts of them). Usually it is initially run as part of the SELinux installation process (a step commonly known as labeling). ++ 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. + +-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. ++Audit records can be generated from various components within the information system (e.g., module or policy filter). + + + +- ++ + + +- ++ + +- RHEL-08-030315 - Successful/unsuccessful uses of userhelper in RHEL 8 must generate an audit record. ++ RHEL-08-030180 - The RHEL 8 audit package must be installed. + + Red Hat Enterprise Linux 8 + +- Reconstruction of harmful events or forensic analysis is not possible if audit records do not contain enough information. ++ 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. + +-At a minimum, the organization must audit the full-text recording of privileged commands. The organization must maintain audit trails in sufficient detail to reconstruct events to determine the cause and impact of compromise. The "userhelper" command is not intended to be run interactively. "Userhelper" provides a basic interface to change a user's password, gecos information, and shell. The main difference between this program and its traditional equivalents (passwd, chfn, chsh) is that prompts are written to standard out to make it easy for a graphical user interface wrapper to interface to it as a child process. ++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. + +-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. ++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. + + +- +- ++ + + +- ++ + +- RHEL-08-030316 - Successful/unsuccessful uses of setsebool in RHEL 8 must generate an audit record. ++ RHEL-08-030190 - Successful/unsuccessful uses of the su command in RHEL 8 must generate an audit record. + + Red Hat Enterprise Linux 8 + +- Reconstruction of harmful events or forensic analysis is not possible if audit records do not contain enough information. ++ 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. + +-At a minimum, the organization must audit the full-text recording of privileged commands. The organization must maintain audit trails in sufficient detail to reconstruct events to determine the cause and impact of compromise. The "setsebool" command sets the current state of a particular SELinux boolean or a list of booleans to a given value. ++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. + + +- +- ++ ++ + + +- ++ + +- RHEL-08-030317 - Successful/unsuccessful uses of unix_chkpwd in RHEL 8 must generate an audit record. ++ RHEL-08-030200 - The RHEL 8 audit system must be configured to audit any usage of the setxattr, fsetxattr, lsetxattr, removexattr, fremovexattr and lremovexattr system calls. + + Red Hat Enterprise Linux 8 + +- Reconstruction of harmful events or forensic analysis is not possible if audit records do not contain enough information. ++ 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. + +-At a minimum, the organization must audit the full-text recording of privileged commands. The organization must maintain audit trails in sufficient detail to reconstruct events to determine the cause and impact of compromise. The "unix_chkpwd" command is a helper program for the pam_unix module that verifies the password of the current user. It also checks password and account expiration dates in shadow. It is not intended to be run directly from the command line and logs a security violation if done so. ++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 file. ++"Lremovexattr" is a system call that removes extended attributes. This is used for removal of extended attributes from symbolic links. + +-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. ++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. ++ ++The system call rules are loaded into a matching engine that intercepts each syscall that all programs on the system makes. Therefore, it is very important to only use syscall rules when you have to since these affect performance. The more rules, the bigger the performance hit. You can help the performance, though, by combining syscalls into one rule whenever possible. + + + +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + +- ++ + +- RHEL-08-030320 - Successful/unsuccessful uses of the ssh-keysign in RHEL 8 must generate an audit record. ++ RHEL-08-030250 - Successful/unsuccessful uses of the chage command in RHEL 8 must generate an audit record + + Red Hat Enterprise Linux 8 + + 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 "ssh-keysign" program is an SSH helper program for host-based authentication. ++Audit records can be generated from various components within the information system (e.g., module or policy filter). The "chage" command is used to change or view user password expiry information. + +-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. ++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-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000468-GPOS-00212, SRG-OS-000471-GPOS-00215 + + + +- ++ + + +- ++ + +- RHEL-08-030330 - Successful/unsuccessful uses of the setfacl command in RHEL 8 must generate an audit record. ++ RHEL-08-030260 - Successful/unsuccessful uses of the chcon command in RHEL 8 must generate an audit record + + Red Hat Enterprise Linux 8 + + 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 "setfacl" command is used to set file access control lists. ++Audit records can be generated from various components within the information system (e.g., module or policy filter). The "chcon" command is used to change file SELinux security context. + +-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. ++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-000392-GPOS-00172, SRG-OS-000462-GPOS-00206, SRG-OS-000468-GPOS-00212, SRG-OS-000471-GPOS-00215 + + + +- ++ + + +- ++ + +- RHEL-08-030340 - Successful/unsuccessful uses of the pam_timestamp_check command in RHEL 8 must generate an audit record. ++ RHEL-08-030280 - Successful/unsuccessful uses of the ssh-agent in RHEL 8 must generate an audit record. + + Red Hat Enterprise Linux 8 + + 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 "pam_timestamp_check" command is used to check if the default timestamp is valid. ++Audit records can be generated from various components within the information system (e.g., module or policy filter). The "ssh-agent" is a program to hold private keys used for public key authentication. + + 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. + + +- +- ++ ++ + + +- ++ + +- RHEL-08-030350 - Successful/unsuccessful uses of the newgrp command in RHEL 8 must generate an audit record. ++ RHEL-08-030290 - Successful/unsuccessful uses of the passwd command in RHEL 8 must generate an audit record. + + Red Hat Enterprise Linux 8 + + 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 "newgrp" command is used to change the current group ID during a login session. ++Audit records can be generated from various components within the information system (e.g., module or policy filter). The "passwd" command is used to change passwords for user accounts. + + 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. + + + +- ++ + + +- ++ + +- RHEL-08-030360 - Successful/unsuccessful uses of the init_module command in RHEL 8 must generate an audit record. ++ RHEL-08-030300 - Successful/unsuccessful uses of the mount command in RHEL 8 must generate an audit record. + + Red Hat Enterprise Linux 8 + + 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 "init_module" command is used to load a kernel module. ++Audit records can be generated from various components within the information system (e.g., module or policy filter). The "mount" command is used to mount a filesystem. + + 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. + + + +- +- ++ + + +- ++ + +- RHEL-08-030361 - Successful/unsuccessful uses of the rename command in RHEL 8 must generate an audit record. ++ RHEL-08-030301 - Successful/unsuccessful uses of the umount command in RHEL 8 must generate an audit record. + + Red Hat Enterprise Linux 8 + + 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 "rename" command will rename the specified files by replacing the first occurrence of expression in their name by replacement. ++Audit records can be generated from various components within the information system (e.g., module or policy filter). The "umount" command is used to unmount a filesystem. + + 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. + + + +- +- ++ + + +- ++ + +- RHEL-08-030362 - Successful/unsuccessful uses of the renameat command in RHEL 8 must generate an audit record. ++ RHEL-08-030302 - Successful/unsuccessful uses of the mount syscall in RHEL 8 must generate an audit record. + + Red Hat Enterprise Linux 8 + + 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 "renameat" command renames a file, moving it between directories if required. ++Audit records can be generated from various components within the information system (e.g., module or policy filter). The "mount" syscall is used to mount a filesystem. + + 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. + + +- +- +- ++ ++ ++ + + +- ++ + +- RHEL-08-030363 - Successful/unsuccessful uses of the rmdir command in RHEL 8 must generate an audit record. ++ RHEL-08-030310 - Successful/unsuccessful uses of the unix_update in RHEL 8 must generate an audit record. + + Red Hat Enterprise Linux 8 + +- 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. ++ Reconstruction of harmful events or forensic analysis is not possible if audit records do not contain enough information. + +-Audit records can be generated from various components within the information system (e.g., module or policy filter). The "rmdir" command removes empty directories. ++At a minimum, the organization must audit the full-text recording of privileged commands. The organization must maintain audit trails in sufficient detail to reconstruct events to determine the cause and impact of compromise. "Unix_update" is a helper program for the "pam_unix" module that updates the password for a given user. It is not intended to be run directly from the command line and logs a security violation if done so. + + 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. + + + +- +- ++ + + +- ++ + +- RHEL-08-030364 - Successful/unsuccessful uses of the unlink command in RHEL 8 must generate an audit record. ++ RHEL-08-030311 - Successful/unsuccessful uses of postdrop in RHEL 8 must generate an audit record. + + Red Hat Enterprise Linux 8 + +- 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. ++ Reconstruction of harmful events or forensic analysis is not possible if audit records do not contain enough information. + +-Audit records can be generated from various components within the information system (e.g., module or policy filter). The "unlink" command deletes a name from the filesystem. If that name was the last link to a file and no processes have the file open, the file is deleted and the space it was using is made available for reuse. ++At a minimum, the organization must audit the full-text recording of privileged commands. The organization must maintain audit trails in sufficient detail to reconstruct events to determine the cause and impact of compromise. The "postdrop" command creates a file in the maildrop directory and copies its standard input to the file. + + 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. + + + +- +- ++ + + +- ++ + +- RHEL-08-030365 - Successful/unsuccessful uses of the unlinkat command in RHEL 8 must generate an audit record. ++ RHEL-08-030312 - Successful/unsuccessful uses of postqueue in RHEL 8 must generate an audit record. + + Red Hat Enterprise Linux 8 + +- 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. ++ Reconstruction of harmful events or forensic analysis is not possible if audit records do not contain enough information. + +-Audit records can be generated from various components within the information system (e.g., module or policy filter). The "unlinkat" system call operates in exactly the same way as either "unlink" or "rmdir" except for the differences described in the manual page. ++At a minimum, the organization must audit the full-text recording of privileged commands. The organization must maintain audit trails in sufficient detail to reconstruct events to determine the cause and impact of compromise. The "postqueue" command implements the Postfix user interface for queue management. + + 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. + + + +- +- ++ + + +- ++ + +- RHEL-08-030370 - Successful/unsuccessful uses of the gpasswd command in RHEL 8 must generate an audit record. ++ RHEL-08-030313 - Successful/unsuccessful uses of semanage in RHEL 8 must generate an audit record. + + Red Hat Enterprise Linux 8 + +- 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. ++ Reconstruction of harmful events or forensic analysis is not possible if audit records do not contain enough information. + +-Audit records can be generated from various components within the information system (e.g., module or policy filter). The "gpasswd" command is used to administer /etc/group and /etc/gshadow. Every group can have administrators, members and a password. ++At a minimum, the organization must audit the full-text recording of privileged commands. The organization must maintain audit trails in sufficient detail to reconstruct events to determine the cause and impact of compromise. The "semanage" command is used to configure certain elements of SELinux policy without requiring modification to or recompilation from policy sources. + + 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. + + +- +- ++ ++ + + +- ++ + +- RHEL-08-030380 - Successful/unsuccessful uses of the finit_module command in RHEL 8 must generate an audit record. ++ RHEL-08-030314 - Successful/unsuccessful uses of setfiles in RHEL 8 must generate an audit record. + + Red Hat Enterprise Linux 8 + +- 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. ++ Reconstruction of harmful events or forensic analysis is not possible if audit records do not contain enough information. + +-Audit records can be generated from various components within the information system (e.g., module or policy filter). The "finit_module" command is used to load a kernel module. ++At a minimum, the organization must audit the full-text recording of privileged commands. The organization must maintain audit trails in sufficient detail to reconstruct events to determine the cause and impact of compromise. The "setfiles" command is primarily used to initialize the security context fields (extended attributes) on one or more filesystems (or parts of them). Usually it is initially run as part of the SELinux installation process (a step commonly known as labeling). + + 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. + + +- +- +- ++ ++ + + +- ++ + +- RHEL-08-030390 - Successful/unsuccessful uses of the delete_module command in RHEL 8 must generate an audit record. ++ RHEL-08-030315 - Successful/unsuccessful uses of userhelper in RHEL 8 must generate an audit record. + + Red Hat Enterprise Linux 8 + +- 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. ++ Reconstruction of harmful events or forensic analysis is not possible if audit records do not contain enough information. + +-Audit records can be generated from various components within the information system (e.g., module or policy filter). The "delete_module" command is used to unload a kernel module. ++At a minimum, the organization must audit the full-text recording of privileged commands. The organization must maintain audit trails in sufficient detail to reconstruct events to determine the cause and impact of compromise. The "userhelper" command is not intended to be run interactively. "Userhelper" provides a basic interface to change a user's password, gecos information, and shell. The main difference between this program and its traditional equivalents (passwd, chfn, chsh) is that prompts are written to standard out to make it easy for a graphical user interface wrapper to interface to it as a child process. + + 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. + + +- +- +- ++ ++ + + +- ++ + +- RHEL-08-030400 - Successful/unsuccessful uses of the crontab command in RHEL 8 must generate an audit record. ++ RHEL-08-030316 - Successful/unsuccessful uses of setsebool in RHEL 8 must generate an audit record. + + Red Hat Enterprise Linux 8 + +- 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. ++ Reconstruction of harmful events or forensic analysis is not possible if audit records do not contain enough information. + +-Audit records can be generated from various components within the information system (e.g., module or policy filter). The "crontab" command is used to maintain crontab files for individual users. Crontab is the program used to install, remove, or list the tables used to drive the cron daemon. This is similar to the task scheduler used in other operating systems. ++At a minimum, the organization must audit the full-text recording of privileged commands. The organization must maintain audit trails in sufficient detail to reconstruct events to determine the cause and impact of compromise. The "setsebool" command sets the current state of a particular SELinux boolean or a list of booleans to a given value. + + 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. + + +- +- ++ ++ + + +- ++ + +- RHEL-08-030410 - Successful/unsuccessful uses of the chsh command in RHEL 8 must generate an audit record. ++ RHEL-08-030317 - Successful/unsuccessful uses of unix_chkpwd in RHEL 8 must generate an audit record. + + Red Hat Enterprise Linux 8 + +- 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. ++ Reconstruction of harmful events or forensic analysis is not possible if audit records do not contain enough information. + +-Audit records can be generated from various components within the information system (e.g., module or policy filter). The "chsh" command is used to change the login shell. ++At a minimum, the organization must audit the full-text recording of privileged commands. The organization must maintain audit trails in sufficient detail to reconstruct events to determine the cause and impact of compromise. The "unix_chkpwd" command is a helper program for the pam_unix module that verifies the password of the current user. It also checks password and account expiration dates in shadow. It is not intended to be run directly from the command line and logs a security violation if done so. + + 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. + + + +- ++ + + +- ++ + +- RHEL-08-030420 - Successful/unsuccessful uses of the truncate command in RHEL 8 must generate an audit record. ++ RHEL-08-030320 - Successful/unsuccessful uses of the ssh-keysign in RHEL 8 must generate an audit record. + + Red Hat Enterprise Linux 8 + + 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 "truncate" and "ftruncate" functions are used to truncate a file to a specified length. ++Audit records can be generated from various components within the information system (e.g., module or policy filter). The "ssh-keysign" program is an SSH helper program for host-based authentication. + + 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. + + + +- +- +- +- ++ + + +- ++ + +- RHEL-08-030430 - Successful/unsuccessful uses of the openat system call in RHEL 8 must generate an audit record. ++ RHEL-08-030330 - Successful/unsuccessful uses of the setfacl command in RHEL 8 must generate an audit record. + + Red Hat Enterprise Linux 8 + + 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 "openat" system call opens a file specified by a relative pathname. ++Audit records can be generated from various components within the information system (e.g., module or policy filter). The "setfacl" command is used to set file access control lists. + + 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. + + + +- +- +- +- ++ + + +- ++ + +- RHEL-08-030440 - Successful/unsuccessful uses of the open system call in RHEL 8 must generate an audit record. ++ RHEL-08-030340 - Successful/unsuccessful uses of the pam_timestamp_check command in RHEL 8 must generate an audit record. + + Red Hat Enterprise Linux 8 + + 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 "open system" call opens a file specified by a pathname. If the specified file does not exist, it may optionally be created by "open". ++Audit records can be generated from various components within the information system (e.g., module or policy filter). The "pam_timestamp_check" command is used to check if the default timestamp is valid. + + 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. + + +- +- +- +- +- ++ ++ + + +- ++ + +- RHEL-08-030450 - Successful/unsuccessful uses of the open_by_handle_at system call in RHEL 8 must generate an audit record. ++ RHEL-08-030350 - Successful/unsuccessful uses of the newgrp command in RHEL 8 must generate an audit record. + + Red Hat Enterprise Linux 8 + + 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 "name_to_handle_at" and "open_by_handle_at" system calls split the functionality of openat into two parts: "name_to_handle_at" returns an opaque handle that corresponds to a specified file; "open_by_handle_at" opens the file corresponding to a handle returned by a previous call to "name_to_handle_at" and returns an open file descriptor. ++Audit records can be generated from various components within the information system (e.g., module or policy filter). The "newgrp" command is used to change the current group ID during a login session. + + 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. + + + +- +- +- +- ++ + + +- ++ + +- RHEL-08-030460 - Successful/unsuccessful uses of the ftruncate command in RHEL 8 must generate an audit record. ++ RHEL-08-030360 - Successful/unsuccessful uses of the init_module and finit_module command system calls in RHEL 8 must generate an audit record. + + Red Hat Enterprise Linux 8 + + 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 "truncate" and "ftruncate" functions are used to truncate a file to a specified length. ++Audit records can be generated from various components within the information system (e.g., module or policy filter). The "init_module" and "finit_module" command system calls is are used to load a kernel module. + +-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. ++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. ++ ++The system call rules are loaded into a matching engine that intercepts each syscall that all programs on the system makes. Therefore, it is very important to only use syscall rules when you have to since these affect performance. The more rules, the bigger the performance hit. You can help the performance, though, by combining syscalls into one rule whenever possible. + + + +- +- +- +- ++ ++ ++ ++ + + +- ++ + +- RHEL-08-030470 - Successful/unsuccessful uses of the creat system call in RHEL 8 must generate an audit record. ++ RHEL-08-030361 - Successful/unsuccessful uses of the rename, unlink, rmdir, renameat and unlinkat commandsystem calls in RHEL 8 must generate an audit record. + + Red Hat Enterprise Linux 8 + + 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 "creat" system call is used to open and possibly create a file or device. ++Audit records can be generated from various components within the information system (e.g., module or policy filter). The "rename" command system call will rename the specified files by replacing the first occurrence of expression in their name by replacement. ++The "unlink" system call deletes a name from the filesystem. If that name was the last link to a file and no processes have the file open, the file is deleted and the space it was using is made available for reuse. ++The "rmdir" system call removes empty directories. ++The "renameat" system call renames a file, moving it between directories if required. ++The "unlinkat" system call operates in exactly the same way as either "unlink" or "rmdir" except for the differences described in the manual page. + +-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. ++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. ++The system call rules are loaded into a matching engine that intercepts each syscall that all programs on the system makes. Therefore, it is very important to only use syscall rules when you have to since these affect performance. The more rules, the bigger the performance hit. You can help the performance, though, by combining syscalls into one rule whenever possible. + + +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + +- ++ + +- RHEL-08-030480 - Successful/unsuccessful uses of the chown command in RHEL 8 must generate an audit record. ++ RHEL-08-030370 - Successful/unsuccessful uses of the gpasswd command in RHEL 8 must generate an audit record. + + Red Hat Enterprise Linux 8 + + 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 "chown" command is used to change file owner and group. ++Audit records can be generated from various components within the information system (e.g., module or policy filter). The "gpasswd" command is used to administer /etc/group and /etc/gshadow. Every group can have administrators, members and a password. + + 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. + + + +- +- ++ + + +- ++ + +- RHEL-08-030490 - Successful/unsuccessful uses of the chmod command in RHEL 8 must generate an audit record. ++ RHEL-08-030390 - Successful/unsuccessful uses of the delete_module command in RHEL 8 must generate an audit record. + + Red Hat Enterprise Linux 8 + + 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 "chmod" command changes the file mode bits of each given file according to mode, which can be either a symbolic representation of changes to make, or an octal number representing the bit pattern for the new mode bits. ++Audit records can be generated from various components within the information system (e.g., module or policy filter). The "delete_module" command is used to unload a kernel module. + + 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. + + + +- +- ++ ++ + + +- ++ + +- RHEL-08-030500 - Successful/unsuccessful uses of the lchown system call in RHEL 8 must generate an audit record. ++ RHEL-08-030400 - Successful/unsuccessful uses of the crontab command in RHEL 8 must generate an audit record. + + Red Hat Enterprise Linux 8 + + 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 "lchown" system call is used to change the ownership of the file specified by a path, which does not dereference symbolic links. ++Audit records can be generated from various components within the information system (e.g., module or policy filter). The "crontab" command is used to maintain crontab files for individual users. Crontab is the program used to install, remove, or list the tables used to drive the cron daemon. This is similar to the task scheduler used in other operating systems. + + 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. + + + +- +- ++ + + +- ++ + +- RHEL-08-030510 - Successful/unsuccessful uses of the fchownat system call in RHEL 8 must generate an audit record. ++ RHEL-08-030410 - Successful/unsuccessful uses of the chsh command in RHEL 8 must generate an audit record. + + Red Hat Enterprise Linux 8 + + 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 "fchownat" system call is used to change ownership of a file relative to a directory file descriptor. ++Audit records can be generated from various components within the information system (e.g., module or policy filter). The "chsh" command is used to change the login shell. + + 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. + + + +- +- ++ + + +- ++ + +- RHEL-08-030520 - Successful/unsuccessful uses of the fchown system call in RHEL 8 must generate an audit record. ++ RHEL-08-030420 - Successful/unsuccessful uses of the truncate, ftruncate, creat, open, openat, and open_by_handle_at system calls in RHEL 8 must generate an audit record. + + Red Hat Enterprise Linux 8 + + 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 "fchown" system call is used to change the ownership of a file referred to by the open file descriptor. ++Audit records can be generated from various components within the information system (e.g., module or policy filter). The "truncate" and "ftruncate" functions are used to truncate a file to a specified length. ++The "creat" system call is used to open and possibly create a file or device. ++The "open" system call opens a file specified by a pathname. If the specified file does not exist, it may optionally be created by "open". ++The "openat" system call opens a file specified by a relative pathname. ++The "name_to_handle_at" and "open_by_handle_at" system calls split the functionality of openat into two parts: "name_to_handle_at" returns an opaque handle that corresponds to a specified file; "open_by_handle_at" opens the file corresponding to a handle returned by a previous call to "name_to_handle_at" and returns an open file descriptor. + +-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. ++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. ++The system call rules are loaded into a matching engine that intercepts each syscall that all programs on the system makes. Therefore, it is very important to only use syscall rules when you have to since these affect performance. The more rules, the bigger the performance hit. You can help the performance, though, by combining syscalls into one rule whenever possible. + + + +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + +- ++ + +- RHEL-08-030530 - Successful/unsuccessful uses of the fchmodat system call in RHEL 8 must generate an audit record. ++ RHEL-08-030480 - Successful/unsuccessful uses of the chown, fchown, fchownat and lchown system calls in RHEL 8 must generate an audit record. + + Red Hat Enterprise Linux 8 + + 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 "fchmodat" system call is used to change permissions of a file relative to a directory file descriptor. ++Audit records can be generated from various components within the information system (e.g., module or policy filter). ++The "chown" command is used to change file owner and group. ++The "fchown" system call is used to change the ownership of a file referred to by the open file descriptor. ++The "fchownat" system call is used to change ownership of a file relative to a directory file descriptor. ++The "lchown" system call is used to change the ownership of the file specified by a path, which does not dereference symbolic links. + +-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. ++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. ++The system call rules are loaded into a matching engine that intercepts each syscall that all programs on the system makes. Therefore, it is very important to only use syscall rules when you have to since these affect performance. The more rules, the bigger the performance hit. You can help the performance, though, by combining syscalls into one rule whenever possible. + + + +- +- ++ ++ ++ ++ ++ ++ ++ ++ + + +- ++ + +- RHEL-08-030540 - Successful/unsuccessful uses of the fchmod system call in RHEL 8 must generate an audit record. ++ RHEL-08-030490 - Successful/unsuccessful uses of the chmod, fchmod and fchmodat system calls in RHEL 8 must generate an audit record. + + Red Hat Enterprise Linux 8 + + 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 "fchmod" system call is used to change permissions of a file. +- +-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. ++Audit records can be generated from various components within the information system (e.g., module or policy filter). ++The "chmod" command system call changes the file mode bits of each given file according to mode, which can be either a symbolic representation of changes to make, or an octal number representing the bit pattern for the new mode bits. ++The "fchmod" system call is used to change permissions of a file. ++The "fchmodat" system call is used to change permissions of a file relative to a directory file descriptor. ++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. ++The system call rules are loaded into a matching engine that intercepts each syscall that all programs on the system makes. Therefore, it is very important to only use syscall rules when you have to since these affect performance. The more rules, the bigger the performance hit. You can help the performance, though, by combining syscalls into one rule whenever possible. + + + ++ ++ ++ ++ + + + +@@ -13550,7 +12310,7 @@ If a privileged user were to log on using this service, the privileged user pass + + + +- ++ + + RHEL-08-040021 - RHEL 8 must disable the asynchronous transfer mode (ATM) protocol. + +@@ -13563,8 +12323,8 @@ Failing to disconnect unused protocols can result in a system compromise. + The Asynchronous Transfer Mode (ATM) is a protocol operating on network, data link, and physical layers, based on virtual circuits and virtual paths. Disabling ATM protects the system against exploitation of any laws in its implementation. + + +- +- ++ ++ + + + +@@ -14594,7 +13354,7 @@ FIPS 140-2 is the current standard for validating that mechanisms used to access + + + +- ++ + + RHEL-08-010383 - RHEL 8 must use the invoking user's password for privilege escalation when using "sudo". + +@@ -14604,21 +13364,21 @@ FIPS 140-2 is the current standard for validating that mechanisms used to access + For more information on each of the listed configurations, reference the sudoers(5) manual page. + + +- ++ + + + +- ++ + + + +- ++ + + + + + +- ++ + + RHEL-08-010384 - RHEL 8 must require re-authentication when using the "sudo" command. + +@@ -14630,7 +13390,7 @@ When operating systems provide the capability to escalate a functional capabilit + + If the value is set to an integer less than 0, the user's time stamp will not expire and the user will not have to re-authenticate for privileged actions until the user's session is terminated. + +- ++ + + + +@@ -14651,9 +13411,19 @@ If the value is set to an integer less than 0, the user's time stamp will not ex + + + +- ++ + +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + +@@ -14678,10 +13448,14 @@ If the value is set to an integer less than 0, the user's time stamp will not ex + + + +- ++ + + + ++ ++ ++ ++ + + + +@@ -14768,10 +13542,24 @@ If the value is set to an integer less than 0, the user's time stamp will not ex + + + +- ++ + + ++ ++ ++ ++ ++ ++ ++ ++ + ++ ++ ++ ++ ++ ++ + + + +@@ -15141,19 +13929,17 @@ If the value is set to an integer less than 0, the user's time stamp will not ex + + + +- ++ + + ++ ++ ++ + + + +- ++ + +- +- +- +- +- + + + +@@ -15216,11 +14002,7 @@ If the value is set to an integer less than 0, the user's time stamp will not ex + + + +- +- +- +- +- ++ + + + +@@ -15245,6 +14027,10 @@ If the value is set to an integer less than 0, the user's time stamp will not ex + + + ++ ++ ++ ++ + + + +@@ -15282,11 +14068,6 @@ If the value is set to an integer less than 0, the user's time stamp will not ex + + + +- +- +- +- +- + + + +@@ -15736,7 +14517,7 @@ If the value is set to an integer less than 0, the user's time stamp will not ex + + + +- ++ + + + +@@ -16093,29 +14874,29 @@ If the value is set to an integer less than 0, the user's time stamp will not ex + + + +- ++ + + +- ++ + + +- ++ + + +- ++ + + +- ++ + + +- ++ + + +- ++ + + + +- ++ + + + +@@ -16155,6 +14936,12 @@ If the value is set to an integer less than 0, the user's time stamp will not ex + ^\s*CPE_NAME="cpe:/o:redhat:enterprise_linux:8\.(\d+)\b + 1 + ++ ++ /etc ++ os-release ++ ^\s*PRETTY_NAME="Red Hat Enterprise Linux 8\.(\d+)\b ++ 1 ++ + + /proc/sys/crypto/fips_enabled + ^(\d+)$ +@@ -16182,10 +14969,14 @@ If the value is set to an integer less than 0, the user's time stamp will not ex + oval:mil.disa.stig.rhel8:ste:10401 + + +- +- /etc/pam.d +- password-auth +- ^[ \t]*password[ \t]+sufficient[ \t]+pam_unix\.so(?:[ \t]+|(?:[ \t][^#\r\f\n]+[ \t]))rounds=([\d]+)(?:[ \t]|$) ++ ++ /etc/login.defs ++ ^\s*SHA_CRYPT_MIN_ROUNDS\s+(\d+)\b ++ 1 ++ ++ ++ /etc/login.defs ++ ^\s*SHA_CRYPT_MAX_ROUNDS\s+(\d+)\b + 1 + + +@@ -16256,9 +15047,22 @@ If the value is set to an integer less than 0, the user's time stamp will not ex + ^[ \t]*SSH_USE_STRONG_RNG[ \t]*=[ \t]*32[ \t]*$ + 1 + +- ++ ++ crypto-policies ++ ++ ++ /etc/crypto-policies/back-ends/opensslcnf.config ++ ^\s*MinProtocol\s*=\s*([\.\w]+)\s*(?:#.*)?$ ++ 1 ++ ++ ++ /etc/crypto-policies/back-ends/opensslcnf.config ++ ^\s*TLS\.MinProtocol\s*=\s*([\.\w]+)\s*(?:#.*)?$ ++ 1 ++ ++ + /etc/crypto-policies/back-ends/opensslcnf.config +- ^\s*MinProtocol\s*=\s*(\S+)\s*(?:#.*)?$ ++ ^\s*DTLS\.MinProtocol\s*=\s*([\.\w]+)\s*(?:#.*)?$ + 1 + + +@@ -16687,25 +15491,25 @@ If the value is set to an integer less than 0, the user's time stamp will not ex + ^\s*set\s+-g\s+lock-command\s+vlock\s*(?:#.*)?$ + 1 + +- +- /etc/bashrc +- ^\s*\[\s+-n\s+"\$PS1"\s+-a\s+-z\s+"\$TMUX"\s+\]\s+&&\s+exec\s+tmux\s*(?:#.*)?$ ++ ++ /etc/profile.d ++ \.sh$ ++ ^\s*if\s+\[\s*"\$PS1"\s*\];\s+then\s+parent=\$\(ps\s+-o\s+ppid=\s+-p\s+\$\$\)\s+name=\$\(ps\s+-o\s+comm=\s+-p\s+\$parent\)\s+case\s+"\$name"\s+in\s+\(sshd\|login\)\s+exec\s+tmux\s+;;\s+esac\s+fi\s*$ + 1 + ++ ++ ^(/usr/bin/)?tmux\b ++ 1 ++ + + + /etc/shells + tmux + 1 + +- ++ + /etc/pam.d/password-auth +- ^\s*password\s+(?:(?:required)|(?:requisite))\s+pam_pwquality\.so.*retry=(\S+)\b +- 1 +- +- +- /etc/pam.d/system-auth +- ^\s*password\s+(?:(?:required)|(?:requisite))\s+pam_pwquality\.so.*retry=(\S+)\b ++ ^\s*password\s+(?:required|requisite)\s+pam_pwquality\.so\b + 1 + + +@@ -16801,14 +15605,9 @@ If the value is set to an integer less than 0, the user's time stamp will not ex + ^root:[^:]*:[^:]*:[^:]*:: + 1 + +- +- /etc/pam.d/system-auth +- ^\s*password\s+required\s+pam_pwhistory\.so\s+[^#\n]*\bremember=(\d).*$ +- 1 +- +- ++ + /etc/pam.d/password-auth +- ^\s*password\s+required\s+pam_pwhistory\.so\s+[^#\n]*\bremember=(\d).*$ ++ ^\s*password\s+required\s+pam_pwhistory\.so\s+[^#\n]*\bremember=(\d+)\b + 1 + + +@@ -16836,6 +15635,12 @@ If the value is set to an integer less than 0, the user's time stamp will not ex + ^\s*dictcheck\s*=\s*(\d*)\s*(?:#.*)?$ + 1 + ++ ++ /etc/pwquality.conf.d/ ++ ^.*\.conf$ ++ ^\s*dictcheck\s*=\s*(\d*)\s*(?:#.*)?$ ++ 1 ++ + + /etc/login.defs + ^\s*FAIL_DELAY\s+(\d+)\s*$ +@@ -16886,11 +15691,6 @@ If the value is set to an integer less than 0, the user's time stamp will not ex + (?i)^\s*disk_error_action\s*=\s*(\w+)\s*(?:#.*)?$ + 1 + +- +- /etc/audit/auditd.conf +- (?i)^\s*max_log_file_action\s*=\s*(\w+)\s*(?:#.*)?$ +- 1 +- + + /etc/audit/auditd.conf + (?i)^\s*disk_full_action\s*=\s*(\w+)\s*(?:#.*)?$ +@@ -16977,104 +15777,104 @@ If the value is set to an integer less than 0, the user's time stamp will not ex + ^\s*-a\s+(always,exit|exit,always)\s+-F\s+path=/usr/bin/su\s+(-F\s+perm=([rwa]*x[rwa]*)\s+)?-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+lremovexattr\s+|(\s+|,)lremovexattr(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+lremovexattr\s+|(\s+|,)lremovexattr(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+lremovexattr\s+|(\s+|,)lremovexattr(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+lremovexattr\s+|(\s+|,)lremovexattr(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+lremovexattr\s+|(\s+|,)lremovexattr(\s+|,))).*-F\s+auid=0(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+lremovexattr\s+|(\s+|,)lremovexattr(\s+|,))).*-F\s+auid=0(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+lremovexattr\s+|(\s+|,)lremovexattr(\s+|,))).*-F\s+auid=0(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+lremovexattr\s+|(\s+|,)lremovexattr(\s+|,))).*-F\s+auid=0(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+removexattr\s+|(\s+|,)removexattr(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+removexattr\s+|(\s+|,)removexattr(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+removexattr\s+|(\s+|,)removexattr(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+removexattr\s+|(\s+|,)removexattr(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+removexattr\s+|(\s+|,)removexattr(\s+|,))).*-F\s+auid=0(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+removexattr\s+|(\s+|,)removexattr(\s+|,))).*-F\s+auid=0(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+removexattr\s+|(\s+|,)removexattr(\s+|,))).*-F\s+auid=0(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+removexattr\s+|(\s+|,)removexattr(\s+|,))).*-F\s+auid=0(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+lsetxattr\s+|(\s+|,)lsetxattr(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+lsetxattr\s+|(\s+|,)lsetxattr(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+lsetxattr\s+|(\s+|,)lsetxattr(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+lsetxattr\s+|(\s+|,)lsetxattr(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+lsetxattr\s+|(\s+|,)lsetxattr(\s+|,))).*-F\s+auid=0(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+lsetxattr\s+|(\s+|,)lsetxattr(\s+|,))).*-F\s+auid=0(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+lsetxattr\s+|(\s+|,)lsetxattr(\s+|,))).*-F\s+auid=0(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+lsetxattr\s+|(\s+|,)lsetxattr(\s+|,))).*-F\s+auid=0(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+fsetxattr\s+|(\s+|,)fsetxattr(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+fsetxattr\s+|(\s+|,)fsetxattr(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+fsetxattr\s+|(\s+|,)fsetxattr(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+fsetxattr\s+|(\s+|,)fsetxattr(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+fsetxattr\s+|(\s+|,)fsetxattr(\s+|,))).*-F\s+auid=0(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+fsetxattr\s+|(\s+|,)fsetxattr(\s+|,))).*-F\s+auid=0(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+fsetxattr\s+|(\s+|,)fsetxattr(\s+|,))).*-F\s+auid=0(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+fsetxattr\s+|(\s+|,)fsetxattr(\s+|,))).*-F\s+auid=0(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+fremovexattr\s+|(\s+|,)fremovexattr(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+fremovexattr\s+|(\s+|,)fremovexattr(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+fremovexattr\s+|(\s+|,)fremovexattr(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+fremovexattr\s+|(\s+|,)fremovexattr(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+fremovexattr\s+|(\s+|,)fremovexattr(\s+|,))).*-F\s+auid=0(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+fremovexattr\s+|(\s+|,)fremovexattr(\s+|,))).*-F\s+auid=0(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+fremovexattr\s+|(\s+|,)fremovexattr(\s+|,))).*-F\s+auid=0(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+fremovexattr\s+|(\s+|,)fremovexattr(\s+|,))).*-F\s+auid=0(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + + +@@ -17087,24 +15887,24 @@ If the value is set to an integer less than 0, the user's time stamp will not ex + ^\s*-a\s+(always,exit|exit,always)\s+-F\s+path=/usr/bin/chcon\s+(-F\s+perm=([rwa]*x[rwa]*)\s+)?-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+setxattr\s+|(\s+|,)setxattr(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+setxattr\s+|(\s+|,)setxattr(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+setxattr\s+|(\s+|,)setxattr(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+setxattr\s+|(\s+|,)setxattr(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+setxattr\s+|(\s+|,)setxattr(\s+|,))).*-F\s+auid=0(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+setxattr\s+|(\s+|,)setxattr(\s+|,))).*-F\s+auid=0(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+setxattr\s+|(\s+|,)setxattr(\s+|,))).*-F\s+auid=0(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+setxattr\s+|(\s+|,)setxattr(\s+|,))).*-F\s+auid=0(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + + +@@ -17197,64 +15997,64 @@ If the value is set to an integer less than 0, the user's time stamp will not ex + ^\s*-a\s+(always,exit|exit,always)\s+-F\s+path=/usr/bin/newgrp\s+(-F\s+perm=([rwa]*x[rwa]*)\s+)?-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+init_module\s+|(\s+|,)init_module(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+init_module\s+|(\s+|,)init_module(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+init_module\s+|(\s+|,)init_module(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+init_module\s+|(\s+|,)init_module(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+rename\s+|(\s+|,)rename(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+rename\s+|(\s+|,)rename(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+rename\s+|(\s+|,)rename(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+rename\s+|(\s+|,)rename(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+renameat\s+|(\s+|,)renameat(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+renameat\s+|(\s+|,)renameat(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+renameat\s+|(\s+|,)renameat(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+renameat\s+|(\s+|,)renameat(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+rmdir\s+|(\s+|,)rmdir(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+rmdir\s+|(\s+|,)rmdir(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+rmdir\s+|(\s+|,)rmdir(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+rmdir\s+|(\s+|,)rmdir(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+unlink\s+|(\s+|,)unlink(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+unlink\s+|(\s+|,)unlink(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+unlink\s+|(\s+|,)unlink(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+unlink\s+|(\s+|,)unlink(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+unlinkat\s+|(\s+|,)unlinkat(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+unlinkat\s+|(\s+|,)unlinkat(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+unlinkat\s+|(\s+|,)unlinkat(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+unlinkat\s+|(\s+|,)unlinkat(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + + +@@ -17262,14 +16062,14 @@ If the value is set to an integer less than 0, the user's time stamp will not ex + ^\s*-a\s+(always,exit|exit,always)\s+-F\s+path=/usr/bin/gpasswd\s+(-F\s+perm=([rwa]*x[rwa]*)\s+)?-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+finit_module\s+|(\s+|,)finit_module(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+finit_module\s+|(\s+|,)finit_module(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+finit_module\s+|(\s+|,)finit_module(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+finit_module\s+|(\s+|,)finit_module(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + + +@@ -17292,194 +16092,194 @@ If the value is set to an integer less than 0, the user's time stamp will not ex + ^\s*-a\s+(always,exit|exit,always)\s+-F\s+path=/usr/bin/chsh\s+(-F\s+perm=([rwa]*x[rwa]*)\s+)?-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+truncate\s+|(\s+|,)truncate(\s+|,))).*-F\s+exit=-EPERM\s+-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+truncate\s+|(\s+|,)truncate(\s+|,))).*-F\s+exit=-EPERM\s+-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+truncate\s+|(\s+|,)truncate(\s+|,))).*-F\s+exit=-EPERM\s+-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+truncate\s+|(\s+|,)truncate(\s+|,))).*-F\s+exit=-EPERM\s+-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+truncate\s+|(\s+|,)truncate(\s+|,))).*-F\s+exit=-EACCES\s+-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+truncate\s+|(\s+|,)truncate(\s+|,))).*-F\s+exit=-EACCES\s+-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+truncate\s+|(\s+|,)truncate(\s+|,))).*-F\s+exit=-EACCES\s+-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+truncate\s+|(\s+|,)truncate(\s+|,))).*-F\s+exit=-EACCES\s+-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+openat\s+|(\s+|,)openat(\s+|,))).*-F\s+exit=-EPERM\s+-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+openat\s+|(\s+|,)openat(\s+|,))).*-F\s+exit=-EPERM\s+-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+openat\s+|(\s+|,)openat(\s+|,))).*-F\s+exit=-EPERM\s+-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+openat\s+|(\s+|,)openat(\s+|,))).*-F\s+exit=-EPERM\s+-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+openat\s+|(\s+|,)openat(\s+|,))).*-F\s+exit=-EACCES\s+-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+openat\s+|(\s+|,)openat(\s+|,))).*-F\s+exit=-EACCES\s+-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+openat\s+|(\s+|,)openat(\s+|,))).*-F\s+exit=-EACCES\s+-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+openat\s+|(\s+|,)openat(\s+|,))).*-F\s+exit=-EACCES\s+-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+open\s+|(\s+|,)open(\s+|,))).*-F\s+exit=-EPERM\s+-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+open\s+|(\s+|,)open(\s+|,))).*-F\s+exit=-EPERM\s+-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+open\s+|(\s+|,)open(\s+|,))).*-F\s+exit=-EPERM\s+-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+open\s+|(\s+|,)open(\s+|,))).*-F\s+exit=-EPERM\s+-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+open\s+|(\s+|,)open(\s+|,))).*-F\s+exit=-EACCES\s+-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+open\s+|(\s+|,)open(\s+|,))).*-F\s+exit=-EACCES\s+-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+open\s+|(\s+|,)open(\s+|,))).*-F\s+exit=-EACCES\s+-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+open\s+|(\s+|,)open(\s+|,))).*-F\s+exit=-EACCES\s+-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+open_by_handle_at\s+|(\s+|,)open_by_handle_at(\s+|,))).*-F\s+exit=-EPERM\s+-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+open_by_handle_at\s+|(\s+|,)open_by_handle_at(\s+|,))).*-F\s+exit=-EPERM\s+-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+open_by_handle_at\s+|(\s+|,)open_by_handle_at(\s+|,))).*-F\s+exit=-EPERM\s+-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+open_by_handle_at\s+|(\s+|,)open_by_handle_at(\s+|,))).*-F\s+exit=-EPERM\s+-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+open_by_handle_at\s+|(\s+|,)open_by_handle_at(\s+|,))).*-F\s+exit=-EACCES\s+-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+open_by_handle_at\s+|(\s+|,)open_by_handle_at(\s+|,))).*-F\s+exit=-EACCES\s+-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+open_by_handle_at\s+|(\s+|,)open_by_handle_at(\s+|,))).*-F\s+exit=-EACCES\s+-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+open_by_handle_at\s+|(\s+|,)open_by_handle_at(\s+|,))).*-F\s+exit=-EACCES\s+-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+ftruncate\s+|(\s+|,)ftruncate(\s+|,))).*-F\s+exit=-EPERM\s+-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+ftruncate\s+|(\s+|,)ftruncate(\s+|,))).*-F\s+exit=-EPERM\s+-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+ftruncate\s+|(\s+|,)ftruncate(\s+|,))).*-F\s+exit=-EPERM\s+-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+ftruncate\s+|(\s+|,)ftruncate(\s+|,))).*-F\s+exit=-EPERM\s+-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+ftruncate\s+|(\s+|,)ftruncate(\s+|,))).*-F\s+exit=-EACCES\s+-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+ftruncate\s+|(\s+|,)ftruncate(\s+|,))).*-F\s+exit=-EACCES\s+-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+ftruncate\s+|(\s+|,)ftruncate(\s+|,))).*-F\s+exit=-EACCES\s+-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+ftruncate\s+|(\s+|,)ftruncate(\s+|,))).*-F\s+exit=-EACCES\s+-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+creat\s+|(\s+|,)creat(\s+|,))).*-F\s+exit=-EPERM\s+-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+creat\s+|(\s+|,)creat(\s+|,))).*-F\s+exit=-EPERM\s+-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+creat\s+|(\s+|,)creat(\s+|,))).*-F\s+exit=-EPERM\s+-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+creat\s+|(\s+|,)creat(\s+|,))).*-F\s+exit=-EPERM\s+-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+creat\s+|(\s+|,)creat(\s+|,))).*-F\s+exit=-EACCES\s+-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+creat\s+|(\s+|,)creat(\s+|,))).*-F\s+exit=-EACCES\s+-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+creat\s+|(\s+|,)creat(\s+|,))).*-F\s+exit=-EACCES\s+-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+creat\s+|(\s+|,)creat(\s+|,))).*-F\s+exit=-EACCES\s+-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+chown\s+|(\s+|,)chown(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+chown\s+|(\s+|,)chown(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+chown\s+|(\s+|,)chown(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+chown\s+|(\s+|,)chown(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+chmod\s+|(\s+|,)chmod(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+chmod\s+|(\s+|,)chmod(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+chmod\s+|(\s+|,)chmod(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+chmod\s+|(\s+|,)chmod(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+lchown\s+|(\s+|,)lchown(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+lchown\s+|(\s+|,)lchown(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+lchown\s+|(\s+|,)lchown(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+lchown\s+|(\s+|,)lchown(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+fchownat\s+|(\s+|,)fchownat(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+fchownat\s+|(\s+|,)fchownat(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+fchownat\s+|(\s+|,)fchownat(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+fchownat\s+|(\s+|,)fchownat(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+fchown\s+|(\s+|,)fchown(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+fchown\s+|(\s+|,)fchown(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+fchown\s+|(\s+|,)fchown(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+fchown\s+|(\s+|,)fchown(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+fchmodat\s+|(\s+|,)fchmodat(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+fchmodat\s+|(\s+|,)fchmodat(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+fchmodat\s+|(\s+|,)fchmodat(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+fchmodat\s+|(\s+|,)fchmodat(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+fchmod\s+|(\s+|,)fchmod(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b32\s+(?:.*(-S\s+fchmod\s+|(\s+|,)fchmod(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + +- ++ + /etc/audit/audit.rules +- ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+fchmod\s+|(\s+|,)fchmod(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)\S+)?\s*$ ++ ^\s*-a\s+(always,exit|exit,always)\s+-F\s+arch=b64\s+(?:.*(-S\s+fchmod\s+|(\s+|,)fchmod(\s+|,))).*-F\s+auid>=1000\s+-F\s+auid!=(4294967295|-1|unset)(\s+(-k\s+|-F\s+key=)[-\w]+)*\s*$ + 1 + + +@@ -17552,7 +16352,7 @@ If the value is set to an integer less than 0, the user's time stamp will not ex + + rsh-server + +- ++ + /etc/modprobe.d + .* + ^[ \t]*install[ \t]+atm[ \t]+/bin/true[ \t]*$ +@@ -17904,37 +16704,37 @@ If the value is set to an integer less than 0, the user's time stamp will not ex + ^\s*ALL\s+ALL\=\(ALL(?:|\:ALL)\)\s+ALL\s*$ + 1 + +- ++ + /etc/sudoers +- ^\s*Defaults \!targetpw\s*$ ++ ^\s*Defaults\s+\!targetpw\s*$ + 1 + +- ++ + /etc/sudoers.d + ^.*$ +- ^\s*Defaults \!targetpw\s*$ ++ ^\s*Defaults\s+\!targetpw\s*$ + 1 + +- ++ + /etc/sudoers +- ^\s*Defaults \!rootpw\s*$ ++ ^\s*Defaults\s+\!rootpw\s*$ + 1 + +- ++ + /etc/sudoers.d + ^.*$ +- ^\s*Defaults \!rootpw\s*$ ++ ^\s*Defaults\s+\!rootpw\s*$ + 1 + +- ++ + /etc/sudoers +- ^\s*Defaults \!runaspw\s*$ ++ ^\s*Defaults\s+\!runaspw\s*$ + 1 + +- ++ + /etc/sudoers.d + ^.*$ +- ^\s*Defaults \!runaspw\s*$ ++ ^\s*Defaults\s+\!runaspw\s*$ + 1 + + +@@ -17956,9 +16756,6 @@ If the value is set to an integer less than 0, the user's time stamp will not ex + + 1 + +- +- 1 +- + + 2 + +@@ -17995,7 +16792,7 @@ If the value is set to an integer less than 0, the user's time stamp will not ex + + ^[$][6] + +- ++ + 5000 + + +@@ -18041,12 +16838,21 @@ If the value is set to an integer less than 0, the user's time stamp will not ex + false + false + +- ++ ++ 20210617 ++ ++ + TLSv1.2 + +- ++ + TLSv1.3 + ++ ++ DTLSv1.2 ++ ++ ++ DTLSv1.3 ++ + + symbolic link + +@@ -18220,9 +17026,6 @@ If the value is set to an integer less than 0, the user's time stamp will not ex + + 10 + +- +- ^[123]$ +- + + 0 + +@@ -18301,12 +17104,6 @@ If the value is set to an integer less than 0, the user's time stamp will not ex + + (?i)^halt$ + +- +- (?i)^syslog$ +- +- +- (?i)^keep_logs$ +- + + (?i)^yes$ + +@@ -18561,12 +17358,12 @@ If the value is set to an integer less than 0, the user's time stamp will not ex + + + +- ++ + + + repotool + 5.10 +- 2021-10-04T21:38:10 ++ 2022-01-03T11:44:33 + + + diff --git a/shared/references/disa-stig-rhel8-v1r4-xccdf-manual.xml b/shared/references/disa-stig-rhel8-v1r5-xccdf-manual.xml similarity index 81% rename from shared/references/disa-stig-rhel8-v1r4-xccdf-manual.xml rename to shared/references/disa-stig-rhel8-v1r5-xccdf-manual.xml -index 46c5fa1..216e91f 100644 +index 46c5fa15578..216e91f92c6 100644 --- a/shared/references/disa-stig-rhel8-v1r4-xccdf-manual.xml +++ b/shared/references/disa-stig-rhel8-v1r5-xccdf-manual.xml @@ -1,4 +1,4 @@ @@ -1749,26 +13329,46 @@ index 46c5fa1..216e91f 100644 +If the system default target is not set to "multi-user.target" and the Information System Security Officer (ISSO) lacks a documented requirement for a graphical user interface, this is a finding. \ No newline at end of file diff --git a/tests/data/profile_stability/rhel8/stig.profile b/tests/data/profile_stability/rhel8/stig.profile -index c2522c9..b9eeff5 100644 +index b5621425b96..9c157b7134d 100644 --- a/tests/data/profile_stability/rhel8/stig.profile +++ b/tests/data/profile_stability/rhel8/stig.profile -@@ -1,6 +1,6 @@ +@@ -1,7 +1,7 @@ + title: DISA STIG for Red Hat Enterprise Linux 8 description: 'This profile contains configuration checks that align to the -- DISA STIG for Red Hat Enterprise Linux 8 V1R3. +- DISA STIG for Red Hat Enterprise Linux 8 V1R4. + DISA STIG for Red Hat Enterprise Linux 8 V1R5. In addition to being applicable to Red Hat Enterprise Linux 8, DISA recognizes +@@ -23,7 +23,7 @@ description: 'This profile contains configuration checks that align to the + - Red Hat Containers with a Red Hat Enterprise Linux 8 image' + extends: null + metadata: +- version: V1R4 ++ version: V1R5 + SMEs: + - mab879 + - ggbecker diff --git a/tests/data/profile_stability/rhel8/stig_gui.profile b/tests/data/profile_stability/rhel8/stig_gui.profile -index 95d87fd..54bf46d 100644 +index 31221ed632c..470669753f5 100644 --- a/tests/data/profile_stability/rhel8/stig_gui.profile +++ b/tests/data/profile_stability/rhel8/stig_gui.profile -@@ -1,6 +1,6 @@ +@@ -1,7 +1,7 @@ + title: DISA STIG with GUI for Red Hat Enterprise Linux 8 description: 'This profile contains configuration checks that align to the -- DISA STIG with GUI for Red Hat Enterprise Linux 8 V1R3. +- DISA STIG with GUI for Red Hat Enterprise Linux 8 V1R4. + DISA STIG with GUI for Red Hat Enterprise Linux 8 V1R5. In addition to being applicable to Red Hat Enterprise Linux 8, DISA recognizes +@@ -34,7 +34,7 @@ description: 'This profile contains configuration checks that align to the + standard DISA STIG for Red Hat Enterprise Linux 8 profile.' + extends: null + metadata: +- version: V1R4 ++ version: V1R5 + SMEs: + - mab879 + - ggbecker diff --git a/SOURCES/scap-security-guide-0.1.61-update_RHEL_STIG-PR_8130.patch b/SOURCES/scap-security-guide-0.1.61-update_RHEL_STIG-PR_8130.patch index 2cc46e2..8c79a50 100644 --- a/SOURCES/scap-security-guide-0.1.61-update_RHEL_STIG-PR_8130.patch +++ b/SOURCES/scap-security-guide-0.1.61-update_RHEL_STIG-PR_8130.patch @@ -1,24 +1,18 @@ -commit 94a680f9601fc2119c08fc6514712611d7f0d935 -Author: Gabriel Becker -Date: Fri Feb 25 14:43:33 2022 +0100 - - Manual edited patch scap-security-guide-0.1.61-update_RHEL_STIG-PR_8130.patch. - diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/rule.yml b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/rule.yml -index 10203c9..3c9e460 100644 +index dac47a1c6d1..3a6167a5717 100644 --- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/rule.yml +++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/rule.yml -@@ -37,7 +37,7 @@ references: - disa: CCI-001499 +@@ -39,7 +39,7 @@ references: nist: CM-5(6),CM-5(6).1 srg: SRG-OS-000259-GPOS-00100 + stigid@ol8: OL08-00-010350 - stigid@rhel8: RHEL-08-010350 + stigid@rhel8: RHEL-08-010351 stigid@sle12: SLES-12-010876 stigid@sle15: SLES-15-010356 stigid@ubuntu2004: UBTU-20-010431 diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/tests/all_dirs_ok.pass.sh b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/tests/all_dirs_ok.pass.sh -index 50fdb17..6a05a2b 100644 +index 50fdb17bd2e..6a05a2b82ea 100644 --- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/tests/all_dirs_ok.pass.sh +++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/tests/all_dirs_ok.pass.sh @@ -1,4 +1,4 @@ @@ -29,7 +23,7 @@ index 50fdb17..6a05a2b 100644 for dirPath in $DIRS; do diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/tests/correct_groupowner.pass.sh b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/tests/correct_groupowner.pass.sh new file mode 100644 -index 0000000..6a05a2b +index 00000000000..6a05a2b82ea --- /dev/null +++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/tests/correct_groupowner.pass.sh @@ -0,0 +1,6 @@ @@ -41,7 +35,7 @@ index 0000000..6a05a2b +done diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/tests/incorrect_groupowner.fail.sh b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/tests/incorrect_groupowner.fail.sh new file mode 100644 -index 0000000..36461f5 +index 00000000000..36461f5e5c3 --- /dev/null +++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/tests/incorrect_groupowner.fail.sh @@ -0,0 +1,6 @@ @@ -53,7 +47,7 @@ index 0000000..36461f5 +done diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/tests/incorrect_groupowner_2.fail.sh b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/tests/incorrect_groupowner_2.fail.sh new file mode 100644 -index 0000000..3f09e3d +index 00000000000..3f09e3dd018 --- /dev/null +++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/tests/incorrect_groupowner_2.fail.sh @@ -0,0 +1,6 @@ @@ -64,7 +58,7 @@ index 0000000..3f09e3d + mkdir -p "$dirPath/testme/test2" && chgrp nobody "$dirPath/testme/test2" +done diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/tests/nobody_group_owned_dir_on_lib.fail.sh b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/tests/nobody_group_owned_dir_on_lib.fail.sh -index 043ad6b..36461f5 100644 +index 043ad6b2dee..36461f5e5c3 100644 --- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/tests/nobody_group_owned_dir_on_lib.fail.sh +++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/tests/nobody_group_owned_dir_on_lib.fail.sh @@ -1,4 +1,4 @@ @@ -74,7 +68,7 @@ index 043ad6b..36461f5 100644 DIRS="/lib /lib64 /usr/lib /usr/lib64" for dirPath in $DIRS; do diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_ownership_binary_dirs/rule.yml b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_ownership_binary_dirs/rule.yml -index e236238..ba923d8 100644 +index e2362388678..ba923d8ac55 100644 --- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_ownership_binary_dirs/rule.yml +++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_ownership_binary_dirs/rule.yml @@ -27,7 +27,7 @@ references: @@ -88,7 +82,7 @@ index e236238..ba923d8 100644 System executables are stored in the following directories by default: diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_ownership_library_dirs/oval/shared.xml b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_ownership_library_dirs/oval/shared.xml deleted file mode 100644 -index 28e193f..0000000 +index 28e193f827c..00000000000 --- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_ownership_library_dirs/oval/shared.xml +++ /dev/null @@ -1,28 +0,0 @@ @@ -121,7 +115,7 @@ index 28e193f..0000000 - - diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_ownership_library_dirs/rule.yml b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_ownership_library_dirs/rule.yml -index d6a0bed..f0781b3 100644 +index d6a0beddf6e..f0781b307b3 100644 --- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_ownership_library_dirs/rule.yml +++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_ownership_library_dirs/rule.yml @@ -27,6 +27,8 @@ rationale: |- @@ -160,7 +154,7 @@ diff --git a/linux_os/guide/system/permissions/files/permissions_within_importan similarity index 69% rename from linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_ownership_library_dirs/tests/all_dirs_ok.pass.sh rename to linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_ownership_library_dirs/tests/correct_owner.pass.sh -index 0189166..a0d4990 100644 +index 01891664f64..a0d4990582e 100644 --- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_ownership_library_dirs/tests/all_dirs_ok.pass.sh +++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_ownership_library_dirs/tests/correct_owner.pass.sh @@ -1,4 +1,4 @@ @@ -173,7 +167,7 @@ diff --git a/linux_os/guide/system/permissions/files/permissions_within_importan similarity index 63% rename from linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_ownership_library_dirs/tests/nobody_owned_dir_on_lib.fail.sh rename to linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_ownership_library_dirs/tests/incorrect_owner.fail.sh -index 59b8a18..f366c2d 100644 +index 59b8a1867eb..f366c2d7922 100644 --- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_ownership_library_dirs/tests/nobody_owned_dir_on_lib.fail.sh +++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_ownership_library_dirs/tests/incorrect_owner.fail.sh @@ -1,4 +1,5 @@ @@ -184,7 +178,7 @@ index 59b8a18..f366c2d 100644 for dirPath in $DIRS; do mkdir -p "$dirPath/testme" && chown nobody:nogroup "$dirPath/testme" diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_permissions_library_dirs/oval/shared.xml b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_permissions_library_dirs/oval/shared.xml -index a0e4e24..add26b2 100644 +index a0e4e24b4f4..add26b2e778 100644 --- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_permissions_library_dirs/oval/shared.xml +++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_permissions_library_dirs/oval/shared.xml @@ -1,8 +1,8 @@ @@ -217,7 +211,7 @@ index a0e4e24..add26b2 100644 diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_permissions_library_dirs/rule.yml b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_permissions_library_dirs/rule.yml -index 853f8ac..558eaa7 100644 +index db89a5e47a1..6e62e8c6bbf 100644 --- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_permissions_library_dirs/rule.yml +++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_permissions_library_dirs/rule.yml @@ -60,3 +60,14 @@ ocil: |- @@ -236,17 +230,17 @@ index 853f8ac..558eaa7 100644 + recursive: 'true' + filemode: '0755' diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_groupownership_system_commands_dirs/ansible/shared.yml b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_groupownership_system_commands_dirs/ansible/shared.yml -index 7168288..eec7485 100644 +index 6b3a2905068..eec7485f90c 100644 --- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_groupownership_system_commands_dirs/ansible/shared.yml +++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_groupownership_system_commands_dirs/ansible/shared.yml @@ -1,4 +1,4 @@ --# platform = multi_platform_sle,Red Hat Enterprise Linux 8,multi_platform_fedora +-# platform = multi_platform_sle,Oracle Linux 8,Red Hat Enterprise Linux 8,multi_platform_fedora +# platform = multi_platform_sle,Oracle Linux 8,multi_platform_rhel,multi_platform_fedora # reboot = false # strategy = restrict # complexity = medium diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_groupownership_system_commands_dirs/bash/shared.sh b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_groupownership_system_commands_dirs/bash/shared.sh -index a9e8c7d..e352dd3 100644 +index a9e8c7d8e25..e352dd34a67 100644 --- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_groupownership_system_commands_dirs/bash/shared.sh +++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_groupownership_system_commands_dirs/bash/shared.sh @@ -1,4 +1,4 @@ @@ -257,7 +251,7 @@ index a9e8c7d..e352dd3 100644 do diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_ownership_library_dirs/ansible/shared.yml b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_ownership_library_dirs/ansible/shared.yml deleted file mode 100644 -index de81a37..0000000 +index de81a3703b4..00000000000 --- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_ownership_library_dirs/ansible/shared.yml +++ /dev/null @@ -1,18 +0,0 @@ @@ -281,7 +275,7 @@ index de81a37..0000000 - when: libraries_not_owned_by_root | length > 0 diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_ownership_library_dirs/bash/shared.sh b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_ownership_library_dirs/bash/shared.sh deleted file mode 100644 -index c75167d..0000000 +index c75167d2fe7..00000000000 --- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_ownership_library_dirs/bash/shared.sh +++ /dev/null @@ -1,8 +0,0 @@ @@ -295,7 +289,7 @@ index c75167d..0000000 -done diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_ownership_library_dirs/oval/shared.xml b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_ownership_library_dirs/oval/shared.xml deleted file mode 100644 -index 59ee3d8..0000000 +index 59ee3d82a21..00000000000 --- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_ownership_library_dirs/oval/shared.xml +++ /dev/null @@ -1,39 +0,0 @@ @@ -339,10 +333,10 @@ index 59ee3d8..0000000 - - diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_ownership_library_dirs/rule.yml b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_ownership_library_dirs/rule.yml -index dfedd25..81089d3 100644 +index d80681c1e65..b6bc18e8310 100644 --- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_ownership_library_dirs/rule.yml +++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_ownership_library_dirs/rule.yml -@@ -59,3 +59,14 @@ ocil: |- +@@ -60,3 +60,14 @@ ocil: |- For each of these directories, run the following command to find files not owned by root:
      $ sudo find -L $DIR ! -user root -exec chown root {} \;
      @@ -359,7 +353,7 @@ index dfedd25..81089d3 100644 + fileuid: '0' diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_ownership_library_dirs/tests/correct_owner.pass.sh b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_ownership_library_dirs/tests/correct_owner.pass.sh new file mode 100644 -index 0000000..92c6a08 +index 00000000000..92c6a0889d4 --- /dev/null +++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_ownership_library_dirs/tests/correct_owner.pass.sh @@ -0,0 +1,9 @@ @@ -374,7 +368,7 @@ index 0000000..92c6a08 +done diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_ownership_library_dirs/tests/incorrect_owner.fail.sh b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_ownership_library_dirs/tests/incorrect_owner.fail.sh new file mode 100644 -index 0000000..84da71f +index 00000000000..84da71f45f7 --- /dev/null +++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_ownership_library_dirs/tests/incorrect_owner.fail.sh @@ -0,0 +1,11 @@ @@ -391,7 +385,7 @@ index 0000000..84da71f +done diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_permissions_library_dirs/ansible/shared.yml b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_permissions_library_dirs/ansible/shared.yml deleted file mode 100644 -index cf9eeba..0000000 +index cf9eebace8b..00000000000 --- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_permissions_library_dirs/ansible/shared.yml +++ /dev/null @@ -1,18 +0,0 @@ @@ -415,7 +409,7 @@ index cf9eeba..0000000 - when: world_writable_library_files.stdout_lines | length > 0 diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_permissions_library_dirs/bash/shared.sh b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_permissions_library_dirs/bash/shared.sh deleted file mode 100644 -index af04ad6..0000000 +index af04ad625d3..00000000000 --- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_permissions_library_dirs/bash/shared.sh +++ /dev/null @@ -1,5 +0,0 @@ @@ -426,7 +420,7 @@ index af04ad6..0000000 -done diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_permissions_library_dirs/oval/shared.xml b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_permissions_library_dirs/oval/shared.xml deleted file mode 100644 -index f25c522..0000000 +index f25c52260c4..00000000000 --- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_permissions_library_dirs/oval/shared.xml +++ /dev/null @@ -1,46 +0,0 @@ @@ -477,10 +471,10 @@ index f25c522..0000000 - - diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_permissions_library_dirs/rule.yml b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_permissions_library_dirs/rule.yml -index 902d8b5..e9afb91 100644 +index 9a07e76929e..5a708cf78c3 100644 --- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_permissions_library_dirs/rule.yml +++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_permissions_library_dirs/rule.yml -@@ -60,3 +60,14 @@ ocil: |- +@@ -61,3 +61,14 @@ ocil: |- To find shared libraries that are group-writable or world-writable, run the following command for each directory DIR which contains shared libraries:
      $ sudo find -L DIR -perm /022 -type f
      @@ -500,7 +494,7 @@ similarity index 100% rename from linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_permissions_library_dirs/tests/incorrect_permissions.fail.sh rename to linux_os/guide/system/permissions/files/permissions_within_important_dirs/file_permissions_library_dirs/tests/lenient_permissions.fail.sh diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/rule.yml b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/rule.yml -index 3b983de..3a1e5ba 100644 +index eaf04c8d36c..ec135b5279c 100644 --- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/rule.yml +++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/rule.yml @@ -4,7 +4,7 @@ prodtype: fedora,ol8,rhel8,rhel9,sle12,sle15,ubuntu2004 @@ -521,7 +515,7 @@ index 3b983de..3a1e5ba 100644 the following command:
      $ sudo chgrp root FILE
      -@@ -46,7 +46,7 @@ references: +@@ -48,7 +48,7 @@ references: stigid@sle15: SLES-15-010355 stigid@ubuntu2004: UBTU-20-01430 @@ -531,30 +525,48 @@ index 3b983de..3a1e5ba 100644 ocil: |- System-wide library files are stored in the following directories: diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/correct_groupowner.pass.sh b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/correct_groupowner.pass.sh -index a4ae285..5356d37 100644 +index 0e982c3b8ca..5356d3742d3 100644 --- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/correct_groupowner.pass.sh +++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/correct_groupowner.pass.sh @@ -1,4 +1,4 @@ --# platform = multi_platform_sle,Red Hat Enterprise Linux 8,multi_platform_fedora +-# platform = multi_platform_sle,Red Hat Enterprise Linux 8,multi_platform_fedora,multi_platform_ubuntu +# platform = multi_platform_sle,multi_platform_rhel,multi_platform_fedora,multi_platform_ubuntu for SYSLIBDIRS in /lib /lib64 /usr/lib /usr/lib64 do diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/incorrect_groupowner.fail.sh b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/incorrect_groupowner.fail.sh -index c96f65b..9636acf 100644 +index 23a7703f57d..7352b60aa4b 100644 --- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/incorrect_groupowner.fail.sh +++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/incorrect_groupowner.fail.sh @@ -1,4 +1,4 @@ --# platform = multi_platform_sle,Red Hat Enterprise Linux 8,multi_platform_fedora +-# platform = multi_platform_sle,Red Hat Enterprise Linux 8,multi_platform_fedora,multi_platform_ubuntu +# platform = multi_platform_sle,multi_platform_rhel,multi_platform_fedora,multi_platform_ubuntu + groupadd group_test for TESTFILE in /lib/test_me /lib64/test_me /usr/lib/test_me /usr/lib64/test_me - do diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile -index d6f0793..5b2cc0f 100644 +index ff23f83cfbf..88b3a7e3783 100644 --- a/products/rhel8/profiles/stig.profile +++ b/products/rhel8/profiles/stig.profile -@@ -233,8 +233,13 @@ selections: +@@ -235,8 +235,13 @@ selections: + # RHEL-08-010340 + - file_ownership_library_dirs + ++ # RHEL-08-010341 ++ - dir_ownership_library_dirs ++ + # RHEL-08-010350 + - root_permissions_syslibrary_files ++ ++ # RHEL-08-010351 + - dir_group_ownership_library_dirs + + # RHEL-08-010360 +diff --git a/products/rhel9/profiles/stig.profile b/products/rhel9/profiles/stig.profile +index 8cc6d132591..65465be2c07 100644 +--- a/products/rhel9/profiles/stig.profile ++++ b/products/rhel9/profiles/stig.profile +@@ -236,8 +236,13 @@ selections: # RHEL-08-010340 - file_ownership_library_dirs @@ -567,12 +579,12 @@ index d6f0793..5b2cc0f 100644 + # RHEL-08-010351 - dir_group_ownership_library_dirs - # RHEL-08-010359 + # RHEL-08-010360 diff --git a/shared/references/cce-redhat-avail.txt b/shared/references/cce-redhat-avail.txt -index d8daeb3..0584677 100644 +index 8aad24b20f7..eb3f17f4f3d 100644 --- a/shared/references/cce-redhat-avail.txt +++ b/shared/references/cce-redhat-avail.txt -@@ -3074,8 +3074,6 @@ CCE-89017-8 +@@ -2957,8 +2957,6 @@ CCE-89017-8 CCE-89018-6 CCE-89019-4 CCE-89020-2 @@ -582,7 +594,7 @@ index d8daeb3..0584677 100644 CCE-89024-4 CCE-89025-1 diff --git a/shared/templates/file_groupowner/ansible.template b/shared/templates/file_groupowner/ansible.template -index 68fc2e1..0b4ab59 100644 +index 68fc2e1e17e..0b4ab594155 100644 --- a/shared/templates/file_groupowner/ansible.template +++ b/shared/templates/file_groupowner/ansible.template @@ -12,6 +12,7 @@ @@ -594,7 +606,7 @@ index 68fc2e1..0b4ab59 100644 - name: Ensure group owner on {{{ path }}} file(s) matching {{{ FILE_REGEX[loop.index0] }}} diff --git a/shared/templates/file_groupowner/oval.template b/shared/templates/file_groupowner/oval.template -index fd2e5db..64a4944 100644 +index fd2e5db5d93..64a494471a8 100644 --- a/shared/templates/file_groupowner/oval.template +++ b/shared/templates/file_groupowner/oval.template @@ -45,6 +45,10 @@ @@ -609,7 +621,7 @@ index fd2e5db..64a4944 100644 + diff --git a/shared/templates/file_owner/ansible.template b/shared/templates/file_owner/ansible.template -index 590c9fc..dba9e65 100644 +index 590c9fc6055..dba9e65a277 100644 --- a/shared/templates/file_owner/ansible.template +++ b/shared/templates/file_owner/ansible.template @@ -12,6 +12,7 @@ @@ -621,7 +633,7 @@ index 590c9fc..dba9e65 100644 - name: Ensure group owner on {{{ path }}} file(s) matching {{{ FILE_REGEX[loop.index0] }}} diff --git a/shared/templates/file_owner/oval.template b/shared/templates/file_owner/oval.template -index 105e29c..777831d 100644 +index 105e29c81c8..777831d790d 100644 --- a/shared/templates/file_owner/oval.template +++ b/shared/templates/file_owner/oval.template @@ -44,6 +44,10 @@ @@ -636,7 +648,7 @@ index 105e29c..777831d 100644 + diff --git a/shared/templates/file_permissions/ansible.template b/shared/templates/file_permissions/ansible.template -index fc211bd..6d4dedc 100644 +index fc211bdc4c3..6d4dedcee51 100644 --- a/shared/templates/file_permissions/ansible.template +++ b/shared/templates/file_permissions/ansible.template @@ -12,6 +12,7 @@ @@ -648,10 +660,10 @@ index fc211bd..6d4dedc 100644 - name: Set permissions for {{{ path }}} file(s) diff --git a/tests/data/profile_stability/rhel8/stig.profile b/tests/data/profile_stability/rhel8/stig.profile -index 1b4b955..c2522c9 100644 +index b5621425b96..c5a9b6a32ad 100644 --- a/tests/data/profile_stability/rhel8/stig.profile +++ b/tests/data/profile_stability/rhel8/stig.profile -@@ -175,6 +175,7 @@ selections: +@@ -181,6 +181,7 @@ selections: - dconf_gnome_screensaver_idle_delay - dconf_gnome_screensaver_lock_enabled - dir_group_ownership_library_dirs @@ -660,10 +672,10 @@ index 1b4b955..c2522c9 100644 - dir_perms_world_writable_root_owned - dir_perms_world_writable_sticky_bits diff --git a/tests/data/profile_stability/rhel8/stig_gui.profile b/tests/data/profile_stability/rhel8/stig_gui.profile -index 3568e07..95d87fd 100644 +index 31221ed632c..32d195e28aa 100644 --- a/tests/data/profile_stability/rhel8/stig_gui.profile +++ b/tests/data/profile_stability/rhel8/stig_gui.profile -@@ -186,6 +186,7 @@ selections: +@@ -192,6 +192,7 @@ selections: - dconf_gnome_screensaver_idle_delay - dconf_gnome_screensaver_lock_enabled - dir_group_ownership_library_dirs diff --git a/SOURCES/scap-security-guide-0.1.61-update_accounts_password_template-PR_8164.patch b/SOURCES/scap-security-guide-0.1.61-update_accounts_password_template-PR_8164.patch index d29385e..1092362 100644 --- a/SOURCES/scap-security-guide-0.1.61-update_accounts_password_template-PR_8164.patch +++ b/SOURCES/scap-security-guide-0.1.61-update_accounts_password_template-PR_8164.patch @@ -1,14 +1,38 @@ -commit 11140ac5d67f256a7d3c8fdac9eca73c007dabb8 -Author: Watson Sato -Date: Mon Feb 28 11:04:30 2022 +0100 - - Manual edited patch scap-security-guide-0.1.61-update_accounts_password_template-PR_8164.patch. - +diff --git a/docs/templates/template_reference.md b/docs/templates/template_reference.md +index 65bc439225e..fef4679be39 100644 +--- a/docs/templates/template_reference.md ++++ b/docs/templates/template_reference.md +@@ -2,17 +2,20 @@ + + #### accounts_password + - Checks if PAM enforces password quality requirements. Checks the +- configuration in `/etc/pam.d/system-auth` (for RHEL 6 systems) or +- `/etc/security/pwquality.conf` (on other systems). ++ configuration in `/etc/security/pwquality.conf`. + + - Parameters: + +- - **variable** - PAM `pam_cracklib` (on RHEL 6) or `pam_pwquality` +- (on other systems) module name, eg. `ucredit`, `ocredit` ++ - **variable** - PAM `pam_pwquality` password quality ++ requirement, eg. `ucredit`, `ocredit` + + - **operation** - OVAL operation, eg. `less than or equal` + +-- Languages: OVAL ++ - **zero_comparison_operation** - (optional) OVAL operation, eg. `greater than`. ++ When set, it will test if the **variable** value matches the OVAL operation ++ when compared to zero. ++ ++- Languages: Ansible, Bash, OVAL + + #### auditd_lineinfile + - Checks configuration options of the Audit Daemon in diff --git a/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_maxclassrepeat/rule.yml b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_maxclassrepeat/rule.yml -index 1d53a71..2e47e16 100644 +index 912c783650a..9a829ac5119 100644 --- a/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_maxclassrepeat/rule.yml +++ b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_maxclassrepeat/rule.yml -@@ -46,7 +46,7 @@ ocil_clause: 'that is not the case' +@@ -47,7 +47,7 @@ ocil_clause: 'that is not the case' ocil: |- To check the value for maximum consecutive repeating characters, run the following command:
      $ grep maxclassrepeat /etc/security/pwquality.conf
      @@ -17,14 +41,14 @@ index 1d53a71..2e47e16 100644 platform: pam -@@ -55,3 +55,4 @@ template: +@@ -56,3 +56,4 @@ template: vars: variable: maxclassrepeat operation: less than or equal + zero_comparison_operation: greater than diff --git a/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_maxclassrepeat/tests/correct_value.pass.sh b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_maxclassrepeat/tests/correct_value.pass.sh new file mode 100644 -index 0000000..5d91559 +index 00000000000..5d91559d4a2 --- /dev/null +++ b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_maxclassrepeat/tests/correct_value.pass.sh @@ -0,0 +1,8 @@ @@ -38,7 +62,7 @@ index 0000000..5d91559 + diff --git a/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_maxclassrepeat/tests/correct_value_less_than_variable.pass.sh b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_maxclassrepeat/tests/correct_value_less_than_variable.pass.sh new file mode 100644 -index 0000000..4bd8070 +index 00000000000..4bd8070eb7e --- /dev/null +++ b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_maxclassrepeat/tests/correct_value_less_than_variable.pass.sh @@ -0,0 +1,8 @@ @@ -52,7 +76,7 @@ index 0000000..4bd8070 + diff --git a/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_maxclassrepeat/tests/negative_value.fail.sh b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_maxclassrepeat/tests/negative_value.fail.sh new file mode 100644 -index 0000000..61538a4 +index 00000000000..61538a4945f --- /dev/null +++ b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_maxclassrepeat/tests/negative_value.fail.sh @@ -0,0 +1,7 @@ @@ -65,7 +89,7 @@ index 0000000..61538a4 +fi diff --git a/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_maxclassrepeat/tests/wrong_value.fail.sh b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_maxclassrepeat/tests/wrong_value.fail.sh new file mode 100644 -index 0000000..2218250 +index 00000000000..2218250ec7b --- /dev/null +++ b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_maxclassrepeat/tests/wrong_value.fail.sh @@ -0,0 +1,8 @@ @@ -79,7 +103,7 @@ index 0000000..2218250 + diff --git a/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_maxclassrepeat/tests/wrong_value_0.fail.sh b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_maxclassrepeat/tests/wrong_value_0.fail.sh new file mode 100644 -index 0000000..780873c +index 00000000000..780873c6a86 --- /dev/null +++ b/linux_os/guide/system/accounts/accounts-pam/password_quality/password_quality_pwquality/accounts_password_pam_maxclassrepeat/tests/wrong_value_0.fail.sh @@ -0,0 +1,8 @@ @@ -92,7 +116,7 @@ index 0000000..780873c +fi + diff --git a/shared/templates/accounts_password/oval.template b/shared/templates/accounts_password/oval.template -index 332a280..b995db1 100644 +index 332a2800317..b995db11ea4 100644 --- a/shared/templates/accounts_password/oval.template +++ b/shared/templates/accounts_password/oval.template @@ -7,11 +7,14 @@ @@ -124,7 +148,7 @@ index 332a280..b995db1 100644 diff --git a/shared/templates/accounts_password/template.py b/shared/templates/accounts_password/template.py -index 65c25ec..ab849d1 100644 +index 65c25ec7991..ab849d1fa72 100644 --- a/shared/templates/accounts_password/template.py +++ b/shared/templates/accounts_password/template.py @@ -1,4 +1,7 @@ diff --git a/SPECS/scap-security-guide.spec b/SPECS/scap-security-guide.spec index 3c711ea..5db91ce 100644 --- a/SPECS/scap-security-guide.spec +++ b/SPECS/scap-security-guide.spec @@ -2,10 +2,11 @@ %global _static_rhel6_content %{name}-0.1.52-2.el7_9-rhel6 # https://fedoraproject.org/wiki/Changes/CMake_to_do_out-of-source_builds %global _vpath_builddir build +%global _default_patch_fuzz 2 Name: scap-security-guide -Version: 0.1.57 -Release: 9%{?dist} +Version: 0.1.60 +Release: 7%{?dist} Summary: Security guidance and baselines in SCAP formats License: BSD-3-Clause Group: Applications/System @@ -18,105 +19,52 @@ BuildArch: noarch # Patch allows only OSPP, PCI-DSS, E8 and STIG profiles in RHEL8 datastream Patch0: disable-not-in-good-shape-profiles.patch -Patch1: scap-security-guide-0.1.58-fix_ansible_banner_remediation-PR_7228.patch -Patch2: scap-security-guide-0.1.58-tests_for_playbooks_that_change_banners-PR_7376.patch -Patch3: scap-security-guide-0.1.58-add_missing_unit_test_playbook-PR_7431.patch -Patch4: scap-security-guide-0.1.58-RHEL_08_010630-PR_7250.patch -Patch5: scap-security-guide-0.1.58-rhel8_stig_08_010350-PR_7231.patch -Patch6: scap-security-guide-0.1.58-RHEL_08_010360-PR_7209.patch -Patch7: scap-security-guide-0.1.58-RHEL_08_030610-PR_7256.patch -Patch8: scap-security-guide-0.1.58-RHEL_08_010420-PR_7227.patch -Patch9: scap-security-guide-0.1.58-rhel8_stig_08_010290-PR_7151.patch -Patch10: scap-security-guide-0.1.58-rhel8_stig_08_010291-PR_7169.patch -Patch11: scap-security-guide-0.1.58-split_file_ownership_var_log_audit-PR_7129.patch -Patch12: scap-security-guide-0.1.58-rhel8_stig_08_020270-PR_7276.patch -Patch13: scap-security-guide-0.1.58-add_rhel_minor_check-PR_7251.patch -Patch14: scap-security-guide-0.1.58-RHEL_08_030700-PR_7264.patch -Patch15: scap-security-guide-0.1.58-RHEL_08_030710-PR_7268.patch -Patch16: scap-security-guide-0.1.58-RHEL_08_020300-PR_7289.patch -Patch17: scap-security-guide-0.1.58-RHEL_08_020090-PR_7313.patch -Patch18: scap-security-guide-0.1.58-update_stig_benchmark-PR_7326.patch -Patch19: scap-security-guide-0.1.58-add_RHEL_08_020240-PR_7330.patch -Patch20: scap-security-guide-0.1.58-audit_rhel8_stig-PR_6910.patch -Patch21: scap-security-guide-0.1.58-bios_enable_execution_restrictions_srg-PR_7284.patch -Patch22: scap-security-guide-0.1.58-update_stig_references_for_servives_rhel8_v1r3-PR_7299.patch -Patch23: scap-security-guide-0.1.58-RHEL_08_040286-PR_7354.patch -Patch24: scap-security-guide-0.1.58-RHEL_08_030650-PR_7283.patch -Patch25: scap-security-guide-0.1.58-remove_RHEL_08_040162-PR_7369.patch -Patch26: scap-security-guide-0.1.58-fix_STIG_references-PR_7371.patch -Patch27: scap-security-guide-0.1.58-sshd_directory_config-PR_6926.patch -Patch28: scap-security-guide-0.1.58-RHEL_08_030720-PR_7288.patch -Patch29: scap-security-guide-0.1.58-RHEL_08_020320-PR_7303.patch -Patch30: scap-security-guide-0.1.58-fix_missing_srgs-PR_7362.patch -Patch31: scap-security-guide-0.1.58-update_rhel7_stig-PR_7217.patch -Patch32: scap-security-guide-0.1.58-RHEL_08_010001-PR_7344.patch -Patch33: scap-security-guide-0.1.58-RHEL_08_030730-PR_7323.patch -Patch34: scap-security-guide-0.1.58-update_stig_gui_rhel7_version-PR_7340.patch -Patch35: scap-security-guide-0.1.58-ansible_missing_metadata-PR_7357.patch -Patch36: scap-security-guide-0.1.58-ensure_test_helper_scripts_executable-PR_7302.patch -Patch37: scap-security-guide-0.1.58-update_stig_overlay-PR_7287.patch -Patch38: scap-security-guide-0.1.58-update_stig_mapping_table-PR_7327.patch -Patch39: scap-security-guide-0.1.58-update_stig_references-PR_7366.patch -Patch40: scap-security-guide-0.1.58-fix_stig_overlay_python2-PR_7317.patch -Patch41: scap-security-guide-0.1.58-group_audit_syscalls-PR_7329.patch -Patch42: scap-security-guide-0.1.58-rhel8_cis_identifier_update_1-PR_7356.patch -Patch43: scap-security-guide-0.1.58-audit_privileged_rhel_cis-PR_7353.patch -Patch44: scap-security-guide-0.1.58-cis_rhel7_updates-PR_7384.patch -Patch45: scap-security-guide-0.1.58-fix_handling_of_variables_in_levels-PR_7226.patch -Patch46: scap-security-guide-0.1.58-rhel_modular_cis-PR_6976.patch -Patch47: scap-security-guide-0.1.58-rhel7_cis_kickstarts-PR_7382.patch -Patch48: scap-security-guide-0.1.58-rhel8_cis_kickstarts-PR_7383.patch -Patch49: scap-security-guide-0.1.58-ism_ks-PR_7392.patch -Patch50: scap-security-guide-0.1.58-fix_rhel7_links-PR_7409.patch -Patch51: scap-security-guide-0.1.58-fix_audit_file_permissions-PR_7440.patch -Patch52: scap-security-guide-0.1.58-mark_rule_as_machine_only-PR_7442.patch -Patch53: scap-security-guide-0.1.58-fix_rhel7_doc_link-PR_7443.patch -Patch54: scap-security-guide-0.1.58-disable_ctrlaltdel_reboot_fix_test_scenario-PR_7444.patch -Patch55: scap-security-guide-0.1.58-fix_cis_value_selector-PR_7452.patch -Patch56: scap-security-guide-0.1.58-ism_usb_hid-PR_7493.patch -Patch57: scap-security-guide-0.1.58-RHEL_08_010400-PR_7411.patch -Patch58: scap-security-guide-0.1.58-BZ_1942281-PR_7471.patch -Patch59: scap-security-guide-0.1.59-add_missing_stig_ids-PR_7597.patch -Patch60: scap-security-guide-0.1.59-fix_6844-PR_7673.patch -Patch61: scap-security-guide-0.1.59-fix_7333-PR_7692.patch -Patch62: scap-security-guide-0.1.59-sshd_priv_keys_600-PR_7742.patch -Patch63: scap-security-guide-0.1.59-BZ1884687-PR_7770.patch -Patch64: scap-security-guide-0.1.59-BZ1884687D-PR_7837.patch -Patch65: scap-security-guide-0.1.59-BZ1884687C-PR_7824.patch -Patch66: scap-security-guide-0.1.59-BZ1884687B-PR_7790.patch -Patch67: scap-security-guide-0.1.60-rhel8_stig_v1r4-PR_7930.patch -Patch68: scap-security-guide-0.1.60-sysctl_d_directories-PR_7999.patch -Patch69: scap-security-guide-0.1.60-rhel9_stig_grub-PR_7931.patch -Patch70: scap-security-guide-0.1.59-multifile_templates-PR_7405.patch -Patch71: scap-security-guide-0.1.61-file_groupowner-PR_7791.patch -Patch72: scap-security-guide-0.1.61-file_owner-PR_7789.patch -Patch73: scap-security-guide-0.1.61-file_permissions-PR_7788.patch -Patch74: scap-security-guide-0.1.61-update_RHEL_08_010287-PR_8051.patch -Patch75: scap-security-guide-0.1.61-add_RHEL_08_010331-PR_8055.patch -Patch76: scap-security-guide-0.1.61-rhel8_stig_v1r5-PR_8050.patch -Patch77: scap-security-guide-0.1.61-add_RHEL_08_010359-PR_8131.patch -Patch78: scap-security-guide-0.1.61-update_RHEL_STIG-PR_8130.patch -Patch79: scap-security-guide-0.1.61-update_RHEL_08_STIG-PR_8139.patch -Patch80: scap-security-guide-0.1.61-add_RHEL_08_040321-PR_8169.patch -Patch81: scap-security-guide-0.1.61-add_RHEL_08_020221-PR_8173.patch -Patch82: scap-security-guide-0.1.61-update_RHEL_08_040320-PR_8170.patch -Patch83: scap-security-guide-0.1.61-rhel8_stig_audit_rules-PR_8174.patch -Patch84: scap-security-guide-0.1.61-update_RHEL_08_010030-PR_8183.patch -Patch85: scap-security-guide-0.1.61-update_accounts_password_template-PR_8164.patch -Patch86: scap-security-guide-0.1.61-update_RHEL_08_010383-PR_8138.patch -Patch87: scap-security-guide-0.1.61-remove_client_alive_max-PR_8197.patch -Patch88: scap-security-guide-0.1.61-update_RHEL_08_020041-PR_8146.patch -Patch89: scap-security-guide-0.1.61-no_time_servers_chrony-PR_8187.patch -Patch90: scap-security-guide-0.1.61-update_RHEL_08_010385-PR_8220.patch -Patch91: scap-security-guide-0.1.61-add_RHEL_08_0103789_include_sudoers-PR_8196.patch -Patch92: scap-security-guide-0.1.61-remove_tmux_process_running_check-PR_8246.patch -Patch93: scap-security-guide-0.1.58-templated_tests-PR_7211.patch -Patch94: reorder-reference-in-alphabetical-order.patch -Patch95: scap-security-guide-0.1.59-fix_accounts_umask_interactive_users-PR_7898.patch -Patch96: scap-security-guide-0.1.58-fix_rsyslog_streamdriver_remediation_typos-PR_7570.patch -Patch97: scap-security-guide-0.1.59-rsyslog_encrypt_offload_fix_7741-PR_7755.patch -Patch98: scap-security-guide-0.1.58-ansible_disable_ctrlaltdel_reboot-PR_7571.patch -Patch99: scap-security-guide-0.1.60-address_pool_directives_maxpoll_rule-PR_7910.patch +Patch1: scap-security-guide-0.1.61-file_groupowner-PR_7791.patch +Patch2: scap-security-guide-0.1.61-file_owner-PR_7789.patch +Patch3: scap-security-guide-0.1.61-file_permissions-PR_7788.patch +Patch4: scap-security-guide-0.1.61-update_RHEL_08_010287-PR_8051.patch +Patch5: scap-security-guide-0.1.61-add_RHEL_08_010331-PR_8055.patch +Patch6: scap-security-guide-0.1.61-rhel8_stig_v1r5-PR_8050.patch +Patch7: scap-security-guide-0.1.61-RC_277_245-PR_8069.patch +Patch8: scap-security-guide-0.1.61-RC_248_249-PR_8071.patch +Patch9: scap-security-guide-0.1.61-RC_251-PR_8072.patch +Patch10: scap-security-guide-0.1.61-RC_246_250-PR_8070.patch +Patch11: scap-security-guide-0.1.61-RC_247-PR_8114.patch +Patch12: scap-security-guide-0.1.61-RC_254-PR_8113.patch +Patch13: scap-security-guide-0.1.61-RC_253-PR_8111.patch +Patch14: scap-security-guide-0.1.61-RC_255-PR_8112.patch +Patch15: scap-security-guide-0.1.61-add_RHEL_08_010359-PR_8131.patch +Patch16: scap-security-guide-0.1.61-RC_244-PR_8133.patch +Patch17: scap-security-guide-0.1.61-update_RHEL_STIG-PR_8130.patch +Patch18: scap-security-guide-0.1.61-update_RHEL_08_STIG-PR_8139.patch +Patch19: scap-security-guide-0.1.61-remove_RHEL_08_010560-PR_8145.patch +Patch20: scap-security-guide-0.1.61-add_RHEL_08_040321-PR_8169.patch +Patch21: scap-security-guide-0.1.61-add_RHEL_08_020221-PR_8173.patch +Patch22: scap-security-guide-0.1.61-update_RHEL_08_040320-PR_8170.patch +Patch23: scap-security-guide-0.1.61-rhel8_stig_audit_rules-PR_8174.patch +Patch24: scap-security-guide-0.1.61-update_RHEL_08_010030-PR_8183.patch +Patch25: scap-security-guide-0.1.61-selinux_state_rhel8_anssi_enhanced-PR_8182.patch +Patch26: scap-security-guide-0.1.61-update_accounts_password_template-PR_8164.patch +Patch27: scap-security-guide-0.1.61-update_RHEL_08_010383-PR_8138.patch +Patch28: scap-security-guide-0.1.61-remove_client_alive_max-PR_8197.patch +Patch29: scap-security-guide-0.1.61-pwquality-PR_8185.patch +Patch30: scap-security-guide-0.1.61-update_RHEL_08_020041-PR_8146.patch +Patch31: scap-security-guide-0.1.61-rhel86_ospp_fix_audit_ospp_general-PR_8152.patch +Patch32: scap-security-guide-0.1.61-chrony_maxpoll-PR_8187.patch +Patch33: scap-security-guide-0.1.61-add_missing_srgs-PR_8218.patch +Patch34: scap-security-guide-0.1.61-sudoers_timestamp_timeout-PR_8220.patch +Patch35: scap-security-guide-0.1.61-rhel9_ospp_remove_kernel_rules-PR_8092.patch +Patch36: scap-security-guide-0.1.61-grub2_rule_desc_update-PR_8184.patch +Patch37: scap-security-guide-0.1.61-grub2_template_fix-PR_8180.patch +Patch38: scap-security-guide-0.1.61-rear_not_applicable_aarch64-PR_8221.patch +Patch39: scap-security-guide-0.1.61-add_RHEL_08_0103789_include_sudoers-PR_8196.patch +Patch40: scap-security-guide-0.1.61-fix-ansible-service-disabled-task-PR_8226.patch +Patch41: scap-security-guide-0.1.61-dont-remove-krb5-workstation-on-ovirt-PR_8233.patch +Patch42: scap-security-guide-0.1.61-remove_tmux_process_running_check-PR_8246.patch +Patch43: scap-security-guide-0.1.61-fix_bug_in_delta_tailering_script-PR_8245.patch +Patch44: scap-security-guide-0.1.61-fix_enable_fips_mode-PR_8255.patch +Patch45: scap-security-guide-0.1.61-delta_tailoring_fix-PR_8262.patch +Patch46: scap-security-guide-0.1.61-resize-anssi-kickstart-partitions-PR_8261.patch BuildRequires: libxslt BuildRequires: expat @@ -201,6 +149,7 @@ cp -r %{_builddir}/%{_static_rhel6_content}/guides %{buildroot}%{_docdir}/%{name %{_datadir}/%{name}/kickstart %{_datadir}/%{name}/ansible %{_datadir}/%{name}/bash +%{_datadir}/%{name}/tailoring %lang(en) %{_mandir}/man8/scap-security-guide.8.* %doc %{_docdir}/%{name}/LICENSE %doc %{_docdir}/%{name}/README.md @@ -220,20 +169,43 @@ cp -r %{_builddir}/%{_static_rhel6_content}/guides %{buildroot}%{_docdir}/%{name %endif %changelog -* Thu Mar 24 2022 Gabriel Becker - 0.1.57-9 -- Add missing updates to RHEL8 STIG profile version V1R5 (RHBZ#2059876) - -* Wed Mar 23 2022 Gabriel Becker - 0.1.57-8 -- Add missing updates to RHEL8 STIG profile version V1R5 (RHBZ#2059876) - -* Mon Mar 21 2022 Gabriel Becker - 0.1.57-7 -- Add missing updates to RHEL8 STIG profile version V1R5 (RHBZ#2059876) - -* Thu Feb 24 2022 Gabriel Becker - 0.1.57-6 -- Update RHEL8 STIG profile to V1R5 (RHBZ#2059876) - -* Thu Sep 02 2021 Matej Tyc - 0.1.57-5 -- Add USB HID rules to the ISM profile, so it is usable after the installation (RHBZ#1999423). +* Thu Feb 24 2022 Watson Sato - 0.1.60-7 +- Resize ANSSI kickstart partitions to accommodate GUI installs (RHBZ#2058033) + +* Wed Feb 23 2022 Matthew Burket - 0.1.60-6 +- Fix another issue with getting STIG items in create_scap_delta_tailoring.py (RHBZ#2014485) + +* Mon Feb 21 2022 Gabriel Becker - 0.1.60-5 +- Remove tmux process runinng check in configure_bashrc_exec_tmux (RHBZ#2055860) +- Fix issue with getting STIG items in create_scap_delta_tailoring.py (RHBZ#2014485) +- Update rule enable_fips_mode to check only for technical state (RHBZ#2014485) + +* Wed Feb 16 2022 Watson Sato - 0.1.60-4 +- Fix Ansible service disabled tasks (RHBZ#2014485) +- Set rule package_krb5-workstation_removed as not applicable on RHV (RHBZ#2055149) + +* Mon Feb 14 2022 Gabriel Becker - 0.1.60-3 +- Update sudoers rules in RHEL8 STIG V1R5 (RHBZ#2049555) +- Add missing SRG references in RHEL8 STIG V1R5 rules (RHBZ#2049555) +- Update chronyd_or_ntpd_set_maxpoll to disregard server and poll directives (RHBZ#2026301) +- Fix GRUB2 rule template to configure the module correctly on RHEL8 (RHBZ#2030966) +- Update GRUB2 rule descriptions (RHBZ#2014485) +- Make package_rear_installed not applicable on AARCH64 (RHBZ#2014485) + +* Fri Feb 11 2022 Watson Sato - 0.1.60-2 +- Update RHEL8 STIG profile to V1R5 (RHBZ#2049555) +- Align audit rules for OSPP profile (RHBZ#2000264) +- Fix rule selection in ANSSI Enhanced profile (RHBZ#2053587) + +* Thu Jan 27 2022 Watson Sato - 0.1.60-1 +- Rebase to a new upstream release (RHBZ#2014485) + +* Wed Dec 01 2021 Watson Sato - 0.1.59-1 +- Rebase to a new upstream release (RHBZ#2014485) + +* Fri Oct 15 2021 Matej Tyc - 0.1.58-1 +- Rebase to a new upstream release. (RHBZ#2014485) +- Add a VM wait handling to fix issues with tests. * Tue Aug 24 2021 Gabriel Becker - 0.1.57-4 - Fix a value selector in RHEL8 CIS L1 profiles (RHBZ#1993197)