firewalld(5)--direct

简介 

direct 是 firewalld 服务的一个功能,它允许用户以更直接的方式配置防火墙规则,绕过通常的 firewalld 区域(zone)和服务的抽象层。然而,这个功能已经被弃用(deprecated),并将在未来的版本中移除。

弃用原因:直接配置可能导致与 firewalld 的其他功能(如区域和服务)发生冲突或混淆。因此,推荐使用 firewalld 的策略(policies)和区域(zones)来配置防火墙。

替代方案:可以通过policies来替代direct

direct命令结构

看到这里是不是很熟悉,chain?  rule?也就是我们前面在iptables中介绍的表和链。direct其实就是直接使用iptables或者 ebtables的命令去配置防火墙策略。所以如果对iptables还不熟悉可以回顾前面iptables的文章。

文件结构

<?xml version="1.0" encoding="utf-8"?>
<direct>[ <chain ipv="ipv4|ipv6|eb" table="table" chain="chain"/> ][ <rule ipv="ipv4|ipv6|eb" table="table" chain="chain" priority="priority"> args </rule> ][ <passthrough ipv="ipv4|ipv6|eb"> args </passthrough> ]
</direct>

chain

它用于定义额外链的名称。一个链条条目具有三个属性:

  • ipv="ipv4|ipv6|eb":将创建链的 IP 家族。可以是 ipv4、ipv6 或 eb。

  • table="table":链将被创建的表名。这可以是 iptables、ip6tables 或 ebtables 可用的表之一。

  • chain="chain":将被创建的链的名称。请确保没有其他同名链存在。

请记得添加一条规则或者带有 --jump--goto 选项的穿透规则,将该链与另一个链连接起来。这个与我们iptables中的自定义链和关联自定义链到对应的表是一样的。

rule

它用于向内置或添加的链中添加规则。一个规则条目具有四个属性:

  • ipv="ipv4|ipv6|eb":将添加规则的 IP 家族。可以是 ipv4、ipv6 或 eb。

  • table="table":规则将被添加到的表的名称。这可以是 iptables、ip6tables 或 ebtables 可用的表之一。

  • chain="chain":将添加规则的链的名称。这可以是内置链或使用 chain 标签创建的链。如果链名称是内置链,则规则将被添加到 chain_direct,否则使用提供的链名称。chain_direct 在所有内置链中内部创建,以确保添加的规则不会与 firewalld 创建的规则发生冲突。

  • priority="priority":优先级用于排序规则。优先级为 0 表示在链的顶部添加规则。具有相同优先级的规则处于同一级别,这些规则的顺序不固定且可能更改。如果想确保一个规则在另一个规则之后添加,为第一个规则使用较低的优先级,为后续规则使用较高的优先级。

passthrough

passthrough 是 firewalld 中 direct.xml 文件的一个可选元素标签,用于向内置或添加的链中添加规则。。当你使用 passthrough 时,你需要确保添加的规则与 firewalld 自动创建的其他规则没有冲突。

注意事项:

当使用firewalld时,根据配置的FirewallBackend(在firewalld.conf中设置),直接规则的行为会有所不同。主要的后端有两个:iptablesnftables

数据包接受/丢弃优先级

  • 如果使用了FirewallBackend=nftables,直接规则中ACCEPT数据包并不会立即导致数据包被系统接受。这些数据包仍然需要遵守firewalld的nftables规则集。这基本上意味着有两个独立的防火墙,数据包必须同时被两者接受(iptables和nftables)。
  • 对于DROP规则,数据包会立即被丢弃,无论FirewallBackend的值是什么。
  • 为了解决nftables中ACCEPT数据包的问题,用户可以:
    • 使用富规则(Rich Rules),它们会被转换成启用的后端规则。
    • 在nftables规则集中明确接受数据包,这可以通过将接口或源添加到受信任的区域来实现。注意,这意味着firewalld将不会对这些数据包进行任何过滤。
    • 在适当的区域中仅启用相关的服务、端口、地址等。
    • 可以通过设置FirewallBackend=iptables来回退到iptables后端。但是,应该意识到firewalld的开发重点是nftables后端。

配置直接规则

命令参考

