當前位置:學問君>人在職場>電腦培訓>

病毒引起路由器過載故障解決方法

學問君 人氣:6.25K

一天,接到一個同事的求助電話,說他的機器不能上網了。這個同事的主機所在的虛網和網絡中心不在同一個虛網中。同事介紹說5分鐘前還是好的(能夠上網),現在不知道爲什麼就不能上網了。而且他的機器(安裝的系統爲Windows XP)最近沒有安裝什麼新的程序,沒有移動過電腦,也沒有拔過網線。

首先,排查網絡客戶端的錯誤配置。進入MSDOS方式使用IPCONFIG命令檢查主機的IP位址配置:

C:>ipconfig

Windows IP Configuration

Ethernet adapter 本地連接:

        Connection-specific DNS Suffix  . :

        IP Address. . . . . . . . . . . . :  

        Subnet Mask . . . . . . . . . . . :

        Default Gateway . . . . . . . . .

上面顯示的配置是正確的,然後Ping自己的IP位址:
 C:> ping Reply from : bytes=32 time<1ms TTL=128Reply from : bytes=32 time<1ms TTL=128
這說明IP位址是生效的,網卡工作正常。

再使用Ping命令,測試從本機到網關的連接情況:

C:> ping  –tReply from : bytes=32 time<1ms TTL=128Reply from : bytes=32 time<1ms TTL=128
從主機向網關發送的數據包,全部都得到了迴應,線路是連通的。開啟瀏覽器,也能夠正常上網,一點兒都沒問題。現在的網絡是正常的。正在懷疑的時候,發現網絡又不通了。發現Ping出的數據包未能到達網關。難道是網卡或者系統有問題?誰知過了一會兒,發現又通了。把臺式機上的網線插到筆記本電腦上,配置好IP位址後Ping網關,也出現時斷時續的情況。斷開的現象大概持續了50秒鐘,然後又恢復正常。這基本可以排除是主機存在問題了,因爲兩臺不相干主機同時出現此類問題的機率幾乎爲零。鑑於此現象,首先排除了連接線纜的故障,因爲連接的線纜不可能出現這種時斷時續的情況,故障最有可能出在線纜的.另一端——二層交換機上。於是來到這棟樓的設備間,檢視交換機的狀態,這是一個由兩臺交換機進行的堆疊,其中一臺交換機上有一個上連的千兆端口。把筆記本電腦接到交換機的其中一個端口上,再Ping網關。還是同樣的故障,而且還發現每過4~10分鐘,網絡就會斷一次,並且40~50秒後又恢復正常。經過觀察發現:沒有發現端口指示燈的異常情況,說明交換機的各個端口均正常。難道真是交換機的內部系統出現故障了?索性把交換機重啓一下。重啓後,故障依舊。可能交換機真的出了問題,正想是否要把堆疊模組換到另外一個交換機上的時候,手機響了,又一個同事告訴他的機器也出現相同的故障現象。而這個同事的主機在另外一個虛網中,同時出現相同的時通時斷情況。看來極有可能是連接這兩個虛網的路由器出了問題。

這回問題集中到路由器上了。急忙回到網絡中心,從路由器的外部指示燈上看,沒什麼異常現象。在網管機上Ping路由器的地址(網管機是直接連在路由器的百兆模組上的),也是時通時斷。又繼續觀察了一段時間,發現每過4~10分鐘,路由器所有模組的指示燈都會同時熄滅,接着控制模組上的“HBT”燈閃爍,然後“OK”燈亮起,最後所有模組的指示燈均顯示Online。“HBT”燈閃爍表示路由器正在啓動,也就是說正在自動重啓,而且40秒左右的網絡斷開時間正好是路由器的重啓所需的時間。現在問題的查找工作已經結束,肯定是路由器出了故障。具體是什麼問題,還需要進一步的檢測。

在路由器正常工作的時候,把筆記本電腦的COM口使用路由器的專用CONSOLE線連接起來,建立超級終端。在管理模式下使用命令“system show bootlog”檢視系統的啓動記錄,發現各個模組的加載均屬正常。造成路由器重啓的原因,最大的可能就是CPU的利用率達到100%。使用“system show cpu-utilization”命令檢視CPU的使用率:

SSR# system show cpu-utilization

CPU Utilization (5 seconds): 50%(60 seconds): 60%(前者是指5秒鐘內CPU平均使用率爲50%,後者是60秒鐘內CPU平均使用率爲60%。)

