好久不关心网络安全之类,今天突然间听说CC攻击一词,不是太理解,现摘录一段介绍,相信对今后的代码编写会有一定好处的

很多朋友都知道木桶理论,一桶水的最大容量不是由它最高的地方决定的,而是由它最低的地方决定,服务器也是一样,服务器的安全性也是由它最脆弱的地方决定的,最脆弱的地方有多危险服务器就有多危险。DDOS也是一样,只要你的服务器存在一个很耗资源的地方,限制又不够,就马上成为别人DDOS的对象。比如SYN-FLOOD,它就是利用服务器的半连接状态比完全连接状态更耗资源,而SYN发动方只需要不停的发包,根本不需要多少资源。

一个好的DDOS攻击必须是通过自己极少资源的消耗带来对方较大的资源消耗,否则比如ICMP-FLOOD和UDP-FLOOD都必须和别人一样大的带宽,对方服务器消耗多少资源自己也得赔上多少资源,效率极其低下,又很容易被人发现,现在基本没有什么人用了。

攻击原理

CC主要是用来攻击页面的。大家都有这样的经历,就是在访问论坛时,如果这个论坛比较大,访问的人比较多,打开页面的速度会比较慢,对不?!一般来说,访问的人越多,论坛的页面越多,数据库就越大,被访问的频率也越高,占用的系统资源也就相当可观,现在知道为什么很多空间服务商都说大家不要上传论坛,聊天室等东西了吧。

一个静态页面不需要服务器多少资源,甚至可以说直接从内存中读出来发给你就可以了,但是论坛就不一样了,我看一个帖子,系统需要到数据库中判断我是否有读读帖子的权限,如果有,就读出帖子里面的内容,显示出来——这里至少访问了2次数据库,如果数据库的体积有200MB大小,系统很可能就要在这200MB大小的数据空间搜索一遍,这需要多少的CPU资源和时间?如果我是查找一个关键字,那么时间更加可观,因为前面的搜索可以限定在一个很小的范围内,比如用户权限只查用户表,帖子内容只查帖子表,而且查到就可以马上停止查询,而搜索肯定会对所有的数据进行一次判断,消耗的时间是相当的大。

CC就是充分利用了这个特点,模拟多个用户(多少线程就是多少用户)不停的进行访问(访问那些需要大量数据操作,就是需要大量CPU时间的页面)。很多朋友问到,为什么要使用代理呢?因为代理可以有效地隐藏自己的身份,也可以绕开所有的防火墙,因为基本上所有的防火墙都会检测并发的TCP/IP连接数目,超过一定数目一定频率就会被认为是Connection-Flood。

使用代理攻击还能很好的保持连接,我们这里发送了数据,代理帮我们转发给对方服务器,我们就可以马上断开,代理还会继续保持着和对方连接(我知道的记录是有人利用2000个代理产生了35万并发连接)。

可能很多朋友还不能很好的理解,我来描述一下吧。我们假设服务器A对Search.asp的处理时间需要0.01S(多线程只是时间分割,对结论没有影响),也就是说他一秒可以保证100个用户的Search请求,服务器允许的最大连接时间为60s,那么我们使用CC模拟120个用户并发连接,那么经过1分钟,服务器的被请求了7200次,处理了6000次,于是剩下了1200个并发连接没有被处理。有的朋友会说:丢连接!丢连接!问题是服务器是按先来后到的顺序丢的,这1200个是在最后10秒的时候发起的,想丢?!还早,经过计算,服务器满负开始丢连接的时候,应该是有7200个并发连接存在队列,然后服务器开始120个/秒的丢连接,我们发动的连接也是120个/秒,服务器永远有处理不完的连接,服务器的CPU 100%并长时间保持,然后丢连接的60秒服务器也判断处理不过来了,新的连接也处理不了,这样服务器达到了超级繁忙状态。

蝴蝶:我们假设服务器处理Search只用了0.01S,也就是10毫秒(这个速度你可以去各个有开放时间显示的论坛看看),我们使用的线程也只有120,很多服务器的丢连接时间远比60S长,我们的使用线程远比120多,可以想象可怕了吧,而且客户机只要发送了断开,连接的保持是代理做的,而且当服务器收到SQL请求,肯定会进入队列,不论连接是否已经断开,而且服务器是并发的,不是顺序执行,这样使得更多的请求进入内存请求,对服务器负担更大。

