(6)iptables詳解:iptables擴(kuò)展匹配條件之–tcp-flags_第1頁(yè)
(6)iptables詳解:iptables擴(kuò)展匹配條件之–tcp-flags_第2頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余3頁(yè)可下載查看

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

iptables詳解(6):iptables擴(kuò)展匹配條件之'-tcp-flags'如果你看過(guò)前文,那么你一定知道,前文已經(jīng)對(duì)〃tcp擴(kuò)展模塊〃做過(guò)總結(jié),但是只總結(jié)了tcp擴(kuò)展模塊中的"一sport"與"一dport"選項(xiàng),并沒(méi)有總結(jié)"一tcp-flags"選項(xiàng),那么此處,我們就來(lái)認(rèn)識(shí)一下tcp擴(kuò)展模塊中的"一tcp-flags"o注:閱讀這篇文章之前,需要對(duì)tcp協(xié)議的基礎(chǔ)知識(shí)有一定的了解,比如:tcp頭的結(jié)構(gòu)、tcp三次握手的過(guò)程。見(jiàn)名知義,"--tcp-flags"指的就是tcp頭中的標(biāo)志位,看來(lái),在使用iptables時(shí),我們可以通過(guò)此擴(kuò)展匹配條件,去匹配tcp報(bào)文的頭部的標(biāo)識(shí)位,然后根據(jù)標(biāo)識(shí)位的實(shí)際情況實(shí)現(xiàn)訪(fǎng)問(wèn)控制的功能。既然說(shuō)到了tcp頭中的標(biāo)志位,那么我們就來(lái)回顧一下tcp頭的結(jié)構(gòu),如下圖所/示o在使用iptables時(shí),使用tcp擴(kuò)展模塊的"--tcp-flags"選項(xiàng),即可對(duì)上圖中的標(biāo)志位進(jìn)行匹配,判斷指定的標(biāo)志位的值是否為"1",而tcpheader的結(jié)構(gòu)不是我們今天討論的重點(diǎn),我們繼續(xù)聊tcp的標(biāo)識(shí)位,在tcp協(xié)議建立連接的過(guò)程中,需要先進(jìn)行三次握手,而三次握手就要依靠tcp頭中的標(biāo)志位進(jìn)行。為了更加具象化的描述這個(gè)過(guò)程,我們可以抓包查看ssh建立連接的過(guò)程,如下圖所示(使用wireshark在ssh客戶(hù)端抓包,跟蹤對(duì)應(yīng)的tcp流):

