標籤:伺服器 用戶端 文章 朋友 駭客
很多年前的文章,似乎仍然有參考意義。
前幾周幫一個網吧解決了經常掉線的故障,現在把這次故障解決的經曆寫出來,也許對大家有所啟示。
網吧給我描述的故障現象是網吧無規律掉線,表現是下面所有用戶端都不能上網,而上網伺服器仍然能夠上網,也就是說對方ISP線路沒有問題,掉線之後重啟上網伺服器網路又恢複正常,於是把問題定位在網吧內部,網吧網路結構1。
650) this.width=650;" title="clip_image002" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="clip_image002" src="http://img1.51cto.com/attachment/201411/1/9437529_14148552540iXx.jpg" "411" height="325" />
經過分析,認為大致可能是以下原因造成網吧掉線:
1, 上網伺服器內網卡到主交換器這段的問題,比如上網伺服器的內網卡有問題,或者上網伺服器本身有問題(比如電源風扇或CPU風扇壞掉),或者主交換器與上網伺服器內網卡之間的連線有問題,或者主交換器有問題;
2, 網吧用戶端有病毒發送大量資料包導致網路堵塞;
3, 網吧用戶端的網卡壞或者交換器的連接埠損壞;
4, 網吧內部有人進行攻擊,比如常見的ARP攻擊。
但到底是什麼原因,也只有一個一個地排除,於是首先要排除上面描述的第1個可能,為了排除第1個可能,老闆重新換了一個主交換器測試,也換掉了主交換器與上網伺服器內網卡之間的網線,並且我也重新安裝並配置了一台上網伺服器,也就是說如果是第1個可能造成的掉線,那麼問題就應該得到解決,時間一天一天地過去,但要到一周的時間時網吧老闆又打來電話說網路又掉線了,這並沒有出乎我的意料,因為原來在檢查上網伺服器等等時,並沒有探索服務器有造成網路掉線的重大嫌疑,雖然它安裝了一些多餘無用的協議,但這並不足以影響內部網路掉線,最多影響網路效能而已。
於是開始懷疑內部用戶端的問題,但心中馬上又排除了第2個可能,因為網吧都安裝了還原精靈之類的東西,重啟後電腦都還原了,所以用戶端不應該有什麼病毒的,而且這種時間間隔的掉線也不像用戶端網卡壞或者交換器連接埠壞,於是想到了第4種可能,難道是有人在進行攻擊,既然是可能是有人在進行攻擊,那就只有當他在攻擊時才能確定真實原因,如果攻擊者沒有在現場,我去了也找不出原因的,於是一次網吧老闆再次打電話說掉線之後,我就迅速趕到了現場,到了網吧,我就在上網伺服器上輸入arp –a命令,結果讓我大吃一驚,這不就是猜想中的ARP攻擊嗎?(如下)
C:\Documents and Settings\Administrator>arp -a
Interface: 192.168.0.1 --- 0x10004
Internet Address Physical Address Type
192.168.0.12 00-11-09-d5-86-4a dynamic
192.168.0.13 00-11-09-d5-86-4a dynymic
192.168.0.15 00-11-09-d5-86-4a dynymic
……………………………………………
從上面的ARP緩衝表可以看出,所有的內網IP對應的MAC地址都被修改成一樣的了,這個修改後的MAC地址就可能是攻擊者的MAC地址,因為這樣所有到其他IP的資料將被傳遞到這台攻擊機,以實現攻擊者的某些需要,比如盜取各種密碼等,那這個MAC對應的真實IP又是誰呢?因為原來的MAC地址沒有登記,所以只有通過IP來找到相應的上網用戶端,於是只有在上網伺服器上安裝上一個sniffer軟體,看到底是哪個IP在發送攻擊性的資料包,2是我用Ethereal監聽之後過濾出來的所有ARP通訊,這是我首先看到的一部分,可以看出,圖2是ARP廣播,實質上是攻擊者在進行掃描,以確定哪些機器線上,因為線上的機器會對這個ARP廣播做出應答,不過這也馬上暴露了攻擊者自身,從圖2 可以看出,現在的掃描者是IP為192.168.0.56的客戶機(56號機),當然這還不能充分證明它就是攻擊者,我們再看看下面的資料包(圖3)。
650) this.width=650;" title="clip_image004" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="clip_image004" src="http://img1.51cto.com/attachment/201411/1/9437529_1414855255sUP0.jpg" "557" height="133" />
650) this.width=650;" title="clip_image006" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="clip_image006" src="http://img1.51cto.com/attachment/201411/1/9437529_1414855256TWcg.jpg" "558" height="93" />
請注意圖3中高亮選中的行,源MAC是攻擊機,目標MAC是上網伺服器的內網卡,這裡攻擊機冒充192.168.0.86這台機器對網關說86號機的MAC地址是00-11-09-d5-83-2d(這本是攻擊機的MAC地址),這樣做的結果就是網關發送給86機器的資料將發送到攻擊者,緊接著上面的下一行,攻擊者給另一台機器(經查是85號機)說網關的MAC地址是攻擊者的MAC,於是到這裡,攻擊就行成了,因為攻擊者給客戶機說網關的地址是它的MAC,又跟網關說客戶機的MAC是它的MAC地址,於是所有通訊的資料都到達了攻擊機,從而到達它擷取網內其他使用者帳號和密碼的要求,當然也很有可能這隻是純粹的攻擊而已。於是此後網速會越來越慢,直至崩潰,如果此時攻擊者關機,那麼整個網路就會表現突然掉線,因為此時客戶機都不能與這個假“網關”通訊了,當然客戶機也就不能訪問網際網路了,表現出來就是網路掉線了,如果此時上網伺服器重新啟動,由於啟動時它將廣播自己的ARP,這也導致客戶機更新網關的ARP條目,於是網路又恢複正常,但如果攻擊仍在繼續,網路又回像前面一樣慢慢崩潰。
那怎樣來防範這類ARP中間攻擊呢?當然只要攻擊者不能更改別人的ARP緩衝表條目就行了,要做到這一點,我們可以建立靜態ARP表項來實現,但這比較麻煩,因為不光要在網關上建立,還需要在客戶機上進行,在網關上建立所有客戶機的ARP靜態項,這樣攻擊者就不能修改網關上的ARP項,為了不讓攻擊者修改客戶機上的ARP項(通常是修改網關條目),還需要在客戶機的ARP緩衝表中建立至少網關的ARP靜態條目,可以通過下面的方法進行:
(一) 在上網伺服器(網關)上建立所有客戶機的靜態ARP表項
1,使用arp –a > c:\arp.txt把所有動態ARP表項定向到一個文字檔c:\arp.txt
完成後開啟這個文本,刪除掉頂部非ARP表項的部分,結果4所示:
650) this.width=650;" title="clip_image008" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="clip_image008" src="http://img1.51cto.com/attachment/201411/1/9437529_1414855257wCYM.jpg" "507" height="188" />
最好在上網高峰期執行這個命令,這樣才能儘可能得到所有客戶機的MAC地址,當然你也可以手動在後面添加上沒包括進的IP和MAC地址對。
2,建立指令碼檔案c:\bind.bat,內容如下:
FOR /F "tokens=1,2" %%i in (c:\arp.txt) do (arp -s %%i %%j)
它的作用是從前面的arp.txt中提取相應的表項並建立靜態表項。
3,為了讓上網伺服器每次開機都運行上面的指令碼,可以把這個指令碼的捷徑發送到啟動項裡面。
(二) 客戶機的操作
客戶機上的操作同理,只是客戶機只需要綁定網關,當然也可以全部綁定,操作與上面類似,不同的是可以把上面的arp.txt文本放在一個共用資料夾中,然後2、3步作相應改變即可。
當年我幫網吧朋友抓駭客