【CentOS】中的Firewalld:全面介绍与实战应用(下)

🐇明明跟你说过:个人主页

🏅个人专栏:《Linux :从菜鸟到飞鸟的逆袭》🏅

🔖行路有良友,便是天堂🔖

目录

一、引言

1、iptables 时代

2、firewalld 时代

二、服务管理 

1、Firewalld中的服务定义 

2、查看已定义的服务

3、启用/禁用特定服务

启用服务

禁用服务

4、自定义服务配置

1. 创建服务配置文件

2. 编辑服务配置文件

3. 重新加载 Firewalld 配置

4. 验证自定义服务

5. 启用自定义服务

三、端口管理 

1、开放特定端口

2、关闭特定端口

3、查看当前开放的端口

4、端口转发设置

1. 启用 IP 转发

2. 设置端口转发规则

3. 使端口转发规则永久生效

5、使用 firewall-cmd 的常见选项

四、IP地址与MAC地址过滤

1、基于IP地址的访问控制

1. 查看当前区域设置

2. 允许特定 IP 地址访问特定端口

3. 拒绝特定 IP 地址访问特定端口

4. 允许或拒绝整个子网

5. 查看现有的规则

6. 删除现有的规则

2、MAC地址绑定与过滤

1. 查看当前区域设置

2. 允许特定 MAC 地址访问网络

3. 拒绝特定 MAC 地址访问网络

4. 查看现有的规则

5. 删除现有的规则


一、引言

在 CentOS 系统中,防火墙管理工具经历了从 iptables 到 firewalld 的演变。了解这一变迁过程有助于更好地理解和使用当前的防火墙管理工具。

1、iptables 时代

简介

  • iptables 是 Linux 内核中 Netfilter 项目的用户空间实用程序,用于配置 IPv4 数据包过滤规则。它允许用户定义规则以控制网络流量的进出。

功能

  1. 数据包过滤:根据源地址、目标地址、端口等条件过滤数据包。
  2. NAT:网络地址转换,主要用于互联网共享。
  3. 状态检测:跟踪连接状态,允许基于状态的规则。
  4. 丰富的规则集:支持复杂的规则和链结构,允许用户自定义网络流量控制。


配置

iptables 规则通过命令行工具 iptables 进行管理,通常规则配置会保存在 /etc/sysconfig/iptables 文件中。重启系统时,可以通过这个文件加载规则。

2、firewalld 时代

简介

  • firewalld 是一个动态管理防火墙的守护进程,提供基于区域的网络流量管理。它是在 CentOS 7 及以后版本中引入的,旨在简化防火墙管理,提供更灵活和动态的控制。

功能

  1. 动态管理:支持在不中断现有连接的情况下动态更改规则。
  2. 区域概念:基于信任级别定义不同的区域,每个区域有不同的规则。
  3. 服务管理:可以通过服务名称而不是端口号来配置规则。
  4. 接口绑定:可以将网络接口绑定到特定的区域。
  5. 丰富的接口:提供命令行工具 firewall-cmd 和图形界面工具(如 firewall-config)进行管理。

二、服务管理 

1、Firewalld中的服务定义 

在 Firewalld 中,服务定义是指预定义的服务配置,这些配置包括服务的名称、描述以及服务所需的开放端口和协议。服务定义使得管理防火墙规则更加简便,因为我们可以直接通过服务名称来允许或禁止网络流量,而无需手动指定每个端口和协议。

2、查看已定义的服务

我们可以查看 Firewalld 中所有已定义的服务:

sudo firewall-cmd --get-services

3、启用/禁用特定服务

在 Firewalld 中,可以通过命令启用或禁用特定的服务。这些操作可以是临时的(当前运行时有效)或者永久的(重启后依然有效)。

启用服务

启用服务(临时)
要在指定区域中临时启用某个服务,可以使用以下命令:

sudo firewall-cmd --zone=<区域名> --add-service=<服务名>


例如,在 public 区域中启用 HTTP 服务:

sudo firewall-cmd --zone=public --add-service=http


启用服务(永久)
要永久启用某个服务,可以添加 --permanent 参数:

sudo firewall-cmd --zone=<区域名> --add-service=<服务名> --permanent


例如,在 public 区域中永久启用 HTTP 服务:

sudo firewall-cmd --zone=public --add-service=http --permanent


启用服务后,通常需要重新加载 Firewalld 配置以应用更改:

sudo firewall-cmd --reload


禁用服务

禁用服务(临时)
要在指定区域中临时禁用某个服务,可以使用以下命令:

