16.5 【Linux】SELinux 初探

这篇具有很好参考价值的文章主要介绍了16.5 【Linux】SELinux 初探。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

16.5.1 什么是 SELinux

SELinux是“ Security Enhanced Linux ”的缩写,字面上的意义就是安全强化的 Linux。

当初设计的目标:避免资源的误用

SELinux 是由美国国家安全局 (NSA) 开发的,当初开发这玩意儿的目的是因为很多企业界发现, 通常系统出现问题的原因大部分都在于“内部员工的资源误用”所导致的,实际由外部发动的攻击反而没有这么严重。 那么什么是“员工资源误用”呢?举例来说,如果有个不是很懂系统的系统管理员为了自己设置的方便,将网页所在目录 /var/www/html/ 的权限设置为drwxrwxrwx 时,你觉得会有什么事情发生?

传统的文件权限与帐号关系:自主式存取控制, DAC

系统的帐号主要分为系统管理员 (root) 与一般用户,而这两种身份能否使用系统上面的文件资源则与 rwx 的权限设置有关。 不过你要注意的是,各种权限设置对 root 是无效的。因此,当某个程序想要对文件进行存取时, 系统就会根据该程序的拥有者/群组,并比对文件的权限,若通过权限检查,就可以存取该文件了。

这种存取文件系统的方式被称为“自主式存取控制 (Discretionary Access Control, DAC)”,基本上,就是依据程序的拥有者与文件资源的 rwx 权限来决定有无存取的能力。 不过这种DAC 的存取控制有几个困扰,那就是:

root 具有最高的权限:如果不小心某支程序被有心人士取得, 且该程序属于 root 的权限,那么这支程序就可以在系统上进行任何资源的存取。

使用者可以取得程序来变更文件资源的存取权限:如果你不小心将某个目录的权限设置为 777 ,由于对任何人的权限会变成 rwx ,因此该目录就会被任何人所任意存取。

以政策规则订定特定程序读取特定文件:委任式存取控制, MAC

我们知道 DAC 的困扰就是当使用者取得程序后,他可以借由这支程序与自己默认的权限来处理他自己的文件资源。 万一这个使用者对 Linux 系统不熟,那就很可能会有资源误用的问题产生。为了避免 DAC 容易发生的问题,因此 SELinux 导入了委任式存取控制(Mandatory Access Control, MAC) 的方法。

16.5 【Linux】SELinux 初探,Linux,linux,运维,服务器

                       图16.5.1、使用 DAC/MAC 产生的不同结果,以 Apache 为例说明

左图是没有 SELinux 的 DAC 存取结果,apache 这只 root 所主导的程序,可以在这三个目录内作任何文件的新建与修改,右边则是加上 SELinux 的 MAC 管理的结果,SELinux 仅会针对 Apache 这个“ process ”放行部份的目录, 其他的非正规目录就不会放行给 Apache 使用。

16.5.2 SELinux 的运行模式

SELinux 是通过 MAC 的方式来控管程序,他控制的主体是程序, 而目标则是该程序能否读取的“文件资源”!

主体 (Subject): SELinux 主要想要管理的就是程序,因此你可以将“主体”跟本章谈到的 process 划上等号;

目标 (Object): 主体程序能否存取的“目标资源”一般就是文件系统。因此这个目标项目可以等文件系统划上等号;

政策 (Policy): 由于程序与文件数量庞大,因此 SELinux 会依据某些服务来制订基本的存取安全性政策。这些政策内还会有详细的规则 (rule) 来指定不同的服务开放某些资源的存取与否。在目前的 CentOS 7.x 里面仅有提供三个主要的政策,分别是:

targeted:针对网络服务限制较多,针对本机限制较少,是默认的政策;

minimum:由 target 修订而来,仅针对选择的程序来保护!

mls:完整的 SELinux 限制,限制方面较为严格。建议使用默认的 targeted 政策即可。

安全性本文 (security context): 我们刚刚谈到了主体、目标与政策面,但是主体能不能存取目标除了政策指定之外,主体与目标的安全性本文必须一致才能够顺利存取。 这个安全性本文 (security context) 有点类似文件系统的 rwx。

由于 SELinux 重点在保护程序读取文件系统的权限,因此我们将上述的几个说明搭配起来,绘制成下面的流程图,比较好理解:

              16.5 【Linux】SELinux 初探,Linux,linux,运维,服务器

                                           图16.5.2、SELinux 运行的各元件之相关性

上图的重点在“主体”如何取得“目标”的资源存取权限! 由上图我们可以发现,(1)主体程序必须要通过 SELinux 政策内的规则放行后,就可以与目标资源进行安全性本文的比对,(2)若比对失败则无法存取目标,若比对成功则可以开始存取目标。问题是,最终能否存取目标还是与文件系统的 rwx 权限设置有关。如此一来,加入了 SELinux 之后,出现权限不符的情况时,你就得要一步一步的分析可能的问题了!

安全性本文 (Security Context)

