Linux SELinux如何增强系统安全
导读:核心原理 SELinux 是 Linux 的强制访问控制(MAC)机制,给系统中的主体(进程、用户)和客体(文件、端口、进程间通信等)打上安全上下文,格式通常为 user:role:type:level,其中决定访问权限的关键是 type...
核心原理
- SELinux 是 Linux 的强制访问控制(MAC)机制,给系统中的主体(进程、用户)和客体(文件、端口、进程间通信等)打上安全上下文,格式通常为 user:role:type:level,其中决定访问权限的关键是 type(进程域/文件类型)。策略依据这些标签实施最小权限控制,即使 root 进程也受约束。常见策略类型为 targeted(默认,仅保护关键服务)与 mls(多级安全,面向高安全场景)。
启用与运行模式
- 查看与切换模式
- 查看状态:
getenforce、sestatus - 临时切换:
setenforce 1(强制)或setenforce 0(宽容)
- 查看状态:
- 持久化配置
- 编辑 /etc/selinux/config:设置
SELINUX=enforcing|permissive|disabled,以及SELINUXTYPE=targeted|minimum|mls
- 编辑 /etc/selinux/config:设置
- 重要提示
- 从 disabled 切换到 enforcing 前务必先切到 permissive 并重启,以触发文件系统重新标记;直接用
setenforce无法从禁用切回启用。生产环境建议长期保持 enforcing。
- 从 disabled 切换到 enforcing 前务必先切到 permissive 并重启,以触发文件系统重新标记;直接用
上下文与策略管理
- 查看上下文
- 文件/目录:
ls -Z - 进程:
ps -Z
- 文件/目录:
- 文件上下文与端口管理
- 持久化添加路径规则:
semanage fcontext -a -t httpd_sys_content_t "/webdata(/.*)?" - 应用规则:
restorecon -R /webdata - 端口类型:
semanage port -a -t http_port_t -p tcp 8080
- 持久化添加路径规则:
- 布尔值开关
- 查看:
getsebool -a - 临时/持久化:
setsebool httpd_can_network_connect_db on或setsebool -P httpd_can_network_connect_db on
- 查看:
- 策略模块
- 列出模块:
semodule -l - 安装模块:
semodule -i mypol.pp
- 列出模块:
- 常用工具安装(RHEL/CentOS)
yum install -y policycoreutils-python-utils(提供semanage、restorecon等)
日志分析与最小权限修正
- 定位拒绝事件
- 查看最近 AVC:
ausearch -m avc -ts recent - 可读解释:
sealert -l "*"
- 查看最近 AVC:
- 安全修正流程
- 优先用
semanage fcontext+restorecon修正路径标签,或用布尔值精确放开必要能力 - 确需放行时,基于日志生成最小规则模块:
ausearch -m avc -ts recent | audit2allow -M mypol & & semodule -i mypol.pp - 验证与回滚:观察服务行为、审计日志与模块影响,必要时卸载模块
semodule -r mypol
- 优先用
- 原则:先用最小改动恢复功能,再逐步收敛权限,避免以宽泛规则替代精确策略。
常见场景与加固清单
- Web 服务
- 非默认目录发布:
semanage fcontext -a -t httpd_sys_content_t "/var/www/html(/.*)?" & & restorecon -R /var/www/html - 反向代理/对外连接:按需开启布尔值(如
httpd_can_network_connect),并仅对必要目标放行
- 非默认目录发布:
- 数据库客户端
- 应用连接数据库:优先使用专用类型与最小布尔值(如
httpd_can_network_connect_db),避免全局放开
- 应用连接数据库:优先使用专用类型与最小布尔值(如
- 自定义应用
- 为可执行文件设置专用类型,定义最小权限的域迁移与资源访问;必要时编写自定义模块并严格评审
- 日常运维
- 保持 enforcing;变更前在 permissive 验证;变更后用
restorecon恢复默认标签;定期审计 AVC 并优化布尔值与策略模块
- 保持 enforcing;变更前在 permissive 验证;变更后用
- 安全提示
- 禁用 SELinux 会显著降低防护能力;新增或迁移服务时,优先通过上下文与布尔值适配,其次再考虑定制模块,遵循最小权限原则。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux SELinux如何增强系统安全
本文地址: https://pptw.com/jishu/788773.html
