1. 准备工作:安装SELinux基础工具包
在Ubuntu上测试SELinux策略前,需先安装必要的工具包,包括SELinux基础组件、审计工具及策略管理工具。执行以下命令安装:
sudo apt install selinux-basics auditd setools selinux-policy-dev
安装完成后,需通过sudo selinux-activate命令激活SELinux,这会修改系统启动参数以启用SELinux。
2. 设置SELinux为Permissive模式(测试初始阶段)
Permissive模式是测试SELinux策略的关键步骤,此时SELinux仅记录违规行为(如访问拒绝)而不会实际阻止操作,便于观察策略效果而不影响系统运行。
sudo setenforce 0/etc/selinux/config文件,将SELINUX=enforcing修改为SELINUX=permissive,保存后重启系统。3. 验证SELinux状态
使用sestatus命令确认SELinux是否已启用及当前模式:
sestatus
正常输出应包含:SELinux status: enabled(启用)、Current mode: permissive(当前模式为宽容模式)。
4. 执行具体策略测试(以文件访问为例)
通过创建测试文件并尝试修改内容,验证SELinux对文件访问的控制效果:
echo "Hello, SELinux!" > testfile.txtls -Z testfile.txt(输出会显示文件的SELinux类型,如unconfined_t)sudo setenforce 1),若SELinux策略限制该操作,会返回“Permission denied”错误。5. 查看SELinux拒绝日志(定位策略问题)
若测试中出现访问被拒绝的情况,需通过日志分析具体原因:
ausearch命令过滤最近的AVC(Access Vector Cache)拒绝事件:sudo ausearch -m avc -ts recent6. 使用audit2allow生成自定义策略(解决策略缺失问题)
若日志显示因策略缺失导致拒绝,可通过audit2allow工具自动生成自定义策略模块:
sudo ausearch -m avc -ts recent --raw > avc_denials.txtsudo audit2allow -M mypol < avc_denials.txt(会生成mypol.te源文件和mypol.pp编译后的模块文件)sudo semodule -i mypol.pp(加载后,SELinux会应用新策略)。7. 测试自定义策略有效性
加载自定义策略后,需再次执行测试操作(如修改文件),确认策略是否按预期工作:
audit2why工具进一步分析日志:sudo ausearch -m avc -ts recent | audit2why(会给出具体的权限缺失建议)。8. 切换回Enforcing模式(测试完成)
测试无误后,将SELinux切换回强制模式以启用真正的访问控制:
sudo setenforce 1
如需永久生效,需编辑/etc/selinux/config文件,将SELINUX=permissive改回SELINUX=enforcing并重启系统。