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∈Rbcf1f2… 其中, 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 的…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...
Admin.Net中的消息通信SignalR解释
定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...
蓝桥杯 2024 15届国赛 A组 儿童节快乐
P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...
04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...
今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存
文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...
人机融合智能 | “人智交互”跨学科新领域
本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...
虚拟电厂发展三大趋势:市场化、技术主导、车网互联
市场化:从政策驱动到多元盈利 政策全面赋能 2025年4月,国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》,首次明确虚拟电厂为“独立市场主体”,提出硬性目标:2027年全国调节能力≥2000万千瓦࿰…...
腾讯云V3签名
想要接入腾讯云的Api,必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口,但总是卡在签名这一步,最后放弃选择SDK,这次终于自己代码实现。 可能腾讯云翻新了接口文档,现在阅读起来,清晰了很多&…...
【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error
在前端开发中,JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作(如 Promise、async/await 等),开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝(r…...
