CC攻擊防護思路
CC攻擊原理及防范思路
1. CC基本原理
CC攻擊利用代理服務器向網站發送大量需要較長計算時間的URL請求,如數據庫查詢等,導致服務器進行大量計算而很快達到自身的處理能力而形成DOS,而攻擊者一旦發送請求給代理后就主動斷開連接,因為代理并不因為客戶端這邊連接的斷開就不去連接目標服務器,因此攻擊機的資源消耗相對很小,而從目標服務器看來,來自代理的請求都是合法的。
2. 以前的方法
為防范CC,以前的方法一個是限制每個IP的連接數,這個在地址范圍很廣闊的情況下比較難實現;二是限制代理的訪問,因為一般的代理都會在HTTP頭中帶X_FORWARDED_FOR字段,但也有局限,有的代理的請求中是不帶該字段的,另外有的客戶端確實需要代理才能連接目標服務器,這種限制就拒絕了這類合法客戶。
3. 思路
CC有效性在于攻擊方不接受服務器回應的數據,發送完請求后就主動斷開連接,因此要確認連接是否是CC,服務器端不立即執行URL請求命令,而是簡單的返回一個頁面轉向的回應,回應中包含新的URL請求地址,如果是正常訪問,客戶端會主動再次連接到轉向頁面,對用戶來說是透明的;而對于CC攻擊者,由于不接收回應數據,因此就不會重新連接,服務器也就不需要進行查詢操作。
4. 具體實現: CC cookie
具體實現的關鍵在于轉向的URL如何構造,我設計的方法是增加CC cookie,即在原URL請求的最后面添加一個獨一無二的cookie,文本形式,作為URL的一部分;當包含該cookie的URL重新返回時,先檢查該cookie是否合法,如果合法,則說明該URL是合法的再次連接,將URL中的cookie部分抹去,恢復為原始的URL請求再發給服務器進行正常訪問;否則拒絕該URL。
5. 安全性考慮
為保證此方法的有效,需要注意以下問題:
1)cookie的選擇,要對每個URL請求都不同,即使URL是相同的,有兩種方式,一種是根據所請求的URL和客戶端的信息和一些隨機信息計算出一個cookie值,檢驗時按相同的方式計算cookie是否符合;第二種方式是直接隨機生成cookie,然后將cookie保存到一個庫中,檢驗時就是檢查客戶端提交的cookie是否在庫中。無論哪種方法,cookie的選擇必須足夠隨機,不能被猜出計算規律或猜出當前cookie庫中有哪些cookie;
2)cookie添加到URL時的格式標志必須獨特,不能和正常URL請求中有沖突的地方,這個應該是可以控制的,因為要保護的服務器是在自己控制之下的,URL有哪些格式是可控的,因此設計一個獨特的cookie標志是可行的,而且這個標志格式應該經常變換;
3)cookie的有效時間,cookie只在一定時間內有效,超時將刪除,時間選擇必須合適,不要太長或太短;
4)cookie dos攻擊,如果CC攻擊程序發現服務器用了cookie保護而中預先帶了cookie,必須能比較快速地檢測這個cookie是否合法,對于非法cookie的連接請求丟棄;cookie標志也要經常變換以防止DOS;
5)提高效率方法,對于HTTP/1.1的連接,有keep-alive選項,一個連接中可以進行多次URL請求操作,對于已經認證了的連接,如果該連接中繼續有URL請求的話,可以不用再進行cookie認證以提高效率;此外,應該可以指定只對某些類型的URL進行cookie處理,如cgi、php、asp的請求,而普通靜態文本或圖片、媒體等URL不用進行cookie處理。
6. 結論
本文提出的這種CC cookie防御方法可以有效防御CC攻擊,而不會影響正常用戶的訪問,對用戶來說是透明的。本方法比較適合在防火墻上實現,也可以由服務器本身實現。
如果有不明白或者搞不定的難題,歡迎登陸銳速云官網尋找專家解決難題!http://www.cctvsxt.cn/