iptables防火牆工作原理

簡介:iptables防火牆工作在網絡層,針對TCP/IP數據包實施過濾和限制,iptables防火牆基於內核編碼實現,具有非常穩定的性能和高效率;

   iptables屬於“用戶態”的防火牆管理體系。

 

 

 

規則表                                                                                 

filter表:filter表用來對數據包進行過濾,根據具體的規則要就決定如何處理一個數據包。對應內核模塊:iptable_fileter。共包含三個鏈。

nat表:nat(Network Address Translation,網絡地址轉換)表主要用於修改數據包 ip地址,端口號等信息。對應的內核模塊爲iptable_nat,共包含三個鏈。

mangle表:mangle表用來修改數據包的TOS(Type Of Service,服務類型),TTL(Time To Live,生存週期)值,或者爲數據包設置Mark標記,以實現流量整形,策略路由等高級應用。對應的內核模塊爲      iptable_mangle,共包含五個鏈。

raw表:raw表示自1.2.9以後版本的iptables新增的表,主要來決定是否對數據包進行狀態跟蹤。對應的內核模塊爲iptable_raw,共包含兩個鏈。

 

規則鏈                                                                                            

INPUT鏈:當收到訪問防火牆本機地址的數據包(入站)時,應用此鏈中的規則。

OUTPUT鏈:當防火牆本機向外發送數據包(出站)時,應用此鏈中的規則。

FORWARD鏈:當接收到需要通過防火牆中轉發送給其他地址的數據包(轉發)是,應用測鏈中的規則。

PREROUTING鏈:在對數據包做路由選擇之前,應用測鏈中的規則。

POSTROUTING鏈:在對數據包做路由選擇之後,應用此鏈中的規則。

簡要說明:其中INPUT,OUTPUT鏈主要用在“主機防火牆”中。即主要針對服務器本機驚醒保護的防火牆;而FORWARD,PREROUTING,POSTROUTING鏈多用在“網絡型防火牆”中,例如使用Linux防火牆作爲網關     服務器在公司與Inetnet之間進行安全控制。

 

數據包過濾工作流程                                                                          

規則表應用優先級:raw→mangle→nat→filter

各條規則的應用順序:鏈內部的過濾遵循“匹配即停止”的原則,如果對比完整個鏈也沒有找到和數據包匹配的規則,則會按照鏈的默認策略進行處理。

 

入站數據流向:數據包到達防火牆後首先被PREROUTING鏈處理(是否修改數據包地址等),然後進行路由選擇(判斷數據包發往何處),如果數據包的目標地址是防火牆本機(如:Internet用戶訪問網關的Web服務端口),那麼內核將其傳遞給INPUT鏈進行處理(決定是否允許通過等)。

轉發數據流向:來自外界的數據包到達防火牆後首先被PREROUTTING鏈處理,然後再進行路由選擇;如果數據包的目標地址是其他的外部地址(如局域網用戶通過網關訪問QQ服務器),則內核將其傳遞給FORWARD鏈進行處理(允許轉發,攔截,丟棄),最後交給POSTROUTING鏈(是否修改數據包的地址等)進行處理。

出站數據流向:防火牆本機向外部地址發送的數據包(如在防火牆主機中測試公網DNS服務時),首先被OUTPUT鏈處理,然後進行路由選擇,再交給POSTROUTING鏈(是否修改數據包的地址等)進行處理。

 

命令實戰                                                                                               

語法:

iptables [ - t 表名 ]  管理選項  [鏈名]  [匹配條件]  [-j 控制類型]

未指定表名時將默認使用filter表。

 

控制類型:

 ACCEPT:允許數據包通過。

 DROP:直接丟棄數據包,不給出任何迴應信息。

 REJECT:拒絕數據包通過,會給數據發送端一個響應信息。 

 

拒絕發給本機使用ICMP協議的數據包:iptable -t filter -I INPUT -p icmp -j REJECT

  • -A   在指定鏈的末尾添加(--append)一條新的規則
  • -D   刪除(--delete)指定鏈中的某一條規則,可指定規則需要或具體內容。
  • -I    在指定鏈中插入(--insert)-條新的規則,未指定序號時默認作爲第一條規則。
  • -R   修改,替換(--replace)指定鏈中的某一條規則,可指定規則序號或具體內容。
  • -L   列出(--list)指定鏈中的所有規則,若未指定鏈名,則清空表中的所有鏈。
  • -P   設置指定鏈的默認策略(--policy)。
  • -n   使用數字形式(--numeric)顯示輸出結果,如顯示ip地址而不是主機名
  • -v   查看規則列表時顯示詳細(--verbose)的信息。
  • -line-numbers   查看規則列表時,同時顯示規則在鏈中的順序號。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章