sudo firewall-cmd --zone=<区域名> --remove-service=<服务名>


例如,在 public 区域中禁用 HTTP 服务:

sudo firewall-cmd --zone=public --remove-service=http


禁用服务(永久)
要永久禁用某个服务,可以添加 --permanent 参数:

sudo firewall-cmd --zone=<区域名> --remove-service=<服务名> --permanent


例如,在 public 区域中永久禁用 HTTP 服务:

sudo firewall-cmd --zone=public --remove-service=http --permanent


同样,禁用服务后,通常需要重新加载 Firewalld 配置以应用更改:

sudo firewall-cmd --reload


验证服务状态
我们可以使用以下命令验证某个服务在指定区域中是否启用:

sudo firewall-cmd --zone=<区域名> --query-service=<服务名>


例如,查询 HTTP 服务是否在 public 区域中启用:

sudo firewall-cmd --zone=public --query-service=http


该命令将返回 yes 或 no,表示服务是否已启用。

 

4、自定义服务配置

在 Firewalld 中,自定义服务配置可以让你添加特定的服务,这些服务可能不包含在默认的 Firewalld 服务列表中。


1. 创建服务配置文件

自定义服务配置文件存储在 /etc/firewalld/services/ 目录下。文件名应以 .xml 结尾。例如,创建一个名为 my-custom-service.xml 的文件:

sudo nano /etc/firewalld/services/my-custom-service.xml


2. 编辑服务配置文件

在编辑器中,定义你的自定义服务。下面是一个示例配置文件,用于创建一个名为 "My Custom Service" 的服务,它使用 TCP 端口 12345:

<?xml version="1.0" encoding="utf-8"?>
<service><short>My Custom Service</short><description>A custom service for demonstration purposes.</description><port protocol="tcp" port="12345"/>
</service>


3. 重新加载 Firewalld 配置

保存并关闭文件后,重新加载 Firewalld 以应用新的服务配置:

sudo firewall-cmd --reload


4. 验证自定义服务

验证新服务是否已添加:

sudo firewall-cmd --get-services | grep my-custom-service


如果配置正确,你应该能看到 my-custom-service 列在输出中。

5. 启用自定义服务

现在我们可以像管理其他服务一样启用或禁用你的自定义服务。例如,启用它:

sudo firewall-cmd --zone=public --add-service=my-custom-service


或永久启用它:

sudo firewall-cmd --zone=public --add-service=my-custom-service --permanent
sudo firewall-cmd --reload


验证服务状态

验证自定义服务是否启用:

sudo firewall-cmd --zone=public --query-service=my-custom-service

三、端口管理 

1、开放特定端口

临时开放端口
要在当前区域(默认是 public)中临时开放一个特定端口(例如 TCP 端口 8080),请使用以下命令:

sudo firewall-cmd --zone=public --add-port=8080/tcp


这将在当前会话中开放该端口,但不会在重启后保留。

永久开放端口
要永久开放一个端口,请添加 --permanent 选项,然后重新加载 Firewalld 配置:

sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --reload


2、关闭特定端口

临时关闭端口
要在当前区域中临时关闭一个端口(例如 TCP 端口 8080),请使用以下命令:

sudo firewall-cmd --zone=public --remove-port=8080/tcp


这将在当前会话中关闭该端口,但不会在重启后保留。

永久关闭端口
要永久关闭一个端口,请添加 --permanent 选项,然后重新加载 Firewalld 配置:

sudo firewall-cmd --zone=public --remove-port=8080/tcp --permanent
sudo firewall-cmd --reload


3、查看当前开放的端口

要查看当前区域中所有开放的端口,可以使用以下命令:

sudo firewall-cmd --zone=public --list-ports

4、端口转发设置

在 Firewalld 中设置端口转发(也称为端口重定向)可以通过以下步骤完成。假设我们希望将外部访问的某个端口重定向到另一台服务器的端口。

示例:设置端口转发
转发所有到本机 8080 端口的流量到内网的 192.168.1.100 的 80 端口

1. 启用 IP 转发

首先需要在系统中启用 IP 转发。编辑 /etc/sysctl.conf 文件并添加以下行:

net.ipv4.ip_forward = 1


使更改生效:

sudo sysctl -p


2. 设置端口转发规则

通过 firewall-cmd 命令来设置端口转发规则:

sudo firewall-cmd --zone=public --add-forward-port=port=8080:proto=tcp:toport=80:toaddr=192.168.1.100


以上命令将会在当前会话中生效。

3. 使端口转发规则永久生效

要使上述端口转发规则永久生效,可以添加 --permanent 选项并重新加载配置:

