温馨提示×

怎样迁移ubuntu selinux策略

小樊
43
2026-09-28 13:05:01
栏目: 智能运维

在 Ubuntu 上“迁移 SELinux 策略”通常有以下几种场景,我按常见需求分别说明,你可以对号入座。


一、先说明:Ubuntu 默认情况

  • Ubuntu 默认使用 AppArmor,不是 SELinux
  • 如果系统已启用 SELinux,通常是:
    • 手动安装 selinux / selinux-basics
    • 或使用了 CentOS/RHEL 风格的策略迁移

确认是否启用 SELinux:

getenforce
sestatus

二、迁移 SELinux 策略的几种典型场景

场景 1:从一台 SELinux 机器迁移到另一台(同发行版)

直接复制策略文件

SELinux 策略一般在:

/etc/selinux/
/etc/selinux/targeted/

迁移步骤:

# 原机器
tar czf selinux-policy.tar.gz /etc/selinux

# 目标机器
scp selinux-policy.tar.gz user@target:/tmp
tar xzf /tmp/selinux-policy.tar.gz -C /

然后:

restorecon -Rv /

⚠️ 注意:

  • 内核版本、SELinux 版本需一致
  • 建议只迁移 targeted 策略

场景 2:迁移自定义 SELinux 模块(.pp 文件)

如果你自己写过的策略模块:

# 导出模块
semodule -l | grep your_module
semodule -E your_module

# 会生成
your_module.pp

迁移:

scp your_module.pp target:/tmp
semodule -i /tmp/your_module.pp

查看:

semodule -l | grep your_module

场景 3:从 CentOS/RHEL 迁移策略到 Ubuntu

不推荐直接复制

原因:

  • Ubuntu SELinux 支持不完整
  • 策略语义可能不兼容

推荐方式:

  1. 提取策略源码(.te 文件)
  2. 在 Ubuntu 重新编译

步骤:

# 在源系统
semodule -E myapp
# 得到 myapp.te

# 在 Ubuntu
apt install selinux-policy-dev
make -f /usr/share/selinux/devel/Makefile myapp.pp
semodule -i myapp.pp

场景 4:从 AppArmor 迁移到 SELinux(反向迁移)

这是策略重写,不是文件复制。

思路:

  • AppArmor:/etc/apparmor.d/
  • SELinux:写 .te 策略

示例:

policy_module(myapp, 1.0)

type myapp_t;
type myapp_exec_t;
init_daemon_domain(myapp_t, myapp_exec_t)

三、迁移后必须做的事

# 重置文件标签
restorecon -Rv /

# 检查拒绝日志
ausearch -m AVC -ts recent

四、建议

  • Ubuntu 上不建议长期使用 SELinux
  • 如果是容器 / 云环境,优先用:
    • AppArmor
    • 或容器自身安全策略

如果你能告诉我:

  • 原系统(CentOS / Ubuntu?)
  • 目标系统
  • 是系统策略还是自定义模块

我可以给你更精确的迁移命令。

0 踩