概述
auditctl 动态管理 Linux 审计系统的规则。这些规则在内核级别定义,可以配置为记录特定文件访问、系统调用、用户活动等各种事件。审计日志通常存储在 /var/log/audit/audit.log 文件中。
主要功能
- 添加和删除审计规则
- 查看当前活动的审计规则列表
- 监视文件和目录访问
- 监视特定的系统调用
- 设置基于用户和组的审计规则
安装
auditctl 是 'audit' 或 'auditd' 包的一部分。如果您的 Linux 发行版默认未安装,您可以使用以下命令进行安装。
Debian/Ubuntu
sudo apt update
sudo apt install auditd
在 Debian 或 Ubuntu 系统上安装 auditctl。
RHEL/CentOS/Fedora
sudo yum install audit
# 或
sudo dnf install audit
在 RHEL、CentOS 或 Fedora 系统上安装 auditctl。
安装后,您需要启动并启用 auditd 服务:`sudo systemctl enable auditd --now`
主要选项
auditctl 命令通过各种选项来定义和管理审计规则。
规则管理
规则定义
生成的命令:
请尝试组合命令。
描述:
`auditctl` 执行命令。
通过组合这些选项,您可以与 AI 一起虚拟地执行命令。
使用示例
使用 auditctl 设置审计规则的各种示例。
列出当前所有审计规则
sudo auditctl -l
查看当前内核加载的所有审计规则。
监视 /etc/passwd 文件更改
sudo auditctl -w /etc/passwd -p wa -k passwd_changes
监视对 /etc/passwd 文件的所有写入 (w) 和属性更改 (a) 访问,并分配 'passwd_changes' 键。
监视 /etc/shadow 文件读取尝试
sudo auditctl -w /etc/shadow -p r -k shadow_read
监视对 /etc/shadow 文件的读取 (r) 尝试,并分配 'shadow_read' 键。
监视 /var/log 目录下的文件创建/删除
sudo auditctl -a always,exit -F dir=/var/log -F perm=wa -S creat,unlink -k log_dir_changes
监视 /var/log 目录下的文件创建 (creat) 和删除 (unlink) 系统调用。分配 'log_dir_changes' 键。
监视特定用户 (UID) 的文件删除尝试
sudo auditctl -a always,exit -F arch=b64 -S unlink -F auid=1000 -k user_file_delete
监视 UID 为 1000 的用户删除文件 (unlink) 的系统调用。指定 64 位系统架构。
删除所有审计规则
sudo auditctl -D
删除当前加载的所有审计规则。(注意:请谨慎使用。)
删除具有特定键的规则
sudo auditctl -w /etc/passwd -p wa -k passwd_changes -d
删除具有 'passwd_changes' 键的规则。必须使用与添加规则时相同的选项。
提示与注意事项
使用 auditctl 时的有用提示和注意事项。
永久保存规则
通过 auditctl 添加的规则在系统重启后会消失。要使规则永久生效,请将规则添加到 /etc/audit/rules.d/audit.rules 文件中,然后使用 'augenrules --load' 或 'systemctl restart auditd' 命令应用。
- 规则文件: /etc/audit/rules.d/audit.rules
- 应用规则: sudo augenrules --load
性能影响
设置过多的审计规则或监视过于广泛的目录可能会影响系统性能。建议仅设置必要的最小规则,并专注于关键路径。
检查日志文件
审计事件记录在 /var/log/audit/audit.log 文件中。使用 ausearch 和 aureport 命令来检查此日志会更有效。
指定架构 (-F arch=b64/b32)
监视系统调用时,建议在 64 位系统上明确指定 '-F arch=b64',在 32 位系统上指定 '-F arch=b32'。这是因为系统调用号可能因架构而异。