Linux——firewalld防火墙(笔记)

目录

一:Firewalld防火墙的概述

(1)firewalld简介

(2)firewalld&iptables的关系

(3)firewalld与iptables service的区别

1. ‌规则管理方式‌

2. ‌默认策略与设计逻辑‌

3. ‌配置文件与持久化‌

4. ‌适用场景与兼容性‌

5. ‌底层实现与扩展性‌

二:Firewalld网络区域

三:Firewalld防火墙firewall——cmd命令设置

1、获取预定义信息

2、区域管理

3、服务管理

4、端口管理

5、两种配置模式


一:Firewalld防火墙的概述

(1)firewalld简介

    它的主要作用为包过滤机制提供匹配规则(或策略),通过各种不同的规则告诉net filter对来自指定源、前往指定目的或具有某些协议特征的数据包采取何种处理方式为了更加方便地组织和管理防火墙。

    firewalld提供了支持网站区域所定义的网络链接以及接口安全等级的动态防火墙管理工具,其设计以‌区域(Zone)‌和‌服务(Service)‌为核心,简化了传统防火墙规则的配置流程。并且拥有两种配置模式:短暂性配置与永久性配置,支持服务或应用程序直接添加防火墙规则接口。

(2)firewalld&iptables的关系

    firewalld自身并不具备防火墙的功能,而是和iptables一样需要通过内核的net filter来实现。他们的作用都是用于维护规则,而真正使用规则干活的是内核的net filter,然而他们的结构以及使用方法并不相同。

    系统提供了图形化的配置工具firewall-config、system-config-firewall,提供命令行客户端firewall-cmd,用于配置firewalld永久性或非永久性运行时间的改变:依次用iptables工具与执行数据包筛选的内核中的Netfilter通信。逻辑如下:

    iptables服务和firewalld都是通过iptables命令与内核netfilter进行交互的。在Euler系统中,我们仍然可以使用iptables命令来管理我们的防火墙。唯一不同的是当我们重启服务器或重启firewalld时,iptables命令管理的规则不会自动加载,反而会被firewalld的规则代替。 

(3)firewalld与iptables service的区别

1. ‌规则管理方式
  • Firewalld
    • 采用动态规则管理,支持运行时修改单条规则,无需重启服务即可生效(临时规则),永久规则需配合 --permanent 参数保存‌。
    • 规则更新时不会中断现有网络连接‌。
  • iptables
    • 规则修改后需全量刷新(iptables-restore 或 service iptables restart),导致现有连接可能中断‌。
    • 所有规则通过链式结构(INPUT/OUTPUT/FORWARD 等)管理,需手动维护规则顺序‌。

2. ‌默认策略与设计逻辑
  • Firewalld
    • 默认拒绝所有流量,需显式开放服务或端口(如 HTTP、SSH)‌。
    • 以‌区域(Zone)‌为核心,根据网络接口或源 IP 自动匹配规则(如 publictrusted),适用于多网络环境切换‌。
  • iptables
    • 默认允许所有流量,需显式拒绝不需要的访问‌。
    • 基于‌接口‌和‌链式规则‌,直接控制具体端口或协议,适合精细化但复杂度高的场景‌。

3. ‌配置文件与持久化
  • Firewalld
    • 配置文件以 XML 格式存储于 /etc/firewalld/,支持自定义服务模板和区域规则‌68。
    • 临时规则与永久规则分离,需通过 --reload 同步配置‌。
  • iptables
    • 规则保存于文本文件 /etc/sysconfig/iptables,直接编辑后需手动加载‌。
    • 所有规则修改需显式保存(service iptables save)才能持久化‌。

4. ‌适用场景与兼容性
  • Firewalld
    • 适合动态网络环境(如频繁切换信任区域)及追求配置便捷性的场景‌。
    • 默认集成于 CentOS/RHEL 7+ 等现代 Linux 发行版‌。
  • iptables
    • 兼容老旧系统(如 CentOS 6 及更早版本),适合需要复杂规则(如深度包检测、自定义链)的场景‌。
    • 与 Firewalld 冲突,二者不可同时启用‌。

5. ‌底层实现与扩展性
  • 共同点
    • 均依赖内核的 Netfilter 框架,实际流量控制由内核模块完成‌。
  • 差异点
    • Firewalld 可通过直接接口(Direct Interface)调用 iptables 语法添加自定义规则‌。
    • iptables 提供更底层的控制,支持 NAT、流量整形等高级功能‌。

