温馨提示×

ubuntu selinux怎么优化

小樊
44
2026-10-01 10:47:18
栏目: 智能运维

在 Ubuntu 上,SELinux 并不是默认启用的安全模块(Ubuntu 默认使用 AppArmor)。如果你在 Ubuntu 上使用了 SELinux(例如服务器加固、合规要求或迁移自 RHEL/CentOS),可以从启用、策略、性能、排错、日常运维几个方面进行优化。

下面按实用角度说明。


一、确认 Ubuntu 是否使用 SELinux

getenforce
sestatus
  • Disabled:未启用
  • Permissive:仅记录不拦截
  • Enforcing:强制模式

Ubuntu 默认是 Disabled(AppArmor 在跑)。


二、安装与启用 SELinux(如需要)

1. 安装 SELinux 基础组件

sudo apt update
sudo apt install selinux selinux-utils selinux-basics auditd

2. 激活 SELinux

sudo selinux-activate
sudo selinux-config-enforcing

重启后生效

3. 建议初次启用用 Permissive

sudo setenforce 0

或修改:

sudo nano /etc/selinux/config
SELINUX=permissive

观察日志稳定后再切 enforcing


三、SELinux 策略优化(核心)

1. 使用最小化策略(推荐)

Ubuntu 上常用:

  • targeted(仅限制服务)
  • 避免 mls / mcs(除非有强合规)
sudo nano /etc/selinux/config
SELINUXTYPE=targeted

2. 用 audit2why / audit2allow 精准放行

不要盲目关闭 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

✅ 优点:安全 + 稳定


3. 合理使用布尔值(booleans)

查看:

sudo getsebool -a

常用优化示例:

sudo setsebool -P httpd_can_network_connect on
sudo setsebool -P nis_enabled on

四、文件与端口标签优化

1. 文件上下文

ls -Z /var/www

修改目录标签:

sudo semanage fcontext -a -t httpd_sys_content_t "/data/web(/.*)?"
sudo restorecon -Rv /data/web

2. 端口标签

sudo semanage port -a -t http_port_t -p tcp 8080

五、性能优化建议(Ubuntu 特有)

1. 启用 auditd 但控制日志量

sudo systemctl enable auditd
sudo systemctl start auditd

限制日志:

sudo nano /etc/audit/auditd.conf
max_log_file = 50
num_logs = 5

2. 减少不必要的策略模块

sudo semodule -l
sudo semodule -r unused_module

3. 磁盘 I/O 优化

SELinux 会增加 stat / label 开销:

  • 使用 relabel 一次到位
  • 避免频繁 restorecon
  • 对容器 / 高密度服务谨慎启用

六、排错与运维优化

1. 快速定位问题

sudo ausearch -m avc -ts today
sudo journalctl -t setroubleshoot

2. 使用 setroubleshoot(可选)

sudo apt install setroubleshoot

七、Ubuntu 上 SELinux vs AppArmor 建议

✅ 推荐做法

  • 新系统:用 AppArmor(Ubuntu 原生)
  • 合规 / 迁移系统:用 SELinux
  • 不要同时强模式运行两者

八、总结优化清单 ✅

  • [ ] Permissive 起步,稳定后 Enforcing
  • [ ] 使用 targeted 策略
  • [ ] audit2allow 精准放行
  • [ ] 正确设置文件/端口标签
  • [ ] 控制 audit 日志量
  • [ ] 定期清理无用模块

如果你能补充:

  • Ubuntu 版本
  • 是否服务器 / 桌面
  • 是否跑 Docker / K8s / Nginx / MySQL

我可以给你针对性 SELinux 优化方案。

0 踩