Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
350 commits
Select commit Hold shift + click to select a range
4774004
Merge pull request #14375 from vojtapolasek/rhel8_stig_update_02_26
Mab879 Feb 13, 2026
3268ddd
Merge pull request #14391 from Mab879/fix_rhel_9_stig_version_feb_2026
Mab879 Feb 13, 2026
511cbbc
Drop unneeded sudo in bash remediation
teacup-on-rockingchair Feb 14, 2026
42f5e04
add recursive for sle16 wtmp,btmp and lastlog not needed: sle16 uses …
teacup-on-rockingchair Feb 14, 2026
ced8d1a
SLE16 set filemode parameter for file_permissions_etc_shadow and file…
teacup-on-rockingchair Feb 14, 2026
43d65f8
Enable sle16 remeditaions in grub2_enable_selinux
teacup-on-rockingchair Feb 14, 2026
ce1651b
Merge pull request #14396 from teacup-on-rockingchair/remove_sudo_bas…
Mab879 Feb 16, 2026
dab0f35
Merge pull request #14393 from ComplianceAsCode/konflux/mintmaker/mas…
Mab879 Feb 16, 2026
261e81a
Merge pull request #14354 from Mab879/ruff_bugbears
jan-cerny Feb 16, 2026
9954e35
Merge pull request #14392 from comps/coalesce_packit
Mab879 Feb 16, 2026
c76769a
Update list of contributors
ggbecker Feb 16, 2026
c966314
Fix the logic of calculating if it displays next year or current.
ggbecker Feb 16, 2026
33569c4
Merge pull request #14401 from ggbecker/update-contributors
Mab879 Feb 16, 2026
cfe4c82
Merge pull request #14402 from ggbecker/update-release-helper
Mab879 Feb 16, 2026
135910e
Move to nproc over hard coded 2 to ensure we are fully using CI boxes.
Mab879 Jan 23, 2026
33b465b
Use correct date for the milestone creation.
ggbecker Feb 16, 2026
474ff47
Bump version of development branch to 0.1.81.
ggbecker Feb 16, 2026
81bb5ee
Merge pull request #14404 from ggbecker/minor-fix-to-release-helper
Mab879 Feb 16, 2026
79813ce
Merge pull request #14405 from ggbecker/bump-version-2
Mab879 Feb 16, 2026
a1604b6
Merge pull request #14398 from teacup-on-rockingchair/sle16_permissio…
teacup-on-rockingchair Feb 17, 2026
2da1c85
Merge pull request #14399 from teacup-on-rockingchair/sle16_permissio…
teacup-on-rockingchair Feb 17, 2026
4191d7b
Merge pull request #14400 from teacup-on-rockingchair/sle16_grub2_ena…
teacup-on-rockingchair Feb 17, 2026
fbf1a1f
Add BSI to stable profiles
jan-cerny Feb 17, 2026
c84bbf3
Merge pull request #14407 from jan-cerny/bsi_stability
Mab879 Feb 17, 2026
241a701
Update linux_os/guide/system/software/gnome/gnome_screen_locking/dcon…
teacup-on-rockingchair Feb 17, 2026
88d27c6
Merge pull request #14366 from teacup-on-rockingchair/sle16_dconf_gno…
Mab879 Feb 17, 2026
5ff7446
Ignore user-specific CLAUDE files
rhmdnd Feb 17, 2026
2643a65
Bump tj-actions/changed-files from 47.0.2 to 47.0.4
dependabot[bot] Feb 18, 2026
a769e08
Create sle16 anssi_bp28_high.profile
svet-se Feb 18, 2026
0031148
Create sle16 anssi_bp28_enhanced.profile
svet-se Feb 18, 2026
6cadd74
Create sle16 anssi_bp28_intermediary.profile
svet-se Feb 18, 2026
bb6dfb0
Create sle16 anssi_bp28_minimal.profile
svet-se Feb 18, 2026
a03ff8b
Update rule service_sssd_enabled to support sle16
svet-se Feb 18, 2026
669e349
Update rule sssd_ldap_configure_tls_reqcert to support sle16
svet-se Feb 18, 2026
ecd5eff
Update rule sssd_ldap_start_tls to support sle16
svet-se Feb 18, 2026
5759467
Update rule accounts_password_set_max_life_root to support sle16
svet-se Feb 18, 2026
e3da7be
Update rule grub2_password to support sle16
svet-se Feb 18, 2026
72fe9a1
Update rule ensure_logrotate_activated ti support sle16
svet-se Feb 18, 2026
d579dd9
Update rule package_rsyslog-gnutls_installed to support sle16
svet-se Feb 18, 2026
669774d
Merge pull request #14411 from ComplianceAsCode/dependabot/github_act…
jan-cerny Feb 18, 2026
b8b9aac
Add sle16 cces
svet-se Feb 18, 2026
ea17184
Fix remediation in rule logind_session_timeout
jan-cerny Feb 18, 2026
67ef2ef
Merge pull request #14328 from Mab879/ci_speed_up_2026_01_23
vojtapolasek Feb 18, 2026
cf1bab3
Merge pull request #14410 from rhmdnd/ignore-claude-local
Mab879 Feb 18, 2026
96febe6
Enforce sha512 and minimum rounds in Ubuntu 22.04 STIG
mpurg Feb 18, 2026
ec98e30
Add audit rules for cron dirs to Ubuntu 22.04 STIG
mpurg Feb 18, 2026
9197ec6
Update SLE15 STIG version to V2R6
svet-se Feb 18, 2026
723f91b
Update SLE15 STIG version to V2R6
svet-se Feb 18, 2026
a9cc37d
Remove rule display_login_attempts from SLE15 STIG profile
svet-se Feb 18, 2026
b4abd59
Add rules for disabling nfs to Ubuntu 22.04 STIG
mpurg Feb 18, 2026
00b6736
Update SLE12 STIG version to V3R4
svet-se Feb 18, 2026
23e16af
Update SLE12 DISA STIG manual to V3R4
svet-se Feb 18, 2026
8167206
Remove rule display_login_attempts from SLE12 STIG profile
svet-se Feb 18, 2026
cf58401
move stig_slmicro5 control file to slmicro5 controls
svet-se Feb 18, 2026
dfee3b3
Update SLEM5 STIG version to V1R3
svet-se Feb 18, 2026
2917572
Update SLEM5 DISA STIG manual to V1R3
svet-se Feb 18, 2026
a698936
Remove rule SLEM-05-412010 from SLEM5 STIG profile
svet-se Feb 18, 2026
c69bdda
revert moving the shared SLEM5 STIG control file
svet-se Feb 18, 2026
7a919da
Align audit_rules_suid_privilege_function rule to DISA OL8 STIG V2R7
mrkanon Feb 6, 2026
c48f95f
Add specific sshd_approved_ciphers for OL8
mrkanon Feb 6, 2026
313e2f2
Align OL8 STIG with DISA OL8 STIG V2R7
mrkanon Feb 6, 2026
f40112b
Update OL8 references to DISA STIG V2R7
mrkanon Feb 6, 2026
76b34ff
Merge pull request #14415 from mpurg/ubuntu_stig_UBTU-22-611055
dodys Feb 18, 2026
c92c8c0
Update OL9 logind_session_timeout to use dropin files
mrkanon Feb 13, 2026
983fb4f
Add /usr/libexec to file_groupownership_system_commands_dirs for OL9
mrkanon Feb 13, 2026
413b370
Align OL9 STIG with DISA OL9 STIG V1R4
mrkanon Feb 13, 2026
e438b4c
Add conflict statement to coredump rules for OL
mrkanon Feb 18, 2026
399dd07
Merge pull request #14413 from jan-cerny/issue14388
Mab879 Feb 18, 2026
b5fea19
Change pam_options template to support pam configuration in /usr and …
teacup-on-rockingchair Feb 19, 2026
3c613e4
Apply the pam_options template for use_pam_wheel_for_su and use_pam_w…
teacup-on-rockingchair Feb 19, 2026
b3c23bf
Make sure that the tests don't fail because we are trying to remove n…
teacup-on-rockingchair Feb 19, 2026
f54fe33
Add rules to Ubuntu 22.04 STIG to align with V2R7
mpurg Feb 19, 2026
0504c0a
Merge pull request #14421 from mrkanon/ol8_v2r7
Mab879 Feb 19, 2026
ee951b2
Fix oval failure in case of locked users
teacup-on-rockingchair Feb 14, 2026
7465fca
Add and fix tests to cover locked user
teacup-on-rockingchair Feb 18, 2026
f1bb719
Update rule with the option that account is locked
teacup-on-rockingchair Feb 18, 2026
f9e0fdd
Fix ansible call rejectattr to match exactly root user
teacup-on-rockingchair Feb 19, 2026
d77de09
Merge pull request #14423 from mrkanon/ol9_v1r4
Mab879 Feb 19, 2026
fbc1506
Bump CIS OpenShift version from 1.7.0 to 1.9.0
rhmdnd Feb 19, 2026
dcdb508
Add CIS OpenShift 1.9.0 profile and controls
rhmdnd Feb 19, 2026
9644ce9
Implement CIS OpenShift v1.9.0 section 1
rhmdnd Feb 19, 2026
f28703a
Add CIS OpenShift v1.9.0 section 2
rhmdnd Feb 19, 2026
3fe7521
Implement CIS OpenShift v1.9.0 section 3
rhmdnd Feb 19, 2026
3349405
Implement CIS OpenShift v1.9.0 section 4
rhmdnd Feb 19, 2026
9be6c7c
Implement CIS OpenShift v1.9.0 section 5
rhmdnd Feb 19, 2026
329fef1
Enable net_admin to allow firewall rule tests to run
alanmcanonical Feb 12, 2026
3c5ce78
Merge pull request #14416 from mpurg/ubuntu_stig_UBTU-22-654041
dodys Feb 20, 2026
11f54d1
Merge pull request #14418 from mpurg/ubuntu_stig_UBTU-22-215040
dodys Feb 20, 2026
91af709
check for selinux state when remediating selinux_not_disabled
Arden97 Feb 16, 2026
b01f159
refactor shared.yml for selinux_not_disabled
Arden97 Feb 16, 2026
22b05f2
update rule.yml for selinux_not_disabled
Arden97 Feb 20, 2026
98c01c2
Merge pull request #14427 from mpurg/ubuntu_stig_654224_254030_211000
dodys Feb 20, 2026
3505fb7
Remove aes192-ctr
alanmcanonical Feb 20, 2026
8da65e5
Implement UBTU-22-432010 & UBTU-22-432011
ericeberry Feb 19, 2026
8707b45
Add package rsync name definition for rsync package for sle16
teacup-on-rockingchair Feb 23, 2026
0fa3bcb
Merge pull request #14397 from teacup-on-rockingchair/accounts_no_uid…
jan-cerny Feb 23, 2026
ca9abb6
Add tftp package definition for sle platforms
teacup-on-rockingchair Feb 23, 2026
6a2f4ce
Merge pull request #14435 from teacup-on-rockingchair/stabilization-u…
teacup-on-rockingchair Feb 23, 2026
400d0fb
Merge pull request #14406 from Arden97/selinux_not_disabled_permissive
jan-cerny Feb 23, 2026
5d3f0ab
Merge pull request #14434 from alanmcanonical/cipher
mpurg Feb 23, 2026
c5f576e
Remove nullok from common-auth on Ubuntu 22.04
mpurg Feb 18, 2026
6f55745
Update SLES product names
svet-se Feb 24, 2026
4413770
SLE12 update SSH Strong MACs
svet-se Feb 24, 2026
831616c
sysctl_kernel_core_pattern_empty_string: make implementation of the r…
vojtapolasek Feb 24, 2026
5ad5bc6
Fix drop in template to ignore commented out lines.
ggbecker Feb 23, 2026
6e0a3e7
Add
alanmcanonical Feb 24, 2026
709248d
Merge pull request #14442 from ggbecker/fix-drop-in-template-comment-…
jan-cerny Feb 24, 2026
c01bd8c
Fix a typo
jan-cerny Feb 11, 2026
c664a95
Introduce new variables
jan-cerny Feb 11, 2026
0337d9f
Use login_banner_contents variable in rule banner_etc_issue
jan-cerny Feb 11, 2026
f6062ee
Use motd_banner_contents variable in rule banner_etc_motd
jan-cerny Feb 12, 2026
eb7fda8
Use remote_login_banner_contents variable in rule banner_etc_issue_net
jan-cerny Feb 12, 2026
c3f3cce
Use dconf_login_banner_contents variable in rule dconf_gnome_login_ba…
jan-cerny Feb 12, 2026
80432ff
Update profile stability test
jan-cerny Feb 12, 2026
74c3dc6
Fix yamllint problems - trailing spaces
jan-cerny Feb 12, 2026
4e31c11
Fixed wrong value
jan-cerny Feb 16, 2026
73b5466
Use multi_platform_all in Ansible remediation
jan-cerny Feb 16, 2026
f579995
Fix typos
jan-cerny Feb 16, 2026
8a2c6ba
Rename variable
jan-cerny Feb 16, 2026
e8a2d75
Fix variable selections in SAP profile
jan-cerny Feb 24, 2026
9fcb22d
Separate variable in rule dconf_gnome_login_banner_text
jan-cerny Feb 24, 2026
82d5b8c
Align Dconf GDM banner text with CIS
jan-cerny Feb 24, 2026
3a15fde
Remove trailing space
jan-cerny Feb 24, 2026
abd58fb
Merge pull request #14448 from vojtapolasek/template_sysctl_kernel_co…
jan-cerny Feb 24, 2026
3ed664f
Add a .claude/CLAUDE.md file
rhmdnd Feb 19, 2026
77acb98
Merge pull request #14384 from alanmcanonical/fw_cap
Mab879 Feb 24, 2026
1b6978f
Merge pull request #14432 from ericeberry/UBTU-22-432010
mpurg Feb 24, 2026
d1e1f4a
Align file_ownerships_var_log with Ubuntu CIS
mpurg Feb 23, 2026
7d9f4fd
Align file_groupownerships_var_log with Ubuntu CIS
mpurg Feb 23, 2026
56d5f4f
Run test_product_stability.py --update-reference-data
alanmcanonical Feb 24, 2026
f2048bd
core(ssg): add product-overridable SSH path variables and update shar…
Smouhoune Feb 23, 2026
cf8fcd0
rules(ssh_server): replace hardcoded sshd paths with product variables
Smouhoune Feb 23, 2026
586472b
rules(ssh): parameterize ownership/permission checks for sshd config …
Smouhoune Feb 23, 2026
89e6f88
rules(crypto): make ssh sysconfig path product-overridable
Smouhoune Feb 23, 2026
c1af8d7
tests(stability): add SSH path properties to product references
Smouhoune Feb 24, 2026
86a1b66
docs(macros): reference SSH path variables in ansible_sshd_set docume…
Smouhoune Feb 24, 2026
67891ca
Set rpm crypto only if rpm scope exists
jan-cerny Feb 25, 2026
2496097
Fix a broken link
jan-cerny Feb 25, 2026
9fba127
Fix variable selections for rule dconf_gnome_login_banner_text
jan-cerny Feb 25, 2026
ffe160a
Fix SUSE content to be aligned with RHEL content
jan-cerny Feb 25, 2026
f367e59
Merge pull request #14455 from jan-cerny/fix_link
Mab879 Feb 25, 2026
0ef5e55
Merge pull request #14433 from alanmcanonical/audit
dodys Feb 25, 2026
63fe653
Merge pull request #14454 from jan-cerny/fix_configure_custom_crypto_…
Mab879 Feb 25, 2026
c67f0de
Merge pull request #14420 from svet-se/update-slem5-stig-version-to-v1r3
teacup-on-rockingchair Feb 26, 2026
baaf053
Merge pull request #14419 from svet-se/update-sle12-stig-version-to-v3r4
teacup-on-rockingchair Feb 26, 2026
48d37ae
Merge pull request #14412 from svet-se/sle16-create-anssi-profile
teacup-on-rockingchair Feb 26, 2026
bec792d
Merge pull request #14446 from svet-se/sles-update-product-names
teacup-on-rockingchair Feb 26, 2026
07d403e
Make sure oval checks and remediations cover the case where default s…
teacup-on-rockingchair Feb 26, 2026
d094607
Use the new macros in sshd lineinfile context
teacup-on-rockingchair Feb 26, 2026
5d65b42
Use the new macros in sshd_use_strong_kex rule
teacup-on-rockingchair Feb 26, 2026
0258f34
For sle16 enhance the check and the tests to cover cases with sshd_co…
teacup-on-rockingchair Feb 26, 2026
4e938f7
For sle16 enhance the check to cover cases with sshd_config in /usr a…
teacup-on-rockingchair Feb 26, 2026
5aedfa6
For sle16 enhance the check to cover cases with sshd_config in /usr a…
teacup-on-rockingchair Feb 26, 2026
676a554
For sle16 enhance the check to cover cases with sshd_config in /usr a…
teacup-on-rockingchair Feb 26, 2026
5de048f
For sle16 enhance the check to cover cases with sshd_config in /usr a…
teacup-on-rockingchair Feb 26, 2026
8f0e0ed
For sle16 enhance the check to cover cases with sshd_config in /usr a…
teacup-on-rockingchair Feb 26, 2026
5e42450
[Ubuntu 22.04] Bump STIG profile metadata from V2R3 to V2R7
hdean3 Feb 26, 2026
4d39714
Merge pull request #14440 from teacup-on-rockingchair/sle16_service_r…
teacup-on-rockingchair Feb 26, 2026
2b7190f
Add find-rule CLAUDE skill
rhmdnd Feb 19, 2026
cde8ba2
Add manage-profile CLAUDE skill
rhmdnd Feb 24, 2026
a775cbf
Bump actions/download-artifact from 7.0.0 to 8.0.0
dependabot[bot] Feb 27, 2026
09d894a
Bump actions/upload-artifact from 6.0.0 to 7.0.0
dependabot[bot] Feb 27, 2026
76f443e
Merge pull request #14447 from svet-se/sle12-update-ssh-strong-macs
teacup-on-rockingchair Feb 27, 2026
ca678fa
Check for PQC GPG key only on RHEL 10.1 and newer
jan-cerny Feb 26, 2026
37188e2
Merge pull request #14462 from jan-cerny/rhel10_pqc
vojtapolasek Feb 27, 2026
b136bac
add libreswan to platform for configure_libreswan_crypto_policy
Arden97 Feb 27, 2026
248b1d7
Fix appending of ntp rule
alanmcanonical Feb 27, 2026
7965ebd
Merge pull request #14459 from hdean3/fix/ubuntu2204-stig-v2r3-to-v2r…
mpurg Feb 27, 2026
9697ece
Merge pull request #14443 from mpurg/ubuntu_cis_log_perms
Mab879 Feb 27, 2026
a20943a
Add missing assignment
mpurg Feb 27, 2026
6b94de4
Fix file_owner OVAL to check exact username
mpurg Feb 27, 2026
431fc7b
Bump mikepenz/release-changelog-builder-action from 6.1.0 to 6.1.1
dependabot[bot] Mar 2, 2026
1d604ae
Merge pull request #14430 from rhmdnd/add-claude-commands-for-profile…
vojtapolasek Mar 2, 2026
a114cc4
Merge pull request #14474 from ComplianceAsCode/dependabot/github_act…
Mab879 Mar 2, 2026
47153c4
Merge pull request #14473 from ComplianceAsCode/dependabot/github_act…
Mab879 Mar 2, 2026
1c4b537
Merge pull request #14478 from alanmcanonical/fips_ntp_conf
dodys Mar 2, 2026
6b1f5ac
Merge pull request #14479 from mpurg/file_owner_exact_user
Mab879 Mar 2, 2026
a5b4da0
ensure:redhat_gpgkey_installed: in ansible remediation use direct com…
vojtapolasek Mar 3, 2026
d856bd3
Merge pull request #14517 from vojtapolasek/fix_ansible_gpgkey_as_bash
ggbecker Mar 3, 2026
a6568f4
Merge pull request #14371 from jan-cerny/login_banner_rework
Mab879 Mar 3, 2026
299faec
clear entries before logind_session_timeout remediation
Arden97 Mar 3, 2026
adf2b37
Adjust RHEL 8 and RHEL 9 kickstarts to fit in 20 GB
Mab879 Mar 3, 2026
a8098da
Move to service_dnsmasq_disabled for CIS in RHEL
Mab879 Mar 3, 2026
a26c7cb
Merge pull request #14515 from ComplianceAsCode/dependabot/github_act…
Mab879 Mar 3, 2026
5702c76
Bump tj-actions/changed-files from 47.0.4 to 47.0.5
dependabot[bot] Mar 4, 2026
52a1e4d
Merge pull request #14527 from ComplianceAsCode/dependabot/github_act…
jan-cerny Mar 4, 2026
9ea95d5
update profile stability tests
vojtapolasek Mar 4, 2026
418dd71
add cces to service_dnsmasq_disabled
vojtapolasek Mar 4, 2026
f39db0b
add package_dnsmasq_removed to default profiles for rhels
vojtapolasek Mar 4, 2026
2cb6581
enlarge /usr partition in bsi kickstart
vojtapolasek Mar 4, 2026
6b31e67
Merge pull request #14414 from mpurg/ubuntu2204_UBTU-22-611060
Mab879 Mar 4, 2026
aa7162b
Merge pull request #14525 from Mab879/disable_dnsmasq_rhel_cis
jan-cerny Mar 4, 2026
aa5416e
Merge pull request #14520 from Mab879/fix_ks_part
jan-cerny Mar 4, 2026
aa233ec
Add ensure_redhat_gpgkey_installed to RHEL 9 CIS
jan-cerny Mar 5, 2026
be0be6b
Add ensure_redhat_gpgkey_installed to RHEL 8 and 10 CIS
jan-cerny Mar 5, 2026
4bd86ef
Add ensure_fedora_gpgkey_installed to Fedora CIS
jan-cerny Mar 5, 2026
b3c2e71
Adjust BSI and PCI DSS kickstarts
Mab879 Mar 5, 2026
9df8f59
Merge pull request #14533 from Mab879/fix_bsi_pcidss
ggbecker Mar 5, 2026
9a24260
Extend check in grub2_uefi_password for cloud images
jan-cerny Mar 3, 2026
c5347d8
Remove outdated test scenario
jan-cerny Mar 4, 2026
8a11579
Enable RHEL 8 cloud images in grub2_uefi_admin_username
jan-cerny Mar 6, 2026
6119cb9
Merge pull request #14477 from Arden97/disa_miss_14453
Mab879 Mar 6, 2026
c41c355
Add OCIL instructions for BIOS configuration rules
taimurhafeez Mar 6, 2026
256da96
Merge pull request #13346 from sluetze/var-networkpolicy
yuumasato Mar 6, 2026
c4ab25f
Merge pull request #14538 from taimurhafeez/CMP-3815-add-bios-instruc…
Mab879 Mar 6, 2026
ca4cb43
Merge pull request #14444 from teacup-on-rockingchair/sle_package_tft…
teacup-on-rockingchair Mar 8, 2026
d065953
Enable for sle16 package_kea_removed rule
teacup-on-rockingchair Mar 1, 2026
33a53a3
Enable for sle16 service_chronyd_enabled rule
teacup-on-rockingchair Mar 1, 2026
874d903
Add accounts_passwords_pam_faillock rules for sle16
teacup-on-rockingchair Mar 1, 2026
7ffd061
Adapt for SLE15/16 bash_ensure_pam_module_configuration macro
teacup-on-rockingchair Mar 1, 2026
3bacd09
Add accounts_password_pam_unix_rounds_password_auth rule and remediat…
teacup-on-rockingchair Mar 1, 2026
2e52330
Enabe for sle16 ensure_logrotate_activated rule
teacup-on-rockingchair Mar 1, 2026
f739b4e
Enable for sle16 sysctl_net_ipv6_conf_all_autoconf rule
teacup-on-rockingchair Mar 1, 2026
2b15582
Enable sysctl_net_ipv4_conf_all_drop_gratuitous_arp for sle16
teacup-on-rockingchair Mar 1, 2026
e933465
Enable for sle16 sysctl_fs_protected* rules
teacup-on-rockingchair Mar 1, 2026
6ede348
Enable for sle16 rule mount_option_tmp_noexec
teacup-on-rockingchair Mar 1, 2026
a8bb68c
Enable sle16 specific checks and remediations for mount_option_tmp_no…
teacup-on-rockingchair Mar 1, 2026
baa7da4
Add sysctl_kernel_unprivileged_bpf_disabled and sysctl_kernel_yama_p…
teacup-on-rockingchair Mar 1, 2026
ec70dbd
Enable more rules for SLE16 ANSSI
teacup-on-rockingchair Mar 1, 2026
eae3060
Reserve for SLE16 CCE rules
teacup-on-rockingchair Mar 1, 2026
2aa291a
Fix CCE conflict
teacup-on-rockingchair Mar 5, 2026
a375443
Merge pull request #14531 from jan-cerny/ensure_redhat
Mab879 Mar 9, 2026
e6fd405
Merge pull request #14445 from Smouhoune/feat/ssh-path-overrides-prod…
Mab879 Mar 9, 2026
e27c74d
core(ssg): add product-overridable SSH client path properties
Smouhoune Feb 23, 2026
8e14e43
rules(ssh_client): replace hardcoded ssh client paths with product pr…
Smouhoune Feb 23, 2026
470ebe8
fix(bash): preserve line break before ssh client crypto-policy output…
Smouhoune Feb 24, 2026
76bf986
ssh_client: update product stability data and fix bash template newline
Smouhoune Feb 24, 2026
33824ed
ssh: apply reviewer-requested Jinja whitespace trim in SSH client rul…
Smouhoune Feb 27, 2026
b938dd6
Merge pull request #14535 from jan-cerny/rhel8_cloud
Mab879 Mar 9, 2026
66e0c73
Merge pull request #14426 from teacup-on-rockingchair/fix_sle16_pam_o…
teacup-on-rockingchair Mar 9, 2026
2dada96
Update shared/macros/10-ansible.jinja
teacup-on-rockingchair Mar 9, 2026
b824b4b
Update shared/macros/10-ansible.jinja
teacup-on-rockingchair Mar 9, 2026
8b9f0fd
Fix order of platforms RH9 before RH10
teacup-on-rockingchair Mar 9, 2026
447333e
Enable rule UBTU-24-200270
alanmcanonical Mar 10, 2026
33bfded
Include required audit binaries
alanmcanonical Mar 11, 2026
d44547f
Update test data
alanmcanonical Mar 11, 2026
d37c4c4
Merge pull request #14431 from rhmdnd/CMP-4110
yuumasato Mar 11, 2026
b12bb7a
Implemented UBTU-24-300019/20/21
ericeberry Mar 11, 2026
48ec5df
Merge pull request #14514 from teacup-on-rockingchair/sle16_anssi_rules
teacup-on-rockingchair Mar 12, 2026
9fe83ea
Merge pull request #14458 from teacup-on-rockingchair/sle16_sshd_line…
teacup-on-rockingchair Mar 12, 2026
bf62c2d
Merge pull request #14553 from ericeberry/noble-stig-priv-escal
mpurg Mar 12, 2026
c4653fe
Merge pull request #14547 from alanmcanonical/UBTU-24-901230
mpurg Mar 12, 2026
87573a8
Merge pull request #14544 from alanmcanonical/UBTU-24-200270
mpurg Mar 12, 2026
37a01fb
Merge pull request #14449 from Smouhoune/feat/ssh-client-path-overrides
dodys Mar 12, 2026
9616884
add bascontrol22d
cealcorn Feb 4, 2026
3e1e42b
Add products/bascontroll22d4/CMakeFiles/ to .gitignore
cealcorn Feb 4, 2026
6c47b48
Remove products/bascontrols22d4/CMakeFiles/ from repo
cealcorn Feb 4, 2026
4f7bbb6
fixed errors bascontrol22d4 commented out in ./CMakeLists.txt
cealcorn Feb 11, 2026
42533ae
add benchmark
cealcorn Feb 11, 2026
cfa87db
solve conflict in .gitignore
cealcorn Mar 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
301 changes: 301 additions & 0 deletions .claude/CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,301 @@
# ComplianceAsCode/content

