当前位置: 首页 > news >正文

SELinux 概述

SELinux 概述

概念

SELinux(Security-Enhanced Linux)是美国国家安全局在 Linux 开源社区的帮助下开发的一个强制访问控制(MAC,Mandatory Access Control)的安全子系统。它确保服务进程仅能访问它们应有的资源。

例如,当你在使用照片软件时,软件应该仅操作图片文件,而不能监听浏览器中的密码信息。

作用

  • SELinux 域限制:对服务程序的功能进行限制,确保服务程序不能做出越权行为。
  • SELinux 安全上下文:对文件资源的访问进行限制,确保只有相关的服务进程可以访问相应的文件。

SELinux 与传统权限的区别

  • 传统权限:属于自主访问控制(DAC,Discretionary Access Control),基于用户/用户组设置的权限来控制文件的访问权限。
  • SELinux:属于强制访问控制(MAC,Mandatory Access Control),它通过策略规则来制定访问控制,进程和文件的访问权限基于安全上下文,而不完全依赖于文件的所有者或进程的用户身份。

SELinux 工作原理

关键概念

  • 主体(subject):指向访问资源(文件或目录)的进程。
  • 目标(object):指被访问的资源(文件或目录)。
  • 策略(policy):一组规则,用于定义主体访问目标的权限。
  • 安全上下文(security context):用于标识进程、文件或目录的安全属性,决定了它们是否能够互相访问。

安全上下文的结构

安全上下文通常由以下四个字段组成:

身份标识(identity): 角色(role): 类型(type): 灵敏度(sensitivity)
  • 身份标识(identity):标识进程或文件的所有者。
  • 角色(role):区分进程与文件的角色,例如 system_r 代表进程,object_r 代表文件。
  • 类型(type):用于决定进程和文件是否能互相访问,基于策略规则匹配。
  • 灵敏度(sensitivity):定义安全级别,s0, s1, s2 等,数字越大,权限越高,管控越严格。

SELinux 默认策略

  • targeted:默认策略,限制网络服务(如 dhcpd, httpd, named 等),对本机系统限制较少。
  • mls:多级安全保护策略,限制更为严格。

SELinux 工作流程

当主体(进程)访问目标(文件或目录)时:

  1. SELinux 检查主体和目标的安全上下文是否匹配。
  2. 若安全上下文匹配并且符合策略规则,允许访问。
  3. 若不匹配,访问被拒绝并生成拒绝信息。

SELinux 模式

  • enforcing:强制模式,启用 SELinux 且拦截所有非法请求。
  • permissive:宽容模式,启用 SELinux,发出警告但不拦截。
  • disabled:关闭 SELinux。

SELinux 状态与配置

查看 SELinux 状态

  • 查看当前 SELinux 模式getenforce
  • 查看详细状态sestatus
  • 查看 SELinux 配置文件/etc/selinux/config

修改 SELinux 配置文件

bash# 编辑配置文件
vim /etc/selinux/config
# 修改 SELINUX 变量
SELINUX=enforcing  # 启用 SELinux
SELINUX=disabled   # 禁用 SELinux

临时修改 SELinux 模式

bash# 临时开启
setenforce 1
# 临时关闭
setenforce 0

恢复 SELinux 默认安全上下文

  • restorecon:恢复文件的默认安全上下文
restorecon -Rv /web1  # 对目录和子目录恢复安全上下文

修改 SELinux 安全上下文

  • chcon:手动修改目标的安全上下文
chcon -v -t httpd_sys_content_t /web1  # 设置类型为 httpd_sys_content_t

查看 SELinux 端口配置

# 查看 SELinux 允许的端口
semanage port -l

semanage 命令

semanage 用于管理 SELinux 策略,添加/修改/删除文件的默认安全上下文,管理网络端口等。

常用命令:

  • 查询默认安全上下文
semanage fcontext -l | grep /etc/passwd
  • 查询允许的端口

semanage port -l | grep http

SELinux 配置示例

使用 httpd 服务的 SELinux 设置

  1. 安装 httpd
yum install httpd -y
  1. 设置默认网页目录
mkdir /web1
  1. 修改目录安全上下文
chcon -Rv -t httpd_sys_content_t /web1
  1. 修改 httpd 配置
vim /etc/httpd/conf/httpd.conf
DocumentRoot "/web1"
<Directory "/web1">
  1. 重启 httpd 服务
systemctl restart httpd

相关文章:

  • 力扣-字符串
  • 【C++】User-Defined Data Type
  • HeidiSQL:一款免费的数据库管理工具
  • PHP 将图片url,写入到文件夹中,导出到zip下载到桌面
  • Nginx 部署 Vue.js 项目指南:结合慈云数据服务器的实践
  • ZYNQ-PL学习实践(二)按键和定时器控制LED闪烁灯
  • AJAX 数据库
  • 2025年渗透测试面试题总结-字某跳动-渗透测试实习生(题目+回答)
  • K8s 1.27.1 实战系列(二)安装集群并初始化
  • Webshell 入侵与防御全攻略
  • 9、什么是深拷贝?什么是浅拷贝?
  • 【三.大模型实战应用篇】【7.自然语言转SQL升级版:更智能的查询生成】
  • 22.代码随想录算法训练营第二十二天|77. 组合,216. 组合总和 III,17. 电话号码的字母组合
  • 北方算网联合发布全国产化DeepSeek一体机:开启国产AI算力新时代
  • 【分布式锁通关指南 06】源码剖析redisson可重入锁之加锁
  • 【15】蚂蚁链产品与服务
  • Scala 中的数据类型
  • 上海市闵行区数据局调研云轴科技ZStack,共探数智化转型新路径
  • koa-session设置Cookie后获取不到
  • 解决Spring Boot中LocalDateTime返回前端数据为数组结构的问题
  • 做网站是怎么赚钱的/指数基金定投技巧
  • 青岛代理记账公司现状/上海优化关键词的公司
  • 如何建设网站/网站提交收录入口链接
  • 网站开发饼图样式/营销策划方案怎么写
  • 怎么做网站一张图/体验式营销
  • 奉化云优化seo/seo公司的选上海百首网络