iptables防火牆工做原理安全
簡介:iptables防火牆工做在網絡層,針對TCP/IP數據包實施過濾和限制,iptables防火牆基於內核編碼實現,具備很是穩定的性能和高效率;服務器
iptables屬於「用戶態」的防火牆管理體系。網絡
規則表 app
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,共包含兩個鏈。spa
規則鏈 blog
INPUT鏈:當收到訪問防火牆本機地址的數據包(入站)時,應用此鏈中的規則。ip
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
做者:唐勝偉
出處:http://www.cnblogs.com/tangshengwei/本文版權歸做者和博客園共有,歡迎轉載,但未經做者贊成必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接。