cc攻打(ChallengeCollapsar)是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地址的文件,不会抓取其余类型的文件,其UserAgent也大局部和个别阅读者不同,这就可以在主机上很容易分辨出哪些访问者是CC攻打了,既然可以判别出攻打者的IP,那么预防措施就很便捷,只有要批量将这些IP屏蔽,即可到达防范CC攻打的目标。
最终,我花了半个小时写了一段小程序,运转之后智能屏蔽了数百个IP,网站才算反常,从而证实,防火墙关于CC攻打的进攻并不有效,最有效的方法还是在主机端经环节序智能屏蔽来预防。
看来CC攻打的门槛还真低啊,搞个几百个代理或许肉鸡就能攻打他人了,其老本十分低,但成果比拟显著,假设攻打者流量渺小的话,经过消耗带宽资源的模式都可以启动攻打。然而,CC攻打也有显著的技术毛病,就是攻打者的IP并不是海量的,理论就是几百数千的级别,并且是实在访问了网站页面,这就使得网站可以经环节序过滤的模式,轻松失掉到这些攻打者IP,批量启动屏蔽,那么这种CC攻打就会失掉预防。
关于站长来说,经环节序来过滤CC攻打门槛较高,要有肯定的编程技术,因此还是倡导经常使用第三方网站提供的预防CC的服务,目前重要的网站有:云锁、安保狗、Cloudflare、百度云减速、360网站卫士等。
此外,上方还提供了一段基于ASP的防止CC攻打的代码,也供大家参考。
'防止CC攻打
DimCC_Info(4),strInfo,strTemp
IfSession("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)
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)
ConstchkRefresh=1'0封锁防刷新
ConstchkProxy=1'0封锁代理验证
ConstchkBadIP=1'0封锁IP黑名单
IfSession("BadIP")=""Then
strInfo=ReadFile(CC_Info(4))
ThenstrInfo="williamlong.info"
Session("BadIP")=strInfo
strInfo=Session("BadIP")
'/*第一层判别,N秒内制止刷新*/
IfchkRefresh=1Then
IfSession("RefreshTime")=""Then
Session("RefreshTime")=Now()
IfDateDiff("s",Session("RefreshTime"),Now()) SaveLogCC_Info(0),CC_Info(1)&"["&CC_Info(2)&"]"&Now()&vbCrLf
Response.Write("系统忙碌,请稍候再试!失误代码001")
Response.End()
Session("RefreshTime")=Now()
'/*第二层判别,代理制止检查*/
IfchkProxy=1Then
IfCC_Info(1)<>""Then
IfInStr(strInfo,CC_Info(1))=0Then
strTemp=CC_Info(1)&vbCrLf
IfInStr(strInfo,CC_Info(2))=0Then
strTemp=strTemp&"["&CC_Info(2)&"]"&vbCrLf
SaveLogCC_Info(4),strTemp
strInfo=strInfo&strTemp
Session("BadIP")=strInfo
'记载CC攻打日志
SaveLogCC_Info(0),CC_Info(1)&"["&CC_Info(2)&"]"&Now()&vbCrLf
Response.Write("系统忙碌,请稍候再试!失误代码002")
Response.End()
'/*第三层判别,IP黑名单制止检查*/
IfchkBadIP=1Then
IfInStr(strInfo,CC_Info(2))>0Then
Response.Write("系统忙碌,请稍候再试!失误代码003")
Response.End()
'ForReading=1,ForWriting=2,ForAPPending=8
FunctionSaveLog(filename,filecontent)
OnErrorResumeNext
Dimfso,thisfile
filename=Server.MapPath(filename)
Setfso=CreateObject("Scripting.FileSystemObject")
IfErr<>0Then
Response.Write("写入文件"&filename&"失败,或许您的系统不允许FSO!")
Response.End()
Setthisfile=fso.OpenTextFile(filename,8,True)
thisfile.write(filecontent)
thisfile.Close
Setfso=Nothing
EndFunction
FunctionReadFile(filename)
OnErrorResumeNext
Dimfso,thisfile
Setfso=CreateObject("Scripting.FileSystemObject")
IfErr<>0Then
Response.Write("读取文件"&filename&"失败,或许您的系统不允许FSO!")
Response.End()
Setthisfile=fso.OpenTextFile(Server.MapPath(filename),1,True)
ReadFile=thisfile.ReadAll
thisfile.Close
Setthisfile=Nothing
Setfso=Nothing
EndFunction
本文地址:
https://yihaiquanyi.com/article/2fb5188586677fdccedf.html
下一篇:快速成为抖音粉丝的人快速成为抖音内容运营...