## Project Overview

This repository produces SCAP data streams, Ansible playbooks, Bash scripts, and other artifacts for compliance scanning and remediation.

Each supported operating system or platform is called a **product**. To see the full list of products, check the subdirectories under `products/` — each subdirectory name is a product ID (e.g., `rhel9`, `ocp4`, `ubuntu2404`). Product-specific configuration lives in `products/<product>/product.yml`.

## Repository Structure

```
applications/openshift/ # OCP4 and Kubernetes rules, organized by component
linux_os/guide/ # Linux rules (RHEL, RHCOS, etc.), organized by system area
controls/ # Compliance framework mappings (CIS, STIG, SRG, NIST, etc.)
products/ # Product definitions, profiles, and product-specific controls
shared/templates/ # Reusable check/remediation templates (60+ types)
shared/macros/ # Jinja2 macro files for generating OVAL, Ansible, Bash, etc.
components/ # Component definitions mapping rules to packages/groups
```

### Discovering Rule Directories

- **OCP4/Kubernetes rules** live under `applications/openshift/`, organized by component (e.g., `api-server/`, `kubelet/`, `etcd/`). Each component directory contains rule subdirectories. The rule ID prefix typically matches the component directory name with hyphens replaced by underscores (e.g., rules in `api-server/` use the `api_server_` prefix). Browse `applications/openshift/` to see all component directories.
- **Linux rules** (RHEL, RHCOS, Fedora, Ubuntu, etc.) live under `linux_os/guide/`, organized by system area (e.g., `system/`, `services/`, `auditing/`). Browse the subdirectories to find the appropriate category for a rule.
- When placing a new rule, find 2-3 existing rules with a similar prefix or topic and place the new rule alongside them.

