温馨提示×

Ubuntu SELinux如何记录

小樊
51
2025-10-18 13:38:52
栏目: 智能运维

Ubuntu下SELinux日志记录配置与查看指南

SELinux(Security-Enhanced Linux)作为内核级安全模块,其日志记录主要依赖auditd(Linux审计守护进程)捕获安全事件。以下是在Ubuntu上配置SELinux日志记录的完整步骤:

1. 安装必要工具包

首先需安装SELinux核心工具及auditd服务,确保系统支持SELinux日志记录:

sudo apt update
sudo apt install selinux-basics selinux-policy-default auditd audispd-plugins

2. 启用并配置SELinux

编辑SELinux配置文件/etc/selinux/config,将模式设置为permissive(宽松模式,仅记录违规不阻止)或enforcing(强制模式,记录并阻止违规):

sudo nano /etc/selinux/config

找到SELINUX=行,修改为:

SELINUX=permissive  # 测试阶段建议用permissive,稳定后再切enforcing

保存后重启系统使配置生效:

sudo reboot

3. 配置auditd服务

auditd是SELinux日志的核心收集工具,需确保其正常运行并优化配置:

  • 启动并启用auditd
    sudo systemctl start auditd
    sudo systemctl enable auditd
    
  • 调整日志参数:编辑/etc/audit/auditd.conf,设置日志文件路径、大小及保留数量(示例):
    audit_log_file = /var/log/audit/audit.log  # 日志文件路径
    audit_log_format = raw  # 日志格式(raw/rawascii)
    audit_rotate_size = 10485760  # 单个日志文件最大10MB
    audit_rotate_count = 7      # 保留7个归档日志
    
    保存后重启auditd:
    sudo systemctl restart auditd
    

4. 添加SELinux专用审计规则

通过auditctl命令或规则文件,监控SELinux关键文件及系统调用:

  • 临时规则(重启失效):监控SELinux配置目录及策略文件的所有读写操作:
    sudo auditctl -w /etc/selinux/config -p wa -k selinux_config  # 配置文件变更
    sudo auditctl -w /etc/selinux/policy -p wa -k selinux_policy  # 策略文件变更
    sudo auditctl -w /var/lib/selinux/active -p wa -k selinux_active  # 活动策略目录
    
  • 永久规则:创建/etc/audit/rules.d/audit.rules文件,添加以下内容(监控进程执行及SELinux相关事件):
    # 监控所有进程执行事件
    -a exit,always -F arch=b32 -S execve -S execveat -k executed-process
    -a exit,always -F arch=b64 -S execve -S execveat -k executed-process
    # 监控SELinux拒绝事件(需结合avc规则)
    -a always,exit -F arch=b32 -S setrlimit -F a0=RLIMIT_CORE -k selinux_core_limit
    -a always,exit -F arch=b64 -S setrlimit -F a0=RLIMIT_CORE -k selinux_core_limit
    
    加载规则:
    sudo auditctl -R /etc/audit/rules.d/audit.rules
    

5. 查看与分析SELinux日志

使用以下工具快速检索、分析SELinux相关日志:

  • 过滤SELinux拒绝记录:从audit.log中提取包含“denied”的条目(常见违规场景):
    sudo grep -i "denied" /var/log/audit/audit.log
    
  • 搜索特定SELinux事件:使用ausearch命令按关键词(如selinux)或时间范围查询:
    sudo ausearch -k selinux_config  # 按自定义关键词查询
    sudo ausearch -m avc -ts today  # 查询今日的SELinux访问控制事件(AVC)
    
  • 生成SELinux事件报告:通过aureport工具汇总SELinux事件统计(如拒绝次数、触发进程):
    sudo aureport -m selinux  # 生成SELinux模块报告
    sudo aureport -m selinux -i  # 显示详细信息(包括进程名、用户)
    

注意事项

  • Ubuntu默认使用AppArmor而非SELinux,若需切换需彻底禁用AppArmor(sudo systemctl stop apparmor; sudo systemctl disable apparmor),避免冲突。
  • 生产环境中建议先使用permissive模式测试,确认日志记录无误后再切换至enforcing模式,防止误拦截合法操作。
  • 定期备份/var/log/audit/audit.log(如使用logrotate),避免日志文件过大占用磁盘空间。

0