前提: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相关事件。
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关键操作:
/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审计日志
ausearch
命令过滤selinux_audit
关键词或avc
(SELinux访问控制)消息类型,-ts recent
表示最近1分钟内事件,-i
参数显示详细信息:sudo ausearch -k selinux_audit -ts recent -i sudo ausearch -m avc -ts recent -i
aureport
命令生成汇总报告,-m selinux
参数聚焦SELinux事件,可查看违规次数、类型等统计信息:sudo aureport -m selinux -i
/var/log/audit/audit.log
,可使用grep
快速筛选拒绝事件:sudo grep -i "denied" /var/log/audit/audit.log
注意事项
enforcing
模式,但需提前通过permissive
模式测试避免误拦截;/var/log/audit/audit.log
),防止日志被覆盖或篡改;semanage
(策略管理工具)和audit2allow
(生成自定义策略)工具使用。