還在擔心CC攻擊? 讓我們來了解它, 並儘可能將其拒之服務之外.

  • 2022 年 3 月 28 日
  • 筆記

還在擔心CC攻擊? 讓我們來了解它, 並儘可能將其拒之服務之外.

CC攻擊是什麼?

基本原理

CC原名為ChallengeCollapsar, 這種攻擊通常是攻擊者通過大量的代理機或者肉雞給目標伺服器發送大量貌似合法的請求, 使目標伺服器耗盡計算力(也就是cpu飆升100%), 從而達到拒絕服務的目的.

危害在哪

由於系統待處理的數據隊列被無限的加長, 而客戶端在有效的請求的時間內又得不到響應, 從而以為是網路波動進行相應的重試, 就比如系統每秒能處理1,000QPS, 而現在待處理的隊列已經達到了30,000QPS, 也就是系統現在有空閑運轉30秒才能處理完隊列中的所有請求, 而客戶也是至少需要30秒才能得到響應, 原來(1秒內)就可以, 他在等待了10秒後就會重試, 從而進一步加重了系統的負擔, 從而使系統癱瘓. 而目標的伺服器, 當隊列越來越大, 目標電腦的記憶體耗盡, 會進一步引發程式的崩潰.

舉個栗子

一家餐廳, 對外進行服務, 有一百張位置, 如果正常情況下, 每個人平均的點餐加用餐時間15分鐘, 這家餐廳15分鐘內可以服務100個人(類似QPS), 現在對你搞破壞的人僱傭了100個人來排在你正常的隊伍後面, 他們進入餐廳後, 用磨磨蹭蹭的速度找座位(慢速攻擊), 然後又叫服務員擦桌子, 然後又假裝向服務員點餐, 然後點完餐後又假裝有事不吃了(刷空單, 現實中可能只來一次, 而伺服器中這過程可能重複N次, 從而佔用了大量的資源), 這過程耗時10分鐘, 也就是正常吃飯的人, 至少要10分鐘後才能進入到餐廳, 可能還會叫不到服務員, 即正常的客戶也無法完成用餐服務, 至此這家餐廳在有效期內成功服務個位數的實際客戶, 搞破壞的人達成了目標.

如何防禦

因為CC是攻擊者模擬正常的用戶請求來達到攻擊的目標, 從單個url的角度來看的話, 他們都是合法的請求, 而從全局的角度來看, 這些攻擊者耗廢了大量的伺服器頻寬, CPU且不會產生任何收益. 而攻擊者通常用一定的規格來重複流量的攻擊, 也就是我們看的到的特徵.
由於中國的雲不能禁用udp, 無法有效的防禦DDOS的攻擊, 基本上而目前小企業的比較通用的防禦結構高防機(也就是機房, 成本在2000-5000左右, 能防100G, 能禁UDP, 能禁海外), 而且通常會選擇多機房來做備份防止機房網路波動, 所有直接面向用戶的機子通常是多台的, 也需要把用戶的請求匯總分析才有意義, 單一機子分析無法得出準確的特徵碼
比如攻擊者使用單一的攻擊請求//example.com/api/user, 一直重複的發送, 而正常的用戶請求完user數據之後就會轉入其它的請求, 這攻擊者僅僅請求了/api/user, 且次數在短時間達到了幾百次, 我們就基本上可以斷定這IP為非法的用戶, 我們可以對該IP進行封禁處理

洛甲WAF, 它能做什麼

洛甲WAF是基於openresty的web防火牆,它由多個或者單個節點伺服器和中控伺服器組成, 它將節點的數據請求匯總到中控伺服器做統一的分析, 從而可以自動的識別出哪些用戶是非法IP, 從而實行自動封禁, 基本上能保證90%以上的CC攻擊自動攔截, 保證伺服器的有效正常的運轉.

除了防CC, 他還能做什麼

  • 可在後台配置限制訪問頻率,URI訪問頻率
  • 可後台封禁IP,記錄IP訪問列表
  • 對指定HOST限制流入流出流量或者對全局限制
  • 可統計服務端錯誤內容500錯誤等
  • 可查看請求耗時列表, 伺服器內部負載情況
  • 可在後台配置負載均衡, 添加域名轉發, 無需重啟伺服器
  • 可在後台配置SSL證書, 無需重啟伺服器
  • 對黑名單的用戶,如果頻繁訪問,則防火牆對IP封禁
  • 對GET或者POST參數進行檢查, 防止SQL注入
  • 對指定時間, 或者指定星期進行限制, 防止高峰期流量過載

應用截圖

主頁

配置

負載均衡

SSL證書

相關鏈接

節點伺服器 luojiawaf_lua(nginx+lua)
中控伺服器前端 luajiawaf_web(ant.design)
中控伺服器後端 luajiawaf_server(django)