## Rule Format

Each rule lives in its own directory. The **directory name is the rule ID**. The directory contains `rule.yml` and optionally a `tests/` subdirectory.

### `rule.yml` Fields

```yaml
documentation_complete: true # Must be true for the rule to be built

title: 'Short descriptive title'

description: |- # Full description, supports HTML tags and Jinja2 macros
Description text here.

rationale: |- # Why this rule matters
Rationale text here.

severity: medium # low, medium, high, unknown

identifiers: # Product-specific CCE identifiers
cce@ocp4: CCE-XXXXX-X
cce@rhel9: CCE-XXXXX-X

references: # Compliance framework references
cis@ocp4: 1.2.3 # CIS benchmark section
nist: CM-6,CM-6(1) # NIST 800-53 controls
srg: SRG-APP-000516-CTR-001325 # DISA SRG ID
stigid@rhel9: RHEL-09-XXXXXX # STIG rule ID (product-scoped)
nerc-cip: CIP-003-8 R6 # NERC CIP references
pcidss: Req-2.2 # PCI DSS requirements

ocil_clause: 'condition when rule fails' # Used in OCIL questionnaire

ocil: |- # Manual check instructions
Run the following command:
<pre>$ oc get ...</pre>

platform: ocp4 # Platform applicability (optional)

warnings: # Optional warnings section
- general: |-
Warning text, often includes openshift_cluster_setting macro.

template: # Optional - uses a shared template for checks
name: yamlfile_value
vars:
ocp_data: "true"
filepath: '/api/path/here'
yamlpath: '.spec.field'
values:
- value: 'expected_value'
operation: "pattern match"

fixtext: 'Remediation instructions' # STIG fixtext (optional)
srg_requirement: 'SRG requirement' # SRG requirement text (optional)
```

