Linux防火墙-firewalld的rich规则配置

Centos7 防火墙策略rich-rule 限制ip访问-----图文详解 查看防火墙策略。 阅读详情

在某些情况下,我们可能需要创建更复杂的规则,而不仅仅是允许区域中的某些端口或服务。例如,我们可能想要创建一条规则来阻止来自特定机器的某种类型的流量。这就是rich规则的意义所在。规则基本上由两部分组成:在第一部分中,我们指定要应用规则必须满足的条件,在第二部分中,指定要执行的操作:accept、drop或reject

实验目的

在下面的实验拓网络拓扑中,防火墙的 ens33网卡是分配到external区域,ens34网卡分配的internal区域

我们的实现目的是防止特定外网(用192.168.168.0/24来模拟)的主机192.168.168.105访问我们防火墙的ssh服务

我们先来看看防火墙本身的一些以下是external区域的预配置

以下是internal区域的预配置

拦截来自外部网路中IP为192.168.168.105主机的流量:我们将如何组成我们的规则,事实上,就是iptables规则的一种变相语法:

firewall-cmd --zone=external --add-rich-rule="rule \ family="ipv4" \ source address=192.168.168.105 \ service name=ssh reject \"

rich规则详解

  • --add-rich-rule选项,将该规则描述为其参数。规则以rule关键字开头。
  • family:我们指定该规则仅应用于IPv4数据包:如果未提供此关键字,则该规则将同时应用于IPv4和IPv6。
  • source address:我们提供数据包必须具有的源地址,才能使用源地址触发规则。
  • service,我们指定了规则的服务类型,在本例中为ssh。
  • reject/drop/accept,我们提供了数据包与规则匹配时要执行的操作,在本例中为reject.

当我们将上面的rich规则添加的external区域,我们192.168.168.105再也无法访问到防火墙的外部接口192.168.168.106了。这是rich规则的一个简单用法

上面的一个非常简单,但是规则可能变得非常复杂。您应该查看firewalld文档,以查看所有可用设置和选项的范围。

rich规则的其他命令行参数

可以查看如下表,里面列举了rich规则常用的方法

我这里没必要一一列出示例,我们先将刚才添加的rich规则删掉

firewall-cmd --zone=external --remove-rich-rule=" \ 
rule family="ipv4" \  
source address="192.168.168.105" \ 
service name="ssh"  \ 
reject" 

Rich规则的优先级

首先我们在解析这个问题,仍然使用上面的例子,比如我们希望只有192.168.50.17的主机能够远程ssh到防火墙,而同一网络192.168.50.0/24的其他主机我们禁止其他访问。

在写rich规则时,往往会遇到两条冲突的规则。例如,为了只允许来自192.168.50.0/24网络的一台主机192.168.50.17允许通过ssh访问防火墙,显然下面的规则是不可取的

  • 规则1:-拒绝来自192.168.50.0/24网络的所有主机(drop/reject)
  • 规则2:-允许来自192.168.50.17的主机(accept)

由于192.168.50.17主机也属于192.168.50.0/24这个网络号,因此这两个规则都将应用于该主机,如果你对iptables规则熟悉的话,可能会去如下这样理解防火墙匹配规则的行为。

  1. 仅处理入站的数据包。
  2. 数据包始终以从上到下的方向进行处理。
  • Step1:一旦数据包与规则匹配,将立即对该数据包执行关联操作(允许或拒绝)。
  • Step2:数据包将不可用于进一步处理。

然后可能就许就这样定义防火墙的规则:

  • 规则1:允许来自192.168.50.17的主机(accept)
  • 规则2:拒绝来自192.168.50.0/24网络的所有主机(drop/reject)

规则精确度越高的放在规则列表的最前,逻辑上应该是先设定accept行为的规则,然后再设定drop/reject行为的规则,这样的逻辑在iptables是正确,甚至其他传统的防火墙也是这样行为逻辑的。但你要搞清楚,到了firewalld的rich规则就不适用了。为了证实这一说法,我么参考了http://firewalld.org的技术文档,请好好理解图中划黄线的一段话。

中文的翻译:

