Linux CentOS 8(firewalld的配置与管理)
Linux CentOS 8(firewalld的配置与管理)
目录
- 一、firewalld 简介
- 二、firewalld 工作概念
- 1、预定义区域(管理员可以自定义修改)
- 2、预定义服务
- 三、firewalld 配置方法
- 1、通过firewall-cmd配置
- 2、通过firewall图形界面配置
- 四、配置 firewalld 的富规则
- 1、富规则语法
- 2、富规则相关命令
- 3、实例
一、firewalld 简介
firewalld(动态防火墙管理器)自身和 iptables 一样,并不具备防火墙的功能,而是需要通过内核的 netfilter 来实现,也就是说 firewalld 和 iptables 的作用都是用于维护规则,而真正使用规则的是内核的 netfilter。只不过 firewalld 和 iptables 的结构以及使用方法不一样。
firewalld 跟 iptables 比起来,firewalld 可以动态修改单条规则,不需要像 iptables 那样,修改了规则后必须全部刷新才可以生效。缺点是每个服务都需要去设置才能放行,因为默认是拒绝,而 iptables 里默认是每个服务是允许,需要拒绝的才去限制。普遍应用于 Rhel7、CentOS7 及之后。且最小化安装的 Linux 系统不会安装 firewalld。
firewalld 只能做和 IP/Port 相关的限制,web 相关的限制无法实现。
二、firewalld 工作概念
1、预定义区域(管理员可以自定义修改)
通过将网络划分成不同的区域,制定出不同区域间的访问控制策略来控制不同程序区域间传送的数据流。一个网卡仅能绑定一个区域,但一个区域可以绑定多个网卡。如表1-1所示的几种不同的预定义区域。
| 区域名称 | 默认配置 |
|---|---|
| trusted | 允许所有数据包传入和数据包流出,lo接口被分配为此区域 |
| home | 拒绝任何数据包流入,但允许数据包流出和预定义服务(ssh、mdns、ipp-client、sbmclient、dhcpv6-client)的数据包可以流入 |
| work | 拒绝任何数据包流入,但允许数据包流出和预定义服务(ssh、ipp-client、dhcpv6-client)的数据包可以流入 |
| public | 拒绝任何数据包流入,但允许数据包流出和预定义服务(ssh、dhcpv6-client)的数据包可以流入。新添加的网卡默认绑定到该区 |
| dmz | 隔离区域也称为非军事区域。拒绝任何数据包流入,但允许数据包流出和预定义服务(ssh)的数据包可以流入 |
| block | 阻止所有传入的数据包 |
| drop | 拒绝所有传入的数据包 |
| internal | 拒绝任何数据包流入,但允许数据包流出和预定义服务(ssh)的数据包可以流入 |
| external | 拒绝任何数据包流入,但允许数据包流出和预定义服务(ssh、dhcpv6-client)的数据包可以流入 |
相应地,firewalld提供了九个区域的配置文件,分别是trusted.xml、home.xml、work.xml 、public.xml、dmz.xml、block.xml、drop.xml、internal.xml、external.xml,他们都保存在“/usr/lib/firewalld/zones/”目录下。
注:默认区域是public,默认区域可以修改。
2、预定义服务
通过预定义服务,可以很方便的允许特定网络的流量通过防火墙,如表1-2所示。
| 服务名称 | 配置 |
|---|---|
| ssh | 本地SSH服务器。到22/tcp的流量。 |
| dhcpv6-client | 本地DHCPv6客户端。到fe80::/64 IPv6网络中546/udp的流量。 |
| ipp-client | 本地IPP打印。到631/udp的流量。 |
| samba-client | 本地Windows文件和打印共享客户端。到137/udp和138/udp的流量。 |
| mdns | 多播DNS(mDNS)本地链路名称解析。到5353/udp指向224.0.0.251(IPv4)或ff02::fb(IPv6)多播地址的流量。 |
三、firewalld 配置方法
firewalld的配置方法主要有三种:firewall-config、firewall-cmd和直接编辑xml文件。其中 firewall-config是图形化工具,firewall-cmd是命令行工具。
1、通过firewall-cmd配置
1.1 安装firewalld
[root@localhost ~]# yum install firewalld firewall-config
//firewall-config为图形工具
1.2 启动firewalld
[root@localhost ~]# systemctl start firewalld
1.3 屏蔽服务
[root@localhost ~]# systemctl mask iptables
[root@localhost ~]# systemctl mask ip6tables
[root@localhost ~]# systemctl mask ebtables
//由于iptables、ip6tables、ebtables这三个服务与filrewalld冲突,为防止意外启动,需要屏蔽这三个服务。
1.4 配置文件所在位置
[root@localhost ~]# cd /lib/firewalld/{services,zones}/*.xml
//系统配置文件,尽量不要修改
[root@localhost ~]# cd /etc/firewalld/{services,zones}/*.xml
//用户配置文件
1.5 查看状态
[root@localhost ~]# firewalld-cmd --state
1.6 配置 firewalld
[root@localhost ~]# firewalld-cmd [选项··· ]
默认情况下是修改运行时配置(马上临时生效),如果要修改永久配置,添--permanent选项,但一定要重启才能生效。
zone区域相关命令,如表2-1所示。
| 参数 | 作用 |
|---|---|
| –get-default-zone | 查询当前默认区域 |
| –set-default-zone= | 设置默认区域,使其永久生效 |
| –get-active-zones | 列出当前正在使用的所有区域(具有关联的接口或源)及其接口和源信息。 |
| –get-zones | 列出所有可用区域 |
| –new-zone= | 新增区域 |
服务相关命令,如表2-2所示。
| 参数 | 作用 |
|---|---|
| –get-services | 列出所有预定义服务 |
| –add-service= [–zone=] | 允许到的流量。如果未提–zone=选项,则将使用默认区域 |
| –remove-service= [–zone=] | 移除到的流量。如果未提–zone=选项,则将使用默认区域 |
port端口相关命令,如表2-3所示。
| 参数 | 作用 |
|---|---|
| –add-port=<PORT/PROTOCOL> [–zone=] | 允许到<PORT/PROTOCOL>端口的流量。如果未提–zone=选项,则将使用默认区域 |
| –remove-port=<PORT/PROTOCOL> [–zone=] | 移除到<PORT/PROTOCOL>端口的流量。如果未提–zone=选项,则将使用默认区域 |
interface接口相关命令,如表2-4所示:
| 参数 | 作用 |
|---|---|
| –add-interface= [–zone=] | 将来自的所有流量路由到指定区域,如果未提–zone=选项,则将使用默认区域 |
| –remove-interface= [–zone=] | 将来自的所有流量路由取消到指定区域,如果未提–zone=选项,则将使用默认区域 |
source源相关命令,如表2-5所示:
| 参数 | 作用 |
|---|---|
| –add-source= [–zone=] | 将来自IP地址或网络/子网掩码的所有流量路由到指定区域。如果未提–zone=选项,则将使用默认区域 |
| –remove-source= [–zone=] | 将来自IP地址或网络/子网掩码的所有流量路由取消到指定区域。如果未提–zone=选项,则将使用默认区域 |
其他相关命令,如表2-6所示:
| 参数 | 作用 |
|---|---|
| –list-all [–zone=] | 列出的所有已配置接口、源、服务和端口。如果未提–zone=选项,则将使用默认区域。 |
| –reload | 更新防火墙规则 |
| –version | 查看版本 |
1.7 重启firewalld服务
[root@localhost ~]# firewalld-cmd --reload
或
[root@localhost ~]# systemctl restart firewalld
2、通过firewall图形界面配置
2.1 启动图形化界面
通过命令firewalld-config启动图形界面,如图2-1所示:
[root@localhost ~]# firewalld-config