## Templates

Templates generate OVAL checks, Ansible playbooks, and Bash remediation scripts automatically.

### `yamlfile_value` (primary OCP4 template)

Checks values in YAML/JSON files or API responses.

```yaml
template:
name: yamlfile_value
vars:
ocp_data: "true" # "true" for OCP API data
filepath: '/apis/...' # API path or file path
yamlpath: '.spec.config.field' # JSONPath-like expression
check_existence: "at_least_one_exists" # Optional existence check
entity_check: "at least one" # How to evaluate multiple matches
values:
- value: 'expected' # Expected value or regex
type: "string" # string, int, boolean
operation: "pattern match" # equals, not equal, pattern match,
# greater than or equal, less than or equal
entity_check: "at least one" # Per-value entity check
```

### `file_permissions` (RHEL)

```yaml
template:
name: file_permissions
vars:
filepath: /etc/cron.d/
filemode: '0700'
```

### `shell_lineinfile` (RHEL)

```yaml
template:
name: shell_lineinfile
vars:
path: '/etc/sysconfig/sshd'
parameter: 'SSH_USE_STRONG_RNG'
value: '32'
datatype: int # Optional
no_quotes: 'true' # Optional
```

### `sysctl` (RHEL)

```yaml
template:
name: sysctl
vars:
sysctlvar: net.ipv6.conf.all.accept_ra
datatype: int
```