上圖為tcp三次握手中的第一次握手,客戶(hù)端(IP為98)使用本地的隨機(jī)端口54808向服務(wù)端(IP為137)發(fā)起連接請(qǐng)求,tcp頭的標(biāo)志位中,只有SYN位被標(biāo)識(shí)為1,其他標(biāo)志位均為0。在上圖的下方可以看到"[TCPFlags:S?]〃,其中的〃S〃就表示SYN位,整體表示只有SYN位為1。上圖為tcp三次握手中第一次握手的tcp頭中的標(biāo)志位,下圖是第二次握手的,服務(wù)端回應(yīng)剛才的請(qǐng)求,將自己的tcp頭的SYN標(biāo)志位也設(shè)置為1,同時(shí)將ACK標(biāo)志位也設(shè)置為1,如下圖所示。上圖中的下方顯示的標(biāo)志位列表也變成了,[TCPFlags:A??S?],表示只有ACK標(biāo)志位與SYN標(biāo)志位為1,如上圖所示,第三次握手我就不再截圖了,說(shuō)到這里,就已經(jīng)能夠引出我們今天要說(shuō)的話(huà)題了,就是〃一tcpflags"選項(xiàng),假設(shè),我現(xiàn)在想要匹配到上文中提到的〃第一次握手"的報(bào)文,則可以使用如下命令:#iptablew-tfilter-IINPUT-ptcp-mttp-dport22--tcp-flagwSYN/CK,FIN*R5T*URG?PWH5YN-jREJECT上圖中,"-mtcp—dport22"的含義在前文中已經(jīng)總結(jié)過(guò),表示使用tcp擴(kuò)展模塊,指定目標(biāo)端口為22號(hào)端口(ssh默認(rèn)端口),"--tcp-flags"就是我們今天要討論的擴(kuò)展匹配條件,用于匹配報(bào)文tcp頭部的標(biāo)志位,〃SYN,ACK,FIN,RST,URG,PSHSYN"是什么意思呢?這串字符就是用于配置我們要匹配的標(biāo)志位的,我們可以把這串字符拆成兩部分去理解,第一部分為〃SYN,ACK,FIN,RST,URG,PSH〃,第二部分為"SYN"。第一部分表示:我們需要匹配報(bào)文tcp頭中的哪些標(biāo)志位,那么上例的配置表示,我們需要匹配報(bào)文tcp頭中的6個(gè)標(biāo)志位,這6個(gè)標(biāo)志位分別為為〃SYN、ACK、FIN、RST、URG、PSH",我們可以把這一部分理解成需要匹配的標(biāo)志位列表。第二部分表示:第一部分的標(biāo)志位列表中,哪些標(biāo)志位必須為1,上例中,第二部分為SYN,則表示,第一部分需要匹配的標(biāo)志位列表中,SYN標(biāo)志位的值必須為1,其他標(biāo)志位必須為0。所以,上例中的〃SYN,ACK,FIN,RST,URG,PSHSYN〃表示,需要匹配報(bào)文tcp頭中的〃SYN、ACK、FIN、RST、URG、PSH"這些標(biāo)志位,其中SYN標(biāo)志位必須為1,其他的5個(gè)標(biāo)志位必須為0,這與上文中wireshark抓包時(shí)的情況相同,正是tcp三次握手時(shí)第一次握手時(shí)的情況,上文中第一次握手的報(bào)文的tcp頭中的標(biāo)志位如下:[[TTPF"驢:……其實(shí),--tcp-flags的表示方法與wireshark的表示方法有異曲同工之妙,只不過(guò),wireshark中,標(biāo)志位為0的用"點(diǎn)"表示,標(biāo)志位為1的用對(duì)應(yīng)字母表示,在--tcp-flags中,需要先指明需要匹配哪些標(biāo)志位,然后再指明這些標(biāo)志位中,哪些必須為1,剩余的都必須為0。那么,聰明如你一定想到了,如果我想要匹配tcp頭中的第二次握手時(shí)的標(biāo)志位的情況,該怎么表示呢?示例如下(此處省略對(duì)源地址與目標(biāo)地址的匹配,重點(diǎn)在于對(duì)tcp-flags的示例)#iptables-tfilter-IINPUT-ptcp?mtcp?-dport22--tcp-flagsSYN,ACK,FIN,RST,URG,PSHSYN-jREJECT#iptablestfilter-IINPUT-ptcptcp--dport22—tcp-flagsSYN,ACK.FIN,RST,URG,PSHSYN,ACKREJECT上圖中,第一條命令匹配到的報(bào)文是第一次握手的報(bào)文,第二條命令匹配到的報(bào)文是第二次握手的報(bào)文。綜上所述,只要我們能夠靈活的配置上例中的標(biāo)志位,即可匹配到更多的應(yīng)用場(chǎng)景中。其實(shí),上例中的兩條命令還可以簡(jiǎn)寫(xiě)為如下模樣#lpTableS-tfilter-IINPUT-ptcp-mtcp--dport22--tcp-flagsALL5YN-jREJECT#iptdbleslfilTer-IINPUTpTcp詢(xún)tcp■dpart22-tcp-flagsALLSY*ACK-JREJECT沒(méi)錯(cuò),我們可以用ALL表示"SYN,ACK,FIN,RST,URG,PSH"。

其實(shí),tcp擴(kuò)展模塊還為我們專(zhuān)門(mén)提供了一個(gè)選項(xiàng),可以匹配上文中提到的〃第一次握手",那就是--syn選項(xiàng)使用〃一syn〃選項(xiàng)相當(dāng)于使用〃一tcp-flagsSYN,RST,ACK,FINSYN〃,也就是說(shuō),可以使用〃一syn〃選項(xiàng)去匹配tcp新建連接的請(qǐng)求報(bào)文。示例如下:#iptables-tfilter-IINPUT-ptcp-mtcp--dport22--syn-jREJECT小結(jié)結(jié)合之前的文章,我們把tcp模塊的常用擴(kuò)展匹配條件再總結(jié)一遍,方便以后回顧。tcp擴(kuò)展模塊常用的擴(kuò)展匹配條件如下:--sport用于匹配tcp協(xié)議報(bào)文的源端口,可以使用冒號(hào)指定一個(gè)連續(xù)的端口范圍#示例iptables-tfilter-IOUTPUT-d192.168.1.146-ptcpmtcp--sport22-jREJECTiptables-tfilter-IOUTPUT-d192.168.1.146-ptcpmtcp--sport22:25-jREJECTiptables-tfilter-IOUTPUT-d192.168.1.146-ptcpmtcp!--sport22-jACCEPT--dport用于匹配tcp協(xié)議報(bào)文的目標(biāo)端口,可以使用冒號(hào)指定一個(gè)連續(xù)的端口范圍#示例192.168.1.146-ptcp192.168.1.146-ptcp192.168.1.146-ptcp1iptables-tfilter-IINPUT-s2mtcp--dport22:25-jREJECT3iptables-tfilter-IINPUT-s4mtcp--dport:22-jREJECTiptables-tfilter-IINPUT-smtcp--dport80:-jREJECT--tcp-flags用于匹配報(bào)文的tcp頭的標(biāo)志位#示例iptables-tfilter-IINPUT-ptcp-mtcp--dport221tcp-flagsSYN,ACK,FIN,RST,URG,PSHSYN-jREJECT2iptables-tfilter-IINPUT-ptcp-mtcp--dport223tcp-flagsSYN,ACK,FIN,RST,URG,PSHSYN,ACK-jREJECT4iptables-tfilter-IINPUT-ptcp-mtcp--dport225tcp-flagsALLSYN-jREJECTiptables

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論