Linux網絡防火牆可以由硬件方面、軟件方面及定義規則(匹配標准,處理辦法)等方式來組合限定各種條件。下面所講的為使用規則來限定tcp/udp/icmp等協議
Framework: 默認規則有開放(堵)與關閉(通)
其中規則中主要使用的是鉤子函數(hook function:)主要有以下5種1: perouting 路由之前2:input 本機進入3output本機出去4:forward本機轉發5:postrouting路由之後
使用到的規則鏈主要有五種:PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING。其中分別可以在以下表中使用到的是:
filter(過濾):表 INPUT、OUTPUT、FORWARD
nat(地址轉換):表 PREROUTING、OUTPUT、POSTROUTING
mangle(拆開、修改、封裝):表PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING
raw():原始表 PREROUTING、OUTPUT
如果有N條規則這樣就需要我們來使用自定義鏈,但自定義鏈只在被調用時才能發揮作用,而且如果沒有自定義鏈中的任何規則匹配,還應該有返回機制;其中默認鏈無法刪除。
其中每個規則都有兩個內置的計數器:被匹配的報文個數、被匹配的報文大小之和
其中定義的規則格式有:匹配標准,處理動作。如:iptables [-t TABLE] COMMAND CHAIN [num] 匹配標准 -j 處理辦法
匹配標准主要有兩種:通用匹配和擴展匹配,其中擴展匹配又可以分為影含擴展與顯式擴展。如以下命令:
通用匹配
-s, --src: 指定源地址
-d, --dst:指定目標地址
-p {tcp|udp|icmp}:指定協議
-i INTERFACE: 指定數據報文流入的接口
可用於定義標准的鏈:PREROUTING,INPUT,FORWARD
-o INTERFACE: 指定數據報文流出的接口
可用於標准定義的鏈:OUTPUT,POSTROUTING,FORWARD
擴展匹配(使用模塊進行,需要先安裝模塊)有
隱含擴展:不用特別指明由哪個模塊進行的擴展,因為此時使用
-p{tcp|udp|icmp}
--sport PORT[-PORT]:源端口
--dport PORT[-PORT]:目標端口
--tcp-flags mask comp只檢查mask指定的標志位,是逗號分隔的標志位列表comp:
此列表中出現的標記位必須為1,comp中沒出現,而mask中出現的,必須為0 ; -- tcp-flags SYN,FIN,ACK,RST SYN,ACK
顯式擴展:必須指明由哪個模塊進行的擴展,在iptables中使用-m選項可完成此
功能
-m EXTESTION --spe-opt
state狀態擴展
NEW:新連接請求
ESTABLISHED:已建立的連接
IN表:filter、nat、mangle和raw
命令:
管理規則
-A:附加一條規則,添加在鏈的尾部
-I CHAIN [num]: 插入一條規則,插入為對應CHAIN上的第num條;
-D CHAIN [num]: 刪除指定鏈中的第num條規則;
-R CHAIN [num]: 替換指定的規則;
管理鏈:
-F [CHAIN]:flush,清空指定規則鏈,如果省略CHAIN,則可以實現刪除對應表中的所有鏈
-P CHAIN: 設定指定鏈的默認策略;
-N:自定義一個新的空鏈
-X: 刪除一個自定義的空鏈
-Z:置零指定鏈中所有規則的計數器;
-E: 重命名自定義的鏈;
查看類:
-L: 顯示指定表中的規則;
-n: 以數字格式顯示主機地址和端口號;
-v: 顯示鏈及規則的詳細信息
-vv:
-x: 顯示計數器的精確值
--line-numbers: 顯示規則號碼
動作(目標target):
ACCEPT:放行
DROP:丟棄
REJECT:拒絕
DNAT:目標地址轉換
SNAT:源地址轉換
REDIRECT:端口重定向
MASQUERADE:地址偽裝
LOG:日志
MARK:打標記
其中iptables不是服務,但有服務腳本,服務腳本的主要作用用於在保存管理的規則