<optgroup id="srizi"></optgroup>

<optgroup id="srizi"></optgroup>

系統城裝機大師 - 唯一官網:www.jasafloorhardener.com!

當前位置:首頁 > 網絡知識 > 入侵防御 > 詳細頁面

什么是CC攻擊,如何防止網站被CC攻擊的方法總匯

時間:2019-12-18來源:系統城作者:電腦系統城

 CC攻擊(Challenge Collapsar)是DDOS(分布式拒絕服務)的一種,也是一種常見的網站攻擊方法,攻擊者通過代理服務器或者肉雞向向受害主機不停地發大量數據包,造成對方服務器資源耗盡,一直到宕機崩潰。

  CC攻擊的攻擊技術含量低,利用工具和一些IP代理,一個初、中級的電腦水平的用戶就能夠實施攻擊。不過,如果了解了CC攻擊的原理,那就不難針對CC攻擊實施一些有效的防范措施。

  通常防止CC攻擊的方法有幾種,一個是通過防火墻,另外一些網絡公司也提供了一些防火墻服務,例如XX網站衛士和XX寶,還有一種方法是自己寫程序預防,昨天網站遇到CC攻擊,這也讓我嘗試了一下各種防止CC攻擊方法的有效性。

 

  一開始我想使用某某網站衛士來預防攻擊,從界面上看,似乎是防止了大量的CC攻擊,但登錄網站后發現,流量依舊異常,攻擊還是依舊,看起來這個網站衛士的效果并沒有達到。

網站防止CC攻擊的方法

  從原理上看,基本上所有的防火墻都會檢測并發的TCP/IP連接數目,超過一定數目一定頻率就會被認為是Connection-Flood。但如果IP的數量足夠大,使得單個IP的連接數較少,那么防火墻未必能阻止CC攻擊。

  不僅如此,我還發現,啟用了某某網站衛士之后,反而更容易被CC攻擊,因為這個網站衛士并不能過濾掉CC攻擊,攻擊的IP經過其加速后,更換成為這個網站衛士的IP,在網站服務器端顯示的IP都是相同的,導致服務器端無法過濾這些IP。

 

  實際上,不使用網站衛士類的服務,直接通過分析網站日志,還是很容易分辨出哪個IP是CC攻擊的,因為CC攻擊畢竟是通過程序來抓取網頁,與普通瀏覽者的特性區別還是很大的,例如普通瀏覽者訪問一個網頁,必定會連續抓取網頁的HTML文件、CSS文件、JS文件和圖片等一系列相關文件,而CC攻擊者僅僅只會抓取一個URL地址的文件,不會抓取其他類型的文件,其User Agent也大部分和普通瀏覽者不同,這就可以在服務器上很容易分辨出哪些訪問者是CC攻擊了,既然可以判斷出攻擊者的IP,那么預防措施就很簡單,只需要批量將這些IP屏蔽,即可達到防范CC攻擊的目的。

  最終,我花了半個小時寫了一段小程序,運行之后自動屏蔽了數百個IP,網站才算正常,從而證明,防火墻對于CC攻擊的防御并不有效,最有效的方法還是在服務器端通過程序自動屏蔽來預防。

  看來CC攻擊的門檻還真低啊,搞個幾百個代理或者肉雞就能攻擊別人了,其成本非常低,但效果比較明顯,如果攻擊者流量巨大的話,通過耗費帶寬資源的方式都可以進行攻擊。但是,CC攻擊也有明顯的技術缺陷,就是攻擊者的IP并不是海量的,通常就是幾百數千的級別,并且是真實訪問了網站頁面,這就使得網站可以通過程序過濾的方式,輕松獲取到這些攻擊者IP,批量進行屏蔽,那么這種CC攻擊就會得到預防。

  對于站長來說,通過程序來過濾CC攻擊門檻較高,要有一定的編程技術,因此還是建議使用第三方網站提供的預防CC的服務,目前主要的網站有:云鎖、安全狗、Cloudflare、百度云加速、360網站衛士等。

  此外,下面還提供了一段基于ASP的防止CC攻擊的代碼,也供大家參考。

