linux审计功能及规则 (audit.rule)

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

实例

  1. 配置audit审计系统
java 复制代码
yum -y install audit
systemctl start auditd
cat /etc/audit/auditd.conf |grep log_file          #查看配置文件,确定日志位置
log_file = /var/log/audit/audit.log               #日志文件路径
  1. 创建规则
    可以参照上边的规则实例去创建规则
  2. 对规则的操作
java 复制代码
 auditctl  -s                     #查询状态
 auditctl  -l                     #查看规则
 auditctl  -D                    #删除所有规则

备注:当使用 auditctl -l 查看规则的时候,如果提示 no rules的时候,需要先执行 auditctl -R /etc/audit/rules.d/audit.rules 加载规则文件。

  1. 查看日志文件
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这段时间内的报表

在记录的时候有什么问题,欢迎大家在评论中提出~

相关推荐
ZTLJQ8 小时前
序列化的艺术:Python JSON处理完全解析
开发语言·python·json
H5css�海秀8 小时前
今天是自学大模型的第一天(sanjose)
后端·python·node.js·php
平行云PVT9 小时前
数字孪生信创云渲染技术解析:从混合信创到全国产化架构
linux·unity·云原生·ue5·图形渲染·webgl·gpu算力
阿贵---9 小时前
使用XGBoost赢得Kaggle比赛
jvm·数据库·python
无敌昊哥战神9 小时前
【LeetCode 257】二叉树的所有路径(回溯法/深度优先遍历)- Python/C/C++详细题解
c语言·c++·python·leetcode·深度优先
xdscode9 小时前
Linux云服务器安装openclaw,并对接飞书通道
linux·服务器·飞书·openclaw
Percep_gan10 小时前
Linux中安装Redis,很详细
linux·运维·redis
七七powerful10 小时前
运维养龙虾--AI 驱动的架构图革命:draw.io MCP 让运维画图效率提升 10 倍,使用codebuddy实战
运维·人工智能·draw.io
枕书10 小时前
实战记录:如何使用 Docker 一键部署长亭 PandaWiki 智能知识库
运维·docker·容器
2401_8772742410 小时前
从匿名管道到 Master-Slave 进程池:Linux 进程间通信深度实践
linux·服务器·c++