ICMP是“Internet Control Message Protocol”(Internet控制消息協(xié)議)的縮寫(xiě)。它是TCP/IP協(xié)議族的一個(gè)子協(xié)議,用于在IP主機(jī)、路由器之間傳遞控制消息?刂葡⑹侵妇W(wǎng)絡(luò)通不通、主機(jī)是否可達(dá)、路由是否可用等網(wǎng)絡(luò)本身的消息。這些控制消息雖然并不傳輸用戶(hù)數(shù)據(jù),但是對(duì)于用戶(hù)數(shù)據(jù)的傳遞起著重要的作用。
我們?cè)诰W(wǎng)絡(luò)中經(jīng)常會(huì)使用到ICMP協(xié)議,只不過(guò)我們覺(jué)察不到而已。比如我們經(jīng)常使用的用于檢查網(wǎng)絡(luò)通不通的Ping命令,這個(gè)“Ping”的過(guò)程實(shí)際上就是ICMP協(xié)議工作的過(guò)程。還有其他的網(wǎng)絡(luò)命令如跟蹤路由的Tracert命令也是基于ICMP協(xié)議的。
ICMP防護(hù)措施介紹:
ICMP最初開(kāi)發(fā)出來(lái)是為了"幫助"網(wǎng)絡(luò),經(jīng)常被廣域網(wǎng)管理員用作診斷工具。但今天各種各樣的不充分的ICMP被濫用,沒(méi)有遵守RFC 792原先制訂的標(biāo)準(zhǔn),要執(zhí)行一定的策略可以讓它變得安全一些。
入站的ICMP時(shí)間標(biāo)記(Timestamp)和信息請(qǐng)求(Information Request)數(shù)據(jù)包會(huì)得到響應(yīng),帶有非法或壞參數(shù)的偽造數(shù)據(jù)包也能產(chǎn)生ICMP參數(shù)問(wèn)題數(shù)據(jù)包,從而允許另外一種形式的主機(jī)搜尋。這仍使得站點(diǎn)沒(méi)有得到適當(dāng)保護(hù)。
以秘密形式從主方到客戶(hù)方發(fā)布命令的一種通用方法,就是使用ICMP Echo應(yīng)答數(shù)據(jù)包作為載波。 回聲應(yīng)答本身不能回答,一般不會(huì)被防火墻阻塞。
首先,我們必須根據(jù)出站和入站處理整個(gè)的"ICMP限制"問(wèn)題。ICMP回聲很容易驗(yàn)證遠(yuǎn)程機(jī)器,但出站的ICMP回聲應(yīng)該被限制只支持個(gè)人或單個(gè)服務(wù)器/ICMP代理(首選)。
如果我們限制ICMP回聲到一個(gè)外部IP地址(通過(guò)代理),則我們的ICMP回聲應(yīng)答只能進(jìn)入我們網(wǎng)絡(luò)中預(yù)先定義的主機(jī)。
重定向通?梢栽诼酚善髦g找到,而不是在主機(jī)之間。防火墻規(guī)則應(yīng)該加以調(diào)整,使得這些類(lèi)型的ICMP只被允許在需要信息的網(wǎng)際連接所涉及的路由器之間進(jìn)行。
建議所有對(duì)外的傳輸都經(jīng)過(guò)代理,對(duì)內(nèi)的ICMP傳輸回到代理地址的時(shí)候要經(jīng)過(guò)防火墻。這至少限制了ICMP超時(shí)數(shù)據(jù)包進(jìn)入一個(gè)內(nèi)部地址,但它可能阻塞超時(shí)數(shù)據(jù)包。
當(dāng)ICMP數(shù)據(jù)包以不正確的參數(shù)發(fā)送時(shí),會(huì)導(dǎo)致數(shù)據(jù)包被丟棄,這時(shí)就會(huì)發(fā)出ICMP參數(shù)出錯(cuò)數(shù)據(jù)包。主機(jī)或路由器丟棄發(fā)送的數(shù)據(jù)包,并向發(fā)送者回送參數(shù)ICMP出錯(cuò)數(shù)據(jù)包,指出壞的參數(shù)。
總的來(lái)說(shuō),只有公開(kāi)地址的服務(wù)器(比如Web、電子郵件和FTP服務(wù)器)、防火墻、聯(lián)入因特網(wǎng)的路由器有真正的理由使用ICMP與外面的世界對(duì)話(huà)。如果調(diào)整適當(dāng),實(shí)際上所有使用進(jìn)站和出站ICMP的隱密通訊通道都會(huì)被中止。