一說起iptables,大家第一反應就是它是Linux系統中的防火牆。 這樣說本質上到底對嗎?
防火牆的概念
1.從邏輯分 :主機防火牆 和 網絡防火牆
主機防火牆: 針對於單個主機進行防護。
網絡防火牆: 往往處於網絡入口或邊緣,針對於網絡入口進行防護,服務於防火牆背後的本地局域網。
網絡防火牆和主機防火牆並不衝突,可以理解為,網絡防火牆主外,主機防火牆主內。
2.從物理分:硬件防火牆 和 軟件防火牆
硬件防火牆: 在硬件級別實現部分防火牆功能,另一部分功能基於軟件實現,性能高,成本高。
軟件防火牆: 應用軟件處理邏輯運行於通用硬件平臺之上的防火牆,性能低,成本低。
簡單來說,就是實現訪問資源的控制功能。無論是在哪個網絡中,防火牆工作的地方一定是在網絡的邊緣。而我們的任務就是需要去定義到底防火牆如何工作,這就是防火牆的策略,規則,以達到讓它對出入網絡的IP、數據進行檢測。
iptables概念
iptables其實不是真正的防火牆,可以看做是一個客戶端的代理,這個代理可以把用戶的安全設定規則執行到底層"安全框架"中,真正的防火牆,這個框架的名字叫netfilter。
netfilter才是防火牆真正的安全框架(framework),netfilter位於內核空間。
iptables其實是一個命令行工具,位於用戶空間,我們藉助這個工具操作真正的框架。
更簡單的方式來說,iptables 是一種能夠輕易插入、修改和除去數據包過濾表中規則的工具,也可以說是netfilter項目的一部分。以下為使用方法和案例詳解(自認為一些常用的規則):
示意圖:
命令結構:
iptables [-t 表名] [-AI 鏈名] [-I/o 網卡名] [-p 協議名] [-s 源IP/子網] [--sport 源端口] [-d 目標IP/子網] [--dport 目標端口] [-j 控制類型]
表:
filter:默認表,配置規則允許或不允許,用於防火牆。
nat:地址轉換,用於網關路由器。
規則鏈:
PREROUTING 路由前(用於目標地址轉換 DNAT)。
INPUT:數據包流入口。
PORWARD:轉發管卡。
OUTPUT:數據包出口。
POSTOUTING:路由後(用於源地址轉換 SNAT)。
控制類型:
ACCEPT/DROP/REJECT:接收/丟棄/重定向數據包。
SNAT/DNAT:源地/目標址轉換。
MASQUERADE:IP偽裝(NAT),用於ADSL。
LOG:日誌記錄。
iptables 實例
查看與清除規則:
添加規則(參數說明):
以上參數說明再結合之前的命令結構應該能應付大部分的應用場景了。
下圖列舉了具體一些命令及解釋,供大家學習參考。
注意:配置好規則之後,一定要先保存規則,然後重啟,規則才會生效,命令如下
# /etc/rc.d/init.d/iptables save //保存規則
# service iptables restart //重啟防火牆服務
閱讀更多 程序碼上說 的文章