温馨提示×

ubuntu如何使用selinux进行审计

小樊
43
2025-09-27 10:22:27
栏目: 智能运维

前提:Ubuntu默认使用AppArmor,需先安装SELinux
Ubuntu并非默认启用SELinux(默认使用AppArmor),因此需先安装SELinux及相关工具。通过以下命令完成安装:

sudo apt update sudo apt install selinux selinux-utils auditd audispd-plugins 

步骤1:配置SELinux模式
编辑SELinux配置文件/etc/selinux/config,将SELINUX参数设置为permissive(宽松模式,仅记录违规不阻止)或enforcing(强制模式,阻止违规)。例如:

sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/' /etc/selinux/config 

修改后重启系统使设置生效:

sudo reboot 

验证SELinux状态:

sestatus # 应显示"SELinux status: enabled"及当前模式(如"Current mode: permissive") 

步骤2:安装并配置auditd服务
auditd是Linux审计框架的核心守护进程,用于记录SELinux相关事件。

  • 安装auditd
    sudo apt install auditd audispd-plugins 
  • 启动并启用服务
    sudo systemctl start auditd sudo systemctl enable auditd 
  • 配置日志参数(可选):
    编辑/etc/audit/auditd.conf,调整日志大小、保留数量等参数(如max_file_size 100表示单日志文件最大100MB,num_files 10表示保留10个归档文件),修改后重启服务:
    sudo systemctl restart auditd 

步骤3:配置SELinux审计规则
通过auditctl命令或自定义规则文件监控SELinux关键操作:

  • 临时规则(重启失效)
    监控SELinux配置文件(/etc/selinux/config)、策略文件(/etc/selinux/policy)及活动策略目录(/var/lib/selinux/active)的所有读写操作,自定义关键词selinux_audit便于后续过滤:
    sudo auditctl -w /etc/selinux/config -p wa -k selinux_audit sudo auditctl -w /etc/selinux/policy -p wa -k selinux_audit sudo auditctl -w /var/lib/selinux/active -p wa -k selinux_audit 
  • 永久规则
    创建自定义规则文件/etc/audit/rules.d/selinux.rules,添加以下内容(监控SELinux AVC拒绝事件及上述文件变更):
    -w /etc/selinux/config -p wa -k selinux_audit -w /etc/selinux/policy -p wa -k selinux_audit -w /var/lib/selinux/active -p wa -k selinux_audit -a always,exit -F arch=b32 -S avc -k selinux_avc -a always,exit -F arch=b64 -S avc -k selinux_avc 
    加载规则:
    sudo augenrules --load 

步骤4:查看与分析SELinux审计日志

  • 实时查看SELinux相关事件
    使用ausearch命令过滤selinux_audit关键词或avc(SELinux访问控制)消息类型,-ts recent表示最近1分钟内事件,-i参数显示详细信息:
    sudo ausearch -k selinux_audit -ts recent -i sudo ausearch -m avc -ts recent -i 
  • 生成SELinux审计报告
    使用aureport命令生成汇总报告,-m selinux参数聚焦SELinux事件,可查看违规次数、类型等统计信息:
    sudo aureport -m selinux -i 
  • 直接查看原始日志
    SELinux日志默认存储在/var/log/audit/audit.log,可使用grep快速筛选拒绝事件:
    sudo grep -i "denied" /var/log/audit/audit.log 

注意事项

  • 生产环境建议将SELinux设置为enforcing模式,但需提前通过permissive模式测试避免误拦截;
  • 定期备份审计日志(如/var/log/audit/audit.log),防止日志被覆盖或篡改;
  • 若需更细粒度的SELinux策略审计,可结合semanage(策略管理工具)和audit2allow(生成自定义策略)工具使用。

0