Iptables

簡介

iptables是用戶空間命令行程序,用於配置Linux 2.4.x及更高版本的包過濾規則集。由兩個組件netfilter 和 iptables 組成

4個規則表(優先級raw > mangle >nat > filter)

raw表:確定是否對該數據包進行狀態跟蹤;對應iptable_raw,表內包含兩個鏈:OUTPUT、PREROUTING
mangle表:爲數據包的TOS(服務類型)、TTL(生命週期)值,或者爲數據包設置Mark標記,以實現流量×××、策略路由等高級應用。其對應iptable_mangle,表內包含五個鏈:PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD
nat表:修改數據包中的源、目標IP地址或端口;其對應的模塊爲iptable_nat,表內包括三個鏈:PREROUTING、POSTROUTING、OUTPUT
filter表:數據包過濾;其對應的內核模塊爲iptable_filter,表內包含三個鏈:INPUT、FORWARD、OUTPUT

5種規則

INPUT:處理入站數據包
OUTPUT:處理出站數據包
FORWARD:處理轉發數據包
POSTROUTING鏈:在進行路由選擇後處理數據包(對數據鏈進行源地址修改轉換)
PREROUTING鏈:在進行路由選擇前處理數據包(做目標地址轉換)
 
 
建立規則和鏈語法如下

iptables [-t table] command [match] [target]

[-t table] 選項允許使用標準表之外的任何表,有三種可用的表選項: filter (默認值)、 nat 和 mangle
 
 
命令(command)
插入規則、將規則添加到鏈的末尾或刪除規則。

-A 或 --append : 該命令將一條規則附加到鏈的末尾。

iptables -A INPUT -s 10.120.123.1 -j ACCEPT

規則附加到 INPUT 鏈的末尾,確定來自源地址 10.120.123.1 的信息包可以 ACCEPT 。

-D 或 --delete :
指定要匹配的規則或者指定規則在鏈中的位置編號,該命令從鏈中刪除該規則。

iptables -D INPUT --dport 21 -j DROP 
iptables -D OUTPUT 6

第一條命令從 INPUT 鏈刪除規則,它指定 DROP 前往端口 21 的信息包。第二條命令只是從 OUTPUT 鏈刪除編號爲6 的規則。

-P 或 --policy : 該命令設置鏈的缺省目標,即策略。 所有與鏈中任何規則都不匹配的信息包都將被強制使用此鏈的策略。

 iptables -P INPUT DROP

將丟棄所有與 INPUT 鏈中任何規則都不匹配的信息包。
-N 或 --new-chain : 用命令中所指定的名稱創建一個新鏈。

iptables -N allowed-chain

-F 或 --flush :該命令刪除所有鏈中的所有規則。此參數用於快速清除。

 iptables -F FORWARD 
 iptables -F

-L 或 --list : 列出指定鏈中的所有規則。

iptables -L allowed-chain

 
 
匹配(match)
match 部分如源和目的地地址、協議等

-p 或 --protocol : 該通用協議匹配用於檢查某些特定協議。 協議示例有 TCP 、 UDP 、 ICMP 、用逗號分隔的任何這三種協議的組合列表以及 ALL (用於所有協議)。 ALL 是缺省匹配。可以使用 ! 符號,它表示不與該項匹配。

iptables -A INPUT -p TCP
iptables -A INPUT -p UDP
iptables -A INPUT -p ICMP
iptables -A INPUT -p TCP, UDP
iptables -A INPUT -p ! TCP

-s 或 --source : 該源匹配用於根據信息包的源 IP 地址來與它們匹配。

iptables -A OUTPUT -s 10.120.123.9 
iptables -A OUTPUT -s 10.120.123.0/24 
iptables -A OUTPUT -s ! 10.120.0.0/16

-d 或 --destination : 該目的地匹配用於根據信息包的目的地 IP 地址來與它們匹

iptables -A INPUT -d 10.120.123.9  
iptables -A INPUT -d 10.120.123/24 
iptables -A INPUT -d ! 10.120.0.0/16

目標(target)

ACCEPT : 被接受(允許它前往目的地) 該目標被指定爲 -j ACCEPT 。
DROP : 被會阻塞,並且不對它做進一步處理。 該目標被指定爲 -j DROP 。
REJECT : 與 DROP 目標相同, REJECT 不會在服務器和客戶機上留下死套接字。REJECT 將錯誤消息發回給信息包的發送方。該目標被指定爲 -j REJECT 。

iptables -A FORWARD -p TCP --dport 80 -j REJECT
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章