本专栏文章持续更新,新增内容使用蓝色表示。

往期相关内容

【Linux】权限管理详解(三):SELinux安全性管理 | Redhat-CSDN博客

【Linux】网络安全管理:Netfilter、nftables 与 Firewalld | Redhat_linux netfilter-CSDN博客

补充内容

SELinux 策略通过标记网络端口严格过滤网络流量,例如, 22/TCP 端口具有 ssh_port_t 标签;HTTP 端口 80/TCP 和 443/TCP 具有 http_port_t 标签。当某个进程希望侦听端口时,SELinux 将检查进程标签和端口标签是否对应。

补充:标准端口非标准端口。标准端口是Linux内部定义好的,比如 TCP 22,SSH 82,HTTP 80,HTTP 443,MySQL 3306等等。但是生产上一般不适用标准端口,所以需要添加非标准端口。

 端口标签管理

操作命令格式
添加端口标签semanage port -a -t <类型> -p <协议> <端口号>
修改端口标签semanage port -m -t <类型> -p <协议> <端口号>
删除端口标签semanage port -d -p <协议> <端口号>
查询所有端口semanage port -l
查询特定端口semanage port -l | grep <端口号>
查看自定义修改semanage [对象类型] -l -C

参数解释:

  • -a : Add,添加

  • -m : Modify,修改

  • -d : Delete,删除

  • -l : List,列出

  • -t  : Type,指定 SELinux 类型 (如 http_port_t, ssh_port_t)

  • -p : Protocol,指定协议 (tcp 或 udp)

示例:

# 允许 Apache(httpd) 监听 TCP 8080 端口
semanage port -a -t http_port_t -p tcp 8080# 将 TCP 2222 端口改为 ssh 服务类型
semanage port -m -t ssh_port_t -p tcp 2222# 删除 TCP 8080 端口的 SELinux 标签
semanage port -d -p tcp 8080# 列出所有端口标签,并可配合 grep 过滤
semanage port -l | grep http# 查询指定端口被标记为何种类型
semanage port -l | grep 8080# 列出用户自定义的端口策略修改
semanage port -l -C

【实验】Web 服务器非标准配置访问

1. 环境准备

操作系统:RHEL 8 或 9,或者社区分支 CentOS Stream / Rocky Linux / AlmaLinux。

软件:Apache HTTP Server (httpd)、firewalld、policycoreutils-python-utils(提供 semanage 命令)。

预设状态:SELinux 处于 Enforcing 模式,防火墙开启。

2. 实验场景与任务

你作为系统管理员,需要部署一个新的静态网站。出于安全和管理考虑,你决定:

将网站文件放在非默认目录 /srv/webapp/ 下,而不是默认的 /var/www/html/。

:推荐使用目录 /home/用户名/webapp 完成实验,后续步骤中的 /srv/webapp/ 都替换为 /home/用户名/webapp 即可,原因在【解决 SELinux 端口问题】处有解释。

让 Apache 监听在非标准端口 8088 上,而不是默认的 80 端口。

任务是完成配置,并确保外部用户可以通过浏览器访问 http://<服务器IP>:8088。

3. 实验步骤

3.1 基础准备与环境搭建

注意:以下命令均以 root 用户身份运行。

3.1.1 安装 Apache Web 服务器
dnf install httpd -y

3.1.2 创建非默认网站目录和测试页面
mkdir /srv/webapp/
# 使用 echo 或 vim 创建简单测试页面
echo "Hello from My WebApp on Port 8080!" > /srv/webapp/index.html

此时尝试本机访问访问会失败(连接被拒绝)。

curl http://localhost:8088

3.2 配置 Apache

3.2.1 编辑 Apache 主配置文件
vim /etc/httpd/conf/httpd.conf

1)找到 Listen 将后面的端口从默认的 80,改为 8088。

Listen 8088

2)找到 DocumentRoot "/var/www/html"  和与之对应的 <Directory "/var/www/html"> 块,改为目标目录。

DocumentRoot "/srv/webapp"<Directory "/srv/webapp">...
</Directory>

3.2.2 启动并启用 Apache 服务

此时检查 httpd 状态,发现未启用,尝试启动并启用 Apache 服务。

systemctl status httpd
systemctl enable httpdsystemctl start httpd        # 会失败

此时 start 不能成功:

根据提示使用命令 journalctl -xeu httpd.service 查看日志信息,从错误提示中可以发现 Apache(httpd 进程)没有被 SELinux 允许绑定到 8088 端口,所以未能成功开启,所以等到解决完SELinux的端口问题之后,再尝试启动。

3.3 解决防火墙问题

3.3.1 检查防火墙放行规则
firewall-cmd --list-all

发现不存在 8088 端口。

3.3.2 放行 TCP 8088端口
firewall-cmd --permanent --add-port=8088/tcp
firewall-cmd --reload
# 验证端口是否已添加
firewall-cmd --list-all

3.4 解决 SELinux 问题

3.4.1 检查 SELinux 端口策略
semanage port -l | grep http

发现没有 8080 端口。

