Internet Control Message Protocol POD攻擊 IPv6 ICMP 網路

理解ICMPv6新協定 鞏固網管查修與資安防線

2017-04-13
本文將講解ICMP協定的運作方式,並介紹Ping、Trace及Traceroute等常見的ICMP工具,也會示範Ping工具的網路攻擊行為以及防禦的方式,以及說明最新版的ICMPv6。

若想知道更多在Mac作業系統上ping指令的用法,可以在命令列中輸入「man ping」指令。至於Windows作業系統,執行ping指令的範例如下所示:


詳細資訊可參考RFC 792,即ICMP協定。如果想知道更多在Windows作業系統中Ping的指令用法,在命令列中輸入「ping -help」指令即可。

Ping工具所產生的網路攻擊

一般來說,很多企業網路環境會將Ping工具所發送的ICMP封包擋住,通常會使用防火牆來抵擋。這是由於ping這個工作有可能會被拿來當作攻擊的用途,也就是稱為「死亡之Ping」。死亡之Ping英文為「Ping of Death」,簡稱POD,這種攻擊方式是對目的地網路設備不斷地發送錯誤封包或是持續發送ping指令,而讓對方網路設備達到崩潰的效果。

一般來說,一個Ping的網路封包為32位元組或甚至是64個位元組(由剛才的範例就可以看得出來),大部分的電腦可能無法處理與承受大於IPv4協定的最大封包大小,也就是65,535個位元組,此時就會導致設備崩潰。不過,後來1997年左右,這些問題都已經被修正。

但是即便如此,仍然可以透過所謂的DoS(Denial of Service)方式,瘋狂發送Ping封包達到無法讓對方網路設備提供服務的攻擊。DoS是一種網路攻擊方式,目的在於讓對方網路設備疲於奔命地做某些沒有意義的事情,而無法提供原本應該提供的服務,中文又稱為阻斷式攻擊。

阻絕Ping攻擊的方式

因為以上的各種因素導致許多網路管理人員會直接設定成無法使用Ping這種ICMP封包,而一般都是在防火牆上做設定,而在路由器上,也可以藉由設定「存取控制清單(Access Control List,ACL)」的方式來達到,底下針對這個方式做介紹。

Cisco路由器設備的標準型存取控制清單和延伸型存取控制清單提供了許多功能,其中包含一般的存取控制,同時也提供資料加密以及根據策略自動決定路由的功能(Policy-based Routing)。

顧名思義,存取控制清單就是一個清單,內容包含一些「規則」,也可以視為條件,用來指導Cisco路由器設備如何辨識哪些網路封包,以及要對這些網路封包做哪些動作,例如網路管理人員可能想要阻絕某些網路封包(以這裡為例,就是ICMP協定封包),而希望只允許某些特定的網路封包。

一旦網路管理人員在Cisco路由器設備上設定好存取控制清單後,當網路封包通過Cisco路由器設備時,就會依據存取控制清單的內容來決定是否要讓這個網路封包經過。藉由適當地控制好存取控制清單,網路管理人員就能夠過濾網路封包達到一定的網路安全。

基本上,存取控制清單分為兩類型,也就是標準型存取控制清單和延伸型存取控制清單。

延伸型的存取控制清單可以做比較細部的設定,所支援的協定也比較多,這裡以延伸型存取控制清單的方式來做介紹。如果要設定延伸型存取控制清單來對ICMP協定做控制,指令如下:


這個指令的關鍵字一樣是access-list,後面接上存取控制規則的識別碼,可選擇的動作也有permit和deny。接下來比較不同的是,延伸型存取控制規則可以選擇網路協定,這裡可選的網路協定有TCP、IP、ICMP、UDP、GRE(General Routing Encapsulation)以及IGRP(Interior Gateway Routing Protocol)等協定。

然後指定來源端IP位址與位址字元遮罩,再來就是可以指定埠,這邊可指定從來源端哪個埠出去的網路封包才需要套用這個存取控制規則,設定的方式就是一個比較關鍵字加上埠號碼。例如要指定來源端的21號埠,可以寫成「eq 21」。這裡的比較關鍵字就是「eq」,其他比較關鍵字還有「lt」、「gt」以及「neq」,lt就是less than,代表小於,gt是greater than,代表大於,而neq是not equal,代表不等於,原本範例中的eq則代表equal,就是等於的意思。而埠的相關設定可以不輸入,是可有可無的設定項目。

來源埠設定完畢,後面繼續加上目的端的IP位址以及相對應的位址字元遮罩,同樣也可以指定埠號碼。最後,還可額外指定是否要established關鍵字,若設定這個關鍵字,代表允許TCP協定的網路封包,但是前提是這些網路封包是使用已經建立好的網路連線(Established Connection),而且這關鍵字只能套用在Inbound的網路封包上。

準備好存取控制規則後,接下來把所設定好的存取控制規則套用到介面上,其指令格式如下:


為了要設定到某個介面上,第一步要先進入特定介面的Interface Mode底下,所以可以看到上面指令的模式必須在(config-if)底下才能執行。「ip access-group」是關鍵字,後面只要接上存取控制規則的識別碼,然後指定要套用在Inbound還是Outbound。方向的選擇也可以不指定,若不指定的話,預設是只會套用在Outbound方向上。

以這種方式設定於路由器上,就可以從路由器下手來抵擋ICMP網路封包了。

善用Traceroute工具

Traceroute是用來顯示網路封包送到目的地網路設備端所經過的路由器過程,會顯示中間所經過的路由器的IP位址。這個工具在Windows作業系統中稱為tracert,而在Linux作業系統中則是tracepath,在Mac作業系統中則直接是traceroute。底下是在Mac作業系統中執行traceroute指令的範例:



追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!