第153集:审计规则设置

教学目标

  • 理解审计规则的基本语法和格式
  • 掌握不同类型审计规则的设置方法
  • 学会配置文件监控规则
  • 掌握系统调用审计规则的设置
  • 了解审计规则的优先级和管理
  • 掌握审计规则的最佳实践

主要知识点

  • 审计规则基本语法
  • 文件监控规则
  • 系统调用规则
  • 审计规则优先级
  • 规则持久化配置
  • 常见审计规则示例

实用案例分析

案例1:审计规则基本语法

场景描述:需要了解审计规则的基本语法和格式,以便正确设置审计规则。

操作步骤

  1. 查看审计规则语法帮助

    # 查看auditctl帮助信息
    auditctl -h
    
    # 查看规则相关帮助
    auditctl -l --help
  2. 理解审计规则基本格式

    # 审计规则的基本格式
    # 1. 文件监控规则:-w path -p permissions -k key
    # 2. 系统调用规则:-a action,list -S syscall -F field=value -k key
    # 3. 删除规则:-D
    # 4. 列表规则:-l
  3. 查看当前加载的规则

    # 查看当前加载的审计规则
    sudo auditctl -l

案例2:文件监控规则设置

场景描述:需要设置文件监控规则,监控敏感文件的访问和修改。

操作步骤

  1. 监控系统关键文件

    # 监控密码文件的修改
    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
  2. 监控日志文件

    # 监控日志目录的访问
    sudo auditctl -w /var/log/ -p wa -k logs
    
    # 监控审计日志本身
    sudo auditctl -w /var/log/audit/ -p wa -k audit-logs
  3. 监控系统配置文件

    # 监控网络配置文件
    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:系统调用规则设置

场景描述:需要设置系统调用规则,监控特定的系统调用活动。

操作步骤

  1. 监控进程创建和执行

    # 监控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
  2. 监控文件操作

    # 监控文件打开操作
    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
  3. 监控网络操作

    # 监控网络连接
    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
  4. 监控权限变更

    # 监控权限变更
    sudo auditctl -a always,exit -F arch=b64 -S chmod -S chown -S fchmod -S fchown -k permission-change

案例4:审计规则优先级和过滤

场景描述:需要设置审计规则的优先级和过滤条件,以优化审计效果。

操作步骤

  1. 设置规则优先级

    # 规则的优先级由加载顺序决定,先加载的规则优先级高
    # 先设置具体的拒绝规则
    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
  2. 使用字段过滤

    # 按用户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
  3. 使用多个条件组合

    # 组合多个条件
    sudo auditctl -a always,exit -F arch=b64 -S open -F path=/etc/passwd -F perm=w -k passwd-modify

案例5:审计规则持久化配置

场景描述:需要配置审计规则的持久化,确保系统重启后规则仍然生效。

操作步骤

  1. 编辑规则配置文件

    # 编辑审计规则文件
    sudo vim /etc/audit/rules.d/audit.rules
  2. 添加持久化规则

    # 基本身份和权限规则
    -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
  3. 重启审计服务应用规则

    # 重启auditd服务
    sudo systemctl restart auditd
    
    # 验证规则是否加载
    sudo auditctl -l

案例6:常见审计规则示例

场景描述:需要设置一些常见的审计规则,以满足基本的安全监控需求。

操作步骤

  1. 身份和认证规则

    # 监控身份相关文件
    -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
  2. 权限和授权规则

    # 监控权限相关文件
    -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
  3. 系统配置规则

    # 监控系统配置文件
    -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
  4. 网络相关规则

    # 监控网络配置
    -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
  5. 日志相关规则

    # 监控日志文件
    -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
  6. 系统调用规则

    # 监控命令执行
    -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:审计规则管理

场景描述:需要管理审计规则,包括添加、删除和修改规则。

操作步骤

  1. 添加临时规则

    # 添加临时规则(重启后失效)
    sudo auditctl -w /tmp/test -p wa -k test
  2. 删除规则

    # 删除所有规则
    sudo auditctl -D
    
    # 删除特定规则(通过规则内容匹配)
    # 注意:需要提供完整的规则内容
    sudo auditctl -D -w /tmp/test -p wa -k test
  3. 重新加载规则

    # 重新加载规则文件中的规则
    sudo auditctl -R /etc/audit/rules.d/audit.rules
  4. 测试规则

    # 测试文件访问规则
    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. 练习1:基本审计规则设置

    • 设置监控/etc/passwd文件的规则
    • 设置监控/etc/sudoers文件的规则
    • 测试规则是否生效
    • 查看相关审计日志
  2. 练习2:系统调用规则设置

    • 设置监控execve系统调用的规则
    • 设置监控open系统调用的规则
    • 测试规则是否生效
    • 分析系统调用审计日志
  3. 练习3:规则优先级和过滤

    • 设置多个具有不同优先级的规则
    • 使用字段过滤设置精确的规则
    • 测试规则的优先级效果
    • 优化规则配置
  4. 练习4:持久化规则配置

    • 在规则配置文件中添加规则
    • 配置不同类型的审计规则
    • 重启系统测试规则是否持久化
    • 验证规则加载情况
  5. 练习5:审计规则优化

    • 分析现有规则的性能影响
    • 优化规则减少不必要的日志
    • 测试优化后的规则效果
    • 总结审计规则最佳实践

总结

本集详细介绍了Linux审计系统中审计规则的设置方法和最佳实践,包括:

  1. 审计规则基本语法

    • 文件监控规则:-w path -p permissions -k key
    • 系统调用规则:-a action,list -S syscall -F field=value -k key
    • 规则管理命令:-D(删除)、-l(列表)、-R(加载文件)
  2. 文件监控规则

    • 监控身份相关文件(/etc/passwd、/etc/group等)
    • 监控权限相关文件(/etc/sudoers等)
    • 监控系统配置文件
    • 监控日志文件
  3. 系统调用规则

    • 监控命令执行(execve)
    • 监控文件操作(open、openat等)
    • 监控网络操作(connect、bind等)
    • 监控权限变更(chmod、chown等)
    • 监控进程操作(fork、clone等)
  4. 审计规则优先级

    • 规则优先级由加载顺序决定,先加载的规则优先级高
    • 可以使用never列表设置排除规则
    • 合理设置规则顺序以优化性能
  5. 规则持久化配置

    • 编辑/etc/audit/rules.d/audit.rules文件
    • 添加需要持久化的规则
    • 重启auditd服务或使用auditctl -R加载规则
  6. 审计规则最佳实践

    • 只监控必要的文件和系统调用,避免过度审计
    • 使用有意义的key值,便于日志分析
    • 合理设置规则优先级和过滤条件
    • 定期审查和优化审计规则
    • 确保审计规则的持久化配置
  7. 常见审计规则示例

    • 身份和认证规则
    • 权限和授权规则
    • 系统配置规则
    • 网络相关规则
    • 日志相关规则
    • 系统调用规则

审计规则的设置是Linux安全审计的核心,合理的审计规则可以帮助及时发现和响应安全事件,提高系统的整体安全性。在实际应用中,应根据系统的具体需求和安全策略,设置适当的审计规则,平衡安全性和性能开销。

« 上一篇 审计日志配置 下一篇 » 审计报告生成