1、iptables -L
查看filter表的iptables規(guī)則,包括所有的鏈。filter表包含INPUT、OUTPUT、FORWARD三個(gè)規(guī)則鏈。 說(shuō)明:-L是--list的簡(jiǎn)寫,作用是列出規(guī)則。
2、iptables -L [-t 表名]
只查看某個(gè)表的中的規(guī)則。
說(shuō)明:表名一共有三個(gè):filter,nat,mangle,如果沒(méi)有指定表名,則默認(rèn)查看filter表的規(guī)則列表(就相當(dāng)于第一條命令)。 舉例:iptables -L -t filter
3、iptables -L [-t 表名] [鏈名]
這里多了個(gè)鏈名,就是規(guī)則鏈的名稱。
說(shuō)明:iptables一共有INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING五個(gè)規(guī)則鏈。
舉例:iptables -L INPUT
注意:鏈名必須大寫。在Linux系統(tǒng)上,命令的大小寫很敏感。
4、iptables -n -L
說(shuō)明:以數(shù)字形式顯示規(guī)則。如果沒(méi)有-n,規(guī)則中可能會(huì)出現(xiàn)anywhere,有了-n,它會(huì)變成0.0.0.0/0
5、iptables -nv -L
說(shuō)明:你也可以使用“iptables -L -nv”來(lái)查看,這個(gè)列表看起來(lái)更詳細(xì),對(duì)技術(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í)候要?jiǎng)h除的規(guī)則太長(zhǎng),刪除時(shí)要寫一大串,既浪費(fèi)時(shí)間又容易寫錯(cuò),這時(shí)我們可以 先使用–line-number找出該條規(guī)則的行號(hào),再通過(guò)行號(hào)刪除規(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)致,始終無(wú)法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包通過(guò),也就是允許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!(不然會(huì)導(dǎo)致DNS無(wú)法正常關(guān)閉等問(wè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ī)則,就是限制到某臺(tái)機(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(通過(guò))的鏈,對(duì)正在轉(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包過(guò)濾,允許每秒1個(gè)包,限制觸發(fā)條件是10個(gè)包. [root@tp ~]#iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT 我在前面只所以允許ICMP包通過(guò),就是因?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í)候要?jiǎng)h除的規(guī)則太長(zhǎng),刪除時(shí)要寫一大串,既浪費(fèi)時(shí)間又容易寫錯(cuò),這時(shí)我們可以先使用–line-number找出該條規(guī)則的行號(hào),再通過(guò)行號(hào)刪除規(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í)是否啟動(dòng)了防火墻,如果你想配置屬于自己的防火墻,那就清除現(xiàn)在filter的所有規(guī)則. [root@tp ~]# iptables -F 清除預(yù)設(shè)表filter中的所有規(guī)則鏈的規(guī)則
[root@tp ~]# iptables -X 清除預(yù)設(shè)表filter中使用者自定鏈中的規(guī)則
我們?cè)趤?lái)看一下 [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配置表里什么配置都沒(méi)有了,那我們開始我們的配置吧
(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)該說(shuō)這樣配置是很安全的.我們要控制流入數(shù)據(jù)包
而對(duì)于OUTPUT鏈,也就是流出的包我們不用做太多限制,而是采取ACCEPT,也就是說(shuō),不在著個(gè)規(guī)則里的包怎么辦呢,那就是通過(guò).
可以看出INPUT,FORWARD兩個(gè)鏈采用的是允許什么包通過(guò),而OUTPUT鏈采用的是不允許什么包通過(guò).
修改使用-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 舊的鏈名 新的鏈名
用新的鏈名取代舊的鏈名
說(shuō)明
Iptalbes 是用來(lái)設(shè)置、維護(hù)和檢查L(zhǎng)inux內(nèi)核的IP包過(guò)濾規(guī)則的。
可以定義不同的表,每個(gè)表都包含幾個(gè)內(nèi)部的鏈,也能包含用戶定義的鏈。每個(gè)鏈都是一個(gè)規(guī)則列表,對(duì)對(duì)應(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[通過(guò)], DROP[刪除], QUEUE[排隊(duì)], 或者 RETURN[返回]。 ACCEPT 表示讓這個(gè)包通過(guò)。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)核被配置為自動(dòng)加載模塊,這時(shí)若模塊沒(méi)有加載,(系統(tǒng))將嘗試(為該表)加載適合的模塊。這些表如下:
filter,這是默認(rèn)的表,包含了內(nèi)建的鏈INPUT(處理進(jìn)入的包)、FORWORD(處理通過(guò)的包)和OUTPUT(處理本地生成的包)。
nat,這個(gè)表被查詢時(shí)表示遇到了產(chǎn)生新的連接的包,由三個(gè)內(nèi)建的鏈構(gòu)成:PREROUTING (修改到來(lái)的包)、OUTPUT(修改路由之前本地的包)、POSTROUTING(修改準(zhǔn)備出去的包)。
mangle 這個(gè)表用來(lái)對(duì)指定的包進(jìn)行修改。它有兩個(gè)內(nèi)建規(guī)則:PREROUTING(修改路由之前進(jìn)入的包)和OUTPUT(修改路由之前本地的包)。
OPTIONS
這些可被iptables識(shí)別的選項(xiàng)可以區(qū)分不同的種類。
COMMANDS
這些選項(xiàng)指定執(zhí)行明確的動(dòng)作:若指令行下沒(méi)有其他規(guī)定,該行只能指定一個(gè)選項(xiàng).對(duì)于長(zhǎng)格式的命令和選項(xiàng)名,所用字母長(zhǎng)度只要保證iptables能從其他選項(xiàng)中區(qū)分出該指令就行了。 -A -append 在所選擇的鏈末添加一條或更多規(guī)則。當(dāng)源(地址)或者/與 目的(地址)轉(zhuǎn)換為多個(gè)地址時(shí),這條規(guī)則會(huì)加到所有可能的地址(組合)后面。 -D -delete 從所選鏈中刪除一條或更多規(guī)則。這條命令可以有兩種方法:可以把被刪除規(guī)則指定為鏈中的序號(hào)(第一條序號(hào)為1),或者指定為要匹配的規(guī)則。 -R -replace 從選中的鏈中取代一條規(guī)則。如果源(地址)或者/與 目的(地址)被轉(zhuǎn)換為多地址,該命令會(huì)失敗。規(guī)則序號(hào)從1開始。 -I -insert 根據(jù)給出的規(guī)則序號(hào)向所選鏈中插入一條或更多規(guī)則。所以,如果規(guī)則序號(hào)為1,規(guī)則會(huì)被插入鏈的頭部。這也是不指定規(guī)則序號(hào)時(shí)的默認(rèn)方式。 -L -list 顯示所選鏈的所有規(guī)則。如果沒(méi)有選擇鏈,所有鏈將被顯示。也可以和z選項(xiàng)一起使用,這時(shí)鏈會(huì)被自動(dòng)列出和歸零。精確輸出受其它所給參數(shù)影響。 -F -flush 清空所選鏈。這等于把所有規(guī)則一個(gè)個(gè)的刪除。 --Z -zero 把所有鏈的包及字節(jié)的計(jì)數(shù)器清空。它可以和 -L配合使用,在清空前察看計(jì)數(shù)器,請(qǐng)參見(jiàn)前文。 -N -new-chain 根據(jù)給出的名稱建立一個(gè)新的用戶定義鏈。這必須保證沒(méi)有同名的鏈存在。 -X -delete-chain 刪除指定的用戶自定義鏈。這個(gè)鏈必須沒(méi)有被引用,如果被引用,在刪除之前你必須刪除或者替換與之有關(guān)的規(guī)則。如果沒(méi)有給出參數(shù),這條命令將試著刪除每個(gè)非內(nèi)建的鏈。
-P -policy 設(shè)置鏈的目標(biāo)規(guī)則。 -E -rename-chain 根據(jù)用戶給出的名字對(duì)指定鏈進(jìn)行重命名,這僅僅是修飾,對(duì)整個(gè)表的結(jié)構(gòu)沒(méi)有影響。TARGETS參數(shù)給出一個(gè)合法的目標(biāo)。只有非用戶自定義鏈可以使用規(guī)則,而且內(nèi)建鏈和用戶自定義鏈都不能是規(guī)則的目標(biāo)。 -h Help. 幫助。給出當(dāng)前命令語(yǔ)法非常簡(jiǎn)短的說(shuō)明。 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會(huì)匹配所有協(xié)議,而且這是缺省時(shí)的選項(xiàng)。在和check命令結(jié)合時(shí),all可以不被使用。 -s -source [!] address[/mask] 指定源地址,可以是主機(jī)名、網(wǎng)絡(luò)名和清楚的IP地址。mask說(shuō)明可以是網(wǎng)絡(luò)掩碼或清楚的數(shù)字,在網(wǎng)絡(luò)掩碼的左邊指定網(wǎng)絡(luò)掩碼左邊"1"的個(gè)數(shù),因此,mask值為24等于255.255.255.0。在指定地址前加上"!"說(shuō)明指定了相反的地址段。標(biāo)志 --src 是這個(gè)選項(xiàng)的簡(jiǎn)寫。 -d --destination [!] address[/mask] 指定目標(biāo)地址,要獲取詳細(xì)說(shuō)明請(qǐng)參見(jiàn) -s標(biāo)志的說(shuō)明。標(biāo)志 --dst 是這個(gè)選項(xiàng)的簡(jiǎn)寫。 -j --jump target -j 目標(biāo)跳轉(zhuǎn) 指定規(guī)則的目標(biāo);也就是說(shuō),如果包匹配應(yīng)當(dāng)做什么。目標(biāo)可以是用戶自定義鏈(不是這條規(guī)則所在的),某個(gè)會(huì)立即決定包的命運(yùn)的專用內(nèi)建目標(biāo),或者一個(gè)擴(kuò)展(參見(jiàn)下面的EXTENSIONS)。如果規(guī)則的這個(gè)選項(xiàng)被忽略,那么匹配的過(guò)程不會(huì)對(duì)包產(chǎn)生影響,不過(guò)規(guī)則的計(jì)數(shù)器會(huì)增加。 -i -in-interface [!] [name] i -進(jìn)入的(網(wǎng)絡(luò))接口 [!][名稱] 這是包經(jīng)由該接口接收的可選的入口名稱,包通過(guò)該接口接收(在鏈INPUT、FORWORD和PREROUTING中進(jìn)入的包)。當(dāng)在接口名前使用"!"說(shuō)明后,指的是相反的名稱。如果接口名后面加上"+",則所有以此接口名開頭的接口都會(huì)被匹配。如果這個(gè)選項(xiàng)被忽略,會(huì)假設(shè)為"+",那么將匹配任意接口。 -o --out-interface [!][name] -o --輸出接口[名稱] 這是包經(jīng)由該接口送出的可選的出口名稱,包通過(guò)該口輸出(在鏈FORWARD、OUTPUT和POSTROUTING中送出的包)。當(dāng)在接口名前使用"!"說(shuō)明后,指的是相反的名稱。如果接口名后面加上"+",則所有以此接口名開頭的接口都會(huì)被匹配。如果這個(gè)選項(xiàng)被忽略,會(huì)假設(shè)為"+",那么將匹配所有任意接口。 [!] -f, --fragment [!] -f --分片 這意味著在分片的包中,規(guī)則只詢問(wèn)第二及以后的片。自那以后由于無(wú)法判斷這種把包的源端口或目標(biāo)端口(或者是ICMP類型的),這類包將不能匹配任何指定對(duì)他們進(jìn)行匹配的規(guī)則。如果"!"說(shuō)明用在了"-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倍(不過(guò)請(qǐng)參看-x標(biāo)志改變它),對(duì)于添加,插入,刪除和替換命令,這會(huì)使一個(gè)或多個(gè)規(guī)則的相關(guān)詳細(xì)信息被打印。 -n --numeric -n --數(shù)字 數(shù)字輸出。IP地址和端口會(huì)以數(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ī)則的前面加上行號(hào),與該規(guī)則在鏈中的位置相對(duì)應(yīng)。 MATCH EXTENSIONS 對(duì)應(yīng)的擴(kuò)展 iptables能夠使用一些與模塊匹配的擴(kuò)展包。以下就是含于基本包內(nèi)的擴(kuò)展包,而且他們大多數(shù)都可以通過(guò)在前面加上!來(lái)表示相反的意思。 tcp 當(dāng) --protocol tcp 被指定,且其他匹配的擴(kuò)展未被指定時(shí),這些擴(kuò)展被裝載。它提供以下選項(xiàng): --source-port [!] [port[:port]] 源端口或端口范圍指定。這可以是服務(wù)名或端口號(hào)。使用格式端口:端口也可以指定包含的(端口)范圍。如果首端口號(hào)被忽略,默認(rèn)是"0",如果末端口號(hào)被忽略,默認(rèn)是"65535",如果第二個(gè)端口號(hào)大于第一個(gè),那么它們會(huì)被交換。這個(gè)選項(xiàng)可以使用 --sport的別名。 --destionation-port [!] [port:[port]] 目標(biāo)端口或端口范圍指定。這個(gè)選項(xiàng)可以使用 --dport別名來(lái)代替。 --tcp-flags [!] mask comp 匹配指定的TCP標(biāo)記。第一個(gè)參數(shù)是我們要檢查的標(biāo)記,一個(gè)用逗號(hào)分開的列表,第二個(gè)參數(shù)是用逗號(hào)分開的標(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)記沒(méi)有設(shè)置的包。 [!] --syn 只匹配那些設(shè)置了SYN位而清除了ACK和FIN位的TCP包。這些包用于TCP連接初始化時(shí)發(fā)出請(qǐng)求;例如,大量的這種包進(jìn)入一個(gè)接口發(fā)生堵塞時(shí)會(huì)阻止進(jìn)入的TCP連接,而出去的TCP連接不會(huì)受到影響。這等于 --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]] 源端口或端口范圍指定。詳見(jiàn) TCP擴(kuò)展的--source-port選項(xiàng)說(shuō)明。 --destination-port [!] [port:[port]] 目標(biāo)端口或端口范圍指定。詳見(jiàn) TCP擴(kuò)展的--destination-port選項(xiàng)說(shuō)明。 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這樣的格式。注意它只對(duì)來(lái)自以太設(shè)備并進(jìn)入PREROUTING、FORWORD和INPUT鏈的包有效。 limit 這個(gè)模塊匹配標(biāo)志用一個(gè)標(biāo)記桶過(guò)濾器一一定速度進(jìn)行匹配,它和LOG目標(biāo)結(jié)合使用來(lái)給出有限的登陸數(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ù)的最大值:若前面指定的極限還沒(méi)達(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過(guò)濾器標(biāo)記字段匹配(就可以在下面設(shè)置為使用MARK標(biāo)記)。 --mark value [/mask] 匹配那些無(wú)符號(hào)標(biāo)記值的包(如果指定mask,在比較之前會(huì)給掩碼加上邏輯的標(biāo)記)。 owner 此模塊試為本地生成包匹配包創(chuàng)建者的不同特征。只能用于OUTPUT鏈,而且即使這樣一些包(如ICMP ping應(yīng)答)還可能沒(méi)有所有者,因此永遠(yuǎn)不會(huì)匹配。 --uid-owner userid 如果給出有效的user id,那么匹配它的進(jìn)程產(chǎn)生的包。 --gid-owner groupid 如果給出有效的group id,那么匹配它的進(jìn)程產(chǎn)生的包。 --sid-owner seessionid 根據(jù)給出的會(huì)話組匹配該進(jìn)程產(chǎn)生的包。 state 此模塊,當(dāng)與連接跟蹤結(jié)合使用時(shí),允許訪問(wèn)包的連接跟蹤狀態(tài)。 --state state 這里state是一個(gè)逗號(hào)分割的匹配連接狀態(tài)列表??赡艿臓顟B(tài)是:INVALID表示包是未知連接,ESTABLISHED表示是雙向傳送的連接,NEW表示包為新的連接,否則是非雙向傳送的,而RELATED表示包由新連接開始,但是和一個(gè)已存在的連接在一起,如FTP數(shù)據(jù)傳送,或者一個(gè)ICMP錯(cuò)誤。 unclean 此模塊沒(méi)有可選項(xiàng),不過(guò)它試著匹配那些奇怪的、不常見(jiàn)的包。處在實(shí)驗(yàn)中。 tos 此模塊匹配IP包首部的8位tos(服務(wù)類型)字段(也就是說(shuō),包含在優(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)核會(huì)通過(guò)printk()打印一些關(guān)于全部匹配包的信息(諸如IP包頭字段等)。 --log-level level 記錄級(jí)別(數(shù)字或參看 syslog.conf(5))。 --log-prefix prefix 在紀(jì)錄信息前加上特定的前綴:最多14個(gè)字母長(zhǎng),用來(lái)和記錄中其他信息區(qū)別。 --log-tcp-sequence 記錄TCP序列號(hào)。如果記錄能被用戶讀取那么這將存在安全隱患。 --log-tcp-options 記錄來(lái)自TCP包頭部的選項(xiàng)。 --log-ip-options 記錄來(lái)自IP包頭部的選項(xiàng)。 MARK 用來(lái)設(shè)置包的netfilter標(biāo)記值。只適用于mangle表。 --set-mark mark REJECT 作為對(duì)匹配的包的響應(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,該類型會(huì)返回相應(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 用來(lái)設(shè)置IP包的首部八位tos。只能用于mangle表。 --set-tos tos 你可以使用一個(gè)數(shù)值型的TOS 值,或者用iptables -j TOS -h 來(lái)查看有效TOS名列表。 MIRROR 這是一個(gè)試驗(yàn)示范目標(biāo),可用于轉(zhuǎn)換IP首部字段中的源地址和目標(biāo)地址,再傳送該包,并只適用于INPUT、FORWARD和OUTPUT鏈,以及只調(diào)用它們的用戶自定義鏈。 SNAT 這個(gè)目標(biāo)只適用于nat表的POSTROUTING鏈。它規(guī)定修改包的源地址(此連接以后所有的包都會(huì)被影響),停止對(duì)規(guī)則的檢查,它包含選項(xiàng): --to-source [-][:port-port] 可以指定一個(gè)單一的新的IP地址,一個(gè)IP地址范圍,也可以附加一個(gè)端口范圍(只能在指定-p tcp 或者-p udp的規(guī)則里)。如果未指定端口范圍,源端口中512以下的(端口)會(huì)被安置為其他的512以下的端口;512到1024之間的端口會(huì)被安置為1024以下的,其他端口會(huì)被安置為1024或以上。如果可能,端口不會(huì)被修改。 --to-destiontion [-][:port-port] 可以指定一個(gè)單一的新的IP地址,一個(gè)IP地址范圍,也可以附加一個(gè)端口范圍(只能在指定-p tcp 或者-p udp的規(guī)則里)。如果未指定端口范圍,目標(biāo)端口不會(huì)被修改。 MASQUERADE 只用于nat表的POSTROUTING鏈。只能用于動(dòng)態(tài)獲取IP(撥號(hào))連接:如果你擁有靜態(tài)IP地址,你要用SNAT。偽裝相當(dāng)于給包發(fā)出時(shí)所經(jīng)過(guò)接口的IP地址設(shè)置一個(gè)映像,當(dāng)接口關(guān)閉連接會(huì)終止。這是因?yàn)楫?dāng)下一次撥號(hào)時(shí)未必是相同的接口地址(以后所有建立的連接都將關(guān)閉)。它有一個(gè)選項(xiàng): --to-ports [-port>] 指定使用的源端口范圍,覆蓋默認(rèn)的SNAT源地址選擇(見(jiàn)上面)。這個(gè)選項(xiàng)只適用于指定了-p tcp或者-p udp的規(guī)則。 REDIRECT 只適用于nat表的PREROUTING和OUTPUT鏈,和只調(diào)用它們的用戶自定義鏈。它修改包的目標(biāo)IP地址來(lái)發(fā)送包到機(jī)器自身(本地生成的包被安置為地址127.0.0.1)。它包含一個(gè)選項(xiàng): --to-ports [ ] 指定使用的目的端口或端口范圍:不指定的話,目標(biāo)端口不會(huì)被修改。只能用于指定了-p tcp 或 -p udp的規(guī)則。 DIAGNOSTICS 診斷 不同的錯(cuò)誤信息會(huì)打印成標(biāo)準(zhǔn)錯(cuò)誤:退出代碼0表示正確。類似于不對(duì)的或者濫用的命令行參數(shù)錯(cuò)誤會(huì)返回錯(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)過(guò)三個(gè)鏈的一個(gè);以前轉(zhuǎn)發(fā)的包會(huì)經(jīng)過(guò)所有三個(gè)鏈。其他主要區(qū)別是 -i 引用進(jìn)入接口;-o引用輸出接口,兩者都適用于進(jìn)入FORWARD鏈的包。當(dāng)和可選擴(kuò)展模塊一起使用默認(rèn)過(guò)濾器表時(shí),iptables是一個(gè)純粹的包過(guò)濾器。這能大大減少以前對(duì)IP偽裝和包過(guò)濾結(jié)合使用的混淆,所以以下選項(xiàng)作了不同的處理: -j MASQ -M -S -M -L 在iptables中有幾個(gè)不同的鏈。 |
|