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

Firewalld 防火墙详解:深入理解与实践指南

在现代网络环境中,防火墙是保护系统和网络不受未授权访问的关键工具。`firewalld`是Linux系统中广泛使用的动态防火墙管理工具,它提供了强大的功能和灵活的配置选项。本文将深入探讨`firewalld`防火墙的工作原理、配置和管理,以及如何在实际环境中应用这些知识。

## 1. `firewalld`简介

`firewalld`是一个动态防火墙管理工具,它旨在提供比传统的`iptables`更高级的功能。`firewalld`使用`iptables`、`ip6tables`、`ebtables`和`nftables`作为后端,但提供了更易于管理和配置的接口。

### 1.1 `firewalld`的特点

- **动态规则加载**:`firewalld`允许在不重启服务的情况下动态添加、删除和修改规则。
- **区域(Zone)概念**:`firewalld`使用区域来定义不同的信任级别,每个区域都有预设的规则集。
- **服务和端口**:`firewalld`允许通过服务名称而不是仅通过端口号来管理规则,这简化了配置。
- **透明代理**:`firewalld`支持透明代理,可以在不影响客户端配置的情况下实现网络地址转换(NAT)。

### 1.2 `firewalld`的组件

- **firewalld服务**:负责管理防火墙规则和区域。
- **firewall-cmd工具**:命令行界面,用于与`firewalld`服务交互。
- **firewalld.conf配置文件**:包含全局配置和区域定义。
- **services文件**:定义了可以被添加到区域的服务。

## 2. `firewalld`的安装与启动

### 2.1 安装`firewalld`

在大多数现代Linux发行版中,`firewalld`可以通过包管理器安装:
sudo dnf install firewalld

或者对于Debian/Ubuntu系统:
sudo apt-get install firewalld

### 2.2 启动`firewalld`

安装完成后,启动`firewalld`服务:
sudo systemctl start firewalld
```

### 2.3 检查`firewalld`状态

检查`firewalld`服务的状态:
sudo systemctl status firewalld
```

### 2.4 设置`firewalld`开机启动

设置`firewalld`服务开机自启:
sudo systemctl enable firewalld
```

## 3. `firewalld`的区域(Zone)

区域是`firewalld`中定义不同信任级别的核心概念。每个区域都有一组默认的规则,可以根据需要进行修改。

### 3.1 查看所有区域

查看所有可用的区域:
sudo firewall-cmd --get-zones
```

### 3.2 查看默认区域

查看默认区域:
sudo firewall-cmd --get-default-zone
```

### 3.3 切换区域

将网络接口切换到不同的区域:
sudo firewall-cmd --zone=public --change-interface=eth0 --permanent
```

### 3.4 自定义区域

创建自定义区域:
sudo firewall-cmd --permanent --zone=MyZone --add-source=192.168.1.0/24
sudo firewall-cmd --permanent --zone=MyZone --service=add=http
sudo firewall-cmd --reload
```

## 4. `firewalld`的服务和端口

`firewalld`允许通过服务名称来管理防火墙规则,这比直接操作端口号更为直观和方便。

### 4.1 查看所有服务

查看所有预定义的服务:
sudo firewall-cmd --get-services
```

### 4.2 添加服务

将服务添加到特定区域:
sudo firewall-cmd --zone=public --add-service=http --permanent
```

### 4.3 移除服务

从特定区域移除服务:
sudo firewall-cmd --zone=public --remove-service=http --permanent
```

### 4.4 查看开放的端口

查看特定区域开放的端口:
sudo firewall-cmd --zone=public --list-ports
```

### 4.5 添加和移除端口

添加和移除特定端口:
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --zone=public --remove-port=8080/tcp --permanent
```

## 5. `firewalld`的规则和富规则

`firewalld`允许定义富规则(rich rules),这些规则可以基于复杂的条件来控制流量。

### 5.1 查看富规则

查看当前的富规则:
sudo firewall-cmd --zone=public --list-rich-rules
```

### 5.2 添加富规则

添加基于时间的富规则:
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" accept' --permanent
```

### 5.3 移除富规则

