第六章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 来命名,数字为灵敏度分级,数值越大,灵敏度越高。策略灵敏度高 管控的对象就多

相关推荐
海阔天空_20136 分钟前
Python pyautogui库:自动化操作的强大工具
运维·开发语言·python·青少年编程·自动化
桥田智能9 分钟前
气爪在自动化装配线中是如何应用的?
运维·自动化
九河云32 分钟前
如何选择适合的AWS EC2实例类型
服务器·云计算·aws
€☞扫地僧☜€2 小时前
docker 拉取MySQL8.0镜像以及安装
运维·数据库·docker·容器
其乐无涯2 小时前
服务器技术(一)--Linux基础入门
linux·运维·服务器
Diamond技术流2 小时前
从0开始学习Linux——网络配置
linux·运维·网络·学习·安全·centos
写bug的小屁孩2 小时前
前后端交互接口(三)
运维·服务器·数据库·windows·用户界面·qt6.3
斑布斑布2 小时前
【linux学习2】linux基本命令行操作总结
linux·运维·服务器·学习
紅色彼岸花2 小时前
第六章:DNS域名解析服务器
运维·服务器
Spring_java_gg2 小时前
如何抵御 Linux 服务器黑客威胁和攻击
linux·服务器·网络·安全·web安全