在 Ubuntu 上,SELinux 并不是默认启用的安全模块(Ubuntu 默认使用 AppArmor)。如果你在 Ubuntu 上使用了 SELinux(例如服务器加固、合规要求或迁移自 RHEL/CentOS),可以从启用、策略、性能、排错、日常运维几个方面进行优化。
下面按实用角度说明。
getenforce
sestatus
Disabled:未启用Permissive:仅记录不拦截Enforcing:强制模式Ubuntu 默认是 Disabled(AppArmor 在跑)。
sudo apt update
sudo apt install selinux selinux-utils selinux-basics auditd
sudo selinux-activate
sudo selinux-config-enforcing
重启后生效
sudo setenforce 0
或修改:
sudo nano /etc/selinux/config
SELINUX=permissive
观察日志稳定后再切 enforcing
Ubuntu 上常用:
targeted(仅限制服务)mls / mcs(除非有强合规)sudo nano /etc/selinux/config
SELINUXTYPE=targeted
不要盲目关闭 SELinux。
sudo apt install policycoreutils-python-utils
sudo ausearch -m avc -ts recent
sudo audit2why
sudo audit2allow -a
生成策略模块:
sudo audit2allow -a -M myapp
sudo semodule -i myapp.pp
✅ 优点:安全 + 稳定
查看:
sudo getsebool -a
常用优化示例:
sudo setsebool -P httpd_can_network_connect on
sudo setsebool -P nis_enabled on
ls -Z /var/www
修改目录标签:
sudo semanage fcontext -a -t httpd_sys_content_t "/data/web(/.*)?"
sudo restorecon -Rv /data/web
sudo semanage port -a -t http_port_t -p tcp 8080
auditd 但控制日志量sudo systemctl enable auditd
sudo systemctl start auditd
限制日志:
sudo nano /etc/audit/auditd.conf
max_log_file = 50
num_logs = 5
sudo semodule -l
sudo semodule -r unused_module
SELinux 会增加 stat / label 开销:
relabel 一次到位restoreconsudo ausearch -m avc -ts today
sudo journalctl -t setroubleshoot
sudo apt install setroubleshoot
✅ 推荐做法
如果你能补充:
我可以给你针对性 SELinux 优化方案。