当然,CC也可以利用这里方法对FTP进行攻击,也可以实现TCP-FLOOD,这些都是经过测试有效的。

防范方法

说了攻击原理,大家肯定会问,那么怎么防御?使用硬件防火墙我不知道如何防范,除非你完全屏蔽页面访问,我的方法是通过页面的编写实现防御。

1. 使用Cookie认证。这时候朋友说CC里面也允许Cookie,但是这里的Cookie是所有连接都使用的,所以启用IP+Cookie认证就可以了。

2. 利用Session。这个判断比Cookie更加方便,不光可以IP认证,还可以防刷新模式,在页面里判断刷新,是刷新就不让它访问,没有刷新符号给它刷新符号。给些示范代码吧,Session:

<%if session(“refresh”)<> 1 then
Session(“refresh”)=session(“refresh”)+1
Response.redirect “index.asp”
End if
%>

这样用户第一次访问会使得Refresh=1,第二次访问,正常,第三次,不让他访问了,认为是刷新,可以加上一个时间参数,让多少时间允许访问,这样就限制了耗时间的页面的访问,对正常客户几乎没有什么影响。

3. 通过代理发送的HTTP_X_FORWARDED_FOR变量来判断使用代理攻击机器的真实IP,这招完全可以找到发动攻击的人,当然,不是所有的代理服务器都发送,但是有很多代理都发送这个参数。详细代码:

<%
Dim fsoObject
Dim tsObject
dim file
if Request.ServerVariables("HTTP_X_FORWARDED_FOR")="" then
response.write "无代理访问"
response.end
end if
Set fsoObject = Server.CreateObject("Scripting.FileSystemObject")
file = server.mappath("CCLog.txt")
if not fsoObject.fileexists(file) then
fsoObject.createtextfile file,true,false
end if
set tsObject = fsoObject.OpenTextFile(file,8)
tsObject.Writeline Request.ServerVariables("HTTP_X_FORWARDED_FOR")&"["&Request.ServerVariables("REMOTE_ADDR")&"]"&now()
Set fsoObject = Nothing
Set tsObject = Nothing
response.write "有代理访问"
%>

这样会生成CCLog.txt,它的记录格式是:真实IP [代理的IP] 时间,看看哪个真实IP出现的次数多,就知道是谁在攻击了。将这个代码做成Conn.asp文件,替代那些连接数据库的文件,这样所有的数据库请求就连接到这个文件上,然后马上就能发现攻击的人。

4. 还有一个方法就是把需要对数据查询的语句做在Redirect后面,让对方必须先访问一个判断页面,然后Redirect过去。

5. 在存在多站的服务器上,严格限制每一个站允许的IP连接数和CPU使用时间,这是一个很有效的方法。

CC的防御要从代码做起,其实一个好的页面代码都应该注意这些东西,还有SQL注入,不光是一个入侵工具,更是一个DDOS缺口,大家都应该在代码中注意。举个例子吧,某服务器,开动了5000线的CC攻击,没有一点反应,因为它所有的访问数据库请求都必须一个随机参数在Session里面,全是静态页面,没有效果。突然发现它有一个请求会和外面的服务器联系获得,需要较长的时间,而且没有什么认证,开800线攻击,服务器马上满负荷了。
   
代码层的防御需要从点点滴滴做起,一个脚本代码的错误,可能带来的是整个站的影响,甚至是整个服务器的影响,慎之!

转载于:https://www.cnblogs.com/qyz123/archive/2006/12/19/597367.html