3.4.2 添加端口 8080 到 HTTP 端口列表中
semanage port -a -t http_port_t -p tcp 8088
# 再次验证
semanage port -l | grep http

再次尝试启动 httpd,可以成功。

systemctl start httpd
systemctl status httpd

再次在本机上尝试,虽然有内容("Test Page for the HTTP Server on ......"),但是不是设置的文件内容("Hello from My WebApp on Port 8080!")。

curl http://localhost:8088

这是因为被默认测试页拦截了,禁用一下即可:

# 重命名该文件使其失效
mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf.bak# 然后重启 Apache
systemctl restart httpd

再次访问,结果为设置的测试页面,只不过状态码是 403 禁止访问,权限不足。

3.4.3 检查目录的 SELinux 上下文

比较默认目录和目标目录上下文区别。

ls -ldZ /var/www/html/
ls -ldZ /srv/webapp/

发现 /var/www/html/ 的上下文包含 httpd_sys_content_t,而 /srv/mywebapp/ 的上下文是var_t。

3.4.4 修正网站目录的 SELinux 上下文

打标签正常是使用以下方式:

semanage fcontext -a -t httpd_sys_content_t " /home/用户名/webapp/(/.*)?"

但是由于根 (/) 目录下的某些路径有其默认的、受保护的 SELinux 上下文策略,所以此种方式有时会失败或无效。

此处采用 semanage fcontext 的 -e (equal) 选项,让 /srv/mywebapp 及其所有子文件和子目录,都使用与 /var/www 完全相同的 SELinux 上下文类型规则。

# 给 /srv/mywebapp 目录及其内容打上正确标签
semanage fcontext -a -e /var/www /srv/webapp# 应用这条策略规则
restorecon -Rv /srv/webapp/# 验证上下文是否已更改
ls -ldZ /srv/webapp/

 再次在本机上尝试,结果成功。

curl http://localhost:8088

另一台主机通过浏览器访问 http://<IP>:8080,也同样成功。

实验结束。


如有问题或建议,欢迎在评论区中留言~

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微论-构建完整的智能环:具身智能系统的层级化架构探析

### **构建完整的智能环&#xff1a;具身智能系统的层级化架构探析**#### **引言&#xff1a;迈向与现实交互的智能**人工智能的发展正经历一场从“虚拟”走向“现实”的范式迁移。具身智能&#xff0c;作为这一浪潮的核心&#xff0c;强调智能体必须拥有“身体”&#xff0c;并…

Spring如何解决循环依赖:深入理解三级缓存机制

Spring如何解决循环依赖&#xff1a;深入理解三级缓存机制 引言 在我们之前的文章中&#xff0c;我们探讨了什么是循环依赖以及它带来的问题。作为Java生态系统中最重要的框架之一&#xff0c;Spring Framework在处理循环依赖方面有着独特而精妙的解决方案。今天&#xff0c;让…

HTML第六课:表格展示

HTML第六课&#xff1a;表格展示学生花名册学生花名册 效果示列 代码展示 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html lang"zh-CN"> <head><meta …

医疗行业API管理优化:使用QuickAPI提高数据安全与接口性能

背景与挑战在医疗行业&#xff0c;特别是医院信息系统&#xff08;HIS&#xff09;或其他相关部门&#xff08;如实验室信息系统LIS、药品管理系统等&#xff09;&#xff0c;数据安全和隐私保护一直是核心问题。然而&#xff0c;许多医疗机构仍然面临着以下问题&#xff1a;数…

docker 部署RustDesk服务

最近要用到远程桌面服务&#xff0c;网上的资料很丰富&#xff0c;但是和我的情况有点点区别&#xff0c;我是要搭一台局域网使用的远程桌面服务。 首先是源的问题&#xff1a; 很多都是不能用的&#xff0c;我用的docker桌面版&#xff0c; 其他的不重要&#xff0c;源地址&…

Kubernetes 中为 ZenTao 的 Apache 服务器添加请求体大小限制

本文将详细介绍如何通过修改 Apache 配置模板并在 Kubernetes 中使用 ConfigMap,为 ZenTao 系统添加请求体大小限制(LimitRequestBody)。 背景介绍 在企业级项目管理软件 ZenTao 的部署过程中,我们经常需要对 Apache 服务器进行安全加固。其中一个重要的安全措施是限制客户…

综述 | Agentic RL for LLM的最新进展与未来挑战,idea满满

近年来&#xff0c;大语言模型&#xff08;LLMs&#xff09;和强化学习&#xff08;RL&#xff09;的融合正在彻底改变我们构建和部署AI系统的方式。早期的LLM强化学习&#xff08;LLM-RL&#xff09;主要关注如何通过人类反馈&#xff08;如RLHF&#xff09;让模型生成更符合人…

【代码随想录算法训练营——Day3】链表——203.移除链表元素、707.设计链表、206.反转链表

LeetCode题目链接 https://leetcode.cn/problems/remove-linked-list-elements/ https://leetcode.cn/problems/design-linked-list/ https://leetcode.cn/problems/reverse-linked-list/ 题解 203.移除链表元素 重要的是创立头结点&#xff0c;这点在写题前已经经受过提示。 注…

