Linux防火墙之firewalld基础
一、firewalld概述
firewalld防火墙是Centos7系统默认的防火墙管理工具,取代了之前的iptables防火墙,也是工作在网络层,属于包过滤防火墙。
firewalld和iptables都是用来管理防火墙的工具(属于用户态)来定义防火墙的各种规则功能,内部结构都指向netfilter网络过过滤子系统(属于内核态)来实现包过滤防火墙功能。
firewalld提供了支持网络区域所定义的网络链接以及接口安全等级的动态防火墙管理工具。 它支持IPv4、IPv6防火墙设置以及以太网桥(在某些高级服务可能会用到,比如云计算), 并且拥有两种配置模式:运行时配置与永久配置。
二、iptables与firewalld的联系与区别
1.iptables与firewalld的联系
netfilter
- 位于Linux内核中的包过滤功能体系
- 称为Linux防火墙的“内核态”
Firewalld/iptables
- CentOS7默认的管理防火墙规则的工具(Firewalld)
- 称为Linux防火墙的“用户态”

2. iptables与firewalld的区别

区别一:
iptables主要是基于接口,来设置规则,从而判断网络的安全性。
firewalld是基于区域,根据不同的区域来设置不同的规则,从而保证网络的安全。与硬件防火墙的设置相类似。
区别二:
iptables 在 /etc/sysconfig/iptables 中储存配置,
firewalld 将配置储存在 /etc/firewalld/(优先加载)和 /usr/lib/firewalld/(默认的配置文件)中的各种 XML 文件里。
区别三:
使用 iptables 每一个单独更改意味着清除所有旧有的规则和从/etc/sysconfig/iptables 里读取所有新的规则
使用 firewalld 却不会再创建任何新的规则,仅仅运行规则中的不同之处。因此firewalld 可以在运行时间内,改变设置而不丢失
现行连接。
三、firewalld区域
1.firewalld区域的概念
firewalld防火墙为了简化管理,将所有网络流量分为多个区域(zone)。然后根据数据包的源IP地址或传入的网络接口等条件将流量传入相应区域。每个区域都定义了自己打开或者关闭的端口和服务列表。
这些区域配置文件存在于/usr/lib/firewalld/zones目录中,还有一个目录/etc/firewalld/zones。firewalld使用规则时,会首先到/etc/firewalld/目录中查找,如果可以找到就直接使用,找不到会继续到/usr/lib/firewalld/目录中查找。
2.firewalld的九个区域
| 区域 | 作用 |
| trusted(信任区域) | 允许所有的传入流量。 |
| public(公共区域) | 允许与ssh或dhcpv6-client预定义服务匹配的传入流量,其余均拒绝。是新添加网络接口的默认区域。 |
| external(外部区域) | 允许与ssh预定义服务匹配的传入流量其余均拒绝。 |
| home(家庭区域) | 允许与ssh、mdns、samba-client或dhcpv6-client预定义服务匹配的传入流量,其他均拒绝。 |
| internal(内部区域) | 默认值与home区域相同。 |
| work(工作区域) | 允许与ssh、dhcpv6-client预定义服务匹配的传入流量,其他均拒绝 |
| dmz(隔离区域也称非军事区域) | 允许与ssh预定义服务匹配的传入流量,其他均拒绝 |
| block(限制区域) | 拒绝所有传入流量。 |
| drop(丢弃区域) | 丢弃所有传入流量,并且不产生包含icmp的错误响应。 |
3.firewalld区域介绍和区域优先级
1) firewalld区域介绍
最终一个区域的安全程度是取决于管理员在此区域中设置的规则。
区域如同进入主机的安全门,每个区域都具有不同限制程度的规则,只会允许符合规则的流量传入。
可以根据网络规模,使用一个或多个区域,但是任何一个活跃区域至少需要关联源地址或接口。
默认情况下,public区域是默认区域,包含所有接口(网卡)。
2)firewalld数据处理流程
检查数据来源的源地址:
若源地址关联到特定的区域,则执行该区域所指定的规则
若源地址未关联到特定的区域,则使用传入网络接口的区域 并执行该区域所指定的规则
若网络接口未关联到特定的区域,则使用默认区域并执行该 区域所指定的规则
区域优先级:源地址绑定的区域 > 网卡绑定的区域 > 默认区域(只要没有绑定过指定区域的网卡,都适用于于默认区域的规则。默认区域可自定义,不修改则为public)
3) firewalld防火墙的配置方法
1、使用firewall-cmd 命令行工具。
2、使用firewall-config 图形工具。

