11 Star 0 Fork 30

src-openEuler / audit

 / 详情

audit升级到3.0版本

已完成
任务
创建于  
2021-05-12 16:33

当前audit版本为2.8.5,已经比较旧,社区已经发布新稳定版本3.0,请升级到稳定版本3.0版本

评论 (9)

yixiangzhike 创建了任务
yixiangzhike 关联分支设置为master
yixiangzhike 关联仓库设置为src-openEuler/audit
展开全部操作日志

Hey yixiangzhike, Welcome to openEuler Community.
All of the projects in openEuler Community are maintained by @openeuler-ci-bot.
That means the developers can comment below every pull request or issue to trigger Bot Commands.
Please follow instructions at https://gitee.com/openeuler/community/blob/master/en/sig-infrastructure/command.md to find the details.

1 版本信息
当前版本:2.8.5 (2019/03/02)
升级版本:3.0 (2020/12/17)

社区稳定版本演进:
2.8.5-->3.0

2 特性变化(2.8.5 -->> 3.0):
2.1 bugfix

  1. 修复auditd子进程管道描述符关闭错误问题。
  2. 修复调度程序对节点名称为VER2的事件(已进行格式化处理)再次进行格式化处理问题。
  3. 修复Aureport中针对格式错误的USER_CMD事件发生段错误问题。
  4. 修复因事件顺序更正而导致的内存泄漏问题。
  5. 修复aureport第一个事件报告未给出开始时间的问题。

2.2 特性增强:

  1. 合并auditd和audispd代码,将audispd功能集成到auditd中。
  2. 剥离内置audisp-syslog插件功能为独立后台服务程序,并更新syslog插件配置 (/etc/audit/plugins.d/syslog.conf) 。
  3. 创建一个公共内部库libaucommon.a以减少插件源代码。
  4. 变更audispd相关插件功能配置文件到/etc/audit目录。
  5. 合并配置文件audispd.conf配置内容到/etc/audit/auditd.conf中。
  6. 服务挂起时通过SIGUSR信号可重新触发队列处理。
  7. 远程日志记录功能中使用配置选项transport替代enable_krb5选项(auditd.conf)。
  8. 当auditd重新配置时,只为具有有效pid的进程(非0进程)发送信号。
  9. 将auparse测试案例源码由python2迁移到python3。
  10. 将af_unix插件功能移植到libev中。
  11. 升级libev库,使用libev-4.25版本源码。
  12. 拆分ospp规则示例文件,优化SCAP扫描过程。
  13. 对于用户事件消息以”text=msg”命名方式发送。
  14. 修改系统调用表以兼容5.5版本内核。
  15. 当规则文件不存在时,以ERROR级别记录消息日志。
  16. auparse中不需要对独立的AUDIT_EOE事件进行重复的解析处理。
  17. auditctl解除规则配置中“ids-”开头的关键字语法检查。

