Iptables防火牆(一)
重點:
lLinux防火牆的表、鏈結構
l使用iptables編寫防火牆規則
6.1Linux防火牆基礎:
Linux包過濾防火牆概述:
Ønetfilter
§位於Linux內核中的包過濾功能體系
§稱爲Linux防火牆的“內核態”
Øiptables
§位於/sbin/iptables,用來管理防火牆規則的工具
§稱爲Linux防火牆的“用戶態”
Ø包過濾的工作層次
§主要是網絡層,針對IP數據包
§體現在對包內的IP地址、端口等信息的處理上
iptables的表、鏈結構:
Ø規則鏈
§規則的作用:對數據包進行過濾或處理
§鏈的作用:容納各種防火牆規則
§鏈的分類依據:處理數據包的不同時機
Ø默認包括5種規則鏈
§INPUT:處理入站數據包
§OUTPUT:處理出站數據包
§FORWARD:處理轉發數據包
§POSTROUTING鏈:在進行路由選擇後處理數據包
§PREROUTING鏈:在進行路由選擇前處理數據
Ø規則表
§表的作用:容納各種規則鏈
§表的劃分依據:防火牆規則的作用相似
Ø默認包括4個規則表
§raw表:確定是否對該數據包進行狀態跟蹤,包含兩個鏈:PREROUTING、OUTPUT
§mangle表:爲數據包設置標記,包含五個鏈:PREROUTING、POSTROUTING、FORWARD、OUTPUT、INPUT
§nat表:修改數據包中的源、目標IP地址或端口,包含三個鏈:PREROUTING、POSTROUTING、OUTPUT
§filter表:確定是否放行該數據包(過濾),包含三個鏈:FORWARD、INPUT、OUTPUT
Ø默認的表、鏈結構示意圖
數據包過濾的匹配流程:
Ø規則表之間的順序
§rawàmangleànatàfilter
Ø規則鏈之間的順序
§入站:PREROUTINGàINPUT
§出站:OUTPUTàPOSTROUTING
§轉發:PREROUTINGàFORWARDàPOSTROUTING
Ø規則鏈內的匹配順序
§按順序依次檢查,匹配即停止(LOG策略例外)
§若找不到相匹配的規則,則按該鏈的默認策略處理
Ø匹配流程示意圖
6.2編寫防火牆規則
iptables的基本語法:
v語法構成
§iptables [-t 表名] 選項 [鏈名] [條件] [-j 控制類型]
幾個注意事項:
§不指定表名時,默認指filter表
§不指定鏈名時,默認指表內的所有鏈
§除非設置鏈的默認策略,否則必須指定匹配條件
§選項、鏈名、控制類型使用大寫字母,其餘均爲小寫
iptables的基本語法:
v數據包的常見控制類型
§ACCEPT:允許通過
§DROP:直接丟棄,不給出任何迴應
§REJECT:拒絕通過,必要時會給出提示
§LOG:記錄日誌信息,然後傳給下一條規則繼續匹配(特列:不應用防火牆規則的“匹配即停止”原則)log只是一種輔助動作,並沒有真正的處理數據包
iptables的管理選項:
v添加新的規則
§-A:在鏈的末尾追加一條規則
§-I:在鏈的開頭(或指定序號)插入一條規則
v查看規則列表
§-L:列出所有的規則條目
§-n:以數字形式顯示地址、端口等信息
§-v:以更詳細的方式顯示規則信息
§--line-numbers:查看規則時,顯示規則的序號
v刪除、清空規則
§-D:刪除鏈內指定序號(或內容)的一條規則
§-F:清空所有的規則
§-X:刪除自定義的規則鏈
v設置默認策略
§-P:爲指定的鏈設置默認規則
v常用管理選項彙總
v通用匹配(常規匹配)
§可直接使用,不依賴於其他條件或擴展
§包括網絡協議、IP地址、網絡接口等條件
v隱含匹配
§要求以特定的協議匹配作爲前提(子條件,不可獨立使用)
§包括端口、TCP標記、ICMP類型等條件
v顯式匹配
§要求以“-m 擴展模塊”的形式明確指出類型
§包括多端口、MAC地址、IP範圍、數據包狀態等條件
v常見的通用匹配條件
§協議匹配:-p 協議名
§地址匹配:-s 源地址、-d 目的地址
§接口匹配:-i 入站網卡、-o 出站網卡
v常用的隱含匹配條件
§端口匹配:--sport 源端口、--dport 目的端口
§TCP標記匹配:--tcp-flags 檢查範圍被設置的標記(多個標記用逗號隔開)
§ICMP類型匹配:--icmp-type ICMP類型,ICMP類型使用字符串或數字代碼表示,如echo-Requst(代碼爲8)echo-Reply(代碼爲0)Destination-Unreachable(代碼爲3)分別對應ICMP的請求、回顯、目標不可達
v常用的顯式匹配條件
§多端口匹配:-mmultiport --sports 源端口列表
-m multiport --dports目的端口列表
IP範圍匹配:-m iprange --src-range IP範圍
MAC地址匹配:-m mac --mac-source MAC地址
狀態匹配:-m state --state 連接狀態
常見的連接狀態包括:NEW(與任何連接無關的ESTABLISHED(響應請求或者已建立連接的)RELATED(與已有連接有相關性的)
常見匹配條件彙總