通过菜单启动图形界面:应用—杂项—防火墙,如图2-2所示:

2.2 选择配置规则的状态,如图2-3所示:

注:自定义区域、服务只能在“永久”配置下设置
2.3 在区域内的services、ports、interfaces等选项页设置运行的流量,如图2-4所示:

2.4 在服务内的ports、protocols等选项页设置运行的流量,如图2-5所示:

四、配置 firewalld 的富规则
firewalld 中的富规则表示更复杂的防火墙策略配置,它可以针对系统服务、端口号、原地址和目标地址等诸多信息进行更有针对性的策略配置,优先级在所有的防火墙策略中也是最高的。
1、富规则语法
[root@localhost ~]# man firewalld.richlanguage
rule[source][destination] service|port|protocol|icmp-block|icmp-type|masquerade|forward-port|source-port[log][audit][accept|reject|drop|mark]Rule
rule [family="ipv4|ipv6"]
Source
source [not] address="address[/mask]"|mac="mac-address"|ipset="ipset"
Destination
destination [not] address="address[/mask]"
Service
service name="service name"
Port
port port="port value" protocol="tcp|udp"
Protocol
protocol value="protocol value"
Forward-port
forward-port port="port value" protocol="tcp|udp" to-port="port value" to-addr="address"
Source-port
source-port port="port value" protocol="tcp|udp"
[ accept | reject | drop | mark ]
2、富规则相关命令
firewall-cmd 有四个选项用于处理富规则,这些选项都能加上--permanent,--zone=<ZONE>组合使用,如表3-1所示:
| 参数 | 作用 |
|---|---|
| –add-rich-rule=‘’ | 在指定的区域添加一条富规则。如果未指定区域,则向默认区域中添加 |
| –remove-rich-rule=‘’ | 在指定的区域删除一条富规则。如果未指定区域,则向默认区域中添加 |
| –query-rich-rule=‘’ | 查询富规则是否已添加到指定区域,如果未指定区域,则为默认区域。找到规则返回0,找不到返回1。 |
| –list-rich-rules | 列出指定区域的所有富规则 |
3、实例
3.1 在work区域中拒绝172.25.0.11的所有流量
[root@localhost ~]# firewall-cmd --zone=work --add-rich-rule='rule family=ipv4 source address=172.25.0.11 reject'
3.2 允许172.25.0.0网段的主机能够访问http服务
[root@localhost ~]# firewall-cmd --add-rich-rule='rule family=ipv4 source address=172.25.0.0/24 service name=http accept'
3.3 默认public区域对外开放,但拒绝172.16.0.0/24网段通过ssh连接
[root@localhost ~]# firewall-cmd --add-rich-rule='rule family=ipv4 source address=172.25.0.0/24 service name=ssh drop'
3.4 网站禁止ping服务
[root@localhost ~]# firewall-cmd --add-rich-rule='rule family=ipv4 protocol value=icmp drop'
//drop和reject区别
reject直接拒绝,返回拒绝
drop是丢弃,直到超时
制作成员: 何嘉愉
排版: 裕新
初审: 杨佳佳
复审: 二月二
相关文章:
Linux CentOS 8(firewalld的配置与管理)
Linux CentOS 8(firewalld的配置与管理) 目录 一、firewalld 简介二、firewalld 工作概念1、预定义区域(管理员可以自定义修改)2、预定义服务 三、firewalld 配置方法1、通过firewall-cmd配置2、通过firewall图形界面配置 四、配置…...
C复习-指针
参考: 里科《C和指针》 指针存储的是一个地址,实际就是一个值。 如果像下面一样对未初始化的指针进行赋值,如果a的初始值是非法地址,那么会报错。UNIX会提示段错误segmentation violation,或内存错误memory fault&…...
Runnable和Thread的区别,以及如何调用start()方法
Runnable和Thread都是Java多线程编程中的核心概念,它们之间存在以下主要差异: Runnable是一个接口,而Thread是一个类。这意味着我们可以通过实现Runnable接口来创建线程,或者直接继承Thread类并重写其方法。Runnable只包含一个ru…...
云音乐Android Cronet接入实践
背景 网易云音乐产品线终端类型广泛,除了移动端(IOS/安卓)之外,还有PC、MAC、Iot多终端等等。移动端由于上线时间早,用户基数大,沉淀了一些端侧相对比较稳定的网络策略和网络基础能力。然而由于各端在基础…...
Linux dup和dup2
Linux dup和dup2函数,他们有什么区别,什么场景下会用到,使用它们有什么注意事项 dup和dup2都是Linux系统中的系统调用,用于复制文件描述符。它们的主要区别在于如何指定新的文件描述符以及处理新文件描述符的方式。 dup函数 #i…...
Spring Boot实战 | 如何整合高性能数据库连接池HikariCP
专栏集锦,大佬们可以收藏以备不时之需 Spring Cloud实战专栏:https://blog.csdn.net/superdangbo/category_9270827.html Python 实战专栏:https://blog.csdn.net/superdangbo/category_9271194.html Logback 详解专栏:https:/…...
Spring依赖注入
依赖注入底层原理流程图: https://www.processon.com/view/link/5f899fa5f346fb06e1d8f570 Spring中有两种依赖注入的方式 首先分两种: 手动注入自动注入 手动注入 在XML中定义Bean时,就是手动注入,因为是程序员手动给某个属…...
Linux下Jenkins自动化部署SpringBoot应用
Linux下Jenkins自动化部署SpringBoot应用 1、 Jenkins介绍 官方网址:https://www.jenkins.io/ 2、安装Jenkins 2.1 centos下命令行安装 访问官方,点击文档: 点击 Installing Jenkins: 点击 Linux: 选择 Red Hat/…...
【git 学习】--- ubuntu18.04 搭建本地git服务器
在Ubuntu18.04 上简单创建自己的git服务器~ 环境配置 Ubuntu: 18.04git服务器搭建步骤: ##1.安装git sudo apt-get install git##2.添加用户 sudo adduser test_git //test_git -- git用户名##3. 在Git用户的home目录下创建文件夹,作为裸仓库 sudo…...
JAVA电商平台免费搭建 B2B2C商城系统 多用户商城系统 直播带货 新零售商城 o2o商城 电子商务 拼团商城 分销商城
涉及平台 平台管理、商家端(PC端、手机端)、买家平台(H5/公众号、小程序、APP端(IOS/Android)、微服务平台(业务服务) 2. 核心架构 Spring Cloud、Spring Boot、Mybatis、Redis …...
Android 13 Framework 裁剪
裁剪应用 1. 修改 build/core/product.mk 添加PRODUCT_DEL_PACKAGES变量的声明 新增一行_product_single_value_vars PRODUCT_DEL_PACKAGES # The first API level this product shipped with _product_single_value_vars PRODUCT_SHIPPING_API_LEVEL _product_single_val…...
【Axios封装示例Vue2】
文章目录 为什么要封装axios?如何封装axios在Vue组件中使用封装的axios 为什么要封装axios? 在Vue 2项目中,直接在组件中使用axios可能会导致以下问题: 代码重复:每个组件都需要导入axios并编写相似的请求代码&#…...
k8s-----20、持久化存储--PV/PVC
PV/PVC 1、概念1.1 基本定义1.2 生命周期1.3 PV 卷阶段状态 2、 示例2.1 创建pod和PVC 与PV2.2 绑定PV2.3 强制删除pv,pvc2.4 测试 1、概念 1.1 基本定义 PersistentVolume(PV)是集群中由管理员配置的一段网络存储。 它是集群中的资源,就像…...
python matplotlib 生成矢量图
import matplotlib.pyplot as plt plt.savefig(r"xxx.svg", format"svg")注意: plt.savefig(r"xxx.svg", format"svg") 需要放在 plt.show()前面 原因:如果在 plt.show()调用后, 实际上已经创建了一…...
机器学习中常见的特征工程处理
一、特征工程 特征工程(Feature Engineering)对特征进行进一步分析,并对数据进行处理。 常见的特征工程包括:异常值处理、缺失值处理、数据分桶、特征处理、特征构造、特征筛选及降维等。 1、异常值处理 具体实现 from scipy.s…...
Spring IOC 和 AOP
核心概念 咱们这节就讲完了,在这节中我们讲了两个大概念,一个叫做IOC,一个叫做DI IOC是什么?是用对象的时候不要自己用new而是由外部提供,而spring在进行实现的时候是谁提供,就是IOC容器给你提供。 DI是什…...
echarts插件-liquidFill(水球图)
echarts插件-liquidFill(水球图) 1.下载2.引入:3.使用 1.下载 echarts.js下载:https://cdnjs.com/libraries/echarts echarts-liquidfill.js下载:https://github.com/ecomfe/echarts-liquidfill 2.引入: …...
c++ vscode cmake debug for mac
1. 下载vscode 2. 安装c插件 参考:C programming with Visual Studio Code 3. 安装llvm,可以使用brew安装 4. 配置llvm到系统环境变量中 5. 编写c代码 6. 编写CMakeLists.txt文件(前提安装cmake) cmake_minimum_required(V…...
17 结构型模式-享元模式
1 享元模式介绍 2 享元模式原理 3 享元模式实现 抽象享元类可以是一个接口也可以是一个抽象类,作为所有享元类的公共父类, 主要作用是提高系统的可扩展性. //* 抽象享元类 public abstract class Flyweight {public abstract void operation(String extrinsicState); }具体享…...
创建Secret(手动)
和创建其他类型的 API 对象(Pod、Deployment、StatefulSet、ConfigMap 等)一样,您也可以先在 yaml 文件中定义好 Secret,然后通过 kubectl apply -f 命令创建。此时,您可以通过如下两种方式在 yaml 文件中定义 Secret&…...
云计算——弹性云计算器(ECS)
弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...
阿里云ACP云计算备考笔记 (5)——弹性伸缩
目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...
《基于Apache Flink的流处理》笔记
思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...
论文笔记——相干体技术在裂缝预测中的应用研究
目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...
Go 并发编程基础:通道(Channel)的使用
在 Go 中,Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式,用于在多个 Goroutine 之间传递数据,从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...
Linux nano命令的基本使用
参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时,显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...
TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?
在工业自动化持续演进的今天,通信网络的角色正变得愈发关键。 2025年6月6日,为期三天的华南国际工业博览会在深圳国际会展中心(宝安)圆满落幕。作为国内工业通信领域的技术型企业,光路科技(Fiberroad&…...
华为OD最新机试真题-数组组成的最小数字-OD统一考试(B卷)
题目描述 给定一个整型数组,请从该数组中选择3个元素 组成最小数字并输出 (如果数组长度小于3,则选择数组中所有元素来组成最小数字)。 输入描述 行用半角逗号分割的字符串记录的整型数组,0<数组长度<= 100,0<整数的取值范围<= 10000。 输出描述 由3个元素组成…...
【Post-process】【VBA】ETABS VBA FrameObj.GetNameList and write to EXCEL
ETABS API实战:导出框架元素数据到Excel 在结构工程师的日常工作中,经常需要从ETABS模型中提取框架元素信息进行后续分析。手动复制粘贴不仅耗时,还容易出错。今天我们来用简单的VBA代码实现自动化导出。 🎯 我们要实现什么? 一键点击,就能将ETABS中所有框架元素的基…...
