audit审计
安装audit
参考: https://blog.csdn.net/u010039418/article/details/85091142
shell
# rhel
dnf install -y audit
# debian
## audispd-plugins提供了 一些插件和规则
sudo apt install -y auditd audispd-plugins
配置审计服务
审计守护进程可以在/etc/audit/auditd.conf
配置文件中进行配置。此文件包含修改审核守护进程行为的配置参数。任何空行或#后面的文本都将被忽略
配置auditd capp 环境
默认auditd配置应该适用于多数环境。但是,如果您的环境必须满足受控访问保护配置文件(CAPP)设置的标准
- 保存审核日志文件的目录(通常为/var/log/audit)驻留在单独的分区上。这可以防止其他进程占用此目录中的空间,并为审计守护进程提供对剩余空间的准确检测
- 该max_log_file参数指定单个审计日志文件的最大大小,必须设置为充分利用保存审计日志文件的分区上的的可用空间
- 该max_log_file_action参数一旦max_log_file达到设置时采取的操作,应设置keep_logs为防止审计日志文件被覆盖
定义审计规则
审计系统根据一组审计规则运行,这些规则定义了日志文件中捕获的内容,可以指定三种类型的审计规则
- 控制规则--允许修改审计系统的行为以及某些配置
- 文件系统规则-也称为文件监视,允许审计对特定文件或目录的访问
- 系统调用规则--允许记录任何指定程序进行的系统调用
可以使用auditctl程序在命令行指定审计规则(请注意,这些规则在重新启动后不会持久),或写入/etc/audit/audit.rules
文件
shell
# 创建审计规则文件
touch /etc/audit/rules.d/10-root-commands.rules
配置审计规则内容如下
shell
# 审计规则:针对 64 位架构,监控以 root 身份执行的命令
## -a always,exit: 添加一条审计规则,始终生效并在系统调用退出时触发
## -F arch=b64: 仅适用于 64 位架构
## -S execve: 监控 `execve` 系统调用(用于执行程序)
## -F euid=0: 仅审计有效用户 ID 为 0(即 root 用户)的进程
## -k root-commands: 将审计事件标记为 `root-commands`,便于后续查询
-a always,exit -F arch=b64 -S execve -F euid=0 -k root-commands
# 审计规则:针对 32 位架构,监控以 root 身份执行的命令
## -a always,exit: 添加一条审计规则,始终生效并在系统调用退出时触发
## -F arch=b32: 仅适用于 32 位架构
## -S execve: 监控 `execve` 系统调用(用于执行程序)
## -F euid=0: 仅审计有效用户 ID 为 0(即 root 用户)的进程
## -k root-commands: 将审计事件标记为 `root-commands`,便于后续查询
-a always,exit -F arch=b32 -S execve -F euid=0 -k root-commands
使用auditctl应用程序定义审计规则
与审计服务和审计日志文件交互的所有命令都需要root权限。确保以root用户执行这些命令
auditctl命令允许您控制审计系统的基本功能并决定记录哪些事件的规则
定义控制规则
以下是一些允许您修改审计系统行为的控制规则
- -b 设置内核中现有审计缓存区的最大数值
shell
auditctl -b 8192
- -f 该选项允许确定希望内核如何处理关键错误,有0,1,2三个值,0是不输出日志,1位输出printk日志,2会大量输出日志信息。默认值位1
shell
auditctl -f 2
重载规则
shell
# 重载规则
sudo augenrules --load
# 验证规则是否已加载
sudo auditctl -l
审计
shell
# 审计
sudo ausearch -k root-commands
# 只看命令执行记录
sudo ausearch -k root-commands|grep argc
# 查看最近10分钟的
sudo ausearch -k root-commands -ts recent
# 查看今天的
sudo ausearch -k root-commands -ts today
## -i 格式化输出,更易读
sudo ausearch -k root-commands -i
# 向history一样只显示命令
ausearch -k root-commands -i | grep 'proctitle='