第六章SELinux

1.概述

1.1.概念

SELinux (Security-Enhanced Linux)是美国国家安全局在 Linux 开源社区的帮助下开发的-个强制访问控制(MAC,Mandatory Access Control)的安全子系统,用于各个服务进程都受到约束,使其仅获取到本应获取的资源

**例如,**电脑上下载了一个美图软件,当您全神贯注地使用它给照片进行美颜的时候,它却在后台默默监听着浏览器中输入的密码信息,而这显然不应该是它应做的事情

1.2.作用:

**SELinux 域限制:**对服务程序的功能进行限制,以确保服务程序做不了出格的事情。

**SELinux安全上下文:**对文件资源的访问限制,确保文件资源只能被其所属的服务程序访问

1.3.SELinux与传统的权限区别

传统的文件权限与账号的关系: 属于自主访问控制DAC (Discretionary Access Control),某个进程想要对文件进行访问时,系统就会根据该进程的所有者/用户组,并比较文件的权限,若通过权限检查,就可以访问该文件,注意:各种权限设置对root用户是无效的

**SELinux的以策略规则制定特定程序读取特定文件:**属于强制访问控制DAC(MandatoryAccess Control),可以针对特定的进程与特定的文件资源来进行权限的控制,即使你是root在使用不同的进程时,你所能取得的权限并不一定是root,而得要看当时该进程的设置而定,则就可以针对进程来进行访问控制

2.SELinux工作原理

2.1.名词解释

2.1.1.主体(Subject)

主体就是想要访问文件或目录资源的进程

进程得到资源流程:由用户调用命令,由命令产生进程,由进程去访问文件或目录资源

自主访问控制系统中(Linux 默认权限中),靠权限控制的主体是用户

强制访问控制系统中 (SELinux 中),靠策略规则控制的主体则是进程

2.1.2.目标(Object)

目标就是需要访问的文件或目录资源

2.1.3策略 (Policy)

Linux 系统中进程与文件的数量庞大,限制进程是否可以访问文件的 SELinux 规则数量就更加烦琐,如果每个规则都需要管理员手工设定,那么SELinux 的可用性就会极低,所以SELinux 默认定义了两个策略来制订规则

2个默认策略

-targeted: 默认策略, 用于限制网络服务 (dhcpd,httpd,named,nscd,ntpd.0portmap,snmpd,squid,以及 syslogd),对本机系统的限制极少

-mls:多级安全保护策略 ,该策略限制 更为严格.

2.1.4.安全上下文(Security Context)

所有进程、文件和目录都有自己的安全上下文

进程是否能够访问文件或目录,就要其安全上下文是否匹配

例: 找对象时,男人看作主体,女人就是目标,男人是否可以追到女人 (主体是否可以访问目标),主要看两人的性格是否合适(主体和目标的安全上下文是否匹配),但两个人的性格是否合适,是需要靠生活习惯、为人处世、家庭环境等具体的条件来进行判断的(安全上下文是否匹配是需要通过策略中的规则来确定的)

关系图:

解释:

当主体(进程)访问目标(文件)时,首先和 SELinux 中定义好的策略进行匹配

若符合定义的规则,且主体的安全上下文和目标的安全上下文匹配则允许访问文件

若安全上下文比较失败,则拒绝访问,并通过 AVC (Access Vector Cache,访问向量缓存,主要用于记录所有和 SELinux 相关的访问统计信息)生成拒绝访问信息

注意:最终是否可以访问到目标文件,还要匹配产生进程 (主体)的用户是否对目标文件拥有合理的rwx权限

2.2文件安全上下文查看

2.2.1.命令:

[root@server ~]# ls -Z

2.2.2.分析

[root@server ~]# ls -Z # 查看安全上下文

system_u:object_r:admin_home_t:s0 anaconda-ks.cfg

安全上下文用冒号分为四个字段

seinfo 命令:

作用: 查询身份、角色等信息,需要安装才可使用

[root@server ~]# yum install setools-console

格式: seinfo -参数

参数:

-u: 列出SELinux中所有的身份 (user)

-r: 列出SELinux中所有的角色 (role)

-t: 列出SELinux中所有的类型 (type);

-b: 列出所有的布尔值 (也就是策略中的具体规则名称)

-x: 显示更多的信息:

身份标识 (Identify): 相当于账号方面的身份标识,有三种类型:

system_u:系统用户身份,其中"u"代表user

root: 安全上下文的身份是 root,默认会映射为unconfined_u,可以通过以下命令查看映射关系:

[root@server ~]# semanage login -l

注意: user 字段只用于标识数据或进程被哪个身份所拥有,系统数据的 user 字段是system_u,用户数据 user 字段是 user_u

角色 (role):

表示此数据是进程还是文件或目录包含 (了解就行)。

**object_r:**代表该数据是文件或目录,r代表 role (角色的意思)

**system_r:**进程r代表 role

类型(type):

seinfo -t | more # 5049个类型

最重要,进程是否可以访问文件,主要就是看进程的安全上下文类型字段是否和文件的安全0下文类型字段相匹配

在默认的targeted策略中

类型字段在主体(进程)的安全上下文中被称作域 (domain)

类型字段在目标 (文件或目录)的安全上下文中被称作类型 (type)

进程的域与文件的类型是否匹配需要查询策略规则

admin_home_t:安全上下文具体内容(类型), 其中还包含这许多函数**(该名字只是函数集合的代号) (是否放行就看该字段的内容)**

灵敏度:

用s0、s1、s2 来命名,数字为灵敏度分级,数值越大,灵敏度越高。策略灵敏度高 管控的对象就多

相关推荐
文静小土豆1 小时前
Rocky Linux 二进制 安装K8S-1.35.0高可用集群
linux·运维·kubernetes
小技工丨1 小时前
华为TaiShan 200 2280 ARM服务器虚拟化部署完整指南
运维·服务器·arm开发
weixin_430750933 小时前
OpenMediaVault debian Linux安装配置企业私有网盘(三) 静态ip地址配置
linux·服务器·debian·nas·网络存储系统
403240733 小时前
[Jetson/Ubuntu 22.04] 解决挂载 exFAT 硬盘报错 “unknown filesystem type“ 及只读权限问题的终极指南
linux·运维·ubuntu
零意@3 小时前
debian如何把新编译的内核镜像替换原来的内核
运维·debian·更新内核版本·linux内核版本更新·debian更新内核
Love丶伊卡洛斯3 小时前
Ubuntu 部署 STUN服务端
linux·运维·ubuntu
有毒的教程5 小时前
SaltStack 开源自动化运维工具详细介绍
运维·开源·saltstack
大房身镇、王师傅5 小时前
【VirtualBox】VirtualBox 7.1.6 RockyLinux10 配置增强功能 设置共享目录
运维·服务器·virtualbox·rockylinux10
betazhou5 小时前
rsync使用案例分析
linux·运维·服务器·rsync·同步数据
SmartBrain6 小时前
Agent 知识总结
服务器·数据库·笔记