SELinux在Ubuntu上的支持说明
Ubuntu默认使用AppArmor作为安全模块,并未原生集成SELinux。若需在Ubuntu上使用SELinux,需手动安装相关工具包(如selinux-basics
、selinux-policy-default
、auditd
),并通过配置启用。但需注意,SELinux在Ubuntu上的功能可能不如CentOS/RHEL等发行版完善,部分高级特性可能受限。
在Ubuntu上启用SELinux前,需安装必要工具包并设置开机自启:
sudo apt update
sudo apt install selinux-basics selinux-policy-default auditd
sudo selinux-activate # 激活SELinux(需重启系统)
SELinux有三种核心模式,需根据环境需求选择:
配置方法:修改/etc/selinux/config
文件,调整SELINUX=
参数(如SELINUX=permissive
),重启系统生效。初始部署建议先设为Permissive模式,验证系统兼容性后再切换至Enforcing。
管理布尔值(Booleans):
布尔值是SELinux策略中的开关,可快速启用/禁用特定功能的访问权限(如允许Apache访问用户主目录)。通过以下命令查看、修改布尔值:
getsebool -a # 查看所有布尔值
setsebool httpd_enable_homedirs on # 临时开启(重启失效)
setsebool -P httpd_enable_homedirs on # 永久生效(-P参数)
需根据应用需求调整,避免过度限制或开放。
定制自定义策略:
若默认策略(Targeted策略,针对特定服务)无法满足需求,可通过audit2why
工具分析拒绝日志,生成自定义策略模块。步骤如下:
ausearch -m avc -ts recent
;ausearch -m avc -ts recent | audit2why
;audit2why
提示编写.te
文件(策略源码),编译并加载:checkmodule -M -m -o myapp.mod myapp.te # 编译为模块文件
semodule_package -o myapp.pp -m myapp.mod # 打包为可加载模块
semodule -i myapp.pp # 加载模块
自定义策略可减少不必要的访问检查,提升性能并增强针对性安全。
审计日志分析:
SELinux日志默认存储在/var/log/audit/audit.log
,使用以下工具定位性能问题:
ausearch
:查找特定类型的拒绝事件(如avc
表示访问控制违规);aureport
:生成统计报告(如违规次数最多的进程);audit2why
:解释拒绝原因,辅助调整策略。性能分析工具:
使用perf
、flamegraph
等工具分析系统调用开销,识别高负载进程或频繁的SELinux检查,针对性优化策略或调整内核参数。
通过调整内核参数优化SELinux性能,常见参数包括:
vm.swappiness
:减少交换分区使用(降低磁盘I/O),提升内存效率(默认值60,建议设为10-30);selinux
相关参数:如kernel.selinux=1
(启用SELinux)、kernel.selinux.enforcing=1
(强制模式),可通过sysctl
命令临时调整或写入/etc/sysctl.conf
永久生效。/etc/selinux/config
、自定义策略模块等文件,避免配置错误导致系统无法启动。