小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

細(xì)說(shuō)tcpdump的妙用(下)

 icecity1306 2014-12-23

轉(zhuǎn)載請(qǐng)?jiān)谖氖妆A粼某鎏帲?/span>EMC中文支持論壇https://community./go/chinese 

 

 

更多信息

 

(承接上文)

 

過(guò)濾:

 

要有效地使用tcpdump,掌握過(guò)濾器非常必要的。過(guò)濾允許用戶(hù)指定想要抓取的數(shù)據(jù)流,從而用戶(hù)可以專(zhuān)注于感興趣的數(shù)據(jù)。此外,ethereal這樣的工具使用tcpdump過(guò)濾語(yǔ)法來(lái)抓取數(shù)據(jù)流。

如果用戶(hù)很清楚對(duì)何種數(shù)據(jù)流不感興趣,可以將這部分?jǐn)?shù)據(jù)排除在外。如果用戶(hù)不確定需要什么數(shù)據(jù),可以將源數(shù)據(jù)收集到文件之后在讀取時(shí)應(yīng)用過(guò)濾器。實(shí)際應(yīng)用中,需要經(jīng)常在兩種方式之間轉(zhuǎn)換。

簡(jiǎn)單的過(guò)濾器是加在命令行之后的關(guān)鍵字。但是,復(fù)雜的命令是由邏輯和關(guān)系運(yùn)算符構(gòu)成的。對(duì)于這樣的情況,通常最好用-F選項(xiàng)將過(guò)濾器存儲(chǔ)在文件中。例如,假設(shè)testfilter 是一個(gè)包含過(guò)濾主機(jī)205.153.63.30的文本文件,之后輸入tcpdump –Ftestfilter等效于輸入命令tcpdump host 205.153.63.30。通常,這一功能只在復(fù)雜過(guò)濾器時(shí)使用。但是,同一命令中命令行過(guò)濾器和文件過(guò)濾器不能混用。

 

地址過(guò)濾:

 

過(guò)濾器可以按照地址選擇數(shù)據(jù)流。例如,考慮如下命令:

bsd1# tcpdump host 205.153.63.30

該命令抓取所有來(lái)自以及發(fā)往IP地址205.153.63.30的主機(jī)。主機(jī)可以通過(guò)名稱(chēng)或IP地址來(lái)選定。雖然指定的是IP地址,但抓取數(shù)據(jù)流并不限于IP數(shù)據(jù)流,實(shí)際上,過(guò)濾器也會(huì)抓到ARP數(shù)據(jù)流。限定僅抓取特定協(xié)議的數(shù)據(jù)流要求更復(fù)雜的過(guò)濾器。

 

有若干種方式可以指定和限制地址,下例是通過(guò)機(jī)器的以太網(wǎng)地址來(lái)選擇數(shù)據(jù)流:

bsd1# tcpdump ether host 0:10:5a:e3:37:c

 

數(shù)據(jù)流可進(jìn)一步限制為單向,分別用srcdst指定數(shù)據(jù)流的來(lái)源或目的地。下例顯示了發(fā)送到主機(jī)205.153.63.30 的數(shù)據(jù)流:

bsd1# tcpdump dst 205.153.63.30

注意到本例中host被省略了。在某些例子中省略是沒(méi)問(wèn)題的,但添加這些關(guān)鍵字通常更安全些。


廣播和多播數(shù)據(jù)相應(yīng)可以使用broadcastmulticast。由于多播和廣播數(shù)據(jù)流在鏈路層和網(wǎng)絡(luò)層所指定的數(shù)據(jù)流是不同的,所以這兩種過(guò)濾器各有兩種形式。過(guò)濾器ether multicast抓取以太網(wǎng)多播地址的數(shù)據(jù)流,ip multicast抓取IP多播地址數(shù)據(jù)流。廣播數(shù)據(jù)流也是類(lèi)似的使用方法。注意多播過(guò)濾器也會(huì)抓到廣播數(shù)據(jù)流。


除了抓取特定主機(jī)以外,還可以抓取特定網(wǎng)絡(luò)。例如,以下命令限制抓取來(lái)自或發(fā)往205.153.60.0的報(bào)文:

bsd1# tcpdump net 205.153.60


以下命令也可以做同樣的事情:

bsd1# tcpdump net 205.153.60.0 mask 255.255.255.0

而以下命令由于最后的.0就無(wú)法正常工作:

bsd1# tcpdump net 205.153.60.0

 

協(xié)議及端口過(guò)濾:

 

限制抓取指定協(xié)議如IP,AppletalkTCP。還可以限制建立在這些協(xié)議之上的服務(wù),如DNSRIP。這類(lèi)抓取可以通過(guò)三種方式進(jìn)行:使用tcpdump關(guān)鍵字,通過(guò)協(xié)議關(guān)鍵字proto,或通過(guò)服務(wù)使用port關(guān)鍵字。

 

一些協(xié)議名能夠被tcpdump識(shí)別到因此可通過(guò)關(guān)鍵字來(lái)指定。以下命令限制抓取IP數(shù)據(jù)流:

bsd1# tcpdump ip

當(dāng)然,IP數(shù)據(jù)流包括TCP數(shù)據(jù)流,UDP數(shù)據(jù)流,等等。

 

如果僅抓取TCP數(shù)據(jù)流,可以使用:

bsd1# tcpdump tcp

