登錄

ICMP

1.什么是ICMP

  ICMP的全稱是Intemet Control Message Protocol,即因特網(wǎng)控制報(bào)文協(xié)議,是一個(gè)標(biāo)準(zhǔn)的TCP/IP協(xié)議,工作在IP層,所有的IP路由器和主機(jī)都支持該協(xié)議,其功能是在lP主機(jī)、路由器之間傳遞網(wǎng)絡(luò)通不通、主機(jī)是否可達(dá)、路由是否可用等反映網(wǎng)絡(luò)本身狀況的控制消息。

  ICMP的使用者主要是路由器,接受者是IP數(shù)據(jù)報(bào)的源發(fā)主機(jī)端。當(dāng)路由器發(fā)現(xiàn)某份IP數(shù)據(jù)報(bào)因?yàn)槟撤N原因無法繼續(xù)轉(zhuǎn)發(fā)和投遞時(shí),相關(guān)的實(shí)體形成ICMP報(bào)文,并從該IP數(shù)據(jù)報(bào)中截取源發(fā)主機(jī)IP地址,形成新的IP數(shù)據(jù)報(bào)轉(zhuǎn)發(fā)給源發(fā)主機(jī),以報(bào)告差錯(cuò)的發(fā)生及原因。

  為標(biāo)識(shí)出ICMP,IP數(shù)據(jù)報(bào)協(xié)議段的值是1。ICMP報(bào)文分為ICMP報(bào)文頭部和ICMP報(bào)文體部兩部分。

  ICMP頭部主要有類型(Type)、代碼(Code)和校驗(yàn)和等3個(gè)字段。其中類型字段為單字節(jié)整數(shù),表示差錯(cuò)的類型;代碼字段為單字節(jié)整數(shù),表示差錯(cuò)的原因;類型和代碼段規(guī)定了報(bào)文的意義及這種報(bào)文分組其余部分的格式;校驗(yàn)和表示整個(gè)ICMP報(bào)文的校驗(yàn)結(jié)果。

2.ICMP的應(yīng)用

  ——ICMP有52種類型和代碼,各有其所用。例如TYPE=3的Destinationunreachable報(bào)文,包含15個(gè)子類型代碼(code),用于準(zhǔn)確區(qū)分哪些設(shè)備不能到達(dá),有時(shí)還可以指出不能達(dá)到的原因。

  ——ICMP收集到的診斷信息包括:主機(jī)關(guān)閉或數(shù)據(jù)報(bào)不能到達(dá)目的地;網(wǎng)關(guān)已經(jīng)失去緩存功能或不通;網(wǎng)絡(luò)上的其它故障或網(wǎng)關(guān)能夠引導(dǎo)主機(jī)在更短路由上發(fā)送等。因此ICMP經(jīng)常被廣域網(wǎng)管理員用作診斷工具,幫助網(wǎng)絡(luò)管理人員和用戶識(shí)別網(wǎng)絡(luò)問題。

  ——ICMP最廣泛的應(yīng)用是ping應(yīng)用程序。ping命令是一個(gè)專用于TCP/IP協(xié)議的探測工具,它發(fā)送ICMP數(shù)據(jù)包,直接在系統(tǒng)內(nèi)核中實(shí)現(xiàn),用于確定本地主機(jī)是否能與另一臺(tái)主機(jī)交換(發(fā)送與接收)數(shù)據(jù)報(bào)。通過這種機(jī)制監(jiān)測某臺(tái)主機(jī)的存在與否或者與鏈路的暢通與否并可分析網(wǎng)絡(luò)速度。

  —一利用ICMP來了解IP數(shù)據(jù)報(bào)的整個(gè)路由。利用路由器對(duì)IP數(shù)據(jù)報(bào)的1TrL值減1,若1TrL=0則丟棄數(shù)據(jù)報(bào),并返回TYEE=3的ICMP報(bào)文的特點(diǎn),跟蹤IP數(shù)據(jù)報(bào)發(fā)送的路由。由源發(fā)端主機(jī)形成一系列宿主機(jī)無法處理的IP數(shù)據(jù)報(bào)(如對(duì)應(yīng)一個(gè)不存在的端口號(hào)),并使其生存期值依次為1、2、3?,逐個(gè)發(fā)往網(wǎng)絡(luò)。由于主機(jī)和路由器對(duì)路由信息的緩存能力,這些1TrL值依次遞增的數(shù)據(jù)報(bào)將沿著原路徑向宿結(jié)點(diǎn)前進(jìn)。如果整個(gè)路徑中包括了N個(gè)路由器,則可返回N個(gè)主機(jī)不可達(dá)和一個(gè)端口不可達(dá)報(bào)文,了解路徑中的路由。

  ——利用源發(fā)端發(fā)送一系列報(bào)文長度逐漸變化的ICMP報(bào)文,而轉(zhuǎn)發(fā)網(wǎng)絡(luò)對(duì)于大于MPU的數(shù)據(jù)報(bào)產(chǎn)生主機(jī)不可達(dá)報(bào)文的特點(diǎn),測試出整個(gè)路徑最大MTU。

  ——利用ICMP來估算鏈路的速度等等。