3、编写/etc/firewalld/中的配置文件。
Firewalld 会优先使用/etc/firewalld/中的配置,如果不存在配置文件,则使用/usr/lib/firewalld/中的配置。
/etc/firewalld/:用户自定义配置文件,需要时可通过从/usr/lib/firewalld/ 中拷贝
/usr/lib/firewalld/ :默认配置文件,不建议修改,若恢复至默认配置,可直接删除/etc/firewalld/ 中的配置
四、fiewall-cmd命令行使用
1. 默认区域的查看与设置
不指定区域时,则对默认区域进行操作(默认区域可自定义,不修改则为public)
格式:
firewall-cmd:
--get-default-zone :显示当前默认区域
--set-default-zone=<zone> :设置默认区域

2.对指定网卡进行操作
格式:
firewall-cmd:
--get-active-zones :显示当前正在使用的区域及其对应的网卡接口
--get-zones :显示所有可用的区域--get-zone-of-interface=<interface> :显示指定接口绑定的区域
--zone=<zone> --add-interface=<interface> :为指定接口绑定区域
--zone=<zone> --change-interface=<interface> :为指定的区域更改绑定的网络接口
--zone=<zone> --remove-interface=<interface> :为指定的区域删除绑定的网络接口

3.对源地址进行操作
格式:
firewall-cmd:
--add-source=xxxxxx --zone=<zone> //增加源地址指定区域
--remove-source=xxxxxx --zone=<zone> //删除源地址指定区域

4.查看指定区域的所有规则
不指定区域时,则对默认区域进行操作(默认区域可自定义,不修改则为public)
firewall-cmd --list-all-zones:显示所有区域及其规则
firewall-cmd --list-all : 不指定区域时,查看的是默认区域
firewall-cmd --list-all --zone=work:显示work区域的所有规则


5.服务管理
1)查看默认区域内允许访问的所有服务

2)添加服务
注意后面不跟指定的区域,就会添加到默认区域中
指定区域添加

3)查看public 区域已配置规则

4)删除public 区域的http服务

6.端口管理
1)允许TCP的443端口到internal 区域

2)从internal 区域将TCP的443端口移除

3)允许UDP的2048~2050端口到默认区域

7.永久保存设置
以上操作均为实时配置,会立即生效,但是当服务重启时就会失效。如果要对自己写入更改的服务配置或则端口配置进行永久保存一般有两种方式

1)方法一
在命令的结尾加入 --permanent 设置成永久生效,需要重启服务或重新加载后才生效。

2)方法二
--runtime-to-permanent:将当前的运行时配置写入规则配置文件中,使之成为永久性配置。

8.内容延申:DNAT和SNAT也可以通过firewall-cmd设置地址转换
1)设置 SNAT
firewall-cmd --zone=public --direct --passthrough ipv4 -t nat -A POSTROUTING -s 192.168.73.0/24 -j SNAT --to-source 12.0.0.12

