SELinux 在传统 Linux 所有权和权限之外增加了基于策略的控制。本实践课程会教你检查策略状态、识别常见不匹配,并调查服务拒绝,而不是简单地把 SELinux 本身视为故障。
你将比较 enforcing 与 permissive 模式,追踪文件标签,修复错误上下文,启用受策略支持的布尔值,并读取 AVC 审计证据。最后的挑战要求你诊断 Nginx 无法绑定 8088 端口的原因,根据拒绝记录生成并安装针对性的策略模块,再验证服务响应。
你将学到什么
- 检查 SELinux 状态,并区分运行时模式与启动配置
- 读取文件安全上下文并识别策略使用的类型字段
- 说明移动文件为何可能为新位置保留不合适的标签
- 比较当前上下文与预期上下文,并使用
restorecon修复单个或递归标签不匹配 - 查找、永久启用并验证服务专用的 SELinux 布尔值
- 定位 Nginx 的 AVC 拒绝记录并解读受阻的
name_bind操作 - 使用
audit2allow解释拒绝并生成自定义策略模块 - 安装生成的模块并验证 Nginx 在非标准端口上的服务
本课程适合谁
本中级课程适合已经理解常规 Unix 权限,并希望获得 SELinux 运维与故障排查实践入门的 Linux 管理员、DevOps 从业者和安全学习者。
前置要求: 熟悉 Linux Shell、文件与权限、sudo、systemctl、文本编辑、端口及基本 Web 服务概念。无需具备策略编写经验。
学习环境: 预置 SELinux 命令、策略数据、审计证据、Nginx 和管理员权限的 Linux 终端。内核或容器限制可能阻止真实的强制模式切换,因此部分拒绝会被模拟,但仍会练习相同的检查与修复命令。
常见问题
课程会教我在应用失败时关闭 SELinux 吗?
不会。permissive 模式只作为临时诊断概念使用。课程强调先检查标签、受支持的布尔值和审计记录,再进行针对性的策略调整。
我会实践哪些类型的 SELinux 修复?
你会恢复策略定义的文件上下文,永久启用 httpd_can_network_connect,并根据 Nginx 端口绑定拒绝生成和安装小型策略模块。课程不涵盖广泛的 SELinux 策略语言编写。
课程是否把 audit2allow 当作所有拒绝问题的答案?
不会。你会先检查它的建议,并考虑标签、布尔值或标准策略调整是否更合适。最终挑战明确要求生成模块;使用 semanage port 管理端口类型等替代方法不在本课程的实践范围内。





