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

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

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

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

目录

一、引言

1、iptables 时代

2、firewalld 时代

3、 从 iptables 迁移到 firewalld

二、Firewalld基础概念

1、什么是Firewalld 

2、Firewalld 的特性

3、Firewalld与iptables的区别

1. 设计理念和管理方式

2. 使用方式

3. 规则管理和灵活性

4. 性能和适用场景

三、安装与配置Firewalld

1、Firewalld的安装(对于未预装的系统)

四、Firewalld的区域(Zones)管理

1、区域的概念与作用

2、如何查看当前区域设置

3、更改默认区域与接口绑定


一、引言

在 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)进行管理。


3、 从 iptables 迁移到 firewalld

迁移原因

  1. 简化管理:firewalld 提供更高级的抽象,简化了复杂规则的管理。
  2. 动态配置:firewalld 可以在不中断现有连接的情况下应用新的规则。
  3. 区域和服务管理:通过区域和服务的概念,提供了更直观的规则管理方式。

迁移过程

  1. 学习 firewalld:理解区域、服务和接口的概念。
  2. 转换规则:将 iptables 规则翻译成 firewalld 规则。
  3. 测试和验证:在迁移过程中测试新规则以确保网络服务不受影响。
  4. 逐步切换:可以在测试环境中逐步切换,验证一切正常后再在生产环境中切换。

   

二、Firewalld基础概念

1、什么是Firewalld 

firewalld 是一个用于 Linux 系统的动态防火墙管理工具,旨在简化和增强防火墙的配置和管理。它在 CentOS 7 及以后版本中作为默认防火墙管理工具,取代了传统的 iptables。

2、Firewalld 的特性

动态管理

  • firewalld 支持在不中断现有连接的情况下动态地更改防火墙规则。这意味着可以在系统运行时即时应用新的规则,无需重启防火墙服务。

区域概念

firewalld 引入了区域的概念,每个区域代表一组不同的信任级别,可以绑定到一个或多个网络接口。常见的区域包括:

  1. public:适用于公共网络,信任较低,只开放少量服务。
  2. home:适用于家庭网络,信任较高,开放更多服务。
  3. work:适用于工作网络,信任度介于家庭和公共网络之间。
  4. internal:适用于内部网络,信任度最高,开放所有内部服务。

3、Firewalld与iptables的区别

firewalld 和 iptables 是两种用于管理 Linux 防火墙的工具,它们在设计理念、功能和使用方式上有显著的区别。

1. 设计理念和管理方式

iptables

  1. 静态规则:iptables 使用静态规则集,所有规则在启动时加载到内核并在运行时保持不变。任何更改都需要重新应用整个规则集,这可能导致短暂的网络中断。
  2. 命令行界面:通过命令行界面手动配置规则,每条规则需要单独添加和管理。
  3. 链和表:iptables 使用链(chain)和表(table)的概念,分别为 filter、nat、mangle 和 raw 表,每个表包含多个链,如 INPUT、OUTPUT、FORWARD 等。


firewalld

  1. 动态规则:firewalld 支持动态添加、修改和删除规则,而无需重启防火墙服务或重新应用整个规则集,因此不会中断现有连接。
  2. 区域概念:引入区域(zone)的概念,每个区域表示一组防火墙规则,可以根据网络接口或源地址分配到不同的区域。
  3. 服务管理:允许通过服务名称来配置规则,而不仅仅是端口号,使配置更直观和易于管理。
  4. 图形界面和命令行工具:除了命令行工具 firewall-cmd,还提供图形界面工具 firewall-config,方便用户管理防火墙。


2. 使用方式

iptables

  1. 手动配置:需要手动编写和维护防火墙规则,规则语法相对复杂。
  2. 配置文件:可以通过脚本或配置文件(如 /etc/sysconfig/iptables)来加载规则集,但需要重启服务或手动重新加载。

firewalld

  1. 区域和服务配置:通过区域和服务进行高层次管理,配置更加简单。
  2. 动态调整:支持即时生效的临时规则和持久化的永久规则,不会中断现有连接。


3. 规则管理和灵活性

iptables

  1. 细粒度控制:提供对每个数据包的细粒度控制,适合高级用户和复杂的防火墙配置需求。
  2. 固定规则集:一旦规则集加载到内核中,任何更改都需要重新加载整个规则集。

