一、管理服务器防火墙(firewalld)

RHEL 默认使用 firewalld 作为防火墙管理工具,它通过 “区域(zone)” 和 “服务(service)” 的概念简化规则配置,支持动态更新规则而无需重启服务。

1.1 防火墙基础操作

首先需要了解 firewalld 的基本状态和常用命令:

查看防火墙运行状态:

sudo systemctl status firewalld

若防火墙未启动,执行以下命令启动并设置开机自启:

sudo systemctl start firewalld
sudo systemctl enable firewalld

查看当前默认区域(默认区域是规则的主要应用对象):

sudo firewall-cmd --get-default-zone

查看当前区域的所有规则(包括开放的端口和服务):

sudo firewall-cmd --list-all

1.2 配置防火墙规则(核心操作)

开放指定服务

firewalld 预定义了常见服务(如 ssh、http、ftp)的端口配置,直接开放服务比手动指定端口更便捷。

例如,允许 HTTP 服务通过默认区域:

# 临时开放(重启防火墙后失效)
sudo firewall-cmd --add-service=http# 永久开放(需重新加载规则生效)
sudo firewall-cmd --add-service=http --permanent# 重新加载规则,使永久配置生效
sudo firewall-cmd --reload

验证服务是否已开放:

sudo firewall-cmd --list-services
开放指定端口

对于非预定义服务,需直接开放端口(需指定协议,如 tcp 或 udp)。

例如,开放 TCP 8080 端口(临时 + 永久):

# 临时开放
sudo firewall-cmd --add-port=8080/tcp# 永久开放
sudo firewall-cmd --add-port=8080/tcp --permanent# 重新加载规则
sudo firewall-cmd --reload

验证端口是否已开放:

sudo firewall-cmd --list-ports
限制特定 IP 访问

为提升安全性,可限制只有指定 IP 或网段能访问服务。

例如,仅允许 192.168.1.0/24 网段访问 SSH 服务:

sudo firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="ssh" accept' --permanent# 重新加载规则
sudo firewall-cmd --reload
删除规则

若需移除已配置的规则,将--add替换为--remove即可:

# 永久删除HTTP服务开放规则
sudo firewall-cmd --remove-service=http --permanent# 永久删除8080/tcp端口开放规则
sudo firewall-cmd --remove-port=8080/tcp --permanent# 重新加载规则
sudo firewall-cmd --reload

1.3 工作区域管理

firewalld 的 “区域” 本质是预设的规则集合,不同区域对应不同的安全级别(如 public、internal、dmz 等)。可根据服务器网络环境切换区域:

查看所有可用区域:

sudo firewall-cmd --get-zones

切换默认区域为 internal(适合内部网络,开放更多服务):

sudo firewall-cmd --set-default-zone=internal --permanent
sudo firewall-cmd --reload

为特定网卡指定区域(如为 ens33 网卡应用 dmz 区域):

sudo firewall-cmd --zone=dmz --add-interface=ens33 --permanent
sudo firewall-cmd --reload

二、控制 SELinux 端口标记

SELinux(安全增强型 Linux)通过强制访问控制(MAC)机制限制进程权限,其中 “端口标记” 是控制网络服务端口访问的核心手段 —— 只有为端口分配正确的 SELinux 类型(如 http_port_t、ssh_port_t),对应服务才能正常监听该端口。

2.1 SELinux 基础状态

首先查看 SELinux 当前模式(enforcing、permissive 或 disabled):

getenforce

或查看详细配置:

sestatus

注意:RH134 课程推荐使用 enforcing 模式(强制生效),如需临时切换为宽容模式(仅日志记录不阻止操作),执行sudo setenforce 0,切换回强制模式执行sudo setenforce 1

2.2 查看端口 SELinux 标记

每个网络服务都有默认的 SELinux 端口类型,例如:

  • SSH 服务默认使用 ssh_port_t(对应端口 22)
  • HTTP 服务默认使用 http_port_t(对应端口 80、443)

查看某服务的默认端口标记:

# 查看HTTP服务的SELinux端口类型及关联端口
semanage port -l | grep http_port_t

输出示例:

http_port_t                    tcp      80, 81, 443, 488, 8008, 8009, 8443, 9000

2.3 为非默认端口添加 SELinux 标记

当服务使用非默认端口时(如 HTTP 服务使用 8080 端口),需手动为该端口添加对应的 SELinux 标记,否则 SELinux 会阻止服务监听端口。

步骤如下:

1,查看服务所需的 SELinux 端口类型(如 HTTP 服务需要 http_port_t):

semanage port -l | grep http

2,为 8080 端口添加 http_port_t 标记(永久生效):

sudo semanage port -a -t http_port_t -p tcp 8080

