网站防止CC攻击的方法

 CC攻击(Challenge Collapsar)是DDOS(分布式拒绝服务)的一种,也是一种常见的网站攻击方法,攻击者通过代理服务器或者肉鸡向向受害主机不停地发大量数据包,造成对方服务器资源耗尽,一直到宕机崩溃。

  CC攻击的攻击技术含量低,利用工具和一些IP代理,一个初、中级的电脑水平的用户就能够实施攻击。不过,如果了解了CC攻击的原理,那就不难针对CC攻击实施一些有效的防范措施。

  通常防止CC攻击的方法有几种,一个是通过防火墙,另外一些网络公司也提供了一些防火墙服务,例如XX网站卫士和XX宝,还有一种方法是自己写程序预防,昨天网站遇到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的服务,目前主要的网站有:360网站卫士、百度加速乐、安全宝等。

转载于:https://www.cnblogs.com/Larry115/p/4557664.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一种可能的ASP代码,用于防止 CC 攻击: ```asp <% '设置防 CC 攻击的参数 maxRequestsPerSecond = 10 '每秒最多允许的请求次数 blockDurationInMinutes = 5 '需屏蔽的时间(分钟) ipBanList = Server.MapPath("ipBanList.txt") 'IP 黑名单文件路径 '获取客户端 IP 地址 dim clientIP, bannedIPs clientIP = Request.ServerVariables("REMOTE_ADDR") '读取 IP 黑名单文件 set fs = Server.CreateObject("Scripting.FileSystemObject") if fs.FileExists(ipBanList) then set file = fs.OpenTextFile(ipBanList, 1) bannedIPs = file.ReadAll file.Close else bannedIPs = "" end if '检查客户端 IP 是否在黑名单中 if InStr(bannedIPs, clientIP) > 0 then '客户端 IP 在黑名单中,拒绝请求 Response.Status = "403 Forbidden" Response.Write "Your IP address has been banned due to suspicious activity." Response.End else '客户端 IP 不在黑名单中,继续处理请求 '记录客户端请求时间 dim requestTime, requestCount requestTime = Session("lastRequestTime") requestCount = Session("requestCount") if requestTime = "" then '第一次请求,初始化 Session 变量 requestTime = Now() requestCount = 1 Session("lastRequestTime") = requestTime Session("requestCount") = requestCount else '非第一次请求,计算请求间隔时间和请求数量 timeDiffInSeconds = DateDiff("s", requestTime, Now()) if timeDiffInSeconds < 1 then timeDiffInSeconds = 1 '避免除数为 0 requestPerSecond = requestCount / timeDiffInSeconds if requestPerSecond > maxRequestsPerSecond then '请求过于频繁,需屏蔽客户端 IP bannedIPs = bannedIPs & clientIP & vbCrLf Session.Abandon set file = fs.OpenTextFile(ipBanList, 2, true) file.WriteLine bannedIPs file.Close Response.Status = "403 Forbidden" Response.Write "Your IP address has been banned due to suspicious activity." Response.End else '请求正常,更新 Session 变量 Session("lastRequestTime") = Now() Session("requestCount") = requestCount + 1 end if end if end if %> ``` 这段代码主要实现了以下功能: - 读取 IP 黑名单文件,检查客户端 IP 是否在黑名单中; - 记录客户端请求时间和请求数量; - 根据最大请求次数限制和请求间隔时间计算请求速率; - 如果请求过于频繁,将客户端 IP 加入黑名单文件并拒绝请求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值