ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Wazuh SCA 如何编写并校验自定义合规策略 YAML?

Wazuh SCA 如何编写并校验自定义合规策略 YAML? Wazuh SCA 如何编写并校验自定义合规策略 YAML【免费下载链接】wazuhWazuh - The Open Source Security Platform. Unified XDR and SIEM protection for endpoints and cloud workloads.项目地址: https://gitcode.com/GitHub_Trending/wa/wazuhWazuh 的 SCASecurity Configuration Assessment模块按 YAML 策略文件评估系统安全配置。内置的 CIS 等策略由包管理维护不能满足你的自定义合规基线时需要自己编写策略 YAML、放到 agent 上加载并确认策略能通过解析校验、扫描后产生可判断的检查结果。本文覆盖从编写策略文件、配置sca加载到在 agent 启动校验和扫描结果中确认策略有效的完整路径适用于 Wazuh 5.x 环境5.x 中所有 SCA 规则均按 PCRE2 求值regex_type字段被忽略。主要依据文档Creating custom SCA policies、SCA Configuration Reference、SCA policies from 4.x to 5.x、Output Samples。策略文件由哪几个部分组成一份自定义策略文件包含四个 section其中policy和checks必填requirements和variables可选Section是否必填policy是requirements否variables否checks是requirements未满足时对应策略文件的扫描不会启动可用于限定策略只在特定系统上运行。编写策略文件以下示例取自项目文档展示了各 section 的典型写法示例中 check 的id与合规键、MITRE 标识均按文档原样给出policy: id: unix_audit file: sca_unix_audit.yml name: System audit for Unix based systems description: Guidance for establishing a secure configuration for Unix based systems. references: - https://www.ssh.com/ssh/ requirements: name: Check that the SSH service and password-related files are present on the system description: Requirements for running the SCA scan against the Unix based systems policy. condition: any rules: - f:$sshd_file - f:/etc/passwd - f:/etc/shadow variables: $sshd_file: /etc/ssh/sshd_config checks: - id: 3000 name: SSH Hardening: Port should not be 22 description: The ssh daemon should not be listening on port 22 (the default value) for incoming connections. rationale: Changing the default port you may reduce the number of successful attacks from zombie bots. remediation: Change the Port option value in the sshd_config file. compliance: pci_dss: [2.2.4] nist_800_53: [CM.1] mitre: tactic: id: - TA0008 name: - Lateral Movement technique: id: - T1021 name: - Remote Services condition: all rules: - f:$sshd_file - !r:^# r:Port !r:\s*\t*22$policy section 字段字段必填说明id是策略 ID字符串file是策略文件名name是策略名称description是简要描述references否参考链接数组policy和checks下的id字段在所有策略文件中必须唯一。规则rules写法规则分两种形式存在性检查RULE_TYPE:target内容检查RULE_TYPE:target - OPERATOR:value规则类型前缀类型前缀文件f目录d进程p命令c注册表Windowsr文档给出的规则示例可直接参照f:/etc/sshd_config d:/etc not p:sshd r:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa f:/etc/ssh_config - !r:PermitRootLogin f:/etc/ssh_config - !r:^# r:Protocol r:2 c:systemctl is-enabled cups - r:^enabled f:/etc/ssh_config - n:REGEX(\d) compare 4 c:command - n:REGEX(\d) compare number r:path/to/key - value - content f:/proc/sys/net/ipv4/ip_forward - 1 c:sshd -T - !r:^\s*maxauthtries\s4\s*$写规则时的硬约束5.x 中所有规则按 PCRE2 求值不能沿用 4.x 的 OSRegex 语法regex_type字段即使保留也会被忽略内容检查按行求值-、、compare两侧的空格是必须的复合规则用串联多个子表达式not可对整条规则取反变量在variablessection 中定义、以$前缀引用一条规则中变量数量不限例如f:$list_of_files - r:^Content、c:systemctl is-enabled $program_name - r:^enabled。condition 如何聚合规则结果condition必填取值为all、any、none分别表示所有规则通过 / 至少一条通过 / 没有规则通过时该 check 判定为 Passed。文档给出的完整判定表ConditionPassedFailedNot applicable结果allyesnonoPassedall*noyesNot applicableall*yes*Failedanyyes**PassedanynoyesnoFailedanyno*yesNot applicablenoneyes**Failednoneno*yesNot applicablenonenoyesnoPassed*表示该列取值不影响最终结果。compliance 与 mitre 元数据compliance是对象键只能从以下值中选取cmmc、fedramp、gdpr、hipaa、iso_27001、nis2、nist_800_171、nist_800_53、pci_dss、tsc。未知键会被拒绝、记录警告并从 check 中剔除所以不要沿用 4.x 里的pci_dss_v4.0这类带版本号的旧键。mitre是独立对象支持tactic、technique、subtechnique三个键每个键下是id与name两个等长的平行数组同一位置的名字对应同一位置的标识名称取自 MITRE ATTCK 目录mitre: tactic: id: - TA0008 name: - Lateral Movement technique: id: - T1021 name: - Remote Services在 agent 上加载策略文件策略文件放在 agent 上后在/var/ossec/etc/ossec.conf的sca段中用policy指向它绝对路径或相对 Wazuh 安装目录的相对路径均可sca enabledyes/enabled scan_on_startyes/scan_on_start interval6h/interval policies policy/var/ossec/etc/shared/custom_linux.yml/policy policy enabledno/var/ossec/etc/shared/old_policy.yml/policy /policies /scaenabledno属性可以保留策略引用但临时禁用它不配置policies时模块按操作系统自动加载默认策略位于/var/ossec/etc/shared/的策略由 manager 分发。agent 把路径中含etc/shared/的策略视为远程策略其中的命令规则c:只有开启 internal optionsca.remote_commands1后才会执行默认0即禁用本地路径的策略不受该选项限制始终可以执行命令sca.commands_timeout默认 30 秒范围 1–300控制扫描中命令执行的超时防止挂起的命令阻塞扫描不要把自定义策略存在$WAZUH_HOME/ruleset/sca下包升级会用官方策略覆盖该目录自定义策略应放在管理员自维护的路径并显式引用。校验策略是否生效1. 启动校验SCA 模块在 agent 启动时校验配置包含五个方面所有指定的策略文件存在且可读策略文件是结构正确的合法 YAML策略包含必需元数据字段时间间隔在有效范围内agent 对策略文件路径有读权限。出错时的行为非关键问题如缺少可选字段记录警告关键配置错误会导致模块无法初始化模块被禁用无效的可选参数回退到默认值。校验信息查看/var/ossec/logs/ossec.log。2. 搜索具体的解析与编译错误官方迁移文档给出的验证流程是把策略装到一台非生产 5.x agent或 manager上重启服务并运行一次扫描然后在 Wazuh 日志中搜索以下消息确认没有解析和正则错误Failed to parse policyInvalid compliance keyUnexpected compliance formatPCRE2 compilation failed同时注意路径类警告未被静默跳过的策略路径若不存在日志会出现File ... not found或Policy file ... not found警告。3. 核对扫描结果扫描后每个 check 产生result状态取值为Not run尚未执行、Passed、Failed、Not applicable。结果通过双事件系统落地stateful 事件持久化并与 manager 同步stateless 事件即时发送告警。文档给出的 stateful 事件示例示例结果字段结构供核对用{ check: { condition: all, id: CUST001, name: Ensure SMBv1 is disabled., result: Not run, rules: [ r:HKLM\\SYSTEM\\CurrentControlSet\\Services\\LanmanServer\\Parameters - n:SMB1 compare 0 ] }, policy: { file: custom_windows_policy.yml, id: custom_policy_win, name: Custom Windows Hardening Policy } }对照你的策略文件检查两点事件里policy.file与check.id指向你写入的策略和 checkresult落在文档定义的四种取值之内并且通过/失败分布与预期行为一致官方建议先在一组 agent 上比对预期结果再扩大部署。边界与限制policy.id与checks[*].id在所有策略文件间必须唯一4.x 旧策略没有自动迁移工具需人工改写title改name、compliance 转对象、MITRE 移入mitre、n:表达式改用\d与标准compare运算符、去掉已废弃的skip_nfs详见 SCA policies from 4.x to 5.x命令规则在共享/远程策略中受sca.remote_commands限制默认不执行sca扫描间隔有效范围60s–1dskip_nfs已废弃仅被解析但无效果。策略文件的具体字段与规则语法可以继续对照 custom-policies.md同步协议与本地数据库结构见 architecture.md 与 database-schema.md。【免费下载链接】wazuhWazuh - The Open Source Security Platform. Unified XDR and SIEM protection for endpoints and cloud workloads.项目地址: https://gitcode.com/GitHub_Trending/wa/wazuh创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表