Linux之SELinux

news2024/9/22 19:45:11

目录

概述

定义

作用

SELinux与传统的权限区别

SELinux工作原理

名词解释

主体(Subject)

目标(Object)

策略(Policy)

安全上下文(Security Context)

文件安全上下文查看

命令

分析

类型(type)

SELinux的启动、关闭与查看

三种配置模式

原理图

模式管理

查看当前模式

临时开启/关闭

永久关闭

selinux的状态

命令

分析

selinux配置文件

修改安全上下文

chron命令

作用

格式

示例

restorecon命令

作用

格式

例1 --- 接上例,将~/test 恢复默认类型

semanage命令

作用

格式

常用命令组

实验


概述

定义

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

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

作用

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

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

SELinux与传统的权限区别

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

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

SELinux工作原理

名词解释

主体(Subject)

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

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

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

目标(Object)

        需要访问的文件目录资源

策略(Policy)

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

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

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

安全上下文(Security Context)

        SELinux 管理过程中,进程是否可以正确地访问文件资源,取决于它们的安全上下文。进程和文件都有自己的安全上下文,SELinux 会为进程和文件添加安全信息标签,比如 SELinux 用户、角色、类型、类别等,当运行 SELinux 后,所有这些信息都将作为访问控制的依据。

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

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

解析:

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

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

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

注意:

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

文件安全上下文查看

命令

[root@localhost redhat]# ll -Z

[root@localhost redhat]# ls -Z

分析

        重点为 --- system_u:object_r:admin_home_t:s0

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

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

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

[root@localhost redhat]# semanage login -l

        system_u --- 系统用户身份,其中“_u”代表 user

注意

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

   seinfo 命令

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

[root@localhost /]# yum install setools-console -y

        格式:seinfo -参数

        参数:

                -u --- 列出SELinux中所有的身份(user)
                -r --- 列出SELinux中所有的角色(role)
                -t --- 列出SELinux中所有的类型(type)
                -b --- 列出所有的布尔值(也就是策略中的具体规则名称)
                -x --- 显示更多的信息

角色(role)--- 表示此数据是进程还是文件或目录包含

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

        system_r --- 代表进程r代表 role

类型(type)

[root@localhost /]# seinfo -t | more 

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

        在默认的targeted策略中

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

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

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

灵敏度 --- 用 s0、s1、s2 来命名,数字为灵敏度分级,数值越大,灵敏度越高

例:查看之前http的默认网页文件信息

[root@localhost /]# ls -Zd /var/www/html/
system_u:object_r:httpd_sys_content_t:s0 /var/www/html/

SELinux的启动、关闭与查看

三种配置模式

        enforcing --- 强制模式,启用SELinux,将拦截服务的不合法请求

        permissive --- 宽容模式,启用SELinux,遇到服务越权访问时,只发出警告而不强制拦截

        disabled --- 关闭模式,SELinux没有运行

原理图

模式管理

查看当前模式

[root@localhost /]# getenforce 

临时开启/关闭

[root@localhost /]# getenforce 
Enforcing
[root@localhost /]# setenforce 0     # 临时关闭,转为宽容模式

[root@localhost /]# setenforce 1     # 临时开启,转为强制模式

永久关闭

[root@localhost /]# vim /etc/selinux/config 

SELINUX=disabled	#将enforcing改为disabled

[root@localhost /]# reboot

注意:        

        enforcing与permissive之间切换,需要不重启系统

        enforcing、permissive、与disabled之间切换必须重启系统才会生效

selinux的状态

命令

[root@localhost ~]# sestatus

分析

SELinux status:                 enabled           # 是否启用  
SELinuxfs mount:                /sys/fs/selinux   # selinux临时文件系统的挂载点
SELinux root directory:         /etc/selinux      # 启动目录,配置文件位置
Loaded policy name:             targeted          # 当前加载的策略类型
								    # 策略类型
									#  targeted:只保护目标进行,默认
									#  minimum:少数选定进程进行保护
									#  mls:多级安全保护,最高级
Current mode:                   enforcing         # 执行的模式,重要
Mode from config file:          enforcing         # 配置文件的模式
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Memory protection checking:     actual (secure)
Max kernel policy version:      33