tcpdump可識(shí)別的關(guān)鍵字包括ip, igmp, tcp, udp, and icmp

 

有很多傳輸層服務(wù)沒(méi)有可以識(shí)別的關(guān)鍵字。在這種情況下,可以使用關(guān)鍵字protoip proto加上/etc/protocols能夠找到的協(xié)議名或相應(yīng)的協(xié)議編號(hào)。例如,以下兩種方式都會(huì)查找OSPF報(bào)文:

bsd1# tcpdump ip proto ospf

bsd1# tcpdump ip proto 89

 

內(nèi)嵌的關(guān)鍵字可能會(huì)造成問(wèn)題。下面的例子中,無(wú)法使用tcp關(guān)鍵字,或必須使用數(shù)字。例如,下面的例子是正常工作的:

bsd#1 tcpdump ip proto 6

另一方面,不能使用proto加上tcp:

bsd#1 tcpdump ip proto tcp

會(huì)產(chǎn)生問(wèn)題。

 

對(duì)于更高層級(jí)的建立于底層協(xié)議之上的服務(wù),必須使用關(guān)鍵字port。以下兩者會(huì)采集DNS數(shù)據(jù)流:

bsd#1 tcpdump port domain

bds#1 tcpdump port 53

 

第一條命令中,關(guān)鍵字domain能夠通過(guò)查找/etc/services來(lái)解析。在傳輸層協(xié)議有歧義的情況下,可以將端口限制為指定協(xié)議。考慮如下命令:

bsd#1 tcpdump udp port domain

這會(huì)抓取使用UDPDNS名查找但不包括使用TCPDNS zone傳輸數(shù)據(jù)。而之前的兩條命令會(huì)同時(shí)抓取這兩種數(shù)據(jù)。

 

報(bào)文特征:

 

過(guò)濾器也可以基于報(bào)文特征比如報(bào)文長(zhǎng)度或特定字段的內(nèi)容,過(guò)濾器必須包含關(guān)系運(yùn)算符。要指定長(zhǎng)度,使用關(guān)鍵字lessgreater。如下例所示:

bsd1# tcpdump greater 200

該命令收集長(zhǎng)度大于200字節(jié)的報(bào)文。

 

根據(jù)報(bào)文內(nèi)容過(guò)濾更加復(fù)雜,因?yàn)橛脩?hù)必須理解報(bào)文頭的結(jié)構(gòu)。但是盡管如此,或者說(shuō)正因如此,這一方式能夠使用戶(hù)最大限度的控制抓取的數(shù)據(jù)。

一般使用語(yǔ)法 proto [ expr : size ]。字段proto指定要查看的報(bào)文頭——ip則查看IP頭,tcp則查看TCP頭,以此類(lèi)推。expr字段給出從報(bào)文頭索引0開(kāi)始的位移。即:報(bào)文頭的第一個(gè)字節(jié)為0,第二字節(jié)為1,以此類(lèi)推。size字段是可選的,指定需要使用的字節(jié)數(shù),1,24

bsd1# tcpdump "ip[9] = 6"

查看第十字節(jié)的IP頭,協(xié)議值為6。注意這里必須使用引號(hào)。撇號(hào)或引號(hào)都可以,但反引號(hào)將無(wú)法正常工作。


bsd1# tcpdump tcp

也是等效的,因?yàn)?/span>TCP協(xié)議編號(hào)為6。


這一方式常常作為掩碼來(lái)選擇特定比特位。值可以是十六進(jìn)制。可通過(guò)語(yǔ)法&加上比特掩碼來(lái)指定。下例提取從以太網(wǎng)頭第一字節(jié)開(kāi)始(即目的地址第一字節(jié)),提取低階比特位,并確保該位不為0

bsd1# tcpdump 'ether[0] & 1 != 0'

該條件會(huì)選取廣播和多播報(bào)文。

 

以上兩個(gè)例子都有更好的方法來(lái)匹配報(bào)文。作為一個(gè)更實(shí)際的例子,考慮以下命令:

bsd1# tcpdump "tcp[13] & 0x03 != 0"

該過(guò)濾器跳過(guò)TCP頭的13個(gè)字節(jié),提取flag字節(jié)。掩碼0x03選擇第一和第二比特位,即FINSYN位。如果其中一位不為0則報(bào)文被抓取。此命令會(huì)抓取TCP連接建立及關(guān)閉報(bào)文。

 

不要將邏輯運(yùn)算符與關(guān)系運(yùn)算符混淆。比如想tcp src port > 23這樣的表達(dá)式就無(wú)法正常工作。因?yàn)?/span>tcp src port表達(dá)式返回值為truefalse,而不是一個(gè)數(shù)值,所以無(wú)法與數(shù)值進(jìn)行比較。如果需要查找端口號(hào)大于23的所有TCP數(shù)據(jù)流,必須從報(bào)文頭提取端口字段,使用表達(dá)式“tcp[0:2] & 0xffff > 0x0017”。


為了便于理解,我再用簡(jiǎn)單的語(yǔ)句表述一下:

 

Seq:數(shù)據(jù)段的序號(hào),當(dāng)TCP收到亂序報(bào)文時(shí),可供重新排序。

 

Ack:接收方向發(fā)送方確認(rèn)已接收到哪些字節(jié)。

 

SYN:發(fā)起連接請(qǐng)求的標(biāo)志位。

 

FIN:請(qǐng)求終止連接的標(biāo)志位。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(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)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多