Auditd(Linux Auditing System)是 Linux 内核级别的一个安全审计框架,它能够记录系统上发生的各种安全相关事件。对于需要高安全保障的系统环境(例如车载座舱或关键基础设施),利用 Auditd 进行实时、细粒度的进程监控和非法访问审计是至关重要的。
本文将聚焦如何配置 Auditd 规则,以监控所有的进程执行(这是发现异常进程的有效手段)以及对关键系统路径的非法访问。
1. 确认 Auditd 状态
在开始配置规则之前,请确保 Auditd 服务已经安装并正在运行。大多数现代 Linux 发行版默认安装了它。
# 检查服务状态
sudo systemctl status auditd
# 如果服务未运行,启动它
sudo systemctl start auditd
# 确认 auditctl 工具可用
which auditctl
2. 核心规则配置:监控所有进程执行 (execve)
异常进程的启动是系统入侵或恶意软件活动的首要标志。通过监控 execve 系统调用,我们可以记录每一次程序的执行尝试。
注意: 监控所有的 execve 会产生大量的日志。在生产环境中,可能需要结合白名单或更具体的路径监控。但对于座舱级需要最高安全审计的场景,这是一个必要的起点。
以下规则监控 64 位和 32 位架构上所有成功的 execve 系统调用,并使用 -k 标签进行分类。
# 清除现有运行时规则(可选,但推荐在配置新规则集时执行)
sudo auditctl -D
# 监控所有 64 位架构上的 execve 调用
sudo auditctl -a always,exit -F arch=b64 -S execve -k abnormal_process_exec
# 监控所有 32 位架构上的 execve 调用
sudo auditctl -a always,exit -F arch=b32 -S execve -k abnormal_process_exec
# 验证规则是否加载
sudo auditctl -l
3. 监控非法系统访问和配置篡改
除了进程执行,对关键系统文件和目录的非法读、写、执行或属性更改(例如修改权限)是“非法访问”的典型标志。我们将使用 -w 路径监控规则来锁定关键区域。
我们将重点关注 /etc(配置)、/dev(设备/内核接口)和 /boot(引导文件)。
| 权限标志 | 描述 |
|---|---|
| r | 读取 (Read) |
| w | 写入 (Write) |
| x | 执行 (Execute) |
| a | 属性更改 (Attribute change) |
3.1 监控关键配置目录 /etc 的写入操作
sudo auditctl -w /etc/ -p wa -k critical_config_tampering
3.2 监控设备文件或敏感内核接口的读写
假设我们需要特别关注对 /dev/mem 或其他关键驱动接口的访问。
sudo auditctl -w /dev/mem -p rwa -k direct_kernel_access
# 监控整个 /dev 目录的写入操作,防止设备被劫持
sudo auditctl -w /dev/ -p wa -k device_manipulation
4. 实时日志查询与分析
一旦规则配置完毕,Auditd 会将日志写入 /var/log/audit/audit.log。使用 ausearch 工具可以高效地过滤和分析日志。
4.1 搜索异常进程执行日志
通过我们设置的 -k 标签进行搜索:
# 搜索所有标记为 abnormal_process_exec 的事件
sudo ausearch -k abnormal_process_exec --raw
# 搜索过去一小时内,执行了非标准路径下(例如 /tmp)的进程
sudo ausearch -c bash -ts recent -if a0 -x /tmp/
4.2 搜索非法访问事件
搜索所有标记为 critical_config_tampering 的事件:
sudo ausearch -k critical_config_tampering -i
4.3 生成审计报告
aureport 提供了事件的汇总报告,非常适用于日常的安全审查。
# 报告所有成功或失败的系统调用事件
sudo aureport -s -i
# 报告按系统调用分类的摘要(有助于识别最常调用的syscall)
sudo aureport -x -i
5. 使规则永久生效
运行时使用 auditctl 添加的规则在系统重启后会丢失。为了持久化这些规则,您需要将它们写入 /etc/audit/rules.d/99-custom.rules 文件中,并确保 Auditd 服务被配置为在启动时加载这些规则。
示例文件 **/etc/audit/rules.d/99-custom.rules 内容:**
## 进程执行审计
-a always,exit -F arch=b64 -S execve -k abnormal_process_exec
-a always,exit -F arch=b32 -S execve -k abnormal_process_exec
## 系统关键路径审计
-w /etc/ -p wa -k critical_config_tampering
-w /dev/mem -p rwa -k direct_kernel_access
## 确保规则集结束标志
-e 2
保存文件后,重启 Auditd 服务使新规则生效:
sudo systemctl restart auditd
汤不热吧