如何防止基於ICMP的網路攻擊

2021-05-01 18:37:59 字數 4319 閱讀 7158

許多網路攻擊都基於icmp協議。在下面這篇文章裡,我們將首先介紹icmp協議,然後**常見的基於icmp的網路攻擊,最後分析防火牆怎樣才能夠防止和減輕這種攻擊所造成的危害。 

icmp(internet控制訊息協議, internet control message protocol)協議用來給ip協議提供控**務,允許路由器或目標主機給資料的傳送方提供反饋資訊。需要傳送反饋資訊的情況包括:資料報不能被傳送到目標主機,路由器緩衝區溢位導致資料報被刪除,路由器想要把流量重定向到另外乙個更短的路由上等。icmp協議是ip協議的一部分,任何實現了ip協議的裝置同時也被要求實現icmp協議。

icmp協議的格式如圖1所示,icmp協議頭位於ip資料報頭之後,使用型別和**來區分不同的控制訊息。到現在為止,人們已經定義了27種不同的icmp型別。icmp**用來區分不同的icmp子型別,圖2列出了常用的icmp型別。icmp資料位於icmp協議頭之後,不同的icmp型別對應的資料的長度也不相同。通常icmp資料報含原始資料報的資訊、被報告的錯誤或者用來測試的資料。

圖1:icmp包結構

ip header (20 bytes)

type (1 byte)

code (1 byte)

checksum (2 bytes)

content varies depending on type (variable bytes)

圖2:常用的icmp訊息型別型別

描述用途

0echo reply

用來回答型別8,把資料原封不動的回顯給傳送方

3destination unreachable

資料報不能被進一步傳送

4source quench

用來指示傳送方降低資料傳送率

5redirect

用於改變預設路由

8echo request

被ping命令使用,用來測試網路的連通性

9router announcement

通知主機位於本地子網上的路由器

10router solicitation

請求路由器傳送routers announcement

11ttl exceeded

資料報不能被傳送,因為ttl值無效

12parameter problem

資料報被刪除,因為ip頭資訊不正確

icmp型別屬於ping命令,可以測試網路的連通性。乙個icmp echo request可以包含64k的資料,它被傳送後,接收方會返回乙個icmp echo reply,返回的資料中包含了接收到的資料的拷貝。

常見的icmp攻擊

基於icmp的攻擊可以分為三類,並且都可以歸類為拒絕服務攻擊(dos, denial of service):針對頻寬的dos攻擊,利用無用的資料來耗盡網路頻寬;針對主機的dos攻擊,攻擊作業系統的漏洞;針對連線的dos攻擊,可以終止現有的網路連線。

pingflood、pong、echok、flushot、fraggle 和 bloop是常用的icmp攻擊工具。通過高速傳送大量的icmp echo reply資料報,目標網路的頻寬瞬間就會被耗盡,阻止合法的資料通過網路。icmp echo reply資料報具有較高的優先順序,在一般情況下,網路總是允許內部主機使用ping命令。這種攻擊僅限於攻擊網路頻寬,單個攻擊者就能發起這種攻擊。更厲害的攻擊形式,如smurf和papa-smurf,可以使整個子網內的主機對目標主機進行攻擊,從而擴大icmp流量。使用適當的路由過濾規則可以部分防止此類攻擊,如果完全防止這種攻擊,就需要使用基於狀態檢測的防火牆。

「ping of death」及其相關的攻擊利用主機作業系統的漏洞直接對目標主機發起攻擊。通過傳送乙個非法的icmp echo request資料報,就可以使目標系統崩潰或重啟。許多系統包括windows、unix、macintosh ,甚至還有一些路由器和印表機,都容易遭受此類攻擊。如果使用者使用的作業系統的版本過於陳舊,請確保是否打好了補丁。這類攻擊包括pinger、pingexploit、jolt、 jolt2、sping、ssping、icenewk和 icmpbug。乙個能執行詳細資料報完整性檢測的防火牆可以防止所有這種型別的攻擊。

針對網路連線的dos攻擊會影響所有的ip裝置,因為它使用了合法的icmp訊息。nuke通過傳送乙個偽造的icmp destination unreachable或redirect訊息來終止合法的網路連線。更具惡意的攻擊,如puke和smack,會給某乙個範圍內的埠傳送大量的資料報,毀掉大量的網路連線,同時還會消耗受害主機cpu的時鐘週期。還有一些攻擊使用icmp source quench訊息,導致網路流量變慢,甚至停止。redirect和router announcement訊息被利用來強制受害主機使用乙個並不存在的路由器,或者把資料報路由到攻擊者的機器,進行攻擊。針對連線的dos攻擊不能通過打補丁的方式加以解決。通過過濾適當的icmp訊息型別,防火牆可以阻止此類攻擊。

選擇合適的防火牆

有效防止icmp攻擊,防火牆應該具有狀態檢測、細緻的資料報完整性檢查和很好的過濾規則控制功能。