irect Options--direct                      --指定将要使用直接规则--get-all-chains              --获取所有的链--get-chains {ipv4|ipv6|eb} <table>             --获取表中的链--add-chain {ipv4|ipv6|eb} <table> <chain>      --添加链到表中(自定义的)--remove-chain {ipv4|ipv6|eb} <table> <chain>   --移除表中的某条链--query-chain {ipv4|ipv6|eb} <table> <chain>    --返回链是否已被添加到表--get-all-rules                --获取所有的策略规则--get-rules {ipv4|ipv6|eb} <table> <chain>         --获取指定表中指定链中的规则--add-rule {ipv4|ipv6|eb} <table> <chain> <priority> <arg>...        --在指定表中的指定链添加规则--remove-rule {ipv4|ipv6|eb} <table> <chain> <priority> <arg>...   --优先从指定表中的指定链删除规则条目--remove-rules {ipv4|ipv6|eb} <table> <chain>         --从表中删除规则条目--query-rule {ipv4|ipv6|eb} <table> <chain> <priority> <arg>...     --返回是否优先的规则已被添加到链表中--passthrough {ipv4|ipv6|eb} <arg>...    --直接传递iptables的命令--get-all-passthroughs              --获取所有直接传递的规则--get-passthroughs {ipv4|ipv6|eb} <arg>...          --获取跟踪直通规则--add-passthrough {ipv4|ipv6|eb} <arg>...          --添加一个直接规则--remove-passthrough {ipv4|ipv6|eb} <arg>...     --移除一个直接规则--query-passthrough {ipv4|ipv6|eb} <arg>...       --查询直接规则是否添加

增加直接规则

firewall-cmd --direct --add-chain { ipv4 | ipv6 | eb } <table> [自定义链表名] <args>firewall-cmd --direct --add-rule { ipv4 | ipv6 | eb } <table> <chain> <priority> <args>

删除直接规则

firewall-cmd --direct --remove-chain { ipv4 | ipv6 | eb } <table> [自定义链表名] <args>firewall-cmd --direct --remove-rule { ipv4 | ipv6 | eb } <table> <chain> <priority> <args>

firewalld与iptables表对比

修改firewall的后端为iptables

编辑/etc/firewalld/firewalld.conf,将FirewallBackend=修改为iptables,默认为nftables

重启firewalld服务

此时查看我们的firewalld  zone

这是我们上一篇文章配置的rich rule规则和public zone的配置

查看iptables

此时会发现我们的iptables有非常多的规则,我这里只列出与我们前面配置的trusted zone相关的规则。

这个是我们上面配置的两条测试顺序的firewalld规则,显示REJECT 192.168.140.248连接本机,然后又允许192.168.140.248连接本机。该链被引用了一次
该链被引用在IN_trusted链上。注意此处有INPUT_POLICIES_pre,IN_trusted_pre,IN_trusted_log等,这个顺序是从上到下一次匹配的,这对于我们理解firewalld有很大的帮助。前面我们介绍在配置rich rule的时候不同范围优先级在不同的表中,其实在这里就可以很清楚的看到。
IN_trusted被INPUT_ZONES链引用
INPUT_ZONES链被引用到INPUT链中

测试1

配置直接规则,允许192.168.140.248访问140.250的80端口,在firewalld中,我们已经配置了2条规则,第一条禁止第二条放行,但是禁止的优先级高,所以禁止优先。

禁止的优先级为-20,比-10优先
通过--direct --add-passthrough直接插入一条规则,这个规则就会直接应用在INPUT链的最前面

此时iptables中因为INPUT链中我们放行的是优先的,所以当从248访问250的80端口的时候就可以正常访问了。

测试2

我们现在要限制192.168.140.248对250的icmp访问,每5秒放行一个数据包。这个在我们上篇文章介绍rich rule的时候是没有实现的,那么我们这里通过--direct来实现

我们创建一个链,名为icmp-filter,然后在链中创建规则这两条规则意思为从192.168.140.248来的icmp数据包先在第一个rule里面进行限速,即每分钟12个,5秒一个。然后burst为10。第二条规则为阻止所有从192.168.140.248来的icmp流量。

上面配置的详细原理可以参考iptables常用扩展模块和iptables自定义链的配置方式。配置完成后通过--runtime-to-permanent从runtime永久化然后重新加载。

此时在192.168.140.248上ping可以实现我们想要的功能吗?

由上图可以并未实现我们想要的功能,这是为什么呢?

查看iptables