二:Firewalld网络区域

    firewalld将所有的网络数据流量划分为多个区域,从而简化防火墙管理。根据数据包的源IP地址或传入网络接口等条件,将数据流量传入相应区域的防火墙规则。对于进入系统的数据包,首先检查的就是其源地址。逻辑如下:

  • 若源地址关联到特定的区域,则执行该区域所制定的规则。
  • 若源地址未关联到特定的区域,则使用传入网络接口的区域并执行该区域所指定的规则。
  • 若网络接口未关联到特定的区域,则使用默认区域并执行该区域所制定的规则。

    默认区域不是单独的区域,而是指向系统上定义的某个其他区域。默认情况下,默认区域是public,但是系统管理员可以更改默认区域。以上匹配规则,按照先后顺序,第一个匹配的规则胜出。

    在每个区域中都可以配置其要打开或者关闭的一系列服务或端口,firewalld的每个预定义的区域都设置了默认打开的服务。预定义区域说明如下:

区域默认策略规则
trusted允许所有的数据包
home拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、mdns、ipp-client、amba-clent与dhcpv6-client服务相关,则允许流量
internal

拒绝流入的流量,除非与流出的流量数相关;而如果流量与ssh、ipp-client与dhcpv6-client服务相关,则允许流量

work拒绝流入的流量。除非与流出的流量相关;而如果流量与ssh、dhcpv6-client服务相关,则允许流量
public拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、dhcpv6-client服务相关,则允许流量
external拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh服务相关,则允许流量
dmz拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh服务相关,则允许流量
block拒绝流入的流量,除非与流出的流量相关
drop拒绝流入的流量,除非与流出的流量相关

三:Firewalld防火墙firewall——cmd命令设置

1、获取预定义信息

    firewal1-cmd 预定义信息主要包括三种:可用的区域、可用的服务以及可用的 ICMP 阻塞类型,具体的查看命令如下所示。
 

[root@localhost ~]# firewall-cmd --get-zones
work drop internal external trusted home dmz public block
[root@localhost ~]# firewall-cmd --get-service
RH-Satellite-6 amanda-client amanda-k5-client baculabacula-client cephceph-mondhcp
dhcpv6 dhcpv6-client dnsdocker-registry dropbox-lansyncfreeipa-ldap
...    ...    //省略部分内容
transmission-clientvdsmvnc-serverwbem-https xmpp-bosh xmpp-client xmpp-local
xmpp-server
[root@localhost ~]# firewall-cmd --get-icmptypes
...    ...    //省略部分内容
timestamp-request

    firewall-cmd --get-icmptypes 命令的执行结果中各种阻塞类型的含义分别如下:

阻塞类型含义
destination-unreachable目的地址不可达
echo-reply应答回应(pong)
parameter-problem参数问题
redirect重新定向
router-advertisement路由器通告
router-solicitation路由器征寻
source-quench源端抑制
time-exceeded超时
timestamp-reply时间戳应答回应
timestamp-request时间戳请求

2、区域管理

    使用firewall-cmd命令可以实现获取和管理区域,为指定区域绑定网络接口等功能。区域管理选项说明如下: 

选项说明
--get-default-zone显示网络连接或接口的默认区域
--set-default-zone=<zone>设置网络连接或接口的默认区域
--get-active-zones显示已激活的所有区域
--get-zone-of-interface=<interface>显示指定接口绑定的区域
--zone=<zone> --add-interface=<interface>为指定接口绑定区域
--zone=<zone> --change-interface=<interface>为指定的区域更改绑定的网络接口
--zone=<zone> --remove-interface=<interface>为指定的区域删除绑定的网络接口
--list-all-zones显示所有区域及其规则
[--zone=<zone>] --list-all显示所有指定区域的所有规则

具体操作如下:

(1)显示当前系统中的默认区域.

[root@localhost ~]# firewall-cmd --get-default-zone
public

(2)显示默认区域的所有规则。
 

[root@localhost ]# firewall-cmd -list-all
public(active)target: default
icmp-block-inversion:no
interfaces:ens160
sources:
services:dhcpv6-client ssh
ports:
protocols:
masquerade:no
forward-ports:
sourceports:
icmp-blocks:rich rules:

(3)显示网络接口 ens160 对应区域。

[root@localhost ~]# firewall-cmd --get-zone-of-interface=ens160
public

(4)将网络接口 ens160 对应区域更改为 internal 区域,

[root@localhost ~]# firewall-cmd --zone=internal --change-interface=ens160
The interface is under control of NetworkManager, setting zone to 'internal'. success
[root@localhost ~]# firewall-cmd --zone=internal --list-interfaces
ens160
[root@localhost ~]# firewall-cmd --get-zone-of-interface=ens160
internal

(5)显示所有激活区域.

[root@localhost ~]# firewall-cmd--get-active-zones
internal
interfaces:ens160 

3、服务管理

    为了方便管理,firewalld 预先定义了很多服务,存放在 /usr/lib/firewalld/services/ 目录中,服务通过单个的 XML配置文件来指定。这些配置文件则按以下格式命名:service-name.xml,每个文件对应一项具体的网络服务,如 ssh 服务等。service 配置具有以下优点:

  • 通过服务名字来管理规则更加人性化;
  • 通过服务来组织端口分组的模式更加高效。如果一个服务使用了若干个网络端口,则服务的配置文件就相当于提供了到这些端口的规则管理的批量操作快捷方式。

    下列为firewall-cmd命令区域中服务管理的常用选项:

参数作用
--get-default-zone查访默认的区域名称
--set-default-zone=<区域名称>设置默认的区域,使其永久生效
--get-zones显示可以的区域
--get-services显示预定义的服务
--get-active-zones显示当前正在使用的区域、来源地址和网卡名称
--add-source=将源自此IP或子网的流量导向指定的区域
--remove-source=不再将源自此IP或子网的流量导向这个区域
--add-interface=<网络名称>将源自该网卡的所有流量都导向某个指定区域
--change-interface=<网卡名称>将某个网卡与区域进行关联
--list-all显示当前区域的网卡配置参数、资源、端口以及服务等信息
--list-all-zones显示所有区域的网卡配置参数、资源】端口以及服务等信息
--add-service=<服务名>设置默认区域允许该服务的流量
--add-port=<端口号/协议>设置默认区域允许该端口的流量
--remove-service=<服务号>设置默认区域不再允许该服务的流量
--remove-port=<端口号/协议>设置默认区域不再允许该端口的流量
--reload让“永久生效”的配置规则立即生效,并覆盖当前的配置规则
--panic-on开启应急状态模式
--panic-off关闭应急状态模式

(1)为默认区域设置允许访问的服务。

[root@localhost ~]# firewall-cmd --list-services    //显示默认区域内允许访问的所有服务
dhcpv6-clientssh
[root@localhost ~]# firewall-cmd --add-service=http    //设置默认区域允许访问 http 服务
success
[root@localhost ~]# firewall-cmd --add-service=https    //设置默认区域允许访间 https 服务
success
[root@localhost ~]# firewall-cmd --list-services
dhcpv6-client ssh http https

 (2)为 internal 区域设置允许访问的服务,

[root@localhost ~]# firewall-cmd --zone=internal --add-service=mysql    //设置 internal 区域允许访问 mysq1 服务
success
[root@localhost~]# firewall-cmd --zone=internal--remove-service=samba-client    //设置 internal 区域不允许访问 samba-client 服务
success
[root@localhost ~]# firewall-cmd --zone=internal --list-services    //显示 internal 区域内允许访问的所有服务
ssh mdns dhcpv6-client mysql

4、端口管理

    在进行服务配置时,预定义的网络服务可以使用服务名配置,服务所涉及的端口就会自动打开。但是,对于非预定义的服务只能手动为指定的区域添加端口。例如,执行以下操作即可实现在 internal 区域打开 443/TCP 端口。

[root@localhost ~]# firewall-cmd --zone=internal--add-port=443/tcp
success

    若想实现在 internal 区域禁止 443/TCP 端口访问,可执行以下命令。

root@localhost ~]# firewall-cmd --zone=internal --remove-port=443/tcp
success

5、两种配置模式

    前面提到 firewall-cmd 命令工具有两种配置模式:运行时模式表示当前内存中运行的防火墙配置,在系统或 firewalld 服务重启、停止时配置将失效;永久模式表示重启防火墙或重新加载防火墙时的规则配置,是永久存储在配置文件中的。
