簡介
防火牆(Firewall): 工作在主機或網絡邊緣,對進出的封包按事先定義的規則進行檢查,并且由比對到的規則進行處理的一組硬體或軟體,甚至可能是二者的結合
Firewall分類:主機防火牆(工作于主機邊緣);網絡防火牆(工作于網絡邊緣)
iptables:隻是防火牆規則的編寫工具,工作于使用者空間,編寫規則并發送到netfilter
netfilter:能使規則生效的防護架構,工作于核心空間
Netfilter防護原理
在核心中的TCP/IP協定棧上選擇了5個點(又稱為“卡哨”),這5個點是封包一定會流經的位置,并配置5個鈎子函數(hook_function);當有封包經過時,被鈎子函數鈎起,對規則進行檢查,并按照一定的機制(又可稱為“功能”)完成處理
原理圖
說明:上圖顯示了Netfilter的實作原理,以及其主要的4大功能:raw,mangle,nat,filter
資料包經Netfilter的過濾比對流程
圖1
<a href="http://s3.51cto.com/wyfs02/M00/23/6F/wKiom1M2R0qA-hIpAAcIr8FurZg420.jpg" target="_blank"></a>
圖2
<a href="http://s3.51cto.com/wyfs02/M01/23/6F/wKiom1M2R5nQ8yJdAA-8ENuAcv4511.jpg" target="_blank"></a>
說明1:圖1和圖2都是資料包流向的描述,個人感覺圖2更加形象,可以看出資料包經Netfilter的過濾比對流程就是針對Netfilter的4大功能,在5個卡哨間停留比對的過程
說明2:借用的網絡上的2張圖檔,版權歸原作者所有
iptables的規則
表和鍊:
四表(對應4大功能):raw,mangle,nat,filter
五鍊(對應5個卡哨):PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
表和鍊的對應關系:
raw:PREROUTING,OUTPUT
mangle:5鍊中的任意位置
nat:PREROUTING,POSTROUTING,OUTPUT
filter:INPUT,FORWARD,OUTPUT
iptables的規則比對原理
說明:iptables規則的添加需在指定表下的可用鍊上,即注意表和鍊的對應關系
iptables規則的儲存與恢複
1
2
3
4
5
<code>service iptables save</code>
<code># 規則預設會儲存在/etc/sysconfig/iptables檔案中</code>
<code># iptables啟動時,也會讀取此檔案中的内容以設定規則</code>
<code>iptables-save > </code><code>/path/to/some_rulefile</code> <code># 手動導出規則檔案</code>
<code>iptables-restore < </code><code>/path/from/some_rulefile</code> <code># 手動導入規則檔案</code>
遠端修改iptables規則時的小技巧
在遠端伺服器上修改iptables規則時,防範規則生效錯誤(尤其是ssh對應端口)被意外斷開連接配接的方法是:在執行任何iptables規則或腳本時,後跟一個計劃任務,指定5分鐘後清空所有規則,如
<code># 實際需執行的iptables規則在iptables.sh檔案中,若規則執行成功無錯誤,取消計劃任務即可</code>
<code>sh </code><code>/tmp/iptables</code><code>.sh ; at -f clean_up.at now+5min</code>
at計劃任務可參考:
6
7
<code>#!/bin/bash</code>
<code>iptables -t raw -F</code>
<code>iptables -t mangle -F</code>
<code>iptables -t nat -F</code>
<code>iptables -t filter -F</code>
<code>iptables -P INPUT ACCEPT</code>
<code>iptables -P OUTPUT ACCEPT</code>
本文轉自 xxrenzhe11 51CTO部落格,原文連結:http://blog.51cto.com/xxrenzhe/1386435,如需轉載請自行聯系原作者