3,验证端口标记是否添加成功:

semanage port -l | grep http_port_t

若输出包含 8080,则表示配置成功:

http_port_t                    tcp      8080, 80, 81, 443, 488, 8008, 8009, 8443, 9000

2.4 删除错误的端口标记

若需移除已添加的端口标记,将-a(添加)替换为-d(删除):

sudo semanage port -d -t http_port_t -p tcp 8080

2.5 解决 SELinux 相关的端口访问问题

当服务启动失败或无法访问端口时,若防火墙规则已正确配置,很可能是 SELinux 端口标记问题。可通过以下步骤排查:

1,查看 SELinux 审计日志(记录被阻止的操作):

sudo grep "SELinux is preventing" /var/log/audit/audit.log

2,若日志中提示 “bind to port” 相关的拒绝信息,确认端口是否已添加正确标记:

semanage port -l | grep <端口号>

3,若未添加,按 2.3 的步骤为端口添加正确标记即可。

三、总结

1,防火墙(firewalld)通过区域和规则控制网络流量进出,是第一道防线;

2,SELinux 通过端口标记限制服务可使用的端口,是第二道强制访问控制防线。

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

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

相关文章

leetcode-python-1941检查是否所有字符出现次数相同

题目&#xff1a; 给你一个字符串 s &#xff0c;如果 s 是一个 好 字符串&#xff0c;请你返回 true &#xff0c;否则请返回 false 。 如果 s 中出现过的 所有 字符的出现次数 相同 &#xff0c;那么我们称字符串 s 是 好 字符串。 示例 1&#xff1a; 输入&#xff1a;s “…

Snort的介绍

当然可以。以下是对 Snort 的全面介绍&#xff0c;涵盖其定义、核心功能、三种运行模式、工作原理、规则系统以及应用场景等内容。 Snort 网络入侵检测系统&#xff08;NIDS&#xff09;详解 一、Snort 简介 Snort 是一款开源的、轻量级但功能强大的 网络入侵检测与防御系统&…

滴滴二面准备(一)

结合你的简历内容和技术面试问题&#xff0c;以下是一个结构化的回答建议&#xff0c;突出你的技术深度和项目经验&#xff1a;2. 项目与实习经历 得物低代码落地页编辑器&#xff08;核心项目&#xff09; 背景&#xff1a;解决软广落地页开发周期长、迭代慢问题。技术方案&am…

socket通信在Windows和Linux上的区别

前言 笔者在将socket通信的自定义类从Linux移植到Windows时遇到一些问题&#xff0c;整理下来希望帮助到需要的人&#xff0c;同时也加深自己的理解。 差异 头文件 #ifdef _WIN32 #include <ws2tcpip.h> #define inet_pton InetPton #define SHUT_RDWR SD_BOTH #define M…

一款将PDF转化为机器可读格式的工具介绍

ps:以下内容来自MinerU项目 MinerU 项目简介 MinerU是一款将PDF转化为机器可读格式的工具&#xff08;如markdown、json&#xff09;&#xff0c;可以很方便地抽取为任意格式。 MinerU诞生于书生-浦语的预训练过程中&#xff0c;我们将会集中精力解决科技文献中的符号转化问…

代码随想录算法训练营第三十九天|62.不同路径 63.不同路径ll

62.不同路径&#xff1a; 文档讲解&#xff1a;代码随想录|62.不同路径 视频讲解&#xff1a;https://www.bilibili.com/video/BV1ve4y1x7Eu 状态&#xff1a;已做出 一、题目要求&#xff1a; 一个二维数组里&#xff0c;将(0&#xff0c;0)位置下标作为起点&#xff0c;计算…

openEuler2403安装部署Prometheus和Grafana

文章目录openEuler2403安装部署Prometheus和Grafana一、前言1.简介2.环境二、正文1.环境准备1&#xff09;JDK 安装部署&#xff08;可选&#xff09;2&#xff09;关闭防火墙2.安装 Prometheus1&#xff09;下载和安装2&#xff09;启动3&#xff09;systemd服务管理3.安装 Gr…

乐吾乐大屏可视化组态软件【SQL数据源】

乐吾乐大屏可视化组态软件&#xff08;大屏可视化设计器 - 乐吾乐Le5le&#xff09;支持直接对接SQL数据源功能&#xff0c;目前仅对企业源码客户开放。 配置SQL数据源 管理员进入可视化管理中心&#xff0c;点击SQL数据源&#xff0c;配置添加SQL数据源。 创建SQL数据源连接 …

Django高效查询:values_list实战详解

