长期支持版本

    社区创新版本

      安全配置加固工具

      前言

      本文档为安全配置加固工具sec_conf基本介绍以及使用说明。

      sec_conf简介

      背景和概述

      openEuler已支持多种安全特性,包括Linux原生安全特性和社区自研安全特性,但是存在特性分散,配置难度大,用户学习成本高等问题。同时对于一些具备拦截功能的安全特性(如IMA评估、安全启动、访问控制等),一旦用户配置错误,可能导致系统无法启动或无法正常运行。因此,sec_conf旨在实现自动化安全配置机制,用户可基于工具进行系统的安全检查和加固,以更好地推进openEuler安全特性在各应用场景的落地。

      功能介绍

      sec_conf是一个帮助管理员配置openEuler安全特性(如IMA、DIM、secure boot等)的安全加固工具。用户可以输入配置信息,即需要实现的安全加固目标,生成相应的安全特性配置脚本。

      目前sec_conf支持可配置的安全机制为IMA、DIM、secure boot、modsign,其他安全特性暂未支持。

      安装与部署

      安装依赖软件包

      编译secPaver需要的软件有:

      • make
      • golang 1.11+

      下载源码

      git clone https://gitee.com/openeuler/secpaver.git -b sec_conf
      

      编译安装

      cd secpaver
      make
      

      安装软件:

      make install
      

      工程文件格式说明

      sec_conf工程文件由策略配置文件、检查脚本模板文件、配置脚本模板文件组成。

      策略配置文件

      策略配置文件保护DIM\IMA\安全启动\内核模块校验相关特性配置,采用yaml格式表示,各字段说明如下:

      一级配置项二级配置项类型属性说明
      nameN/Astringoptional配置文件命名
      versionN/Astringoptional配置策略版本号
      dimenablebooloptional打开/关闭DIM功能
      measure_liststring arrayoptionalDIM需要度量的文件;用户态文件,需要指定绝对路径;内核模块,需要指定有效的内核模块名称;内核,需要指定为“kernel”
      log_capintoptional度量日志最大条数,当记录的度量日志数量达到参数设置时,停止记录度量日志,默认值为100000
      scheduleintoptional度量完一个进程/模块后调度的时间,单位毫秒,设置为0代表不调度,默认值为0
      intervalintoptional自动度量周期,单位分钟,设置为0代表不设置自动度量,默认值为0
      hashstringoptional度量哈希算法,默认值为sha256
      core_pcrintoptional将dim_core度量结果扩展至TPM芯片的PCR寄存器,设置为0代表不扩展(注意需要与芯片实际的PCR编号保持一致),默认值为0
      monitor_pcrintoptional将dim_monitor度量结果扩展至TPM芯片的PCR寄存器,设置为0代表不扩展(注意需要与芯片实际的PCR编号保持一致),默认值为0
      signaturebooloptional是否启用策略文件和签名机制
      auto_baselinebooloptional是否建立DIM基线,若为false,则需管理员手动生成基线
      secure_bootenablebooloptional是否使能安全启动
      anti_rollbackbooloptional打开/关闭安全启动防回滚策略
      verbosebooloptional打开/关闭安全启动相关日志
      modsignenablebooloptional是否使能内核模块校验特性
      imameasure_liststring arrayoptionalIMA保护文件列表(需要指定绝对路径)
      appraise_liststring arrayoptionalIMA评估文件列表(需要指定绝对路径)

      说明:

      1. sec_conf.yaml文件必须放在/usr/share/secpaver/scripts/sec_conf/sec_conf.yaml,不可重命名。
      2. 参数类型需遵守上述表格要求。
      3. 相关配置若不存在,则使用默认值。

      检查脚本模板、配置脚本模板文件

      模板文件实现利用go-tamplate引擎,将脚本文件与数据结合,生成最终的文本输出。

      检查脚本模板统一放置/usr/share/secpaver/scripts/sec_conf/check/目录,该目录下存放DIM、IMA等特性的脚本模板,这些脚本模板不能单独执行,只能通过sec_conf生成最新的脚本去执行openEuler特性检查。

      配置脚本模板统一放置/usr/share/secpaver/scripts/sec_conf/gen/目录,该目录下存放DIM、IMA等特性的脚本模板,这些脚本模板不能单独执行,只能通过sec_conf生成最新的脚本去执行openEuler特性配置。

      说明:

      1. 配置、检查模板文件不可修改,仅用于被sec_conf解析生成脚本。

      安全配置命令行接口

      参数功能介绍命令格式
      --help,-h打印sec_conf命令行帮助信息sec_conf -h
      gen_check生成安全配置检查脚本,并输出到命令行界面sec_conf gen_check
      gen_config生成安全配置脚本,并输出到命令行界面sec_conf gen_config
      --output,-o将生成的配置脚本输出到指定文件sec_conf gen_config -o config.sh

      使用说明

      配置yaml文件,示例:

      # cat /usr/share/secpaver/scripts/sec_conf/sec_conf.yaml
      ---
      name: "openEuler security configuration"
      version: "1"
      dim:
        enable: true
        measure_list:
          - "/usr/bin/bash"
          - "nf_nat"
          - "kernel"
        log_cap: 100000
        schedule: 0
        interval: 0
        hash: "sha256"
        core_pcr: 11
        monitor_pcr: 12
        signature: true
        auto_baseline: true
      secure_boot:
        enable: true
        anti_rollback: true
        verbose: true
      modsign:
        enable: true
      ima:
        measure_list:
        - "/usr/bin/ls"
        - "/usr/bin/cat"
        - "/usr/bin/base64"
        - "/usr/bin/base32"
        appraise_list:
        - "/usr/bin/base64"
        - "/usr/bin/base32"
        - "/usr/bin/sleep"
        - "/usr/bin/date"
      ...
      

      生成特性配置脚本、检查脚本

      sec_conf gen_config -o ./config.sh
      sec_conf gen_check -o ./check.sh
      

      执行配置脚本,并检查配置是否正确,若配置正确,则重启系统使配置生效

      sh ./config.sh -s
      sh ./check.sh -s
      reboot
      

      重启后再次执行配置脚本,并检查配置是否正确,此时预期所有功能检查通过

      sh ./config.sh -s
      sh ./check.sh -s
      

      文档捉虫

      “有虫”文档片段

      问题描述

      提交类型 issue

      有点复杂...

      找人问问吧。

      PR

      小问题,全程线上修改...

      一键搞定!

      问题类型
      规范和低错类

      ● 错别字或拼写错误;标点符号使用错误;

      ● 链接错误、空单元格、格式错误;

      ● 英文中包含中文字符;

      ● 界面和描述不一致,但不影响操作;

      ● 表述不通顺,但不影响理解;

      ● 版本号不匹配:如软件包名称、界面版本号;

      易用性

      ● 关键步骤错误或缺失,无法指导用户完成任务;

      ● 缺少必要的前提条件、注意事项等;

      ● 图形、表格、文字等晦涩难懂;

      ● 逻辑不清晰,该分类、分项、分步骤的没有给出;

      正确性

      ● 技术原理、功能、规格等描述和软件不一致,存在错误;

      ● 原理图、架构图等存在错误;

      ● 命令、命令参数等错误;

      ● 代码片段错误;

      ● 命令无法完成对应功能;

      ● 界面错误,无法指导操作;

      风险提示

      ● 对重要数据或系统存在风险的操作,缺少安全提示;

      内容合规

      ● 违反法律法规,涉及政治、领土主权等敏感词;

      ● 内容侵权;

      您对文档的总体满意度

      非常不满意
      非常满意
      提交
      根据您的反馈,会自动生成issue模板。您只需点击按钮,创建issue即可。
      文档捉虫
      编组 3备份