再談到 DDoS 之前,我們要先談到 DoS (Denial of Service,阻斷服務攻擊)。 DoS,嚴格來說其所指的並不是一種特定的攻擊方式,而是所有影響資訊可用性 (Availability) 的破壞行為。換句話說,DoS 並不以竊取機密資料 (Confidentiality) 或破壞資料完整性 (Integrity) 為主。對許多人而言,AIC (Availability、Integrity 與 Confidentiality) 中的 A 可能會被認為是其中危害最小的一個。畢竟對於大多數的 DoS 攻擊而言,攻擊過後就像沒有甚麼事情都不曾發生一樣,所有的網路、系統、程式還是可以持續運作。但是隨著人類對於資訊系統依賴程度的提高,DoS 的影響已經從原來的不便,擴大到了會造成實際金錢的損失,有時候甚至可能是生命的損失。而且可用性受到影響,往往也最容易被使用者所發現,所以對服務提供者來說,直接面對的問題就是因此導致使用者信心的流失。DDoS (Distributed Denial of Service,分散式阻斷服務攻擊) 的目的與 DoS 一樣,只是利用人 (機) 海戰術來增加破壞的成功機率。除了增加成功的機率,人海戰術也可以讓被攻擊的對象失去明確的回擊目標(這裡指的回擊不一定是技術上的回擊,更包含法律上的回擊)。
也因為這樣,舉凡任何一個資訊系統內的元件都可能是 DoS/DDoS 攻擊的目標。包含網路頻寬、網路設備、伺服器、應用程式,都是可能的對象,而且不管是軟、硬體都無法避免受到這類問題的影響。如果以 TCP/IP 協定來說,從實體層、網路層、傳輸層,再到應用層,每一層都有可能成為 DoS/DDoS 的目標。這樣看來,很多看似不相干的攻擊行為,其實都可以歸類在 DoS/DDoS 的範疇之內。舉例來說,當一個駭客透過 SQL Injection 的方式將整個資料庫內的資料刪除時,雖然跟傳統上所認知的 DoS/DDoS 攻擊不同,但是卻也是一種貨真價實的 DoS 攻擊,而其透過的管道則是應用程式的弱點。如果以這種角度來看,DoS/DDoS 幾乎可以說是無法 (完全) 加以避免的,因為任何資訊安全的弱點都有可能被用來當作 DoS/DDoS 攻擊的管道。不過幸運的是,沒有人會讓這樣的事情發生,因為這樣一來廠商就沒的混了,所以在大部分的資料中針對 DoS/DDoS 還是有一些標準的手法可供參考 (這樣才有辦法找出共通性的解決方案)。
根據 CEH 的分類,DDoS 的架構圖如下
- DDoS Attacks
- Bandwidth Depletion
- Flood Attack
- TCP
- UDP
- ICMP
- Amplication Attack
- Smurf
- Fraggle
- Flood Attack
- Resource Depletion
- Protocol Exploit Attack
- TCP SYN Attack
- PUSH+ACK Attack
- Malformed Packet Attack (such as teardrop)
- Protocol Exploit Attack
- Bandwidth Depletion
不可否認,這些手法多還是屬於網路層的攻擊方式。除此之外,還有所謂的 Reflective DNS 攻擊,就是假冒受害者做出許多的 DNS 查詢動作,讓這些大量回應將受害者的網路與系統處理能力耗盡。這些方式都是透過標準的協定(TCP/IP 相關協定) 所進行,因此可以採用一些共通性的應對措施。跟其他資安問題的應對措施相比,DDoS 應對措施有不少是屬於被動性的,也就是其目的是減少當遭受 DDoS 攻擊時產生的負面影響,而不是事前的預防或即刻消弭的。這些措施大多已經實現在各種網路設備當中,防火牆、路由器、交換器、IPS,都有對應的機制可以減緩 DDoS 的攻擊。為什麼我說減緩,因為這些設備通常都在使用者的網路環境內,就算防禦的再好,依舊可能因對外頻寬被耗盡而無法提供正常的 (網際網路) 連線能力。所以,想要有效地減少 DDoS 攻擊的影響絕對需要 ISP 的協助。至於 ISP 會不會提供協助?從 DDoS 攻擊依舊發生的情況來看,顯然 ISP 並沒有提供這樣的服務,至少不會主動提供。如果 ISP 沒有提供這樣的服務,而且又沒有辦法更換 ISP,那麼一種可能性就是把系統移到具備這樣能力的 Datacentor,讓責任歸屬比較單純化。此外,也有一些廠商 (如 VeriSign) 提供所謂過濾流量的服務,可以讓所有應該流到客戶的流量先導到他們所管理的網路,再經由這些網路把正常的流量傳遞給客戶。需要特別注意的是,即使採用了這些先進的服務,系統依舊無法完全擺脫 DoS/DDoS 的陰影。舉例來說,要讓一個網路服務癱瘓,有時候並不需要攻擊提供服務的系統本身,只要把相關的 DNS 伺服器打趴就可以了。所以如果 DNS 伺服器沒有保護好,系統保護得再好也是無濟於事。更何況廠商本身就不會成為攻擊的目標嗎?
如果我們再把問題延伸一下,是不是可以在更上游的地方就攔截這些惡意的流量呢?理論上是可以的,但是這個需要 ISP 之間的互助。更好的方法,就是讓這些駭客根本沒有辦法招集足夠的殭屍大軍來進行 DDoS 攻擊。很可惜的是,殭屍大軍所招募的電腦並不在我們的掌控中,所以我們無法透過這種方式來保護我們自己免於遭受 DDoS 的攻擊。但是以另一個角度來看,身為網際網路的一份子,避免自己成為殭屍大軍的一員是一個很基本且重要的事項。如果每個網際網路上的使用者都能發揮『我為人人,人人為我』的心態,或許 DDoS 的事件就可以減少許多。
所以,如果你的角色是網路/作業系統管理者,那麼恭禧你,你有很多現成的方法可以解決 DoS/DDoS 的困擾。但是如果你是應用系統開發者,那麼你必須採用SSDLC,找出相關的風險,並尋求解決之道。因為應用系統的可用性,完全依賴在網路/作業系統的可用性,因此你有絕大部分的時機需要網路/作業系統管理者的配合才能解決問題。畢竟,網路或是作業系統的問題,就應該在網路與作業系統的層級加以解決,應用系統則專注於避免應用程式層面的安全議題。所以對於一個組織而言,如何能夠在各個職務之間維持各自專業分工的同時還能夠保持密切的合作,將是對付 DoS/DDoS 最為有效的策略。最後,如果有人 (廠商) 跟你說他可以幫助你完全避免遭受到 DoS/DDoS 的攻擊,那他百分之分百是在騙你。對網路層的攻擊是如此,對應用程式層的攻擊更是如此。不相信我說的?所有的資訊安全專家都知道風險永遠不可能完全加以消弭,問題只在於他們敢不敢告訴你。
相關連結:
沒有留言:
張貼留言