Django 实战案例 讲解 values_list 的用法。 values_list("field", flatTrue) → 获取单字段的一维列表。values_list("f1", "f2") → 获取多个字段&#xff0c;返回元组。搭配 filter / distinct / in / 外键查询 非常高效。适合用于 导出数据 …

Java数据结构——树

一、树型结构1.1 概念我们之前提到的数组&#xff0c;单链表&#xff0c;栈和队列都是一种线性结构&#xff0c;每个元素都有最多一个后继节点。而树型结构是一种非线性结构&#xff0c;它是由n&#xff08;n>0&#xff09;节点组成的一个具有层次关系的集合。它之所以叫做树…

基于LLM的月全食时空建模与智能预测:从天文现象到深度学习融合

当古老的天文学遇上现代人工智能,会碰撞出怎样的火花? 一、当月球遇见AI 月全食,这一令人惊叹的天文现象,自古以来就吸引着无数天文学家和爱好者的目光。当地球恰好运行到太阳和月球之间,完全遮挡太阳光时,我们就能目睹月球逐渐被"吞噬"然后又重焕光彩的奇妙…

LeetCode热题 42.接雨水

题目 思路&#xff1a; 通过画图观察我们其实可以很容易发现&#xff0c;每个柱子接多少水由这个地方左边最高的柱子和右边最高的柱子确定&#xff0c;因为总要形成一个坑嘛&#xff0c;然后就能接着确定&#xff1a; 当前柱子接水量 min(左边最高柱子的高度, 右边最高柱子的…

PostgreSQL与Greenplum数据库的编程语言连接

编程语言连接数据库 目前数据库一般支持HA的连接&#xff0c;即一个Coordinator内的一个节点异常后会链接到另外的一个节点&#xff0c;不会影响业务的正常运行。在JDBC配置时需要采用 高可用链接字符串(Connection URL/DSN) 的方式连接。适用于不同的编程语言中使用&#xff…

后端(JDBC)学习笔记(CLASS 1):基础篇(一)

一、引言1、数据的存储开发java程序的时候&#xff0c;数据都是存储在内存中&#xff0c;属于临时存储&#xff0c;当程序停止或重启时&#xff0c;内存中的数据就丢失了。为了解决数据的长期存储问题&#xff0c;有如下解决方案&#xff1a;1、数据通过I/O流技术&#xff0c;存…

卷对卷(Roll-to-Roll,R2R)技术的应用领域和技术进展

目录&#xff1a;第一节&#xff1a;卷对卷技术及其应用领域和工艺要求一、卷对卷技术发展现概述二、卷对卷研发和规模化应用难点重点和发展趋势三、卷对卷工艺主要应用领域及工艺要求第二节&#xff1a;卷对卷生产工艺参数及质量控制四、卷对卷生产工艺控制参数和条件五、卷对…

【Ansible】管理变量和事实知识点

1.Ansible变量名由什么组成&#xff1f;答&#xff1a;变量名必须以字母开头&#xff0c;且只能含有字母、数字和下划线。2.定义变量的方法及变量的优先级&#xff1f;答&#xff1a;按优先级从低到高排列: 在清单中定义的组变量 < 在清单或playbook所在目录的group_vars子目…

基于SpringBoot的天气预报系统的设计与实现

源码链接&#xff1a;点击下载源码 相关文档&#xff1a;点击下载相关文档 摘 要 随着科技的飞速发展和人们生活水平的不断提高&#xff0c;天气预报已成为现代社会不可或缺的一部分。无论是日常生活出行、农业生产安排&#xff0c;还是航空、海运等交通领域&#xff0c;准确…

算法(keep learning)

基础算法 背模板加刷题 排序快排 主要思想&#xff1a;分治 第一步&#xff1a;确认一个分界点&#xff0c;比如起点&#xff0c;中间点&#xff08;分界点&#xff09;&#xff0c;末点第二步&#xff1a;调整区间&#xff0c;使得第一个区间的数都小于等于分界点&#xff0c;…

Django项目架构

背景&#xff1a;很多人写 Django 时容易“什么都往 views 里塞”&#xff0c;结果项目一大就乱套了。需要把 视图层 / 业务层 / 数据层 等职责清晰分出来。图解说明Client&#xff1a;浏览器 / App / 前端调用 API。urls.py&#xff1a;定义 API 路由&#xff0c;把请求分发到…

MySQL】从零开始了解数据库开发 --- 表的操作

永远记住&#xff0c;你的存在是有意义的&#xff0c; 你很重要&#xff0c; 你是被爱着的&#xff0c; 而且你为这个世界带来了无可取代的东西。 -- 麦克西 《男孩、鼹鼠、狐狸和马》-- 从零开始了解数据库开发创建数据表查看表结构修改数据表结构重命名表复制表删除表今天我们…