linux 防火墙管理-firewalld
什么是Firewalld
当前很多linux系统中都默认使用 firewalld(Dynamic Firewall Manager of Linux systems,Linux系统的动态防火墙管理器)服务作为防火墙配置管理工具。
 “firewalld”是firewall daemon。它提供了一个动态管理的防火墙,带有一个非常强大的过滤系统,称为 Netfilter,由 Linux 内核提供。有命令行界面(CLI)和图形界面(GUI).
 这里主要讲解CLI方式。
 “Firewalld”提供了一种非常灵活的方式来处理防火墙管理,有了区域(zone)的概念,用户根据使用场景选择不同域(zone),为每个域设置好策略,切换办公场所只要用鼠标去选择不同的区域即可,区域如同进入主机的安全门, 每个区域都具有不同限制程度的规则, 只会允许符合规则的流量传入,默认public区域(默认情况下,public区域是默认区域,包含所有接口 (网卡))。
firewalld域分为9个域
(1)丢弃区域(Drop Zone):如果使用丢弃区域,任何进入的数据包将被丢弃,这个类似于Centos6上的 iptables -j drop ,使用丢弃规则意味着将不存在相应。
 (2)阻塞区域(Block Zone):阻塞区域会拒绝进入的网络连接,返回icmp-host-prohibited,只有服务器已经建立的连接会被通过,即只允许由该系统初始化的网络连接。
 (3)公共区域(Public Zone):只接受那些被选中的连接,默认只允许ssh和dhcpv6-client,这个zone是缺省zone(缺省就是默认的意思,所以公共区域也是默认区域,在没有任何配置的情况下走的是公共区域)。
 (4)外部区域(External Zone):这个区域相当于路由器的启动伪装(masquerading)选项,只有指定的连接会被接受,即ssh,而其他的连接将被丢弃或者不被接受。
 (5)隔离区域(DMZ Zone):如果想要只允许给部分服务能被外部访问,可以在DMZ区域中定义,它也拥有只通过被选中连接的特性,即ssh, 这个区域又叫做非军事化区域。
 (6)工作区域(Work Zone):在这个区域中,我们只能定义内部网络,比如私有网络通信才被允许, 只允许ssh、ipp-client和dhcpv6-client。
 (7)家庭区域(Home Zone):这个区域专门用于家庭环境,它同样只允许被选中的连接, 即ssh、ipp-client、mdns、samba-client和dhcpv6-client。
 (8)内部区域(Internal Zone):这个区域和 工作区域(Work Zone) 类似,只允许通过被选中的连接,与 家庭区域(Home Zone) 相同。
 (9)信任区域(Trusted Zone):信任区域允许所有网络通信通过,因为 信任区域(Trusted Zone)是最被信任的,即使没有设置任何的服务,那么也是被允许的,因为 信任区域(Trusted Zone)是允许所有连接的。
 以上是系统定义的所有的区域(Zone),但是,不是所有的区域(Zone)都在使用,只有活跃的区域(Zone)才有实际操作意义,活跃域是当前使用的域。
 firewalld-cmd 是firewalld防火墙的命令行管理工具。
firewalld-cmd的参数及作用
| 参数 | 作用 | 
|---|---|
| –get-default-zone | 查询默认的区域名称 | 
| –set-default-zone=<区域名称> | 设置默认的区域,使其永久生效 | 
| –get-zones | 显示可用的区域 | 
| –get-services | 显示预先定义的服务 | 
| –get-active-zones | 显示当前正在使用的区域与网卡名称 | 
| –add-source= | 将源自此IP或子网的流量导向指定的区域 | 
| –remove-source= | 不再将源自此IP或子网的流量导向某个指定区域 | 
| –add-interface=<网卡名称> | 将源自该网卡的所有流量都导向某个指定区域 | 
| –change-interface=<网卡名称> | 将某个网卡与区域进行关联 | 
| –list-all | 显示当前区域的网卡配置参数、资源、端口以及服务等信息 | 
| –list-all-zones | 显示所有区域的网卡配置参数、资源、端口以及服务等信息 | 
| –add-service=<服务名> | 设置默认区域允许该服务的流量 | 
| –add-port=<端口号/协议> | 设置默认区域允许该端口的流量 | 
| –remove-service=<服务名> | 设置默认区域不再允许该服务的流量 | 
| –remove-port=<端口号/协议> | 设置默认区域不再允许该端口的流量 | 
| –reload | 让“永久生效”的配置规则立即生效,并覆盖当前的配置规则 | 
| –panic-on | 开启应急状况模式 | 
| –panic-off | 关闭应急状况模式 | 
| –add-rich-rule | 防火墙富规则,具体用户也可以参见https://blog.51cto.com/u_3823536/2552274 | 
| –zoon | 制定设置域,用法–zoon=work | 
firewalld中的过滤规则
| 参数 | 参数作用 | 
|---|---|
| target | 目标区域 | 
| icmp-block-inversion | ICMP协议类型黑白名单开关(yes/no) | 
| Interfaces | 关联的网卡接口 | 
| sources | 来源,可以是IP地址,也可以是mac地址 | 
| services | 允许的服务 | 
| ports | 允许的目标端口,即本地开放的端口 | 
| protocols | 允许通过的协议 | 
| masquerade | 是否允许伪装(yes/no),可改写来源IP地址及mac地址 | 
| forward-ports | 允许转发的端口 | 
| source-ports | 允许的来源端口 | 
| icmp-blocks | 可添加ICMP类型,当icmp-block-inversion为no时,这些ICMP类型被拒绝;当icmp-block-inversion为yes时,这些ICMP类型被允许。 | 
| rich rules | 富规则,即更细致、更详细的防火墙规则策略,它的优先级在所有的防火墙策略中也是最高的。 | 
对于一个接受到的请求具体使用哪个zone,firewalld是通过三种方法来判断的:
 1、source,也就是源地址 优先级最高
 2、interface,接收请求的网卡 优先级第二
 3、firewalld.conf中配置的默认zone 优先级最低