创建的自定义链和规则已经完成,并且该链被引用了
icmp-filter链被INPUT_direct引用了,并且INPUT_direct也被引用了
此时INPUT_direct被INPUT链引用,ping的流量在前面的规则中已经被匹配放行通过,故此时ping没有效果。
直接通过--passthrough将该链引用在最前面。
此时在248上ping 250就实现了我们想要的效果。

总结:

        当我们使用--direct参数后,并且将后端改为iptables后,那么数据包的处理方式就和iptables是一样的。我们可以直接修改iptables也可以通过firewalld-cmd进行配置。这个时候如果使用--direct命令去配置的话,需要我们对iptables有一定程度的了解。更多的iptables的使用大家可以看我前面与iptables有关的文章。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/38205.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

详解位运算(、|、^、^、>>、<<)

十六进制与二进制对应关系 十六进制和二进制之间的转换非常直接&#xff0c;每个十六进制数字直接对应四个二进制位&#xff0c;并且十六进制相对二进制要更加简洁&#xff0c;因此通常书写位操作的代码时会选择使用十六进制来表示数值。 为了方便快速阅读涉及位运算的源码&a…

深入探索Scala的类型推断机制

引言 Scala是一种静态类型编程语言&#xff0c;以其强大的类型推断系统而闻名。类型推断允许开发者在很多情况下省略显式的类型声明&#xff0c;从而编写更简洁、更少出错的代码。本文将深入探讨Scala的类型推断是如何实现的&#xff0c;以及它如何帮助提高开发效率和代码可读…

萌啦跨境工具箱有什么作用,萌啦跨境工具箱OZON营销神器

萌啦OZON数据平台&#xff0c;作为专为OZON平台商家打造的数据分析工具&#xff0c;集成了多种强大功能&#xff0c;旨在帮助商家在激烈的市场竞争中获得数据驱动的优势&#xff0c;实现精准运营与高效增长。那么萌啦跨境工具箱有什么作用&#xff1f;接下来介绍萌啦跨境工具箱…

全面升级厨房安全,电焰灶引领新时代

煤气是许多家庭日常使用的能源&#xff0c;目前的普及率还是比较高的&#xff0c;但平时因煤气泄漏而引发的事故也很多&#xff0c;只需要查看最近一个月因液化气泄漏引起的爆炸事件屡见不鲜。打开新闻&#xff0c;我们总能时不时看到煤气爆炸的事故&#xff0c;幸运的能够逢凶…

代码随想录算法训练营day70 | 108. 冗余连接、109. 冗余连接II

本次题目都来自卡码网 108. 冗余连接 无向图&#xff0c;返回一条可以删去的边&#xff0c;使得结果图是一个有着N个节点的树&#xff08;即&#xff1a;只有一个根节点&#xff09;。 从前向后遍历每一条边&#xff08;因为优先让前面的边连上&#xff09;&#xff0c;边的…

【2024LLM应用-数据预处理】之如何从PDF,PPT等非结构化数据提取有效信息(结构化数据JSON)?

&#x1f970;大家知道吗,之前在给AI大模型"喂数据"的时候,我们往往需要把非结构化数据(比如PDF、PPT、Excel等)自己手动转成结构化的格式,这可真是太累人儿了。&#x1f975; 幸好现在有了Unstructured这个神级库,它内置的数据提取函数可以帮我们快速高效地完成这个…

ubuntu 安装并启用 samba

环境&#xff1a;ubuntu server 24.04 步骤如下&#xff1a; sudo apt update sudo apt install samba修改配置文件&#xff1a; sudo vi /etc/samba/smb.conf新增内容&#xff1a; [username]path /home/[username]available yesvalid users [username]read only nobrow…

[Information Sciences 2023]用于假新闻检测的相似性感知多模态提示学习

推荐的一个视频&#xff1a;p-tuning P-tunning直接使用连续空间搜索 做法就是直接将在自然语言中存在的词直接替换成可以直接训练的输入向量。本身的Pretrained LLMs 可以Fine-Tuning也可以不做。 这篇论文也解释了为什么很少在其他领域结合知识图谱的原因&#xff1a;就是因…

什么是客户体验自动化?

客户体验自动化是近年来在企业界备受关注的一个概念。那么&#xff0c;究竟什么是客户体验自动化呢&#xff1f;本文将为您详细解析这一话题&#xff0c;帮助您更好地理解并应用客户体验自动化。 我们要先明确什么是客户体验。客户体验是指客户在使用产品或服务过程中的感受和体…

