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.pswp.cn/web/38205.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/38205.shtml
英文地址,請注明出處:http://en.pswp.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;傳統的搜索技術已經無法滿足人們對信息的實時性、個性化和多樣性的需求。 …