1、iptables -L
查看filter表的iptables規(guī)則,包括所有的鏈。filter表包含INPUT、OUTPUT、FORWARD三個(gè)規(guī)則鏈。
說明:-L是--list的簡寫,作用是列出規(guī)則。
2、iptables -L [-t 表名]
只查看某個(gè)表的中的規(guī)則。
說明:表名一共有三個(gè):filter,nat,mangle,如果沒有指定表名,則默認(rèn)查看filter表的規(guī)則列表(就相當(dāng)于第一條命令)。
舉例:iptables -L -t filter
3、iptables -L [-t 表名] [鏈名]
這里多了個(gè)鏈名,就是規(guī)則鏈的名稱。
說明:iptables一共有INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING五個(gè)規(guī)則鏈。
舉例:iptables -L INPUT
注意:鏈名必須大寫。在Linux系統(tǒng)上,命令的大小寫很敏感。
4、iptables -n -L
說明:以數(shù)字形式顯示規(guī)則。如果沒有-n,規(guī)則中可能會出現(xiàn)anywhere,有了-n,它會變成0.0.0.0/0
5、iptables -nv -L
說明:你也可以使用“iptables -L -nv”來查看,這個(gè)列表看起來更詳細(xì),對技術(shù)人員更友好,呵呵。
如果想刪除iptables規(guī)則我們可以如下操作
刪除用-D參數(shù)
刪除之前添加的規(guī)則(iptables -A INPUT -s 192.168.1.5 -j DROP):
[root@test ~]# iptables -D INPUT -s 192.168.1.5 -j DROP
有時(shí)候要刪除的規(guī)則太長,刪除時(shí)要寫一大串,既浪費(fèi)時(shí)間又容易寫錯(cuò),這時(shí)我們可以
先使用–line-number找出該條規(guī)則的行號,再通過行號刪除規(guī)則。
[root@test ~]# iptables -nv --line-number
iptables v1.4.7: no command specified
Try `iptables -h' or 'iptables --help' for more information.
[root@test ~]# iptables -nL --line-number
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 DROP all -- 192.168.1.1 0.0.0.0/0
2 DROP all -- 192.168.1.2 0.0.0.0/0
3 DROP all -- 192.168.1.3 0.0.0.0/0
刪除第二行規(guī)則
[root@test ~]# iptables -D INPUT 2
[root@tp ~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT
[root@tp ~]# iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
(注:這個(gè)規(guī)則,如果你把OUTPUT 設(shè)置成DROP的就要寫上這一部,好多人都是忘了寫這一部規(guī)則導(dǎo)致,始終無法SSH.在遠(yuǎn)程一下,是不是好了.其他的端口也一樣,如果開啟了web服務(wù)器,OUTPUT設(shè)置成DROP的話,同樣也要添加一條鏈:
[root@tp ~]# iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT)
如果做了WEB服務(wù)器,開啟80端口.
[root@tp ~]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT
如果做了郵件服務(wù)器,開啟25,110端口.
[root@tp ~]# iptables -A INPUT -p tcp --dport 110 -j ACCEPT
[root@tp ~]# iptables -A INPUT -p tcp --dport 25 -j ACCEPT
如果做了FTP服務(wù)器,開啟21端口
[root@tp ~]# iptables -A INPUT -p tcp --dport 21 -j ACCEPT
[root@tp ~]# iptables -A INPUT -p tcp --dport 20 -j ACCEPT
如果做了DNS服務(wù)器,開啟53端口
[root@tp ~]# iptables -A INPUT -p tcp --dport 53 -j ACCEPT
上面主要寫的都是INPUT鏈,凡是不在上面的規(guī)則里的,都DROP
允許icmp包通過,也就是允許ping,
[root@tp ~]# iptables -A OUTPUT -p icmp -j ACCEPT (OUTPUT設(shè)置成DROP的話)
[root@tp ~]# iptables -A INPUT -p icmp -j ACCEPT (INPUT設(shè)置成DROP的話)
允許loopback!(不然會導(dǎo)致DNS無法正常關(guān)閉等問題)
IPTABLES -A INPUT -i lo -p all -j ACCEPT (如果是INPUT DROP)
IPTABLES -A OUTPUT -o lo -p all -j ACCEPT(如果是OUTPUT DROP)
下面寫OUTPUT鏈,OUTPUT鏈默認(rèn)規(guī)則是ACCEPT,所以我們就寫需要DROP(放棄)的鏈.
減少不安全的端口連接
[root@tp ~]# iptables -A OUTPUT -p tcp --sport 31337 -j DROP
[root@tp ~]# iptables -A OUTPUT -p tcp --dport 31337 -j DROP
.
下面寫一下更加細(xì)致的規(guī)則,就是限制到某臺機(jī)器
如:我們只允許192.168.0.3的機(jī)器進(jìn)行SSH連接
[root@tp ~]# iptables -A INPUT -s 192.168.0.3 -p tcp --dport 22 -j ACCEPT
如果要允許,或限制一段IP地址可用 192.168.0.0/24 表示192.168.0.1-255端的所有IP.
24表示子網(wǎng)掩碼數(shù).但要記得把 /etc/sysconfig/iptables 里的這一行刪了.
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT 因?yàn)樗硎舅械刂范伎梢缘顷?
或采用命令方式:
[root@tp ~]# iptables -D INPUT -p tcp --dport 22 -j ACCEPT
[root@tp ~]# /etc/rc.d/init.d/iptables save
這樣寫 !192.168.0.3 表示除了192.168.0.3的ip地址
其他的規(guī)則連接也一樣這么設(shè)置.
在下面就是FORWARD鏈,FORWARD鏈的默認(rèn)規(guī)則是DROP,所以我們就寫需要ACCETP(通過)的鏈,對正在轉(zhuǎn)發(fā)鏈的監(jiān)控.
開啟轉(zhuǎn)發(fā)功能,(在做NAT時(shí),FORWARD默認(rèn)規(guī)則是DROP時(shí),必須做)
[root@tp ~]# iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
[root@tp ~]# iptables -A FORWARD -i eth1 -o eh0 -j ACCEPT
丟棄壞的TCP包
[root@tp ~]#iptables -A FORWARD -p TCP ! --syn -m state --state NEW -j DROP
處理IP碎片數(shù)量,防止攻擊,允許每秒100個(gè)
[root@tp ~]#iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT
設(shè)置ICMP包過濾,允許每秒1個(gè)包,限制觸發(fā)條件是10個(gè)包.
[root@tp ~]#iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT
我在前面只所以允許ICMP包通過,就是因?yàn)槲以谶@里有限制.
3、刪除
刪除用-D參數(shù)
刪除之前添加的規(guī)則(iptables -A INPUT -s 192.168.1.5 -j DROP):
[root@test ~]# iptables -D INPUT -s 192.168.1.5 -j DROP有時(shí)候要刪除的規(guī)則太長,刪除時(shí)要寫一大串,既浪費(fèi)時(shí)間又容易寫錯(cuò),這時(shí)我們可以先使用–line-number找出該條規(guī)則的行號,再通過行號刪除規(guī)則。
[root@test ~]# iptables -nv --line-number
iptables v1.4.7: no command specified
Try `iptables -h' or 'iptables --help' for more information.
[root@test ~]# iptables -nL --line-number
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 DROP all -- 192.168.1.1 0.0.0.0/0
2 DROP all -- 192.168.1.2 0.0.0.0/0
3 DROP all -- 192.168.1.3 0.0.0.0/0
刪除第二行規(guī)則
[root@test ~]# iptables -D INPUT 24、
不管你在安裝linux時(shí)是否啟動了防火墻,如果你想配置屬于自己的防火墻,那就清除現(xiàn)在filter的所有規(guī)則.
[root@tp ~]# iptables -F 清除預(yù)設(shè)表filter中的所有規(guī)則鏈的規(guī)則
[root@tp ~]# iptables -X 清除預(yù)設(shè)表filter中使用者自定鏈中的規(guī)則
我們在來看一下
[root@tp ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@tp ~]# /etc/rc.d/init.d/iptables save
這樣就可以寫到/etc/sysconfig/iptables文件里了.寫入后記得把防火墻重起一下,才能起作用.
[root@tp ~]# service iptables restart
現(xiàn)在IPTABLES配置表里什么配置都沒有了,那我們開始我們的配置吧
(3)設(shè)定預(yù)設(shè)規(guī)則
[root@tp ~]# iptables -p INPUT DROP
[root@tp ~]# iptables -p OUTPUT ACCEPT
[root@tp ~]# iptables -p FORWARD DROP
上面的意思是,當(dāng)超出了IPTABLES里filter表里的兩個(gè)鏈規(guī)則(INPUT,FORWARD)時(shí),不在這兩個(gè)規(guī)則里的數(shù)據(jù)包怎么處理呢,那就是DROP(放棄).應(yīng)該說這樣配置是很安全的.我們要控制流入數(shù)據(jù)包
而對于OUTPUT鏈,也就是流出的包我們不用做太多限制,而是采取ACCEPT,也就是說,不在著個(gè)規(guī)則里的包怎么辦呢,那就是通過.
可以看出INPUT,FORWARD兩個(gè)鏈采用的是允許什么包通過,而OUTPUT鏈采用的是不允許什么包通過.
修改使用-R參數(shù)
先看下當(dāng)前規(guī)則:
[root@test ~]# iptables -nL --line-number
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 DROP all -- 192.168.1.1 0.0.0.0/0
2 DROP all -- 192.168.1.2 0.0.0.0/0
3 DROP all -- 192.168.1.5 0.0.0.0/0
將第三條規(guī)則改為ACCEPT:
[root@test ~]# iptables -R INPUT 3 -j ACCEPT再查看下:
[root@test ~]# iptables -nL --line-number
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 DROP all -- 192.168.1.1 0.0.0.0/0
2 DROP all -- 192.168.1.2 0.0.0.0/0
3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
第三條規(guī)則的target已改為ACCEPT。
iptables -E old-chain-name new-chain-name
-E 舊的鏈名 新的鏈名
用新的鏈名取代舊的鏈名
說明
Iptalbes 是用來設(shè)置、維護(hù)和檢查Linux內(nèi)核的IP包過濾規(guī)則的。
可以定義不同的表,每個(gè)表都包含幾個(gè)內(nèi)部的鏈,也能包含用戶定義的鏈。每個(gè)鏈都是一個(gè)規(guī)則列表,對對應(yīng)的包進(jìn)行匹配:每條規(guī)則指定應(yīng)當(dāng)如何處理與之相匹配的包。這被稱作'target'(目標(biāo)),也可以跳向同一個(gè)表內(nèi)的用戶定義的鏈。
TARGETS
防火墻的規(guī)則指定所檢查包的特征,和目標(biāo)。如果包不匹配,將送往該鏈中下一條規(guī)則檢查;如果匹配,那么下一條規(guī)則由目標(biāo)值確定.該目標(biāo)值可以是用戶定義的鏈名,或是某個(gè)專用值,如ACCEPT[通過], DROP[刪除], QUEUE[排隊(duì)], 或者 RETURN[返回]。
ACCEPT 表示讓這個(gè)包通過。DROP表示將這個(gè)包丟棄。QUEUE表示把這個(gè)包傳遞到用戶空間。RETURN表示停止這條鏈的匹配,到前一個(gè)鏈的規(guī)則重新開始。如果到達(dá)了一個(gè)內(nèi)建的鏈(的末端),或者遇到內(nèi)建鏈的規(guī)則是RETURN,包的命運(yùn)將由鏈準(zhǔn)則指定的目標(biāo)決定。
TABLES
當(dāng)前有三個(gè)表(哪個(gè)表是當(dāng)前表取決于內(nèi)核配置選項(xiàng)和當(dāng)前模塊)。
-t table
這個(gè)選項(xiàng)指定命令要操作的匹配包的表。如果內(nèi)核被配置為自動加載模塊,這時(shí)若模塊沒有加載,(系統(tǒng))將嘗試(為該表)加載適合的模塊。這些表如下:
filter,這是默認(rèn)的表,包含了內(nèi)建的鏈INPUT(處理進(jìn)入的包)、FORWORD(處理通過的包)和OUTPUT(處理本地生成的包)。
nat,這個(gè)表被查詢時(shí)表示遇到了產(chǎn)生新的連接的包,由三個(gè)內(nèi)建的鏈構(gòu)成:PREROUTING (修改到來的包)、OUTPUT(修改路由之前本地的包)、POSTROUTING(修改準(zhǔn)備出去的包)。
mangle 這個(gè)表用來對指定的包進(jìn)行修改。它有兩個(gè)內(nèi)建規(guī)則:PREROUTING(修改路由之前進(jìn)入的包)和OUTPUT(修改路由之前本地的包)。
OPTIONS
這些可被iptables識別的選項(xiàng)可以區(qū)分不同的種類。
COMMANDS
這些選項(xiàng)指定執(zhí)行明確的動作:若指令行下沒有其他規(guī)定,該行只能指定一個(gè)選項(xiàng).對于長格式的命令和選項(xiàng)名,所用字母長度只要保證iptables能從其他選項(xiàng)中區(qū)分出該指令就行了。
-A -append
在所選擇的鏈末添加一條或更多規(guī)則。當(dāng)源(地址)或者/與 目的(地址)轉(zhuǎn)換為多個(gè)地址時(shí),這條規(guī)則會加到所有可能的地址(組合)后面。
-D -delete
從所選鏈中刪除一條或更多規(guī)則。這條命令可以有兩種方法:可以把被刪除規(guī)則指定為鏈中的序號(第一條序號為1),或者指定為要匹配的規(guī)則。
-R -replace
從選中的鏈中取代一條規(guī)則。如果源(地址)或者/與 目的(地址)被轉(zhuǎn)換為多地址,該命令會失敗。規(guī)則序號從1開始。
-I -insert
根據(jù)給出的規(guī)則序號向所選鏈中插入一條或更多規(guī)則。所以,如果規(guī)則序號為1,規(guī)則會被插入鏈的頭部。這也是不指定規(guī)則序號時(shí)的默認(rèn)方式。
-L -list
顯示所選鏈的所有規(guī)則。如果沒有選擇鏈,所有鏈將被顯示。也可以和z選項(xiàng)一起使用,這時(shí)鏈會被自動列出和歸零。精確輸出受其它所給參數(shù)影響。
-F -flush
清空所選鏈。這等于把所有規(guī)則一個(gè)個(gè)的刪除。
--Z -zero
把所有鏈的包及字節(jié)的計(jì)數(shù)器清空。它可以和 -L配合使用,在清空前察看計(jì)數(shù)器,請參見前文。
-N -new-chain
根據(jù)給出的名稱建立一個(gè)新的用戶定義鏈。這必須保證沒有同名的鏈存在。
-X -delete-chain
刪除指定的用戶自定義鏈。這個(gè)鏈必須沒有被引用,如果被引用,在刪除之前你必須刪除或者替換與之有關(guān)的規(guī)則。如果沒有給出參數(shù),這條命令將試著刪除每個(gè)非內(nèi)建的鏈。
-P -policy
設(shè)置鏈的目標(biāo)規(guī)則。
-E -rename-chain
根據(jù)用戶給出的名字對指定鏈進(jìn)行重命名,這僅僅是修飾,對整個(gè)表的結(jié)構(gòu)沒有影響。TARGETS參數(shù)給出一個(gè)合法的目標(biāo)。只有非用戶自定義鏈可以使用規(guī)則,而且內(nèi)建鏈和用戶自定義鏈都不能是規(guī)則的目標(biāo)。
-h Help.
幫助。給出當(dāng)前命令語法非常簡短的說明。
PARAMETERS
參數(shù)
以下參數(shù)構(gòu)成規(guī)則詳述,如用于add、delete、replace、append 和 check命令。
-p -protocal [!]protocol
規(guī)則或者包檢查(待檢查包)的協(xié)議。指定協(xié)議可以是tcp、udp、icmp中的一個(gè)或者全部,也可以是數(shù)值,代表這些協(xié)議中的某一個(gè)。當(dāng)然也可以使用在/etc/protocols中定義的協(xié)議名。在協(xié)議名前加上"!"表示相反的規(guī)則。數(shù)字0相當(dāng)于所有all。Protocol all會匹配所有協(xié)議,而且這是缺省時(shí)的選項(xiàng)。在和check命令結(jié)合時(shí),all可以不被使用。
-s -source [!] address[/mask]
指定源地址,可以是主機(jī)名、網(wǎng)絡(luò)名和清楚的IP地址。mask說明可以是網(wǎng)絡(luò)掩碼或清楚的數(shù)字,在網(wǎng)絡(luò)掩碼的左邊指定網(wǎng)絡(luò)掩碼左邊"1"的個(gè)數(shù),因此,mask值為24等于255.255.255.0。在指定地址前加上"!"說明指定了相反的地址段。標(biāo)志 --src 是這個(gè)選項(xiàng)的簡寫。
-d --destination [!] address[/mask]
指定目標(biāo)地址,要獲取詳細(xì)說明請參見 -s標(biāo)志的說明。標(biāo)志 --dst 是這個(gè)選項(xiàng)的簡寫。
-j --jump target
-j 目標(biāo)跳轉(zhuǎn)
指定規(guī)則的目標(biāo);也就是說,如果包匹配應(yīng)當(dāng)做什么。目標(biāo)可以是用戶自定義鏈(不是這條規(guī)則所在的),某個(gè)會立即決定包的命運(yùn)的專用內(nèi)建目標(biāo),或者一個(gè)擴(kuò)展(參見下面的EXTENSIONS)。如果規(guī)則的這個(gè)選項(xiàng)被忽略,那么匹配的過程不會對包產(chǎn)生影響,不過規(guī)則的計(jì)數(shù)器會增加。
-i -in-interface [!] [name]
i -進(jìn)入的(網(wǎng)絡(luò))接口 [!][名稱]
這是包經(jīng)由該接口接收的可選的入口名稱,包通過該接口接收(在鏈INPUT、FORWORD和PREROUTING中進(jìn)入的包)。當(dāng)在接口名前使用"!"說明后,指的是相反的名稱。如果接口名后面加上"+",則所有以此接口名開頭的接口都會被匹配。如果這個(gè)選項(xiàng)被忽略,會假設(shè)為"+",那么將匹配任意接口。
-o --out-interface [!][name]
-o --輸出接口[名稱]
這是包經(jīng)由該接口送出的可選的出口名稱,包通過該口輸出(在鏈FORWARD、OUTPUT和POSTROUTING中送出的包)。當(dāng)在接口名前使用"!"說明后,指的是相反的名稱。如果接口名后面加上"+",則所有以此接口名開頭的接口都會被匹配。如果這個(gè)選項(xiàng)被忽略,會假設(shè)為"+",那么將匹配所有任意接口。
[!] -f, --fragment
[!] -f --分片
這意味著在分片的包中,規(guī)則只詢問第二及以后的片。自那以后由于無法判斷這種把包的源端口或目標(biāo)端口(或者是ICMP類型的),這類包將不能匹配任何指定對他們進(jìn)行匹配的規(guī)則。如果"!"說明用在了"-f"標(biāo)志之前,表示相反的意思。
OTHER OPTIONS
其他選項(xiàng)
還可以指定下列附加選項(xiàng):
-v --verbose
-v --詳細(xì)
詳細(xì)輸出。這個(gè)選項(xiàng)讓list命令顯示接口地址、規(guī)則選項(xiàng)(如果有)和TOS(Type of Service)掩碼。包和字節(jié)計(jì)數(shù)器也將被顯示,分別用K、M、G(前綴)表示1000、1,000,000和1,000,000,000倍(不過請參看-x標(biāo)志改變它),對于添加,插入,刪除和替換命令,這會使一個(gè)或多個(gè)規(guī)則的相關(guān)詳細(xì)信息被打印。
-n --numeric
-n --數(shù)字
數(shù)字輸出。IP地址和端口會以數(shù)字的形式打印。默認(rèn)情況下,程序試顯示主機(jī)名、網(wǎng)絡(luò)名或者服務(wù)(只要可用)。
-x -exact
-x -精確
擴(kuò)展數(shù)字。顯示包和字節(jié)計(jì)數(shù)器的精確值,代替用K,M,G表示的約數(shù)。這個(gè)選項(xiàng)僅能用于 -L 命令。
--line-numbers
當(dāng)列表顯示規(guī)則時(shí),在每個(gè)規(guī)則的前面加上行號,與該規(guī)則在鏈中的位置相對應(yīng)。
MATCH EXTENSIONS
對應(yīng)的擴(kuò)展
iptables能夠使用一些與模塊匹配的擴(kuò)展包。以下就是含于基本包內(nèi)的擴(kuò)展包,而且他們大多數(shù)都可以通過在前面加上!來表示相反的意思。
tcp
當(dāng) --protocol tcp 被指定,且其他匹配的擴(kuò)展未被指定時(shí),這些擴(kuò)展被裝載。它提供以下選項(xiàng):
--source-port [!] [port[:port]]
源端口或端口范圍指定。這可以是服務(wù)名或端口號。使用格式端口:端口也可以指定包含的(端口)范圍。如果首端口號被忽略,默認(rèn)是"0",如果末端口號被忽略,默認(rèn)是"65535",如果第二個(gè)端口號大于第一個(gè),那么它們會被交換。這個(gè)選項(xiàng)可以使用 --sport的別名。
--destionation-port [!] [port:[port]]
目標(biāo)端口或端口范圍指定。這個(gè)選項(xiàng)可以使用 --dport別名來代替。
--tcp-flags [!] mask comp
匹配指定的TCP標(biāo)記。第一個(gè)參數(shù)是我們要檢查的標(biāo)記,一個(gè)用逗號分開的列表,第二個(gè)參數(shù)是用逗號分開的標(biāo)記表,是必須被設(shè)置的。標(biāo)記如下:SYN ACK FIN RST URG PSH ALL NONE。因此這條命令:iptables -A FORWARD -p tcp --tcp-flags SYN, ACK, FIN, RST SYN只匹配那些SYN標(biāo)記被設(shè)置而ACK、FIN和RST標(biāo)記沒有設(shè)置的包。
[!] --syn
只匹配那些設(shè)置了SYN位而清除了ACK和FIN位的TCP包。這些包用于TCP連接初始化時(shí)發(fā)出請求;例如,大量的這種包進(jìn)入一個(gè)接口發(fā)生堵塞時(shí)會阻止進(jìn)入的TCP連接,而出去的TCP連接不會受到影響。這等于 --tcp-flags SYN, RST, ACK SYN。如果"--syn"前面有"!"標(biāo)記,表示相反的意思。
--tcp-option [!] number
匹配設(shè)置了TCP選項(xiàng)的。
udp
當(dāng)protocol udp 被指定,且其他匹配的擴(kuò)展未被指定時(shí),這些擴(kuò)展被裝載,它提供以下選項(xiàng):
--source-port [!] [port:[port]]
源端口或端口范圍指定。詳見 TCP擴(kuò)展的--source-port選項(xiàng)說明。
--destination-port [!] [port:[port]]
目標(biāo)端口或端口范圍指定。詳見 TCP擴(kuò)展的--destination-port選項(xiàng)說明。
icmp
當(dāng)protocol icmp被指定,且其他匹配的擴(kuò)展未被指定時(shí),該擴(kuò)展被裝載。它提供以下選項(xiàng):
--icmp-type [!] typename
這個(gè)選項(xiàng)允許指定ICMP類型,可以是一個(gè)數(shù)值型的ICMP類型,或者是某個(gè)由命令iptables -p icmp -h所顯示的ICMP類型名。
mac
--mac-source [!] address
匹配物理地址。必須是XX:XX:XX:XX:XX這樣的格式。注意它只對來自以太設(shè)備并進(jìn)入PREROUTING、FORWORD和INPUT鏈的包有效。
limit
這個(gè)模塊匹配標(biāo)志用一個(gè)標(biāo)記桶過濾器一一定速度進(jìn)行匹配,它和LOG目標(biāo)結(jié)合使用來給出有限的登陸數(shù).當(dāng)達(dá)到這個(gè)極限值時(shí),使用這個(gè)擴(kuò)展包的規(guī)則將進(jìn)行匹配.(除非使用了"!"標(biāo)記)
--limit rate
最大平均匹配速率:可賦的值有'/second', '/minute', '/hour', or '/day'這樣的單位,默認(rèn)是3/hour。
--limit-burst number
待匹配包初始個(gè)數(shù)的最大值:若前面指定的極限還沒達(dá)到這個(gè)數(shù)值,則概數(shù)字加1.默認(rèn)值為5
multiport
這個(gè)模塊匹配一組源端口或目標(biāo)端口,最多可以指定15個(gè)端口。只能和-p tcp 或者 -p udp 連著使用。
--source-port [port[, port]]
如果源端口是其中一個(gè)給定端口則匹配
--destination-port [port[, port]]
如果目標(biāo)端口是其中一個(gè)給定端口則匹配
--port [port[, port]]
若源端口和目的端口相等并與某個(gè)給定端口相等,則匹配。
mark
這個(gè)模塊和與netfilter過濾器標(biāo)記字段匹配(就可以在下面設(shè)置為使用MARK標(biāo)記)。
--mark value [/mask]
匹配那些無符號標(biāo)記值的包(如果指定mask,在比較之前會給掩碼加上邏輯的標(biāo)記)。
owner
此模塊試為本地生成包匹配包創(chuàng)建者的不同特征。只能用于OUTPUT鏈,而且即使這樣一些包(如ICMP ping應(yīng)答)還可能沒有所有者,因此永遠(yuǎn)不會匹配。
--uid-owner userid
如果給出有效的user id,那么匹配它的進(jìn)程產(chǎn)生的包。
--gid-owner groupid
如果給出有效的group id,那么匹配它的進(jìn)程產(chǎn)生的包。
--sid-owner seessionid
根據(jù)給出的會話組匹配該進(jìn)程產(chǎn)生的包。
state
此模塊,當(dāng)與連接跟蹤結(jié)合使用時(shí),允許訪問包的連接跟蹤狀態(tài)。
--state state
這里state是一個(gè)逗號分割的匹配連接狀態(tài)列表??赡艿臓顟B(tài)是:INVALID表示包是未知連接,ESTABLISHED表示是雙向傳送的連接,NEW表示包為新的連接,否則是非雙向傳送的,而RELATED表示包由新連接開始,但是和一個(gè)已存在的連接在一起,如FTP數(shù)據(jù)傳送,或者一個(gè)ICMP錯(cuò)誤。
unclean
此模塊沒有可選項(xiàng),不過它試著匹配那些奇怪的、不常見的包。處在實(shí)驗(yàn)中。
tos
此模塊匹配IP包首部的8位tos(服務(wù)類型)字段(也就是說,包含在優(yōu)先位中)。
--tos tos
這個(gè)參數(shù)可以是一個(gè)標(biāo)準(zhǔn)名稱,(用iptables -m tos -h 察看該列表),或者數(shù)值。
TARGET EXTENSIONS
iptables可以使用擴(kuò)展目標(biāo)模塊:以下都包含在標(biāo)準(zhǔn)版中。
LOG
為匹配的包開啟內(nèi)核記錄。當(dāng)在規(guī)則中設(shè)置了這一選項(xiàng)后,linux內(nèi)核會通過printk()打印一些關(guān)于全部匹配包的信息(諸如IP包頭字段等)。
--log-level level
記錄級別(數(shù)字或參看 syslog.conf(5))。
--log-prefix prefix
在紀(jì)錄信息前加上特定的前綴:最多14個(gè)字母長,用來和記錄中其他信息區(qū)別。
--log-tcp-sequence
記錄TCP序列號。如果記錄能被用戶讀取那么這將存在安全隱患。
--log-tcp-options
記錄來自TCP包頭部的選項(xiàng)。
--log-ip-options
記錄來自IP包頭部的選項(xiàng)。
MARK
用來設(shè)置包的netfilter標(biāo)記值。只適用于mangle表。
--set-mark mark
REJECT
作為對匹配的包的響應(yīng),返回一個(gè)錯(cuò)誤的包:其他情況下和DROP相同。
此目標(biāo)只適用于INPUT、FORWARD和OUTPUT鏈,和調(diào)用這些鏈的用戶自定義鏈。這幾個(gè)選項(xiàng)控制返回的錯(cuò)誤包的特性:
--reject-with type
Type可以是icmp-net-unreachable、icmp-host-unreachable、icmp-port-nreachable、icmp-proto-unreachable、 icmp-net-prohibited 或者 icmp-host-prohibited,該類型會返回相應(yīng)的ICMP錯(cuò)誤信息(默認(rèn)是port-unreachable)。選項(xiàng) echo-reply也是允許的;它只能用于指定ICMP ping包的規(guī)則中,生成ping的回應(yīng)。最后,選項(xiàng)tcp-reset可以用于在INPUT鏈中,或自INPUT鏈調(diào)用的規(guī)則,只匹配TCP協(xié)議:將回應(yīng)一個(gè)TCP RST包。
TOS
用來設(shè)置IP包的首部八位tos。只能用于mangle表。
--set-tos tos
你可以使用一個(gè)數(shù)值型的TOS 值,或者用iptables -j TOS -h 來查看有效TOS名列表。
MIRROR
這是一個(gè)試驗(yàn)示范目標(biāo),可用于轉(zhuǎn)換IP首部字段中的源地址和目標(biāo)地址,再傳送該包,并只適用于INPUT、FORWARD和OUTPUT鏈,以及只調(diào)用它們的用戶自定義鏈。
SNAT
這個(gè)目標(biāo)只適用于nat表的POSTROUTING鏈。它規(guī)定修改包的源地址(此連接以后所有的包都會被影響),停止對規(guī)則的檢查,它包含選項(xiàng):
--to-source [-][:port-port]
可以指定一個(gè)單一的新的IP地址,一個(gè)IP地址范圍,也可以附加一個(gè)端口范圍(只能在指定-p tcp 或者-p udp的規(guī)則里)。如果未指定端口范圍,源端口中512以下的(端口)會被安置為其他的512以下的端口;512到1024之間的端口會被安置為1024以下的,其他端口會被安置為1024或以上。如果可能,端口不會被修改。
--to-destiontion [-][:port-port]
可以指定一個(gè)單一的新的IP地址,一個(gè)IP地址范圍,也可以附加一個(gè)端口范圍(只能在指定-p tcp 或者-p udp的規(guī)則里)。如果未指定端口范圍,目標(biāo)端口不會被修改。
MASQUERADE
只用于nat表的POSTROUTING鏈。只能用于動態(tài)獲取IP(撥號)連接:如果你擁有靜態(tài)IP地址,你要用SNAT。偽裝相當(dāng)于給包發(fā)出時(shí)所經(jīng)過接口的IP地址設(shè)置一個(gè)映像,當(dāng)接口關(guān)閉連接會終止。這是因?yàn)楫?dāng)下一次撥號時(shí)未必是相同的接口地址(以后所有建立的連接都將關(guān)閉)。它有一個(gè)選項(xiàng):
--to-ports [-port>]
指定使用的源端口范圍,覆蓋默認(rèn)的SNAT源地址選擇(見上面)。這個(gè)選項(xiàng)只適用于指定了-p tcp或者-p udp的規(guī)則。
REDIRECT
只適用于nat表的PREROUTING和OUTPUT鏈,和只調(diào)用它們的用戶自定義鏈。它修改包的目標(biāo)IP地址來發(fā)送包到機(jī)器自身(本地生成的包被安置為地址127.0.0.1)。它包含一個(gè)選項(xiàng):
--to-ports [ ]
指定使用的目的端口或端口范圍:不指定的話,目標(biāo)端口不會被修改。只能用于指定了-p tcp 或 -p udp的規(guī)則。
DIAGNOSTICS
診斷
不同的錯(cuò)誤信息會打印成標(biāo)準(zhǔn)錯(cuò)誤:退出代碼0表示正確。類似于不對的或者濫用的命令行參數(shù)錯(cuò)誤會返回錯(cuò)誤代碼2,其他錯(cuò)誤返回代碼為1。
BUGS
臭蟲
Check is not implemented (yet).
檢查還未完成。
COMPATIBILITY WITH IPCHAINS
與ipchains的兼容性
iptables和Rusty Russell的ipchains非常相似。主要區(qū)別是INPUT 鏈只用于進(jìn)入本地主機(jī)的包,而OUTPUT只用于自本地主機(jī)生成的包。因此每個(gè)包只經(jīng)過三個(gè)鏈的一個(gè);以前轉(zhuǎn)發(fā)的包會經(jīng)過所有三個(gè)鏈。其他主要區(qū)別是 -i 引用進(jìn)入接口;-o引用輸出接口,兩者都適用于進(jìn)入FORWARD鏈的包。當(dāng)和可選擴(kuò)展模塊一起使用默認(rèn)過濾器表時(shí),iptables是一個(gè)純粹的包過濾器。這能大大減少以前對IP偽裝和包過濾結(jié)合使用的混淆,所以以下選項(xiàng)作了不同的處理:
-j MASQ
-M -S
-M -L
在iptables中有幾個(gè)不同的鏈。