sudo firewall-cmd --zone=public --add-forward-port=port=8080:proto=tcp:toport=80:toaddr=192.168.1.100 --permanent
sudo firewall-cmd --reload

5、使用 firewall-cmd 的常见选项

  • --zone=<zone>:指定区域,默认为 public。
  • --add-port=<port>/<protocol>:添加要开放的端口和协议(例如 8080/tcp)。
  • --remove-port=<port>/<protocol>:删除要关闭的端口和协议。
  • --permanent:使更改永久生效,需要重新加载配置。
  • --reload:重新加载 Firewalld 配置以应用永久更改。
  • --list-ports:列出当前区域中开放的所有端口。

四、IP地址与MAC地址过滤

1、基于IP地址的访问控制

在 Firewalld 中,基于 IP 地址的访问控制可以通过创建特定的规则来允许或拒绝特定 IP 地址的访问。

基于 IP 地址的访问控制配置步骤

1. 查看当前区域设置

首先,查看当前系统使用的防火墙区域,以便在该区域下进行配置:

sudo firewall-cmd --get-active-zones


假设返回结果为 public,那么接下来的配置将针对 public 区域进行。

2. 允许特定 IP 地址访问特定端口

假设我们希望允许 IP 地址 192.168.1.10 访问服务器的 22 端口(SSH),可以使用以下命令:

sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.10" port protocol="tcp" port="22" accept'


要使该规则永久生效,可以加上 --permanent 参数,并重新加载防火墙规则:

sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.10" port protocol="tcp" port="22" accept' --permanent
sudo firewall-cmd --reload


3. 拒绝特定 IP 地址访问特定端口

假设我们希望拒绝 IP 地址 192.168.1.20 访问服务器的 80 端口(HTTP),可以使用以下命令:

sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.20" port protocol="tcp" port="80" reject'


要使该规则永久生效,可以加上 --permanent 参数,并重新加载防火墙规则:

sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.20" port protocol="tcp" port="80" reject' --permanent
sudo firewall-cmd --reload


4. 允许或拒绝整个子网

如果需要允许或拒绝整个子网的访问,可以指定子网地址。比如允许整个 192.168.1.0/24 子网访问服务器的 80 端口,可以使用以下命令:

sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="80" accept'


要使该规则永久生效,可以加上 --permanent 参数,并重新加载防火墙规则:

sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="80" accept' --permanent
sudo firewall-cmd --reload


5. 查看现有的规则

要查看当前区域中的所有 rich 规则,可以使用以下命令:

sudo firewall-cmd --zone=public --list-rich-rules


6. 删除现有的规则

假设需要删除先前添加的允许 IP 地址 192.168.1.10 访问 22 端口的规则,可以使用以下命令:

sudo firewall-cmd --zone=public --remove-rich-rule='rule family="ipv4" source address="192.168.1.10" port protocol="tcp" port="22" accept'


要使该删除操作永久生效,可以加上 --permanent 参数,并重新加载防火墙规则:

sudo firewall-cmd --zone=public --remove-rich-rule='rule family="ipv4" source address="192.168.1.10" port protocol="tcp" port="22" accept' --permanent
sudo firewall-cmd --reload

2、MAC地址绑定与过滤

在 Firewalld 中,MAC 地址绑定与过滤可以通过创建特定的规则来限制或允许基于 MAC 地址的访问。这种方式可以用于网络访问控制,确保只有特定设备能够访问某些资源。


1. 查看当前区域设置

首先,查看当前系统使用的防火墙区域,以便在该区域下进行配置:

sudo firewall-cmd --get-active-zones


假设返回结果为 public,那么接下来的配置将针对 public 区域进行。

2. 允许特定 MAC 地址访问网络

假设我们希望允许 MAC 地址 00:11:22:33:44:55 的设备访问网络,可以使用以下命令:

sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source mac="00:11:22:33:44:55" accept'


要使该规则永久生效,可以加上 --permanent 参数,并重新加载防火墙规则:

sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source mac="00:11:22:33:44:55" accept' --permanent
sudo firewall-cmd --reload


3. 拒绝特定 MAC 地址访问网络

假设我们希望拒绝 MAC 地址 00:11:22:33:44:66 的设备访问网络,可以使用以下命令:

sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source mac="00:11:22:33:44:66" drop'


要使该规则永久生效,可以加上 --permanent 参数,并重新加载防火墙规则:

sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source mac="00:11:22:33:44:66" drop' --permanent
sudo firewall-cmd --reload


4. 查看现有的规则

要查看当前区域中的所有 rich 规则,可以使用以下命令:

sudo firewall-cmd --zone=public --list-rich-rules


5. 删除现有的规则

假设需要删除先前添加的允许 MAC 地址 00:11:22:33:44:55 的规则,可以使用以下命令:

sudo firewall-cmd --zone=public --remove-rich-rule='rule family="ipv4" source mac="00:11:22:33:44:55" accept'


要使该删除操作永久生效,可以加上 --permanent 参数,并重新加载防火墙规则:

sudo firewall-cmd --zone=public --remove-rich-rule='rule family="ipv4" source mac="00:11:22:33:44:55" accept' --permanent
sudo firewall-cmd --reload

  💕💕💕每一次的分享都是一次成长的旅程,感谢您的陪伴和关注。希望这些关于Linux的文章能陪伴您走过技术的一段旅程,共同见证成长和进步!😺😺😺

🧨🧨🧨让我们一起在技术的海洋中探索前行,共同书写美好的未来!!! 

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

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

相关文章

【新人系列】Python 入门(九):数据结构 - 中

✍ 个人博客&#xff1a;https://blog.csdn.net/Newin2020?typeblog &#x1f4dd; 专栏地址&#xff1a;https://blog.csdn.net/newin2020/category_12801353.html &#x1f4e3; 专栏定位&#xff1a;为 0 基础刚入门 Python 的小伙伴提供详细的讲解&#xff0c;也欢迎大佬们…

如何用【钉钉文档】发公告

功能亮点 ✔️借助钉钉文档强大的编辑能力&#xff0c;可以让编写出的公告更加精美。 ✔️将钉钉文档一键导入公告&#xff0c;可以完整保留已经编辑好的格式&#xff0c;无需再手动调整。 ✔️使用钉钉文档&#xff0c;可以将所有公告内容有序沉淀和保存。 &#x1f4a1; 使…

工位管理自动化:Spring Boot企业级工具

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理企业级工位管理系统的相关信息成为必然。开…

相亲小程序(源码+文档+部署+讲解)

最近我在挖掘一些优秀的开源项目时&#xff0c;无意间发现了一个相当给力的系统——相亲小程序管理系统。这个系统不仅功能实用&#xff0c;而且代码结构清晰&#xff0c;易于二次开发。作为一名技术爱好者&#xff0c;我觉得有必要把这个好东西推荐给我的读者们。接下来&#…

Filter and Search 筛选和搜索

Goto Data Grid 数据网格 Filter and Search 筛选和搜索 Filter Drop-down Menus (Excel-style) 筛选器下拉菜单&#xff08;Excel 样式&#xff09; 要调用列的筛选器下拉菜单&#xff0c;请单击列标题中的筛选器图标。在 “Values” 选项卡中&#xff0c;用户可以从 Data …

java项目报错:错误提示Could not initialize class com.jacob.com.ComThread

java项目报错&#xff1a;错误提示Could not initialize class com.jacob.com.ComThread 下载地址&#xff1a; 通过网盘分享的文件&#xff1a;jacob-1.19 链接: https://pan.baidu.com/s/1ouudh7A2-Y2kqPh_q-WYiA?pwdqhr3 提取码: qhr3 –来自百度网盘超级会员v7的分享 安…

Linux服务管理-多路径multipath

多路径Multipath 概述 多路径&#xff08;Multipath&#xff09;技术&#xff0c;特别是在存储系统中&#xff0c;是一种提高可靠性和性能的重要手段。多路径技术允许服务器通过多条物理路径连接到存储设备。这些路径可以是包含独立电缆、交换机和控制器的物理SAN连接。 多路…

省级绿色金融指数数据(1990-2021年)

绿色信贷是指银行在信贷业务中采纳环境标准&#xff0c;对污染企业的资金进行限制&#xff0c;同时对环保企业给予扶持。这种模式旨在促使贷款企业承担环境责任&#xff0c;实现节能减排&#xff0c;优化产业结构&#xff0c;以及改变经济增长方式。 1990-2021年省级绿色金融指…

【go从零单排】通道select、通道timeout、Non-Blocking Channel Operations非阻塞通道操作

&#x1f308;Don’t worry , just coding! 内耗与overthinking只会削弱你的精力&#xff0c;虚度你的光阴&#xff0c;每天迈出一小步&#xff0c;回头时发现已经走了很远。 &#x1f4d7;概念 select 语句是 Go 的一种控制结构&#xff0c;用于等待多个通道操作。它类似于 s…

Unity资源打包Addressable AA包

