首頁 > 軟體

Iptables防火牆四表五鏈概念及使用技巧詳解

2022-08-10 18:03:23

1.鏈的概念

在防火牆中,使用者想要成功進入內網環境,就需要傳送請求報文,請求報文要和防火牆設定的各種規則進行匹配和判斷,最後執行相應的動作(放行或者拒絕),一個防火牆中通常針對不同的來源設定很多種策略,多個策略形成一個鏈,其實也可以理解成是分組的概念,在Iptables防火牆中針對不同的鏈路共分為五種不同的鏈。

如下圖所示,當資料包文進入鏈之後,首先匹配第一條規則,如果第一條規則通過則存取,如果不匹配,則接著向下匹配,如果鏈中的所有規則都不匹配,那麼就按照鏈的預設規則處理資料包文的動作。

2.Iptables五種鏈的概念

Iptables有五種不同的鏈,分別是INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING。

  • INPUT:從外界進入防火牆的封包會應用此規則鏈中的策略。
  • OUTPUT:當前伺服器從防火牆外出的資料表會應用此規則鏈中的策略。
  • FORWARD:轉發封包時會應用此規則鏈中的策略。
  • PREROUTING:主機外的報文要進入防火牆,所有的封包進來的時候都會由PREROUTING鏈進行處理。
  • POSTROUTING:主機內的報文要從防火牆出去,需要經過POSTROUTING鏈進行處理。

3.Iptables資料流向經過的表

請求報文流入本地要經過的鏈:

請求報文要進入本機的某個應用程式,首先會到達Iptables防火牆的PREROUTING鏈,然後又PREROUTING鏈轉發到INPUT鏈,最後轉發到所在的應用程式上。

PREROUTING--->INPUT--->PROCESS

請求報文從本機流出要經過的鏈:

請求報文讀取完應用程式要從本機流出,首先要經過Iptables的OUTPUT鏈,然後轉發到POSTROUTING鏈,最後從本機成功流出。

PROCESS--->OUTPUT--->POSTROUTING

請求報文經過本機向其他主機轉發時要經過的鏈:

請求報文要經過本機向其他的主機進行換髮時,首先進入A主機的PREROUTING鏈,此時不會被轉發到INPUT鏈,因為不是發給本機的請求報文,此時會通過FORWARD鏈進行轉發,然後從A主機的POSTROUTING鏈流出,最後到達B主機的PREROUTING鏈。

PREROUTING--->FORWARD--->POSTROUTING

4.Iptables防火牆四種表的概念

**Iptables防火牆中表的概念:**在一個鏈中會有很多的防火牆規則,我們將具有同一種型別的規則組成一個集合,這個集合就叫做表,表可以簡單的列成是一些具有同樣型別的規則的分組,例如關於IP地址轉換的策略都放在一個表中、修改資料保報文的策略都放在一個表中。

在Iptables防火牆中包含四種常見的表,分別是filter、nat、mangle、raw。

  • filter:負責過濾封包。
    • filter表可以管理INPUT、OUTPUT、FORWARD鏈。
  • nat:用於網路地址轉換。
    • nat表可以管理PREROUTING、INPUT、OUTPUT、POSTROUTING鏈。
  • mangle:修改封包中的內容,例如服務型別、TTL、QOS等等。
    • mangle表可以管理PREROUTING、INPUT、OUTPUT、POSTROUTING、FORWARD鏈。
  • raw:決定封包是否被狀態跟蹤機制處理。
    • raw表可以管理PREROUTING、OUTPUT鏈。

5.Iptables防火牆表與鏈之間的優先順序概念

在Iptables防火牆中,表與鏈之間是存在優先順序的關係的,因為每張表的作用都是不同的,一張表會同時存放在多個鏈中,當一條資料包文進入一個鏈後,會按照表的優先順序順序依次匹配對應的規則。

Iptables防火牆表的優先順序順序:raw--->mangle--->nat--->filter。

如下圖所示,當資料包文進入PREROUTING鏈時,首先規匹配raw表中的規則,然後在匹配mangle表中的規則,最後在匹配nat表的規則,按照優先順序順序依次匹配。

[外連圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-4e31sEnS-1657242939282)(G:1-運維技術檔案整理Iptables1-Iptables防火牆核心理論概念.assetsimage-20220428235007852.png)]

6.Iptables防火牆表和鏈之間的使用技巧

從以下三個問題中掌握防火牆表和鏈之間的使用技巧。

首先牢記各個鏈對應的表有那些:

鏈名對應的表名
INPUTmangle、nat、filter
OUTPUTraw、mangle、Nat、filter
FORWARDmangle、filter
PREROUTINGraw、mangle、nat
POSTROUTINGmangle、nat

記憶技巧:進出第一關的鏈都沒有fileter表,第一個進鏈除fileter都包含,input除raw都有、output全有、出鏈只有mangle和nat、forward只有mongle和filter。

**問題1:**

來自於10.0.0.1的地址,存取本機的web服務請求都不允許,應該在哪個表的哪個鏈上設定規則?

源地址為10.0.0.1的IP存取本機的WEB請求時不允許,屬於資料流入的操作,首先要分析會經過那些Iptables鏈?

源地址到本地服務會經過Iptables的PREROUTING和INPUT鏈,做這種規則時,都會堅定最近位置處做策略,但是也要結合實際的功能,PREROUTING鏈離源地址最近,但是沒有過濾的表,在PREROUTING中的表有mangle、nat,沒有負責做過濾的表,因此就要判斷第二個鏈,也就是INPUT鏈,在INPUT鏈中包含mangle、nat、filter表,在INPUT鏈中新增策略是最合適的。

最終的結果就是在INPUT鏈的filter表中新增具體的策略。

**問題2:**

所有由本機發往10.0.0.0/24網段的TCP服務都不允許?

從本機發往其他主機的TCP服務請求,屬於資料流出的操作,會經過PREROUTING鏈和OUTPUT鏈,到達目標地址的資料保溫都拒絕,這種類似的需求,一般都是由過濾表filter來實現,PREROUTING鏈包含的表有mangle、nat這兩張,沒有過濾表,OUTPUT鏈有raw、mangle、Nat、filter四張表,最終的結果就是在OUTPUT鏈的filter表新增具體的策略。

**問題3:**所有來自己本地內部網路的主機,向網際網路傳送web伺服器請求都允許?

到達本機的請求報文向網際網路傳送請求,屬於資料轉發的操作,會經過PREROUTING、FORWARD和POSTROUTING三個連,這種允許和拒絕都是在filter表中操作的,因此找到含有filter表並且距離目標端最近的鏈中新增合適的規則,最終的結果就是在filter表中新增具體的操作。

結論:

1)首先要知道要實現的需求含義,然後根據需求判斷出要在哪一個表中實現該策略。

2)然後摸清楚報文要經過的鏈,堅定在距離源/目的最近的鏈做策略。

3)最後根據鏈包含的表,判斷出要將規則新增到哪一個鏈的表中。

7.Iptables防火牆幾種動作

ACCEPT:將封包放行。

REJECT:拒絕該封包通行,阻攔封包。

DROP:丟棄封包,不給予任何處理。

REDIRECT:重定向。

以上就是Iptables防火牆四表五鏈概念及使用技巧詳解的詳細內容,更多關於Iptables防火牆四表五鏈的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com