1. 程式人生 > >淺談 CC 攻擊的防護方法

淺談 CC 攻擊的防護方法

什麼是 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 進行防護。