移除富规则:
sudo firewall-cmd --zone=public --remove-rich-rule='rule family="ipv4" source address="192.168.1.100" accept' --permanent
```

## 6. `firewalld`的日志和监控

`firewalld`提供了日志功能,可以帮助监控和调试防火墙规则。

### 6.1 查看日志级别

查看当前的日志级别:

sudo firewall-cmd --get-log-denied
```

### 6.2 设置日志级别

设置日志级别:
sudo firewall-cmd --set-log-denied=all --permanent
sudo firewall-cmd --reload
```

### 6.3 查看日志

查看防火墙日志:
sudo journalctl -u firewalld
```

## 7. `firewalld`的高级配置

`firewalld`支持多种高级配置,包括直接操作`iptables`规则、设置默认策略等。

### 7.1 直接操作`iptables`规则

直接添加`iptables`规则:
sudo firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -s 192.168.1.100 -j ACCEPT
```

### 7.2 设置默认策略

设置默认策略:
sudo firewall-cmd --zone=public --set-target=DROP --permanent
```

### 7.3 管理IPSET

`firewalld`支持使用IPSET来管理IP地址集合:
sudo firewall-cmd --permanent --zone=public --new-ipset=myIpSet ipset
sudo firewall-cmd --permanent --zone=public --add-to-ipset=myIpSet 192.168.1.100
```

## 8. `firewalld`的故障排除

在使用`firewalld`时,可能会遇到各种问题,以下是一些常见的故障排除步骤。

### 8.1 检查服务状态

确保`firewalld`服务正在运行:
sudo systemctl status firewalld
```

### 8.2 检查防火墙规则

检查当前的防火墙规则:
sudo firewall-cmd --zone=public --list-all
```

### 8.3 重新加载防火墙

重新加载防火墙以应用更改:
sudo firewall-cmd --reload
```

### 8.4 查看服务是否开放

