电竞比分网-中国电竞赛事及体育赛事平台

分享

iptables(7):iptables擴(kuò)展之udp擴(kuò)展與icmp擴(kuò)展

 nethelper 2019-08-06

在本博客中,從理論到實(shí)踐,系統(tǒng)的介紹了iptables,如果你想要從頭開(kāi)始了解iptables,可以查看iptables文章列表,直達(dá)鏈接如下

iptables零基礎(chǔ)快速入門(mén)系列

前文中總結(jié)了iptables的tcp擴(kuò)展模塊,此處,我們來(lái)總結(jié)一下另外兩個(gè)跟協(xié)議有關(guān)的常用的擴(kuò)展模塊,udp擴(kuò)展與icmp擴(kuò)展。

udp擴(kuò)展

我們先來(lái)說(shuō)說(shuō)udp擴(kuò)展模塊,這個(gè)擴(kuò)展模塊中能用的匹配條件比較少,只有兩個(gè),就是--sport與--dport,即匹配報(bào)文的源端口與目標(biāo)端口。

沒(méi)錯(cuò),tcp模塊中也有這兩個(gè)選項(xiàng),名稱(chēng)都一模一樣。

只不過(guò)udp擴(kuò)展模塊的--sport與--dport是用于匹配UDP協(xié)議報(bào)文的源端口與目標(biāo)端口,比如,放行samba服務(wù)的137與138這兩個(gè)UDP端口,示例如下

iptables詳解(7):iptables擴(kuò)展之udp擴(kuò)展與icmp擴(kuò)展

前文說(shuō)明過(guò),當(dāng)使用擴(kuò)展匹配條件時(shí),如果未指定擴(kuò)展模塊,iptables會(huì)默認(rèn)調(diào)用與"-p"對(duì)應(yīng)的協(xié)議名稱(chēng)相同的模塊,所以,當(dāng)使用"-p udp"時(shí),可以省略"-m udp",示例如下。

iptables詳解(7):iptables擴(kuò)展之udp擴(kuò)展與icmp擴(kuò)展

udp擴(kuò)展中的--sport與--dport同樣支持指定一個(gè)連續(xù)的端口范圍,示例如下

iptables詳解(7):iptables擴(kuò)展之udp擴(kuò)展與icmp擴(kuò)展

上圖中的配置表示137到157之間的所有udp端口全部對(duì)外開(kāi)放,其實(shí)與tcp擴(kuò)展中的使用方法相同。

但是udp中的--sport與--dport也只能指定連續(xù)的端口范圍,并不能一次性指定多個(gè)離散的端口,沒(méi)錯(cuò),聰明如你一定想到,使用之前總結(jié)過(guò)的multiport擴(kuò)展模塊,即可指定多個(gè)離散的UDP端口,如果你忘了multiport模塊怎樣使用,請(qǐng)回顧前文。

總之有了前文的基礎(chǔ),再理解上述示例就容易多了,此處不再對(duì)udp模塊的--sport與--dport進(jìn)行贅述。

icmp擴(kuò)展

最常用的tcp擴(kuò)展、udp擴(kuò)展已經(jīng)總結(jié)完畢,現(xiàn)在聊聊icmp擴(kuò)展,沒(méi)錯(cuò),看到icmp,你肯定就想到了ping命令,因?yàn)閜ing命令使用的就是icmp協(xié)議。

ICMP協(xié)議的全稱(chēng)為Internet Control Message Protocol,翻譯為互聯(lián)網(wǎng)控制報(bào)文協(xié)議,它主要用于探測(cè)網(wǎng)絡(luò)上的主機(jī)是否可用,目標(biāo)是否可達(dá),網(wǎng)絡(luò)是否通暢,路由是否可用等。

我們平常使用ping命令ping某主機(jī)時(shí),如果主機(jī)可達(dá),對(duì)應(yīng)主機(jī)會(huì)對(duì)我們的ping請(qǐng)求做出回應(yīng)(此處不考慮禁ping等情況),也就是說(shuō),我們發(fā)出ping請(qǐng)求,對(duì)方回應(yīng)ping請(qǐng)求,雖然ping請(qǐng)求報(bào)文與ping回應(yīng)報(bào)文都屬于ICMP類(lèi)型的報(bào)文,但是如果在概念上細(xì)分的話,它們所屬的類(lèi)型還是不同的,我們發(fā)出的ping請(qǐng)求屬于類(lèi)型8的icmp報(bào)文,而對(duì)方主機(jī)的ping回應(yīng)報(bào)文則屬于類(lèi)型0的icmp報(bào)文,根據(jù)應(yīng)用場(chǎng)景的不同,icmp報(bào)文被細(xì)分為如下各種類(lèi)型。

iptables詳解(7):iptables擴(kuò)展之udp擴(kuò)展與icmp擴(kuò)展

從上圖可以看出,所有表示"目標(biāo)不可達(dá)"的icmp報(bào)文的type碼為3,而"目標(biāo)不可達(dá)"又可以細(xì)分為多種情況,是網(wǎng)絡(luò)不可達(dá)呢?還是主機(jī)不可達(dá)呢?再或者是端口不可達(dá)呢?所以,為了更加細(xì)化的區(qū)分它們,icmp對(duì)每種type又細(xì)分了對(duì)應(yīng)的code,用不同的code對(duì)應(yīng)具體的場(chǎng)景,  所以,我們可以使用type/code去匹配具體類(lèi)型的ICMP報(bào)文,比如可以使用"3/1"表示主機(jī)不可達(dá)的icmp報(bào)文。

