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