Skip to content

Commit

Permalink
scap-security-guide: add openembedded distro support
Browse files Browse the repository at this point in the history
includes a standard profile for out-of-the-box checks

Signed-off-by: Armin Kuster <akuster808@gmail.com>
  • Loading branch information
akuster authored and mvakuster committed Jul 3, 2023
1 parent 17bc123 commit 826dd5b
Show file tree
Hide file tree
Showing 9 changed files with 245 additions and 1 deletion.
5 changes: 5 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@ option(SSG_PRODUCT_UBUNTU1804 "If enabled, the Ubuntu 18.04 SCAP content will be
option(SSG_PRODUCT_UBUNTU2004 "If enabled, the Ubuntu 20.04 SCAP content will be built" ${SSG_PRODUCT_DEFAULT})
option(SSG_PRODUCT_UBUNTU2204 "If enabled, the Ubuntu 22.04 SCAP content will be built" ${SSG_PRODUCT_DEFAULT})
option(SSG_PRODUCT_UOS20 "If enabled, the Uos 20 SCAP content will be built" ${SSG_PRODUCT_DEFAULT})
option(SSG_PRODUCT_OE "If enabled, the OpenEmbedded SCAP content will be built" ${SSG_PRODUCT_DEFAULT})


option(SSG_CENTOS_DERIVATIVES_ENABLED "If enabled, CentOS derivative content will be built from the RHEL content" TRUE)
Expand Down Expand Up @@ -291,6 +292,7 @@ message(STATUS "Ubuntu 18.04: ${SSG_PRODUCT_UBUNTU1804}")
message(STATUS "Ubuntu 20.04: ${SSG_PRODUCT_UBUNTU2004}")
message(STATUS "Ubuntu 22.04: ${SSG_PRODUCT_UBUNTU2204}")
message(STATUS "Uos 20: ${SSG_PRODUCT_UOS20}")
message(STATUS "OpenEmbedded: ${SSG_PRODUCT_OE}")


message(STATUS " ")
Expand Down Expand Up @@ -409,6 +411,9 @@ endif()
if(SSG_PRODUCT_UOS20)
add_subdirectory("products/uos20" "uos20")
endif()
if (SSG_PRODUCT_OE)
add_subdirectory("products/openembedded" "openembedded")
endif()

# ZIP only contains source datastreams and kickstarts, people who
# want sources to build from should get the tarball instead.
Expand Down
1 change: 1 addition & 0 deletions build_product
Original file line number Diff line number Diff line change
Expand Up @@ -333,6 +333,7 @@ all_cmake_products=(
UBUNTU2204
UOS20
MACOS1015
OPENEMBEDDED
)

DEFAULT_OVAL_MAJOR_VERSION=5
Expand Down
6 changes: 6 additions & 0 deletions products/openembedded/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Sometimes our users will try to do: "cd openembedded; 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()

ssg_build_product("openembedded")
19 changes: 19 additions & 0 deletions products/openembedded/product.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
product: openembedded
full_name: OpemEmbedded
type: platform

benchmark_id: OPENEMBEDDED
benchmark_root: "../../linux_os/guide"

profiles_root: "./profiles"

pkg_manager: "dnf"

init_system: "systemd"

cpes_root: "../../shared/applicability"
cpes:
- openembedded:
name: "cpe:/o:openembedded:nodistro:"
title: "OpenEmbedded nodistro"
check_id: installed_OS_is_openembedded
166 changes: 166 additions & 0 deletions products/openembedded/profiles/standard.profile
Original file line number Diff line number Diff line change
@@ -0,0 +1,166 @@
documentation_complete: true

title: 'Sample Security Profile for OpenEmbedded Distros'

description: |-
This profile is an sample for use in documentation and example content.
The selected rules are standard and should pass quickly on most systems.

selections:
- file_owner_etc_passwd
- file_groupowner_etc_passwd
- service_crond_enabled
- file_groupowner_crontab
- file_owner_crontab
- file_permissions_crontab
- file_groupowner_cron_hourly
- file_owner_cron_hourly
- file_permissions_cron_hourly
- file_groupowner_cron_daily
- file_owner_cron_daily
- file_permissions_cron_daily
- file_groupowner_cron_weekly
- file_owner_cron_weekly
- file_permissions_cron_weekly
- file_groupowner_cron_monthly
- file_owner_cron_monthly
- file_permissions_cron_monthly
- file_groupowner_cron_d
- file_owner_cron_d
- file_permissions_cron_d
- file_groupowner_cron_allow
- file_owner_cron_allow
- file_cron_deny_not_exist
- file_groupowner_at_allow
- file_owner_at_allow
- file_at_deny_not_exist
- file_permissions_at_allow
- file_permissions_cron_allow
- file_groupowner_sshd_config
- file_owner_sshd_config
- file_permissions_sshd_config
- file_permissions_sshd_private_key
- file_permissions_sshd_pub_key
- sshd_set_loglevel_verbose
- sshd_set_loglevel_info
- sshd_max_auth_tries_value=4
- sshd_set_max_auth_tries
- sshd_disable_rhosts
- disable_host_auth
- sshd_disable_root_login
- sshd_disable_empty_passwords
- sshd_do_not_permit_user_env
- sshd_idle_timeout_value=15_minutes
- sshd_set_idle_timeout
- sshd_set_keepalive
- var_sshd_set_keepalive=0
- sshd_set_login_grace_time
- var_sshd_set_login_grace_time=60
- sshd_enable_warning_banner
- sshd_enable_pam
- sshd_set_maxstartups
- var_sshd_set_maxstartups=10:30:60
- sshd_set_max_sessions
- var_sshd_max_sessions=10
- accounts_password_pam_minclass
- accounts_password_pam_minlen
- accounts_password_pam_retry
- var_password_pam_minclass=4
- var_password_pam_minlen=14
- locking_out_password_attempts
- accounts_password_pam_pwhistory_remember_password_auth
- accounts_password_pam_pwhistory_remember_system_auth
- var_password_pam_remember_control_flag=required
- var_password_pam_remember=5
- set_password_hashing_algorithm_systemauth
- var_accounts_maximum_age_login_defs=365
- accounts_password_set_max_life_existing
- var_accounts_minimum_age_login_defs=7
- accounts_password_set_min_life_existing
- var_accounts_password_warn_age_login_defs=7
- account_disable_post_pw_expiration
- var_account_disable_post_pw_expiration=30
- no_shelllogin_for_systemaccounts
- accounts_tmout
- var_accounts_tmout=15_min
- accounts_root_gid_zero
- accounts_umask_etc_bashrc
- use_pam_wheel_for_su
- sshd_allow_only_protocol2
- journald_forward_to_syslog
- journald_compress
- journald_storage
- service_auditd_enabled
- service_httpd_disabled
- service_vsftpd_disabled
- service_named_disabled
- service_nfs_disabled
- service_rpcbind_disabled
- service_slapd_disabled
- service_dhcpd_disabled
- service_cups_disabled
- service_ypserv_disabled
- service_rsyncd_disabled
- service_avahi-daemon_disabled
- service_snmpd_disabled
- service_squid_disabled
- service_smb_disabled
- service_dovecot_disabled
- banner_etc_motd
- login_banner_text=cis_banners
- banner_etc_issue
- login_banner_text=cis_banners
- file_groupowner_etc_motd
- file_owner_etc_motd
- file_permissions_etc_motd
- file_groupowner_etc_issue
- file_owner_etc_issue
- file_permissions_etc_issue
- ensure_gpgcheck_globally_activated
- package_aide_installed
- aide_periodic_cron_checking
- grub2_password
- file_groupowner_grub2_cfg
- file_owner_grub2_cfg
- file_permissions_grub2_cfg
- require_singleuser_auth
- require_emergency_target_auth
- disable_users_coredumps
- configure_crypto_policy
- var_system_crypto_policy=default_policy
- dir_perms_world_writable_sticky_bits
- file_permissions_etc_passwd
- file_owner_etc_shadow
- file_groupowner_etc_shadow
- file_groupowner_etc_group
- file_owner_etc_group
- file_permissions_etc_group
- file_groupowner_etc_gshadow
- file_owner_etc_gshadow
- file_groupowner_backup_etc_passwd
- file_owner_backup_etc_passwd
- file_permissions_backup_etc_passwd
- file_groupowner_backup_etc_shadow
- file_owner_backup_etc_shadow
- file_permissions_backup_etc_shadow
- file_groupowner_backup_etc_group
- file_owner_backup_etc_group
- file_permissions_backup_etc_group
- file_groupowner_backup_etc_gshadow
- file_owner_backup_etc_gshadow
- file_permissions_unauthorized_world_writable
- file_permissions_ungroupowned
- accounts_root_path_dirs_no_write
- root_path_no_dot
- accounts_no_uid_except_zero
- file_ownership_home_directories
- file_groupownership_home_directories
- no_netrc_files
- no_rsh_trust_files
- account_unique_id
- group_unique_id
- group_unique_name
- wireless_disable_interfaces
- package_firewalld_installed
- service_firewalld_enabled
- package_iptables_installed
10 changes: 10 additions & 0 deletions products/openembedded/transforms/constants.xslt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:include href="../../../shared/transforms/shared_constants.xslt"/>

<xsl:variable name="product_long_name">OpenEmbedded</xsl:variable>
<xsl:variable name="product_short_name">openembedded</xsl:variable>
<xsl:variable name="product_stig_id_name">empty</xsl:variable>
<xsl:variable name="prod_type">openembedded</xsl:variable>

</xsl:stylesheet>
33 changes: 33 additions & 0 deletions shared/checks/oval/installed_OS_is_openembedded.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
<def-group>
<definition class="inventory" id="installed_OS_is_openembedded" version="1">
<metadata>
<title>OpenEmbedded</title>
<affected family="unix">
<platform>multi_platform_all</platform>
</affected>
<description>The operating system installed is an OpenEmbedded based system</description>
</metadata>
<criteria comment="System is OpenEmbedded based" operator="AND">
<extend_definition comment="Installed OS is part of the Unix family" definition_ref="installed_OS_is_part_of_Unix_family" />
<criterion comment="OpenEmbedded distro" test_ref="test_os_openembedded" />
<criterion comment="OpenEmbedded is installed" test_ref="test_openembedded" />
</criteria>
</definition>

<unix:file_test check="all" check_existence="all_exist" comment="/etc/os-release exists" id="test_os_openembedded" version="1">
<unix:object object_ref="obj_os_openembedded" />
</unix:file_test>
<unix:file_object comment="check /etc/os-release file" id="obj_os_openembedded" version="1">
<unix:filepath>/etc/os-release</unix:filepath>
</unix:file_object>

<ind:textfilecontent54_test check="all" check_existence="at_least_one_exists" comment="Check OpenEmbedded" id="test_openembedded" version="1">
<ind:object object_ref="obj_openembedded" />
</ind:textfilecontent54_test>
<ind:textfilecontent54_object id="obj_openembedded" version="1" comment="Check OpenEmbedded">
<ind:filepath>/etc/os-release</ind:filepath>
<ind:pattern operation="pattern match">^ID=nodistro$</ind:pattern>
<ind:instance datatype="int">1</ind:instance>
</ind:textfilecontent54_object>

</def-group>
1 change: 1 addition & 0 deletions shared/checks/oval/sysctl_kernel_ipv6_disable.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
<platform>multi_platform_debian</platform>
<platform>multi_platform_example</platform>
<platform>multi_platform_fedora</platform>
<platform>multi_platform_openembedded</platform>
<platform>multi_platform_opensuse</platform>
<platform>multi_platform_ol</platform>
<platform>multi_platform_rhcos</platform>
Expand Down
5 changes: 4 additions & 1 deletion ssg/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -219,6 +219,7 @@
"Ubuntu 20.04": "ubuntu2004",
"Ubuntu 22.04": "ubuntu2204",
"UnionTech OS Server 20": "uos20",
"OpenEmbedded": "openembedded",
"Not Applicable" : "example"
}