2.3 新增特性:

  1. 在可执行文件审计中增加对不等(“!=”)运算符的支持。
  2. 增加systemd进程的保护机制(auditd.service)。
  3. 内部状态转储报告中增加队列深度统计信息。
  4. 内部状态转储报告中增加网络连接统计信息。
  5. auparse增加bpf系统调用命令参数解析。
  6. 新增通过可执行文件名称进行排除和用户筛选支持。
  7. 新增某些环境中strndupa和rawmemchr函数的替代函数。
  8. 新增不转义可信信息支持。
  9. Audit用户命令日志信息中增加exe字段。
  10. 新增对sockaddr系列过滤器的支持。
  11. 新增毫秒级时间支持以用于ausearch额外时间csv格式。
  12. 在audisp-remote插件中,为启动连接错误新增配置项startup_failure_action = warn_once_continue 。(/etc/audit/audisp-remote.conf)
  13. 新增对audisp-syslog插件中日志记录字段域解析支持。(比如将时间转换为易读格式)
  14. 新增对AUDIT_BPF、AUDIT_ANOM_CREAT事件支持。
  15. 新增有关监视权限错误的消息日志记录。
  16. 新增对auditctl命令不识别的选项以ERROR级别记录日志。
  17. auditctl命令新增选项--signal,给auditd进程发送信号。(支持的信号:TERM/HUP/USR1/USR2/CONT)
    2.4 删除特性
  18. 删除对插件prelude的支持。(prelude说明https://github.com/linux-audit/audit-userspace/blob/v2.8.5/audisp/plugins/prelude/audisp-prelude.8)
  19. 删除对Alpha和IA64处理器的支持,相应事件日志不再解析。

3 ABI变化:
-------diff 2.8.5 and 3.0-------------------
result write in: /var/tmp/libaudit_libaudit.so.1.0.0_abidiff.out
all results writed in: /var/tmp/libaudit_all_abidiff.out
ABI differences found.
---------------diffs in libaudit_libaudit.so.1.0.0_abidiff.out:----------------
Functions changes summary: 0 Removed, 0 Changed, 0 Added function
Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
Function symbols changes summary: 2 Removed, 4 Added function symbols not referenced by debug info
Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referenced by debug info
2 Removed function symbols not referenced by debug info:
audit_strsplit
audit_strsplit_r
4 Added function symbols not referenced by debug info:
audit_format_signal_info
audit_reset_backlog_wait_time_actual
audit_rule_create_data
audit_rule_init_data

========================================================================================
result write in: /var/tmp/libauparse_libauparse.so.0.0.0_abidiff.out
all results writed in: /var/tmp/libauparse_all_abidiff.out
No ABI differences found.
---------------diffs in libauparse_libauparse.so.0.0.0_abidiff.out:----------------

4 对外头文件变化:
2.8.5 -->> 3.0
/usr/include/libaudit.h 新增以下函数:
extern char *audit_format_signal_info(char *buf, int len, char *op, struct audit_reply *rep, char *res);
int audit_reset_backlog_wait_time_actual(int fd);
extern struct audit_rule_data *audit_rule_create_data(void);
extern void audit_rule_init_data(struct audit_rule_data *rule);

5 配置文件变化:

  1. 删除配置文件/etc/audisp/audispd.conf,配置选项移植到/etc/audit/auditd.conf中

  2. 转移以下配置文件到/etc/audit/plugins.d/目录:
    af_unix.conf
    au-remote.conf
    syslog.conf
    audispd-zos-remote.conf

  3. 转移以下配置文件到/etc/audit/目录:
    audisp-remote.conf
    zos-remote.conf

  4. 新增以下规则示例文件:
    /usr/share/audit/sample-rules/10-base-config.rules
    /usr/share/audit/sample-rules/10-no-audit.rules
    /usr/share/audit/sample-rules/11-loginuid.rules
    /usr/share/audit/sample-rules/12-cont-fail.rules
    /usr/share/audit/sample-rules/12-ignore-error.rules
    /usr/share/audit/sample-rules/20-dont-audit.rules
    /usr/share/audit/sample-rules/21-no32bit.rules
    /usr/share/audit/sample-rules/22-ignore-chrony.rules
    /usr/share/audit/sample-rules/23-ignore-filesystems.rules
    /usr/share/audit/sample-rules/30-nispom.rules
    /usr/share/audit/sample-rules/30-ospp-v42-1-create-failed.rules
    /usr/share/audit/sample-rules/30-ospp-v42-1-create-success.rules
    /usr/share/audit/sample-rules/30-ospp-v42-2-modify-failed.rules
    /usr/share/audit/sample-rules/30-ospp-v42-2-modify-success.rules
    /usr/share/audit/sample-rules/30-ospp-v42-3-access-failed.rules
    /usr/share/audit/sample-rules/30-ospp-v42-3-access-success.rules
    /usr/share/audit/sample-rules/30-ospp-v42-4-delete-failed.rules
    /usr/share/audit/sample-rules/30-ospp-v42-4-delete-success.rules
    /usr/share/audit/sample-rules/30-ospp-v42-5-perm-change-failed.rules
    /usr/share/audit/sample-rules/30-ospp-v42-5-perm-change-success.rules
    /usr/share/audit/sample-rules/30-ospp-v42-6-owner-change-failed.rules
    /usr/share/audit/sample-rules/30-ospp-v42-6-owner-change-success.rules
    /usr/share/audit/sample-rules/30-ospp-v42.rules
    /usr/share/audit/sample-rules/30-pci-dss-v31.rules
    /usr/share/audit/sample-rules/30-stig.rules
    /usr/share/audit/sample-rules/31-privileged.rules
    /usr/share/audit/sample-rules/32-power-abuse.rules
    /usr/share/audit/sample-rules/40-local.rules
    /usr/share/audit/sample-rules/41-containers.rules
    /usr/share/audit/sample-rules/42-injection.rules
    /usr/share/audit/sample-rules/43-module-load.rules
    /usr/share/audit/sample-rules/70-einval.rules
    /usr/share/audit/sample-rules/71-networking.rules
    /usr/share/audit/sample-rules/99-finalize.rules
    /usr/share/audit/sample-rules/README-rules

  5. syslog.conf修改以下配置项:
    path = /sbin/audisp-syslog
    type = always

  6. auditd.conf增删改以下配置项:
    修改选项log_format配置(由RAW变为ENRICHED)
    log_format = ENRICHED
    删除选项:
    enable_krb5 = no
    disp_qos = lossy
    dispatcher = /sbin/audispd
    新增选项:
    transport = TCP #此选项用来替代enable_krb5选项
    q_depth = 400
    overflow_action = SYSLOG
    max_restarts = 10
    plugin_dir = /etc/audit/plugins.d

  7. auditd.service增加以下选项:
    MemoryDenyWriteExecute=true
    LockPersonality=true
    ProtectControlGroups=true
    ProtectKernelModules=true

  8. audisp-remote.conf新增以下选项:
    startup_failure_action = warn_once_continue

6 命令行/功能变化:
6.1 新增选项:

  1. auditctl命令新增选项--signal,向auditd进程发送信号(支持的信号:TERM/HUP/USR1/USR2/CONT)
    6.2 命令增删:
    新增命令
    /sbin/audisp-syslog (该命令功能是从auditd剥离出来)
    开启此插件,将同时向/var/log/messages输出日志

删除命令
/sbin/audispd (该命令与auditd合并)
7 问题与影响
1). 3.0版本的/etc/audit/plugins.d/audispd-zos-remote.conf配置文件中配置项args配置有误
args = /etc/audisp/zos-remote.conf

