Linux SELinux

2023-11-10

Security-Enhanced Linux(SELinux)是一种Linux系统的安全体系结构,允许管理员对系统访问权限进行更精细的控制。它最初由美国国家安全局(NSA)开发,使用Linux安全模块(LSM)对Linux内核打了一系列补丁。

SELinux于2000年发布给开源社区,并于2003年集成到Linux内核中。

SELinux如何工作?

SELinux为系统上的应用、进程和文件定义访问控制。它使用安全策略,安全策略是一组规则,告诉SELinux什么可以或不能被访问,以执行策略允许的访问。

当主体(如应用或进程)发出请求访问对象(如文件)时,SELinux会检查访问向量高速缓存(AVC),其中缓存了主体和对象的权限。

如果SELinux无法根据缓存就访问权限做出决定,它会将请求发送到安全服务器。安全服务器会检查应用、进程和文件的安全上下文做出决定。安全上下文是根据SELinux策略数据库生成的。

如果权限被拒绝,avc: denied消息将出现在/var/log.messages

SELinux如何配置

有几种方式可以配置SELinux来保护系统。最常见的是针对策略(targeted policy)或多级安全(MLS)。

针对策略是默认选项,涵盖一系列进程、任务和服务。MLS可能非常复杂,通常仅政府组织使用。

可以通过查看/etc/sysconfig/selinux文件来确定系统应该运行的内容。该文件将包含一个部分,显示SELinux是否处于宽容模式强制模式禁用模式,以及应加载哪种策略。

  • /etc/sysconfig/selinux
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=enforcing
# SELINUXTYPE= can take one of three values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted 

SELinux的视角下,系统中的所有文件、进程和端口都有关联的标签。标签用于将这些受保护资源按照逻辑分类。内核会在启动过程中管理标签。

标签格式为:user:role:type:level(level可选)userrolelevel更常用于MLS等高级SELinux实现。对于目标策略,type是最重要的。

SELinux依据类型来执行策略。这些策略定义了是否此种类型的进程可以访问这种类型的文件?

常用用例

  • 隔离服务: 为不同的服务指定不同的域,实现进程隔离。例如,可以为httpd、mysqld等服务指定不同的域,防止它们相互访问。
  • 实现最小权限: 给不同的服务指定最小的权限,限制其访问权限范围。例如,可以禁止httpd访问用户home目录。
  • 保护系统文件: 定义不同的文件类型,并指定哪种类型的进程可以访问这些文件。例如,可以禁止普通用户进程访问系统日志文件。
  • 限制软件功能: 禁止某些软件的某些功能。例如,可以禁止sshd进行端口转发。
  • 防止未知漏洞利用:SELinux以策略为中心,当某个服务出现漏洞时,攻击者即使获取了服务权限,也无法轻易破坏系统或访问重要文件,因为策略可以限制服务的权限范围。
  • 审计与监控: 审计所有访问控制决策,可以根据审计日志监控谁在访问什么资源,检测异常活动。
  • 容器化: 为容器技术如Docker提供了安全机制,可以为不同容器指定安全上下文,实现容器隔离。

总之,是一个功能强大的mandatory access control机制。可以为系统提供全面的安全控制,应用于服务隔离、最小权限原理、重要文件保护、软件限制、漏洞利用防护、审计与监控等方面。结合容器等新技术,还可以实现微服务与容器安全。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux SELinux 的相关文章

