第153集:审计规则设置
教学目标
- 理解审计规则的基本语法和格式
- 掌握不同类型审计规则的设置方法
- 学会配置文件监控规则
- 掌握系统调用审计规则的设置
- 了解审计规则的优先级和管理
- 掌握审计规则的最佳实践
主要知识点
- 审计规则基本语法
- 文件监控规则
- 系统调用规则
- 审计规则优先级
- 规则持久化配置
- 常见审计规则示例
实用案例分析
案例1:审计规则基本语法
场景描述:需要了解审计规则的基本语法和格式,以便正确设置审计规则。
操作步骤:
查看审计规则语法帮助:
# 查看auditctl帮助信息 auditctl -h # 查看规则相关帮助 auditctl -l --help理解审计规则基本格式:
# 审计规则的基本格式 # 1. 文件监控规则:-w path -p permissions -k key # 2. 系统调用规则:-a action,list -S syscall -F field=value -k key # 3. 删除规则:-D # 4. 列表规则:-l查看当前加载的规则:
# 查看当前加载的审计规则 sudo auditctl -l
案例2:文件监控规则设置
场景描述:需要设置文件监控规则,监控敏感文件的访问和修改。
操作步骤:
监控系统关键文件:
# 监控密码文件的修改 sudo auditctl -w /etc/passwd -p wa -k identity # 监控组文件的修改 sudo auditctl -w /etc/group -p wa -k identity # 监控影子文件的访问 sudo auditctl -w /etc/shadow -p wa -k identity # 监控sudoers文件的修改 sudo auditctl -w /etc/sudoers -p wa -k privilege监控日志文件:
# 监控日志目录的访问 sudo auditctl -w /var/log/ -p wa -k logs # 监控审计日志本身 sudo auditctl -w /var/log/audit/ -p wa -k audit-logs监控系统配置文件:
# 监控网络配置文件 sudo auditctl -w /etc/network/ -p wa -k network-config # 监控防火墙配置 sudo auditctl -w /etc/iptables/ -p wa -k firewall-config # 监控SSH配置 sudo auditctl -w /etc/ssh/ -p wa -k ssh-config
案例3:系统调用规则设置
场景描述:需要设置系统调用规则,监控特定的系统调用活动。
操作步骤:
监控进程创建和执行:
# 监控execve系统调用(命令执行) sudo auditctl -a always,exit -F arch=b64 -S execve -k command-execution # 监控fork和clone系统调用(进程创建) sudo auditctl -a always,exit -F arch=b64 -S fork -S clone -k process-creation监控文件操作:
# 监控文件打开操作 sudo auditctl -a always,exit -F arch=b64 -S open -S openat -k file-open # 监控文件修改操作 sudo auditctl -a always,exit -F arch=b64 -S write -S truncate -k file-modify监控网络操作:
# 监控网络连接 sudo auditctl -a always,exit -F arch=b64 -S connect -k network-connect # 监控绑定端口 sudo auditctl -a always,exit -F arch=b64 -S bind -k network-bind监控权限变更:
# 监控权限变更 sudo auditctl -a always,exit -F arch=b64 -S chmod -S chown -S fchmod -S fchown -k permission-change
案例4:审计规则优先级和过滤
场景描述:需要设置审计规则的优先级和过滤条件,以优化审计效果。
操作步骤:
设置规则优先级:
# 规则的优先级由加载顺序决定,先加载的规则优先级高 # 先设置具体的拒绝规则 sudo auditctl -a never,exit -F arch=b64 -S open -F path=/dev/null # 再设置一般的允许规则 sudo auditctl -a always,exit -F arch=b64 -S open -k file-open使用字段过滤:
# 按用户ID过滤 sudo auditctl -a always,exit -F arch=b64 -S execve -F auid>=1000 -k user-command # 按进程ID过滤 sudo auditctl -a always,exit -F arch=b64 -S open -F pid!=1234 -k file-open # 按文件类型过滤 sudo auditctl -a always,exit -F arch=b64 -S open -F type=file -k regular-file-open使用多个条件组合:
# 组合多个条件 sudo auditctl -a always,exit -F arch=b64 -S open -F path=/etc/passwd -F perm=w -k passwd-modify
案例5:审计规则持久化配置
场景描述:需要配置审计规则的持久化,确保系统重启后规则仍然生效。
操作步骤:
编辑规则配置文件:
# 编辑审计规则文件 sudo vim /etc/audit/rules.d/audit.rules添加持久化规则:
# 基本身份和权限规则 -w /etc/passwd -p wa -k identity -w /etc/group -p wa -k identity -w /etc/shadow -p wa -k identity -w /etc/sudoers -p wa -k privilege # 系统日志规则 -w /var/log/ -p wa -k logs # 网络配置规则 -w /etc/network/ -p wa -k network-config -w /etc/ssh/ -p wa -k ssh-config # 系统调用规则 -a always,exit -F arch=b64 -S execve -k command-execution -a always,exit -F arch=b64 -S open -S openat -k file-open -a always,exit -F arch=b64 -S connect -k network-connect重启审计服务应用规则:
# 重启auditd服务 sudo systemctl restart auditd # 验证规则是否加载 sudo auditctl -l
案例6:常见审计规则示例
场景描述:需要设置一些常见的审计规则,以满足基本的安全监控需求。
操作步骤:
身份和认证规则:
# 监控身份相关文件 -w /etc/passwd -p wa -k identity -w /etc/group -p wa -k identity -w /etc/shadow -p wa -k identity -w /etc/gshadow -p wa -k identity -w /etc/security/opasswd -p wa -k identity权限和授权规则:
# 监控权限相关文件 -w /etc/sudoers -p wa -k privilege -w /etc/sudoers.d/ -p wa -k privilege -w /etc/pam.d/ -p wa -k authentication -w /etc/security/limits.conf -p wa -k limits系统配置规则:
# 监控系统配置文件 -w /etc/sysctl.conf -p wa -k system-config -w /etc/sysctl.d/ -p wa -k system-config -w /etc/modprobe.conf -p wa -k kernel-modules -w /etc/modprobe.d/ -p wa -k kernel-modules网络相关规则:
# 监控网络配置 -w /etc/network/ -p wa -k network-config -w /etc/netplan/ -p wa -k network-config -w /etc/resolv.conf -p wa -k dns-config -w /etc/hosts -p wa -k hosts-config -w /etc/ssh/ -p wa -k ssh-config日志相关规则:
# 监控日志文件 -w /var/log/ -p wa -k logs -w /var/log/audit/ -p wa -k audit-logs -w /var/log/syslog -p wa -k syslog -w /var/log/auth.log -p wa -k auth-log系统调用规则:
# 监控命令执行 -a always,exit -F arch=b64 -S execve -k command-execution # 监控文件操作 -a always,exit -F arch=b64 -S open -S openat -S creat -S truncate -S ftruncate -k file-operations # 监控网络操作 -a always,exit -F arch=b64 -S socket -S connect -S bind -S listen -k network-operations # 监控权限变更 -a always,exit -F arch=b64 -S chmod -S fchmod -S chown -S fchown -S chown16 -S fchown16 -k permission-changes # 监控进程操作 -a always,exit -F arch=b64 -S fork -S vfork -S clone -k process-creation
案例7:审计规则管理
场景描述:需要管理审计规则,包括添加、删除和修改规则。
操作步骤:
添加临时规则:
# 添加临时规则(重启后失效) sudo auditctl -w /tmp/test -p wa -k test删除规则:
# 删除所有规则 sudo auditctl -D # 删除特定规则(通过规则内容匹配) # 注意:需要提供完整的规则内容 sudo auditctl -D -w /tmp/test -p wa -k test重新加载规则:
# 重新加载规则文件中的规则 sudo auditctl -R /etc/audit/rules.d/audit.rules测试规则:
# 测试文件访问规则 sudo touch /etc/test-file sudo auditctl -w /etc/test-file -p wa -k test-file echo "test" > /etc/test-file sudo ausearch -k test-file
课后练习
练习1:基本审计规则设置
- 设置监控/etc/passwd文件的规则
- 设置监控/etc/sudoers文件的规则
- 测试规则是否生效
- 查看相关审计日志
练习2:系统调用规则设置
- 设置监控execve系统调用的规则
- 设置监控open系统调用的规则
- 测试规则是否生效
- 分析系统调用审计日志
练习3:规则优先级和过滤
- 设置多个具有不同优先级的规则
- 使用字段过滤设置精确的规则
- 测试规则的优先级效果
- 优化规则配置
练习4:持久化规则配置
- 在规则配置文件中添加规则
- 配置不同类型的审计规则
- 重启系统测试规则是否持久化
- 验证规则加载情况
练习5:审计规则优化
- 分析现有规则的性能影响
- 优化规则减少不必要的日志
- 测试优化后的规则效果
- 总结审计规则最佳实践
总结
本集详细介绍了Linux审计系统中审计规则的设置方法和最佳实践,包括:
审计规则基本语法:
- 文件监控规则:
-w path -p permissions -k key - 系统调用规则:
-a action,list -S syscall -F field=value -k key - 规则管理命令:
-D(删除)、-l(列表)、-R(加载文件)
- 文件监控规则:
文件监控规则:
- 监控身份相关文件(/etc/passwd、/etc/group等)
- 监控权限相关文件(/etc/sudoers等)
- 监控系统配置文件
- 监控日志文件
系统调用规则:
- 监控命令执行(execve)
- 监控文件操作(open、openat等)
- 监控网络操作(connect、bind等)
- 监控权限变更(chmod、chown等)
- 监控进程操作(fork、clone等)
审计规则优先级:
- 规则优先级由加载顺序决定,先加载的规则优先级高
- 可以使用never列表设置排除规则
- 合理设置规则顺序以优化性能
规则持久化配置:
- 编辑
/etc/audit/rules.d/audit.rules文件 - 添加需要持久化的规则
- 重启auditd服务或使用
auditctl -R加载规则
- 编辑
审计规则最佳实践:
- 只监控必要的文件和系统调用,避免过度审计
- 使用有意义的key值,便于日志分析
- 合理设置规则优先级和过滤条件
- 定期审查和优化审计规则
- 确保审计规则的持久化配置
常见审计规则示例:
- 身份和认证规则
- 权限和授权规则
- 系统配置规则
- 网络相关规则
- 日志相关规则
- 系统调用规则
审计规则的设置是Linux安全审计的核心,合理的审计规则可以帮助及时发现和响应安全事件,提高系统的整体安全性。在实际应用中,应根据系统的具体需求和安全策略,设置适当的审计规则,平衡安全性和性能开销。