firewa11-cmd 命令工具与配置模式相关的选项有三个:

  • --reload:重新加载防火墙规则并保持状态信息,即将永久配置应用为运行时配置。
  • --permanent:带有此选项的命令用于设置永久性规则,这些规则只有在重新启动 firewalld 或重新加载防火墙规则时才会生效:若不带有此选项,表示用于设置运行时规则。
  • --runtime-to-permanent:将当前的运行时配置写入规则配置文件中,使之成为永久性配置。

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

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

相关文章

JS中实现类似sleep、wait、delay的延时功能

前言 编写代码时很多时候需要进行流程化的操作&#xff0c;各个流程间通常需要等待一定时间&#xff0c;这在很多语言中通常可以使用 sleep 、 wait 、 delay 等函数来实现。JavaScript原生并没有类似的功能&#xff0c;想要延时通常就是使用 setTimeout(functionRef, delay) …

Elasticsearch:使用 ES|QL 进行搜索和过滤

本教程展示了 ES|QL 语法的示例。请参考 Query DSL 版本&#xff0c;以获得等效的 Query DSL 语法示例。 这是一个使用 ES|QL 进行全文搜索和语义搜索基础知识的实践介绍。 有关 ES|QL 中所有搜索功能的概述&#xff0c;请参考《使用 ES|QL 进行搜索》。 在这个场景中&#x…

Java 动态代理实现

Java 动态代理实现 一、JDK动态代理二、CGLIB动态代理三、动态代理的应用场景四、JDK代理与CGLIB代理比较 动态代理是Java中一种强大的技术&#xff0c;它允许在运行时创建代理对象&#xff0c;用于拦截对目标对象的方法调用。 一、JDK动态代理 JDK动态代理是Java标准库提供的代…

Apache IoTDB V2.0.2/V1.3.4 发布|新增表模型权限管理、UDF、嵌套查询功能

Release Announcement Version 2.0.2/1.3.4 Apache IoTDB V2.0.2、V1.3.4 已经发布&#xff01; V2.0.2 作为树表双模型正式版本&#xff0c;主要新增表模型权限管理、用户管理以及相关操作鉴权&#xff0c;并新增了表模型 UDF、系统表和嵌套查询等功能。 V1.3.4 主要新增模式…

鸿蒙开发11-ARKUI框架

ARKUI&#xff08;方舟 UI 框架&#xff09;是 HarmonyOS Next&#xff08;原 OpenHarmony&#xff09;的核心 UI 开发框架&#xff0c;基于声明式编程范式&#xff0c;支持 ArkTS 语言&#xff0c;能够高效构建跨设备的响应式应用。以下是对 ARKUI 框架及开发的详细介绍&#…

Linux 进程间通信详解

一.进程间通信介绍 1. 进程间通信概念 进程间通信&#xff08;Inter-Process Communication, IPC&#xff09;是指在不同进程之间传递或交换信息的一种机制。在操作系统中&#xff0c;进程是资源分配和独立运行的基本单位&#xff0c;它们拥有各自独立的内存空间和系统资源。…

从0开始掌握动态规划

动态规划的核心思想 -- 以空间换时间 复杂点说通过分解问题为子问题并存储子问题解来优化复杂计算的算法策略。 简单看个问题。 一&#xff0c;初始&#xff1a;求最长连续递增子序列 nums [10,9,2,5,3,7,101,18] 求上面数组中的最长连续递增子序列&#xff0c;输出其长度 …

Python Requests 库:从安装到精通

摘要 本文详细介绍 Python Requests 库的安装与使用&#xff0c;通过常见示例让你轻松掌握。 一、引言 在当今的互联网时代&#xff0c;与各种 Web 服务进行交互是非常常见的需求。Python 作为一门功能强大且易于学习的编程语言&#xff0c;提供了许多用于网络请求的库&…

Manus技术架构、实现内幕及分布式智能体项目实战

Manus技术架构、实现内幕及分布式智能体项目实战 模块一&#xff1a; 剖析Manus分布式多智能体全生命周期、九大核心模块及MCP协议&#xff0c;构建低幻觉、高效且具备动态失败处理能力的Manus系统。 模块二&#xff1a; 解析Manus大模型Agent操作电脑的原理与关键API&#xf…

C算术运算符 printf输出格式 字符指针打印输出 使用scanf函数进行输入

一 算术运算符 加, 一元取正 - 减, 一元取负 * 乘 / 除 % 求余 -- 自减1 自加1 逻辑运算符 && 逻辑与 || 逻辑或 ! 逻辑非 关系运算符 > 大于 > 大于等于 < 小于 < 小于等于 等于 ! 不等于 位运算符号 & 按位与 | 按位或 ^ 按位异或…

