diff --git a/linux_os/guide/services/ssh/ssh_server/sshd_allow_only_protocol2/rule.yml b/linux_os/guide/services/ssh/ssh_server/sshd_allow_only_protocol2/rule.yml index 4217dba4039..335120716f4 100644 --- a/linux_os/guide/services/ssh/ssh_server/sshd_allow_only_protocol2/rule.yml +++ b/linux_os/guide/services/ssh/ssh_server/sshd_allow_only_protocol2/rule.yml @@ -65,3 +65,4 @@ template: parameter: Protocol value: "2" datatype: int + obsolete_since_version: "7.0" diff --git a/linux_os/guide/services/ssh/ssh_server/sshd_use_priv_separation/rule.yml b/linux_os/guide/services/ssh/ssh_server/sshd_use_priv_separation/rule.yml index 1c115950ca4..dd5b4fe0b63 100644 --- a/linux_os/guide/services/ssh/ssh_server/sshd_use_priv_separation/rule.yml +++ b/linux_os/guide/services/ssh/ssh_server/sshd_use_priv_separation/rule.yml @@ -52,3 +52,4 @@ template: parameter: UsePrivilegeSeparation xccdf_variable: var_sshd_priv_separation datatype: string + obsolete_since_version: "7.5" diff --git a/shared/macros/10-oval.jinja b/shared/macros/10-oval.jinja index 260d2d73f5c..18827ff97d5 100644 --- a/shared/macros/10-oval.jinja +++ b/shared/macros/10-oval.jinja @@ -1016,6 +1016,60 @@ Generates the :code:`` tag for OVAL check using correct product platfo {{%- endmacro %}} +{{# + Generate an OVAL version check for OpenSSH Server. + This macro creates a complete definition that checks if OpenSSH Server version + is greater than or equal to the specified version. + +:param version: The minimum version to check (e.g., "7.0", "6.9", "7.5") +:type version: str + +#}} +{{%- macro sshd_version_check(version) -%}} +{{%- set version_no_dots = version|replace(".", "") -%}} +{{%- set def_id = "sshd_version_equal_or_higher_than_" ~ version_no_dots -%}} + + + + OpenSSH Server is {{{ version }}} or newer + + multi_platform_all + + Check if version of OpenSSH Server is equal or higher than {{{ version }}} + + + + + + +{{%- if pkg_system == "rpm" -%}} + + + + + + openssh-server + + + 0:{{{ version }}} + + +{{%- elif pkg_system == "dpkg" -%}} + + + + + + openssh-server + + + 0:{{{ version }}} + +{{%- endif -%}} +{{%- endmacro %}} + + {{# Create a full OVAL check for an sshd parameter and value. @@ -1031,9 +1085,11 @@ Generates the :code:`` tag for OVAL check using correct product platfo :type xccdf_variable: str :param datatype: a data type of the value :type datatype: str +:param obsolete_since_version: OpenSSH version where this option became obsolete/hardcoded/removed (e.g., "7.0") +:type obsolete_since_version: str #}} -{{%- macro sshd_oval_check(parameter, value, missing_parameter_pass, config_is_distributed, xccdf_variable="", datatype="", rule_id=None, rule_title=None) -%}} +{{%- macro sshd_oval_check(parameter, value, missing_parameter_pass, config_is_distributed, xccdf_variable="", datatype="", obsolete_since_version="", rule_id=None, rule_title=None) -%}} {{%- set sshd_config_path = "/etc/ssh/sshd_config" %}} {{%- set sshd_config_dir = "/etc/ssh/sshd_config.d" -%}} {{%- if xccdf_variable -%}} @@ -1044,6 +1100,10 @@ Generates the :code:`` tag for OVAL check using correct product platfo {{%- if config_is_distributed == "true" %}} {{%- set description = description ~ " or in " ~ sshd_config_dir -%}} {{%- endif %}} +{{%- if obsolete_since_version -%}} +{{%- set description = description ~ " or OpenSSH version is " ~ obsolete_since_version ~ "+" -%}} +{{%- set version_def_ref = "sshd_version_equal_or_higher_than_" ~ obsolete_since_version|replace(".", "") -%}} +{{%- endif -%}} {{%- set case_insensitivity_kwargs = dict(prefix_regex="^[ \\t]*(?i)", separator_regex = "(?-i)[ \\t]+") -%}} @@ -1061,6 +1121,22 @@ Generates the :code:`` tag for OVAL check using correct product platfo definition_ref="package_openssh-server_removed" /> {{% endif %}} +{{%- if obsolete_since_version %}} + + + + {{% if product == "sle12" %}} + + {{% else %}} + + {{% endif %}} + + +{{%- endif %}} @@ -1071,6 +1147,11 @@ Generates the :code:`` tag for OVAL check using correct product platfo {{% endif %}} +{{%- if obsolete_since_version %}} + + +{{%- endif %}} {{{- oval_line_in_file_criterion(sshd_config_path, parameter, avoid_conflicting=true, rule_id=rule_id) | indent(10)}}} @@ -1162,6 +1243,11 @@ Generates the :code:`` tag for OVAL check using correct product platfo {{% endif %}} + +{{%- if obsolete_since_version %}} + +{{{ sshd_version_check(obsolete_since_version) }}} +{{%- endif %}} {{%- endmacro %}} diff --git a/shared/templates/sshd_lineinfile/oval.template b/shared/templates/sshd_lineinfile/oval.template index 99bc7dbee39..7e34f2c7a3b 100644 --- a/shared/templates/sshd_lineinfile/oval.template +++ b/shared/templates/sshd_lineinfile/oval.template @@ -1,5 +1,6 @@ +{{%- set obsolete_version = OBSOLETE_SINCE_VERSION if OBSOLETE_SINCE_VERSION else "" -%}} {{%- if XCCDF_VARIABLE -%}} -{{{ sshd_oval_check(parameter=PARAMETER, xccdf_variable=XCCDF_VARIABLE, missing_parameter_pass=MISSING_PARAMETER_PASS, config_is_distributed=sshd_distributed_config, datatype=DATATYPE, rule_id=rule_id, rule_title=rule_title) }}} +{{{ sshd_oval_check(parameter=PARAMETER, xccdf_variable=XCCDF_VARIABLE, missing_parameter_pass=MISSING_PARAMETER_PASS, config_is_distributed=sshd_distributed_config, datatype=DATATYPE, obsolete_since_version=obsolete_version, rule_id=rule_id, rule_title=rule_title) }}} {{%- else -%}} -{{{ sshd_oval_check(parameter=PARAMETER, value=VALUE, missing_parameter_pass=MISSING_PARAMETER_PASS, config_is_distributed=sshd_distributed_config, datatype=DATATYPE, rule_id=rule_id, rule_title=rule_title) }}} +{{{ sshd_oval_check(parameter=PARAMETER, value=VALUE, missing_parameter_pass=MISSING_PARAMETER_PASS, config_is_distributed=sshd_distributed_config, datatype=DATATYPE, obsolete_since_version=obsolete_version, rule_id=rule_id, rule_title=rule_title) }}} {{%- endif -%}}