当前的rich规则的一个问题是,它们是基于规则操作来组织的。  日志规则始终在 拒绝规则之前发生。  拒绝规则总是发生在 允许规则之前。 这导致用户感到困惑, 因为它隐式地对规则进行了重新排序。 这也使得不可能添加全面的rich规则来拒绝流量。

因此firewalld的rich规则执行逻辑如下:

  1. 日志规则
  2. drop/reject规则
  3. accept规则

实验示例

目标:验证rich规则的潜在问题

  • 我们允许192.168.50.0/24所有网络访问局域网的10.10.10.1上的远程桌面
  • 允许192.168.50.17的主机通过ssh访问防火墙
  • 拒绝192.168.50.0/24其他主机通过ssh访问防火墙
  • 拒绝所有来自192.168.50.0/24对防火墙的ping请求

进行上面的拓扑实验前,我们检测一下防火墙的状态

在Linux管理配置防火墙时,先在文本编辑器将你的思路理顺了,然后一条条命令拷贝到shell中回车,是一种很好的习惯,这些命令能出错的话,我们部署到生产环境再写成shell或python脚本程序。

rich规则有两种书写方法,你不得不吐嘈:"这些地球上最丑陋的命令形式,没有之一",你不管使用那种形式,都很容易出错,所以建议你在文件编辑器修改到没有毛病才粘贴到shell终端窗口中。

  • 不换行风格--add-rich-rule=之后的规则内容用单引号括起来,见下图第一个的命令
  • 换行风格,需要了解一些shell解析器的基础,说明见下图第二个命令

允许192.168.50.0/24所有主机网络访问局域网的10.10.10.1上的远程桌面

firewall-cmd --zone=external --add-forward-port=\ 
port=3389:proto=tcp:toport=3389:toaddr=10.10.10.1 

允许192.168.50.17的主机通过ssh访问防火墙

firewall-cmd --zone=external --add-rich-rule="rule \ 
family="ipv4" \ 
source address="192.168.50.17" \ 
service name="ssh" \ 
log prefix=\"ssh connect from:\" \
 level="notice" \
 accept" 

拒绝192.168.50.0/24的其他主机访问防火墙的ssh服务

firewall-cmd  --zone=external --add-rich-rule="rule \
family="ipv4" \ 
source address="192.168.50.0/24" \ 
service name="ssh" \ 
log prefix=\"ssh reject from:\" \
level="notice" \
drop" 

拒绝所有来自192.168.50.0/24对防火墙的ping请求

firewall-cmd  --zone=external --add-rich-rule="rule \
protocol value="icmp" \
reject" 

ok,整个过程没出错

我们使用以下命令查看,刚才在external区域配置的rich规则

firewall-cmd --zone=external --list-rich-rules 

实验的重点:就是要验证第一条rich的规则是否会被优先执行,还是第二条drop规则会先于第一条accept规则执行?

我们在192.168.50.17的主机上测试一下能否ssh到防火墙?如下图ssh请求无响应且没有错误提示返回,这里至少已经证实

  • 即便在规则列表中accept规则位置先于drop规则,但是drop规则总是会优先于accept规则被匹配。
  • 已经无法ping通防火墙,并且由防火墙返回错误信息。

防火墙的端口转发测试,192.168.50.17是一台Ubuntu主机,我们使用Remmina远程桌面软件连接到内网10.10.10.1的主机

OK,端口转发也是成功的

那么实现遗留的问题,就是rich规则如何能如我们所愿地定的规则顺序执行?这正是本文的重点

Rich规则的priority字段

新版的firewalld添加了新的priority字段。它可以是-32768到32767之间的任何数字,其中数字越小,优先级越高。此范围足够大,以允许从脚本或其他实体自动生成规则。

那么就非常简单:只需在你想优先执行的rich规则中给priority字段定义一个足够小的负数,就能确保能优先于其他drop/reject规则被firewalld匹配。如下图所示

Ok,此时,accept的规则优先于其他drop/reject规则被匹配,这正是我们所希望的。

按照我上面的实验步骤,应该没什么问题,能达到预期实验的目地,结束本篇之前,要记得
将上面的运行时配置转化为持久配置,执行下面命令

firewall-cmd --runtime-to-permanent

小结

