第 5 章 系统审核

Linux 审核系统为追踪系统中与安全相关的信息提供了途径。基于预配置原则,审核将生成日志项从而记录尽可能多的在系统中发生的事件。这一信息对执行关键任务的环境尤其重要,它可以确定那些违反安全策略的人以及他们的行为。审核不会为系统提供额外的安全保护;相反,它能用来发现系统中违反安全策略的行为。通过额外的措施例如 SELinux 可以进一步地防止这些违反行为。
下面的列表总结了一些信息有关审核能够记录的日志文件:
  • 日期和时间,类型,以及事件结果。
  • 主题和对象的敏感性标签。
  • 事件关联与触发事件的用户身份。
  • 所有对审核配置的修改以及尝试访问审核日志文件。
  • 所有认证机制的使用,例如 SSH、Kerberos、以及其他。
  • 对于任何信任数据库的改变,例如 /etc/passwd.
  • 尝试把信息输入系统,或者从系统中输出信息
  • 包含或者排除以用户身份,主题和对象标签以及其他属性为基础的事件
使用审核系统也要求与安全有关的认证。设计审核是为了能满足甚至超过以下认证或者服从指南的要求:
  • 受控制访问保护文件(CAPP)
  • 卷标式安全保护设定文件(LSPP)
  • 基于规则集的访问控制(RSBAC)
  • 国家工业安全计划操作手册(NISPOM)
  • 联邦信息安全管理法案(FISMA)
  • 支付卡行业数据安全标准 (PCI-DSS)
  • 安全技术实施指南 (STIG)
审核也可以是:
  • 由国家信息安全保障联盟(NIAP)以及最佳安全行业(BSI)评估
  • 红帽企业版 Linux 5 通过 LSPP/CAPP/RSBAC/EAL4+ 认证。
  • 红帽企业版 Linux 6 通过操作系统保护文件/评估保障等级4+ (OSPP/EAL4+) 认证。

用例

访问监测文件
审核能够追踪是否有人访问、修改或者运行某个文件或者目录,或者是否更改了文件属性。这是很有用的,例如检测访问重要文件以及备有审计记录以防其中的某个文件被破坏。
调用监测系统
每次使用特定的系统调用时,配置审核来生成日志项。例如,这可以通过监测来追踪系统中的变化 settimeofdayclock_adjtime 和其他与时间相关的系统调用。
用户记录指令运行
因为审核可以追踪该文件是否被运行,因此设定许多规则来记录每一个执行过的特定指令。例如,为每一个可执行的 /bin目录设定规则。通过用户的身份可以搜寻所产生的日志项从而生成每一位用户所执行指令的审计记录。
记录安全事件
pam_faillock 认证模块能够记录失败的登录尝试,也可以通过建立审核来记录失败的登录尝试,并提供有关尝试登录用户的额外信息。
查找事件
审核提供 ausearch 实用程序,这被用来筛选日志项,并且提供基于许多情况的审计记录。
运行总结报告
aureport 实用程序此外还可以被用来生成所记录的事件的日常报告。系统管理员能够分析报告并且进一步调查可疑活动。
监测网络访问
iptables 以及 ebtables 实用程序可以被配置用来触发审核事件,允许系统管理员监测网络访问。

注意

审核所收集的信息量可能影响系统性能。

5.1. 审核系统架构

审核系统包含两个主要部分:用户空间的应用程序、实用程序,以及 kernel-side 系统调用处理。Kernel 的组件从用户空间的应用程序接受系统调用,并且通过三个过滤器中的一个过滤器来进行筛选: usertask 或者 exit。一旦系统调用通过其中的一个过滤器,就将通过 exclude 过滤器进行传送,这是基于审核规则的配置,并把它传送给审核的守护程序做进一步的处理。图 5.1 “审核系统架构” 说明这一过程。
审核系统架构

图 5.1. 审核系统架构

用户空间的审核守护进程收集来自于 Kernel 的信息,并在日志文件中创造日志文件项。其他审核用户空间的实用程序与审核守护进程进行信息交互,Kernel 审核组件,或者审核日志文件:
  • audisp — 审核调度守护进程与审核守护进程进行交互,把事件传送给其他应用程序做进一步处理。守护进程的目的是为了提供插入机制,这样的话实时分析程序就能与审核事件进行交互。
  • auditctl — 审核控制实用程序与 Kernel 审核组件进行交互来控制生成事件过程的许多设定和参数。
  • 剩余的审核实用程序把审核日志文件内容作为输入信息,并基于用户要求生成输出信息。例如,aureport 实用程序生成所有记录事件的报道。