狀態檢測防火牆通過跟蹤它的連線狀態,動態允許外出資料報的響應資訊進入防火牆所保護的網路。例如,狀態檢測防火牆可以記錄乙個出去的ping(icmp echo request),在接下來的乙個確定的時間段內,允許目標主機響應的icmp echo reply直接傳送給前面發出了ping命令的ip,除此之外的其他icmp echo reply訊息都會被防火牆阻止。與此形成對比的是,包過濾型別的防火牆允許所有的icmp echo reply訊息進入防火牆所保護的網路了。許多路由器和基於linux核心2.2或以前版本的防火牆系統,都屬於包過濾型,使用者應該避免選擇這些系統。

新的攻擊不斷出現,防火牆僅僅能夠防止已知攻擊是遠遠不夠的。通過對所有資料報進行細緻分析,刪除非法的資料報,防火牆可以防止已知和未知的dos攻擊。這就要求防火牆能夠進行資料報一致性檢查。安全策略需要針對icmp進行細緻的控制。因此防火牆應該允許對icmp型別、**和包大小進行過濾,並且能夠控制連線時間和icmp包的生成速率。

配置防火牆以預防攻擊

一旦選擇了合適的防火牆,使用者應該配置乙個合理的安全策略。以下是被普遍認可的防火牆安全配置慣例,可供管理員在系統安全性和易用性之間作出權衡。

防火牆應該強制執行乙個預設的拒絕策略。除了出站的icmp echo request、出站的icmp source quench、進站的ttl exceeded和進站的icmp destination unreachable之外,所有的icmp訊息型別都應該被阻止。下面是針對每個icmp訊息型別的過濾規則的詳細分析。

echo request和reply(型別8和0):允許echo request訊息出站以便於內部使用者能夠ping乙個遠端主機。阻止入站echo request和出站echo reply可以防止外部網路的主機對內部網路進行掃瞄。如果您使用了位於外部網路的監視器來監視內部網路,就應該只允許來自於特定外部ip的echo request進入您的網路。限制icmp echo包的大小可以防止「ping floods」攻擊,並且可以阻止那些利用echo request和reply來「偷運」資料通過防火牆的木馬程式。

destination unreachable (型別3): 允許其入站以便於內部網使用者可以使用traceroute。需要注意的是,有些攻擊者可以使用它來進行針對會話的dos攻擊,如果您曾經歷過類似的攻擊,也可以阻止它。阻止出站的icmp destination unreachable訊息,因為它可能會洩漏內部網路的結構。不過有乙個例外,對於那些允許外部網路通過tcp訪問的內部主機(如位於dmz區的web伺服器)發出的destination unreachable,則應該允許它通過。為了能夠支援「path mtu discovery」,您應該允許出站的「packet too big」訊息(型別3,**4)到達那些主機。

source quench(型別4):阻止其入站,因為它可以作為一種dos攻擊,能夠降低傳送者的傳送速度。允許其出站以便於內部主機能夠控制傳送端傳送資料的速度。有些防火牆會忽略所有直接傳送到防火牆埠的source quench訊息,以防止針對於防火牆的dos攻擊。

redirect、router announcement、 router selection(型別5,9,10):這些訊息都存在潛在危險,因為它們可以用來把資料重定向到攻擊者的機器。這些訊息都應該被阻止。

ttl exceeded(型別11):允許其進站以便於內部使用者可以使用traceroute。「firewalking」使用很低的ttl值來對網路進行掃瞄,甚至可以通過防火牆對內網進行掃瞄,所以應該禁止其出站。一些防火牆可以阻止ttl值小於設定值的資料報進入防火牆。

parameter problem(型別12):禁止其入站和出站。通過使用乙個能夠進行資料報一致性檢查的防火牆,錯誤和惡意的資料報都會被阻塞。

Linux網路程式設計 ICMP洪水攻擊

一 icmp洪水攻擊的原理 icmp flood 是一種在ping基礎上形成的,但是用ping程式很少能造成目標機宕機的問題,這裡邊最大的問題是提高處理的速度,icmp洪水攻擊主要有以下3種方式。1 直接洪水攻擊 這樣做需要本地主機的頻寬與目標主機之間頻寬進行比拼,可以採用多執行緒的方法一次性得傳送...

如何防止Arp攻擊

檢視的方法很多,最直接的在cmd裡面執行arp a。但這是被arp攻擊之前,被攻擊成功後,192.168.0.1對應的mac位址會變成攻擊電腦的mac位址。還有另乙個方法,登入路由器檢視。在瀏覽器輸入 192.168.0.1 這裡是個人的閘道器 然後輸入帳號密碼,登入進去。一般在這裡都可以找到乙個l...

簡單的icmp攻擊

由於本人很菜,這個 是改別人的.呵呵.可以在公司的區域網裡搞搞壞,呵呵.我是在ubuntu8.04下的,需要gcc編譯.修改了一些,加添了廣播,可發給255,我感覺會把區域網弄亂的 呵呵.include include include include include include include ...