目前,rich规则的定义,至少目前来说我算是全简书里解说地很清楚了,但rich规则的语法是非常令人恶心的,这点不容否认。

firewalld富规则配置黑名单 的富规则,可以灵活地屏蔽指定 IP 地址或 IP 地址段。如果需要撤销规则,可以使用。参数确保规则持久化,并通过。 阅读详情

相关推荐

firewalld(4) Rich Rule

是firewalld防火墙服务中的一部分,它提供了一种更为丰富和易于理解的方式来创建复杂的防火墙规则。这种丰富语言(Rich Language)使用带有值的关键词,并且是对iptables规则的一种抽象表示。

Monster✺◟(∗❛ัᴗ❛ั∗)◞✺的博客 2307

firewall-cmd 富规则 rich-rule

至于使用DROP还是REJECT更合适一直未有定论,因为的确二者都有适用的场合。因为DROP虽然单方面的中断了连接,但是并不返回任何拒绝信息,因此连接客户端将被动的等到tcp session超时才能判断连接是否成功,这样早企业内部网络中会有一些问题,例如某些客户端程序或应用需要IDENT协议支持(TCP Port 113, RFC 1413),如果防火墙未经通知的应用了DROP规则的话,所有的同类连接都会失败,并且由于超时时间,将导致难以判断是由于防火墙引起的问题还是网络设备/线路 故障。

HCIE 数通、RHCE、HCIP 欧拉、MySQL OCP 持证工程师。 4887

Linux防火墙入门级教程——iptables、firewalld配置详解

合理的防火墙是你的计算机防止网络入侵的第一道屏障。你在家里上网,通常互联网服务提供会在路由中搭建一层防火墙。当你离开家时,那么你计算机上的那层防火墙就是仅有的一层,所以配置和控制好你 Linux 电脑上的防火墙很重要。如果你维护一台 Linux 服务器,那么知道怎么去管理你的防火墙同样重要,只要掌握了这些知识你才能保护你的服务器免于本地或远程非法流量的入侵。 很多 Linux 发行版本已经自带了防火墙,通常是iptables,它很强大并可以自定义,但配置起来有点复杂,firewalld也是用于管理Linux

weixin_43507410的博客 698

Centos7防火墙配置rich-rule实现IP端口限制访问 & firewall-cmd命令

Centos7防火墙配置rich-rule实现IP端口限制访问 & firewall-cmd常用命令

weixin_42326851的博客 1万+

Linux防火墙配置详解:iptables与firewalld实战及避坑指南

Linux防火墙的底层是内核中的netfilter框架,它定义了数据包经过协议栈时的多个检查点。iptables作为用户态工具,直接操作这些检查点上的规则表,通过表、链、规则的层级结构实现流量过滤、NAT转换和端口转发。规则配置后立即生效,但默认不持久化,重启后需要重新加载。而firewalld则提供了更友好的区域(zone)和服务管理方式,自动处理运行时状态与永久配置,适合常规场景。理解数据包在PREROUTING、INPUT、FORWARD等链上的流转路径,掌握规则顺序、默认策略、持久化保存等核心要点,

weixin_30225755的博客 284

Linux学习整理-网络防火墙firewalld

firewall的知识点

weixin_45776100的博客 1422

firewall-cmd添加访问规则

若要使用允许网段访问本地的 8088 端口,你可以按照以下步骤操作。

qq_21047625的博客 1949

53、Linux防火墙管理全解析

本文深入解析了Linux防火墙管理的核心知识,涵盖firewalld、iptables和nftables等常见工具的使用场景及配置方法。详细介绍了firewalld的区域管理、规则配置、动态与永久规则的应用,以及丰富规则的定制方法。同时探讨了网络安全最佳实践,如最小权限原则、日志监控和规则审查,帮助用户构建安全稳定的Linux网络环境。

ff678的博客 65

第2篇:Linux防火墙-firewalld的rich规则配置

第2篇:Linux防火墙-firewalld的rich规则配置 这是承接上一篇的内容 在某些情况下,我们可能需要创建更复杂的规则,而不仅仅是允许区域中的某些端口或服务。例如,我们可能想要创建一条规则来阻止来自特定机器的某种类型的流量。这就是rich规则的意义所在。规则基本上由两部分组成:在第一部分中,我们指定要应用规则必须满足的条件,在第二部分中,指定要执行的操作:accept、drop或reject 实验目的 在下面的实验拓网络拓扑中,防火墙的ens33网卡是分配到external区域,ens3.

