linux审计功能(audit log)是什么
audit是Linux自带的一套审计功能,可以监控我们日常的一些操作,然后将这些操作记录在audit.log中,方便我们查看日志。
审计规则是什么
在 /etc/audit/rules.d/audit.rules文件中,我们可以设置相应的规则,也就是我们具体要监控哪些操作,哪些文件,当这些文件有一些读写修改的操作的时,在/var/log/audit/audit.log 中记录下来这些操作,这样我们就可以在audit.log 查看操作记录了。
规则详解
- -a :表示要添加规则
- -F 表示要添加一个过滤条件
- -S execve:这是要监视的系统调用。execve 是一个系统调用,用于执行新进程。通过监视 execve 系统调用,可以捕获新进程的启动。
- -w path :监视的文件路径
- -p rwxa: 权限 监视读取(r),写入(w),执行(x),属性更改(a)
- -k value:为事件添加一个标记,方便在审计日志中查找
一些常见规则示例
setuid 和 setgid 规则 :这些规则用于监视用户在执行程序时提升其权限到超级用户 (root) 或组权限时的活动。它们捕获了在执行execve系统调用时 euid 和 egid 的变化,以及用户尝试提升权限的情况。
文件和目录权限修改规则:这一系列规则用于监视文件和目录的权限修改、删除和重命名等活动,以及相关的审计事件。这包括 fchown、renameat、rmdir、unlink、unlinkat、lremovexattr、ftruncate、chown、fchmodat、truncate 等操作。
java
-a always,exit -F arch=b64 -S execve -C uid!=euid -F euid=0 -k setuid
-a always,exit -F arch=b64 -S execve -C gid!=egid -F egid=0 -k setgid
模块操作规则:这些规则用于监视内核模块相关的活动,包括 finit_module、create_module、init_module 等。它们捕获了模块加载和卸载的情况。
java
a always,exit -F arch=b64 -S create_module -k module-change
-a always,exit -F arch=b32 -S create_module -k module-change
扩展属性 (Extended Attributes) 操作规则:这些规则监视文件和目录的扩展属性的操作,包括 lsetxattr、removexattr、setxattr、fsetxattr 等。扩展属性可用于存储额外的文件和目录元数据。
java
-a always,exit -F arch=b64 -S removexattr -F auid>=1000 -F auid!=4294967295 -k perm_mod
-a always,exit -F arch=b32 -S removexattr -F auid>=1000 -F auid!=4294967295 -k perm_mod
rename 规则:监视文件重命名操作,包括 rename 系统调用。
java
-a always,exit -F arch=b64 -S rename -F auid>=1000 -F auid!=4294967295 -k delete
-a always,exit -F arch=b32 -S rename -F auid>=1000 -F auid!=4294967295 -k delete
lchown 规则:监视 lchown 系统调用,用于修改文件的用户和组。
java
-a always,exit -F arch=b64 -S lchown -F auid>=1000 -F auid!=4294967295 -k perm_mod
-a always,exit -F arch=b32 -S lchown -F auid>=1000 -F auid!=4294967295 -k perm_mod
fchmod 和 chmod 规则:监视 fchmod 和 chmod 系统调用,用于修改文件的权限。
java
-a always,exit -F arch=b64 -S fchmod -F auid>=1000 -F auid!=4294967295 -k perm_mod
-a always,exit -F arch=b32 -S fchmod -F auid>=1000 -F auid!=4294967295 -k perm_mod
-a always,exit -F arch=b64 -S chmod -F auid>=1000 -F auid!=4294967295 -k perm_mod
-a always,exit -F arch=b32 -S chmod -F auid>=1000 -F auid!=4294967295 -k perm_mod
特权操作规则 :这些规则监视一些具有特权的系统命令的执行,如 mount、passwd、
sudo、crontab、setsebool、su、unix_chkpwd 等。它们捕获了执行这些命令的情况。
java
-a always,exit -F arch=b64 -S fchmod -F auid>=1000 -F auid!=4294967295 -k perm_mod
-a always,exit -F arch=b32 -S fchmod -F auid>=1000 -F auid!=4294967295 -k perm_mod
审计日志文件的监视规则:这些规则监视审计日志文件以及与用户账户和组有关的文件(如 /etc/passwd、/etc/group、/etc/shadow、/etc/gshadow、/etc/security/opasswd 等)的访问和修改。这有助于跟踪对身份和访问控制相关文件的更改。
java
-w /etc/gshadow -p wa -k identity
-w /etc/group -p wa -k identity
-w /etc/shadow -p wa -k identity
kmod 规则:监视 kmod 命令的使用,kmod 用于加载和卸载内核模块。
java
-w /usr/bin/kmod -p x -F auid!=4294967295 -k module-change
实例
- 配置audit审计系统
java
yum -y install audit
systemctl start auditd
cat /etc/audit/auditd.conf |grep log_file #查看配置文件,确定日志位置
log_file = /var/log/audit/audit.log #日志文件路径
- 创建规则
可以参照上边的规则实例去创建规则 - 对规则的操作
java
auditctl -s #查询状态
auditctl -l #查看规则
auditctl -D #删除所有规则
备注:当使用 auditctl -l 查看规则的时候,如果提示 no rules的时候,需要先执行 auditctl -R /etc/audit/rules.d/audit.rules 加载规则文件。
- 查看日志文件
java
ausearch -hn #按主机名查找
ausearch -k #按特定的key值查找
ausearch -w #按在audit rule设定的字符串查找
ausearch -f #按文件名查找 例如:ausearch -f /etc/passwd
aureport -ts 9:00-te 18:00-f #生成9:00~18:00这段时间内的报表
在记录的时候有什么问题,欢迎大家在评论中提出~