CentOS 7.x 的 target 政策已经帮我们制订好非常多的规则了,因此你只要知道如何打开/关闭某项规则的放行与否即可。 那个安全性本文比较麻烦!因为你可能需要自行设置文件的安全性本文呢!为何需要自行设置啊? 举例来说,你不也常常进行文件的 rwx 的重新设置吗?这个安全性本文你就将他想成 SELinux 内必备的 rwx 就是了。

安全性本文存在于主体程序中与目标文件资源中。程序在内存内,所以安全性本文可以存入是没问题。 那文件的安全性本文是记录在哪里呢?事实上,安全性本文是放置到文件的inode 内的,因此主体程序想要读取目标文件资源时,同样需要读取 inode , 这 inode 内就可以比对安全性本文以及 rwx 等权限值是否正确,而给予适当的读取权限依据。

那么安全性本文到底是什么样的存在呢?我们先来看看 /root 下面的文件的安全性本文好了。观察安全性本文可使用“ ls -Z ”去观察如下:

16.5 【Linux】SELinux 初探,Linux,linux,运维,服务器

如上所示,安全性本文主要用冒号分为三个字段,这三个字段的意义为:

16.5 【Linux】SELinux 初探,Linux,linux,运维,服务器

身份识别 (Identify):

相当于帐号方面的身份识别!主要的身份识别常见有下面几种常见的类型:

unconfined_u:不受限的用户,也就是说,该文件来自于不受限的程序所产生的!一般来说,我们使用可登陆帐号来取得 bash 之后, 默认的 bash 环境是不受 SELinux 管制的,因为 bash 并不是什么特别的网络服务!因此,在这个不受 SELinux 所限制的 bash程序所产生的文件, 其身份识别大多就是 unconfined_u 这个“不受限”用户。

system_u:系统用户,大部分就是系统自己产生的文件。

基本上,如果是系统或软件本身所提供的文件,大多就是 system_u 这个身份名称,而如果是我们用户通过 bash 自己创建的文件,大多则是不受限的 unconfined_u 身份~如果是网络服务所产生的文件,或者是系统服务运行过程产生的文件,则大部分的识别就会是 system_u。

系统安装主动产生的 anaconda-ks.cfs 及 initial-setup-ks.cfg 就会是 system_u,而我们自己从网络上面抓下来的 regular_express.txt 就会是 unconfined_u 这个识别。

角色 (Role):

通过角色字段,我们可以知道这个数据是属于程序、文件资源还是代表使用者。一般的角色有:

object_r:代表的是文件或目录等文件资源,这应该是最常见的

system_r:代表的就是程序

类型 (Type)

在默认的 targeted 政策中, Identify 与 Role 字段基本上是不重要的!重要的在于这个类型(type) 字段! 基本上,一个主体程序能不能读取到这个文件资源,与类型字段有关!而类型字段在文件与程序的定义不太相同,分别是:

type:在文件资源 (Object) 上面称为类型 (Type);

domain:在主体程序 (Subject) 则称为领域 (domain) 了

domain 需要与 type 搭配,则该程序才能够顺利的读取文件资源。

程序与文件 SELinux type 字段的相关性

16.5 【Linux】SELinux 初探,Linux,linux,运维,服务器

基本上,这些对应数据在 targeted 政策下的对应如下:

16.5 【Linux】SELinux 初探,Linux,linux,运维,服务器

如上所述,在默认的 target 政策下,其实最重要的字段是类型字段 (type), 主体与目标之间是否具有可以读写的权限,与程序的 domain 及文件的 type 有关!这两者的关系我们可以使用 crond 以及他的配置文件来说明! 亦即是 /usr/sbin/crond, /etc/crontab, /etc/cron.d等文件来说明。

16.5 【Linux】SELinux 初探,Linux,linux,运维,服务器

      图16.5.3、主体程序取得的 domain 与目标文件资源的 type 相互关系以 crond 为例

上图的意义我们可以这样看的:

1. 首先,我们触发一个可执行的目标文件,那就是具有 crond_exec_t 这个类型的/usr/sbin/crond 文件;

2. 该文件的类型会让这个文件所造成的主体程序 (Subject) 具有 crond 这个领域(domain), 我们的政策针对这个领域已经制定了许多规则,其中包括这个领域可以读取的目标资源类型;

3. 由于 crond domain 被设置为可以读取 system_cron_spool_t 这个类型的目标文件(Object), 因此你的配置文件放到 /etc/cron.d/ 目录下,就能够被 crond 那支程序所读取了;

4. 但最终能不能读到正确的数据,还得要看 rwx 是否符合 Linux 权限的规范!

上述的流程告诉我们几个重点,第一个是政策内需要制订详细的 domain/type 相关性;第二个是若文件的 type 设置错误, 那么即使权限设置为 rwx 全开的 777 ,该主体程序也无法读取目标文件资源。

16.5 【Linux】SELinux 初探,Linux,linux,运维,服务器

从上面的测试案例来看,我们的配置文件确实没有办法被 crond 这个服务所读取喔!而原因在登录文件内就有说明, 主要就是来自 SELinux 安全本文 (context) type 的不同所致。文章来源地址https://www.toymoban.com/news/detail-659183.html