从零到一 很多资料都是通过一步步设置讲解的&#xff0c;有时很想先快速实现&#xff0c;再了解细节。 下面就是远程加载Cube.prefab然后实例化简单的代码。 代码中可以不需要远程的网址&#xff0c;不需要资源下载的位置&#xff0c;不需要判断是否已经下载到本地。 那是如…

Microsoft Visual C++ 安装失败 0x80070666

“0x80070666”错误通常在尝试安装 Microsoft Visual C、Lumberyard 或类似的分发包时发生。该错误信息通常在安装过程的开始阶段就被报告。此问题并非特定于某一Windows版本&#xff0c;已经确认在Windows 7、Windows 8.1和Windows 10中均会发生。 0x80070666 错误在安装 Micr…

netcat工具安装和使用

netcat是一个功能强大的网络实用工具&#xff0c;可以从命令⾏跨⽹络读取和写⼊数据。 netcat是为Nmap项⽬编写的&#xff0c;是⽬前分散的Netcat版本系列的经典。 它旨在成为可靠的后端⼯具&#xff0c;可⽴即为其他应⽤程序和⽤户提供⽹络连接。 一&#xff0c;下载安装 1&a…

带隙基准学习笔记一

1.带隙基准原理&#xff1a; 带隙基准电压源采用BJT&#xff0c;利用其基极-发射极电压的负温度系数和两个不同的BJT基极-发射极电压之差的正温度系数用于获得温度系数为零的基准电压源&#xff0c;因为最终计算的输出电压接近硅晶体的一个带隙电压&#xff0c;所以被称为带隙…

使用 Node.js 了解 MVC 模式

模型-视图-控制器 &#xff08;MVC&#xff09; 模式是 Web 开发中最流行的架构模式之一。通过将应用程序划分为三个相互关联的组件&#xff08;模型、视图和控制器&#xff09;&#xff0c;MVC 促进了有组织、可维护和可扩展的代码。Node.js 具有异步处理和庞大的生态系统&…

35.3K+ Star!PhotoPrism:一款基于AI的开源照片管理工具

PhotoPrism 简介 PhotoPrism[1] 是一个为去中心化网络设计的AI照片应用,它利用最新技术自动标记和查找图片,实现自动图像分类与本地化部署,你可以在家中、私有服务器或云端运行它。 项目特点 主要特点 浏览所有照片和视频,无需担心RAW转换、重复项或视频格式。 使用强大的…

VMware虚拟机安装Win7专业版保姆级教程(附镜像包)

一、Win7镜像下载: 链接&#xff1a;https://pan.baidu.com/s/1tvN9hXCVngUzpIC6b2OGrA 提取码&#xff1a;a66H 此镜像为Win7专业版(收藏级镜像 已自用几年)&#xff0c;官方纯净系统没有附带任何其他第三方软件。 二、配置虚拟机 1.创建新的虚拟机。 这里我们以最新的VMware…

中国前首富胡志标受邀出席创客匠人“全球创始人IP领袖高峰论坛”

创客匠人正式官宣&#xff01;原爱多VCD创始人、中国前首富胡志标受邀出席创客匠人5000人“全球创始人IP领袖高峰论坛”&#xff0c;将与我们携手共赴这场商业巅峰盛宴。 由创客匠人打造的“全球创始人IP领袖高峰论坛”将在2024年12月26日-28日在厦门市国际博览会议中心如期举…

TCP可靠连接的建立和释放,TCP报文段的格式,UDP简单介绍

TCP连接的建立&#xff08;三次握手&#xff09; 建立连接使用的三报文 SYN 报文仅用于 TCP 三次握手中的第一个和第二个报文&#xff08;SYN 和 SYN-ACK&#xff09;&#xff0c;用于初始化连接的序列号。数据传输阶段不再使用 SYN 标志。 SYN 报文通常只携带连接请求信息&a…

flink 同步oracle11g数据表到pg库

1. 关闭防火墙和selinux systemctl stop firewalld systemctl disable firewalld systemctl status firewalldvi /etc/selinux/config 修改为disabled2.安装java8 yum list java-1.8* yum install java-1.8.0-openjdk* -yjava -version3.下载和部署postgresql 看需求安装pg库…

012_SSH_Mysql网上订餐系统(论文+程序)_lwplus87

摘 要 本文讲述了基于JSP技术构建的网上订餐系统的设计与实现。所谓的网上订餐系统是通过网站推广互联企业的商品和技术服务&#xff0c;并使客户随时可以了解企业和企业的产品&#xff0c;为客户提供在线服务和订单处理功能。 从长期的战略目标来说&#xff0c;网站不仅是…