淺談 CC 攻擊的防護方法
阿新 • • 發佈:2019-01-11
什麼是 CC 攻擊
CC(Challenge Collapsar)原意是挑戰黑洞。黑洞是綠盟科技的一款抗分散式拒絕服務攻擊產品,因其在抗 WEB 分散式拒絕服務攻擊能力較為出色。因此,用向黑洞發起挑戰代指 WEB 服務的分散式拒絕服務攻擊。
該攻擊與我們常見的 DDOS(網路層分散式拒絕服務攻擊)不同之處在於,CC 攻擊只會導致 WEB服務或者只是 WEB 服務中的某一介面或單一頁面無法服務,相比網路層的拒絕服務攻擊,其優勢在於能夠使用相對較少的資源對更為精確的目標進行攻擊。
攻擊方式
主要的攻擊方式分為快速和慢速兩種:
- 快速 CC 攻擊是指快速請求伺服器處理消耗較大的頁面或者介面,這種方式是通過大量佔用伺服器的 CPU、IO 等資源,致使伺服器無法正常響應其它使用者的請求。
- 慢速 CC 攻擊是指是通過與伺服器建立連線後,以最慢的速度傳送請求/讀取響應,通過佔用伺服器的程序、執行緒、網路套接字等資源,達到導致伺服器無法繼續服務的目的,這種攻擊一般針對 Apache、httpd 這類 thread-base 架構的伺服器。
防護手段
針對兩種不同型別的攻擊防護方式分別是:
- 快速攻擊: 限制單一源IP的請求速率、限制併發連線數
- 慢速攻擊: 限制單一請求的超時時間
Nginx 和 Apache 都有相應的模組來解決這類問題,只要配置得當能夠抵擋住大多數的 CC 攻擊,以下我們以 Nginx 為例看看具體的配置。
限制單一源 IP 的請求速率,平均每秒不超過 1 個請求,並且突發不超過 5 個請求:
http {
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
...
server {
...
location /limit_req/ {
limit_req zone=one burst=5;
}
}
限制併發連線數,單一源 IP 最大併發數是 100,總的連線數不超過 1000:
http { limit_conn_zone $binary_remote_addr zone=one:10m; limit_conn_zone $server_name zone=perserver:10m; ... server { ... limit_conn one 100; limit_conn perserver 1000; ... }
限制單個請求的超時時間:
http {
...
server {
...
client_header_timeout 60s; //等待客戶端傳送請求頭的超時時間,將這個值改小可以應對慢速傳送請求頭的CC攻擊;
client_body_timeout 60s; //讀取客戶端傳送請求體的超時時間,將這個值改小可以應對慢速傳送請求體的CC攻擊;
keepalive_timeout 75s; //與客戶端的連線超時時間,如果連線大量被佔用,可以將其改小一些,釋放被佔用的連線,減輕伺服器壓力;
...
}
滴滴雲 WAF 防 CC 配置
目前使用較多的 CC 攻擊還是以快速攻擊為主,因為慢速攻擊同樣要消耗大量的客戶端資源,除非有大量肉雞做為攻擊源。
針對較為流行的快速 CC 攻擊,滴滴雲 WAF 提供了一套簡單易用的防護方案,使用者只要根據需要輸入幾個引數,即可實現快速的 CC 防護能力部署,不需要掌握不同伺服器的不同防護模組的配置方法,省時省力又省心!
以下是現有的防護配置頁面,僅供參考:
主要配置說明:
- URI:URL 中的路徑部分,不需要帶引數(即去除問號後面的部分)
- 統計週期:記錄這一時間內的請求數
- 訪問閾值:請求次數的上限
- 同時可以選擇根據源 IP、UA、Referer 等條件組合進行精準過濾
- 封禁方式可以選擇攔截或觀察
- 封禁時長按分鐘配置
總結
本文主要是希望能夠幫助讀者快速的瞭解什麼是 CC 攻擊、有哪些方式、常規的防護方式有哪些以及如何使用滴滴雲 WAF 進行防護。