大家有搶過很熱門的演唱會門票的經驗吧?當同一時間有大量的流量湧進時,網站就會癱瘓,服務也無法正常運行,使用者就會開始怨聲載道,但這還是正常使用者使用的情境,當如果今天是惡意的流量攻擊時,很有可能就是分散式阻斷服務攻擊 (Distributed Denial of Service, DDoS)。
DDoS 的攻擊跟正常攻擊最不一樣的是,他的請求數會異常的高,最終的目的就是要讓伺服器的資源耗盡,讓網站提供的服務完全不能使用。
那攻擊者哪裡來這麼多的流量?一部分的來源可能就是藉由惡意軟體或是點擊,入侵取得使用者的使用權,像殭屍一樣只要一個指令命令下去,所有的殭屍網路就會發動攻擊。或者攻擊這藉由租用的服務,同時也可以發起大流量的攻擊。
要可以抵禦 DDoS 大流量的攻擊,可以使用內容傳遞網路 (CDN)的服務,CDN 可以將流量分散到其他條沒有塞車的路,不讓同一個線路被擠爆。
另外也可以藉由「流量清洗」,就像是在一個門口進行安檢,可以過濾掉看起來惡意的流量,只讓正常的流量進入。
還有另外一個也是流量攻擊,叫做「CC 攻擊」,CC 攻擊不是一次出動很多的流量,而是將流量賺=專注於持續做最複雜、最耗時的項目,利用每一個伺服器的查詢來癱瘓機器。
這些動作例如「登入」、「搜尋」,每一次的動作都需要伺服器到資料庫裡去查詢。這樣的攻擊也最有攻擊力,因為都是挑選針對服務的弱點發動請求。
針對 CC 攻擊,可以使用的應對方式就是使用者現在很常見的驗證碼 (CAPTCHA),利用勾選或是圖片辨識,這些對於人類很簡單,但機器人卻有難度的審核機制,去擋下第一波防線。
另外一個方法就是「限制請求頻率 (Rate Limiting)」,針對同一個 IP,如果他的請求量大於一定數量,就可以暫時封鎖這個 IP。
使用檢查行為的防火牆也可以辨識 CC 攻擊,這類型的防火牆可以發現這些 IP 背後的操作行為是不是一樣,如果都是相似的(例如以一樣的速度點擊同一個按鈕),防火牆就可以在這些流量到達伺服器前就將他們擋下來。
比起 DDoS,CC 攻擊是一個更為縝密的攻擊行爲,所以因應的方式不能只是將流量導轉,而是要設置不同的關卡才能真正保護到服務。