linux中iptables詳解
一、通用基礎知識
1、基本概念
什麼是防火牆?
所謂防火牆指的是工作於主機或網絡的邊緣,對於進出的報文根據事先定義的規則作檢查,將那些能夠被規則所匹配到的報文作出相應處理的組件。
防火牆是由軟件和硬件設備組合而成、在內部網和外部網之間、專用網與公共網之間的界面上構造的保護屏障,使Internet與Intranet之間建立起一個安全網關(Security Gateway),從而保護內部網免受非法用戶的侵入。
防火牆主要由服務訪問規則、驗證工具、包過濾和應用網關4個部分組成,防火牆就是一個位於計算機和它所連接的網絡之間的軟件或硬件。該計算機流入流出的所有網絡通信和數據包均要經過此防火牆。
2、分類
主機防火牆
網絡防火牆
網絡防火牆:
① 專業的硬件防火牆:
checkpoint, netscreen
有cpu有內存等,通過特殊架構構成,非常昂貴!
② 主機:
準備一臺主機,配置多個網卡,一個接外網,一個接內網,所有從外網到內網的報文都經過這個主機,所有從內網到外網的報文也經過這臺主機,主機上配置能夠工作爲防火牆的軟件程序,這臺主機也能扮演爲網絡防火牆。
一個局域網內部的防火牆設置可能有以下幾部分組成:
① 網絡防火牆:保護內部網絡和主機不被外部侵害;
② IDS:Intrusion Detecting System***檢測系統
NIDS : 網絡***檢測系統
HIDS : 主機***檢測系統
③ IPS: Intrusion Prevention System ***防禦系統
④ 獨立主機防火牆:保護個人用戶主機網絡通信安全
有些設置可能還會有HoneyPot: 蜜罐
二、linux中的防火牆
與外部網絡聯網通信時的數據報文流程:
數據報文到達本機都是先到達內核的tcp/ip協議棧,因爲網卡是硬件,硬件是直接內核管理的。然後在tcp/ip協議棧上,先要拆掉以太網幀,然後查報文的源ip和目標ip: ①如果是發往本機的,則根據tcp首部當中定義的目標端口送給用戶空間的應用程序。 應用程序收到報文後一般需要回應,所以就需要生成新報文經由內核、網卡路由發出;② 數據報文不是發往本機的,需要由本機forward轉發的,則經由網卡直接轉發出去。
iptables: 程序
規則編寫工具,編號規則後附加在netfilter設置好的卡點上起作用
netfilter:
網絡過濾器, 內核中工作在TCP/IP網絡協議棧上的框架;
netfilter是在主機或網絡上劃定數據進出的必由關卡,就像建起圍牆,只留這麼幾個出入口,然後等着iptables設定規則,什麼該攔什麼不攔,如果沒有設定,那麼什麼都不做,數據包還是能自由出入這幾個口的。linux中netfilter一共設置了5個卡點,叫做hook function鉤子函數。
hooks function :
抽象設置了5個報文經由卡點,任何一個數據包,只要經過本機,必將經過這五個鏈中的其中一個鏈
① prerouting:
進入本機後路由功能發生之前(還沒有檢查是不是需要本機路由之前,也即在到網卡之前)
② input:
到達本機內部
③ output:
由本機發出
④ forward:
由本機轉發
⑤ postrouting:
路由功能發生之後,即將離開本機之前
chain:每個鉤子函數上可放置n條規則;對應於每個鉤子上的多條規則就稱爲一個鏈(CHAIN)
每個功能有多個鏈,形成一個表,因此內置有四表五鏈
filter : input, forward, output
nat :prerouting, output(少用) ,postrouting
mangle :prerouting, input, forward, output, postrouting
raw :prerouting, output
規則的功能:
①過 濾 :firewall,最主要、最重要的功能。
②地址轉換:不做防火牆時叫NAT Server,而不叫firewall
Network Address Translation
③mangle :修改報文首部中的某些信息(不包括地址信息)
④ raw :關閉nat表上啓用的連接追蹤功能(是NAT的輔助補充功能,只能在NAT發生的前半段)
iptables中還有一種叫做自定義鏈的鏈,但不是實際存在的、固定不變的鏈,因此報文不可能經由自定義鏈,只有在被內置鏈上的規則引用才能生效(即做爲自定義目標)
功能的優先級:
由高而低:raw --> mangle --> nat --> filter
三、防火牆設置
linux中用iptables程序設置防火牆各種規則。
iptables程序實質上就是規則管理工具,能自動實現規則的語法檢查,檢查完後直接送往內核加載在netfilter之上起效用。
(一)防火牆設置流程
1、確定設置策略
兩種設置策略:
a、只放行在名單上的,其他的都不放行 ——白名單,建議使用這種策略
b、除了名單上的不放行,其他的都放行 ——黑名單
2、確定鏈
由數據報文的流經過程以及要實現的功能,確定應在哪條鏈上設置規則
考量點:
(1) 要實現的功能:判斷添加在哪個表上;
(2) 報文流向及經由路徑:判斷添加在哪個鏈上
報文流向決定設置規則的位置:
到本內部:prerouting, input
由本機發出:output, postrouting
由本機轉發:prerouting, forward, postrouing
3、確定每條鏈上規則的前後次序
鏈上的規則次序 即爲 檢查次序,因此有一定的設置法則:
(1) 同類規則,匹配範圍小的放上面;
(2) 不同類規則,匹配報文機率較大的放上面;
(3) 應該設置默認策略;
默認策略(POLICY):鏈都應該有,以對那些無法由所有既定規則所匹配的數據報文進行處理;
4、用iptables命令設置
設置後立即生效,但不會永久有效,重啓後丟失。
5、保存設置好的規則
如果需要讓設置的規則能一直存在並能應用,需要使用保存命令保存於一定的文件中。
方法一:
保存於默認配置文件/etc/sysconfig/iptables中,系統重啓後會自動加載此文件的設置建立防火牆
保存現在運行的規則到配置文件 : # service iptables save
重載配置文件中的規則到內核中運行 : # service iptables reload
方法二:
保存於某個制定的文件內,但系統重啓後不會自動加載,需要運行時須手動加載
保存現在運行的規則到某個指定的非配置文件中:# iptables-save > /PATH/TO/SOMEFILE
重載某個指定的非配置文件中的規則到內核中運行:# iptables-restore < /PATH/FROM/SOMEFILE
(三)命令公式
規則的組成部分:
報文的匹配條件, 匹配之後如何處理
匹配條件:① 基本匹配條件、② 擴展匹配條件
如何處理:① 內建處理機制、② 自定義處理機制(自定義的鏈)
iptables [-t TABLE] SUBCOMMAND CHAIN CRITERIA -j TARGET
(由於網速問題,大圖上傳不了,放在附件裏了)
1、-t TABLE:
默認爲filter, 共有filter, nat, mangle, raw四個可用;
2、SUBCOMMAND:
(1)鏈:
-F:flush,清空指定表的指定鏈上所有規則;省略鏈名時,清空表中的所有鏈;(注:不會沖刷掉policy!!!)
-P:policy,設置鏈的默認處理機制;當所有都無法匹配或有匹配有無法做出有效處理機制時,默認策略即生效;
filter表的可用策略:ACCEPT, DROP, REJECT
-N:new, 新建一個用戶自定義的鏈;自定義鏈只能作爲默認鏈上的跳轉對象,即通過在默認鏈中引用來使自定義鏈生效起作用;自定義鏈生效完可以跳轉回某個內置鏈繼續過濾。
-X:drop,刪除用戶自定義的空鏈;非空自定義鏈和內置鏈無法刪除;
-E:rename,重命名自定義鏈;
-Z:zero,將規則的計數器置0;
注意:被引用中的自定義鏈,無法刪除和改名
增刪查改
(2)規則:
-A:append,在鏈尾追加一條規則;
-I:insert,在指定位置插入一條規則;
-D:delete,刪除指定的規則;
-R:replace,替換指定的規則;
(3)查看:
-L:list,列出指定鏈上的所有規則;
-n: numeric,以數字格式顯示地址和端口號,即不反解;
-v: verbose,詳細格式,顯示規則的詳細信息,包括規則計數器等;
-vv:比v更詳細
-vvv:比vv更詳細
--line-number[s]: 顯示規則編號;
-x: exactly,顯示計數器的精確值;
3、CRITERIA
(1)通用匹配:
[!] -s, --src, --source IP|Network:檢查報文中的源IP地址;
-d, --dst, --destination:檢查報文中的目標IP地址;
-p, --protocol:檢查報文中的協議,即ip首部中的protocols所標識的協議;tcp、udp或icmp三者之一;
-i, --in-interface:數據報文的流入接口;通常只用於PREROUTING, INPUT, FORWARD鏈上的規則;
-o, --out-interface:檢查報文的流出接口;通常只用於FORWARD, OUTPUT, POSTROUTING鏈上的規則;
(2)擴展匹配:
使用iptables的模塊實現擴展性檢查機制(rpm -ql iptables可中有/lib64/xtables/libxt_NAME.so或者/lib64/xtables/libipt_NAME.so的都是有擴展的,其中小寫字母的表示是擴展模塊的,大寫字母的表示是擴展target的)
擴展模塊的:/lib64/xtables/libxt_string.so
/lib64/xtables/libxt_tcp.so
擴展target的:/lib64/xtables/libipt_CLUSTERIP.so
(2.1)隱式擴展:
如果在通用匹配上使用-p選項指明瞭協議的話,則使用-m選項指明對其協議的擴展就變得可有可無了;
①tcp:
--dport PORT[-PORT] 即可以指明一個或連續的多個端口
--sport PORT[-PORT]
--tcp-flags LIST1 LIST2
LIST1: 要檢查的標誌位;
LIST2:在LIST1中出現過的,且必須爲1標記位;而餘下的則必須爲0;
例如:--tcp-flags syn,ack,fin,rst syn
--syn:用於匹配tcp會話三次握手的第一次(等同於--tcp-flags syn,ack,fin,rst syn);
②udp:
--sport
--dport
③icmp:
--icmp-type
ping的先發出的那根線就是8,無關s和d;響應的那根線就是0,無關自己是響應的還是對方響應的
8: echo request
0:echo reply
練習:
1、放行本機上的ssh和http服務;要求input和output策略默認均爲DROP;
[root@kingdom ~]# iptables -t filter -I INPUT 1 -d 172.16.20.150 -p tcp -m tcp --dport 80 -j ACCEPT
[root@kingdom ~]# iptables -t filter -I INPUT 1 -d 172.16.20.150 -p tcp -m tcp --dport 22 -j ACCEPT
[root@kingdom ~]# iptables -t filter -I INPUT 2 -d 172.16.20.150 -p tcp -m tcp --dport 80 -j ACCEPT
[root@kingdom ~]# iptables -t filter -I OUTPUT 1 -s 172.16.20.150 -p tcp -m tcp --sport 22 -j ACCEPT
[root@kingdom ~]# iptables -t filter -I OUTPUT 2 -s 172.16.20.150 -p tcp -m tcp --sport 80 -j ACCEPT
[root@kingdom ~]# iptables -t filter -P INPUT DROP
[root@kingdom ~]# iptables -t filter -P OUTPUT DROP
[root@kingdom ~]# iptables -L -n
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 172.16.20.150 tcp dpt:22
ACCEPT tcp -- 0.0.0.0/0 172.16.20.150 tcp dpt:80
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- 172.16.20.150 0.0.0.0/0 tcp spt:22
ACCEPT tcp -- 172.16.20.150 0.0.0.0/0 tcp spt:80
2、開放本機對ping的響應,和ping請求;
[root@kingdom ~]# iptables -t filter -A INPUT -d 172.16.20.150 -p icmp -m icmp --icmp-type 8 -j ACCEPT
[root@kingdom ~]# iptables -t filter -A OUTPUT -s 172.16.20.150 -p icmp --icmp-type 0 -j ACCEPT
[root@kingdom ~]# iptables -t filter -A OUTPUT -s 172.16.20.150 -p icmp -m icmp --icmp-type 8 -j ACCEPT
[root@kingdom ~]# iptables -L -n
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 172.16.20.150 tcp dpt:22
ACCEPT tcp -- 0.0.0.0/0 172.16.20.150 tcp dpt:80
ACCEPT icmp -- 0.0.0.0/0 172.16.20.150 icmp type 8
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- 172.16.20.150 0.0.0.0/0 tcp spt:22
ACCEPT tcp -- 172.16.20.150 0.0.0.0/0 tcp spt:80
ACCEPT icmp -- 172.16.20.150 0.0.0.0/0 icmp type 0
ACCEPT icmp -- 172.16.20.150 0.0.0.0/0 icmp type 8
(2.2)顯式擴展:必須指明使用的擴展機制;
-m 模塊名稱
每個模塊會引入新的匹配機制;
想知道有哪些模塊可用:
rpm -ql iptables
小寫字母,以.so結尾;
①multiport擴展:
以離散定義多端口匹配;最多指定15個端口;
專用選項:
--source-ports, --sports PORT[,PORT,...]
--destination-ports, --dports PORT[,PORT,...]
--ports PORT[,PORT,...] 無論是源還是目標都匹配,但實際中不常見,因爲源和目標端口號一般都不同
例子:
# iptables -I INPUT 1 -d 172.16.100.11 -p tcp -m multiport --dports 22,80,443 -j ACCEPT
# iptables -I OUTPUT 1 -s 172.16.100.11 -p tcp -m multiport --sports 22,80,443 -j ACCEPT
②iprange擴展:
指定連續的ip地址範圍;在匹配非整個網絡地址時使用;
專用選項:
[!] --src-range IP[-IP]
[!] --dst-range IP[-IP]
示例:
# iptables -A INPUT -d 172.16.100.11 -p tcp --dport 23 -m iprange --src-range 172.16.100.1-172.16.100.100 -j ACCEPT
# iptables -A OUTPUT -s 172.16.100.11 -p tcp --sport 23 -m iprange --dst-range 172.16.100.1-172.16.100.100 -j ACCEPT
③string擴展:
檢查報文中出現的字符串,與給定的字符串作匹配;
字符串匹配檢查算法:
kmp, bm
目前來說,這兩者在性能上沒太大差別了,用哪個都可以。起的作用是加快匹配的速度。
專用選項:
--algo {kmp|bm}
--string "STRING"
--hex-string "HEX_STRING":HEX_STRING爲編碼成16進制格式的字串;
第一種寫法:
--algo kmp --string ”sex“
第二種寫法:
--hex-string ”XXX“
XXX : 編碼成的16進制格式的字串
示例:
# iptables -I OUTPUT 1 -s 172.16.100.11 -p tcp --sport 80 -m string --string "sex" --algo kmp -j REJECT
④time擴展:
基於時間區間做訪問控制
專用選項:
--datestart YYYY[-MM][-DD][hh[:mm[:ss]]]
--dattestop YYYY[-MM][-DD][hh[:mm[:ss]]]
--timestart hh:mm[:ss]
--timestop hh:mm[:ss]
--weekdays DAY1[,DAY2,...]
示例:
# iptables -R INPUT 1 -d 172.16.100.11 -p tcp --dport 80 -m time --timestart 08:30 --timestop 18:30 --weekdays Mon,Tue,Thu,Fri -j REJECT
⑤connlimit擴展:
基於連接數作限制;對每個IP能夠發起的併發連接數作限制;
注:計數器是從rule生效時纔開始計數的
專用選項:
--connlimit-above [n]
# iptables -I INPUT 2 -d 172.16.100.11 -p tcp --dport 22 -m connlimit --connlimit-above 5 -j REJECT
⑥limit擴展:
基於發包速率作限制;
令牌桶算法——只發這麼多個令牌,匹配到了就給個令牌執行本rule的target,如果超過了限制的則本規則直接不管(相當於每隔幾秒發一個令牌後就下班休息了,連關卡都不看了,由其他規則匹配。超過數量規則限制的則直接去匹配下面的規則,如果匹配到了就能執行對應的target,如果沒有,則最終採用默認policy。
專用選項:
--limit n[/second|/minute|/hour|/day]
--limit-burst n
# iptables -R INPUT 3 -d 172.16.100.11 -p icmp --icmp-type 8 -m limit --limit 10/minute --limit-burst 5 -j ACCEPT
練習:
(1) 配置本機的dns服務,並放行之;默認策略爲drop;
(2) 配置本機的telnet服務,要求只允許來自於172.16.0.0/16網絡中的主機訪問,且只允許工作時間訪問,而且,每個來源IP最多的併發連接數不能超過2個;
# iptables -t filter -I INPUT 3 -d 172.16.20.150 -p tcp -m tcp --dport 53 -p udp -m udp --dport 53 -j ACCEPT
# iptables -t filter -I OUPUT 3 -s 172.16.20.150 -p tcp -m tcp --sport 53 -p udp -m udp --sport 53 -j ACCEPT
# iptables -t filter -I OUTPUT 4 -s 172.16.20.150 -p tcp -m tcp -dport 53 -p udp -m udp --dport 53 -j ACCEPT
# iptables -t filter -I INPUT 4 -d 172.16.20.150 -p tcp -m tcp -sport 53 -p udp -m udp --sport 53 -j ACCEPT
# iptables -t filter -P INPUT DROP
# iptables -t filter -P OUPUT DROP
(2)
# iptables -t filter -I INPUT 5 -s 172.16.0.0/16 -d 172.16.20.150 -p tcp -m tcp --dport 23 -m time --timestart 08:30 --timestop 17:30 --weekdays Mon,Tue,Wen,Thu,Fri -m connlimit ! --connlimit-above 2 -j ACCEPT
# iptables -t filter -I OUTPUT 5 -d 172.16.0.0/16 -s 172.16.20.150 -p tcp -m tcp --sport 23 -m time --timestart 08:30 --timestop 17:30 --weekdays Mon,Tue,Wen,Thu,Fri -m connlimit ! --connlimit-above 2 -j ACCEPT
⑦state擴展:
啓用連接追蹤模板記錄連接,並根據連接匹配連接狀態的擴展;
啓用連接追蹤功能之前:簡單包過濾防火牆;
啓用連接追蹤功能:帶狀態檢測的包過濾防火牆;
可以過濾掉事先埋伏在主機內的反彈***以特定端口(如80)去主動連接某個客戶端
專用選項:
--state STATE
NEW:
新建立的連接,連接追蹤模板中無相應的條目時,客戶端第一次發出的請求;
ESTABLISHED:
NEW狀態之後,連接追蹤模板中的條目刪除之前所進行的通信過程,都稱爲 ESTABLISHED;(理解:IP和端口號都是一樣的)
RELATED:
相關聯的連接,如ftp協議的命令連接與數據連接即爲相關聯的連接;(理解 : IP是一樣,但端口號不一樣)
INVALIED:
無法識別的狀態;如 ① syn 1,fin 1;② 6個標誌位全爲1 或全爲0 ;
4、TARGET:
ACCEPT:放行
DROP:丟棄
REJECT:明確拒絕
SNAT:源地址轉換
DNAT:目標地址轉換
MASQUERADE :動態地址轉換(當私網主機是通過DHCP動態獲得IP地址時使用)
LOG:日誌
REDIRECT:端口重定向;
RETURN: 返回至調用者;
MARK:防火牆標記
(1)SNAT:
主要用於實現讓內網客戶端訪問外部主機時使用;
注意:要定義在POSTROUTING鏈;也可以在OUTPUT上使用,但很少;
定義方法:
# iptables -t nat -A POSTROUTING -s 內網網絡或主機地址 -j SNAT --to-source NAT服務器上的某外網地址
(即要將發出的源地址改爲NAT服務器上的外網地址,讓外網的服務器能先回復到NAT上)
另一個TARGET:
MASQUERADE:地址僞裝;能自行判斷該轉爲哪個源地址;
# iptables -t nat -A POSTROUTING -s 內網網絡或主機地址 -j MASQUERADE
(2)DNAT:
主要用於發佈內部服務器,讓內網中的服務器在外網中可以被訪問到;
注意:要定義在PREROUTING鏈;
定義方法:
# iptables -t nat -A PREROUTING -d NAT服務器的某外網地址 -p 某協議 --dport 某端口 -j DNAT --to-destination 內網某服務器地址[:PORT]
練習:INPUT和OUTPUT默認策略爲DROP;
1、限制本地主機的web服務器在週一不允許訪問;新請求的速率不能超過100個每秒;web服務器包含了admin字符串的頁面不允許訪問;web服務器僅允許響應報文離開本機;
# iptables -A INPUT -s 172.16.0.0/16 -d 172.16.0.1 -p tcp -m tcp --dport 80,443 -m time --weekdays Mon -j REJECT
# iptables -A INPUT -s 172.16.0.0/16 -d 172.16.0.1 -p tcp -m tcp --dport 80,443 -m limit --limit 100/second -m state --state NEW,ESTABLISHED -j ACCEPT
# iptables -A OUTPUT -s 172.16.0.0/16 -d 172.16.0.1 -p tcp -m tcp --dport 80,443 -m string --string "admin" --algo kmp -j REJECT
# iptables -A OUTPUT -s 172.16.0.1 -p tcp -m state --state ESTABLISHED -j ACCEPT
# iptables -P INPUT DROP
# iptables -P OUTPUT DROP
2、在工作時間,即週一到週五的8:30-18:00,開放本機的ftp服務給172.16.0.0網絡中的主機訪問;數據下載請求的次數每分鐘不得超過5個;
# iptables -A INPUT -s 172.16.0.0/16 -d 172.16.0.1 -p tcp --dport 21 -m time --timestart 08:30 --timestop 18:00 --weekdays Mon,Tue,Wen,Thu,Fri -m state --state NEW,ESTABLISHED -j ACCEPT
# iptables -A INPUT -s 172.16.0.0/16 -d 172.16.0.1 -p tcp -m time --timestart 08:30 --timestop 18:00 --weekdays Mon,Tue,Wen,Thu,Fri -m limit --limit 5/minute -m state --state RELATIVED -j ACCEPT
# iptables -A OUTPUT -s 172.16.0.1 -p tcp -m state --state ESTABLISHED -j ACCEPT
3、開放本機的ssh服務給172.16.x.1-172.16.x.100中的主機,x爲你的座位號,新請求建立的速率一分鐘不得超過2個;僅允許響應報文通過其服務端口離開本機;
# iptables -A INPUT -d 172.16.0.1 -p tcp -m tcp --dport 22 -m iprange --src-range 172.16.20.1-172.16.20.100 -m limit --limit 2/minit -j ACCEPT
# iptables -A OUTPUT -s 172.16.0.1 -p tcp -m state --state ESTABLISHED -j ACCEPT
4、拒絕TCP標誌位全部爲1及全部爲0的報文訪問本機;
# iptables -A INPUT -d 172.16.0.1 -m tcp --tcp-flags all all -j REJECT
# iptables -A INPUT -d 172.16.0.1 -m tcp --tcp-flags all none -j REJECT
5、允許本機ping別的主機;但不開放別的主機ping本機;
# iptables -A OUTPUT -s 172.16.0.1 -p icmp -m icmp --icmp-type 8 -j ACCEPT
# iptables -A INPUT -d 172.16.0.1 -p icmp -m state --state ESTABLISH -j ACCEPT
練習:判斷下述規則的意義:
# iptables -N clean_in
在filter表中新建一個名字爲clean_in的鏈
# iptables -A clean_in -d 255.255.255.255 -p icmp -j DROP
經由clean_in到255.255.255.255的icmp包都丟棄
# iptables -A clean_in -d 172.16.255.255 -p icmp -j DROP
經由clean_in到172.16.255.255的icmp包都丟棄
# iptables -A clean_in -p tcp ! --syn -m state --state NEW -j DROP
經由clean_in新建立的連接的tcp包中追蹤狀態是NEW且不是(syn=1,ack=0,fin=0,rst=0)的都丟棄
# iptables -A clean_in -p tcp --tcp-flags ALL ALL -j DROP
經由clean_in的tcp包中丟棄tcp標識都爲1的包
# iptables -A clean_in -p tcp --tcp-flags ALL NONE -j DROP
經由clean_in的tcp包中丟棄tcp標識都爲0的包
# iptables -A clean_in -d 172.16.100.7 -j RETURN
經由clean_in的發往172.16.100.7的包都跳轉至調用clean_in的鏈中規則的下一條接着處理
# iptables -A INPUT -d 172.16.100.7 -j clean_in
經由INPUT鏈的發往172.16.100.7的包都交由clean_in鏈處理
# iptables -A INPUT -i lo -j ACCEPT
通過INPUT鏈時,數據報文指明接口爲lo的都放行
# iptables -A OUTPUT -o lo -j ACCEPT
通過OUTPUT鏈時,發出的數據報文指明接口爲lo的都放行
# iptables -A INPUT -i eth0 -m multiport -p tcp --dports 53,113,135,137,139,445 -j DROP
經eth0流入的tcp數據包經由INPUT時,只要目標端口是53,113,135,137,139,445的都丟棄
# iptables -A INPUT -i eth0 -m multiport -p udp --dports 53,113,135,137,139,445 -j DROP
經eth0流入的udp數據包經由INPUT時,只要目標端口是53,113,135,137,139,445的都丟棄
# iptables -A INPUT -i eth0 -p udp --dport 1026 -j DROP
經eth0流入的udp數據包經由INPUT時,只要目標端口是1026的丟棄
# iptables -A INPUT -i eth0 -m multiport -p tcp --dports 1433,4899 -j DROP
經eth0流入的tcp數據包經由INPUT時,只要目標端口是1433和4899的都丟棄
# iptables -A INPUT -p icmp -m limit --limit 10/second -j ACCEPT
進入的icmp包經由INPUT鏈時限速10個/秒,超過的不被本規則放行