果然,連續使用此命令後得知CPU利用率正在逐漸上升,當達到95%的時候路由器便自動重啓。看來路由器的負載太大了,因爲平時正常情況下,CPU的使用率僅爲1%~6%左右。當網絡使用高峯期的時候CPU的利用率會稍微高一點。但到底是什麼讓路由器過載呢?幸好以前曾經給路由器設定過日誌記錄,並把日誌發送到一個日誌服務器上。但是開啟這臺服務器所記錄的日誌並未能找到有用的線索。因爲當路由器負載過大時,它已經不能往日誌服務器上發送日誌了,只能用“system show syslog buffer”命令來檢視當前系統快取中的日誌記錄:

SSR# system show syslog buffer

2003-09-10 09:28:32 %ACL_LOG-I-DENY, ACL [out] on "uplink" ICMP ->

2003-09-10 09:28:32 %ACL_LOG-I-PERMIT, ACL [out] on "uplink" ICMP ->

2003-09-10 09:28:32 %ACL_LOG-I-DENY, ACL [out] on "uplink" ICMP ->

2003-09-10 09:28:32 %ACL_LOG-I-DENY, ACL [out] on "uplink" ICMP ->

2003-09-10 09:28:32 %ACL_LOG-I-DENY, ACL [out] on "uplink" ICMP ->

很明顯,“”這臺在使用ICMP協議向其他主機發起攻擊。據此判斷,這臺主機要麼是中毒,要麼是被黑客利用了。鑑於當時的情況分析,可能是網絡中存在中了“衝擊波殺手”病毒的主機。該病毒使用類型爲echo的ICMP報文來Ping根據自身算法得出的IP位址段,以此檢測這些地址段中存活的主機,併發送大量載荷爲“aa”,填充長度92字節的icmp報文,從而導致網絡堵塞。而且病毒一旦發現存活的主機,便試圖使用135端口的rpc漏洞和80端口的webdav漏洞進行溢出攻擊。溢出成功後會監聽69(TFTP專業端口,用於檔案下載)端口和666~765(通常是707端口)範圍中的一個隨機端口等待目標主機回連。

根據該病毒的傳播機理,立刻在路由器上設定訪問控制列表(ACL),以阻塞UDP協議的69端口(用於檔案下載)、TCP的端口135(微軟的DCOM RPC端口)和ICMP協議(用於發現活動主機)。具體的ACL配置如下:

! --- block ICMP

acl deny-virus deny icmp any any

! --- block TFTP

acl deny-virus deny udp any any any 69

! --- block ter related protocols

acl deny-virus deny tcp any any any 135

acl deny-virus permit tcp any any any any

acl deny-virus permit udp any any any any

最後再把deny-virus這個ACL應用到上連接口(uplink)上:

acl deny-virus apply interface uplink input output

這樣就可以把“衝擊波殺手”從網絡的出口處堵截住。爲了防止已經感染“衝擊波殺手”的主機在校內各個虛網之間傳播,還要把這個ACL應用到校內各虛網的接口上。這時使用並檢視CPU的使用率,恢復到了正常狀態,等待一段時間後,沒有出現重啓現象。

由於路由器不能自動丟棄這種病毒發出的攻擊數據包,而導致了路由器重啓。記得兩年前在“紅色代碼”病毒盛行的時候,也出現過路由器因過載而不斷重啓的現象,升級IOS以後就恢復正常了。爲了徹底解決問題,還應升級路由器的IOS(可以使用“system show version”來檢視當前使用的IOS的版本)。與設備供應商取得聯繫並獲得最新的IOS映像檔案。至此,路由器故障全部解決。

從此例故障處理中,我們可以得到這樣的教訓:時刻關注網絡上事態的發展,並做出相應的解決方案,而且付諸實施。教育網用戶可以在網站上訂閱安全公告服務,一旦有新的漏洞出現,CCERT安全響應小組會自動發送郵件給用戶。該例中由於當時暑假期間得知“衝擊波”後,及時在路由器上做了設定,所以“衝擊波”病毒沒有在網內氾濫,但沒有及時設定相應的ACL,隨後的“衝擊波殺手”導致了這次網絡癱瘓。實際上,在這次“衝擊波”和“衝擊波殺手”的襲擊中,很多城域網也因此陷入癱瘓。這些經歷警告我們:時刻關注網絡安全,及時積極地應對。