selinux配置文件

[root@localhost ~]# vim /etc/selinux/config 

SELINUX=enforcing         # 设置模式

SELINUXTYPE=targeted      # 设置策略类型

# 注意:/etc/sysconfig/selinux文件与上述配置问价内容相同,选择一个配置即可

修改安全上下文

chron命令

作用

        手动修改目标的上下文策略

格式

        chcon  [-R] [-t  type]  [-u  user]  [-r  role]  文件名

-R:递归修改,当前目录及目录下的所有文件都同时设置
-t:后面接安全上下文件的类型字段(重要)
-u:后面接身份标识
-r:后面接角色
-v:显示变动结果

        chcon  -R  --reference=范例文件  文件名

示例

        例1 --- 单独修改

[root@localhost ~]# touch test
[root@localhost ~]# ls -Z test
unconfined_u:object_r:admin_home_t:s0 test
[root@localhost ~]# ls -Z /etc/hosts
system_u:object_r:net_conf_t:s0 /etc/hosts
[root@localhost ~]# chcon -v -t net_conf_t ~/test
changing security context of '/root/test'
[root@localhost ~]# ls -Z test
unconfined_u:object_r:net_conf_t:s0 test

 

        例2 --- 按照范例文件修改

[root@localhost ~]# touch temp
[root@localhost ~]# ls -Z temp
unconfined_u:object_r:admin_home_t:s0 temp
[root@localhost ~]# ls -Z /etc/passwd
system_u:object_r:passwd_file_t:s0 /etc/passwd
[root@localhost ~]# chcon -v --reference=/etc/passwd ~/temp 
changing security context of '/root/temp'
[root@localhost ~]# ls -Z temp 
system_u:object_r:passwd_file_t:s0 temp

restorecon命令

作用

        让文件的SELinux类型恢复为默认的SELinux类型

        默认的SELinux类型与semanage命令有关,其参考semanage命令所查询的默认SELinux类型

格式

        restorecon  [-Rv]  文件或目录

-R:连同子目录一起修改;
-v:将过程显示到屏幕上

例1 --- 接上例,将~/test 恢复默认类型

[root@localhost ~]# ls -Z /root/
[root@localhost ~]# ls -Z ~/test
[root@localhost ~]# restorecon -Rv ~/test
[root@localhost ~]# ls -Z ~/test

semanage命令

作用

        用于管理 SELinux 的策略,查询/修改/增加/删除文件的默认SELinux安全上下文,管理网络端口、消息接口等

格式

        semanage   选项    参数   文件

        选项

                login|user|port|interface|==fcontext==|translation|boolean 

                注意 --- fcontext查询默认安全上下文(重要)

        参数

                 -l :查询
                 -a :添加
                 -m :修改
                 -d :删除
                 -D :全部删除
                 -t :类型
                 -r :角色
                 -s :用户
                 -f :文件

        文件

               设置对象文件或目录

常用命令组

        查询文件默认的安全上下文

[root@localhost ~]# semanage fcontext -l | grep  文件名

[root@localhost ~]# semanage fcontext -l |grep /etc/passwd

        查看允许访问的端口号

[root@localhost ~]# semanage port -l | grep ssh

[root@localhost ~]# semanage port -l | grep http

实验

        使用httpd服务演示安全上下文值的设定

[root@localhost ~]# systemctl restart firewalld.service 
[root@localhost ~]# firewall-cmd --permanent --add-service=http
[root@localhost ~]# firewall-cmd --reload 
[root@localhost ~]# setenforce 1
[root@localhost ~]# getenforce 
[root@localhost ~]# vim /etc/httpd/conf.d/hosts.conf

    <Directory "/www/ip">
            AllowOverride None
            Require all granted

    </Directory>

    <VirtualHost 192.168.149.128:80>
            DocumentRoot "/www/ip/80"
            ServerName 192.168.149.128
    </VirtualHost>