6514

焦距与视差的关系及其对深度估计的影响

焦距在立体视觉中的作用至关重要,它直接影响视差的大小,从而影响深度估计的精度。焦距越长,视差差异越大,物体的深度估计就越精确。这一关系使得焦距长的相机在一些需要高精度深度估计的应用场景中更加优越。了解焦距与视差的关系,对于优化相机配置和提升深度估计精度具有重要意义。在实践中,选择合适的焦距对于获得精确的深度信息至关重要,特别是在自动驾驶、虚拟现实、三维重建等领域,精确的深度估计能够提供更好的用户体验和技术支持。

计算机科学与技术专业学生的成长之路 1665

实战案例:用多智能体系统模拟房地产市场的架构设计

房地产市场是典型的复杂自适应系统:买方纠结“要不要上车”、卖方盘算“挂多少钱能快速成交”、中介忙着“撮合两边赚佣金”、政府琢磨“怎么调政策稳房价”——每一个参与者的微小决策,最终都会汇聚成“房价暴涨”“成交冰点”这样的宏观现象。传统的计量经济学模型(比如线性回归)假设“所有人都是理性人”,但现实中没人能算清所有变量——你可能因为“同事买了学区房”就跟风,也可能因为“怕失业”而放弃买房。这时候,多智能体系统(MAS)

移动开发前沿的博客 1119

firewalld服务 具体介绍

本章重点介绍由软件包iptables提供的命令行工具,工作在用户空间,用来编写规则,写好的规则被送往netfilter,告诉内核如何去处理信息包。Netfilter在内核中选取五个位置放了五个hook(勾子) function(INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING),而这五个hook function向用户开放,用户可以通过一个命令工具(iptables)向其写入规则。即五表。

wyq2070857323的博客 1346

【自动驾驶学习笔记——Prescan和Simulink 学习笔记和问题记录(1)】

主要记录一些Prescan/Simulink 联合仿真出现的问题。

ly1336545868的博客 1453

Linux16-防火墙与firewalld

firewalld、firewall-cmd、firewall-config配置基本的防火墙。

福来阁86号技师的妖孽日常 297

ADS2023实战:2.4GHz超外差接收机从设计到链路预算全流程解析

本文以ADS 2023软件为平台,详细解析了2.4GHz超外差接收机从核心指标定义、架构原理到完整链路搭建与仿真的全流程。通过实战演练,重点阐述了如何利用ADS进行谐波平衡仿真和链路预算分析,以量化评估系统增益、噪声系数等关键性能,为射频工程师提供了一套从理论到仿真的系统级设计方法。

herb5的博客 807

Allegro 16.6 高级技巧实战:用Region规则和动态间距搞定高密度连接器布局布线

本文深入探讨了Allegro 16.6在高密度连接器布局布线中的高级技巧,重点介绍了Region规则和动态间距属性的应用。通过局部规则覆盖和分层控制,解决0.5mm以下引脚间距的布线难题,提升PCB设计效率和质量。

weixin_30352645的博客 436

Centos7防火墙配置rich-rule实现IP端口限制访问

Linux防火墙作为服务器的一个重要安全工具,合理的安全策略有利于提高服务器系统的安全性。比如限制IP或者端口才能访问服务器,在很大程度上避免了网络攻击。 比如配置3306端口允许访问,后来根据业务需求,需要严格限制仅允许指定IP访问3306端口。 可以通过防火墙配置rich-rule实现。 1. 删除原有的3306端口访问规则 firewall-cmd --permanent --remove-port=3306/tcp 2. 添加规则 firewall-cmd --permanent --add-ri

m0_67391677的博客 743

YOLOv8改进 | Conv篇 | 利用YOLOv9的GELAN模块替换C2f结构(附轻量化版本 + 高效涨点版本 + 结构图)

