DDoS(Distributed Denial of Service,分布式拒絕服務)攻擊的主要手段是通過大於管道處理能力的流量淹沒管道或通過超過處理能力的任務使系統癱瘓,所以理論上只要攻擊者能夠獲得比目標更強大的“動力”,目標是注定會被攻陷的。
對於DDoS攻擊來說並沒有100%有效的防御手段。但是由於攻擊者必須付出比防御者大得多的資源和努力才能擁有這樣的“動力”,所以只要我們更好的了解DDoS攻擊,積極部署防御措施,還是能夠在很大程度上緩解和抵御這類安全威脅的。
增強防御力
對抗DDoS攻擊一個很重要的要素就是增強自身的防御能力。使用更大的帶寬及提升相關設備的性能是面對DDoS攻擊最直接的處理方法。雖然這必定需要耗用一定的資源,但是對於那些將生存寄托於這些在線系統的企業來說,進行這種投入是具備足夠理由的。只是在執行這類“硬性增幅”的時候,我們需要把握適度的原則。
因為我們的資源是有限的,如果增加100%的投入僅能在相關性能及DDoS防御力上獲得10%的提升,明顯是一種得不償失的處理方式,畢竟這並不是我們僅有的選擇。而且攻擊者的資源同樣是有限的,在我們增加防御強度的同時,就意味著攻擊者必須集合比原來多得多的攻擊傀儡機來實施攻擊,並且會提高攻擊者暴露的風險。不過應該記住的是,真正有效的DDoS防御並不是陷入與攻擊者“角力”的惡性循環當中,而是應該綜合各種方法,為攻擊者設置足夠的障礙。
目標系統處理
攻擊者的最終目標可能是一台主機,也可能是一台網絡設備。除了對其目標的硬件能力進行增強之外,我們同樣應該充分發揮系統自身的潛能,通過對目標系統的針對性處理,可以有效地放大現有資源的能量。最基本的任務是做好更新補丁的工作。特別是一些操作系統的通訊協議堆棧存在著問題,很容易成為拒絕服務攻擊的利用對象。因為利用漏洞實施拒絕服務攻擊相對於純粹的設施能力比拼要容易的多。如果不能保證消除明顯可被拒絕服務攻擊利用的漏洞,其它的防御工作將只能成為擺設。
好在現在各類系統的補丁更新速度還是比較令人滿意的,只要根據自身環境的情況注意對相關系統的補丁發布情況進行跟蹤就可以了。一些經常被使用的方法還包括限制連接隊列的長度以及減少處理延時等。前者可以緩解系統資源的耗盡,雖然不能完全避免“拒絕服務”的發生,但是至少在一定程度上降低了系統崩潰的可能性。而後者能夠加強系統的處理能力,通過減少延時,我們可以以更快的速度拋棄隊列裡等待的連接,而不是任其堆滿隊列;不過這種方法也不是在所有情況下都有效,因為很多DDoS的攻擊機制並不是建立在類似SYN Flood這樣以畸形連接淹沒隊列的方式之上。
縱深防御
攻擊者和目標通常並非直接相連,兩者之間要經過很多網絡節點才能進行通信。所以我們可以在受保護系統之前盡可能部署有效的屏障,以緩解系統的壓力。設置屏障最主要的工具就是防火牆,先進的防火牆產品能夠有效識別和處理數據包的深層內容,這樣有助於我們設置更加細致的過濾。
現在有很多防火牆產品集成了反DDoS功能,進一步提高了對常見DDoS攻擊包的識別能力。這樣的產品可以在很大程度上增強DDoS防御能力,並且可以做到不對數據包進行完全檢查就可以發現“惡意行為”。這是非常有幫助的能力,因為如果判斷DDoS攻擊所耗費的處理越少,就越不容易被耗盡處理能力,從而極大的增加攻擊者的成本。包括很多路由器產品在內的網絡設備都具備一些_blank">防火牆功能,我們應該盡可能充分的利用。
特別是路由器本身負責對數據流進行導向,應盡可能將其置於“前哨”位置。這樣既可以起到御敵於千裡之外的作用,又可以靈活地將攻擊包導向到其它無害的位置甚至化攻擊於虛無。當然,攻擊者對這些防御層也會有或淺或深的體認,不會一味地以目標系統作為惟一的打擊點,他們很可能會在受到這些設施的阻撓之後轉而組織針對這些設施的攻擊,這就需要我們動態的對防御設施進行調整,隨機應變。
除了以上這些基礎的方法和工具之外,還有一些更高級的技巧可以利用,例如我們可以進行冗余設計,以在系統癱瘓於攻擊發生時有可以隨時啟用的應急機制;也可以部署一些陷阱部件,既可以用於吸引攻擊流量,也可以對攻擊者起到一定的迷惑作用。