Android SQLite 数据库存学习与总结

Android 系统内置了一个名为 SQLite 数据库。那么 SQLite 是一种什么样的数据库&#xff0c;它有那些特点&#xff0c;应该怎么操作它&#xff1f;下面&#xff0c;让我们就来认识一下它吧。 1、概念&#xff1a; SQLite 是一种轻量级的关系型数据库&#xff0c;它不仅支持标准…

elementPlus自定义el-select下拉样式

如何在f12元素选择器上找到下拉div呢&#xff1f; 给el-select添加 :popper-append-to-body"false" 即可&#xff0c;这样就可以将下拉框添加到body元素中去&#xff0c;否则当我们失去焦点&#xff0c;下拉就消失了&#xff0c;在元素中找不到el-select。剩下就可以…

洛谷 AT_abc169_d [ABC169D] Div Game 题解

思路 想要让操作次数最多&#xff0c; z z z 就要尽可能小。 由于 z z z 是 N N N 的因数&#xff0c;所以 p p p 就是 N N N 的质因数。 设 N N N 的质因数中有 x x x 个 p p p&#xff0c;则这个 p p p 能执行 y y y 此操作&#xff0c;并且 y y y 满足 ∑ i …

怎么压缩图片大小?6种无需牺牲质量的图片压缩方法

经常处理图片的小伙伴都知道&#xff0c;高质量的图片往往会占据电脑大量的存储空间&#xff0c;导致图片传输及存储的不便。因此&#xff0c;掌握如何压缩图片大小变得尤为重要。本文将详细介绍图片压缩的几种方法&#xff0c;帮助你高效地减小图片文件大小&#xff0c;让你的…

使用多智能体辩论微调大型语言模型

F INE - TUNING L ARGE L ANGUAGE M ODELS WITH MULTI - AGENT D EBATE S UPERVISION DebateGPT: Fine-tuning Large Language M

探究Yarn依赖之源:精通why命令的秘籍

&#x1f575;️‍♂️ 探究Yarn依赖之源&#xff1a;精通why命令的秘籍 在现代JavaScript项目开发中&#xff0c;依赖管理是至关重要的一环。Yarn作为领先的包管理器之一&#xff0c;提供了强大的工具来帮助开发者理解项目依赖的起源和结构。yarn why命令就是这样一个工具&am…

IT专业入门,高考假期预习指南-致有志踏入IT领域的高考少年们

IT专业入门&#xff0c;高考假期预习指南 七月来临&#xff0c;各省高考分数已揭榜完成。而高考的完结并不意味着学习的结束&#xff0c;而是新旅程的开始。对于有志于踏入IT领域的高考少年们&#xff0c;这个假期是开启探索IT世界的绝佳时机。 计算机专业是一个综合性非常强…

【.Net】Web项目部署腾讯云

文章目录 总述前置准备docker-compose部署普通部署 参考 总述 前置准备 云服务添加端口 另有linux本身防火墙请参考&#xff1a; 【Linux】防火墙命令 需安装.Net SDK和Asp .Net Runtime 注意&#xff1a; 1、sdk也要不只是runtime 2、是Asp .Net Runtime不是.Net Runtime …

ConcurrentHashMap并发哈希表的设计与实现

ConcurrentHashMap并发哈希表的设计与实现 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 介绍ConcurrentHashMap 1. ConcurrentHashMap的概述 ConcurrentH…

一个计算密集小程序在不同CPU下的表现

本文比较了几款CPU对同一测试程序的比较结果&#xff0c;用的是Oracle公有云OCI上的计算实例&#xff0c;均分配的1 OCPU&#xff0c;内存用的默认值&#xff0c;不过内存对此测试程序运行结果不重要。 本文只列结果&#xff0c;不做任何评价。下表中&#xff0c;最后一列为测…

搜索型数据库的技术发展历程与趋势前瞻

概述 随着数字科技的飞速发展和信息量的爆炸性增长&#xff0c;搜索引擎已成为我们获取信息的首选途径之一&#xff0c;典型的代表厂商如 Google。然而&#xff0c;随着用户需求的不断演变&#xff0c;传统的搜索技术已经无法满足人们对信息的实时性、个性化和多样性的需求。 …