本文给大家带来的改进机制是利用2024/02/21号最新发布的YOLOv9其中提出的GELAN模块来改进YOLOv8中的C2f,GELAN融合了CSPNet和ELAN机制同时其中利用到了RepConv在获取更多有效特征的同时在推理时专用单分支结构从而不影响推理速度,同时本文的内容提供了两种版本一种是参数量更低涨点效果略微弱一些的版本(参数量V8n下降80w,计算量为6.1GFLOPs),另一种是参数量稍多一些但是效果要不参数量低的效果要好一些(均为我个人整理),提供两种版本是为了适配不同需求的读者,具体选择

Snu77的博客 7546

Linux 下 firewalld 防火墙服务设置

Linux 下 firewalld 防火墙服务设置 firewalld简述 动态防火墙后台程序firewalld提供了一个动态管理的防火墙用以支持网络“zones”,以分配对一一个网络及其相关链接和界面一定程度的信任。它具备对IPV4和IP v6防火墙设置的支持。它支持以太网桥,并有分离运行时间和永久性配置选择。它还具备一个通向服务或者应用程序以直接增加防火墙规则的接口 相...

Buster_ZR的博客 6115

VS2019编译配置Easy3D

VS2019编译配置Easy3D

dayuhaitang1的博客 2590

基于全局和局部接受性因果特征的广义学习模型,用于在线增量机械故障诊断

本文提出了一种**因果广义学习模型(CBLM)**,用于在线增量机械故障诊断。该模型结合了**全局因果特征**(时域、频域、故障特征频率均值)和**多尺度局部因果特征**(通过扩张卷积提取),构建了一个具有**增量学习能力**的广泛学习系统(BLS)。CBLM支持**结构增量学习**(增加增强节点)和**样本增量学习**(动态更新权重),无需重新训练整个模型,显著提高了计算效率和诊断精度。在两个滚动轴承数据集上的实验表明,CBLM在诊断准确性和训练时间上均优于传统深度学习模型,适用于在线实时故障诊断。

huanghm88的专栏 380

RHCE之路iptables,firewalld,富规则

root@localhost ~]# iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT --- 写iptables命令。[root@localhost ~]# firewall-cmd --get-default-zone -- 查看默认区域。[root@localhost ~]# firewall-cmd -- ---按两下tab,列出常用的100个命令。重载之后当前会话不会断开,新连接的被拒绝。---添加后要重载(reload)

qq_39744805的博客 738

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Rocky Linux 8 防火墙必选 firewalld:nftables 后端与服务抽象原理

Linux 防火墙本质是 netfilter 内核框架的用户态策略接口,其演进路径从 iptables 的过程式规则管理,发展为 nftables 的高效原子化引擎,再升维至 firewalld 的声明式服务抽象。firewalld 并非简单封装,而是通过 zone 区域模型、service 服务定义和 rich rule 富策略,将端口开放、模块加载、IPv4/IPv6 双栈、Docker 协同等运维需求统一建模。在 Rocky Linux 8 中,它默认绑定 nftables 后端,规避 iptable

diandingyin9417的博客 454

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Linux实战|firewalld防火墙

富规则优先级高于普通zone规则,可以实现:按源IP控制访问、日志审计、速率限制。只允许10.1.8.10可以ping本机,其他全部拒绝。

我的Linux界下小雨. 418

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

网络安全太难弄?一文搞懂Linux防火墙设置及常用命令,后顾无忧

网络安全太难弄?一文搞懂Linux防火墙设置及常用命令,后顾无忧 2021-07-28 11:36·高薪实战爱好者 合理的防火墙是你的计算机防止网络入侵的第一道屏障。网络攻击近来正在日益得势,几乎每一天都会听说发生了新的针对软件漏洞的攻击,实现安全计算是一个永恒的挑战。我们并不缺乏挫败狡猾的黑帽黑客的技术,但他们仍然在不断地成功入侵一个又一个系统和网络。 防火墙技术的一种发展趋势是将来自入侵检测范畴的应用层检测技术与过滤网络流量的能力相结合,一些防火墙早就已经开始这么做了。 今天给大家分享一份《Linux防

Dou_Hua_Hua的博客 200
上一篇: goland mod使用详解
下一篇: 报“The selected directory is not a valid home for Go SDK”报错解决方法
binzhili88
博客等级 码龄18年 173粉丝 1原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值