用户可借助该项目实现系统调用审计与日志管理,其核心功能包括低开销的系统调用审计、灵活的日志输出控制(支持netlink和syslog),以及与SELinux等安全组件集成,提供可靠的内核审计信息。【此简介由AI生成】
以下是关于Linux审计框架的背景信息。
许可证
审计守护进程以GPL协议发布代码。其库文件libaudit.*和libauparse.*采用LGPL协议发布,以便与第三方软件链接使用。
构建说明
详见Install(.tmp)文件。
使用指南
请查阅audit、auditctl、audit.rules、ausearch及aureport的手册页。
讨论区
原始LKML讨论帖: https://marc.info/?t=107815888100001&r=1&w=2 https://marc.info/?t=107901570800002&r=1&w=2
设有Linux审计邮件列表,可讨论内核设计、配置或使用相关问题: http://www.redhat.com/mailman/listinfo/linux-audit
设计信息(较旧版本)
核心目标是以1)最低开销实现系统调用审计,2)避免与SELinux(及其他安全基础设施)功能重复。本框架可独立运行,但需配合其他安全组件才能实现如CAPP等功能。
框架分为两部分:始终启用的通用日志(audit.c)和可动态启停的系统调用审计(auditsc.c)。补丁包含security/selinux/avc.c的修改示例,展示如何将系统调用审计与其他审计事件识别代码集成。
日志机制: 1) 采用netlink套接字与用户空间通信。若有守护进程监听,所有消息通过netlink传输;否则默认通过printk写入syslog。 2) 支持基于消息速率或内存占用的选择性丢弃(当前未完全集成至selinux/avc.c,原有avc.c相关代码可移除)。 3) 内核组件生成部分审计记录时,片段会立即发送至用户空间,并自动标记该系统调用为"需审计",在调用退出时补充信息(若启用系统调用审计)。
系统调用审计流程: 1) 任务创建时分配审计上下文并关联至任务结构体。 2) 系统调用入口阶段,若存在审计上下文则记录调用编号和时间戳(不含参数)。 3) 拦截getname()和path_lookup()调用。这些例程在核心决策点被触发,避免重复复制数据(例如chroot("foo")因权限失败时,"foo"不会出现在审计记录中,因内核未实际解析该路径)。 4) 调用退出时,若标记为"需审计"(如SELinux生成AVC记录),则补充记录文件名和inode号(现有实现不返回完整路径以降低开销)。 5) 任务终止时销毁审计上下文。
在步骤1/2/4可进行简单过滤(如数据库角色UID可禁用审计以提升性能)。当前过滤机制简洁高效,复杂决策应依赖SELinux等组件完成。审计记录分片传输机制避免内核长期存储消息。
Introduction
用户可借助该项目实现系统调用审计与日志管理,其核心功能包括低开销的系统调用审计、灵活的日志输出控制(支持netlink和syslog),以及与SELinux等安全组件集成,提供可靠的内核审计信息。【此简介由AI生成】
Customize my domainDownloads
Total downloads (including clone, pull, ZIP & release downloads), updated by T+1.