检查特定服务是否开放:
sudo firewall-cmd --zone=public --query-service=http
```

## 9. `firewalld`的最佳实践

### 9.1 定义清晰的安全策略

在配置`firewalld`之前,定义清晰的安全策略是非常重要的。这包括确定哪些服务需要对外开放,哪些流量应该被阻止。

### 9.2 使用区域来管理不同网络环境

利用`firewalld`的区域功能来管理不同网络环境的防火墙规则,例如,将内部网络和外部网络分别设置为不同的区域。

### 9.3 定期审查和更新规则

定期审查和更新防火墙规则,以确保系统的安全性,并适应网络环境的变化。

### 9.4 监控和日志记录

启用并监控防火墙日志,以便在发生安全事件时能够快速响应。

## 10. 结论

`firewalld`是一个功能强大的动态防火墙管理工具,它提供了灵活的配置选项和高级的安全功能。通过深入了解`firewalld`的工作原理和配置方法,您可以有效地保护您的网络环境免受未授权访问和网络攻击。记住,网络安全是一个持续的过程,需要定期审查和更新防火墙规则以适应不断变化的威胁环境。
 

相关文章:

Firewalld 防火墙详解:深入理解与实践指南

在现代网络环境中,防火墙是保护系统和网络不受未授权访问的关键工具。firewalld是Linux系统中广泛使用的动态防火墙管理工具,它提供了强大的功能和灵活的配置选项。本文将深入探讨firewalld防火墙的工作原理、配置和管理,以及如何在实际环境中…...

linux系统编程(五)

1、信号 信号是事件发生时对进程的通知机制,针对每个信号都定义了一个唯一的整数,这些整数定义在signal.h中。 常见信号如下: SIGABRT:进程调用abort函数,系统向进程发送此信号,终止进程并产生核心转储文…...

Effective C++ 条款 16:成对使用 `new` 和 `delete` 时要采取相同形式

文章目录 条款 16:成对使用 new 和 delete 时要采取相同形式核心思想示例代码错误用法分析设计建议总结 条款 16:成对使用 new 和 delete 时要采取相同形式 核心思想 一致性要求 当使用 new 分配内存时,必须在相应的 delete 操作中保持一致&a…...

【HarmonyOS NEXT】鸿蒙原生应用“上述”

鸿蒙原生应用“上述”已上架华为应用市场,欢迎升级了鸿蒙NEXT系统的用户下载体验,用原生更流畅。 个人CSDN鸿蒙专栏欢迎订阅:https://blog.csdn.net/weixin_44640245/category_12536933.html?fromshareblogcolumn&sharetypeblogcolumn&a…...

【人工智能】使用Python构建推荐系统:从协同过滤到深度学习

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 推荐系统是现代互联网的重要组成部分,广泛应用于电商、社交媒体和流媒体平台中。本文详细介绍了如何使用Python构建推荐系统,从传统的协同…...

店铺营业状态设置

admineShopController RestController("admineShopController") RequestMapping("/admin/shop") Api(tags "店铺相关接口") Slf4j public class ShopController {//设置一个常量 因为经常使用public static final String KEY "SHOP-ST…...

batchnorm和layernorm的理解

batchnorm和layernorm原理和区别 batchnorm 原理 对于一个特征tensor x ∈ R b c f 1 f 2 … x \in \mathbb{R}^{b \times c \times f_1 \times f_2 \times \dots} x∈Rbcf1​f2​… 其中, c c c是通道, f f f是通道中各种特征,batchno…...

在git commit之前让其自动执行一次git pull命令

文章目录 背景原因编写脚本测试效果 背景原因 有时候可以看到项目的git 提交日志里好多 Merge branch ‘master’ of …记录。这些记录是怎么产生的呢? 是因为在本地操作 git add . 、 git commit -m "xxxxx"时,没有提前进行git pull操作&…...

【Rust自学】6.3. 控制流运算符-match

喜欢的话别忘了点赞、收藏加关注哦,对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 6.3.1. 什么是match match允许一个值与一系列模式进行匹配,并执行匹配的模式对应的代码。模式可以是字面值、变量名、通配符等…...

大模型应用技术系列(三): 深入理解大模型应用中的Cache:GPTCache

前言 无论在什么技术栈中,缓存都是比较重要的一部分。在大模型技术栈中,缓存存在于技术栈中的不同层次。本文将主要聚焦于技术栈中应用层和底层基座之间中间件层的缓存(个人定位),以开源项目GPTCache(LLM的语义缓存)为例,深入讲解这部分缓存的结构和关键实现。 完整技术…...

『大模型笔记』评估大型语言模型的指标:ELO评分,BLEU,困惑度和交叉熵介绍以及举例解释

评估大型语言模型的指标:ELO评分,BLEU,困惑度和交叉熵介绍以及举例解释 文章目录 一. ELO Rating大模型的elo得分如何理解1. Elo评分的基本原理2. 示例说明3. 大模型中的Elo得分总结3个模型之间如何比较计算,给出示例进行解释1. 基本原理扩展到三方2. 示例计算第一场: A A…...

深度解析:Maven 和 Gradle 的使用比较及常见仓库推荐

Maven 和 Gradle 是 Java 项目中最常用的构建工具。它们各有优势,适用于不同的场景。本文将对两者进行详细的对比,并推荐一些常用的 Maven 和 Gradle 仓库,帮助开发者高效管理依赖。 一、Maven 和 Gradle 的使用比较 1.1 基本介绍 Maven 基…...

SQLite本地数据库的简介和适用场景——集成SpringBoot的图文说明

前言:现在项目普遍使用的数据库都是MySQL,而有些项目实际上使用SQLite既足矣。在一些特定的项目中,要比MySQL更适用。 这一篇文章简单的介绍一下SQLite,对比MySQL的优缺点、以及适用的项目类型和集成SpringBoot。 1. SQLite 简介 …...

管理面板Ajenti的在Windows10下Ubuntu24.04/Ubuntu22.04里的安装

Ajenti是一款基于Web的开源系统管理控制面板,可用于通过Web浏览器,管理远程系统管理性任务,这一点与 Webmin模块 非常相似。 Ajenti是一款功能非常强大的轻型工具,它提供了快速的、反应灵敏的Web界面,可用于管理小型服…...

在Python如何用Type创建类

文章目录 一,如何创建类1:创建一个简单类2:添加属性和方法3:动态继承父类4:结合元类的使用总结 二.在什么情境下适合使用Type创建类1. **运行时动态生成类**2. **避免重复代码**3. **依赖元类或高级元编程**4. **动态扩…...

Android学习19 -- NDK4--共享内存(TODO)

在安卓的NDK(Native Development Kit)中,C共享内存通常用于不同进程间的通信,或者在同一进程中多线程之间共享数据。这种方法相较于其他形式的IPC(进程间通信)来说,具有更高的性能和低延迟。共享…...

《Cocos Creator游戏实战》非固定摇杆实现原理

为什么要使用非固定摇杆 许多同学在开发摇杆功能时,会将摇杆固定在屏幕左下某一位置,不会让其随着大拇指触摸点改变,而且玩家只有按在了摇杆上才能移动人物(触摸监听事件在摇杆精灵上)。然而,不同玩家的大拇指长度不同…...

RabbitMQ工作模式(详解 工作模式:简单队列、工作队列、公平分发以及消息应答和消息持久化)

文章目录 十.RabbitMQ10.1 简单队列实现10.2 Work 模式(工作队列)10.3 公平分发10.4 RabbitMQ 消息应答与消息持久化消息应答概念配置 消息持久化概念配置 十.RabbitMQ 10.1 简单队列实现 简单队列通常指的是一个基本的消息队列,它可以用于…...

【VScode】第三方GPT编程工具-CodeMoss安装教程

一、CodeMoss是什么? CodeMoss是一款集编程、学习和办公于一体的高效工具。它兼容多种主流平台,包括VSCode、IDER、Chrome插件、Web和APP等,支持插件安装,尤其在VSCode和IDER上的表现尤为出色。无论你是编程新手还是资深开发者&a…...

在JavaScript中,let 和 const有什么不同

在JavaScript中,let 和 const 是用于声明变量的关键字,但它们有一些重要的区别 1.重新赋值: let 声明的变量可以重新赋值。const 声明的变量必须在声明时初始化,并且之后不能重新赋值 let a 10; a 20; // 有效,a 的…...

基于大模型的 UI 自动化系统

基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

微信小程序之bind和catch

这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

跨链模式:多链互操作架构与性能扩展方案

跨链模式&#xff1a;多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈&#xff1a;模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展&#xff08;H2Cross架构&#xff09;&#xff1a; 适配层&#xf…...

GC1808高性能24位立体声音频ADC芯片解析

1. 芯片概述 GC1808是一款24位立体声音频模数转换器&#xff08;ADC&#xff09;&#xff0c;支持8kHz~96kHz采样率&#xff0c;集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器&#xff0c;适用于高保真音频采集场景。 2. 核心特性 高精度&#xff1a;24位分辨率&#xff0c…...

论文笔记——相干体技术在裂缝预测中的应用研究

目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术&#xff1a;基于互相关的相干体技术&#xff08;Correlation&#xff09;第二代相干体技术&#xff1a;基于相似的相干体技术&#xff08;Semblance&#xff09;基于多道相似的相干体…...

人机融合智能 | “人智交互”跨学科新领域

本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...

6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础

第三周 Day 3 &#x1f3af; 今日目标 理解类&#xff08;class&#xff09;和对象&#xff08;object&#xff09;的关系学会定义类的属性、方法和构造函数&#xff08;init&#xff09;掌握对象的创建与使用初识封装、继承和多态的基本概念&#xff08;预告&#xff09; &a…...

沙箱虚拟化技术虚拟机容器之间的关系详解

问题 沙箱、虚拟化、容器三者分开一一介绍的话我知道他们各自都是什么东西&#xff0c;但是如果把三者放在一起&#xff0c;它们之间到底什么关系&#xff1f;又有什么联系呢&#xff1f;我不是很明白&#xff01;&#xff01;&#xff01; 就比如说&#xff1a; 沙箱&#…...

Sklearn 机器学习 缺失值处理 获取填充失值的统计值

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 使用 Scikit-learn 处理缺失值并提取填充统计信息的完整指南 在机器学习项目中,数据清…...