溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

linux系統(tǒng)中怎么設(shè)置iptables規(guī)則

發(fā)布時(shí)間:2021-07-23 14:33:53 來源:億速云 閱讀:121 作者:Leah 欄目:建站服務(wù)器

這篇文章將為大家詳細(xì)講解有關(guān)linux系統(tǒng)中怎么設(shè)置iptables規(guī)則,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。

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ī)則中可能會(huì)出現(xiàn)anywhere,有了-n,它會(huì)變成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í)候要?jiǎng)h除的規(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!(不然會(huì)導(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ī)則,就是限制到某臺(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(通過)的鏈,對正在轉(zhuǎn)發(fā)鏈的監(jiān)控.

開啟轉(zhuǎn)發(fā)功能,(在做NAT時(shí),FORWARD默認(rèn)規(guī)則是DROP時(shí),必須做)

[root@tp ~]# iptables -A FORWARD -i eth0 -o eth2 -m state --state RELATED,ESTABLISHED -j ACCEPT

[root@tp ~]# iptables -A FORWARD -i eth2 -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í)候要?jiǎng)h除的規(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í)是否啟動(dòng)了防火墻,如果你想配置屬于自己的防火墻,那就清除現(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)核被配置為自動(dòng)加載模塊,這時(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í)行明確的動(dòng)作:若指令行下沒有其他規(guī)定,該行只能指定一個(gè)選項(xiàng).對于長格式的命令和選項(xiàng)名,所用字母長度只要保證iptables能從其他選項(xiàng)中區(qū)分出該指令就行了。

-A -append

在所選擇的鏈末添加一條或更多規(guī)則。當(dāng)源(地址)或者/與 目的(地址)轉(zhuǎn)換為多個(gè)地址時(shí),這條規(guī)則會(huì)加到所有可能的地址(組合)后面。

-D -delete

從所選鏈中刪除一條或更多規(guī)則。這條命令可以有兩種方法:可以把被刪除規(guī)則指定為鏈中的序號(第一條序號為1),或者指定為要匹配的規(guī)則。

-R -replace

從選中的鏈中取代一條規(guī)則。如果源(地址)或者/與 目的(地址)被轉(zhuǎn)換為多地址,該命令會(huì)失敗。規(guī)則序號從1開始。

-I -insert

根據(jù)給出的規(guī)則序號向所選鏈中插入一條或更多規(guī)則。所以,如果規(guī)則序號為1,規(guī)則會(huì)被插入鏈的頭部。這也是不指定規(guī)則序號時(shí)的默認(rèn)方式。

-L -list

顯示所選鏈的所有規(guī)則。如果沒有選擇鏈,所有鏈將被顯示。也可以和z選項(xiàng)一起使用,這時(shí)鏈會(huì)被自動(dòng)列出和歸零。精確輸出受其它所給參數(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會(huì)匹配所有協(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è)會(huì)立即決定包的命運(yùn)的專用內(nèi)建目標(biāo),或者一個(gè)擴(kuò)展(參見下面的EXTENSIONS)。如果規(guī)則的這個(gè)選項(xiàng)被忽略,那么匹配的過程不會(huì)對包產(chǎn)生影響,不過規(guī)則的計(jì)數(shù)器會(huì)增加。

-i -in-interface [!] [name]

i -進(jìn)入的(網(wǎng)絡(luò))接口 [!][名稱]

這是包經(jīng)由該接口接收的可選的入口名稱,包通過該接口接收(在鏈INPUT、FORWORD和PREROUTING中進(jìn)入的包)。當(dāng)在接口名前使用"!"說明后,指的是相反的名稱。如果接口名后面加上"+",則所有以此接口名開頭的接口都會(huì)被匹配。如果這個(gè)選項(xiàng)被忽略,會(huì)假設(shè)為"+",那么將匹配任意接口。

-o --out-interface [!][name]

-o --輸出接口[名稱]

這是包經(jīng)由該接口送出的可選的出口名稱,包通過該口輸出(在鏈FORWARD、OUTPUT和POSTROUTING中送出的包)。當(dāng)在接口名前使用"!"說明后,指的是相反的名稱。如果接口名后面加上"+",則所有以此接口名開頭的接口都會(huì)被匹配。如果這個(gè)選項(xiàng)被忽略,會(huì)假設(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)志改變它),對于添加,插入,刪除和替換命令,這會(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ī)則的前面加上行號,與該規(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è),那么它們會(huì)被交換。這個(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í)會(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]]

源端口或端口范圍指定。詳見 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,在比較之前會(huì)給掩碼加上邏輯的標(biāo)記)。

owner

此模塊試為本地生成包匹配包創(chuàng)建者的不同特征。只能用于OUTPUT鏈,而且即使這樣一些包(如ICMP ping應(yīng)答)還可能沒有所有者,因此永遠(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í),允許訪問包的連接跟蹤狀態(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)核會(huì)通過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,該類型會(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

用來設(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ī)定修改包的源地址(此連接以后所有的包都會(huì)被影響),停止對規(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(撥號)連接:如果你擁有靜態(tài)IP地址,你要用SNAT。偽裝相當(dāng)于給包發(fā)出時(shí)所經(jīng)過接口的IP地址設(shè)置一個(gè)映像,當(dāng)接口關(guān)閉連接會(huì)終止。這是因?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)端口不會(huì)被修改。只能用于指定了-p tcp 或 -p udp的規(guī)則。

DIAGNOSTICS

診斷

不同的錯(cuò)誤信息會(huì)打印成標(biāo)準(zhǔn)錯(cuò)誤:退出代碼0表示正確。類似于不對的或者濫用的命令行參數(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)過三個(gè)鏈的一個(gè);以前轉(zhuǎn)發(fā)的包會(huì)經(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

關(guān)于linux系統(tǒng)中怎么設(shè)置iptables規(guī)則就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI