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 查看規則列表時,同時顯示規則在鏈中的順序號。
作者:唐勝偉
出處:http://www.cnblogs.com/tangshengwei/
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接。