Linux红帽:RHCSA认证知识讲解(十 二)调试 SELinux,如何管理 SELinux 的运行模式、安全策略、端口和上下文策略

Linux红帽:RHCSA认证知识讲解(十 二)调试 SELinux,如何管理 SELinux 的运行模式、安全策略、端口和上下文策略

  • 前言
  • 一、SELinux 简介
  • 二、SELinux 的运行模式
    • 2.1 查看和切换 SELinux 模式
  • 三、SELinux 预设安全策略的开关控制
  • 四、管理 SELinux 安全端口开放策略
  • 五、管理 SELinux 安全上下文策略
  • 六、修改 firewalld 防火墙策略
  • 七、真题带练
      • 答案
      • 逐行讲解


前言

  • 在红帽 Linux 系统的管理工作中,SELinux 的调试和管理是系统管理员经常会遇到的重要任务
  • 这些任务对于保障系统的安全性和稳定性起着关键作用
  • 本文将深入且详细地讲解如何调试 SELinux,包括如何管理 SELinux 的运行模式、安全策略、端口和上下文策略等内容
  • 掌握这些技能,对于确保系统的可靠性和安全性意义重大。

我的个人主页,欢迎来阅读我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的RHCSA认证知识文章专栏
欢迎来阅读指出不足
https://blog.csdn.net/2402_83322742/category_12901802.html?spm=1001.2014.3001.5482


一、SELinux 简介

  • SELinux 是由美国 NSA(国家安全局)开发的一套基于内核的增强型强制安全保护机制
  • 简单来说,它就像是系统的一个安全卫士,主要针对用户、进程和文件进行安全标签的分配和相关限制
  • SELinux 的安全策略由 NSA 和 Red Hat 提供,能够有效增强系统的安全性。有了它,系统就多了一层防护,能更好地抵御各种潜在的安全威胁

二、SELinux 的运行模式

SELinux 有三种运行模式,每种模式都有不同的作用,下面我们来详细了解一下。

  1. enforcing(强制模式):在这种模式下,SELinux 会严格执行安全策略,任何违反策略的行为都会被阻止。就好比一个严格的保安,不允许任何不符合规定的行为发生。
  2. permissive(宽松模式):此时 SELinux 会记录违反策略的行为,但不会阻止这些行为。它就像一个记录员,只记录违规行为,而不采取行动。
  3. disabled(禁用模式):在这个模式下,SELinux 完全被禁用,不会对系统进行任何安全策略的限制。这就相当于把保安撤掉了,系统处于一种没有安全策略约束的状态。

2.1 查看和切换 SELinux 模式

  1. 查看 SELinux 模式:我们可以使用以下命令查看当前的 SELinux 模式,非常简单:
getenforce

在这里插入图片描述

  1. 临时切换 SELinux 模式:如果我们想要临时切换 SELinux 模式,可以使用setenforce命令。
    • 切换到强制模式:
setenforce 1
  • 切换到宽松模式:
    
setenforce 0
  1. 永久切换 SELinux 模式:要永久更改 SELinux 模式,就需要修改配置文件并重启系统了。
    • 修改配置文件:
vim /etc/selinux/config

打开配置文件后,将SELINUX参数设置为enforcingpermissivedisabled。例如,设置为强制模式:在这里插入图片描述

SELINUX=enforcing
- 重启系统:
reboot

三、SELinux 预设安全策略的开关控制

SELinux 提供了许多预设的安全策略开关,我们可以通过一些命令来管理这些开关,下面我们来看看具体怎么做。

  1. 列出所有开关参数:使用以下命令可以列出所有的开关参数:
getsebool -a

在这里插入图片描述

  1. 修改开关状态
    • 打开某个开关(永久生效):
setsebool -P 开关参数=on
- 关闭某个开关(永久生效):
setsebool -P 开关参数=off

四、管理 SELinux 安全端口开放策略

SELinux 通过安全策略控制哪些端口可以被特定的服务使用。我们可以通过以下命令来管理端口策略。

  1. 列出所有预设的端口开放策略:使用这个命令可以查看所有预设的端口开放策略:
semanage port -l
  1. 添加某个类别的开放端口:如果我们要为某个服务添加一个新的开放端口,可以使用以下命令。例如,为 httpd 服务添加一个新端口 82/tcp:
semanage port -a -t http_port_t -p tcp 82
  1. 删除某个类别的开放端口:要是想删除某个服务的开放端口,就用这个命令。例如,删除 httpd 服务的端口 82/tcp:
semanage port -d -t http_port_t -p tcp 82

五、管理 SELinux 安全上下文策略

SELinux 通过安全上下文策略来控制文件、目录和其他对象的访问权限。我们可以使用以下命令来管理上下文策略。

  1. 列出所有预设的安全上下文策略:用这个命令可以查看所有预设的安全上下文策略:
semanage fcontext -l
  1. 添加文档的上下文策略:如果要为某个文档或目录添加一个上下文策略,可以使用以下命令。例如,为/var/www/html目录添加一个上下文策略:
semanage fcontext -a -t httpd_sys_content_t "/var/www/html(/.*)?"
  1. 修改文档的上下文策略:要是想修改某个文档或目录的上下文策略,就用这个命令。例如,修改/var/www/html目录的上下文策略:
semanage fcontext -m -t httpd_sys_content_t "/var/www/html(/.*)?"

六、修改 firewalld 防火墙策略

为了确保 httpd 服务能够正常使用,除了配置 SELinux,我们还需要确保防火墙允许 httpd 服务的流量。下面我们来看看如何管理 firewalld 防火墙策略。

  1. 检查 firewalld 防火墙是否已经开启:使用以下命令可以检查防火墙的状态:
systemctl status firewalld
  1. 添加 firewalld 的 service 和 port
    • 添加 service:
firewall-cmd --permanent --add-service=http
- 添加 port:
firewall-cmd --permanent --add-port=82/tcp
  1. 重新加载 firewalld 防火墙策略:添加完之后,记得重新加载防火墙策略,让设置生效:
firewall-cmd --reload

七、真题带练

  • SELinux RHCSA认证知识真题
    在这里插入图片描述

答案

下载软件
[root@node1 ~]# dnf provides semanage  
[root@node1 ~]# dnf -y install policycoreutils-python-utils  
设置http 82端口
[root@node1 ~]# semanage port -l  | grep http
[root@node1 ~]# semanage port -a -t http_port_t -p tcp 82
[root@node1 ~]# ll /var/www/html  -Z
[root@node1 ~]# semanage fcontext -m -t httpd_sys_content_t /var/www/html/file1
[root@node1 ~]# restorecon -RV /var/www/html
防火墙设置
[root@node1 ~]# firewall-cmd --permanent --add-service=http
[root@node1 ~]# firewall-cmd --permanent --add-port=82/tcp
[root@node1 ~]# firewall-cmd --reload
httpd的设置
[root@node1 ~]# systemctl restart httpd
[root@node1 ~]# systemctl enable --now httpd验证
[root@node1 ~]# curl http://node1.domain250.example.com:82/file1
[root@node1 ~]# curl http://node1.domain250.example.com:82/file2
[root@node1 ~]# curl http://node1.domain250.example.com:82/file3

逐行讲解

  1. dnf provides semanage

    • 作用:查询哪个软件包包含 semanage 命令。就像在问“电脑里哪个软件有这个工具?”,这里查到是 policycoreutils-python-utils 软件包。
      在这里插入图片描述
  2. dnf -y install policycoreutils-python-utils

    • 作用:安装 policycoreutils-python-utils 软件包,-y 表示自动确认安装,不用手动输入“yes”。
  3. semanage port -l | grep http

    • 作用:列出系统中与 http 相关的端口规则。semanage port -l 是列端口规则,grep http 是筛选出含“http”的内容。
  4. semanage port -a -t http_port_t -p tcp 82

    • 作用:添加一个新的端口规则,允许 tcp 82 端口通过 SELinux 策略(SELinux 是系统的安全机制,这里告诉它 82 端口可以用)。
  5. ll /var/www/html -Z

    • 作用:查看 /var/www/html 目录下文件的 SELinux 安全上下文(类似文件的“安全标签”)。
  6. semanage fcontext -m -t httpd_sys_content_t /var/www/html/file1

    • 作用:修改 file1 文件的 SELinux 上下文为 httpd_sys_content_t(让文件符合网页服务的安全规则)。
      在这里插入图片描述
  7. restorecon -RV /var/www/html

    • 作用:恢复 /var/www/html 目录下文件的 SELinux 上下文到默认设置,让前面的修改生效。
  8. firewall-cmd --permanent --add-service=http

    • 作用:在防火墙中永久允许 http 服务通过(防火墙像门卫,这里告诉门卫允许 http 通行)。
  9. firewall-cmd --permanent --add-port=82/tcp

    • 作用:在防火墙中永久允许 tcp 82 端口通过。
  10. firewall-cmd --reload

    • 作用:重新加载防火墙规则,让新设置生效。
  11. systemctl restart httpd

    • 作用:重启 httpd 服务(网页服务,类似让网页服务“重启生效”)。
  12. systemctl enable --now httpd

    • 作用:设置 httpd 服务开机自启动,并且立即启动。
  13. curl http://node1.domain250.example.com:82/file1

    • 作用:用 curl 命令访问网页文件,验证是否能正常获取内容。如果显示文件内容,说明配置成功。

    • 解释为什么只改 file1:因为只有 file1 的 SELinux 上下文和其他文件不一样,通过 ll -Z 能看到这个区别,所以只需要改它。


