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

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

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


前言

  • 在红帽 Linux 系统的管理工作中,SELinux 的调试和管理是系统管理员经常会遇到的重要任务。
  • 这些任务对于保障系统的安全性和稳定性起着关键作用。
  • 本文将深入且详细地讲解如何调试 SELinux,包括如何管理 SELinux 的运行模式、安全策略、端口和上下文策略等内容
  • 掌握这些技能,对于确保系统的可靠性和安全性意义重大。
我的个人主页,欢迎来阅读我的其他文章
https://blog.ZEEKLOG.net/2402_83322742?spm=1011.2415.3001.5343
我的RHCSA认证知识文章专栏
欢迎来阅读指出不足
https://blog.ZEEKLOG.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
  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
  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 能看到这个区别,所以只需要改它。

作用:修改 file1 文件的 SELinux 上下文为 httpd_sys_content_t(让文件符合网页服务的安全规则)。

在这里插入图片描述

作用:查询哪个软件包包含 semanage 命令。就像在问“电脑里哪个软件有这个工具?”,这里查到是 policycoreutils-python-utils 软件包。

在这里插入图片描述

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

我的个人主页,欢迎来阅读我的其他文章
https://blog.ZEEKLOG.net/2402_83322742?spm=1011.2415.3001.5343
我的RHCSA认证知识文章专栏
欢迎来阅读指出不足
https://blog.ZEEKLOG.net/2402_83322742/category_12901802.html?spm=1001.2014.3001.5482
非常感谢您的阅读,喜欢的话记得三连哦
在这里插入图片描述

Read more

【OpenClaw从入门到精通】第10篇:OpenClaw生产环境部署全攻略:性能优化+安全加固+监控运维(2026实测版)

【OpenClaw从入门到精通】第10篇:OpenClaw生产环境部署全攻略:性能优化+安全加固+监控运维(2026实测版)

摘要:本文聚焦OpenClaw从测试环境走向生产环境的核心痛点,围绕“性能优化、安全加固、监控运维”三大维度展开实操讲解。先明确生产环境硬件/系统选型标准,再通过硬件层资源管控、模型调度策略、缓存优化等手段提升响应速度(实测响应效率提升50%+);接着从网络、权限、数据三层构建安全防护体系,集成火山引擎安全方案拦截高危操作;最后落地TenacitOS可视化监控与Prometheus告警体系,配套完整故障排查清单和虚拟实战案例。全文所有配置、代码均经实测验证,兼顾新手入门实操性和进阶读者的生产级部署需求,帮助开发者真正实现OpenClaw从“能用”到“放心用”的跨越。 优质专栏欢迎订阅! 【DeepSeek深度应用】【Python高阶开发:AI自动化与数据工程实战】【YOLOv11工业级实战】 【机器视觉:C# + HALCON】【大模型微调实战:平民级微调技术全解】 【人工智能之深度学习】【AI 赋能:Python 人工智能应用实战】【数字孪生与仿真技术实战指南】 【AI工程化落地与YOLOv8/v9实战】【C#工业上位机高级应用:高并发通信+性能优化】 【Java生产级避坑指南:

By Ne0inhk
ARM Linux 驱动开发篇--- Linux 并发与竞争实验(互斥体实现 LED 设备互斥访问)--- Ubuntu20.04互斥体实验

ARM Linux 驱动开发篇--- Linux 并发与竞争实验(互斥体实现 LED 设备互斥访问)--- Ubuntu20.04互斥体实验

🎬 渡水无言:个人主页渡水无言 ❄专栏传送门: 《linux专栏》《嵌入式linux驱动开发》《linux系统移植专栏》 ❄专栏传送门: 《freertos专栏》《STM32 HAL库专栏》 ⭐️流水不争先,争的是滔滔不绝  📚博主简介:第二十届中国研究生电子设计竞赛全国二等奖 |国家奖学金 | 省级三好学生 | 省级优秀毕业生获得者 | ZEEKLOG新星杯TOP18 | 半导纵横专栏博主 | 211在读研究生 在这里主要分享自己学习的linux嵌入式领域知识;有分享错误或者不足的地方欢迎大佬指导,也欢迎各位大佬互相三连 目录 前言  一、实验基础说明 1.1、互斥体简介 1.2 本次实验设计思路 二、硬件原理分析(看过之前博客的可以忽略) 三、实验程序编写 3.1 互斥体 LED 驱动代码(mutex.c) 3.2.1、设备结构体定义(28-39

By Ne0inhk
Flutter for OpenHarmony:swagger_dart_code_generator 接口代码自动化生成的救星(OpenAPI/Swagger) 深度解析与鸿蒙适配指南

Flutter for OpenHarmony:swagger_dart_code_generator 接口代码自动化生成的救星(OpenAPI/Swagger) 深度解析与鸿蒙适配指南

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net 前言 后端工程师扔给你一个 Swagger (OpenAPI) 文档地址,你会怎么做? 1. 对着文档,手写 Dart Model 类(容易写错字段类型)。 2. 手写 Retrofit/Dio 的 API 接口定义(容易拼错 URL)。 3. 当后端修改了字段名,你对着报错修半天。 这是重复劳动的地狱。 swagger_dart_code_generator 可以将 Swagger (JSON/YAML) 文件直接转换为高质量的 Dart 代码,包括: * Model 类:支持 json_serializable,带 fromJson/

By Ne0inhk
Linux 开发别再卡壳!makefile/git/gdb 全流程实操 + 作业解析,新手看完直接用----《Hello Linux!》(5)

Linux 开发别再卡壳!makefile/git/gdb 全流程实操 + 作业解析,新手看完直接用----《Hello Linux!》(5)

文章目录 * 前言 * make/makefile * 文件的三个时间 * Linux第一个小程序-进度条 * 回车和换行 * 缓冲区 * 程序的代码展示 * git指令 * 关于gitee * Linux调试器-gdb使用 * 作业部分 前言 做 Linux 开发时,你是不是也遇到过这些 “卡脖子” 时刻?写 makefile 时,明明语法没错却报错,最后发现是依赖方法行没加 Tab;想提交代码到 gitee,记不清 git add/commit/push 的 “三板斧”,还得反复搜教程;用 gdb 调试程序,输了命令没反应,才想起编译时没加-g生成 debug 版本;甚至连写个进度条,都搞不懂\r和\n的区别,导致进度条乱跳…… 其实这些问题,

By Ne0inhk