firewalld

  1. 灵活管理:支持动态调整规则,适合需要频繁更改防火墙规则的环境。
  2. 高层抽象:通过区域和服务提供高层抽象,简化配置和管理。

4. 性能和适用场景

iptables

  1. 高性能:直接操作内核的 netfilter 框架,性能较高,适合高流量环境。
  2. 单一节点:适用于单个节点或简单网络环境的防火墙管理。

firewalld

  1. 现代网络环境:适应现代动态网络环境,特别是云计算和虚拟化环境,提供更好的灵活性和易用性。
  2. 综合管理:适合需要综合管理多个网络接口和复杂网络配置的场景。

   

三、安装与配置Firewalld

1、Firewalld的安装(对于未预装的系统)

1. 更新系统
首先,确保系统的软件包是最新的。运行以下命令更新系统:

sudo yum update -y


2. 安装 Firewalld
使用 yum 包管理器安装 firewalld:

sudo yum install firewalld -y


3. 启动和启用 Firewalld
安装完成后,启动 firewalld 服务并设置开机自启动:

sudo systemctl start firewalld
sudo systemctl enable firewalld


4. 验证 Firewalld 状态
确保 firewalld 正常运行,可以使用以下命令检查其状态:

sudo systemctl status firewalld


如果 firewalld 正在运行,应该会看到类似以下的输出:

● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2024-11-07 12:34:56 UTC; 5min ago
     Docs: man:firewalld(1)

四、Firewalld的区域(Zones)管理

1、区域的概念与作用

firewalld 使用区域(Zones)来定义不同网络接口的安全性和规则。每个区域都有一组预定义的规则,这些规则决定了哪些流量允许进出系统。

区域的概念

  1. 区域(Zone):区域是防火墙规则的集合。每个区域都有不同的安全级别,适用于特定的网络接口或连接。
  2. 默认区域:系统默认的区域。所有未指定区域的网络接口或连接会使用默认区域的规则。
  3. 动态和持久配置:firewalld 支持动态配置(即时生效但重启后失效)和持久配置(重启后依然生效)。

常见的预定义区域

firewalld 提供了几种预定义的区域,每种区域适用于不同的安全场景:

  1. trusted:信任所有网络流量。所有传入和传出流量都允许。
  2. home:适用于家庭网络,允许常见的网络服务(如共享文件和打印机)。
  3. work:适用于工作网络,与 home 类似,但更加安全。
  4. public:适用于公共网络(如咖啡店的 Wi-Fi),仅允许最小的传入流量。
  5. block:阻止所有传入流量,只有出站流量允许。
  6. dmz:适用于受保护的公开访问区,允许外部访问特定服务。
  7. external:适用于外部网络,使用网络地址转换(NAT)保护内部网络。
  8. internal:适用于内部网络,信任内部网络的流量。
  9. drop:丢弃所有传入流量,不返回任何响应,仅允许出站流量。

   

2、如何查看当前区域设置

查看当前区域设置,可以通过以下 firewalld 命令来实现。这些命令允许查看当前活跃的区域、特定接口的区域分配以及默认区域设置。

查看当前活动的区域和接口
查看当前活动的区域以及每个区域内包含的网络接口:

sudo firewall-cmd --get-active-zones


该命令会输出类似如下的信息:

public
  interfaces: eth0
home
  interfaces: eth1


这表示 eth0 接口被分配到 public 区域,而 eth1 接口被分配到 home 区域。

查看特定区域的详细信息
查看特定区域的详细信息,包括该区域的所有规则和设置:

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

该命令会输出类似如下的信息:

public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources: 
  services: dhcpv6-client ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

3、更改默认区域与接口绑定

更改默认区域
更改默认区域为 home 区域:

sudo firewall-cmd --set-default-zone=home


验证默认区域是否已更改:

sudo firewall-cmd --get-default-zone


将接口绑定到特定区域
假设有一个网络接口 eth0,希望将其绑定到 home 区域:

临时更改接口的区域绑定
将 eth0 接口临时分配到 home 区域(重启后更改会失效):

sudo firewall-cmd --zone=home --change-interface=eth0