到了这里,关于16.5 【Linux】SELinux 初探的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Linux运维】shell脚本检查服务器内存和CPU利用率

    在管理服务器时候写了一个 shell脚本,在服务上实现每天凌晨3点查系统的指定文件夹下的容量大小,如果超过10G就要删除3天前的内容,还要时刻查询内存和cpu利用率,如果超过80%就要提示用户出现过载 将以上代码保存为一个.sh文件,然后通过crontab在每天凌晨3点运行即可:

    2024年02月09日
    浏览(65)
  • Linux服务器常见运维性能测试(1)综合跑分unixbench、superbench

    最近需要测试一批服务器的相关硬件性能,以及在常规环境下的硬件运行稳定情况,需要持续拷机测试稳定性。所以找了一些测试用例。本次测试包括在服务器的高低温下性能记录及压力测试,高低电压下性能记录及压力测试,常规环境下CPU满载稳定运行的功率记录。 这个系

    2024年02月04日
    浏览(75)
  • Linux本地部署1Panel服务器运维管理面板并实现公网访问

    1Panel 是一个现代化、开源的 Linux 服务器运维管理面板。高效管理,通过 Web 端轻松管理 Linux 服务器,包括主机监控、文件管理、数据库管理、容器管理等 下面我们介绍在Linux 本地安装1Panel 并结合cpolar 内网穿透工具实现远程访问1Panel 管理界面 执行如下命令一键安装 1Panel: 安

    2024年02月04日
    浏览(92)
  • [1Panel]开源,现代化,新一代的 Linux 服务器运维管理面板

    本期测评试用一下1Panel这款面板。1Panel是国内飞致云旗下开源产品。整个界面简洁清爽,后端使用GO开发,前端使用VUE的Element-Plus作为UI框架,整个面板的管理都是基于docker的,想法很先进。官方还提供了视频的使用教程,本期为大家按照本专栏的基本内容进行多方面的测评。

    2024年02月07日
    浏览(89)
  • 华为云云耀云服务器L实例评测 | Linux系统宝塔运维部署H5游戏

    本章节内容,我们主要介绍华为云耀服务器L实例,从云服务的优势讲起,然后讲解华为云耀服务器L实例资源面板如何操作,如何使用宝塔运维服务,如何使用运维工具可视化安装nginx,最后部署一个自研的H5的小游戏(6岁的小朋友玩的很开心😁)。 前端的同学如果想把自己

    2024年02月07日
    浏览(56)
  • Linux服务器常见运维性能测试(3)CPU测试super_pi、sysbench

    最近需要测试一批服务器的相关硬件性能,以及在常规环境下的硬件运行稳定情况,需要持续拷机测试稳定性。所以找了一些测试用例。本次测试包括在服务器的高低温下性能记录及压力测试,高低电压下性能记录及压力测试,常规环境下CPU满载稳定运行的功率记录。 这个系

    2024年02月02日
    浏览(52)
  • Linux基本网页访问--防火墙、服务管理、selinux强制访问

    正常访问外部网络需要进行4部操作操作:         1、开启httpd服务systemctl restart httpd         2、关闭防火墙服务 systemctl stop firewalld         3、访问数据库时,需要开启数据库的服务systemctl restart mariadb         4、关闭强制访问  setenforce 0 1、防火墙管理    

    2024年02月06日
    浏览(44)
  • SELinux、SELinux运行模式、破解Linux系统密码、firewalld防火墙介绍、构建基本FTP服务、systemd管理服务、设置运行模式

    作用:负责域名解析的服务器,将域名解析为IP地址 /etc/resolv.conf:指定DNS服务器地址配置文件 ip命令(Linux最基础的命令) 1.查看IP地址 2.临时添加IP地址 3.删除临时IP地址 ping 命令,测网络连接 -c 指定ping包的个数 •常见的日志文件 /var/log/messages 记录内核消息、各种服务的公

    2024年01月18日
    浏览(43)
  • 16.5 参考文献——深度学习定位

    同济大学 Zhao Y, Gong W, Li L, et al. An Efficient and Robust Fingerprint Based Localization Method for Multi Floor Indoor Environment[J]. IEEEa Internet of Things Journal, 2023. 利用深度神经网络(DNN)模型来解决地板识别和位置估计问题。为了解决多楼层识别问题, Jang等人[18] 设计了一种基于 CNN 的识别模型,该

    2024年01月23日
    浏览(47)
  • 好东西,iOS 16.5+ 系统加速工具,不用越狱也行

    说重点:Cowabunga Lite 工具终于发布了,推出 1.0 版本,暂时只支持 macos 系统,可以修改运营商名称以及桌面图标美化,重点还可以修改启动App动画速度,不需要越狱也能修改。 大家期待已久的 Cowabunga Lite 工具终于发布了,它支持  iOS 15.0 - 16.5  系统,实际上它可以无视系统

    2024年02月11日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包