目录
一 审计概要
二 内核审计系统
三 技术方案及原理
一 审计概要
审计是事后认定违反安全规则的分析技术,安全审计为管理员在用户违反安全法则时提供及时的警告信息,实现对系统信息的追踪、审查、统计和报告等功能[1]。linux提供了用来记录系统安全事件的审计系统,审计系统包括用户空间审计系统和内核空间审计系统,用户空间审计系统由一些用户空间的审计程序组成,用来开启内核审计功能、设置审计规则和审计系统状态、接收内核审计系统发送来的审计消息并写入log文件,以及审计消息的检索和生成审计总结报告。
二 内核审计系统
用于产生和过滤内核的各种审计消息
分析的内容包括:
1.审计消息的生成和发送;
2.审计消息的过滤;
3.对进程和系统调用的审计;
4.对文件或目录的审计。
linux/audit.h 主要包括审计事件、规则域的定义和规则结构类型的定义以及部分钩子
函数的定义。
kernel/audit.h 包括审计状态的结构类型、规则链表条目、基于节点的哈希规则链表的定义和部分外部函数的声明。
kernel/audit.c 审计系统实现的主要文件,包括审计缓冲区的定义,表示审计系统状态的全局变量的定义,审计消息发送和接收所使用的等待队列的声明和审计消息生成和发送的函数audit_log、audit_log_start、audit_log_format和audit_log_end等函数的定义。
kernel/auditsc.c 对系统调用审计提供支持的文件,包括系统调用进入和退出时执行的函数,进程创建时执行规则过滤的函数和系统调用进入或退出时执行的规则过滤函数。
kernel/auditfilter.c 对规则过滤提供支持的文件,包括规则链表及其锁的定义,添加、删除规则的函数、对规则域表达式进行计算的函数以及根据user规则链表和type规则链表进行规则过滤的函数。
kernel/audit_watch.c 对inode监视提供支持的文件,包括审计监视相关数据结构的定义,审计监视处理实例的初始化函数和审计监视事件处理函数及添加、删除审计监视的函数等。
三 技术方案及原理
审计系统是评价计算机安全性的重要标准之一,审计系统提供了一种记录系统安全信息的方法。审计系统的审计信息包括:可被审计的事件名称、事件状态(成功或失败)和安全信息等.
对于文件系统的审计,在新版本的的内核中,不再使用inotify来监视文件系统的变化,而是直接使用文件系统监视变化的框架fsnotify来进行文件系统的监视,包括对目录的监视和对文件的监视
审计系统关心的事件只是fsnotify定义的事件的一部分,目前审计系统只监视六种审计事件:文件系统对象的创建、删除、移动、文件系统对象自身的删除、移动和孩子节点发生了变化。