温馨提示×

SELinux在Ubuntu中如何备份

小樊
40
2025-12-08 13:52:47
栏目: 智能运维

Ubuntu 中 SELinux 的备份与恢复

一 前置说明

  • Ubuntu 默认不启用 SELinux,常见做法是使用 AppArmor。如你的系统已手动启用或安装了 SELinux,备份的重点是策略与配置的可恢复性。
  • 快速检查与临时切换状态(备份前后都建议记录):
    • 查看模式:getenforce(返回 Enforcing/Permissive/Disabled
    • 临时切换:sudo setenforce 0(Permissive,重启失效)或 sudo setenforce 1(Enforcing)
    • 永久策略在重启后生效,相关配置位于 /etc/selinux/config(如 SELINUX=enforcing|permissive|disabled)。

二 备份策略与范围

  • 配置文件:备份 /etc/selinux/ 目录(包含策略与系统配置)。
  • 当前状态:记录 getenforce 的输出,便于恢复时核对。
  • 策略与模块(如已安装并启用 SELinux 策略工具):
    • 策略包与自定义模块:使用 semodule -l 列出已安装模块,必要时用 semodule -i/-r 管理;备份对应的 .pp(策略模块)与自定义策略源文件。
    • 布尔值:用 getsebool -a 导出当前布尔开关状态,便于比对与恢复。
    • 文件上下文与类型:如需完整迁移,可导出关键路径的上下文基线(如 semanage fcontext -l 的输出或关键目录的 ls -Z 清单),用于恢复时核对与修正。

三 备份步骤

    1. 创建备份目录并保存配置文件
    • mkdir -p ~/selinux-backup
    • sudo rsync -a /etc/selinux/ ~/selinux-backup/
    1. 记录当前运行状态
    • getenforce > ~/selinux-backup/selinux-mode.txt
    • date > ~/selinux-backup/backup-timestamp.txt
  • 3)(可选)导出已安装模块清单
    • semodule -l | sort > ~/selinux-backup/installed-modules.txt
  • 4)(可选)导出布尔值与关键上下文
    • getsebool -a > ~/selinux-backup/booleans.txt
    • 对关键目录导出上下文:ls -Z /etc /var/www /home > ~/selinux-backup/context-etc-varwww-home.txt
    1. 校验与异地保存
    • ls -lh ~/selinux-backup/
    • 将备份拷贝到外部介质或远程存储:rsync -a ~/selinux-backup/ /path/to/external/selinux-backup/
  • 说明:使用 rsync -a 可保留权限、属主与时间戳,便于一致恢复。

四 恢复步骤

    1. 将备份拷回系统
    • sudo rsync -a /path/to/backup/selinux-backup/ /etc/selinux/
    1. 核对并恢复运行模式
    • 查看记录:cat ~/selinux-backup/selinux-mode.txt
    • 如需调整:sudo setenforce 0|1(临时),或在 /etc/selinux/config 中设置 SELINUX=,随后重启生效。
  • 3)(可选)恢复策略模块
    • 参考 installed-modules.txt 逐一 sudo semodule -i module.pp 恢复;如模块已存在可先 semodule -r 模块名 再安装。
  • 4)(可选)核对布尔值与上下文
    • getsebool -a 对比 booleans.txt,不一致时按记录调整。
    • 如目录上下文异常,使用 restorecon -R -v /path 或按备份的 semanage fcontext 清单恢复。
    1. 验证
    • getenforcesestatusausearch -m avc -ts recent 检查是否有拒绝日志,确认策略生效与业务正常。

五 注意事项

  • 修改或恢复 SELinux 配置可能导致进程被拒绝访问,操作前建议在维护窗口进行,并准备回滚方案(如快照/备份)。
  • 若系统并未启用 SELinux,备份与恢复 /etc/selinux/ 通常没有实际效果;此时更应关注是否启用了 AppArmor 及其配置与日志。

0