Expand Down Expand Up @@ -267,7 +268,7 @@

MULTI_PLATFORM_LIST = ["rhel", "fedora", "rhv", "debian", "ubuntu",
"opensuse", "sle", "ol", "ocp", "rhcos",
"example", "eks", "alinux", "uos", "anolis"]
"example", "eks", "alinux", "uos", "anolis", "openembedded"]

MULTI_PLATFORM_MAPPING = {
"multi_platform_alinux": ["alinux2", "alinux3"],
Expand All @@ -285,6 +286,7 @@
"multi_platform_sle": ["sle12", "sle15"],
"multi_platform_ubuntu": ["ubuntu1604", "ubuntu1804", "ubuntu2004", "ubuntu2204"],
"multi_platform_uos": ["uos20"],
"multi_platform_openembedded": ["openembedded"],
}

RHEL_CENTOS_CPE_MAPPING = {
Expand Down Expand Up @@ -454,6 +456,7 @@
'ocp': 'Red Hat OpenShift Container Platform',
'rhcos': 'Red Hat Enterprise Linux CoreOS',
'eks': 'Amazon Elastic Kubernetes Service',
'openembedded': 'OpenEmbedded',
}

# References that can not be used with product-qualifiers
Expand Down

0 comments on commit 826dd5b

Please sign in to comment.