【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 daemonLoaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)Active: active (running) since Fri 2024-11-07 12:34:56 UTC; 5min agoDocs: 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


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

publicinterfaces: eth0
homeinterfaces: eth1


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

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

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

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

public (active)target: defaulticmp-block-inversion: nointerfaces: eth0sources: services: dhcpv6-client sshports: protocols: masquerade: noforward-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


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

homeinterfaces: eth0


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

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


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

sudo firewall-cmd --reload


再次验证更改:

sudo firewall-cmd --get-active-zones


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

homeinterfaces: eth0

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

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

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

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

相关文章

人工智能未来前景好不好?

人工智能(AI)正以前所未有的速度改变着我们的世界。随着技术的不断进步,AI不仅在各行各业中扮演着越来越重要的角色,也为求职者和职业发展带来了广阔的机会。那么,人工智能未来的前景如何? 1 高增长行业 人…

湘潭大学软件工程专业选修 SOA 期末考试复习(二)

文章目录 回顾序言第一章课后题填空选择简答 第二章课后题填空选择编程 计划第三章课后题填空选择简答编程 第四章课后题填空选择简答编程 第五章课后题填空选择简答编程 第六章课后题说明 第七章课后题填空选择简答编程 第八章课后题填空选择简答编程 第九章课后题填空选择简答…

JVM垃圾回收详解

前言 当需要排查各种内存溢出问题、当垃圾收集成为系统达到更高并发的瓶颈时,我们就需要对这些“自动化”的技术实施必要的监控和调节。 堆空间的基本结构 Java 的自动内存管理主要是针对对象内存的回收和对象内存的分配。同时,Java 自动内存管理最核…

Hive 操作基础(进阶篇✌️)

Hive 进阶操作 分区表 创建分区表 create table score_part(字段名 字段类型,字段名 字段类型 )partitioned by (分区字段 分区类型) row format delimited fields terminated by \t; 创建单极分区表 注意: 分区的列名不能和数据列名相同.分区列会当做虚拟列出现在数据列…

【Kafka】Windows+KRaft部署指南

【Kafka】WindowsKRaft部署指南 摘要本地环境说明官网快速开始修改config/kraft/server.properties初始化数据存储目录启动 测试创建topic创建生产者创建消费者 FAQ输入行太长。命令语法不正确。问题描述解决方案 参考资料 摘要 Kafka是一种高吞吐量的分布式发布订阅消息系统&…

Docker-软件容器平台

一、容器 1、什么是容器 容器就是将软件打包成标准化单元,以用于开发、交付和部署 容器镜像是轻量的、可执行的独立软件包 ,包含软件运行所需的所有内容:代码、运行时环境、系统工具、系统库和设置。容器化软件适用于基于 Linux 和 Windows…

OSS和FastDFS的区别

FastDFS: FastDFS 是一种开源的轻量级分布式文件系统,基于HTTP协议实现。具有高扩展性、高可用性和高稳定性。它解决了大容量文件存储和高效访问的问题,适合作为大容量文件的存储服务器。FastDFS 通过文件系统集群,使得用户可以将…

分离编译(介绍,解决“类模板定义和声明不在同一文件导致链接错误“的问题),类模板实例化原理,

目录 分离编译 介绍 问题代码示例 代码 说明 预处理 编译 链接 类模板实例化原理 总结 解决方法 显式实例化 模板的声明和定义放在一个头文件 分离编译 介绍 分离编译是一种编程技术 允许将程序代码分割成多个文件,每个文件可以独立地编译成目标文件…

云计算答案

情境一习题练习 一、选择题 1、在虚拟机VMware软件中实现联网过程,图中箭头所指的网络连接方式与下列哪个相关( C )。 A.仅主机模式 B.桥接 C.NAT D.嫁接 2、请问下图这个虚拟化架构属于什么类型( A …

如何做好多项目进度管理

在同时管理多个项目时,重要的是要确保每个项目都能按时、按质完成。有效的时间管理、资源优化配置、持续的沟通和使用专业工具是关键要素。这些元素有助于维护项目的整体质量和效率,确保所有项目成员的责任和期望都明确无误。本文将深入探讨如何通过实践…

如何在vscode中安装git详细新手教程

一、安装git后点击vscode中的设置 今天教大家如何在VScode中编写代码后提交到git仓库,如果我们不想切换到git的命令行窗口,可以在VScode中配置git,然后就可以很方便快捷的把代码提交到仓库中。 二、在输入框中输入 git.path ,再点…

使用Docker Compose构建多容器应用

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 使用Docker Compose构建多容器应用 引言 Docker Compose 简介 安装 Docker Compose 创建基本配置 运行多容器应用 查看服务状态 …

Python-利用tkinter库编写一个exe伪恶意程序文件(下)

前言 接着上篇所讲的,我们已经完成了源代码的准备,并将其储存在了function_1.py文件中。接下来我们将把function_1.py文件编写为相对应的exe文件。那么好,废话不多说,我们直接开始。(温馨提示:由于整蛊的需…

java list使用基本操作

import java.util.ArrayList; import java.util.Collection; import java.util.Iterator;public class Main {public static void main(String[] args) {ArrayList list new ArrayList();list.add("张三");list.add("李四");list.add("王五");l…

【C/C++】strncpy函数的模拟实现

零.导言 之前我们学习了strncpy函数,不妨我们现在尝试模拟实现strncpy函数的功能。 一.实现strncpy函数的要点 strncpy函数是一种字符串函数,可以按字节拷贝字符类型的数组,因此我们自定义的模拟函数需要两个char类型的指针参数;…

ARM-8 定位发布版本 pstree 程序的 main 地址

逆向时如何找到main,如下: 1.readelf -h pstree ELF Header: Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 Class: ELF64 Data: 2s complement, little endian Versi…

履带机器人(一、STM32控制部分--标准库)

一、履带机器人整体逻辑框架 通过在PC端搭建上位机,使得在PC端可以给STM32发送控制指令并且接受STM32的状态信息。 通过RS485通信,使得STM32可以和电机进行通信,STM32发送启动、停止、转速、方向等指令,并接受电机返回的状态信息。 二、STM32逻辑框架 整体逻辑: 1、先…

数据库管理-第258期 23ai:Oracle Data Redaction(20241104)

数据库管理258期 2024-11-04 数据库管理-第258期 23ai:Oracle Data Redaction(20241104)1 简介2 应用场景与有点3 多租户环境4 特性与能力4.1 全数据编校4.2 部分编校4.3 正则表达式编校4.4 随机编校4.5 空值编校4.6 无编校4.7 不同数据类型上…

Rust重写万物之——从头开始编写浏览器引擎

一款用 Rust 编写的全新“轮子”最近备受关注—— 因不满大公司垄断,Gosub 项目团队用 Rust 从头开始编写了一个新的浏览器引擎,目前 star 数已超过 3k。 Gosub 项目的诞生是因为不少用户对当前的 Web 浏览器现状感到不满。 尽管市面上有许多浏览器可供选择,但其中大多数…

Elasticsearch-linux环境部署

本文主要介绍linux下elasticsearch的部署。通过在一台linux服务器中分别对elasticsearch-6.7.2版本,elasticsearch-7.3.0版本来进行安装,记录在安装elasticsearch-7.3.0版本时出现的异常情况,以及elasticsearch-head的安装。 基础环境 本机已…