[root@localhost ~]# mkdir -pv /www/80
[root@localhost ~]# echo this is 80 > /www/80/index.html
[root@localhost ~]# systemctl restart httpd
[root@localhost ~]# ls -Zd /var/www/html
system_u:object_r:httpd_sys_content_t:s0 /var/www/html
[root@localhost ~]# chcon -t httpd_sys_content_t /www/ -R
[root@localhost ~]# ls -Zd /www/80
unconfined_u:object_r:httpd_sys_content_t:s0 /www/80
[root@localhost ~]# 

        使用ssh修改默认端口号演示安全上下文

[root@localhost ~]# vim /etc/ssh/sshd_config 
Port 2222
[root@localhost ~]# systemctl restart sshd     # 此时重启会报错
Job for sshd.service failed because the control process exited with error code.
See "systemctl status sshd.service" and "journalctl -xe" for details.

[root@localhost ~]# semanage port -l | grep ssh    # 查看ssh的策略类型及放行的端口号
ssh_port_t                     tcp      22
[root@localhost ~]# semanage port -a -t ssh_port_t -p tcp 2222    # 添加
[root@localhost ~]# semanage port -l | grep ssh    
ssh_port_t                     tcp      2222, 22
[root@localhost ~]# systemctl restart sshd

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/986761.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【MySQL基础】事务隔离03

目录 隔离性与隔离级别事务隔离的实现事务的启动方式MySQL事务代码示例 在MySQL中&#xff0c;事务支持是在引擎层实现的。MySQL是一个支持多引擎的系统&#xff0c;但并不是所有的引擎都支持事务。比如 MySQL 原生的 MyISAM 引擎就不支持事务&#xff0c;这也是 MyISAM 被 Inn…

永安通配符和多域名SSL证书的区别

随着互联网的快速发展&#xff0c;现在大多数人都已经习惯在网上交流、购物、学习&#xff0c;因此互联网上的各种类型的网站越来越多&#xff0c;不仅是企事业单位创建各种类型的网站&#xff0c;个人开发者创建的网站也越来越多&#xff0c;一张单域名SSL就不能满足个人或者企…

Windows云服务器 PHP搭建网站外网无法访问的问题

前言&#xff1a;本人在华为云上租了一台windows的云主机&#xff0c;可以远程访问桌面的那种&#xff0c;然后想搭个网站&#xff0c;最开始想到的是IIS&#xff0c;测试了下用html的文件&#xff0c;没有问题。但是&#xff0c;php文件却不能用&#xff0c;因为少了PHP环境。…

【LeetCode - 每日一题】2594. 修车的最少时间(23.09.07)

2594. 修车的最少时间 题意 给定每个师傅修车的时间和需要修的车辆总数&#xff0c;计算修理所有汽车需要的最少时间。师傅可以同时修车。 解法 二分 看到题目没有任何头绪&#xff0c;直接查看题解。 至于为什么用二分做呢&#xff0c;讨论区有个友友这么说到&#xff1a…

【Linux】LVM原理及核心概念

LVM是什么&#xff1f;LVM核心概念LVM的优势在Linux上使用LVM感谢 &#x1f496; LVM是什么&#xff1f; LVM是一种高级的磁盘管理工具&#xff0c;用于在Linux和其他类Unix操作系统中管理磁盘存储。它的核心思想是将底层物理存储抽象为逻辑存储单元&#xff0c;从而提供了更大…

如何使用HTTP代理爬虫,防止对网站造成负面影响

在当今大数据时代&#xff0c;爬虫技术已经成为了获取数据的重要手段之一。但是&#xff0c;由于爬虫程序的高频访问容易对目标网站造成负面影响&#xff0c;如增加服务器负载、影响网站性能等&#xff0c;因此&#xff0c;如何使用HTTP代理爬虫防止对网站造成负面影响成为了一…

idea中mapper直接跳转到xml的插件

一.点击File | Settings | Plugins&#xff0c;下载插件 二、重启idea

Shopify电子邮件营销方法?邮件营销的技巧?

Shopify电子邮件营销怎么操作&#xff1f;独立站如何做邮件营销? Shopify电子邮件营销是一种强大的工具&#xff0c;可帮助电商企业与其客户建立联系并提高销售。蜂邮EDM将探讨一些有效的Shopify电子邮件营销方法&#xff0c;以帮助您最大限度地利用这一策略。 Shopify电子邮…

