linux平台下防火牆iptables原理

2021-07-30 22:07:44 字數 2926 閱讀 3183

netfilter/iptables(簡稱為iptables)組成linux平台下的包過濾防火牆,與大多數的linux軟體一樣,這個包過濾防火牆是免費的,它可以代替昂貴的商業防火牆解決方案,完成封包過濾、封包重定向和網路位址轉換(nat)等功能。

規則(rules)其實就是網路管理員預定義的條件,規則一般的定義為「如果資料報頭符合這樣的條件,就這樣處理這個資料報」。規則儲存在核心空間的資訊包過濾表中,這些規則分別指定了源位址、目的位址、傳輸協議(如tcp、udp、icmp)和服務型別(如http、ftp和smtp)等。當資料報與規則匹配時,iptables就根據規則所定義的方法來處理這些資料報,如放行(accept)、拒絕(reject)和丟棄(drop)等。配置防火牆的主要工作就是新增、修改和刪除這些規則。

這是第乙個要說的地方,iptables和netfilter的關係是乙個很容易讓人搞不清的問題。很多的知道iptables卻不知道netfilter。其實iptables只是linux防火牆的管理工具而已,位於/sbin/iptables。真正實現防火牆功能的是netfilter,它是linux核心中實現包過濾的內部結構。

① 當乙個資料報進入網絡卡時,它首先進入prerouting鏈,核心根據資料報目的ip判斷是否需要轉送出去。 

② 如果資料報就是進入本機的,它就會沿著圖向下移動,到達input鏈。資料報到了input鏈後,任何程序都會收到它。本機上執行的程式可以傳送資料報,這些資料報會經過output鏈,然後到達postrouting鏈輸出。 

③ 如果資料報是要**出去的,且核心允許**,資料報就會如圖所示向右移動,經過forward鏈,然後到達postrouting鏈輸出。

表(tables)提供特定的功能,iptables內建了4個表,即filter表、nat表、mangle表和raw表,分別用於實現包過濾,網路位址轉換、包重構(修改)和資料跟蹤處理。

鏈(chains)是資料報傳播的路徑,每一條鏈其實就是眾多規則中的乙個檢查清單,每一條鏈中可以有一條或數條規則。當乙個資料報到達乙個鏈時,iptables就會從鏈中第一條規則開始檢查,看該資料報是否滿足規則所定義的條件。如果滿足,系統就會根據該條規則所定義的方法處理該資料報;否則iptables將繼續檢查下一條規則,如果該資料報不符合鏈中任一條規則,iptables就會根據該鏈預先定義的預設策略來處理資料報。

iptables採用「表」和「鏈」的分層結構。在rehl4中是三張表五個鏈。現在rehl5成了四張表五個鏈了,不過多出來的那個錶用的也不太多,所以基本還是和以前一樣。下面羅列一下這四張表和五個鏈。注意一定要明白這些表和鏈的關係及作用。

1.filter表——三個鏈:input、forward、output

作用:過濾資料報  核心模組:iptables_filter.

2.nat表——三個鏈:prerouting、postrouting、output

作用:用於網路位址轉換(ip、埠) 核心模組:iptable_nat

3.mangle表——五個鏈:prerouting、postrouting、input、output、forward

作用:修改資料報的服務型別、ttl、並且可以配置路由實現qos核心模組:iptable_mangle(別看這個表這麼麻煩,咱們設定策略時幾乎都不會用到它)

4.raw表——兩個鏈:output、prerouting

作用:決定資料報是否被狀態跟蹤機制處理  核心模組:iptable_raw

(這個是rehl4沒有的,不過不用怕,用的不多)

1.input——進來的資料報應用此規則鏈中的策略

2.output——外出的資料報應用此規則鏈中的策略

3.forward——**資料報時應用此規則鏈中的策略

4.prerouting——對資料報作路由選擇前應用此鏈中的規則

(記住!所有的資料報進來的時侯都先由這個鏈處理)

5.postrouting——對資料報作路由選擇後應用此鏈中的規則

(所有的資料報出來的時侯都先由這個鏈處理)

raw——mangle——nat——filter

規則鏈之間的優先順序(分三種情況):

第一種情況:入站資料流向

從外界到達防火牆的資料報,先被prerouting規則鏈處理(是否修改資料報位址等),之後會進行路由選擇(判斷該資料報應該發往何處),如果資料報的目標主機是防火牆本機(比如說internet使用者訪問防火牆主機中的web伺服器的資料報),那麼核心將其傳給input鏈進行處理(決定是否允許通過等),通過以後再交給系統上層的應用程式(比如apache伺服器)進行響應。

第二衝情況:**資料流向

來自外界的資料報到達防火牆後,首先被prerouting規則鏈處理,之後會進行路由選擇,如果資料報的目標位址是其它外部位址(比如區域網使用者通過閘道器訪問qq站點的資料報),則核心將其傳遞給forward鏈進行處理(是否**或攔截),然後再交給postrouting規則鏈(是否修改資料報的位址等)進行處理。

第三種情況:出站資料流向

防火牆本機向外部位址傳送的資料報(比如在防火牆主機中測試公網dns伺服器時),首先被output規則鏈處理,之後進行路由選擇,然後傳遞給postrouting規則鏈(是否修改資料報的位址等)進行處理。

管理和設定iptables規則

更多:

linux平台下防火牆iptables原理

netfilter iptables 簡稱為iptables 組成linux平台下的包過濾防火牆,與大多數的linux軟體一樣,這個包過濾防火牆是免費的,它可以代替昂貴的商業防火牆解決方案,完成封包過濾 封包重定向和網路位址轉換 nat 等功能。規則 rules 其實就是網路管理員預定義的條件,規則...

linux平台下防火牆iptables原理 轉

netfilter iptables 簡稱為iptables 組成linux平台下的包過濾防火牆,與大多數的linux軟體一樣,這個包過濾防火牆是免費的,它可以代替昂貴的商業防火牆解決方案,完成封包過濾 封包重定向和網路位址轉換 nat 等功能。規則 rules 其實就是網路管理員預定義的條件,規則...

防火牆 防火牆安全

作為計算機的第一道屏障,防火牆的重要性不言而喻,儘管防火牆在面臨網路攻擊時仍有很大的缺陷,不如無法阻止自內而外的攻擊,對複雜多變的網路攻擊攻擊無法預警和像ids所做的那樣。但防火牆依然是伺服器乃至個人機的一道不可或缺的屏障。木桶原理 本文將對防火牆做乙個初步的簡介,顯然像我們知道的那樣,防火牆是一款...