安全配置加固工具
前言
本文档为安全配置加固工具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格式表示,各字段说明如下:
一级配置项 | 二级配置项 | 类型 | 属性 | 说明 |
---|---|---|---|---|
name | N/A | string | optional | 配置文件命名 |
version | N/A | string | optional | 配置策略版本号 |
dim | enable | bool | optional | 打开/关闭DIM功能 |
measure_list | string array | optional | DIM需要度量的文件;用户态文件,需要指定绝对路径;内核模块,需要指定有效的内核模块名称;内核,需要指定为“kernel” | |
log_cap | int | optional | 度量日志最大条数,当记录的度量日志数量达到参数设置时,停止记录度量日志,默认值为100000 | |
schedule | int | optional | 度量完一个进程/模块后调度的时间,单位毫秒,设置为0代表不调度,默认值为0 | |
interval | int | optional | 自动度量周期,单位分钟,设置为0代表不设置自动度量,默认值为0 | |
hash | string | optional | 度量哈希算法,默认值为sha256 | |
core_pcr | int | optional | 将dim_core度量结果扩展至TPM芯片的PCR寄存器,设置为0代表不扩展(注意需要与芯片实际的PCR编号保持一致),默认值为0 | |
monitor_pcr | int | optional | 将dim_monitor度量结果扩展至TPM芯片的PCR寄存器,设置为0代表不扩展(注意需要与芯片实际的PCR编号保持一致),默认值为0 | |
signature | bool | optional | 是否启用策略文件和签名机制 | |
auto_baseline | bool | optional | 是否建立DIM基线,若为false,则需管理员手动生成基线 | |
secure_boot | enable | bool | optional | 是否使能安全启动 |
anti_rollback | bool | optional | 打开/关闭安全启动防回滚策略 | |
verbose | bool | optional | 打开/关闭安全启动相关日志 | |
modsign | enable | bool | optional | 是否使能内核模块校验特性 |
ima | measure_list | string array | optional | IMA保护文件列表(需要指定绝对路径) |
appraise_list | string array | optional | IMA评估文件列表(需要指定绝对路径) |
说明:
- sec_conf.yaml文件必须放在/usr/share/secpaver/scripts/sec_conf/sec_conf.yaml,不可重命名。
- 参数类型需遵守上述表格要求。
- 相关配置若不存在,则使用默认值。
检查脚本模板、配置脚本模板文件
模板文件实现利用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特性配置。
说明:
- 配置、检查模板文件不可修改,仅用于被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