上圖中的第一行就表示ping回應(yīng)報(bào)文,它的type為0,code也為0,從上圖可以看出,ping回應(yīng)報(bào)文屬于查詢類(lèi)(query)的ICMP報(bào)文,從大類(lèi)上分,ICMP報(bào)文還能分為查詢類(lèi)與錯(cuò)誤類(lèi)兩大類(lèi),目標(biāo)不可達(dá)類(lèi)的icmp報(bào)文則屬于錯(cuò)誤類(lèi)報(bào)文。

而我們發(fā)出的ping請(qǐng)求報(bào)文對(duì)應(yīng)的type為8,code為0。

了解完上述概念,就好辦了,我們來(lái)看一些應(yīng)用場(chǎng)景。

假設(shè),我們現(xiàn)在想要禁止所有icmp類(lèi)型的報(bào)文進(jìn)入本機(jī),那么我們可以進(jìn)行如下設(shè)置。

iptables詳解(7):iptables擴(kuò)展之udp擴(kuò)展與icmp擴(kuò)展

上例中,我們并沒(méi)有使用任何擴(kuò)展匹配條件,我們只是使用"-p icmp"匹配了所有icmp協(xié)議類(lèi)型的報(bào)文。

如果進(jìn)行了上述設(shè)置,別的主機(jī)向我們發(fā)送的ping請(qǐng)求報(bào)文無(wú)法進(jìn)入防火墻,我們向別人發(fā)送的ping請(qǐng)求對(duì)應(yīng)的回應(yīng)報(bào)文也無(wú)法進(jìn)入防火墻。所以,我們既無(wú)法ping通別人,別人也無(wú)法ping通我們。

假設(shè),此刻需求有變,我們只想要ping通別人,但是不想讓別人ping通我們,剛才的配置就不能滿足我們了,我們則可以進(jìn)行如下設(shè)置(此處不考慮禁ping的情況)

iptables詳解(7):iptables擴(kuò)展之udp擴(kuò)展與icmp擴(kuò)展

上圖中,使用"-m icmp"表示使用icmp擴(kuò)展,因?yàn)樯侠惺褂昧?quot;-p icmp",所以"-m icmp"可以省略,使用"--icmp-type"選項(xiàng)表示根據(jù)具體的type與code去匹配對(duì)應(yīng)的icmp報(bào)文,而上圖中的"--icmp-type 8/0"表示icmp報(bào)文的type為8,code為0才會(huì)被匹配到,也就是只有ping請(qǐng)求類(lèi)型的報(bào)文才能被匹配到,所以,別人對(duì)我們發(fā)起的ping請(qǐng)求將會(huì)被拒絕通過(guò)防火墻,而我們之所以能夠ping通別人,是因?yàn)閯e人回應(yīng)我們的報(bào)文的icmp type為0,code也為0,所以無(wú)法被上述規(guī)則匹配到,所以我們可以看到別人回應(yīng)我們的信息。

因?yàn)閠ype為8的類(lèi)型下只有一個(gè)code為0的類(lèi)型,所以我們可以省略對(duì)應(yīng)的code,示例如下

iptables詳解(7):iptables擴(kuò)展之udp擴(kuò)展與icmp擴(kuò)展

除了能夠使用對(duì)應(yīng)type/code匹配到具體類(lèi)型的icmp報(bào)文以外,我們還能用icmp報(bào)文的描述名稱(chēng)去匹配對(duì)應(yīng)類(lèi)型的報(bào)文,示例如下

iptables詳解(7):iptables擴(kuò)展之udp擴(kuò)展與icmp擴(kuò)展

沒(méi)錯(cuò),上例中使用的 --icmp-type "echo-request"與 --icmp-type 8/0的效果完全相同,參考本文最上方的表格即可獲取對(duì)應(yīng)的icmp類(lèi)型的描述名稱(chēng)。

iptables詳解(7):iptables擴(kuò)展之udp擴(kuò)展與icmp擴(kuò)展

注意:名稱(chēng)中的"空格"需要替換為"-"。

小結(jié)

udp擴(kuò)展

常用的擴(kuò)展匹配條件

--sport:匹配udp報(bào)文的源地址

--dport:匹配udp報(bào)文的目標(biāo)地址

Shell
1
2
3
4
#示例
iptables -t filter -I INPUT -p udp -m udp --dport 137 -j ACCEPT
iptables -t filter -I INPUT -p udp -m udp --dport 137:157 -j ACCEPT
#可以結(jié)合multiport模塊指定多個(gè)離散的端口

icmp擴(kuò)展

常用的擴(kuò)展匹配條件

--icmp-type:匹配icmp報(bào)文的具體類(lèi)型

Shell
1
2
3
4
5
6
#示例
iptables -t filter -I INPUT -p icmp -m icmp --icmp-type 8/0 -j REJECT
iptables -t filter -I INPUT -p icmp --icmp-type 8 -j REJECT
iptables -t filter -I OUTPUT -p icmp -m icmp --icmp-type 0/0 -j REJECT
iptables -t filter -I OUTPUT -p icmp --icmp-type 0 -j REJECT
iptables -t filter -I INPUT -p icmp --icmp-type "echo-request" -j REJECT

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多