### `service_enabled` / `service_disabled` (RHEL)

```yaml
template:
name: service_disabled
vars:
servicename: avahi
```

### `package_installed` / `package_removed` (RHEL)

```yaml
template:
name: package_removed
vars:
pkgname: avahi
pkgname@ubuntu2204: avahi-daemon # Platform-specific overrides
```

## Common Jinja2 Macros

Used in rule descriptions, OCIL, fixtext, and warnings fields:

- `{{{ openshift_cluster_setting("/api/path") }}}` - Generates OCP API check instructions
- `{{{ openshift_filtered_cluster_setting({'/api/path': jqfilter}) }}}` - Filtered API check with jq
- `{{{ openshift_filtered_path('/api/path', jqfilter) }}}` - Generates filtered filepath for templates
- `{{{ full_name }}}` - Expands to product full name (e.g., "Red Hat Enterprise Linux 9")
- `{{{ xccdf_value("var_name") }}}` - References an XCCDF variable
- `{{{ weblink("https://...") }}}` - Creates an HTML link
- `{{{ describe_service_disable(service="name") }}}` - Standard service disable description
- `{{{ describe_service_enable(service="name") }}}` - Standard service enable description
- `{{{ describe_file_permissions(file="/path", perms="0700") }}}` - File permission description
- `{{{ describe_sysctl_option_value(sysctl="key", value="val") }}}` - Sysctl description
- `{{{ complete_ocil_entry_sysctl_option_value(sysctl="key", value="val") }}}` - Full OCIL for sysctl
- `{{{ complete_ocil_entry_package(package="name") }}}` - Full OCIL for package check
- `{{{ fixtext_package_removed("name") }}}` - Fixtext for package removal
- `{{{ fixtext_sysctl("key", "value") }}}` - Fixtext for sysctl setting
- `{{{ fixtext_directory_permissions(file="/path", mode="0600") }}}` - Fixtext for dir permissions

## Control File Format

Control files map compliance framework requirements to rules. They exist in two layouts:

### Single-file format

```yaml
# controls/stig_rhel9.yml (or products/rhel9/controls/stig_rhel9.yml)
policy: 'Red Hat Enterprise Linux 9 STIG'
title: 'DISA STIG for RHEL 9'
id: stig_rhel9
source: https://www.cyber.mil/stigs/downloads/
version: V2R7
reference_type: stigid
product: rhel9

levels:
- id: high
- id: medium
- id: low

controls:
- id: RHEL-09-211010
levels:
- high
title: RHEL 9 must be a vendor-supported release.
rules:
- installed_OS_is_vendor_supported
status: automated
```

### Split-directory format

```
controls/cis_ocp.yml # Top-level: policy, title, id, levels
controls/cis_ocp/ # Directory with section files
section-1.yml # Controls for section 1
section-2.yml # Controls for section 2
...
```

Section files contain nested controls:

```yaml
controls:
- id: '1'
title: Control Plane Components
controls:
- id: '1.1'
title: Master Node Configuration Files
controls:
- id: 1.1.1
title: Ensure that the API server pod specification...
status: automated
rules:
- file_permissions_kube_apiserver
levels:
- level_1
```

### Control entry fields

- `id` - Control identifier (e.g., "RHEL-09-211010", "1.2.3")
- `title` - Human-readable title
- `levels` - Applicable compliance levels
- `rules` - List of rule IDs that satisfy this control
- `status` - `automated`, `manual`, `inherently met`, `does not meet`, `pending`, `not applicable`
- `notes` - Optional notes explaining status or implementation