2)设置 DNAT
firewall-cmd --zone=public --direct --passthrough ipv4 -t nat -A PREROUTING -d 12.0.0.254 -p tcp --dport 80 -j DNAT --to-destination 192.168.73.111
相关文章:
Linux防火墙之firewalld基础
一、firewalld概述 firewalld防火墙是Centos7系统默认的防火墙管理工具,取代了之前的iptables防火墙,也是工作在网络层,属于包过滤防火墙。 firewalld和iptables都是用来管理防火墙的工具(属于用户态)来定义防火墙的…...
GitLab CI/CD
CI/CD 简介 CI/CD 简单来说就是可以自动化编译、测试、打包我们的代码。 GitLab CICD的使用 首先需要安装gitlab-runner。 在GitLab 中,runners 是运行 CI/CD 作业的代理。我们的对代码的作业都是在runner上去执行的。我们可以在本地、服务器、等任意一个联网设…...
PHP复习资料(未完待续)
(未完待续,请持续关注此板块) 【计科三四】雪课堂PHP期末模拟题:https://ks.wjx.top/vm/tUAmjxq.aspx# 【计科一二】PHP第一章练习题 https://ks.wjx.top/vm/QnjHad4.aspx# 【计科一二】PHP第二章练习题 https://ks.wjx.top/vm/h2…...
【python】pytorch包(第二章)API使用与介绍
1> nn.Module (用于构建模型的底层逻辑) 介绍 nn.Module 是 torch.nn 中的一个类,是pytorch中自定义网络的基类 __init__需要调用super方法,继承父类属性和方法forward方法必须实现,用来定义网络的向前计算的过程…...
Linux驱动基础(SR501人体感应模块)
文章目录 前言一、SR501模块介绍二、设备树编写三、驱动编写1.确定主设备号2.编写file_operations结构体3.注册file_operations结构体4.出口函数编写5.probe函数和remove函数编写6.中断编写7.测试程序编写8.全部驱动程序 总结 前言 本篇文章将给大家介绍一下SR501驱动程序的编…...
Android Studio Flamingo (火烈鸟) 升级踩坑记录
由于想要验证Compose最新的debug特性,而我目前使用的版本(Dolphin 小海豚)不支持,查看官网说明需要最新版本,所以不得已进行了一下Android Studio版本升级,过程中遇到一些问题,本文仅做记录。&a…...
【JAVA凝气】异常篇
哈喽~大家好呀,这篇来看看JAVA异常篇。 目录 一、前言 二、Exception 异常 1、Java 的非检查性异常 2、Java 检查性异常类 三、Error 错误 四、捕获异常 五、多重捕获块 六、throws/throw 关键字 七、自定义异常类 八、图书推荐 一、前言 异常是程序中的一…...
C++中的函数模板
目录 1. 什么是函数模板? 2. 如何定义函数模板? 3. 如何使用函数模板? 4. 函数模板与函数重载的区别是什么? 5. 函数模板与类模板有何异同点? 1. 什么是函数模板? - 函数模板是一种通用的函数描述&…...
MapReduce【Shuffle-Combiner】
概述 Conbiner在MapReduce的Shuffle阶段起作用,它负责局部数据的聚合,我们可以看到,对于大数据量,如果没有Combiner,将会在磁盘上写入多个文件等待ReduceTask来拉取,但是如果有Combiner组件,我们…...
postman接口自动化测试
Postman除了前面介绍的一些功能,还有其他一些小功能在日常接口测试或许用得上。今天,我们就来盘点一下,如下所示: 1.数据驱动 想要批量执行接口用例,我们一般会将对应的接口用例放在同一个Collection中…...
历经70+场面试,我发现了大厂面试的套路都是···
今年的金三银四刚刚过去,我又想起了我在去年春招时面试了50余家,加上暑期实习面试了20余家,加起来也面试了70余场的面试场景了。 基本把国内有名的互联网公司都面了一遍,不敢说自己的面试经验很丰富,但也是不差的。 …...
可视区域兼容性问题的思考及方法封装
今日在复习可视化尺寸获取时突发奇想,为什么要在怪异模式下使用document.body.clientWidth,在标准模式下使用document.documentElement.clientWidth?以及是否在IE8及以下的版本中其中一个获取方式将返回undefined或0。 出于该问题的思考&am…...
安全工具 | CMSeeK [指纹识别]
0x00 免责声明 本文仅限于学习讨论与技术知识的分享,不得违反当地国家的法律法规。对于传播、利用文章中提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,本文作者不为此承担任何责任,一旦造成后果请自行承担…...
Android新logcat使用技巧
Android新logcat使用技巧 logcat新UI出现后,我常困惑于怎么过滤log,和以前的UI差异比较大,新UI界面结构如下: 这个新的 logcat 的问题是如何过滤信息并不是很明显。 获取应用的日志信息 要获取我们当前调试应用的日志信息&…...
使用Makefile笔记总结
文章目录 一、简单了解Makefile1.1 Makefile示例1.2 基本规则1.3 make是如何工作的1.4 使用变量1.5 make自动推导 二、变量2.1 变量的定义和引用2.2 变量的两种高级用法2.3 override 和 define 关键字2.4 环境变量与目标变量2.5 自动变量 三、Makefile规则3.1 通配符3.2 目标依…...
npm下载依赖项目跑不起来--解决方案
code ERESOLVE npm ERR! ERESOLVE unable to resolve dependency tree npm ERR! npm ERR! While resolving: vue-element-admin4.4.0 npm ERR! Found: webpack4.46.0 npm ERR! node_modules/webpack npm ERR! webpack“^4.23.0” from the root project npm ERR! npm ERR! Coul…...
SolVES模型生态系统服务功能社会价值评估
查看原文>>>SolVES 模型生态系统服务功能社会价值评估(基于多源环境QGIS、PostgreSQL、ArcGIS、Maxent、R语言) 目录 第一章、理论基础与研究热点 第二章、SolVES 4.0 模型运行环境配置 第三章、SolVES 4.0 模型运行 第四章、数据获取与入…...
Godot引擎 4.0 文档 - 入门介绍 - 学习新功能
本文为Google Translate英译中结果,DrGraph在此基础上加了一些校正。英文原版页面: Learning new features — Godot Engine (stable) documentation in English 学习新功能 Godot 是一个功能丰富的游戏引擎。有很多关于它的知识。本页介绍了如何使用…...
如何进行MySQL漏洞扫描
MySQL是一款广泛使用的关系型数据库管理系统,但由于其复杂的结构和功能,也存在不少安全漏洞,容易被黑客攻击。为了解决这些安全问题,进行MySQL漏洞扫描是必要的。那么MySQL怎么进行漏洞扫描?如何进行漏洞扫描?接下来就让小编带大…...
C语言函数大全-- x 开头的函数(3)
C语言函数大全 本篇介绍C语言函数大全-- x 开头的函数 1. xdr_opaque 1.1 函数说明 函数声明函数功能bool_t xdr_opaque(XDR *xdrs, char *buf, u_int len);用于编码或解码任意长度的二进制数据 参数: xdrs : 指向 XDR 数据结构的指针,表…...
springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...
Appium+python自动化(十六)- ADB命令
简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...
AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...
相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...
Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
阿里云Ubuntu 22.04 64位搭建Flask流程(亲测)
cd /home 进入home盘 安装虚拟环境: 1、安装virtualenv pip install virtualenv 2.创建新的虚拟环境: virtualenv myenv 3、激活虚拟环境(激活环境可以在当前环境下安装包) source myenv/bin/activate 此时,终端…...
LUA+Reids实现库存秒杀预扣减 记录流水 以及自己的思考
目录 lua脚本 记录流水 记录流水的作用 流水什么时候删除 我们在做库存扣减的时候,显示基于Lua脚本和Redis实现的预扣减 这样可以在秒杀扣减的时候保证操作的原子性和高效性 lua脚本 // ... 已有代码 ...Overridepublic InventoryResponse decrease(Inventor…...
mcts蒙特卡洛模拟树思想
您这个观察非常敏锐,而且在很大程度上是正确的!您已经洞察到了MCTS算法在不同阶段的两种不同行为模式。我们来把这个关系理得更清楚一些,您的理解其实离真相只有一步之遥。 您说的“select是在二次选择的时候起作用”,这个观察非…...
第14节 Node.js 全局对象
JavaScript 中有一个特殊的对象,称为全局对象(Global Object),它及其所有属性都可以在程序的任何地方访问,即全局变量。 在浏览器 JavaScript 中,通常 window 是全局对象, 而 Node.js 中的全局…...
