您現(xiàn)在的位置:首頁(yè) >關(guān)于我們 >行業(yè)新聞 >當(dāng)網(wǎng)站遭遇DDoS攻擊的解決方案及展望
一、事件發(fā)生
春節(jié)長(zhǎng)假剛過(guò)完,WEB就出現(xiàn)故障,下午1點(diǎn)吃完回來(lái),立即將桌面解鎖并習(xí)慣性的檢查了Web服務(wù)器。通過(guò)Web服務(wù)器性能監(jiān)視軟件圖像顯示的向下滑行的紅色曲線看到WEB出現(xiàn)問(wèn)題了。
根據(jù)上述的問(wèn)題,我馬上開(kāi)始核查Web服務(wù)器的日志,試試是否能檢測(cè)到問(wèn)題究竟什么時(shí)候開(kāi)始,服務(wù)器租用或者發(fā)現(xiàn)一些關(guān)于引起中斷的線索。正當(dāng)查詢線索過(guò)程中。公司首席運(yùn)營(yíng)官(CIO)告訴我,他已經(jīng)接到客戶的投訴電話,報(bào)告說(shuō)無(wú)法訪問(wèn)他們的網(wǎng)站。于是從臺(tái)式機(jī)中敲入網(wǎng)站地址,試著從臺(tái)式電腦訪問(wèn)他們的網(wǎng)站,但是看到的只是無(wú)法顯示此頁(yè)面的消息。
回想前幾天也未對(duì)Web服務(wù)器做了任何改變也未對(duì)Web服務(wù)器做過(guò)任何改變,服務(wù)器曾經(jīng)出現(xiàn)過(guò)的性能問(wèn)題。在Web服務(wù)器的日志文件中沒(méi)有發(fā)現(xiàn)任何可疑之處,因此接下來(lái)我去仔細(xì)查看防火墻日志,和路由器日志。仔細(xì)查看了防火墻日志,打印出了那臺(tái)服務(wù)器出問(wèn)題時(shí)的記錄。并過(guò)濾掉正常的流量并保留下可疑的記錄。表中顯示了打印出來(lái)的結(jié)果。
表一 防火墻日志
解釋:
IP packet sizedistribution 這個(gè)標(biāo)題下的兩行顯示了數(shù)據(jù)包按大小范圍分布的百分率。這里顯示的內(nèi)容表明:98.4%的數(shù)據(jù)包的大小在33字節(jié)到64字節(jié)之間(注意紅色標(biāo)記)。
正常路由日志
圖二
IP packet sizedistribution 這個(gè)標(biāo)題下的兩行顯示了數(shù)據(jù)包按大小范圍分布的百分率。這里顯示的內(nèi)容表明:2%的數(shù)據(jù)包的大小在33字節(jié)到64字節(jié)之間。
注意網(wǎng)站的訪問(wèn)量直線下降。很明顯,在這段時(shí)間沒(méi)人能訪問(wèn)他的Web服務(wù)器。我開(kāi)始研究到底發(fā)生了什么,以及該如何盡快地修復(fù)。
二、事件分析
我的Web服務(wù)器發(fā)生了什么?很有可能攻擊,那么受到什么樣的攻擊呢?從這一攻擊是對(duì)回顯端口看,即是端口7,不斷發(fā)送小的UDP數(shù)據(jù)包來(lái)實(shí)現(xiàn)。攻擊看似發(fā)自兩個(gè)策源地,可能是兩個(gè)攻擊者同時(shí)使用不同的工具。在任何情況下,超負(fù)荷的數(shù)據(jù)流都會(huì)拖垮Web服務(wù)器。然而攻擊地址源不確定,不知道是攻擊源本身是分布的,還是同一個(gè)地址偽裝出許多不同的IP地址,這個(gè)問(wèn)題比較難判斷。假如源地址不是偽裝的,是真實(shí)地址,則可以咨詢ARIN I美國(guó)Internet號(hào)碼注冊(cè)處,從它的"whois"數(shù)據(jù)庫(kù)查出這個(gè)入侵1P地址屬于哪個(gè)網(wǎng)絡(luò)。接下來(lái)只需聯(lián)系那個(gè)網(wǎng)絡(luò)的管理員就可以得到進(jìn)一步的信息。
那么假如源地址是偽裝的,追蹤這個(gè)攻擊者就麻煩得多。若使用的是Cisco路由器,服務(wù)器租用則還需查詢NetFlow高速緩存。NetFlow是Cisco快速轉(zhuǎn)發(fā)(CEF)交換框架的特性之一。為了追蹤這個(gè)偽裝的地址,必須查詢每個(gè)路由器上的NetFlow緩存,才能確定流量進(jìn)入了哪個(gè)接口,然后通過(guò)這些路由器一次一個(gè)接口地往回一路追蹤,直至找到那個(gè)IP地址源。然而這樣做是非常難的,因?yàn)樵赪eb Server和攻擊者的發(fā)起pc之間可能經(jīng)由許多路由器,而且屬于不同的組織。另外,必須在攻擊正在進(jìn)行時(shí)做這些分析。
經(jīng)過(guò)分析之后,將防火墻日志和路由器日志里的信息關(guān)聯(lián)起來(lái),發(fā)現(xiàn)了一些有趣的相似性,如表黑色標(biāo)記處。攻擊的目標(biāo)顯然是Web服務(wù)器192.68.0.175,端口為UDP 7,即回顯端口。這看起來(lái)很像拒絕服務(wù)攻擊(但還不能確定,因?yàn)楣舻姆植己茈S意)。地址看起來(lái)多多少少是隨意而分散的,只有一個(gè)源地址是固定不變的,其源端口號(hào)也沒(méi)變。這很有趣。接著又將注意力集中到路由器日志上。
立刻發(fā)現(xiàn),攻擊發(fā)生時(shí)路由器日志上有大量的64字節(jié)的數(shù)據(jù)包,而此時(shí)Web服務(wù)器日志上沒(méi)有任何問(wèn)題。他還發(fā)現(xiàn),案發(fā)時(shí)路由器日志里還有大量的"UDP-other"數(shù)據(jù)包,而Web服務(wù)器日志也一切正常。這種現(xiàn)象與基于UDP的拒絕服務(wù)攻擊的假設(shè)還是很相符的。
攻擊者正是用許多小的UDP數(shù)據(jù)包對(duì)Web服務(wù)器的回顯(echo 7)端口進(jìn)行洪泛式攻擊,因此他們的下一步任務(wù)就是阻止這一行為。首先,我們?cè)诼酚善魃隙陆毓?焖俚貫槁酚善髟O(shè)置了一個(gè)過(guò)濾規(guī)則。因?yàn)樵吹刂返膩?lái)源很隨機(jī),他們認(rèn)為很難用限制某個(gè)地址或某一塊范圍的地址來(lái)阻止攻擊,因此決定禁止所有發(fā)給192.168.0.175的UDP包。這種做法會(huì)使服務(wù)器喪失某些功能,如DNS,但至少能讓W(xué)eb服務(wù)器正常工作。
路由器最初的臨時(shí)DoS訪問(wèn)控制鏈表(ACL)
1.access-list 121 remark Temporary block DoS attack on web server 192.168.0.175 2.access-list 105 deny udp any host 192.168.0.175 3.access-list 105 permit ip any any 這樣的做法為Web服務(wù)器減輕了負(fù)擔(dān),但攻擊仍能到達(dá)web,在一定程度上降低了網(wǎng)絡(luò)性能。 那么下一步工作是聯(lián)系上游帶寬提供商,想請(qǐng)他們暫時(shí)限制所有在他的網(wǎng)站端口7上的UDP入流量。這樣做會(huì)顯著降低網(wǎng)絡(luò)上到服務(wù)器的流量。
三、針對(duì)DoS預(yù)防措施
對(duì)于預(yù)防及緩解這種帶寬相關(guān)的DoS攻擊并沒(méi)有什么靈丹妙藥。本質(zhì)上,這是一種"粗管子打敗細(xì)管子"的攻擊。攻擊者能"指使"更多帶寬,有時(shí)甚至是巨大的帶寬,就能擊潰帶寬不夠的網(wǎng)絡(luò)。在這種情況下,預(yù)防和緩解應(yīng)相輔相成。
有許多方法可以使攻擊更難發(fā)生,或者在攻擊發(fā)生時(shí)減小其影響,具體如下:
針對(duì)DDoS預(yù)防措施
看了上面的實(shí)際案例我們也了解到,許多DDoS攻擊都很難應(yīng)對(duì),服務(wù)器租用因?yàn)楦闫茐牡闹鳈C(jī)所發(fā)出的請(qǐng)求都是完全合法、符合標(biāo)準(zhǔn)的,只是數(shù)量太大。借助恰當(dāng)?shù)腁CL,我們可以阻斷ICMP echo請(qǐng)求。但是,如果有自己的自治系統(tǒng),就應(yīng)該允許從因特網(wǎng)上ping你。不能ping通會(huì)使ISP或技術(shù)支持團(tuán)隊(duì)(如果有的話)喪失某些故障排解能力。也可能碰到具有Cisco TCP截獲功能的SYN洪流:
1.Router(config)#ip tcp intercept list 101 2.Router(config)#ip tcp intercept max-incomplete high 3500 3.Router(config)#ip tcp intercept max-incomplete low 3000 4.Router(config)#ip tcp intercept one-minute high 2500 5.Router(config)#ip tcp intercept one-minute low 2000 6.Router(config)#access-list 101 permit any any 如果能采用基于上下文的訪問(wèn)控制(Context Based Access Control,CBAC),則可以用其超時(shí)和閾值設(shè)置應(yīng)對(duì)SYN洪流和UDP垃圾洪流。例如:
1.Router(config)# ip inspect tcp synwait-time 20 2.Router(config)# ip inspect tcp idle-time 60 3.Router(config)# ip inspect udp idle-time 20 4.Router(config)# ip inspect max-incomplete high 400 5.Router(config)# ip inspect max-incomplete low 300 6.Router(config)# ip inspect one-minute high 600 7.Router(config)# ip inspect one-minute low 500 8.Router(config)# ip inspect tcp max-incomplete host 300 block-time 0 警告:建議不要同時(shí)使用TCP截獲和CBAC防御功能,因?yàn)檫@可能導(dǎo)致路由器過(guò)載。
打開(kāi)Cisco快速轉(zhuǎn)發(fā)(Cisco Express Forwarding,CEF)功能可幫助路由器防御數(shù)據(jù)包為隨機(jī)源地址的洪流。可以對(duì)調(diào)度程序做些設(shè)置,避免在洪流的沖擊下路由器的CPU完全過(guò)載:
1.Router(config)#scheduler allocate 3000 1000 在做了這樣的配置之后,IOS會(huì)用3s的時(shí)間處理網(wǎng)絡(luò)接口中斷請(qǐng)求,之后用1s執(zhí)行其他任務(wù)。對(duì)于較早的系統(tǒng),可能必須使用命令scheduler interval<milliseconds>。
四、總結(jié)
無(wú)論是出于報(bào)復(fù)、敲詐勒索、發(fā)起更大規(guī)模攻擊,DoS或DDoS攻擊都是一種不容輕視的威脅。非同一般的DoS攻擊通常是某種不完整的漏洞利用,使系統(tǒng)服務(wù)崩潰,而不是將控制權(quán)交給攻擊者。防范這種攻擊的辦法是及時(shí)打上來(lái)自廠商的補(bǔ)丁,或者對(duì)于Cisco系統(tǒng),及時(shí)將操作系統(tǒng)升級(jí)到更新版本。同時(shí),要關(guān)閉有漏洞的服務(wù),或者至少要用訪問(wèn)控制列表限制訪問(wèn)。
常規(guī)的DoS攻擊,特別是DDoS攻擊,經(jīng)常不是那么有章法,也更難防范。服務(wù)器租用如果整個(gè)帶寬都被蹩腳的ping洪流所耗盡,我們所能做的就很有限了。最后,必須與ISP和權(quán)力部門協(xié)作,盡可能從源頭上阻止攻擊。要用不同供應(yīng)商、不同AS路徑并支持負(fù)載均衡功能的不止一條到因特網(wǎng)的連接,但這與應(yīng)對(duì)消耗高帶寬的常規(guī)DoS/DDoS洪流的要求還相差很遠(yuǎn)。我們總是可以用CAR或NBAR來(lái)拋棄數(shù)據(jù)包或限制發(fā)動(dòng)進(jìn)攻的網(wǎng)絡(luò)流速度,減輕路由器CPU的負(fù)擔(dān),減少對(duì)緩沖區(qū)和路由器之后的主機(jī)的占用。
海騰公告海騰數(shù)據(jù)最新新聞公告
Copyright© 2004-2020 河南海騰電子技術(shù)有限公司 版權(quán)所有 經(jīng)營(yíng)性ICP/ISP證 備案號(hào):B1-20180452 豫公網(wǎng)安備 41019702002018號(hào) 電子營(yíng)業(yè)執(zhí)照