## Profile File Format

Profiles select which rules apply to a product. Located at `products/<product>/profiles/<name>.profile`.

```yaml
documentation_complete: true
title: 'Profile Title'
description: |-
Profile description text.
platform: ocp4
metadata:
version: V2R7
SMEs:
- github_username

selections:
- control_id:all # Include all rules from a control file
- rule_id # Include a specific rule
- '!rule_id' # Exclude a specific rule
- var_name=value # Set a variable value
```

Common selection patterns:
- `stig_rhel9:all` - Pull in all rules from the stig_rhel9 control file
- `cis_ocp:all` - Pull in all rules from the cis_ocp control file
- `!audit_rules_immutable_login_uids` - Exclude a specific rule
- `var_sshd_set_keepalive=1` - Set a variable

## Build Instructions

```bash
# Build a single product (full build)
./build_product ocp4

# Build data stream only (faster, skips guides and tables)
./build_product ocp4 --datastream-only

# Build with only specific rules (fastest, for testing individual rules)
./build_product ocp4 --datastream-only --rule-id api_server_tls_security_profile
```

Build output goes to `build/`. The data stream file is at:
`build/ssg-<product>-ds.xml`

## Guidelines for Claude

1. **Always show proposals before making changes.** Present the full content of any new or modified file and wait for explicit approval.
2. **Follow existing patterns.** Before creating a rule, find 2-3 similar existing rules and match their style exactly.
3. **Check for duplicates.** Before creating a new rule, search for existing rules that might already cover the requirement.
4. **Use the correct directory.** Find existing rules with the same prefix to determine the right directory. When in doubt, browse `applications/openshift/` or `linux_os/guide/` to find the appropriate component or category.
5. **Preserve formatting.** This project uses consistent YAML formatting. Match the indentation and style of surrounding content.
6. **Don't invent references.** Only include reference IDs (CCE, CIS, STIG, SRG, NIST) that the user provides or that exist in source documents.
77 changes: 77 additions & 0 deletions .claude/skills/find-rule/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
---
disable-model-invocation: true
---