firewalld防火墙的作用模式
Runtime模式:firewalld默认模式,当前生效模式,重启后失效;
 Permanent模式:永久模式,需要系统重启或手动执行firewalld-cmd reload后生效。
firewalld-cmd操作实例
把原本访问本机8000端口的流量转发到7000端口,且长期有效
 流量转发命令格式为:
 firewall-cmd --permanent --zone=<区域> --add-forward-port=port= <源端口号>:proto=<协议>:toport=<目标端口号>:toaddr=<目标IP地址>
[root@linux ~]# firewall-cmd --permanent --zone=public --add-forward port=8000:proto=tcp:toport=7000:toaddr=192.168.1.100 
success 
[root@linux ~]# firewall-cmd --reload
success
查询eno16777728网卡在firewalld服务中的区域:
[root@linux ~]# firewall-cmd --get-zone-of-interface=eno16777728 public
firewalld服务中请求HTTP协议的流量设置为永久拒绝:
[root@linux ~]# firewall-cmd --permanent --zone=public --remove-service=httpsuccess
实例:添加开发端口重载后生效
[root@MiWiFi-R4AC-srv ~]# firewall-cmd --state #查询firewalld防火墙状态
running
[root@MiWiFi-R4AC-srv ~]# firewall-cmd --list-ports #列出防火墙开放端口
80/tcp
[root@MiWiFi-R4AC-srv ~]# firewall-cmd --permanent --add-port=8090/tcp #添加8090开放端口
success
[root@MiWiFi-R4AC-srv ~]# firewall-cmd --list-ports #列出防火墙开放端口
80/tcp
[root@MiWiFi-R4AC-srv ~]# firewall-cmd --reload #重载firewalld防火墙
success
[root@MiWiFi-R4AC-srv ~]# firewall-cmd --list-ports #列出防火墙开放端口
80/tcp 8090/tcp
[root@MiWiFi-R4AC-srv ~]# firewall-cmd --query-port=8090/tcp #查询8090端口是否开放
success
[root@MiWiFi-R4AC-srv ~]# firewall-cmd --permanent --remove-port=8090/tcp #已出8090开发端口
success
[root@MiWiFi-R4AC-srv ~]# firewall-cmd --reload #重载firewalld防火墙
success
[root@MiWiFi-R4AC-srv ~]# firewall-cmd --permanent --list-ports #列出防火墙开放端口
80/tcp
[root@MiWiFi-R4AC-srv ~]# 
实例: 开启某个端口(指定IP可访问)
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="10.1.1.14/32" port protocol="tcp" port="80" accept"
实例:删除某个端口(指定IP可访问)策略
firewall-cmd --permanent --zone=public --remove-rich-rule="rule family="ipv4" source address="10.1.1.14/32" port protocol="tcp" port="80" accept"
实例:防火墙配置文件路径
[root@MiWiFi-R4AC-srv ~]# firewall-cmd --list-all-zones #查看9个域
[root@MiWiFi-R4AC-srv ~]#cd /etc/firewalld/zones
[root@MiWiFi-R4AC-srv zones]# ls
block.xml  dmz.xml  drop.xml  external.xml  home.xml  internal.xml  public.xml  trusted.xml  work.xml
实例:firewall-cmd --list-all #默认查看的是public
[root@MiWiFi-R4AC-srv ~]# firewall-cmd --list-all #默认查看的是public
public (active)target: defaulticmp-block-inversion: nointerfaces: eno1sources: services: dhcpv6-client sshports: 80/tcp 8090/tcpprotocols: masquerade: noforward-ports: source-ports: icmp-blocks: rich rules: 
实例:查询9个域
#[root@MiWiFi-R4AC-srv zones]# firewall-cmd --get-zones #查询防火墙9个域,配置文件位于/etc/firewalld/zones
block dmz drop external home internal public trusted work
对Firewalld服务的简单操作
查看本机使用哪种服务的防火墙
systemctl list-unit-files |grep firewalld  #查看是否安装了firewalld防火墙
systemctl status firewalld #查看firewalld防火墙状态
查看开机是否启动防火墙
systemctl is-enabled firewalld.service 
重新加载防火墙
systemctl reload firewalld.service
firewall-cmd --reload
启动firewalld防火墙
systemctl start firewalld
service firewalld.service start
重启firewalld服务
systemctl restart firewalld
service firewalld.service restart
关闭防火墙
systemctl stop firewalld
开机启动防火墙
systemctl enable firewalld.service
chkconfig firewalld on #开机启动firewalld
开机不启动firewalld防火墙
systemctl disable firewalld.service
or
chkconfig firewalld.service off #永久关闭firewalld.service
新版系统上已自带firewalld防火墙还可以使用iptables吗?
CentOS7 默认使用firewalld防火墙,如果想换回iptables防火墙,可关闭firewalld并安装iptables,启用iptables后即可使用iptalbes防火墙。
yum install iptables.service #安装iptables
firewalld 和iptables的关系
截图一张
 