验证更改:

sudo firewall-cmd --get-active-zones


应该能看到类似如下的输出:

home
  interfaces: eth0


永久更改接口的区域绑定
将 eth0 接口永久分配到 home 区域(重启后更改依然有效):

sudo firewall-cmd --zone=home --add-interface=eth0 --permanent


为了使永久更改生效,需要重新加载 firewalld:

sudo firewall-cmd --reload


再次验证更改:

sudo firewall-cmd --get-active-zones


应该能看到类似如下的输出:

home
  interfaces: eth0

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用 unicorn 和 capstone 库来模拟 ARM Thumb 指令的执行(一)

import binascii import unicorn import capstonedef printArm32Regs(mu):for i in range(66,78):print("R%d,value:%x"%(i-66,mu.reg_read(i)))def testhumb():CODE b\x1C\x00\x0A\x46\x1E\x00"""MOV R3, R0 的机器码:0x1C 0x00&#xf…

NVT新能德科技入职测评SHL题库更新:数字推理+演绎推理高分答案、真题解析

新能德的入职Verify测评主要考察应聘者的逻辑推理能力、数学能力、数据分析能力以及处理信息的能力。根据搜索结果,测评通常包含以下几个部分: 1. **语言理解**:这部分包括阅读理解、逻辑填空和语句排序。要求应聘者在17分钟内完成30题&#…

HBase理论_背景特点及数据单元及与Hive对比

本文结合了个人的笔记以及工作中实践经验以及参考HBase官网,我尽可能把自己的知识点呈现出来,如果有误,还请指正。 1. HBase背景 HBase作为面向列的数据库运行在HDFS之上,HDFS缺乏随机读写操作,HBase正是为此而出现。…

Linux:进程概念

文章目录 前言一、冯诺依曼体系二、操作系统(Operator System)2.1.操作系统的概念2.2 系统调⽤和库函数概念 三. 进程3.1 基本概念3.1.1 描述进程3.1.2 task_struct 3.2 查看进程3.2.1 getpid3.2.2 proc3.2.3 getppid 总结 前言 • 课本概念:程序的⼀个执⾏实例&am…

el-form el-table 前端排序+校验+行编辑

一、页面 <template><div class"bg" v-if"formData.mouldData?.length 0">当前暂无模板&#xff0c;点击<view class"add" click"addMould">立即创建</view></div><div v-else><el-col :x…

jmeter常用配置元件介绍总结之后置处理器

系列文章目录 安装jmeter jmeter常用配置元件介绍总结之后置处理器 8.后置处理器8.1.CSS/JQuery提取器8.2.JSON JMESPath Extractor8.3.JSON提取器8.4.正则表达式提取器8.5.边界提取器8.5.Debug PostProcessor8.6.XPath2 Extractor8.7.XPath提取器8.8.结果状态处理器 8.后置处理…

基于Java Springboot旅游信息推荐系统

一、作品包含 源码数据库设计文档万字全套环境和工具资源部署教程 二、项目技术 前端技术&#xff1a;Html、Css、Js、Vue 数据库&#xff1a;MySQL 后端技术&#xff1a;Java、Spring Boot、MyBatis 三、运行环境 开发工具&#xff1a;IDEA 数据库&#xff1a;MySQL8.0…

基础网络安全知识

1.ctfhub技能树 1.1 Web-SQL注入 Web-SQL注入-整数型 && 字符型 && MySQL结构 参考&#xff1a;5.9.6MySql注入 Web-SQL注入-报错注入 step1: 查库名 ?id1 and extractvalue(1,concat(0x7e,database(),0x7e))-- step2: 查看表名 ?id1 and extractvalue(1…

01-Ajax入门与axios使用、URL知识

欢迎来到“雪碧聊技术”CSDN博客&#xff01; 在这里&#xff0c;您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者&#xff0c;还是具有一定经验的开发者&#xff0c;相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导&#xff0c;我将…

iStore OS 插件的手动安装与特殊卸载

有些插件在iStore 中并没有展示,因此需要手动安装,手动安装无法通过前端彻底卸载,本文提供方法和流程。 1.插件手动安装 1.1地址 github 项目地址根据自己需求选择。本人以x86_64 为主。 https://github.com/AUK9527/Are-u-ok/tree/main/x86 点击后下载得到run安装包 1…

neo4j desktop基本入门

下载安装不在赘述&#xff0c;本文只记述一些neo4j的基本入门操作 连接本地neo4j数据库 1. 点击ADD添加连接 端口一般是7687 账户名和密码忘记了&#xff0c;可以通过neo4j web&#xff08;默认为neo4jneo4j://localhost:7687/neo4j - Neo4j Browser&#xff09;重置密码 AL…

ElasticSearch的Python Client测试

一、Python环境准备 1、下载Python安装包并安装 https://www.python.org/ftp/python/3.13.0/python-3.13.0-amd64.exe 2、安装 SDK 参考ES官方文档: https://www.elastic.co/guide/en/elasticsearch/client/index.html python -m pip install elasticsearch一、Client 代…

强化学习入门笔记(Reinforcement Learning,RL) 强推!

由于本人的近期研究方向涉及到强化学习&#xff0c;本科时已经学习过了&#xff0c;但是感觉还是有些概念和算法没有学懂学透&#xff0c;所以想重新系统性的学习一下&#xff0c;记录了整个学习过程&#xff0c;而且对当时没有理解不是特别深刻的内容有了一些更加深刻的理解&a…

redis 原理篇 26 网络模型 Redis是单线程的吗?为什么使用单线程

都是学cs的&#xff0c;有人月薪几万&#xff0c;有人月薪几千&#xff0c;哎&#xff0c; 相信 边际效用&#xff0c; 也就是说&#xff0c; 随着技术提升的越来越多&#xff0c;薪资的提升比例会更大 一个月几万&#xff0c;那肯定是高级开发了&#xff0c; 一个月几千&…

UE4 Cook 从UAT传递参数给UE4Editor

需求 一句Cook的命令如下&#xff1a; ${EnginePath}/Engine/Build/BatchFiles/RunUAT.sh BuildCookRun -project${ClientPath}/${ProjectName}.uproject -noP4 -platformIOS -cooksinglepackage -client -clientconfig${CookConfig} -iterate -skipbuild -nocompile -NoMutex…

jmeter基础05_第1个http请求

本节课使用网站“httpbin.org”进行基础的http请求全流程。 请求获取httpbin.org的首页&#xff1a; 请求方法&#xff1a;GET URL&#xff1a;http://httpbin.org 参数&#xff1a;无 1、操作步骤 ① 打开jmeter&#xff1a;命令行窗口输入“jmeter”并回车。 ② 添加线程组…

【Ubuntu24.04】从双系统到虚拟机再到单系统的故事

故事 在大学前期&#xff0c;我使用Ubuntu系统都是为了学习一些命令或者其它Linux的东西&#xff0c;对性能的要求不高&#xff0c;所以选择了虚拟机&#xff0c;后来为了做毕设&#xff0c;选择安装了Ubuntu20.04双系统&#xff0c;因为虚拟机实在带不动&#xff0c;那时我的主…

力扣 LeetCode 18. 四数之和(Day3:哈希表)

解题思路&#xff1a; 需要先弄懂三数之和&#xff0c;思路类似 三数之和&#xff1a;指针 i &#xff0c;left &#xff0c;right 四数之和&#xff1a;指针 k &#xff0c;i &#xff0c;left &#xff0c;right&#xff08;相当于多了一个 k &#xff0c;多了一个外层 fo…

30 秒!用通义灵码画 SpaceX 星链发射流程图

不想读前人“骨灰级”代码&#xff0c; 不想当“牛马”程序员&#xff0c; 想像看图片一样快速读复杂代码和架构&#xff1f; 来了&#xff0c;灵码又加新 buff&#xff01;&#xff01; 通义灵码支持代码逻辑可视化&#xff0c; 可以把你的每段代码画成流程图。 你可以把…

sql注入之二次注入(sqlilabs-less24)

二阶注入&#xff08;Second-Order Injection&#xff09;是一种特殊的 SQL 注入攻击&#xff0c;通常发生在用户输入的数据首先被存储在数据库中&#xff0c;然后在后续的操作中被使用时&#xff0c;触发了注入漏洞。与传统的 SQL 注入&#xff08;直接注入&#xff09;不同&a…