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:在本機做埠對映。