以上就是这篇博客的全部内容,下一篇我们将继续探索 Redhat 的更多精彩内容。

我的个人主页,欢迎来阅读我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的RHCSA认证知识文章专栏
欢迎来阅读指出不足
https://blog.csdn.net/2402_83322742/category_12901802.html?spm=1001.2014.3001.5482

非常感谢您的阅读,喜欢的话记得三连哦

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Spring Cloud之服务入口Gateway之Route Predicate Factories

目录 Route Predicate Factories Predicate 实现Predicate接口 测试运行 Predicate的其它实现方法 匿名内部类 lambda表达式 Predicate的其它方法 源码详解 代码示例 Route Predicate Factories The After Route Predicate Factory The Before Route Predicate Fac…

下载安装Node.js及其他环境

提示:从Node版本降级到Vue项目运行 文章目录 下载Node.js环境配置配置环境变量 安装 cnpm(我需要安装)安装脚手架安装依赖安装淘宝镜像(注意会更新)cnpm vs npm 与新旧版本核心差异包管理器不同功能差异如何选择&#…

C++抽卡模拟器

近日在学校无聊,写了个抽卡模拟器供大家娱乐。 代码实现以下功能:抽卡界面,抽卡判定、动画播放、存档。 1.抽卡界面及判定 技术有限,不可能做的和原神一样精致。代码如下(注:这不是完整代码,…

Redis 热key问题怎么解决?

Redis 热 Key 问题分析与解决方案 热 Key(Hot Key)是指被高频访问的某个或多个 Key,导致单个 Redis 节点负载过高,可能引发性能瓶颈甚至服务崩溃。以下是常见原因及解决方案: 1. 热 Key 的常见原因 突发流量:如明星八卦、秒杀商品、热门直播等场景。缓存设计不合理:如全…

第十四届蓝桥杯省赛真题解析(含C++详细源码)

第十四届蓝桥杯省赛 整数删除满分思路及代码solution1 (40% 双指针暴力枚举)solution 2(优先队列模拟链表 AC) 冶炼金属满分代码及思路 子串简写满分思路及代码solution 1(60% 双指针)solution 2&#xff0…

Matlab:三维绘图

目录 1.三维曲线绘图命令:plot3 实例——绘制空间直线 实例——绘制三角曲线 2.三维曲线绘图命令:explot3 3.三维网格命令:mesh 实例——绘制网格面 实例——绘制山峰曲面 实例——绘制函数曲线 1.三维曲线绘图命令:plot3 …

(51单片机)独立按键控制流水灯LED流向(独立按键教程)(LED使用教程)

源代码 如上图将7个文放在Keli5 中即可,然后烧录在单片机中就行了 烧录软件用的是STC-ISP,不知道怎么安装的可以去看江科大的视频: 【51单片机入门教程-2020版 程序全程纯手打 从零开始入门】https://www.bilibili.com/video/BV1Mb411e7re?…

React框架的Concurrent Mode

以下是关于 Concurrent Mode 的系统梳理: 一、Concurrent Mode 的诞生背景 传统渲染的局限性 同步阻塞:React 15 的 Stack Reconciler 无法中断渲染流程优先级缺失:用户交互与后台任务同等对待资源竞争:网络请求与渲染任务无法智能调度核心设计目标 可中断渲染:允许高优先…

Java 集合框架与 Stream 流深入剖析(重点详细讲解)

目录 引言 一、ArrayList 1. 概述 2. 特点 动态扩容 初始容量 扩容倍数 随机访问高效 插入和删除效率低 3. 代码示例 4. 分析 二、HashSet 1. 概述 2. 特点 唯一性 插入、删除和查找效率高 无序性 3. 代码示例 4. 分析 三、HashMap 1. 概述 2. 特点 键唯…

Golang的Goroutine(协程)与runtime

目录 Runtime 包概述 Runtime 包常用函数 1. GOMAXPROCS 2. Caller 和 Callers 3. BlockProfile 和 Stack 理解Golang的Goroutine Goroutine的基本概念 特点: Goroutine的创建与启动 示例代码 解释 Goroutine的调度 Gosched的作用 示例代码 输出 解…

【51单片机】3-3【定时器/计数器/中断】超声波测距模块测距

1.硬件 51最小系统超声波测距模块 2.软件 #include "reg52.h"//距离小于10cm,D5亮,D6灭,反之相反现象sbit D5 P3^7;//根据原理图(电路图),设备变量led1指向P3组IO口的第7口 sbit D6 P3^6;//根据原理图&…

2-Visual Studio 2022 NET开发Windows桌面软件并连接SQL Server数据库

引言 今天尝试Visual Studio 2022 NET开发一个NET桌面软件,并尝试连接SQL Server的数据库,此文章为开发笔记。 --------------------------------------------------------------------------------------------------------------------------------- …