suning苏宁API接入说明(苏宁商品详情+关键词搜索商品列表)

API地址:https://o0b.cn/anzexi 调用示例&#xff1a;https://api-gw.onebound.cn/suning/item_get/?keytest_api_key& &num_iid0070134261/703410301&&langzh-CN&secret 参数说明 通用参数说明 version:API版本key:调用key,测试key:test_api_keyapi_na…

攻防世界-WEB-ics-05

打开靶机 只有设备维护中心可以点开 点标签得到新的url pageindex 想到文件包含漏洞&#xff08;URL中出现path、dir、file、pag、page、archive、p、eng、语言文件等相关关键字眼 利用php伪协议查看源码 出现一段base64源码&#xff0c;进行转码得出源码 ?pagephp://filter…

Java-day13(IO流)

IO流 凡是与输入&#xff0c;输出相关的类&#xff0c;接口等都定义在java.io包下 1.File类的使用 File类可以有构造器创建其对象&#xff0c;此对象对应着一个文件(.txt,.avi,.doc,.mp3等)或文件目录 File类对象是与平台无关的 File中的方法仅涉及到如何创建&#xff0c;…

数据挖掘的学习路径

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ &#x1f434;作者&#xff1a;秋无之地 &#x1f434;简介&#xff1a;CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作&#xff0c;主要擅长领域有&#xff1a;爬虫、后端、大数据…

DGIOT-Modbus-RTU控制指令05、06的配置与下发

[小 迪 导 读]&#xff1a;伴随工业物联网在实际应用中普及&#xff0c;Modbus-RTU作为行业内的标准化通讯协议。在为物联网起到采集作用的同时&#xff0c;设备的控制也是一个密不可分的环节。 场景解析&#xff1a;在使用Modbus对设备进行采集后&#xff0c;可以通过自动控制…

nested exception is java.io.FileNotFoundException

完整的错误信息&#xff1a; [main] ERROR o.s.boot.SpringApplication - Application run failed org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [com.heima.article.ArticleApplication]; nested exception is java…

Android 网络配置

adb root adb shell 改变网卡网址 ifconfig eth0 192.168.0.167 up 添加虚拟网卡 ifconfig eth0:0 192.168.10.10 up 以上的命令就可以在eth0网卡上创建一个叫eth0:0的虚拟网卡,他的地址是:192.168.10.10 删除虚拟网卡 ifconfig eth0:0 down ip route 查看路由表的内容 …

如何选择合适的HTTP代理服务器

HTTP代理服务器是一种常见的网络代理方式&#xff0c;它可以帮助用户隐藏自己的IP地址&#xff0c;保护个人隐私和安全。然而&#xff0c;选择合适的HTTP代理服务器并不容易&#xff0c;需要考虑多个因素。本文将介绍如何选择合适的HTTP代理服务器。 了解代理服务器的类型 HTT…

MySQL 8.0(winx64)安装笔记

一、背景 从MySQL 5.6到5.7&#xff0c;再到8.0&#xff0c;版本的跳跃不可谓不大。安装、配置的差别也不可谓不大&#xff0c;特此备忘。 二、过程 &#xff08;1&#xff09;获取MySQL 8.0社区版&#xff08;MySQL Community Server&#xff09;   从 官网 字样 “MySQL …

Docker 搭建Redis Cluster 集群

环境&#xff1a; centos7 redis:7.0.5 三主三从&#xff0c;六个节点 一、下载redis镜像 docker pull redis:7.0.5 二、创建虚拟网卡 docker network create redis-cluster# 查看创建的Docker网卡 docker network ls 网卡类型为bridge桥接类型 三、准备redis配置文件 redi…

安卓核心板的不同核心规格及架构介绍

安卓核心板是将核心功能封装的一块电子主板&#xff0c;集成芯片、存储器和功放器件等&#xff0c;并提供标准接口的芯片。 其特点&#xff1a; ● 能跑 Android 等操作系统 强大的功能及丰富的接口 支持 LCD/TP&#xff0c;Audio&#xff0c;Camera&#xff0c;Video&#…

vue3:13、Vue3.3新特性-defineModel

旧版本的语法 新版本语法