iptables的使用

iptables的使用

一、iptables的規則鏈

規則的作用在於對數據包進行過濾或處理,根據處理時機的不同,各種規則被組織在不同的“鏈”中
規則鏈是防火牆規則/策略的集合
默認的5種規則鏈
INPUT:處理入站數據包
OUTPUT:處理出站數據包
FORWARD:處理轉發數據包
POSTROUTING鏈:在進行路由選擇後處理數據包

           PREROUTING鏈:在進行路由選擇前處理數據包

二、iptables的規則表

具有某一類相似用途的防火牆規則,按照不同處理時機區分到不同的規則鏈以後,被歸置到不同的“表”中
規則表是規則鏈的集合
默認的4個規則表
raw表:確定是否對該數據包進行狀態跟蹤
mangle表:爲數據包設置標記
nat表:修改數據包中的源、目標IP地址或端口

           filter表:確定是否放行該數據包(過濾)


三、數據包過濾匹配流程

規則表間的優先順序
依次爲:rawmanglenatfilter
規則鏈間的匹配順序
入站數據:PREROUTINGINPUT
出站數據:OUTPUTPOSTROUTING
轉發數據:PREROUTINGFORWARDPOSTROUTING
規則鏈內的匹配順序
按順序依次進行檢查,找到相匹配的規則即停止(LOG策略會有例外)
若在該鏈內找不到相匹配的規則,則按該鏈的默認策略處理



四、iptables命令的語法格式

iptables命令的語法格式
iptables  [-t 表名] 管理選項 [鏈名] [條件匹配] [-j 目標動作或跳轉]
幾個注意事項
不指定表名時,默認表示filter
不指定鏈名時,默認表示該表內所有鏈

除非設置規則鏈的缺省策略,否則需要指定匹配條件


五、設置匹配數據包的條件

1、通用條件匹配
可直接使用,不依賴於其他的條件或擴展模塊

           包括網絡協議、IP地址、網絡接口等匹配方式

(1)協議匹配
使用“-p協議名”的形式
協議名可使用在“/etc/protocols”文件中定義的名稱

           常用的協議包括tcpudpicmp

iptables -I INPUT -p icmp -j REJECT
iptables -A FORWARD -p !icmp -j ACCEPT


(2)地址匹配
使用“-s源地址”、-d目標地址”的形式

           地址可以是單個IP地址、網絡地址(帶掩碼長度)

iptables -A FORWARD -s 192.168.1.11 -j REJECT


(3)接口匹配

使用“-i網絡接口名”、-o網絡接口名”的形式,分別對應接收、發送數據包的網絡接
iptables -A INPUT -i eth1 -s 192.168.0.0/12 -j DROP
iptables -A FORWARD -o eth1 -d 12.1.15.1 -j DROP

2、隱含條件匹配
一般需要以特定的協議匹配作爲前提

包括端口、TCP標記、ICMP類型等匹配方式

(1)端口匹配
使用“--sport源端口”、“--dport目標端口”的形式

           採用“端口1:端口2”的形式可以指定一個範圍的端口

iptables -A FORWARD -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 20:80 -j ACCEPT


(2)TCP標記匹配
使用“--tcp-flags檢查範圍被設置的標記”的形式

如“--tcp-flags  SYN,RST,ACK SYN”表示檢查SYNRSTACK3個標記,只有SYN1時滿足條件

iptables -I INPUT -i eth1 -p tcp --tcp-flags SYN,RST,ACK  -就REJECT


(3)ICMP類型匹配
使用“--icmp-type ICMP類型”的形式
ICMP類型可以使用類型字符串或者對應的數值,例如Echo-RequestEcho-Reply

iptables -A INPUT -i eth0 -p icmp --icmp-type ECHO-Request -j DROP
iptables -A INPUT -p icmp --icmp-type Echo-Reply -j ACCEPT


3、顯式條件匹配
需要使用“-m 擴展模塊”的形式明確指定匹配方式
包括多端口、MAC地址、IP地址範圍、數據包狀態等匹配方式

(1)MAC地址匹配

使用“-m mac”結合“--mac-source MAC地址”的形式

iptables -A FORWARD -m mac --mac-source 00:0c:29:27:55:3f -j DROP


(2)多端口匹配
使用“-m multiport”結合“--sports源端口列表”或者“--dports目標端口列表”的形式

多個端口之間使用逗號“,”分隔,連續的端口也可以使用冒號“:”分隔

iptables -A INPUT -p tcp -m multiport --dport 20,21,25,110,1250:1280 -j ACCEPT


(3)IP地址範圍匹配
使用“-m iprange”結合“--src-rangeIP範圍”或者“--dst-range目標IP範圍”的形式

以“-”符號連接起始IP地址、結束IP地址

iptables -A FORWARD -p tcp -m iprange --src-range 192.168.1.20-192.168.1.99 -j DROP


(4)數據包狀態匹配
使用“-m state”結合“--state狀態類型”的形式

同時表示多種狀態時以逗號“,”分隔

iptables -A FORWARD -m state --state NEW -p tcp ! --svn -j DROP
iptables -A INPUT -p tcp -m state --state NEW -j DROP
iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT


常見的數據包狀態包括:NEWESTABLISHEDRELATED

六、數據包控制

常見的數據包處理方式
ACCEPT:放行數據包
DROP:丟棄數據包
REJECT:拒絕數據包
LOG:記錄日誌信息,並傳遞給下一條規則處理
用戶自定義鏈名:傳遞給自定義鏈內的規則
iptables -A INPUT -p tcp --dport 22 -m limit --limit 3/minute --limit-burst 8 -j LOG
iptables -A INPUT -p tcp --dport 22 -j DROP
iptables -t filter -N MyLAN1
iptables -A FORWARD -s 192.168.1.0/24 -j MyLAN1
iptables -A FORWARD -d 192.168.1.0/24 -j MyLAN1
iptables -A MyLAN1 -p icmp -j DROP







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章