当前位置: 首页 > news >正文

【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.mrgr.cn/news/68223.html

相关文章:

  • LightGBM-GPU不能装在WSL,能装在windows上
  • 兰空图床配置域名访问
  • 【简信CRM-注册安全分析报告】
  • 【深度学习滑坡制图|论文解读3】基于融合CNN-Transformer网络和深度迁移学习的遥感影像滑坡制图方法
  • 利用亚马逊AWS IoT核心和MQTT进行数据采集的综合指南
  • 【Rust中多线程同步机制】
  • TCP/IP与HTTP协议:概念、关系与工作原理
  • 【Java知识】java基础-lambda语法详细说明
  • 14.C++ 特殊类与设计模式
  • C++ 的发展
  • 青少年编程与数学 02-003 Go语言网络编程 16课题、Go语言RPC编程
  • Java集合框架之List接口
  • Halcon刚性变换
  • go语言解决rtsp协议只播放部分的问题(业务问题)
  • Android 读取内部文件
  • C++ 标准模板库 (STL)- 高效学习推荐
  • React 中 `key` 属性的警告及其解决方案
  • 初三数学,最优解问题
  • [241108] AMD 开源首批 10 亿参数语言模型:AMD OLMo | Xfce 4.20 Pre1发布
  • 【Linux系列】字符串操作的艺术:删除前缀的 Shell 脚本技巧
  • AI 浅探,揭秘【AI开发流程】的奥秘
  • Java | Leetcode Java题解之第546题移除盒子
  • 高级java每日一道面试题-2024年10月30日-JVM篇-新生代垃圾回收器和老生代垃圾回收器有哪些?有什么区别?
  • 如何实现低代码接口?低代码平台接口开发详解
  • 解决警告:Boxed value is unboxed and then immediately reboxed
  • C++:模拟实现STL的list