SELinux与Ubuntu默认安全机制(AppArmor)的配合/冲突解决
Ubuntu默认采用AppArmor作为内核级强制访问控制(MAC)机制,而SELinux是另一种主流MAC方案。两者设计理念相似但实现方式差异较大(AppArmor基于路径名,SELinux基于标签),同时启用可能导致规则冲突(如重复拦截或互相覆盖)。若需使用SELinux,建议先彻底禁用AppArmor:通过systemctl stop apparmor
停止服务,apt purge apparmor
卸载软件包,避免两者争夺系统安全控制权。禁用后,再按照标准流程安装SELinux工具包(selinux-basics
、auditd
)、激活SELinux(selinux-activate
)并设置/etc/selinux/config
中的SELINUX=enforcing
模式,重启系统使配置生效。
SELinux与防火墙(UFW/iptables)的协同配置
Ubuntu常用UFW(Uncomplicated Firewall,基于iptables的前端工具)管理网络流量,其与SELinux的配合需遵循“规则互补”原则:
setenforce 1
启用强制模式,使用semanage fcontext
调整文件上下文(如semanage fcontext -a -t httpd_sys_content_t "/var/www(/.*)?"
),再用restorecon
应用上下文;同时用UFW设置默认拒绝入站、允许出站的策略,并开放必要端口(如ufw allow 22/tcp
)。SELinux与日志服务(rsyslog)的配合
rsyslog是Ubuntu系统日志的核心服务,其与SELinux配合可实现“安全事件可追溯”:
/var/log/audit/audit.log
(若启用auditd)或/var/log/messages
中。需通过semanage port
命令为rsyslog添加syslog端口权限(如semanage port -a -t syslogd_port_t -p tcp 514
),确保rsyslog能接收SELinux日志。/etc/rsyslog.conf
中添加local6.* /var/log/selinux.log
),便于后续用ausearch
(分析AVC日志)、audit2why
(解释拒绝原因)等工具排查安全事件。SELinux策略定制与优化
为提升SELinux与Ubuntu系统的配合效果,需通过策略定制平衡安全性与可用性:
httpd_can_network_connect_db
控制Apache是否允许连接数据库)。通过getsebool -a
查看所有布尔值,用setsebool
修改(如setsebool httpd_can_network_connect_db on
),无需重启系统即可生效。audit2allow
工具生成自定义策略模块(如ausearch -m avc -ts recent | audit2allow -M myapp
,生成.te
文件后编译为.pp
文件,再用semodule -i
安装)。ausearch -m avc -ts recent
),识别高频拒绝事件并优化策略(如添加必要的类型转换规则);调整内核参数(如kernel.selinux=1
)减少不必要的安全检查,降低对系统性能的影响。