'防止CC攻擊
Dim CC_Info(4),strInfo,strTemp 
If Session("CC_Info") = "" Then 
CC_Info(0) = "cclog.txt" '日志文件名 
CC_Info(1) = Request.ServerVariables("HTTP_X_FORWARDED_FOR") 
CC_Info(2) = Request.ServerVariables("REMOTE_ADDR") 
CC_Info(3) = 4 'N秒內禁止刷新當前頁面 
CC_Info(4) = "badip.txt" 'IP黑名單文件名 
Session("CC_Info") = CC_Info(0) &"|"& CC_Info(1) &"|"& CC_Info(2) &"|"& CC_Info(3) &"|"& CC_Info(4) 
Else 
strInfo = Split(Session("CC_Info"),"|") 
CC_Info(0) = strInfo(0) 
CC_Info(1) = strInfo(1) 
CC_Info(2) = strInfo(2) 
CC_Info(3) = strInfo(3) 
CC_Info(4) = strInfo(4) 
End If 
Const chkRefresh = 1 '0關閉防刷新 
Const chkProxy = 1 '0關閉代理驗證 
Const chkBadIP = 1 '0關閉IP黑名單 
If Session("BadIP") = "" Then 
strInfo = ReadFile(CC_Info(4)) 
If strInfo = "" Then strInfo = "williamlong.info" 
Session("BadIP") = strInfo 
Else 
strInfo = Session("BadIP") 
End If 
'/*第一層判斷,N秒內禁止刷新*/ 
If chkRefresh = 1 Then 
If Session("RefreshTime")="" Then 
Session("RefreshTime")=Now() 
Else 
If DateDiff("s", Session("RefreshTime"), Now()) < CInt(CC_Info(3)) Then 
SaveLog CC_Info(0),CC_Info(1) & "["& CC_Info(2) & "]" & Now() &vbCrLf 
Response.Write("系統繁忙,請稍候再試!錯誤代碼001") 
Response.End() 
Else 
Session("RefreshTime")=Now() 
End If 
End If 
End If 
'/*第二層判斷,代理禁止查看*/ 
If chkProxy = 1 Then 
If CC_Info(1) <> "" Then 
If InStr(strInfo,CC_Info(1)) = 0 Then 
strTemp = CC_Info(1) & vbCrLf 
If InStr(strInfo,CC_Info(2)) = 0 Then 
strTemp = strTemp & "[" & CC_Info(2) & "]" & vbCrLf 
End If 
SaveLog CC_Info(4),strTemp 
strInfo = strInfo & strTemp 
Session("BadIP") = strInfo 
End If 
'記錄CC攻擊日志 
SaveLog CC_Info(0),CC_Info(1) & "["& CC_Info(2) & "]" & Now() &vbCrLf 
Response.Write("系統繁忙,請稍候再試!錯誤代碼002") 
Response.End() 
End If 
End If 
'/*第三層判斷,IP黑名單禁止查看*/ 
If chkBadIP = 1 Then 
If InStr(strInfo,CC_Info(2))>0 Then 
Response.Write("系統繁忙,請稍候再試!錯誤代碼003") 
Response.End() 
End If 
End If 
'ForReading=1,ForWriting=2,ForAppending=8 
Function SaveLog(filename, filecontent) 
On Error Resume Next 
Dim fso, thisfile 
filename = Server.MapPath(filename) 
Set fso = CreateObject("Scripting.FileSystemObject") 
If Err <> 0 Then 
Response.Write("寫入文件"&filename&"失敗,可能您的系統不支持FSO!") 
Response.End() 
End If 
Set thisfile = fso.OpenTextFile(filename, 8, True) 
thisfile.write (filecontent) 
thisfile.Close 
Set fso = Nothing 
End Function 
Function ReadFile(filename) 
On Error Resume Next 
Dim fso, thisfile 
Set fso = CreateObject("Scripting.FileSystemObject") 
If Err <> 0 Then 
Response.Write("讀取文件"&filename&"失敗,可能您的系統不支持FSO!") 
Response.End() 
End If 
Set thisfile = fso.OpenTextFile(Server.MapPath(filename), 1, True) 
ReadFile = thisfile.ReadAll 
thisfile.Close 
Set thisfile = Nothing 
Set fso = Nothing 
End Function

分享到:

相關信息

系統教程欄目

欄目熱門教程

人氣教程排行

站長推薦

熱門系統下載

久久大香久久久尹人尹人