Linux防火墙配置
/etc/firewalld/firewalld.conf
相关文章:
 
linux 防火墙管理-firewalld
什么是Firewalld 当前很多linux系统中都默认使用 firewalld(Dynamic Firewall Manager of Linux systems,Linux系统的动态防火墙管理器)服务作为防火墙配置管理工具。 “firewalld”是firewall daemon。它提供了一个动态管理的防火墙&#x…...
2023年最新大厂开发面试题(滴滴,华为,京东,腾讯,头条)
2023年最新大厂开发面试题!!! 滴滴篇 B树、B-树的区别? 数据库隔离级别,幻读和不可重复读的区别? 有 hell, well, hello, world 等字符串组,现在问能否拼接成 helloworld,代码实现。 快排算…...
 
2023年三月份图形化三级打卡试题
活动时间 从2023年3月1日至3月21日,每天一道编程题。 本次打卡的规则如下: 小朋友每天利用10~15分钟做一道编程题,遇到问题就来群内讨论,我来给大家答疑。 小朋友做完题目后,截图到朋友圈打卡并把打卡的截图发到活动群…...
 
蓝桥杯算法模板
模拟散列表拉链法import java.io.*; import java.util.*; public class a1 {static int n;static int N100003;static int[] hnew int[N];static int[] enew int[N];static int[] nenew int[N]; static int idx; static void insert(int x){int k(x%NN)%N;e[idx]x;ne[idx]h[k];…...
 
python之并发编程
一、并发编程之多进程 1.multiprocessing模块介绍 python中的多线程无法利用多核优势,如果想要充分地使用多核CPU的资源(os.cpu_count()查看),在python中大部分情况需要使用多进程。Python提供了multiprocessing。 multiprocess…...
Vue.js自定义事件的使用(实现父子之间的通信)
vue v-model修饰符:.lazy、.number、.trim $attrs数据的透传,在组件(这个是写在App.vue中),数据就透传到student组件中,在template中可以直接使用{{$attrs.students}}获取数据 通过defineProps定义的属性在attrs中就…...
 
第12天-商品维护(发布商品、商品管理、SPU管理)
1.发布商品流程 发布商品分为5个步骤: 基本信息规格参数销售属性SKU信息保存完成 2.发布商品-基本信息 2.1.会员等级-会员服务 2.1.1.会员服务-网关配置 在网关增加会员服务的路由配置 - id: member_routeuri: lb://gmall-memberpredicates:- Path/api/member/…...
 
动态分区分配计算
动态分区分配 内存连续分配管理分为: 单一连续分配固定分区分配动态分区分配(本篇所讲) 首次适应算法(First Fit,FF) 该算法又称最先适应算法,要求空闲分区按照首地址递增的顺序排列。 优点…...
 
【云原生】k8s的pod基本概念
一、资源限制 Pod 是 kubernetes 中最小的资源管理组件,Pod 也是最小化运行容器化应用的资源对象。一个 Pod 代表着集群中运行的一个进程。kubernetes 中其他大多数组件都是围绕着 Pod 来进行支撑和扩展 Pod 功能的,例如用于管理 Pod 运行的 StatefulSe…...
【史上最全面esp32教程】激光与食人鱼模块篇
文章目录食人鱼模块模块介绍连线说明操作激光模块模块介绍连线说明操作总结提示:以下是本篇文章正文内容,下面案例可供参考 食人鱼模块 模块介绍 采用食人鱼LED设计制作一个发光的电子模块,其实他的本质和LED无区别。 连线说明 名称接线…...
《代码整洁之道》二之有意义的命名
1.有意义的命名 1.1 名副其实 取个好名字需要花时间,但是价值远超取名的时间,一旦发现更好的名称就换掉旧的。这么做,读你代码的人都会很开心。 变量名、方法名、类名称需要清晰的告诉别人含义,如果名称需要注释来补充…...
天气预测demo
天气预测1 数据集介绍1.1 训练集1.2 测试集2 导入数据进行数据分析2.1 浏览数据2.2 探索数据2.2.1 查看数据类型1 数据集介绍 1.1 训练集 训练集中共有116369个样本,每个样本有23个特征,特征具体介绍如下: 列名解释Date:日期&a…...
 
HDMI协议介绍(四)--Video
目录 视频格式 RGB444 YUV444 YUV422 YUV420 Color Depth Video控制信号 Pixel Repetition HDMI支持多种视频格式和分辨率。以hdmi1.4和2.0协议来说,视频格式支持RGB444、YUV444、YUV422和YUV420,其中RGB444和YUV444一般都是要求支持的。 视频格式…...
 
微信授权登录流程以及公众号配置方法(golang后端)
一、准备一个已经认证OK的微信公众号和已经备案的域名,且解析好配置好https证书。 1.如上图 微信公众号 > 基本配置 ,设置开发者密码 2.设置IP白名单,白名单填写提供后端服务的服务器公网IP 二、公众号服务器配置。 1.找到基本配置 2.将服…...
 
【软件测试面试题】大厂头条:如何定位bug?实际案例拿offer还不简单......
目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 问题: 用…...
kubeconfig生成最高权限的token
参考文档 1.https://kubernetes.io/zh-cn/docs/reference/access-authn-authz/authentication/ 2. https://kubernetes.io/zh-cn/docs/reference/access-authn-authz/rbac/ 操作流程 生成kubernetes集群最高权限admin用户的token admin-role.yaml kind: ClusterRoleBindin…...
Android 9.0 蓝牙去掉传输文件的功能
1.概述 在9.0的系统rom定制化产品开发中,在原生系统中蓝牙这块的功能也是非常重要的,所以在对蓝牙功能开发过程中,对功能的定制要求也多,在蓝牙的开发需求中,功能要求 也是越来越多的,产品需要要求在蓝牙文件传输过程中,进行限制就是不让蓝牙传输文件,所以要求在开始传…...
 
C语言指针易错点—字符数组与字符指针
C语言指针易错点—字符数组与字符指针字符数组与字符指针的区别字符数组与字符指针的区别举例字符指针必须先赋值,后引用字符数组与字符指针的区别 因为字符数组与字符指针都可以表示字符串,但他们不是等价的。下面就来讲讲他们的区别。 char sa[ ] &…...
 
Yolov3,v4,v5区别
网络区别就不说了,ipad笔记记录了,这里只说其他的区别1 输入区别1.1 yolov3没什么特别的数据增强方式1.2 yolov4Mosaic数据增强Yolov4中使用的Mosaic是参考2019年底提出的CutMix数据增强的方式,但CutMix只使用了两张图片进行拼接,…...
基于Appium+WinAppDriver+Python的winUI3应用的自动化框架搭建分享(一)环境配置
安装WinAppDriver下载并安装WinAppDriver:来源 https://github.com/Microsoft/WinAppDriver/releases开启电脑的开发者模式设置-隐私和安全性-开发者选项-开发人员模式安装Appium安装Appium Server Gui https://github.com/appium/appium-desktop/releases安装Appium Inspector…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...
 
【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...
Robots.txt 文件
什么是robots.txt? robots.txt 是一个位于网站根目录下的文本文件(如:https://example.com/robots.txt),它用于指导网络爬虫(如搜索引擎的蜘蛛程序)如何抓取该网站的内容。这个文件遵循 Robots…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...
实现弹窗随键盘上移居中
实现弹窗随键盘上移的核心思路 在Android中,可以通过监听键盘的显示和隐藏事件,动态调整弹窗的位置。关键点在于获取键盘高度,并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...
 
无人机侦测与反制技术的进展与应用
国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机(无人驾驶飞行器,UAV)技术的快速发展,其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统,无人机的“黑飞”&…...
 
【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看
文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...
WebRTC从入门到实践 - 零基础教程
WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC? WebRTC(Web Real-Time Communication)是一个支持网页浏览器进行实时语音…...