STM32中Hz和时间的转换

目录 一、常见的频率单位及其转换 二、计算公式 三、STM32中定时器的应用 四、例子 一、常见的频率单位及其转换 赫兹&#xff08;Hz&#xff09;是频率的国际单位&#xff0c;表示每秒钟周期性事件发生的次数。 1 kHz&#xff08;千赫兹&#xff09; 1,000 Hz1 MHz&#…

《分布式软总线:不同频段Wi-Fi环境下设备发现兼容性难题》

分布式软总线技术作为实现设备互联互通的关键&#xff0c;正逐渐成为构建万物互联世界的基石。然而&#xff0c;当分布式软总线面临不同频段Wi-Fi环境时&#xff0c;设备发现的兼容性问题成为了阻碍其广泛应用的一大挑战。这一问题不仅影响着用户体验&#xff0c;也制约着分布式…

MCP(Model Context Protocol 模型上下文协议)科普

MCP&#xff08;Model Context Protocol&#xff0c;模型上下文协议&#xff09;是由人工智能公司 Anthropic 于 2024年11月 推出的开放标准协议&#xff0c;旨在为大型语言模型&#xff08;LLM&#xff09;与外部数据源、工具及服务提供标准化连接&#xff0c;从而提升AI在实际…

【mongodb】数据库操作

目录 1. 查看所有数据库2. 切换到指定数据库&#xff08;若数据库不存在&#xff0c;则创建&#xff09;3. 查看当前使用的数据库4. 删除当前数据库5.默认数据库 1. 查看所有数据库 1.show dbs2.show databases 2. 切换到指定数据库&#xff08;若数据库不存在&#xff0c;则…

ICPR-2025 | 让机器人在未知环境中 “听懂” 指令精准导航!VLTNet:基于视觉语言推理的零样本目标导航

作者&#xff1a;Congcong Wen, Yisiyuan Huang, Hao Huang ,Yanjia Huang, Shuaihang Yuan, YuHao, HuiLin and Yi Fang 单位&#xff1a;纽约大学阿布扎比分校具身人工智能与机器人实验室&#xff0c;纽约大学阿布扎比分校人工智能与机器人中心&#xff0c;纽约大学坦登工程…

基于DeepSeek的考研暑假日志分析

注&#xff1a;我去年考研时写了日志&#xff0c;大致记录了我每天的主要活动。由于过于琐碎&#xff0c;一直没有翻看。突发奇想&#xff0c;现在利用deepseek总结其中规律。 从你的日志中可以总结出以下规律和活动兴衰起落&#xff1a; ​​一、学习活动规律与演变​​ ​​…

【刷题Day20】TCP和UDP

TCP 和 UDP 有什么区别&#xff1f; TCP提供了可靠、面向连接的传输&#xff0c;适用于需要数据完整性和顺序的场景。 UDP提供了更轻量、面向报文的传输&#xff0c;适用于实时性要求高的场景。 特性TCPUDP连接方式面向连接无连接可靠性提供可靠性&#xff0c;保证数据按顺序…

REST 架构详解:从概念到应用的全面剖析

REST&#xff08;Representational State Transfer&#xff09;即表述性状态转移&#xff0c;是一种用于构建网络应用程序的架构风格和设计理念&#xff0c;由计算机科学家罗伊・菲尔丁&#xff08;Roy Fielding&#xff09;在 2000 年提出。以下是关于它的详细介绍&#xff1a…

蓝桥杯之递归二

1.数的划分 题目描述 将整数 nn 分成 kk 份&#xff0c;且每份不能为空&#xff0c;任意两份不能相同(不考虑顺序)。 例如&#xff1a;n7&#xff0c;k3n7&#xff0c;k3&#xff0c;下面三种分法被认为是相同的。 1&#xff0c;1&#xff0c;5;1&#xff0c;5&#xff0c;…

LeetCode(Hot.2)—— 49.字符异位词分组题解

Problem: 49. 字母异位词分组 字母异位词的定义是&#xff1a;两个单词的字母组成一样&#xff0c;但顺序可以不同&#xff0c;比如 eat、tea 和 ate 就是一个组的。 思路 将每个字符串按字母排序&#xff0c;把排序后的字符串作为 key&#xff0c;相同 key 的放在一个 list 中…