+-
++
+
+
+
+diff --git a/linux_os/guide/system/software/integrity/crypto/configure_crypto_policy/kubernetes/shared.yml b/linux_os/guide/system/software/integrity/crypto/configure_crypto_policy/kubernetes/shared.yml
+index dd096ab41..b180ed3b3 100644
+--- a/linux_os/guide/system/software/integrity/crypto/configure_crypto_policy/kubernetes/shared.yml
++++ b/linux_os/guide/system/software/integrity/crypto/configure_crypto_policy/kubernetes/shared.yml
+@@ -1,5 +1,5 @@
+ ---
+-# platform = multi_platform_rhel,multi_platform_fedora,multi_platform_rhcos
++# platform = multi_platform_rhel,multi_platform_almalinux,multi_platform_fedora,multi_platform_rhcos
+ # reboot = true
+ # strategy = restrict
+ # complexity = low
+diff --git a/linux_os/guide/system/software/integrity/crypto/configure_crypto_policy/tests/config_and_current_same_time.pass.sh b/linux_os/guide/system/software/integrity/crypto/configure_crypto_policy/tests/config_and_current_same_time.pass.sh
+index 8a4fd001c..72305d4a7 100644
+--- a/linux_os/guide/system/software/integrity/crypto/configure_crypto_policy/tests/config_and_current_same_time.pass.sh
++++ b/linux_os/guide/system/software/integrity/crypto/configure_crypto_policy/tests/config_and_current_same_time.pass.sh
+@@ -1,5 +1,5 @@
+ #!/bin/bash
+-# platform = Oracle Linux 8,Oracle Linux 9,multi_platform_rhel
++# platform = Oracle Linux 8,Oracle Linux 9,multi_platform_rhel,multi_platform_almalinux
+ # packages = crypto-policies-scripts
+
+ # IMPORTANT: This is a false negative scenario.
+diff --git a/linux_os/guide/system/software/integrity/crypto/configure_crypto_policy/tests/config_newer_than_current.fail.sh b/linux_os/guide/system/software/integrity/crypto/configure_crypto_policy/tests/config_newer_than_current.fail.sh
+index 86f92f01d..446899d74 100644
+--- a/linux_os/guide/system/software/integrity/crypto/configure_crypto_policy/tests/config_newer_than_current.fail.sh
++++ b/linux_os/guide/system/software/integrity/crypto/configure_crypto_policy/tests/config_newer_than_current.fail.sh
+@@ -1,5 +1,5 @@
+ #!/bin/bash
+-# platform = Oracle Linux 8,Oracle Linux 9,multi_platform_rhel
++# platform = Oracle Linux 8,Oracle Linux 9,multi_platform_rhel,multi_platform_almalinux
+ # packages = crypto-policies-scripts
+
+ update-crypto-policies --set "DEFAULT"
+diff --git a/linux_os/guide/system/software/integrity/crypto/configure_crypto_policy/tests/missing_nss_config.fail.sh b/linux_os/guide/system/software/integrity/crypto/configure_crypto_policy/tests/missing_nss_config.fail.sh
+index eabefa55c..77fef76c7 100644
+--- a/linux_os/guide/system/software/integrity/crypto/configure_crypto_policy/tests/missing_nss_config.fail.sh
++++ b/linux_os/guide/system/software/integrity/crypto/configure_crypto_policy/tests/missing_nss_config.fail.sh
+@@ -1,5 +1,5 @@
+ #!/bin/bash
+-# platform = Oracle Linux 8,Oracle Linux 9,multi_platform_rhel
++# platform = Oracle Linux 8,Oracle Linux 9,multi_platform_rhel,multi_platform_almalinux
+ # profiles = xccdf_org.ssgproject.content_profile_ospp
+ # packages = crypto-policies-scripts
+
+diff --git a/linux_os/guide/system/software/integrity/crypto/configure_crypto_policy/tests/nss_config_as_file.pass.sh b/linux_os/guide/system/software/integrity/crypto/configure_crypto_policy/tests/nss_config_as_file.pass.sh
+index 311b8ef26..105040173 100644
+--- a/linux_os/guide/system/software/integrity/crypto/configure_crypto_policy/tests/nss_config_as_file.pass.sh
++++ b/linux_os/guide/system/software/integrity/crypto/configure_crypto_policy/tests/nss_config_as_file.pass.sh
+@@ -1,5 +1,5 @@
+ #!/bin/bash
+-# platform = Oracle Linux 8,Oracle Linux 9,multi_platform_rhel
++# platform = Oracle Linux 8,Oracle Linux 9,multi_platform_rhel,multi_platform_almalinux
+ # profiles = xccdf_org.ssgproject.content_profile_ospp
+ # packages = crypto-policies-scripts
+
+diff --git a/linux_os/guide/system/software/integrity/crypto/configure_crypto_policy/tests/nss_config_as_symlink.pass.sh b/linux_os/guide/system/software/integrity/crypto/configure_crypto_policy/tests/nss_config_as_symlink.pass.sh
+index adfd91745..282d77221 100644
+--- a/linux_os/guide/system/software/integrity/crypto/configure_crypto_policy/tests/nss_config_as_symlink.pass.sh
++++ b/linux_os/guide/system/software/integrity/crypto/configure_crypto_policy/tests/nss_config_as_symlink.pass.sh
+@@ -1,5 +1,5 @@
+ #!/bin/bash
+-# platform = Oracle Linux 8,Oracle Linux 9,multi_platform_rhel
++# platform = Oracle Linux 8,Oracle Linux 9,multi_platform_rhel,multi_platform_almalinux
+ # profiles = xccdf_org.ssgproject.content_profile_ospp
+ # packages = crypto-policies-scripts
+
+diff --git a/linux_os/guide/system/software/integrity/crypto/configure_crypto_policy/tests/policy_fips_ospp_set.pass.sh b/linux_os/guide/system/software/integrity/crypto/configure_crypto_policy/tests/policy_fips_ospp_set.pass.sh
+index 4437e369a..a35996eba 100644
+--- a/linux_os/guide/system/software/integrity/crypto/configure_crypto_policy/tests/policy_fips_ospp_set.pass.sh
++++ b/linux_os/guide/system/software/integrity/crypto/configure_crypto_policy/tests/policy_fips_ospp_set.pass.sh
+@@ -1,5 +1,5 @@
+ #!/bin/bash
+-# platform = Oracle Linux 8,Oracle Linux 9,multi_platform_rhel
++# platform = Oracle Linux 8,Oracle Linux 9,multi_platform_rhel,multi_platform_almalinux
+ # profiles = xccdf_org.ssgproject.content_profile_ospp
+ # packages = crypto-policies-scripts
+
+diff --git a/linux_os/guide/system/software/integrity/fips/enable_dracut_fips_module/tests/fips_dracut_module_missing.fail.sh b/linux_os/guide/system/software/integrity/fips/enable_dracut_fips_module/tests/fips_dracut_module_missing.fail.sh
+index d0a400adf..1f0cf1317 100644
+--- a/linux_os/guide/system/software/integrity/fips/enable_dracut_fips_module/tests/fips_dracut_module_missing.fail.sh
++++ b/linux_os/guide/system/software/integrity/fips/enable_dracut_fips_module/tests/fips_dracut_module_missing.fail.sh
+@@ -1,6 +1,6 @@
+ #!/bin/bash
+ # packages = crypto-policies-scripts
+-# platform = multi_platform_rhel,Red Hat Virtualization 4,multi_platform_ol
++# platform = multi_platform_rhel,multi_platform_almalinux,Red Hat Virtualization 4,multi_platform_ol
+ {{% if 'rhel' in product %}}
+ # remediation = none
+ {{% endif %}}
+diff --git a/linux_os/guide/system/software/integrity/fips/enable_dracut_fips_module/tests/fips_dracut_module_present.pass.sh b/linux_os/guide/system/software/integrity/fips/enable_dracut_fips_module/tests/fips_dracut_module_present.pass.sh
+index b92e82236..138d2c997 100644
+--- a/linux_os/guide/system/software/integrity/fips/enable_dracut_fips_module/tests/fips_dracut_module_present.pass.sh
++++ b/linux_os/guide/system/software/integrity/fips/enable_dracut_fips_module/tests/fips_dracut_module_present.pass.sh
+@@ -1,6 +1,6 @@
+ #!/bin/bash
+ # packages = crypto-policies-scripts
+-# platform = multi_platform_rhel,Red Hat Virtualization 4,multi_platform_ol
++# platform = multi_platform_rhel,multi_platform_almalinux,Red Hat Virtualization 4,multi_platform_ol
+
+ fips-mode-setup --enable
+ FIPS_CONF="/etc/dracut.conf.d/40-fips.conf"
+diff --git a/linux_os/guide/system/software/sudo/package_sudo_installed/tests/custom-package-removed.fail.sh b/linux_os/guide/system/software/sudo/package_sudo_installed/tests/custom-package-removed.fail.sh
+index f8b112e1a..33a266be6 100644
+--- a/linux_os/guide/system/software/sudo/package_sudo_installed/tests/custom-package-removed.fail.sh
++++ b/linux_os/guide/system/software/sudo/package_sudo_installed/tests/custom-package-removed.fail.sh
+@@ -1,5 +1,5 @@
+ #!/bin/bash
+-# platform = multi_platform_rhel,multi_platform_fedora
++# platform = multi_platform_rhel,multi_platform_almalinux,multi_platform_fedora
+
+ # Package libselinux cannot be uninstalled normally
+ # as it would cause removal of sudo package which is
+diff --git a/linux_os/guide/system/software/updating/dnf-automatic_apply_updates/ansible/shared.yml b/linux_os/guide/system/software/updating/dnf-automatic_apply_updates/ansible/shared.yml
+index e43ee7994..8b41b5d93 100644
+--- a/linux_os/guide/system/software/updating/dnf-automatic_apply_updates/ansible/shared.yml
++++ b/linux_os/guide/system/software/updating/dnf-automatic_apply_updates/ansible/shared.yml
+@@ -1,4 +1,4 @@
+-# platform = multi_platform_fedora,multi_platform_rhel,multi_platform_sle,Oracle Linux 8
++# platform = multi_platform_fedora,multi_platform_rhel,multi_platform_almalinux,multi_platform_sle,Oracle Linux 8
+ # reboot = false
+ # strategy = unknown
+ # complexity = low
+diff --git a/linux_os/guide/system/software/updating/dnf-automatic_security_updates_only/ansible/shared.yml b/linux_os/guide/system/software/updating/dnf-automatic_security_updates_only/ansible/shared.yml
+index 1c68a6ec3..fa8f50b84 100644
+--- a/linux_os/guide/system/software/updating/dnf-automatic_security_updates_only/ansible/shared.yml
++++ b/linux_os/guide/system/software/updating/dnf-automatic_security_updates_only/ansible/shared.yml
+@@ -1,4 +1,4 @@
+-# platform = multi_platform_fedora,multi_platform_rhel,multi_platform_sle,Oracle Linux 8
++# platform = multi_platform_fedora,multi_platform_rhel,multi_platform_almalinux,multi_platform_sle,Oracle Linux 8
+ # reboot = false
+ # strategy = unknown
+ # complexity = low
+diff --git a/linux_os/guide/system/software/updating/enable_gpgcheck_for_all_repositories/ansible/shared.yml b/linux_os/guide/system/software/updating/enable_gpgcheck_for_all_repositories/ansible/shared.yml
+index af72a7d18..8f5a02c51 100644
+--- a/linux_os/guide/system/software/updating/enable_gpgcheck_for_all_repositories/ansible/shared.yml
++++ b/linux_os/guide/system/software/updating/enable_gpgcheck_for_all_repositories/ansible/shared.yml
+@@ -1,4 +1,4 @@
+-# platform = multi_platform_rhel
++# platform = multi_platform_rhel,multi_platform_almalinux
+ # reboot = false
+ # strategy = enable
+ # complexity = low
+diff --git a/linux_os/guide/system/software/updating/enable_gpgcheck_for_all_repositories/bash/shared.sh b/linux_os/guide/system/software/updating/enable_gpgcheck_for_all_repositories/bash/shared.sh
+index eb390cd1f..ac318fa9a 100644
+--- a/linux_os/guide/system/software/updating/enable_gpgcheck_for_all_repositories/bash/shared.sh
++++ b/linux_os/guide/system/software/updating/enable_gpgcheck_for_all_repositories/bash/shared.sh
+@@ -1,4 +1,4 @@
+-# platform = multi_platform_rhel
++# platform = multi_platform_rhel,multi_platform_almalinux
+
+ function replace_all_gpgcheck {
+ sed -i 's/gpgcheck\s*=.*/gpgcheck=1/g' /etc/yum.repos.d/*
+diff --git a/linux_os/guide/system/software/updating/ensure_almalinux_gpgkey_installed/ansible/shared.yml b/linux_os/guide/system/software/updating/ensure_almalinux_gpgkey_installed/ansible/shared.yml
+index add0cd7dd..1cf05952d 100644
+--- a/linux_os/guide/system/software/updating/ensure_almalinux_gpgkey_installed/ansible/shared.yml
++++ b/linux_os/guide/system/software/updating/ensure_almalinux_gpgkey_installed/ansible/shared.yml
+@@ -13,7 +13,7 @@
+
+ - name: Read signatures in GPG key
+ # According to /usr/share/doc/gnupg2/DETAILS fingerprints are in "fpr" record in field 10
+- ansible.builtin.command: gpg --show-keys --with-fingerprint --with-colons "/etc/pki/rpm-gpg/RPM-GPG-KEY-AlmaLinux-9"
++ ansible.builtin.command: gpg --show-keys --with-fingerprint --with-colons "/etc/pki/rpm-gpg/RPM-GPG-KEY-AlmaLinux-10"
+ changed_when: False
+ register: gpg_fingerprints
+ check_mode: no
+@@ -30,9 +30,9 @@
+ - name: Import AlmaLinux GPG key
+ ansible.builtin.rpm_key:
+ state: present
+- key: /etc/pki/rpm-gpg/RPM-GPG-KEY-AlmaLinux-9
++ key: /etc/pki/rpm-gpg/RPM-GPG-KEY-AlmaLinux-10
+ when:
+ - gpg_key_directory_permission.stat.mode <= '0755'
+ - (gpg_installed_fingerprints | difference(gpg_valid_fingerprints)) | length == 0
+ - gpg_installed_fingerprints | length > 0
+- - ansible_distribution == "AlmaLinux" and ansible_distribution_version == "9"
++ - ansible_distribution == "AlmaLinux" and ansible_distribution_version == "10"
+diff --git a/linux_os/guide/system/software/updating/ensure_almalinux_gpgkey_installed/bash/shared.sh b/linux_os/guide/system/software/updating/ensure_almalinux_gpgkey_installed/bash/shared.sh
+index f78a6fb82..10b7819c4 100644
+--- a/linux_os/guide/system/software/updating/ensure_almalinux_gpgkey_installed/bash/shared.sh
++++ b/linux_os/guide/system/software/updating/ensure_almalinux_gpgkey_installed/bash/shared.sh
+@@ -2,7 +2,7 @@
+ readonly ALMALINUX_RELEASE_FINGERPRINT="{{{ release_key_fingerprint }}}"
+
+ # Location of the key we would like to import (once it's integrity verified)
+-readonly ALMALINUX_RELEASE_KEY="/etc/pki/rpm-gpg/RPM-GPG-KEY-AlmaLinux-9"
++readonly ALMALINUX_RELEASE_KEY="/etc/pki/rpm-gpg/RPM-GPG-KEY-AlmaLinux-10"
+
+ RPM_GPG_DIR_PERMS=$(stat -c %a "$(dirname "$ALMALINUX_RELEASE_KEY")")
+
+diff --git a/linux_os/guide/system/software/updating/ensure_almalinux_gpgkey_installed/rule.yml b/linux_os/guide/system/software/updating/ensure_almalinux_gpgkey_installed/rule.yml
+index e9c73de58..c60a1b027 100644
+--- a/linux_os/guide/system/software/updating/ensure_almalinux_gpgkey_installed/rule.yml
++++ b/linux_os/guide/system/software/updating/ensure_almalinux_gpgkey_installed/rule.yml
+@@ -8,7 +8,7 @@ description: |-
+ come from AlmaLinux (and to connect to the AlmaLinux repositories to
+ receive them), the AlmaLinux GPG key must be properly installed. To install
+ the AlmaLinux GPG key, run:
+- $ sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-AlmaLinux-9
++ $ sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-AlmaLinux-10
+
+ rationale: |-
+ Changes to software components can have significant effects on the overall
+@@ -41,8 +41,8 @@ ocil: |-
+ To ensure that the GPG key is installed, run:
+ $ rpm -q --queryformat "%{SUMMARY}\n" gpg-pubkey
+ The command should return the string below:
+- AlmaLinux OS 9 <packager@almalinux.org> public key
++ AlmaLinux OS 10 <packager@almalinux.org> public key
+
+ fixtext: |-
+ Install {{{ full_name }}} GPG key. Run the following command:
+- $ sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-AlmaLinux-9
++ $ sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-AlmaLinux-10
+diff --git a/linux_os/guide/system/software/updating/ensure_almalinux_gpgkey_installed/tests/key_installed.pass.sh b/linux_os/guide/system/software/updating/ensure_almalinux_gpgkey_installed/tests/key_installed.pass.sh
+index 87b82cb01..ba588f308 100644
+--- a/linux_os/guide/system/software/updating/ensure_almalinux_gpgkey_installed/tests/key_installed.pass.sh
++++ b/linux_os/guide/system/software/updating/ensure_almalinux_gpgkey_installed/tests/key_installed.pass.sh
+@@ -1,5 +1,5 @@
+ #!/bin/bash
+ #
+-# platform = AlmaLinux OS 9
++# platform = AlmaLinux OS 10
+
+-rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-AlmaLinux-9
++rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-AlmaLinux-10
+diff --git a/products/almalinux10/CMakeLists.txt b/products/almalinux10/CMakeLists.txt
+new file mode 100644
+index 000000000..1284434a2
+--- /dev/null
++++ b/products/almalinux10/CMakeLists.txt
+@@ -0,0 +1,26 @@
++# Sometimes our users will try to do: "cd almalinux10; cmake ." That needs to error in a nice way.
++if("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}")
++ message(FATAL_ERROR "cmake has to be used on the root CMakeLists.txt, see the Building ComplianceAsCode section in the Developer Guide!")
++endif()
++
++set(PRODUCT "almalinux10")
++
++ssg_build_product(${PRODUCT})
++
++ssg_build_html_cce_table(${PRODUCT})
++
++ssg_build_html_srgmap_tables(${PRODUCT})
++
++if(SSG_SRG_XLSX_EXPORT)
++ ssg_build_xlsx_srg_export(${PRODUCT} "srg_gpos")
++endif()
++
++#ssg_build_html_stig_tables(${PRODUCT})
++#ssg_build_html_stig_tables_per_profile(${PRODUCT} "stig")
++#ssg_build_html_stig_tables_per_profile(${PRODUCT} "stig_gui")
++
++#ssg_build_html_stig_tables(${PRODUCT} "ospp")
++
++if(SSG_CENTOS_DERIVATIVES_ENABLED)
++ ssg_build_derivative_product(${PRODUCT} "centos" "cs10")
++endif()
+diff --git a/products/almalinux10/overlays/srg_support.xml b/products/almalinux10/overlays/srg_support.xml
+new file mode 100644
+index 000000000..6e0a0ab8c
+--- /dev/null
++++ b/products/almalinux10/overlays/srg_support.xml
+@@ -0,0 +1,173 @@
++
++Documentation to Support DISA OS SRG Mapping
++These groups exist to document how the AlmaLinux OS
++product meets (or does not meet) requirements listed in the DISA OS SRG, for
++those cases where Groups or Rules elsewhere in scap-security-guide do
++not clearly relate.
++
++
++
++
++
++Product Meets this Requirement
++
++AlmaLinux OS meets this requirement through design and implementation.
++
++AlmaLinux OS 10 supports this requirement and cannot be configured to be out of
++compliance. This is a permanent not a finding.
++
++
++This requirement is a permanent not a finding. No fix is required.
++
++
++
++
++
++
++
++
++Product Meets this Requirement
++
++The AlmaLinux OS audit system meets this requirement through design and implementation.
++
++The AlmaLinux OS 10 auditing system supports this requirement and cannot be configured to be out of
++compliance. Every audit record in AlmaLinux OS includes a timestamp, the operation attempted,
++success or failure of the operation, the subject involved (executable/process),
++the object involved (file/path), and security labels for the subject and object.
++It also includes the ability to label events with custom key labels. The auditing system
++centralizes the recording of audit events for the entire system and includes
++reduction (ausearch), reporting (aureport), and real-time
++response (audispd) facilities.
++This is a permanent not a finding.
++
++
++This requirement is a permanent not a finding. No fix is required.
++
++
++
++
++
++
++
++
++Product Meets this Requirement
++
++AlmaLinux OS meets this requirement through design and implementation.
++
++AlmaLinux OS 10 supports this requirement and cannot be configured to be out of
++compliance. This is a permanent not a finding.
++
++
++This requirement is a permanent not a finding. No fix is required.
++
++
++
++
++
++
++
++
++
++
++
++
++Guidance Does Not Meet this Requirement Due to Impracticality or Scope
++
++The guidance does not meet this requirement.
++The requirement is impractical or out of scope.
++
++
++AlmaLinux OS 10 cannot support this requirement without assistance from an external
++application, policy, or service. This requirement is NA.
++
++
++This requirement is NA. No fix is required.
++
++
++
++
++
++
++
++
++Implementation of the Requirement is Not Supported
++
++AlmaLinux OS 10 does not support this requirement.
++
++
++This is a permanent finding.
++
++
++This requirement is a permanent finding and cannot be fixed. An appropriate
++mitigation for the system must be implemented but this finding cannot be
++considered fixed.
++
++
++
++
++
++
++
++
++Guidance Does Not Meet this Requirement Due to Impracticality or Scope
++
++The guidance does not meet this requirement.
++The requirement is impractical or out of scope.
++
++
++AlmaLinux OS 10 cannot support this requirement without assistance from an external
++application, policy, or service. This requirement is NA.
++
++
++This requirement is NA. No fix is required.
++
++
++
++
++
++
++A process for prompt installation of OS updates must exist.
++
++This is a manual inquiry about update procedure.
++
++
++Ask an administrator if a process exists to promptly and automatically apply OS
++software updates. If such a process does not exist, this is a finding.
++
++If the OS update process limits automatic updates of software packages, where
++such updates would impede normal system operation, to scheduled maintenance
++windows, but still within IAVM-dictated timeframes, this is not a finding.
++
++
++Procedures to promptly apply software updates must be established and
++executed. The AlmaLinux operating system provides support for automating such a
++process, by running the yum program through a cron job or by managing the
++system and its packages through the Foreman.
++
++
++
++
++
++
+diff --git a/products/almalinux10/product.yml b/products/almalinux10/product.yml
+new file mode 100644
+index 000000000..a428a42ec
+--- /dev/null
++++ b/products/almalinux10/product.yml
+@@ -0,0 +1,54 @@
++product: almalinux10
++full_name: AlmaLinux OS 10
++type: platform
++
++families:
++ - rhel
++ - rhel-like
++
++major_version_ordinal: 10
++
++benchmark_id: ALMALINUX-10
++benchmark_root: "../../linux_os/guide"
++components_root: "../../components"
++
++profiles_root: "./profiles"
++
++pkg_manager: "dnf"
++
++init_system: "systemd"
++
++# EFI and non-EFI configs are stored in same path, see https://fedoraproject.org/wiki/Changes/UnifyGrubConfig
++
++sshd_distributed_config: "true"
++bootable_containers_supported: "true"
++
++dconf_gdm_dir: "distro.d"
++
++faillock_path: "/var/log/faillock"
++
++# The fingerprints below are retrieved from https://almalinux.org/security/
++pkg_release: "668fe8ef"
++pkg_version: "c2a1e572"
++
++release_key_fingerprint: "EE6DB7B98F5BF5EDD9DA0DE5DEE5C11CC2A1E572"
++oval_feed_url: "https://security.almalinux.org/oval/org.almalinux.alsa-10.xml.bz2"
++
++cpes_root: "../../shared/applicability"
++cpes:
++ - almalinux10:
++ name: "cpe:/o:almalinux:almalinux:10"
++ title: "AlmaLinux OS 10"
++ check_id: installed_OS_is_almalinux10
++
++# Mapping of CPE platform to package
++platform_package_overrides:
++ login_defs: "shadow-utils"
++
++reference_uris:
++ cis: 'https://www.cisecurity.org/benchmark/almalinuxos_linux/'
++
++
++journald_conf_dir_path: /etc/systemd/journald.conf.d
++audit_watches_style: modern
++rsyslog_cafile: /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
+diff --git a/products/almalinux10/profiles/anssi_bp28_enhanced.profile b/products/almalinux10/profiles/anssi_bp28_enhanced.profile
+new file mode 100644
+index 000000000..1a013f1de
+--- /dev/null
++++ b/products/almalinux10/profiles/anssi_bp28_enhanced.profile
+@@ -0,0 +1,87 @@
++documentation_complete: true
++
++metadata:
++ SMEs:
++ - marcusburghardt
++ - vojtapolasek
++
++title: 'ANSSI-BP-028 (enhanced)'
++
++description: |-
++ This is a draft profile for experimental purposes.
++ This draft profile contains configurations that align to ANSSI-BP-028 v2.0 at the enhanced hardening level.
++
++ ANSSI is the French National Information Security Agency, and stands for Agence nationale de la sécurité des systèmes d'information.
++ ANSSI-BP-028 is a configuration recommendation for GNU/Linux systems.
++
++ A copy of the ANSSI-BP-028 can be found at the ANSSI website:
++ https://www.ssi.gouv.fr/administration/guide/recommandations-de-securite-relatives-a-un-systeme-gnulinux/
++
++ An English version of the ANSSI-BP-028 can also be found at the ANSSI website:
++ https://cyber.gouv.fr/publications/configuration-recommendations-gnulinux-system
++
++selections:
++ - anssi:all:enhanced
++ - var_password_hashing_algorithm_pam=yescrypt
++ # Following rules are incompatible with rhel10 product
++ - '!enable_authselect'
++ # tally2 is deprecated, replaced by faillock
++ - '!accounts_passwords_pam_tally2_deny_root'
++ - '!accounts_passwords_pam_tally2'
++ - '!accounts_passwords_pam_tally2_unlock_time'
++ # RHEL 10 does not support 32 bit architecture
++ - '!install_PAE_kernel_on_x86-32'
++ # the package does not exist in RHEL 10
++ - '!package_dracut-fips-aesni_installed'
++ # pam_cracklib is not used in RHEL 10
++ - '!cracklib_accounts_password_pam_lcredit'
++ - '!cracklib_accounts_password_pam_ocredit'
++ - '!cracklib_accounts_password_pam_ucredit'
++ - '!cracklib_accounts_password_pam_minlen'
++ - '!cracklib_accounts_password_pam_dcredit'
++ # umask is configured at a different place in RHEL 10
++ - '!sudo_add_umask'
++ # Non-Red Hat keys are irrelevant on RHEL 10
++ - '!ensure_oracle_gpgkey_installed'
++ - ensure_almalinux_gpgkey_installed
++ # this rule is not automated anymore
++ - '!security_patches_up_to_date'
++ # There is only chrony package on RHEL 10, no ntpd
++ - '!service_chronyd_or_ntpd_enabled'
++ - 'service_chronyd_enabled'
++ # RHEL 10 unified the paths for grub2 files. These rules are selected in control file by R29.
++ - '!file_groupowner_efi_grub2_cfg'
++ - '!file_owner_efi_grub2_cfg'
++ - '!file_permissions_efi_grub2_cfg'
++ - '!file_groupowner_efi_user_cfg'
++ - '!file_owner_efi_user_cfg'
++ - '!file_permissions_efi_user_cfg'
++ # RHEL 10 unified the paths for grub2 files. This rule is selected in control file by R5.
++ - '!grub2_uefi_password'
++ # disable R45: Enable AppArmor security profiles
++ - '!apparmor_configured'
++ - '!all_apparmor_profiles_enforced'
++ - '!grub2_enable_apparmor'
++ - '!package_apparmor_installed'
++ - '!package_pam_apparmor_installed'
++ # these packages do not exist in rhel10 (R62)
++ - '!package_dhcp_removed'
++ - '!package_rsh_removed'
++ - '!package_rsh-server_removed'
++ - '!package_sendmail_removed'
++ - '!package_talk_removed'
++ - '!package_talk-server_removed'
++ - '!package_xinetd_removed'
++ - '!package_ypbind_removed'
++ - '!package_ypserv_removed'
++ # RHEL 10 uses a different rule for auditing changes to selinux configuration (R73)
++ - '!audit_rules_mac_modification'
++ - audit_rules_mac_modification_etc_selinux
++ # these rules are failing when they are remediated with Ansible, removing them temporarily until they are fixed
++ - '!accounts_password_pam_retry'
++ # These rules are being modified and they are causing trouble in their current state (R67)
++ - '!sssd_enable_pam_services'
++ - '!sssd_ldap_configure_tls_reqcert'
++ - '!sssd_ldap_start_tls'
++ # These rules are no longer relevant
++ - '!prefer_64bit_os'
+diff --git a/products/almalinux10/profiles/anssi_bp28_high.profile b/products/almalinux10/profiles/anssi_bp28_high.profile
+new file mode 100644
+index 000000000..d769a2284
+--- /dev/null
++++ b/products/almalinux10/profiles/anssi_bp28_high.profile
+@@ -0,0 +1,99 @@
++documentation_complete: true
++
++metadata:
++ SMEs:
++ - marcusburghardt
++ - vojtapolasek
++
++title: 'ANSSI-BP-028 (high)'
++
++description: |-
++ This is a draft profile for experimental purposes.
++ This draft profile contains configurations that align to ANSSI-BP-028 v2.0 at the high hardening level.
++
++ ANSSI is the French National Information Security Agency, and stands for Agence nationale de la sécurité des systèmes d'information.
++ ANSSI-BP-028 is a configuration recommendation for GNU/Linux systems.
++
++ A copy of the ANSSI-BP-028 can be found at the ANSSI website:
++ https://www.ssi.gouv.fr/administration/guide/recommandations-de-securite-relatives-a-un-systeme-gnulinux/
++
++ An English version of the ANSSI-BP-028 can also be found at the ANSSI website:
++ https://cyber.gouv.fr/publications/configuration-recommendations-gnulinux-system
++
++selections:
++ - anssi:all:high
++ - var_password_hashing_algorithm_pam=yescrypt
++ # the following rule renders UEFI systems unbootable
++ - '!sebool_secure_mode_insmod'
++ # Following rules are incompatible with rhel10 product
++ - '!enable_authselect'
++ # tally2 is deprecated, replaced by faillock
++ - '!accounts_passwords_pam_tally2_deny_root'
++ - '!accounts_passwords_pam_tally2'
++ - '!accounts_passwords_pam_tally2_unlock_time'
++ # RHEL 10 does not support 32 bit architecture
++ - '!install_PAE_kernel_on_x86-32'
++ # this timer does not exist in RHEL 10
++ - '!aide_periodic_checking_systemd_timer'
++ # the package does not exist in RHEL 10
++ - '!package_dracut-fips-aesni_installed'
++ # pam_cracklib is not used in RHEL 10
++ - '!cracklib_accounts_password_pam_lcredit'
++ - '!cracklib_accounts_password_pam_ocredit'
++ - '!cracklib_accounts_password_pam_ucredit'
++ - '!cracklib_accounts_password_pam_minlen'
++ - '!cracklib_accounts_password_pam_dcredit'
++ # umask is configured at a different place in RHEL 10
++ - '!sudo_add_umask'
++ # Non-Red Hat keys are irrelevant on RHEL 10
++ - '!ensure_oracle_gpgkey_installed'
++ - ensure_almalinux_gpgkey_installed
++ # this rule is not automated anymore
++ - '!security_patches_up_to_date'
++ # There is only chrony package on RHEL 10, no ntpd
++ - '!service_chronyd_or_ntpd_enabled'
++ - 'service_chronyd_enabled'
++ # RHEL 10 unified the paths for grub2 files. These rules are selected in control file by R29.
++ - '!file_groupowner_efi_grub2_cfg'
++ - '!file_owner_efi_grub2_cfg'
++ - '!file_permissions_efi_grub2_cfg'
++ - '!file_groupowner_efi_user_cfg'
++ - '!file_owner_efi_user_cfg'
++ - '!file_permissions_efi_user_cfg'
++ # RHEL 10 unified the paths for grub2 files. This rule is selected in control file by R5.
++ - '!grub2_uefi_password'
++ # disable R45: Enable AppArmor security profiles
++ - '!apparmor_configured'
++ - '!all_apparmor_profiles_enforced'
++ - '!grub2_enable_apparmor'
++ - '!package_apparmor_installed'
++ - '!package_pam_apparmor_installed'
++ # these packages do not exist in rhel10 (R62)
++ - '!package_dhcp_removed'
++ - '!package_rsh_removed'
++ - '!package_rsh-server_removed'
++ - '!package_sendmail_removed'
++ - '!package_talk_removed'
++ - '!package_talk-server_removed'
++ - '!package_xinetd_removed'
++ - '!package_ypbind_removed'
++ - '!package_ypserv_removed'
++ # RHEL 10 uses a different rule for auditing changes to selinux configuration (R73)
++ - '!audit_rules_mac_modification'
++ - audit_rules_mac_modification_etc_selinux
++ # these rules are failing when they are remediated with Ansible, removing them temporarily until they are fixed
++ - '!accounts_password_pam_retry'
++ # These rules are being modified and they are causing trouble in their current state (R67)
++ - '!sssd_enable_pam_services'
++ - '!sssd_ldap_configure_tls_reqcert'
++ - '!sssd_ldap_start_tls'
++ # These rules are no longer relevant
++ - '!prefer_64bit_os'
++ - '!kernel_config_devkmem'
++ - '!kernel_config_hardened_usercopy_fallback'
++ - '!kernel_config_page_poisoning_no_sanity'
++ - '!kernel_config_page_poisoning_zero'
++ - '!kernel_config_page_table_isolation'
++ - '!kernel_config_refcount_full'
++ - '!kernel_config_retpoline'
++ - '!kernel_config_security_writable_hooks'
+diff --git a/products/almalinux10/profiles/anssi_bp28_intermediary.profile b/products/almalinux10/profiles/anssi_bp28_intermediary.profile
+new file mode 100644
+index 000000000..11a10d1e0
+--- /dev/null
++++ b/products/almalinux10/profiles/anssi_bp28_intermediary.profile
+@@ -0,0 +1,62 @@
++documentation_complete: true
++
++metadata:
++ SMEs:
++ - marcusburghardt
++ - vojtapolasek
++
++title: 'ANSSI-BP-028 (intermediary)'
++
++description: |-
++ This is a draft profile for experimental purposes.
++ This draft profile contains configurations that align to ANSSI-BP-028 v2.0 at the intermediary hardening level.
++
++ ANSSI is the French National Information Security Agency, and stands for Agence nationale de la sécurité des systèmes d'information.
++ ANSSI-BP-028 is a configuration recommendation for GNU/Linux systems.
++
++ A copy of the ANSSI-BP-028 can be found at the ANSSI website:
++ https://www.ssi.gouv.fr/administration/guide/recommandations-de-securite-relatives-a-un-systeme-gnulinux/
++
++ An English version of the ANSSI-BP-028 can also be found at the ANSSI website:
++ https://cyber.gouv.fr/publications/configuration-recommendations-gnulinux-system
++
++selections:
++ - anssi:all:intermediary
++ - var_password_hashing_algorithm_pam=yescrypt
++ # Following rules are incompatible with rhel10 product
++ - '!enable_authselect'
++ # tally2 is deprecated, replaced by faillock
++ - '!accounts_passwords_pam_tally2_deny_root'
++ - '!accounts_passwords_pam_tally2'
++ - '!accounts_passwords_pam_tally2_unlock_time'
++ # pam_cracklib is not used in RHEL 10
++ - '!cracklib_accounts_password_pam_minlen'
++ - '!cracklib_accounts_password_pam_ucredit'
++ - '!cracklib_accounts_password_pam_dcredit'
++ - '!cracklib_accounts_password_pam_lcredit'
++ - '!cracklib_accounts_password_pam_ocredit'
++ # umask is configured at a different place in RHEL 10
++ - '!sudo_add_umask'
++ # Non-Red Hat keys are irrelevant on RHEL 10
++ - '!ensure_oracle_gpgkey_installed'
++ - ensure_almalinux_gpgkey_installed
++ # this rule is not automated anymore
++ - '!security_patches_up_to_date'
++ # these packages do not exist in rhel10 (R62)
++ - '!package_dhcp_removed'
++ - '!package_rsh_removed'
++ - '!package_rsh-server_removed'
++ - '!package_sendmail_removed'
++ - '!package_talk_removed'
++ - '!package_talk-server_removed'
++ - '!package_xinetd_removed'
++ - '!package_ypbind_removed'
++ - '!package_ypserv_removed'
++ # these rules are failing when they are remediated with Ansible, removing them temporarily until they are fixed
++ - '!accounts_password_pam_retry'
++ # These rules are being modified and they are causing trouble in their current state (R67)
++ - '!sssd_enable_pam_services'
++ - '!sssd_ldap_configure_tls_reqcert'
++ - '!sssd_ldap_start_tls'
++ # RHEL 10 unified the paths for grub2 files. This rule is selected in control file by R5.
++ - '!grub2_uefi_password'
+diff --git a/products/almalinux10/profiles/anssi_bp28_minimal.profile b/products/almalinux10/profiles/anssi_bp28_minimal.profile
+new file mode 100644
+index 000000000..5833a0cce
+--- /dev/null
++++ b/products/almalinux10/profiles/anssi_bp28_minimal.profile
+@@ -0,0 +1,54 @@
++documentation_complete: true
++
++metadata:
++ SMEs:
++ - marcusburghardt
++ - vojtapolasek
++
++title: 'ANSSI-BP-028 (minimal)'
++
++description: |-
++ This is a draft profile for experimental purposes.
++ This draft profile contains configurations that align to ANSSI-BP-028 v2.0 at the minimal hardening level.
++
++ ANSSI is the French National Information Security Agency, and stands for Agence nationale de la sécurité des systèmes d'information.
++ ANSSI-BP-028 is a configuration recommendation for GNU/Linux systems.
++
++ A copy of the ANSSI-BP-028 can be found at the ANSSI website:
++ https://www.ssi.gouv.fr/administration/guide/recommandations-de-securite-relatives-a-un-systeme-gnulinux/
++
++ An English version of the ANSSI-BP-028 can also be found at the ANSSI website:
++ https://cyber.gouv.fr/publications/configuration-recommendations-gnulinux-system
++
++selections:
++ - anssi:all:minimal
++ - var_password_hashing_algorithm_pam=yescrypt
++ # Following rules are incompatible with rhel10 product
++ - '!enable_authselect'
++ # tally2 is deprecated, replaced by faillock
++ - '!accounts_passwords_pam_tally2_deny_root'
++ - '!accounts_passwords_pam_tally2'
++ - '!accounts_passwords_pam_tally2_unlock_time'
++ # pam_cracklib is not used in RHEL 10
++ - '!cracklib_accounts_password_pam_minlen'
++ - '!cracklib_accounts_password_pam_ucredit'
++ - '!cracklib_accounts_password_pam_dcredit'
++ - '!cracklib_accounts_password_pam_lcredit'
++ - '!cracklib_accounts_password_pam_ocredit'
++ # Non-Red Hat keys are irrelevant on RHEL 10
++ - '!ensure_oracle_gpgkey_installed'
++ - ensure_almalinux_gpgkey_installed
++ # this rule is not automated anymore
++ - '!security_patches_up_to_date'
++ # these packages do not exist in rhel10 (R62)
++ - '!package_dhcp_removed'
++ - '!package_rsh_removed'
++ - '!package_rsh-server_removed'
++ - '!package_sendmail_removed'
++ - '!package_talk_removed'
++ - '!package_talk-server_removed'
++ - '!package_xinetd_removed'
++ - '!package_ypbind_removed'
++ - '!package_ypserv_removed'
++ # these rules are failing when they are remediated with Ansible, removing then temporarily until they are fixed
++ - '!accounts_password_pam_retry'
+diff --git a/products/almalinux10/profiles/cis.profile b/products/almalinux10/profiles/cis.profile
+new file mode 100644
+index 000000000..32ccfff1f
+--- /dev/null
++++ b/products/almalinux10/profiles/cis.profile
+@@ -0,0 +1,17 @@
++documentation_complete: true
++
++metadata:
++ SMEs:
++ - marcusburghardt
++
++reference: https://www.cisecurity.org/benchmark/almalinuxos_linux/
++
++title: 'DRAFT - CIS AlmaLinux OS 10 Benchmark for Level 2 - Server'
++
++description: |-
++ This is a draft profile for experimental purposes.
++ It is based on the CIS AlmaLinux OS 9 profile, because an equivalent policy for AlmaLinux OS 10 didn't yet
++ exist at time of the release.
++
++selections:
++ - cis_rhel10:all:l2_server
+diff --git a/products/almalinux10/profiles/cis_server_l1.profile b/products/almalinux10/profiles/cis_server_l1.profile
+new file mode 100644
+index 000000000..d43ea6ea1
+--- /dev/null
++++ b/products/almalinux10/profiles/cis_server_l1.profile
+@@ -0,0 +1,17 @@
++documentation_complete: true
++
++metadata:
++ SMEs:
++ - marcusburghardt
++
++reference: https://www.cisecurity.org/benchmark/almalinuxos_linux/
++
++title: 'DRAFT - CIS AlmaLinux OS 10 Benchmark for Level 1 - Server'
++
++description: |-
++ This is a draft profile for experimental purposes.
++ It is based on the CIS AlmaLinux OS 9 profile, because an equivalent policy for AlmaLinux OS 10 didn't yet
++ exist at time of the release.
++
++selections:
++ - cis_rhel10:all:l1_server
+diff --git a/products/almalinux10/profiles/cis_workstation_l1.profile b/products/almalinux10/profiles/cis_workstation_l1.profile
+new file mode 100644
+index 000000000..27096ea00
+--- /dev/null
++++ b/products/almalinux10/profiles/cis_workstation_l1.profile
+@@ -0,0 +1,17 @@
++documentation_complete: true
++
++metadata:
++ SMEs:
++ - marcusburghardt
++
++reference: https://www.cisecurity.org/benchmark/almalinuxos_linux/
++
++title: 'DRAFT - CIS AlmaLinux OS 10 Benchmark for Level 1 - Workstation'
++
++description: |-
++ This is a draft profile for experimental purposes.
++ It is based on the CIS AlmaLinux OS 9 profile, because an equivalent policy for AlmaLinux OS 10 didn't yet
++ exist at time of the release.
++
++selections:
++ - cis_rhel10:all:l1_workstation
+diff --git a/products/almalinux10/profiles/cis_workstation_l2.profile b/products/almalinux10/profiles/cis_workstation_l2.profile
+new file mode 100644
+index 000000000..7d905f749
+--- /dev/null
++++ b/products/almalinux10/profiles/cis_workstation_l2.profile
+@@ -0,0 +1,17 @@
++documentation_complete: true
++
++metadata:
++ SMEs:
++ - marcusburghardt
++
++reference: https://www.cisecurity.org/benchmark/almalinuxos_linux/
++
++title: 'DRAFT - CIS AlmaLinux OS 10 Benchmark for Level 2 - Workstation'
++
++description: |-
++ This is a draft profile for experimental purposes.
++ It is based on the CIS AlmaLinux OS 9 profile, because an equivalent policy for AlmaLinux OS 10 didn't yet
++ exist at time of the release.
++
++selections:
++ - cis_rhel10:all:l2_workstation
+diff --git a/products/almalinux10/profiles/default.profile b/products/almalinux10/profiles/default.profile
+new file mode 100644
+index 000000000..1616e1bbe
+--- /dev/null
++++ b/products/almalinux10/profiles/default.profile
+@@ -0,0 +1,33 @@
++documentation_complete: true
++
++hidden: true
++
++title: Default Profile for AlmaLinux OS 10
++
++description: |-
++ This profile contains all the rules that once belonged to the rhel10
++ product. This profile won't be rendered into an XCCDF Profile entity,
++ nor it will select any of these rules by default. The only purpose of
++ this profile is to keep a rule in the product's XCCDF Benchmark.
++
++selections:
++ - grub2_nousb_argument
++ - audit_rules_kernel_module_loading_create
++ - grub2_uefi_admin_username
++ - grub2_uefi_password
++ - no_tmux_in_shells
++ - package_tmux_installed
++ - configure_tmux_lock_after_time
++ - configure_tmux_lock_command
++ - configure_tmux_lock_keybinding
++ - audit_rules_session_events
++ - enable_authselect
++ - audit_rules_login_events
++ - audit_rules_unsuccessful_file_modification
++ - configure_openssl_tls_crypto_policy
++ - audit_rules_privileged_commands_pt_chown
++ - package_iprutils_removed
++ - service_rlogin_disabled
++ - service_rsh_disabled
++ - service_rexec_disabled
++ - package_scap-security-guide_installed
+diff --git a/products/almalinux10/profiles/e8.profile b/products/almalinux10/profiles/e8.profile
+new file mode 100644
+index 000000000..e70330c0d
+--- /dev/null
++++ b/products/almalinux10/profiles/e8.profile
+@@ -0,0 +1,39 @@
++documentation_complete: true
++
++metadata:
++ SMEs:
++ - shaneboulden
++ - tjbutt58
++
++reference: https://www.cyber.gov.au/acsc/view-all-content/publications/hardening-linux-workstations-and-servers
++
++title: 'Australian Cyber Security Centre (ACSC) Essential Eight'
++
++description: |-
++ This is a draft profile for experimental purposes.
++
++ This draft profile contains configuration checks for AlmaLinux OS 10
++ that align to the Australian Cyber Security Centre (ACSC) Essential Eight.
++
++ A copy of the Essential Eight in Linux Environments guide can be found at the
++ ACSC website:
++
++ https://www.cyber.gov.au/acsc/view-all-content/publications/hardening-linux-workstations-and-servers
++
++selections:
++ - e8:all
++ - '!enable_authselect'
++ # nosha1 crypto policy does not exist in RHEL 10
++ - var_system_crypto_policy=default_policy
++ # More tests are needed to identify which rule is conflicting with rpm_verify_permissions.
++ # https://github.com/ComplianceAsCode/content/issues/11285
++ - '!rpm_verify_permissions'
++ - '!rpm_verify_ownership'
++ # these packages do not exist in RHEL 10
++ - '!package_talk_removed'
++ - '!package_talk-server_removed'
++ - '!package_ypbind_removed'
++ - '!package_ypserv_removed'
++ - '!package_rsh_removed'
++ - '!package_rsh-server_removed'
++ - '!security_patches_up_to_date'
+diff --git a/products/almalinux10/profiles/hipaa.profile b/products/almalinux10/profiles/hipaa.profile
+new file mode 100644
+index 000000000..ee39fc73f
+--- /dev/null
++++ b/products/almalinux10/profiles/hipaa.profile
+@@ -0,0 +1,68 @@
++documentation_complete: true
++
++metadata:
++ SMEs:
++ - jjaswanson4
++
++reference: https://www.hhs.gov/hipaa/for-professionals/index.html
++
++title: 'Health Insurance Portability and Accountability Act (HIPAA)'
++
++description: |-
++ This is a draft profile for experimental purposes.
++
++ The HIPAA Security Rule establishes U.S. national standards to protect individuals's
++ electronic personal health information that is created, received, used, or
++ maintained by a covered entity. The Security Rule requires appropriate
++ administrative, physical and technical safeguards to ensure the
++ confidentiality, integrity, and security of electronic protected health
++ information.
++
++ This draft profile configures AlmaLinux OS 10 to the HIPAA Security
++ Rule identified for securing of electronic protected health information.
++ Use of this profile in no way guarantees or makes claims against legal compliance against the HIPAA Security Rule(s).
++
++selections:
++ - hipaa:all
++
++ # RHEL 10 uses a different rule for auditing changes to selinux configuration
++ # 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) and 164.312(e)
++ - '!audit_rules_mac_modification'
++ - audit_rules_mac_modification_etc_selinux
++
++ - '!coreos_disable_interactive_boot'
++ - '!coreos_audit_option'
++ - '!coreos_nousb_kernel_argument'
++ - '!coreos_enable_selinux_kernel_argument'
++ - '!dconf_gnome_remote_access_credential_prompt'
++ - '!dconf_gnome_remote_access_encryption'
++ - '!enable_authselect'
++ - '!ensure_suse_gpgkey_installed'
++ - '!ensure_fedora_gpgkey_installed'
++ - ensure_almalinux_gpgkey_installed
++ - '!grub2_uefi_admin_username'
++ - '!grub2_uefi_password'
++ - '!service_ypbind_disabled'
++ - '!service_zebra_disabled'
++ - '!package_talk-server_removed'
++ - '!package_talk_removed'
++ - '!sshd_use_approved_macs'
++ - '!sshd_use_approved_ciphers'
++ - '!accounts_passwords_pam_tally2'
++ - '!package_audit-audispd-plugins_installed'
++ - '!auditd_audispd_syslog_plugin_activated'
++ - '!package_ypserv_removed'
++ - '!package_ypbind_removed'
++ - '!package_xinetd_removed'
++ - '!package_rsh_removed'
++ - '!package_rsh-server_removed'
++ - '!package_tcp_wrappers_removed'
++ - '!package_ypbind_removed'
++ - '!package_xinetd_removed'
++ - '!service_xinetd_disabled'
++ - '!sshd_allow_only_protocol2'
++ - '!sshd_disable_kerb_auth'
++ - '!sshd_disable_gssapi_auth'
++ - '!service_rlogin_disabled'
++ - '!service_rsh_disabled'
++ - '!service_rexec_disabled'
+diff --git a/products/almalinux10/profiles/ism_o.profile b/products/almalinux10/profiles/ism_o.profile
+new file mode 100644
+index 000000000..9021df832
+--- /dev/null
++++ b/products/almalinux10/profiles/ism_o.profile
+@@ -0,0 +1,50 @@
++documentation_complete: true
++
++metadata:
++ SMEs:
++ - shaneboulden
++ - wcushen
++ - eliseelk
++ - sashperso
++ - anjuskantha
++
++reference: https://www.cyber.gov.au/ism
++
++title: 'Australian Cyber Security Centre (ACSC) ISM Official - Base'
++
++description: |-
++ This draft profile contains configuration checks for AlmaLinux OS 10
++ that align to the Australian Cyber Security Centre (ACSC) Information Security Manual (ISM).
++
++ The ISM uses a risk-based approach to cyber security. This profile provides a guide to aligning
++ AlmaLinux OS security controls with the ISM, which can be used to select controls
++ specific to an organisation's security posture and risk profile.
++
++ A copy of the ISM can be found at the ACSC website:
++
++ https://www.cyber.gov.au/ism
++
++extends: e8
++
++selections:
++ - ism_o:all:base
++ # these rules do not work properly on RHEL 10 for now
++ - '!enable_authselect'
++ - '!enable_dracut_fips_module'
++ - '!firewalld_sshd_port_enabled'
++ - '!require_singleuser_auth'
++ # tally2 is deprecated, replaced by faillock
++ - '!accounts_passwords_pam_tally2_deny_root'
++ - '!accounts_passwords_pam_tally2_unlock_time'
++ - '!audit_rules_login_events_tallylog'
++ # lastlog is not used in RHEL 10
++ - '!audit_rules_login_events_lastlog'
++ # this rule is currently failing on some systemd services, probably because of require_emergency_target_auth and require_singleuser_auth rules
++ - '!rpm_verify_hashes'
++ # this rule should not be needed anymore on RHEL 10, but investigation is recommended
++ - '!openssl_use_strong_entropy'
++ # Currently not working RHEL 10, changes are being made to FIPS mode. Investigation is recommended.
++ - '!enable_dracut_fips_module'
++ # This rule is not applicable for RHEL 10
++ - '!force_opensc_card_drivers'
++ - '!service_chronyd_or_ntpd_enabled'
+diff --git a/products/almalinux10/profiles/ism_o_secret.profile b/products/almalinux10/profiles/ism_o_secret.profile
+new file mode 100644
+index 000000000..a1ea6e884
+--- /dev/null
++++ b/products/almalinux10/profiles/ism_o_secret.profile
+@@ -0,0 +1,52 @@
++documentation_complete: true
++
++metadata:
++ SMEs:
++ - shaneboulden
++ - wcushen
++ - eliseelk
++ - sashperso
++ - anjuskantha
++
++reference: https://www.cyber.gov.au/ism
++
++title: 'Australian Cyber Security Centre (ACSC) ISM Official - Secret'
++
++description: |-
++ This is a draft profile for experimental purposes.
++
++ This draft profile contains configuration checks for AlmaLinux OS 10
++ that align to the Australian Cyber Security Centre (ACSC) Information Security Manual (ISM).
++
++ The ISM uses a risk-based approach to cyber security. This profile provides a guide to aligning
++ AlmaLinux OS security controls with the ISM, which can be used to select controls
++ specific to an organisation's security posture and risk profile.
++
++ A copy of the ISM can be found at the ACSC website:
++
++ https://www.cyber.gov.au/ism
++
++extends: e8
++
++selections:
++ - ism_o:all:secret
++ # these rules do not work properly on RHEL 10 for now
++ - '!enable_authselect'
++ - '!enable_dracut_fips_module'
++ - '!firewalld_sshd_port_enabled'
++ - '!require_singleuser_auth'
++ # tally2 is deprecated, replaced by faillock
++ - '!accounts_passwords_pam_tally2_deny_root'
++ - '!accounts_passwords_pam_tally2_unlock_time'
++ - '!audit_rules_login_events_tallylog'
++ # lastlog is not used in RHEL 10
++ - '!audit_rules_login_events_lastlog'
++ # this rule is currently failing on some systemd services, probably because of require_emergency_target_auth and require_singleuser_auth rules
++ - '!rpm_verify_hashes'
++ # this rule should not be needed anymore on RHEL 10, but investigation is recommended
++ - '!openssl_use_strong_entropy'
++ # Currently not working RHEL 10, changes are being made to FIPS mode. Investigation is recommended.
++ - '!enable_dracut_fips_module'
++ # This rule is not applicable for RHEL 10
++ - '!force_opensc_card_drivers'
++ - '!service_chronyd_or_ntpd_enabled'
+diff --git a/products/almalinux10/profiles/ism_o_top_secret.profile b/products/almalinux10/profiles/ism_o_top_secret.profile
+new file mode 100644
+index 000000000..8c77e37d9
+--- /dev/null
++++ b/products/almalinux10/profiles/ism_o_top_secret.profile
+@@ -0,0 +1,50 @@
++documentation_complete: true
++
++metadata:
++ SMEs:
++ - shaneboulden
++ - wcushen
++ - eliseelk
++ - sashperso
++ - anjuskantha
++
++reference: https://www.cyber.gov.au/ism
++
++title: 'Australian Cyber Security Centre (ACSC) ISM Official - Top Secret'
++
++description: |-
++ This draft profile contains configuration checks for AlmaLinux OS 10
++ that align to the Australian Cyber Security Centre (ACSC) Information Security Manual (ISM).
++
++ The ISM uses a risk-based approach to cyber security. This profile provides a guide to aligning
++ AlmaLinux OS security controls with the ISM, which can be used to select controls
++ specific to an organisation's security posture and risk profile.
++
++ A copy of the ISM can be found at the ACSC website:
++
++ https://www.cyber.gov.au/ism
++
++extends: e8
++
++selections:
++ - ism_o:all:top_secret
++ # these rules do not work properly on RHEL 10 for now
++ - '!enable_authselect'
++ - '!enable_dracut_fips_module'
++ - '!firewalld_sshd_port_enabled'
++ - '!require_singleuser_auth'
++ # tally2 is deprecated, replaced by faillock
++ - '!accounts_passwords_pam_tally2_deny_root'
++ - '!accounts_passwords_pam_tally2_unlock_time'
++ - '!audit_rules_login_events_tallylog'
++ # lastlog is not used in RHEL 10
++ - '!audit_rules_login_events_lastlog'
++ # this rule is currently failing on some systemd services, probably because of require_emergency_target_auth and require_singleuser_auth rules
++ - '!rpm_verify_hashes'
++ # this rule should not be needed anymore on RHEL 10, but investigation is recommended
++ - '!openssl_use_strong_entropy'
++ # Currently not working RHEL 10, changes are being made to FIPS mode. Investigation is recommended.
++ - '!enable_dracut_fips_module'
++ # This rule is not applicable for RHEL 10
++ - '!force_opensc_card_drivers'
++ - '!service_chronyd_or_ntpd_enabled'
+diff --git a/products/almalinux10/profiles/ospp.profile b/products/almalinux10/profiles/ospp.profile
+new file mode 100644
+index 000000000..fce0fd011
+--- /dev/null
++++ b/products/almalinux10/profiles/ospp.profile
+@@ -0,0 +1,29 @@
++documentation_complete: true
++hidden: true
++
++metadata:
++ version: 4.3
++ SMEs:
++ - ggbecker
++ - matusmarhefka
++
++reference: https://www.niap-ccevs.org/Profile/Info.cfm?PPID=469&id=469
++
++title: 'DRAFT - Protection Profile for General Purpose Operating Systems'
++
++description: |-
++ This is draft profile is based on the Red Hat Enterprise Linux 9 Common Criteria Guidance as
++ guidance for Red Hat Enterprise Linux 10 was not available at the time of release.
++
++
++ Where appropriate, CNSSI 1253 or DoD-specific values are used for
++ configuration, based on Configuration Annex to the OSPP.
++
++selections:
++ - ospp:all
++ - '!package_screen_installed'
++ - '!package_dnf-plugin-subscription-manager_installed'
++ - '!package_scap-security-guide_installed'
++ # Currently not working RHEL 10, changes are being made to FIPS mode. Investigation is recommended.
++ - '!enable_dracut_fips_module'
++ - '!enable_authselect'
+diff --git a/products/almalinux10/profiles/pci-dss.profile b/products/almalinux10/profiles/pci-dss.profile
+new file mode 100644
+index 000000000..b7a8eba3e
+--- /dev/null
++++ b/products/almalinux10/profiles/pci-dss.profile
+@@ -0,0 +1,85 @@
++documentation_complete: true
++
++metadata:
++ version: '4.0.1'
++ SMEs:
++ - marcusburghardt
++ - mab879
++ - vojtapolasek
++
++reference: https://docs-prv.pcisecuritystandards.org/PCI%20DSS/Standard/PCI-DSS-v4_0_1.pdf
++
++title: 'PCI-DSS v4.0.1 Control Baseline for Red Hat Enterprise Linux 10'
++
++description: |-
++ This is a draft profile for experimental purposes.
++
++ Payment Card Industry - Data Security Standard (PCI-DSS) is a set of
++ security standards designed to ensure the secure handling of payment card
++ data, with the goal of preventing data breaches and protecting sensitive
++ financial information.
++
++ This draft profile ensures Red Hat Enterprise Linux 10 is configured in alignment
++ with PCI-DSS v4.0.1 requirements.
++
++selections:
++ - pcidss_4:all
++ - var_password_hashing_algorithm=yescrypt
++ - var_password_hashing_algorithm_pam=yescrypt
++
++ # RHEL 10 uses a different rule for auditing changes to selinux configuration (PCI-DSSv4 - 10.3.4)
++ - '!audit_rules_mac_modification'
++ - audit_rules_mac_modification_etc_selinux
++
++ # More tests are needed to identify which rule is conflicting with rpm_verify_permissions.
++ # https://github.com/ComplianceAsCode/content/issues/11285
++ - '!rpm_verify_permissions'
++
++ # these rules do not apply to RHEL 10
++ - '!enable_authselect'
++ - '!package_audit-audispd-plugins_installed'
++ - '!package_dhcp_removed'
++ - '!package_ypserv_removed'
++ - '!package_ypbind_removed'
++ - '!package_talk_removed'
++ - '!package_talk-server_removed'
++ - '!package_xinetd_removed'
++ - '!package_rsh_removed'
++ - '!package_rsh-server_removed'
++
++ - '!service_ntp_enabled'
++ - '!service_ntpd_enabled'
++ - '!service_timesyncd_enabled'
++ - '!ntpd_specify_remote_server'
++ - '!ntpd_specify_multiple_servers'
++
++ - '!accounts_passwords_pam_tally2'
++ - '!accounts_passwords_pam_tally2_unlock_time'
++ - '!cracklib_accounts_password_pam_dcredit'
++ - '!cracklib_accounts_password_pam_lcredit'
++ - '!cracklib_accounts_password_pam_minlen'
++ - '!cracklib_accounts_password_pam_retry'
++ - '!ensure_firewall_rules_for_open_ports'
++ - '!ensure_shadow_group_empty'
++ - '!ensure_suse_gpgkey_installed'
++ - ensure_almalinux_gpgkey_installed
++ - '!install_PAE_kernel_on_x86-32'
++ - '!mask_nonessential_services'
++ - '!nftables_ensure_default_deny_policy'
++ - '!set_ipv6_loopback_traffic'
++ - '!set_ip6tables_default_rule'
++ - '!set_loopback_traffic'
++ - '!set_password_hashing_algorithm_commonauth'
++ # Following rule are excluded since, "so far" no CCEs were defined for them and maybe irrelevant for rhel10
++ - '!enable_dconf_user_profile'
++
++ # Following are incompatible with the rhel10 product (based on RHEL9)
++ - '!service_chronyd_or_ntpd_enabled'
++ - '!aide_periodic_checking_systemd_timer'
++ - '!gnome_gdm_disable_unattended_automatic_login'
++ - '!permissions_local_var_log'
++ - '!sshd_use_strong_kex'
++ - '!sshd_use_approved_macs'
++ - '!sshd_use_approved_ciphers'
++ - '!security_patches_up_to_date'
++ - '!kernel_module_dccp_disabled'
+diff --git a/products/almalinux10/profiles/stig.profile b/products/almalinux10/profiles/stig.profile
+new file mode 100644
+index 000000000..68cfac18e
+--- /dev/null
++++ b/products/almalinux10/profiles/stig.profile
+@@ -0,0 +1,25 @@
++documentation_complete: true
++
++metadata:
++ SMEs:
++ - mab879
++
++
++reference: https://public.cyber.mil/stigs/downloads/?_dl_facet_stigs=operating-systems%2Cunix-linux
++
++title: 'Red Hat STIG for Red Hat Enterprise Linux 10'
++
++description: |-
++ This is a profile based on what is expected in the RHEL 10 STIG.
++ It is not based on the DISA STIG for RHEL 10, because it was not available at time of
++ the release.
++
++ In addition to being applicable to Red Hat Enterprise Linux 10, this
++ configuration baseline is applicable to the operating system tier of
++ Red Hat technologies that are based on Red Hat Enterprise Linux 10.
++
++selections:
++ - srg_gpos:all
++ - '!enable_authselect'
++ # Currently not working RHEL 10, changes are being made to FIPS mode. Investigation is recommended.
++ - '!enable_dracut_fips_module'
+diff --git a/products/almalinux10/profiles/stig_gui.profile b/products/almalinux10/profiles/stig_gui.profile
+new file mode 100644
+index 000000000..a7d4a1877
+--- /dev/null
++++ b/products/almalinux10/profiles/stig_gui.profile
+@@ -0,0 +1,40 @@
++documentation_complete: true
++
++metadata:
++ SMEs:
++ - mab879
++
++
++reference: https://public.cyber.mil/stigs/downloads/?_dl_facet_stigs=operating-systems%2Cunix-linux
++
++title: 'Red Hat STIG for Red Hat Enterprise Linux 10'
++
++description: |-
++ This is a profile based on what is expected in the RHEL 10 STIG.:
++ It is not based on the DISA STIG for RHEL 10, because it was not available at time of
++ the release.
++
++ In addition to being applicable to Red Hat Enterprise Linux 10, this
++ configuration baseline is applicable to the operating system tier of
++ Red Hat technologies that are based on Red Hat Enterprise Linux 10.
++
++extends: stig
++
++selections:
++ - '!xwindows_remove_packages'
++
++ - '!xwindows_runlevel_target'
++
++ - '!package_nfs-utils_removed'
++
++ - '!enable_authselect'
++ # Limiting user namespaces cause issues with user apps, such as Firefox and Cheese
++ # https://issues.redhat.com/browse/RHEL-10416
++ - '!sysctl_user_max_user_namespaces'
++ # locking of idle sessions is handled by screensaver when GUI is present, the following rule is therefore redundant
++ - '!logind_session_timeout'
++ # Currently not working RHEL 10, changes are being made to FIPS mode. Investigation is recommended.
++ - '!enable_dracut_fips_module'
++
++ # Package gdm cannot be removed as it is required for GUI installation ('@Server with GUI' package group)
++ - '!package_gdm_removed'
+diff --git a/products/almalinux10/transforms/constants.xslt b/products/almalinux10/transforms/constants.xslt
+new file mode 100644
+index 000000000..1b1a67317
+--- /dev/null
++++ b/products/almalinux10/transforms/constants.xslt
+@@ -0,0 +1,13 @@
++
++
++
++
++AlmaLinux OS 10
++AL10
++AL_10_STIG
++almalinux10
++
++https://www.cisecurity.org/benchmark/almalinuxos_linux/
++
++
++
+diff --git a/products/almalinux10/transforms/table-style.xslt b/products/almalinux10/transforms/table-style.xslt
+new file mode 100644
+index 000000000..8b6caeab8
+--- /dev/null
++++ b/products/almalinux10/transforms/table-style.xslt
+@@ -0,0 +1,5 @@
++
++
++
++
++
+diff --git a/products/almalinux10/transforms/xccdf-apply-overlay-stig.xslt b/products/almalinux10/transforms/xccdf-apply-overlay-stig.xslt
+new file mode 100644
+index 000000000..4789419b8
+--- /dev/null
++++ b/products/almalinux10/transforms/xccdf-apply-overlay-stig.xslt
+@@ -0,0 +1,8 @@
++
++
++
++
++
++
++
++
+diff --git a/products/almalinux10/transforms/xccdf2table-cce.xslt b/products/almalinux10/transforms/xccdf2table-cce.xslt
+new file mode 100644
+index 000000000..f156a6695
+--- /dev/null
++++ b/products/almalinux10/transforms/xccdf2table-cce.xslt
+@@ -0,0 +1,9 @@
++
++
++
++
++
++
++
++
++
+diff --git a/products/almalinux10/transforms/xccdf2table-profileccirefs.xslt b/products/almalinux10/transforms/xccdf2table-profileccirefs.xslt
+new file mode 100644
+index 000000000..30419e92b
+--- /dev/null
++++ b/products/almalinux10/transforms/xccdf2table-profileccirefs.xslt
+@@ -0,0 +1,9 @@
++
++
++
++
++
++
++
++
++
+diff --git a/shared/checks/oval/installed_OS_is_almalinux10.xml b/shared/checks/oval/installed_OS_is_almalinux10.xml
+new file mode 100644
+index 000000000..34f942d90
+--- /dev/null
++++ b/shared/checks/oval/installed_OS_is_almalinux10.xml
+@@ -0,0 +1,34 @@
++
++
++
++ AlmaLinux OS 10
++
++ multi_platform_all
++
++
++ The operating system installed on the system is AlmaLinux OS 10
++
++
++
++
++
++
++
++
++
++
++
++
++ /etc/almalinux-release
++
++
++
++
++
++
++ /etc/almalinux-release
++ ^AlmaLinux release 10.[0-9]+ .*$
++ 1
++
++
++
+diff --git a/shared/checks/oval/sysctl_kernel_ipv6_disable.xml b/shared/checks/oval/sysctl_kernel_ipv6_disable.xml
+index 42b866d3b..8560a7220 100644
+--- a/shared/checks/oval/sysctl_kernel_ipv6_disable.xml
++++ b/shared/checks/oval/sysctl_kernel_ipv6_disable.xml
+@@ -16,6 +16,7 @@
+ multi_platform_ol
+ multi_platform_rhcos
+ multi_platform_rhel
++multi_platform_almalinux
+ multi_platform_rhv
+ multi_platform_sle
+ multi_platform_slmicro5
+diff --git a/shared/references/disa-stig-ol7-v3r1-xccdf-manual.xml b/shared/references/disa-stig-ol7-v3r1-xccdf-manual.xml
+index e83699662..1efabcf62 100644
+--- a/shared/references/disa-stig-ol7-v3r1-xccdf-manual.xml
++++ b/shared/references/disa-stig-ol7-v3r1-xccdf-manual.xml
+@@ -917,7 +917,7 @@ Check to see if an encrypted grub superusers password is set. On systems that us
+ $ sudo grep -iw grub2_password /boot/grub2/user.cfg
+ GRUB2_PASSWORD=grub.pbkdf2.sha512.[password_hash]
+
+-If the grub superusers password does not begin with "grub.pbkdf2.sha512", this is a finding.