系统审核简介
Linux 审核系统为追踪系统中与安全相关的信息提供了途径。基于预配置原则,审核将生成日志项从而记录尽可能多的在系统中发生的事件。
详细的系统审计日志可以帮助发现常规监控系统(采样间隙太长)难以发现的突发、瞬时的异常活动。不仅是安全防范,也是故障排查的利器。
审核不会为系统提供额外的安全保护;相反,它能用来发现系统中违反安全策略的行为。通过额外的措施例如 SELinux 可以进一步地防止这些违反行为。
系统审核案例
- 访问监测文件 - 审核能够追踪是否有人访问、修改或者运行某个文件或者目录,或者是否更改了文件属性。这是很有用的,例如检测访问重要文件以及备有审计记录以防其中的某个文件被破坏。
- 调用监测系统 - 每次使用特定的系统调用时,配置审核来生成日志项。例如,这可以通过监测来追踪系统中的变化 settimeofday、clock_adjtime 和其他与时间相关的系统调用。
用户记录指令运行
- 因为审核可以追踪该文件是否被运行,因此设定许多规则来记录每一个执行过的特定指令。例如,为每一个可执行的 /bin目录设定规则。通过用户的身份可以搜寻所产生的日志项从而生成每一位用户所执行指令的审计记录。- 记录安全事件 - pam_faillock 认证模块能够记录失败的登录尝试,也可以通过建立审核来记录失败的登录尝试,并提供有关尝试登录用户的额外信息。
- 查找事件 - 审核提供 ausearch 实用程序,这被用来筛选日志项,并且提供基于许多情况的审计记录。
- 运行总结报告 - aureport 实用程序此外还可以被用来生成所记录的事件的日常报告。系统管理员能够分析报告并且进一步调查可疑活动。
监测网络访问
-iptables
以及ebtables
实用程序可以被配置用来触发审核事件,允许系统管理员监测网络访问。
注意
审核所收集的信息量可能影响系统性能。
系统审核架构
审核系统包含两个主要部分:
- 用户空间的应用程序、实用程序
kernel-side
系统调用处理。
Kernel 的组件从用户空间的应用程序接受系统调用,并且通过三个过滤器中的一个过滤器来进行筛选:
- user
- task
- exit
一旦系统调用通过其中的一个过滤器,就将通过 exclude
过滤器进行传送,这是基于审核规则的配置,并把它传送给审核的守护程序做进一步的处理。
用户空间的审核守护进程收集来自于 Kernel 的信息,并在日志文件中创造日志文件项。
其他审核用户空间的实用程序与审核守护进程进行信息交互,Kernel 审核组件,或者审核日志文件:
audisp
— 审核调度守护进程与审核守护进程进行交互,把事件传送给其他应用程序做进一步处理。守护进程的目的是为了提供插入机制,这样的话实时分析程序就能与审核事件进行交互。auditctl
— 审核控制实用程序与 Kernel 审核组件进行交互来控制生成事件过程的许多设定和参数。
剩余的审核实用程序把审核日志文件内容作为输入信息,并基于用户要求生成输出信息。例如,aureport
实用程序生成所有记录事件的报道。
审核部署参考 系统审核部署