实际zos-remote.conf文件已经转移到目录 /etc/audit/
影响:开启此插件时会报配置文件/etc/audisp/zos-remote.conf不存在
audispd-zos-remote插件默认不启用

社区补丁: https://github.com/linux-audit/audit-userspace/commit/ea21005f1abba62ed4acd7432c6e721504909511
2). 插件配置文件目录变换
audit升级3.0版本后,使用者自定义的插件配置需移植到/etc/audit和/etc/audit/plugins.d目录
影响:升级后自定义插件配置不移植,auditd将不会加载对应插件功能。

3). 3.0版本开始从源码层删除插件prelude支持
3.0之前版本源码层实现了插件prelude支持,通过编译选项”--with-prelude” 控制是否启用,默认不启用且不会编译该功能,编译启用该插件功能需要libprelude库支持。
社区版本演进时未开启过该插件功能。
Prelude是通用的“安全信息和事件管理”(SIEM)系统。 Prelude收集,归一化,分类,汇总,关联和报告所有与安全性相关的事件。

影响:如果从社区获取源码自行编译了该插件并开启了功能,升级到3.0版本后该插件功能不再可用。

yixiangzhike 关联分支master 修改为openEuler-20.03-LTS-SP1

麒麟软件目前使用的是3.0-5-alpha版本,评估此次升级影响不大,社区这边是否有针对此软件包的一些测试用例与测试方法等,可供这边做验证。

audit源码包自带有开源案例,可供进行用例测试参考
audit-3.0/src/test
audit-3.0/lib/test
audit-3.0/auparse/test

你好,统信在售产品中使用的是2.85版本。 分析过程及升级建议如下,附件内容见maillist邮件
关于audit2.85 升级到3.0,分别从4个方向做了分析:

  1. 用户接口层
    变更: 对用户使用最大的影响在于/etc/audisp/plugins.d/ ,变更为/etc/audit/plugins.d/,
    影响: UOS 已售版本中有两款使用2.85版本, 接口的变更在升级过程中无法让客户直观感知, 可能会使业务配置丢失。分析过程见《audit2.8.5升级到3.0差异分析》
    其他配置文件在rpm包升级中会有相应体现(升级过程提示rpmsave备份),用户可以感知到,可以根据备份做修改。
    建议: 参照主流OS发行原则, 应在大版本中保持ABI 不变。 因此不建议2.85 升级 3.0
    社区如果有强烈意愿升级3.0, 建议对路径差异在post阶段做处理, 参见mailist邮件中《audit2.8.5升级到3.0差异分析》 中提供的patch

  2. 开发者、lib库ABI变化, 根据分析3.0向后百分百兼容,新增符号3个,影响为0
    输入图片说明

  3. 性能基本无影响, 在进程创建方面,有一定提升
    输入图片说明

  4. audit基本功能正常,check项编译运行正常

结论:不建议做升级,如果决策升级建议对配置做一些兼容处理

OK,社区会对配置做一些兼容处理。

当前考虑的兼容方案如下
1.对于使用audit-2.8.5版本,自定义新增的插件配置,通过脚本自动复制到3.0版本新配置目录下/etc/audit/plugins.d/
2.对于使用audit-2.8.5版本,自定义修改的插件配置文件,通过脚本复制到3.0版本新配置目录下,同时添加3.0版本针对该配置文件新增的配置项
3.对于使用audit-2.8.5版本,未做过自定义修改的插件配置文件,直接使用3.0版本提供的新配置目录下文件

我觉得这个方案没有问题 :yum:

登录 后才可以发表评论

状态
负责人
项目
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
预计工期 (小时)
参与者(5)
5329419 openeuler ci bot 1632792936 7670331 pocarl 1591710246
1
https://gitee.com/src-openeuler/audit.git
git@gitee.com:src-openeuler/audit.git
src-openeuler
audit
audit

搜索帮助