第 7 章 系统审计
Linux 审计系统提供了一种方式来跟踪系统上与安全相关的信息。根据预配置的规则,审计会生成日志条目,来尽可能多地记录系统上所发生的事件的相关信息。对于关键任务环境而言至关重要,可用来确定安全策略的违反者及其所执行的操作。审计不会为您的系统提供额外的安全,而是用于发现系统上使用的安全策略的违规。可以通过其他安全措施(如 SELinux)进一步防止这些违规。
以下列表总结了审计可以在其日志文件中记录的一些信息:
- 事件的日期、时间、类型和结果.
- 主题和对象的敏感度标签。
- 事件与触发事件的用户身份的关联。
- 对审计配置的所有修改,以及对访问审计日志文件的尝试。
- 所有身份验证机制的使用,如 SSH 和 Kerberos 等。
- 对任何受信任数据库的修改,如
/etc/passwd
。 - 尝试将信息导入系统或从系统导出。
- 根据用户身份、主题和对象标签以及其他属性包含或排除事件。
审计系统的使用也是许多安全相关认证的一项要求。审计旨在满足或超出以下认证或合规指南的要求:
- 受控访问保护配置文件(CAPP)
- 标记的安全保护配置文件(LSPP)
- 规则集基本访问控制(RSBAC)
- 国家工业安全计划操作手册(NISPOM)
- 联邦信息安全管理法案(FISMA)
- 支付卡行业 - 数据安全标准(PCI-DSS)
- 安全技术实施指南(STIG)
审计还包括:
- 由国家信息保障合作伙伴(NIAP)和最佳安全行业(BSI)评估。
- Red Hat Enterprise Linux 5 上的 LSPP/CAPP/RSBAC/EAL4+ 认证.
- Red Hat Enterprise Linux 6 上的操作系统保护配置文件/评估保障级别 4+(OSPP/EAL4+)认证.
使用案例
- 监视文件访问
- 审计可以跟踪文件或目录是否已被访问、修改、执行或者文件的属性是否已改变。例如,这有助于检测对重要文件的访问,并在其中一个文件损坏时提供审计跟踪。
- 监控系统调用
- 可将审计配置为在每次使用特定系统调用时生成日志条目。例如,这可用于通过监控
settimeofday
、clock_adjtime
和其他与时间相关的系统调用来跟踪对系统时间的修改。 - 记录用户运行的命令
- 审计可以跟踪文件是否已被执行,因此可以定义一个规则以记录每次特定命令的执行。例如,可以对
/bin
目录中的每个可执行文件定义一个规则。然后,可以按用户 ID 搜索生成的日志条目,以生成每个用户所执行的命令的审计跟踪。 - 记录系统路径名称的执行
- 除了观察在规则调用时将路径转换为 inode 的文件访问之外,审计现在还可以观察路径的执行,即使路径在规则调用中不存在,或者在规则调用后文件被替换了。这允许规则在升级程序可执行文件后或甚至在其安装之前继续运行。
- 记录安全事件
pam_faillock
认证模块能够记录失败的登录尝试。也可以将审计设置为记录失败的登录尝试,并提供有关试图登录的用户的附加信息。- 搜索事件
- 审计提供了 ausearch 工具,可用于过滤日志条目,并根据多个条件提供完整的审计跟踪。
- 运行总结报告
- aureport 实用程序可用于生成记录事件的日常报告等。然后,系统管理员可以分析这些报告,并进一步调查可疑的活动。
- 监控网络访问
- iptables 和 ebtables 工具可以配置为触发审计事件,允许系统管理员监控网络访问。
注意
系统性能可能会受到影响,具体取决于审计所收集的信息量。
7.1. 审计系统架构
审计系统由两个主要部分组成:用户空间应用程序和工具,以及内核端系统调用处理。内核组件接收用户空间应用程序的系统调用,并通过以下过滤器对其进行过滤:user、task、fstype 或 exit。
系统调用通过 exclude 过滤器后,它将通过上述其中一个过滤器发送,该过滤器根据审计规则配置将其发送到审计守护进程,以进行进一步处理。
用户空间审计守护进程从内核收集信息,并在日志文件中创建条目。其他审计用户空间工具与审计守护进程、内核审计组件或审计日志文件进行交互:
- audisp - Audit 分配程序守护进程与 Audit 守护进程交互,并将事件发送到其他应用程序,以便进一步处理。此守护进程的目的是提供插件机制,以便实时分析程序可以与审计事件交互。
- auditctl - 审计控制实用程序与内核审计组件交互,以管理规则并控制事件生成进程的多个设置和参数。
- 其余的审计工具会将审计日志文件的内容作为输入,并根据用户的要求生成输出。例如,aureport 工具生成所有记录的事件的报告。