当前位置: 首页 > 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 的…...

5步掌控Windows Defender:开源工具实现永久安全策略定制

5步掌控Windows Defender:开源工具实现永久安全策略定制 【免费下载链接】defender-control An open-source windows defender manager. Now you can disable windows defender permanently. 项目地址: https://gitcode.com/gh_mirrors/de/defender-control …...

2026届最火的六大降AI率神器实际效果

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 要是针对知网那AI检测系统而言,要想降低文本被识别成是AI生成的概率,…...

“AI 辅助数据库优化 - 从慢查询分析到索引自动推荐“

AI 辅助数据库优化 - 从慢查询分析到索引自动推荐 问题场景 数据库优化的常见挑战: 慢查询排查依赖 DBA 经验,门槛高索引创建盲目,有时反而降低性能SQL 改写凭感觉,缺乏系统方法执行计划看不懂,不知道优化方向性能问题…...

告别Elsevier投稿焦虑:Elsevier Tracker的智能监控方案

告别Elsevier投稿焦虑:Elsevier Tracker的智能监控方案 【免费下载链接】Elsevier-Tracker 项目地址: https://gitcode.com/gh_mirrors/el/Elsevier-Tracker 作为科研工作者,你是否也曾经历过这样的困境:每天多次登录Elsevier投稿系统…...

Qwen2.5-VL-7B-InstructGPU优化指南:视觉特征缓存机制与响应速度实测对比

Qwen2.5-VL-7B-Instruct GPU优化指南:视觉特征缓存机制与响应速度实测对比 1. 项目概述与优化背景 Qwen2.5-VL-7B-Instruct作为一款先进的多模态视觉-语言模型,在处理图像和文本交互任务时展现出强大能力。但在实际部署中,我们发现其GPU资源…...

哈尔滨工业大学学位论文latex模板下载及编译方法

1、下载文件夹chinese:https://download.csdn.net/download/wzz110011/92774930?spm1011.2124.3001.6210 2、安装TexStudio 3、设置TexStuidio编译器为XeLaTex,具体设置方法可百度...

3D Face HRN场景应用:为教育课件快速创建解剖学面部3D模型

3D Face HRN场景应用:为教育课件快速创建解剖学面部3D模型 1. 解剖学教学的数字化革命 传统解剖学教学面临一个根本性挑战:如何让学生直观理解面部复杂的三维结构?教科书上的平面插图无法展示肌肉层次,实体模型又昂贵且无法个性…...

Loop:5分钟打造优雅Mac窗口管理,告别鼠标拖拽的烦恼

Loop:5分钟打造优雅Mac窗口管理,告别鼠标拖拽的烦恼 【免费下载链接】Loop Window management made elegant. 项目地址: https://gitcode.com/GitHub_Trending/lo/Loop 你是否也经历过这样的场景:正在专注写代码,却要频繁拖…...

用快马AI十分钟搭建你的第一篇论文展示官网原型

最近在准备学术成果展示时,发现很多同行都开始搭建个人论文官网。这种展示方式确实比单纯发PDF专业很多,但自己从头开发又太费时间。尝试用InsCode(快马)平台快速搭建原型,没想到十分钟就搞定了基础框架,分享下具体实现思路。 明确…...

3个技巧让你轻松获取Steam创意工坊资源:WorkshopDL的跨平台下载解决方案

3个技巧让你轻松获取Steam创意工坊资源:WorkshopDL的跨平台下载解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 在游戏模组爱好者的日常中,总会…...