3.ICMP的缺陷

  由于ICMP過于簡單,所以它對(duì)網(wǎng)絡(luò)的安全有比較大的負(fù)面影響。

  ——ICMP協(xié)議是無連接的。只要在源發(fā)端完成ICMP報(bào)文的封裝并傳遞給路由器,這個(gè)報(bào)文就會(huì)像郵包一樣被投遞到宿主機(jī)端。這使得ICMP協(xié)議非常靈活快捷。但同時(shí)這也是一個(gè)非常致命的缺陷——源發(fā)端的人可以隨便利用SOCK—RAW(原始套接口)編程技術(shù)直接改寫報(bào)文的ICMP酋部和IP首部,偽造ICMP報(bào)文并發(fā)送出去,卻不用擔(dān)心源發(fā)端會(huì)在接收端留下任何痕跡,從而制造出各種各樣的攻擊軟件。

  ——利用ICMP可以進(jìn)行網(wǎng)絡(luò)掃描,從而查出目標(biāo)網(wǎng)絡(luò)中存活的主機(jī)和主機(jī)所使用的操作系統(tǒng)等。

  ——利用ICMP的重定向功能,可調(diào)整路由器的路由列表或向用戶的主機(jī)發(fā)送ICMP重定向報(bào)文,從而導(dǎo)致DOS攻擊。

  ——由于ICMP報(bào)文是系統(tǒng)內(nèi)核或進(jìn)程直接處理而不是通過端口,所以ICMP木馬正是利用這個(gè)機(jī)會(huì)將自己偽裝成一個(gè)ping的進(jìn)程,系統(tǒng)就會(huì)將ICMPECHOREPLY(ping的回包)的監(jiān)聽、處理權(quán)交給木馬進(jìn)程。使木馬接受、分析并從報(bào)文中解碼出命令和數(shù)據(jù)。

  ——超時(shí)報(bào)文(Time Exceeded;TYPE:=11)通常用于錯(cuò)誤處理,也可用于定位網(wǎng)絡(luò)。但利用追蹤路由命令發(fā)送一個(gè)人為設(shè)置的、TTL值很低的報(bào)文,而導(dǎo)致路由器發(fā)回一個(gè)超時(shí)報(bào)文,其中包括路由器的IP地址。另外超時(shí)報(bào)文還可以和子類型code一起使用。如果接受端沒有收到全部報(bào)文,并且重組這些報(bào)文的時(shí)間已經(jīng)超時(shí),該子類型將向發(fā)送主機(jī)發(fā)出信息。掃描程序通過只發(fā)出第一個(gè)報(bào)文來掃描網(wǎng)絡(luò),等待對(duì)方主機(jī)發(fā)回網(wǎng)絡(luò)超時(shí)的信息。如果系統(tǒng)的端口沒有被防火墻屏蔽,這種子類型可以用于定位端口地址。

4.ICMP漏洞的防御

  ICMP非常有用,但今天各種各樣的不充分的ICMP被濫用,沒有遵守RFC792原先制訂的標(biāo)準(zhǔn)。所以應(yīng)采取一定的措施使它變得安全一點(diǎn)。

  ——可利用報(bào)文過濾技術(shù)對(duì)ICMP報(bào)文進(jìn)行過濾。因?yàn)楣粽呖梢岳肐CMP來獲取用戶網(wǎng)絡(luò)上的大量信息,為居心不測者攻擊內(nèi)部網(wǎng)絡(luò)提供方便。往往我們希望內(nèi)部網(wǎng)絡(luò)用戶可以ping外界主機(jī),而外界主機(jī)不可ping內(nèi)部主機(jī)。因?yàn)镮CMP需要雙向通訊。所以我們可以在路由器的出站和人站方向上都設(shè)置訪問列表進(jìn)行控制。這正是根據(jù)出站和人站處理整個(gè)的“ICMP的限制”問題。一般出站的ICMP回聲被限制只支持個(gè)人或單個(gè)服務(wù)器,而用人站的ICMP回聲驗(yàn)證遠(yuǎn)程機(jī)器。

  ——對(duì)于安全性要求不高的網(wǎng)絡(luò),或不需要防止端口掃描的網(wǎng)絡(luò),可以不考慮有關(guān)ICMP的問題。然而,對(duì)于安全性至關(guān)重要的網(wǎng)絡(luò),最好讓盡可能少的ICMP類型通過防火墻。在所有的ICMP報(bào)文中,目的不可達(dá)報(bào)文是通過防火墻到達(dá)內(nèi)網(wǎng)中最重要的報(bào)文。有的網(wǎng)管員就只允許目的不可達(dá)一種ICMP報(bào)文通過防火墻,目的不可達(dá)報(bào)文與路徑最大傳輸單元MTU的確定有關(guān)。在防火墻上如果禁止所有的ICMP報(bào)文通過,會(huì)對(duì)IP的性能和網(wǎng)絡(luò)效率有所影響。

  ——如果用過濾方式來保護(hù)web服務(wù)器或其它公用服務(wù)器,也可允許源結(jié)束報(bào)文進(jìn)入企業(yè)內(nèi)部網(wǎng)。但是一般地只有公開地址的服務(wù)器、防火墻、聯(lián)人因特網(wǎng)的路由器有真正的理由使用ICMP與外界對(duì)話。建議所有對(duì)外的傳輸都經(jīng)過代理,對(duì)內(nèi)的ICMP傳輸回到代理地址的時(shí)候要經(jīng)過防火墻。這至少限制了ICMP超時(shí)數(shù)據(jù)包進(jìn)入一個(gè)內(nèi)部地址,卻可能阻塞超時(shí)數(shù)據(jù)包。

評(píng)論  |   0條評(píng)論