CC攻击及其解决方法相关推荐

  1. 网站被CC攻击的解决方法

    作为站长或者公司的网站的网管,什么最可怕?显然是网站受到的DDoS攻击.大家都有这样的经历,就是在访问某一公司网站或者论坛时,如果这个网站或者论坛流量比较大,访问的人比较多,打开页面的速度会比较慢,对 ...

  2. cc攻击防御解决方法

    静态页面 由于动态页面打开速度慢,需要频繁从数据库中调用大量数据,对于cc攻击者来说,甚至只需要几台肉鸡就可以把网站资源全部消耗,因此动态页面很容易受到cc攻击.正常情况静态页面只有几十kb,而动态页 ...

  3. 什么是arp攻击?arp攻击的解决方法有哪些?

    对于网络攻击,在各种攻击手段中大家最熟悉的要数ddos和cc攻击,关于ARP攻击资讯了解应该不是很多.什么是arp攻击?关于ARP的资讯,现在宵云网络给大家分析一下,希望大家对网络攻击有多一层的了解. ...

  4. 棋牌游戏一上线就被DDOS和CC攻击怎么解决?

    近年来,随着棋牌游戏行业的发展壮大,市场竞争变得越来越激烈.与此同时,一些地方性的棋牌游戏在运营时也存在很多潜在的风险,需要时刻提防黑客的攻击入侵,以保证游戏平台顺利运行.那么在实际的棋牌游戏运营过程 ...

  5. 局域网arp攻击_什么是arp攻击?arp攻击的解决方法有哪些?

    对于网络攻击,在各种攻击手段中大家最熟悉的要数ddos和cc攻击,关于ARP攻击资讯了解应该不是很多.什么是arp攻击?关于ARP的资讯,想跟大家分析一下,希望大家对网络攻击有多一层的了解. arp攻 ...

  6. MAC泛洪攻击及解决方法

    目录 交换机工作原理 MAC地址泛洪攻击 配置安全端口解决 配置动态MAC地址安全端口 配置sticky粘贴MAC地址安全端口 交换机工作原理 交换机工作原理:交换机中有一个交换地址表(MAC地址表) ...

  7. CSRF攻击的原理和spring security对CSRF攻击的解决方法

    对于CSRF攻击的原理,直接上图然后解释一下 一个用户通过浏览器成功登录一个网站,登陆成功后,服务器会返回一个该用户的唯一标识放入浏览器Cookie中,以此作为用户之后操作的唯一凭证.假设此时该用户在 ...

  8. nginx常见502错误提示原因和解决方法

    Nginx 502错误情况1: 网站的访问量大,而php-cgi的进程数偏少. 针对这种情况的502错误,只需增加php-cgi的进程数.具体就是修改/usr/local/php/etc/php-fp ...

  9. nginx常见502错误的解决方法

    Nginx 502错误情况1: 网站的访问量大,而php-cgi的进程数偏少. 针对这种情况的502错误,只需增加php-cgi的进程数.具体就是修改/usr/local/php/etc/php-fp ...

最新文章

  1. 上市之后,青云存储平台 QingStor 也要“进军”云原生
  2. 精选SpringBoot+Vue开发的开源系统(前端+后端+小程序)
  3. 华为麒麟990发布!余承东:全球首款旗舰5G SoC,业界最强手机AI算力,友商还都是PPT...
  4. Keras搭建YoloV4目标检测平台
  5. 内存分段分页机制理解_深入理解虚拟机,JVM高级特性-自动内存管理机制
  6. python网络编辑 socket篇
  7. 直播 | 智能仓库:端侧 AI 和 OpenVINO 落地实践
  8. oracle自定义函数获取省份,Oracle 自定义函数Function
  9. 【iOS】Swift3:执行save()的时候出现:Call can throw, but it is not marked with 'try' and the error is not handl
  10. 应用FileInputStream类,编写应用程序,从磁盘上读取一个Java程序,并将源程序代码显示在屏幕上
  11. Java进阶(二十九)集合12:集合练习题
  12. 渝粤题库 陕西师范大学 《教育科学研究方法》作业
  13. CTF_ctfshow_meng新_web1-web24
  14. 第三期:如何通过知晓云处理微信卡券消息
  15. 【ESAPI】WEB安全ESAPI使用
  16. html5程序阅读题,20 个重要的 HTML5 面试题及答案
  17. 使用.net 操作 微信公众平台 —— 接收用户操作 —— 关注/取消关注 公众号
  18. esxi云虚拟服务器如何搭建,如何搭建esxi环境?
  19. c语言输出2~100以内所有的素数
  20. Prometheus由于时间不同步导致数据不显示

热门文章

  1. 催护 ---- 题都城南庄
  2. JAVA8中Set排序四种写法
  3. Java操作某方法时报错:java.lang.NoSuchMethodError
  4. java集合中retainAll方法
  5. Linux定时删除过期日志文件
  6. mysql数据库事务传播特性_什么是事务的传播特性?
  7. [yum]Another app is currently holding the yum lock
  8. C#进行MapX二次开发之图层操作
  9. 【Spark Summit EU 2016】沃森媒体分析系统:从单租户Hadoop到3000租户Spark的架构演进...
  10. MyBatis学习 之 七、mybatis各种数据库的批量修改