Search for existing rules that match the following requirement:

$ARGUMENTS

Follow these steps:

1. **Extract key concepts** from the requirement text. Identify:
- Technical terms (e.g., "TLS", "audit", "encryption", "RBAC")
- Component references (e.g., "API server", "kubelet", "etcd", "SSH")
- Specific settings or parameters mentioned
- Any reference IDs (SRG-xxx, CIS section numbers, STIG IDs, NIST controls)

2. **Respect scope constraints.** If the user specifies a scope (e.g., "only OpenShift control plane", "only node-level"), restrict results to that scope. Do not return rules outside the requested scope. OCP4/Kubernetes rules live under `applications/openshift/` and Linux rules live under `linux_os/guide/`. If no scope is specified, search both.

3. **Search broadly** across rule titles, descriptions, and template configurations:
- Search `applications/openshift/` and `linux_os/guide/` for `rule.yml` files
- Search for keywords in titles, descriptions, template vars, and reference fields
- If reference IDs were provided, search for those exact IDs in rule.yml files

4. **Check control files** in `controls/` and `products/*/controls/` for matching control IDs or titles that already map to this requirement.

5. **Note product applicability** for each matched rule. Check the `identifiers` section of each rule.yml for `cce@<product>` entries (e.g., `cce@ocp4`, `cce@rhel9`). The product IDs after `@` correspond to subdirectory names under `products/`. This tells the user which products the rule applies to.

6. **Present results** organized by match strength. For every rule, include a **Rationale** — a concise (1-2 sentence) explanation of why this rule satisfies or partially satisfies the requirement. Write the rationale so that a maintainer unfamiliar with the rule can understand the connection without reading the full rule.yml. Focus on *what the rule checks* and *how that maps to the requirement*.

**Strong matches** (title or template directly addresses the requirement):
- Rule ID, file path, title, severity
- Template type and key vars (if templated)
- Matching references (SRG, CIS, STIG, NIST)
- Product applicability (which products have CCE identifiers)
- Whether the rule has an automated template or is manual review only
- **Rationale:** Why this rule is a strong match for the requirement

**Partial matches** (related but not exact):
- Same fields as above
- **Rationale:** What aspect of the requirement this rule covers and what it does not

**Weak matches** (tangentially related):
- Rule ID, file path, title
- **Rationale:** Why it was included despite being tangential

7. **Include a summary table** at the end mapping requirement aspects to rule IDs, so the user can quickly see coverage.

8. **Always suggest a control structure** with a `notes` field that includes a concise rationale for each rule, explaining why it was included for this control. This helps maintainers understand the reasoning without needing to read every rule.yml. When no strong automated matches exist, say so clearly and use `status: partial` or `status: manual` as appropriate. Example:

```yaml
- id: X.Y.Z
title: Control Title
status: automated
notes: |-
automated_rule_1 - Rationale for why this rule satisfies the control.
automated_rule_2 - Rationale for why this rule satisfies the control.
rules:
- automated_rule_1
- automated_rule_2
```

For partial or manual controls, also include guidance for assessors:

```yaml
- id: X.Y.Z
title: Control Title
status: partial
notes: |-
automated_rule_1 - Rationale for why this rule partially covers the control.
The remaining aspects of this control require manual verification: [manual steps].
rules:
- automated_rule_1
```

When suggesting rules for partial/manual controls, only include rules that provide automated value. Omit rules that are themselves manual-only (no template, no automated check) unless they are the only matches available.

9. **Rules can appear in multiple controls.** The build system handles this correctly. Each control should list the complete set of rules needed to satisfy it, even if some rules also appear in other controls. This ensures each control is self-contained and readers don't need to cross-reference other controls to understand coverage.
Loading