Linux SELinux更新和维护指南
导读:Linux SELinux 更新与维护指南 一 版本与平台差异 不同发行版对 SELinux 的支持与默认策略不同:如 RHEL/CentOS/Fedora 默认启用并深度集成 SELinux;Ubuntu 默认使用 AppArmor,若...
Linux SELinux 更新与维护指南
一 版本与平台差异
- 不同发行版对 SELinux 的支持与默认策略不同:如 RHEL/CentOS/Fedora 默认启用并深度集成 SELinux;Ubuntu 默认使用 AppArmor,若需 SELinux 需额外安装与启用,且功能支持相对有限。进行更新与维护前务必确认平台与策略类型,避免误操作。对于 Ubuntu,可安装基础工具并在配置后重启切换模式。
二 日常维护与更新流程
- 状态与模式
- 查看状态:
getenforce、sestatus - 动态切换:
setenforce 0|1(仅在当前会话生效,重启后按配置文件生效) - 永久配置:编辑 /etc/selinux/config 的 SELINUX=enforcing|permissive|disabled,修改后需重启;从 enforcing 切换到 disabled 或反向切换必须重启系统。
- 查看状态:
- 策略与系统更新
- 发行版渠道更新:优先通过系统包管理器升级 SELinux 相关包(如 selinux-policy、selinux-policy-targeted、policycoreutils 等),保持与内核/系统组件版本一致。
- 依赖冲突处理:升级应用(如 Ceph)时可能要求更高的 selinux-policy-base 版本,需先升级基础策略包或按依赖顺序处理,避免“不满足依赖”导致安装失败。
- 上下文与端口维护
- 查看与修复文件/进程上下文:
ls -Z、ps -Z、chcon(临时)、semanage fcontext(永久)、restorecon -Rv(重打标签) - 端口类型管理:
semanage port -l | grep < svc>查看;semanage port -a -t < type> -p < proto> < port>添加;-d删除 - 布尔值调整:
getsebool -a、setsebool -P < bool> on|off(持久化) - 标签初始化:文件系统大规模变更或迁移后,创建 /.autorelabel 并重启以重新标记全部文件。
- 查看与修复文件/进程上下文:
三 故障排查与策略优化
- 日志与诊断
- 核心日志:/var/log/audit/audit.log(AVC 拒绝等);可用
ausearch -m avc -ts recent快速检索最近拒绝;aureport生成汇总报告 - 辅助工具:安装 setroubleshoot-server 可在 /var/log/messages 提供可操作的修复建议。
- 核心日志:/var/log/audit/audit.log(AVC 拒绝等);可用
- 从拒绝到修复的闭环
- 分析并生成策略建议:
grep < 关键词> /var/log/audit/audit.log | audit2why(解释原因)、audit2allow(生成允许规则) - 构建与加载模块:
audit2allow -M < name>生成 .pp 与 .te;semodule -i < name> .pp加载;如需仅“隐藏”拒绝而不放行,可用-D生成 dontaudit 规则 - 验证与回退:先在 Permissive 模式验证新模块是否覆盖问题且无副作用,再切回 Enforcing;必要时
semodule -r < name>卸载模块。
- 分析并生成策略建议:
四 变更管理与回退
- 变更窗口与备份
- 变更前备份关键配置与策略:
sestatus、semodule -l、semanage fcontext -l、semanage port -l;必要时导出自定义模块与本地策略源文件 - 灰度与回退预案:先在测试环境验证;生产环境建议短时将相关服务置于 Permissive 观察,确认无异常再恢复 Enforcing;若策略引入问题,立即
semodule -r < name>卸载或setenforce 0回退到宽容模式。
- 变更前备份关键配置与策略:
- 模块级维护
- 临时禁用模块而不卸载:
semodule -d < module>;恢复:semodule -e < module>(重启后仍然有效)。适用于排查发行版策略组件引发的问题。
- 临时禁用模块而不卸载:
五 附录 常用命令速查
| 目标 | 命令示例 |
|---|---|
| 查看状态 | getenforce、sestatus |
| 切换模式 | `setenforce 0 |
| 查看/修复上下文 | ls -Z、ps -Z、chcon -t <
type>
<
path>
、semanage fcontext -a -t <
type>
'<
path>
(/.*)?'、restorecon -Rv <
path>
|
| 端口管理 | `semanage port -l |
| 布尔值 | getsebool -a、`setsebool -P on |
| 日志分析 | ausearch -m avc -ts recent、aureport、audit2why、audit2allow -M <
name>
|
| 模块管理 | semodule -l、semodule -i <
name>
.pp、semodule -r <
name>
、`semodule -d |
| 全量重标记 | touch /.autorelabel &
&
reboot |
| 以上命令覆盖日常检查、修复与策略微调的高频场景,建议结合变更记录与回退方案使用。 |
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux SELinux更新和维护指南
本文地址: https://pptw.com/jishu/788767.html
