Linux下安全审计audit 系统审计
1.审计介绍
Linux 审计系统提供了一种跟踪系统上与安全相关的信息的方法。根据预先配置的规则,Audit 会生成日志条目,以尽可能多地记录有关系统上发生的事件的信息。此信息对于关键任务环境确定安全策略的违反者及其执行的操作至关重要。审计不会为您的系统提供额外的安全性;相反,它可用于发现违反您系统上使用的安全策略的情况。可以通过其他安全措施(例如 SELinux)进一步防止这些违规行为。
audit能够在日志中记录的信息有:
- 时间的日期时间、类型和结果
- 主体和客体的敏感度标签
- 事件与触发事件的用户身份的关联
- 对审计配置的所有修改和访问审计日志文件的尝试
- 身份验证机制的所有用途,例如 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+) 认证。
2.审计能做什么
2.1 看文件访问
审计可以跟踪文件或目录是否已被访问、修改、执行,或者文件的属性是否已更改。这很有用,例如,检测对重要文件的访问并在这些文件之一损坏的情况下提供审计跟踪。
2.2 监控系统调用
可以将审计配置为每次使用特定系统调用时生成日志条目。这可以用来,例如,通过监控来跟踪更改系统时间settimeofday
,clock_adjtime
和其他时间相关的系统调用。
2.3 记录用户运行的命令
由于审计可以跟踪文件是否已被执行,因此可以定义许多规则来记录特定命令的每次执行。例如,可以为/bin
目录中的每个可执行文件定义规则。然后可以通过用户 ID 搜索生成的日志条目,以生成每个用户执行命令的审计跟踪。
2.4 记录安全事件
该pam_faillock
认证模块能够记录失败的登录尝试的。还可以设置审核以记录失败的登录尝试,并提供有关尝试登录的用户的其他信息。
2.5 搜索事件
Audit 提供了ausearch实用程序,该实用程序可用于过滤日志条目并根据许多条件提供完整的审计跟踪。
2.6 运行摘要报告
该aureport实用程序可用于生成,除其他事项外,记录的事件每日报告。然后系统管理员可以分析这些报告并进一步调查可疑活动。
2.7 监控网络访问
iptables和ebtables实用程序可以被配置为触发审计事件,从而允许系统管理员监控网络访问。
3.审计系统架构
审计系统由两个主要部分组成:用户空间应用程序和实用程序,以及内核端系统调用处理。内核组件接收来自用户空间应用程序的系统调用,并通过三个过滤器之一过滤它们:user、task或exit。一旦系统调用通过这些过滤器之一,它就会通过排除过滤器发送,排除过滤器根据审核规则配置将其发送到审核守护程序以进行进一步处理。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KnMsoByf-1632449444073)(C:\Users\15856\AppData\Roaming\Typora\typora-user-images\image-20210923164817910.png)]
用户空间审计守护进程从内核收集信息并在日志文件中创建日志文件条目。其他审计用户空间实用程序与审计守护进程、内核审计组件或审计日志文件交互:
- audisp — 审计调度程序守护进程与审计守护进程交互并将事件发送到其他应用程序以进行进一步处理。这个守护进程的目的是提供一个插件机制,以便实时分析程序可以与审计事件交互。
- auditctl — 审计控制实用程序与内核审计组件交互,以控制事件生成过程的许多设置和参数。
- 其余的审计实用程序将审计日志文件的内容作为输入,并根据用户的要求生成输出。例如,aureport实用程序生成所有记录事件的报告。
4.安装审计包
系统一般默认就有
yum install audit
5.配置审计服务
审计守护进程可以在/etc/audit/auditd.conf
配置文件中进行配置。此文件包含修改审核守护程序行为的配置参数。任何空行或井号 ( #
)后面的任何文本都将被忽略。
5.1 配置auditd CAPP环境
默认auditd
配置应该适用于大多数环境。但是,如果您的环境必须满足受控访问保护配置文件(CAPP)设置的标准,这是通用标准认证的一部分,则必须使用以下设置配置审核守护程序:
- 保存审核日志文件的目录(通常为
/var/log/audit/
)应驻留在单独的分区上。这可以防止其他进程占用此目录中的空间,并为审计守护程序提供对剩余空间的准确检测。 - 该*
max_log_file
*参数指定单个审计日志文件的最大大小,必须设置为充分利用保存审计日志文件的分区上的可用空间。 - 该*
max_log_file_action
参数决定一旦max_log_file
*达到设置的限制时采取的操作,应设置keep_logs
为防止审计日志文件被覆盖。 - 该*
space_left
参数指定磁盘上剩余的可用空间量,在该space_left_action
参数中设置的操作将被触发,必须设置为一个数字,以便管理员有足够的时间来响应并释放磁盘空间。该space_left
*值取决于生成审核日志文件的速率。 - 建议将*
space_left_action
*参数设置为email
或exec
使用适当的通知方法。 - 该*
admin_space_left
参数指定admin_space_left_action
*触发参数中设置的操作的绝对最小可用空间量,必须设置为一个值,以便留出足够的空间来记录管理员执行的操作。 - 该*
admin_space_left_action
*参数必须设置为single
使系统进入单用户模式并允许管理员释放一些磁盘空间。 - 该*
disk_full_action
*参数指定在保存审核日志文件的分区上没有可用空间时触发的操作,必须设置为halt
或single
。这可确保系统在 Audit 无法再记录事件时关闭或以单用户模式运行。 - 的*
disk_error_action
*,其中规定,被触发的情况下,上保存审计日志文件的分区检测到错误的动作,必须设置为syslog
,single
或halt
,这取决于你的本地安全策略有关硬件故障的处理。 - 所述*
flush
*配置参数必须设置为sync
或data
。这些参数确保所有审计事件数据与磁盘上的日志文件完全同步。
其余配置选项应根据您的本地安全策略进行设置。
6.定义审计规则
审计系统根据一组规则运行,这些规则定义了要在日志文件中捕获的内容。可以指定三种类型的审计规则:
- 控制规则 — 允许修改审计系统的行为及其某些配置。
- 文件系统规则——也称为文件监视,允许审计对特定文件或目录的访问。
- 系统调用规则——允许记录任何指定程序进行的系统调用。
可以使用auditctl实用程序在命令行上指定审计规则(请注意,这些规则在重新启动后不会持久),或写入/etc/audit/audit.rules
文件。以下两节总结了定义审计规则的两种方法。
6.1 使用auditctl实用程序定义审计规则
与审计服务和审计日志文件交互的所有命令都需要 root 权限。确保以 root 用户身份执行这些命令。
该auditctl
命令允许您控制审计系统的基本功能并定义决定记录哪些审计事件的规则。
6.1.1 定义控制规则
以下是一些允许您修改审计系统行为的控制规则:
-
-b
设置内核中现有审计缓冲区的最大数量,例如:
auditctl -b 8192
-
-f
auditctl -f 2
上述配置会在发生严重错误时触发内核恐慌。
-
-e
auditctl -e 2
-
-r
设置每秒生成消息的速率,例如:
auditctl -r 0
上述配置对生成的消息没有设置速率限制。
-
-s
报告审计