随机推荐

  • Android Studio的升级

    一般大家自己电脑都可以自升级 直接在Android Studio中上面导航栏找到check for updates选项点击就行 而如果大家所在公司保密做的比较好 不允许访问外网就只能另想办法了 下面提供两种方案 一 增量更新 增量更新就是在
  • C++ std::thread多线程详解

    c 多线程详解 一 std thread线程创建 1 函数指针 2 Lambda函数 3 functor Funciton Object 4 非静态成员函数 5 静态成员函数 二 std thread线程停止 1 join函数 2 deta
  • 编译报错:error: no matching function for call to

    No matching function for call 表示当我们调用某些函数时 该函数的参数与函数定义的参数不匹配 因此 我们得到一个错误 No matching function for call 所以当我们继续向函数传递不正确类型
  • 小程序微信支付流程(商城余额支付,优惠券支付,积分抵消,微信支付)

    小程序微信支付的流程图 1 登录微信公众平台 开通微信支付功能 这是准备工作的第一步 确保小程序对应的支付功能已经开启 2 登录微信商户平台 该步骤需要获取两个参数 一个是商户号 一个是支付秘钥 如下图所示 注意秘钥自己要保护好 相当于支付
  • idea 2022.1 全新ui 配置

    idea 2022 1 全新ui 配置 版本 IntelliJ IDEA 2022 1 221 5080 210 build 其他的没有测过 以后再也不说大话了 丑陋 具体步骤 打开IDEA 双击shift 在弹出的搜索框中输入Regist
  • 程序部署到服务器服务无法启动问题

    问题描述 原先有一个程序在服务器正常运行 但是客户突然把重装了服务器系统 改为了 无限的未知 win2003 完整克隆版 V8 32位 虽然不太理解客户的心理 但是谁让人家是客户呢 老老实实重装环境部署程序 万幸一切正常 但是我想的太简单了
  • 关于2022年软件测试的5大趋势探讨

    随着数字化技术应用的广泛普及 业界对于软件测试的要求也在持续迭代与增加 当前 越来越多的企业和组织都相继采用了Agile 敏捷 和DevOps之类的软件开发方法 以鼓励和促进测试团队和开发团队之间的紧密协作 根据Gartner的预测 到20
  • deepin v20安装mysql

    deepin v20 换源和安装mysql 由于deepin v20不能直接安装mysql所以先进行换源 更换成阿里源 这样以后速度可以更快 修改文件 sudo vim etc apt sources list 删除内容 并添加以下内容 G
  • DDlog语言特征

    原文地址 这里写链接内容 DDlog是一种语法为datalog式 用来编写DeepDive应用的语言 一个ddlog程序会被编译成deepdive格式下的配置文件 我们通常用这个文件来运行我们的应用 一个ddlog程序由一组声明组成 这些声
  • 【Doxygen】Vscode 插件 DoxyGen Documentation Generator C语言详细设置

    DoxyGen Documentation Generatorc 这个VsCode插件可以设置C C 的doxygen格式自动填充 本文只介绍C语言的json文件配置 触发方式 doxdocgen c triggerSequence 输入
  • Eclipse查看JDK源码

    1 找到jdk 2 配置rt的源码
  • 关于Connection aborted等问题的解决

    错误类型 在爬虫中报如下的错误 requests exceptions ConnectionError Connection aborted RemoteDisconnected Remote end closed connection w
  • Win10远程桌面连接怎么用?(远程桌面连接教程)

    怎么开启远程桌面连接 电脑远程桌面连接怎么用 要使用远程桌面控制电脑 您需先在电脑上开启远程桌面连接并且两台电脑还需在同一个局域网中 否则您的设置端口转发才能使用远程桌面连 那么怎么开启远程桌面连接呢 具体操作步骤如下 步骤1 在Win10
  • Redis的String常用命令

    Redis 基础知识 不想key被更改 再key的后面加上nx eg 127 0 0 1 6379 gt set s 11 OK 127 0 0 1 6379 gt set ss 111 OK 127 0 0 1 6379 gt renam
  • Jest 单元测试术语解析:describe、it、expect、test

    jest测试代码片段 describe number test gt it 1 is true gt expect 1 toBeTruthy test 2 is true gt expect 2 toBeTruthy describe 描述
  • Vue研习录(08)——Vue引入Swiper知识详解及示例分析

    Vue研习录 08 Vue引入Swiper知识详解及示例分析 版权声明 一 Swiper 版权声明 本文原创作者 清风不渡 博客地址 https blog csdn net WXKKang 重拾前端记忆 记录学习笔记 现在进入Vue引入Sw
  • uniapp的webview实现左滑返回上一个页面

    uniapp默认左滑是关闭整个webview 而不是关闭当前页 实现思路 拦截webview的url跳转操作 将新url用webview组件重新打开 当左滑的时候 默认关闭的就是当前webview 继而跳转到上一次的页面中
  • 100 道 Linux 常见面试题,慢慢读~

    1 Linux 概述 1 1 什么是 Linux Linux 是一套免费使用和自由传播的类 Unix 操作系统 是一个基于 POSIX 和 Unix 的多用户 多任务 支持多线程和多 CPU 的操作系统 它能运行主要的 Unix 工具软件
  • 关于对话机器人,你需要了解这些技术

    对话系统 对话机器人 本质上是通过机器学习和人工智能等技术让机器理解人的语言 它包含了诸多学科方法的融合使用 是人工智能领域的一个技术集中演练营 图1给出了对话系统开发中涉及到的主要技术 对话系统技能进阶之路 图1给出的诸多对话系统相关技术
  • Linux SELinux

    Security Enhanced Linux SELinux 是一种Linux系统的安全体系结构 允许管理员对系统访问权限进行更精细的控制 它最初由美国国家安全局 NSA 开发 使用Linux安全模块 LSM 对Linux内核打了一系列补