CI/CD流水线驱动自动化流程深度解析:选型、竞品、成本与资源消耗

目录 一、CI/CD是什么&#xff1f;核心定位与价值 二、选型与竞品分析 (GitLab CI vs. Jenkins vs. GitHub Actions vs. GitLab CI) 三、部署成本分析 四、服务器资源消耗分析 五、给您的最终建议 一、CI/CD是什么&#xff1f;核心定位与价值 CI/CD&#xff08;持续集成/…

工厂办公环境如何实现一台服务器多人共享办公

在现代化工厂的办公环境中&#xff0c;如何通过一台服务器实现多人共享办公是一个既实用又高效的需求。这种方案不仅能降低硬件成本&#xff0c;还能简化IT管理&#xff0c;提高数据安全性。在工厂办公环境中&#xff0c;通过云飞云共享云桌面实现一台服务器多人共享办公&#…

系统性学习数据结构-第三讲-栈和队列

系统性学习数据结构-第三讲-栈和队列1. 栈1.1 栈和队列1.2 栈的实现2. 队列2.1 概念与结构2.2 队列的实现3. 栈和队列算法题3.1 [有效的括号](https://leetcode.cn/problems/valid-parentheses/description/)3.2 [用队列实现栈](https://leetcode.cn/problems/implement-stack-…

硬件(三) 通信方式、串口通信

一、通信类型&#xff08;一&#xff09;并行通信多个比特通过并行线同时传输&#xff0c;传输速率快&#xff0c;但会大量占用芯片资源&#xff0c;在对资源敏感的场景下不太适用。&#xff08;二&#xff09;串行通信把数据拆成单个比特&#xff0c;按顺序在一根总线上发送。…

vsan default storage policy 具体是什么策略?

vSAN Default Storage Policy&#xff08;vSAN 默认存储策略&#xff09;是 VMware vSAN 部署后自动创建的基础存储策略&#xff0c;其核心目标是在“通用性”和“可靠性”之间取得平衡&#xff0c;为大多数虚拟机提供默认的数据保护和存储服务&#xff0c;无需管理员手动创建策…

雨后阳光为何更强烈?

1. 降雨后的辐射是否会增强一般来说&#xff0c;降雨时天空多云&#xff0c;云层对太阳辐射有强烈削弱作用&#xff0c;所以降雨时的短波辐射显著下降。但雨后&#xff0c;空气湿度大、颗粒物被冲刷、天空转晴时&#xff0c;大气透明度会提高&#xff0c;短波辐射相较于降雨前往…

美团发布 | LongCat-Flash最全解读,硬刚GPT-4.1、Kimi!

一、导读 本报告解析了美团LongCat团队推出的LongCat-Flash模型&#xff0c;一个拥有5600亿参数的混合专家模型&#xff08;Mixture-of-Experts, MoE&#xff09;。面对大规模语言模型在计算资源和效率上的挑战&#xff0c;LongCat-Flash旨在实现计算效率与高级智能体&#xf…

Ubuntu 18.04 上升级 gcc 到 9.4

18.04 默认的源中可能没有 GCC-9.3 或更新版本&#xff0c;在终端运行以下命令来添加 PPA&#xff1a; sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt update2.安装 GCC 和 G sudo apt install gcc-9 g-93.更新替代版本 如果系统中安装了多个 GCC 版本&#x…

.NET GcPDF V8.2 新版本:人工智能 PDF 处理

一、GcPDF 产品简介 GcPDF&#xff08;GrapeCity Documents for PDF&#xff09;是葡萄城&#xff08;GrapeCity&#xff09;推出的一款功能强大的 .NET PDF 开发组件&#xff0c;旨在为开发人员提供高效、灵活的 PDF 文档处理解决方案。无论是创建全新 PDF 文档、编辑现有 PD…

解锁桐果云零代码数据平台能力矩阵——赋能零售行业数字化转型新动能

在零售行业从“规模扩张”转向“精细运营”的当下&#xff0c;数据已成为优化库存、精准营销、防控风险的核心抓手。但多数零售企业仍面临“数据杂乱难治理、分析建模门槛高、场景适配性不足”等难题&#xff0c;导致大量订单、商品、交易数据沉睡&#xff0c;难以转化为经营决…

rabbitmq 入门知识点

RabbitMQ 是一个 消息队列中间件&#xff08;Message Broker&#xff09;&#xff0c;实现了 AMQP 协议&#xff0c;常用于服务之间解耦、异步处理、流量削峰等场景。 我帮你分成两个部分来讲&#xff1a;核心原理 常见用法。&#x1f9e9; 一、核心原理 RabbitMQ 的核心是 生…

点控云智能客服:以AI重塑服务体验,登顶行业第一的革新之路

在数字化浪潮席卷全球的今天&#xff0c;客户服务已成为企业核心竞争力之一。智能客服作为连接企业与客户的重要桥梁&#xff0c;其效能与体验直接关系到企业的品牌形象与市场口碑。近日&#xff0c;权威机构发布的《中国智能客服市场竞争力报告》显示&#xff0c;点控云智能客…