1. 程式人生 > >iptables防火牆的概念及理解

iptables防火牆的概念及理解

一直以來防火牆方面的知識點是比較空洞的,知道看到前輩的部落格,才嘗試去更深入的瞭解。

原文連結:http://www.zsythink.net/archives/1199

iptables概念

iptables其實不是真正的防火牆,客戶端代理,使用者通過這個客戶端代理,將使用者的安全設定執行到對應的”安全框架”中,安全框架才是真正的防火牆,是netfilter。

netfilter是防火牆真正的安全框架,位於核心空間。

ipytables是一個命令列工具,位於使用者空間,利用這個工具操作真正的框架。

netfilter、iptables組成linux平臺下的包過濾防火牆,可以替代昂貴的商業防火牆解決方案,完成封包過濾、封包重定向和網路地址轉換(NAT)等功能。

netfilter是linux作業系統核心空間中的一個數據包處理模組,功能:

(1)、網路地址轉換

(2)、資料包內容修改

(3)、資料包過濾的防火牆功能。

iptables基礎

iptables,規則rules,規則儲存在核心空間的資訊包過濾表中,這些規則指定了源地址、目標地址、傳輸協議(TCP/UDP/ICMP)和服務型別(HTTP/FTP/SSH)等。當資料包與規則匹配時,iptables會根據規則處理這些資料包,如放行(accept)拒絕(reject)丟棄(drop)等等。配置防火牆的工作就是新增、修改和刪除這些規則。

舉例:

netfilter才是真正的防火牆,核心空間,資料包傳輸過程中起到防火牆的目的,核心空間中設定規則。iptables規則鏈分為路由前(PREROUTING)、轉發(FORWARD)、路由後(POSTROUTING)、input和ouput的規則鏈。

當啟用防火牆功能時,資料報文經過的規則鏈不同。如果報文需要轉發,那麼報文則不會經過input鏈發往核心空間,而是直接在核心空間中經過forward鏈和postrouting鏈轉發出去。


根據上圖,常用的應用場景中,報文流向:

到本機某程序的報文:PREROUTING--->INPUT

由本機轉發的報文:PREROUTING-->FORWARD-->POSTROUTING

由本機的某程序發出報文(響應報文):OUTPUT-->POSTROUTING

每一個所謂的關卡可稱為”鏈”,因為每經過這個關卡的報文,都要將這條鏈上的所有規則匹配一遍,如果有符合條件的規則,則執行規則對應的動作。

iptables中規則怎麼進行標識呢?規則分類,表的引入

(1)、filter表:負責過濾功能,防火牆; 核心模組:iptables_filter

(2)、nat表:網路地址轉換功能; 核心模組:iptable_nat

(3)、mangle表:拆解報文,作出修改,並重新封裝的功能;iptables_mangle

(4)、raw表:關閉nat表上啟用的連結追蹤機制;iptables_raw

每個連結規則中都有哪些表?

PREROUTING的規則存在於:raw表、mangle表、nat表

INPUT:managle表、filter表

FORWARD:mangle表、filter表

OUTPUT:raw表、mangle表、nat表、filter表

POSTROUTING:mangle表,nat表

規則匹配有順序,那麼每個鏈規則中表的優先順序是怎麼樣的?

優先順序次序(由高到低):

raw--->mangle--->nat--->filter。

資料經過防火牆流程

 

Iptables規則的時候,時刻牢記路由次序圖,靈活配置規則。

規則解析

規則:根據指定的匹配條件嘗試匹配每個流經此處的報文,一旦匹配成功,則由規則後面指定的處理動作進行處理。

匹配條件:

(1)、基本匹配條件:

     源地址Source IP、目標地址Destination IP

(2)、擴充套件匹配條件

處理動作:基本動作和擴充套件動作。

ACCEPT:允許資料包通過。

DROP:直接丟棄資料包,不給任何迴應資訊,超時時間才會反應。

REJECT:拒絕資料包通過,必要時會給資料傳送端一個響應的資訊,客戶端剛請求就會收到拒絕的資訊。

SNAT:源地址轉換,解決內網使用者用同一個公網地址上網的問題。

DNAT:目標地址轉換。

REDIRECT:在本機做埠對映。

小結

iptables原理及其概念介紹,結合實際命令去練習,以後看見防火牆規則之類的不會發怵,搞定iptables絕對沒問題!