echnorati 标签: DoS,攻击,网络防御,TCP,SYN_Flood

TCP/IP协议的权限DoS (拒绝服务攻击)----- Denial of Service

该攻击的原理是利用TCP报文头来做的文章.

下面是TCP数据段头格式。

Source Port和 Destination Port :是本地端口和目标端口

Sequence Number 和 Acknowledgment Number :是顺序号和确认号,确认号是希望接收的字节号。这都是32位的,在TCP流中,每个数据字节都被编号。Data offset :表明TCP头包含多少个32位字,用来确定头的长度,因为头中可选字段长度是不定的。Reserved : 保留的我不是人,现在没用,都是0

接下来是6个1位的标志,这是两个计算机数据交流的信息标志。接收和发送断根据这些标志来确定信息流的种类。下面是一些介绍: URG:(Urgent Pointer field significant)紧急指针。用到的时候值为1,用来处理避免TCP数据流中断ACK:(Acknowledgment field significant)置1时表示确认号(Acknowledgment Number)为合法,为0的时候表示数据段不包含确认信息,确认号被忽略。

PSH:(Push Function),PUSH标志的数据,置1时请求的数据段在接收方得到后就可直接送到应用程序,而不必等到缓冲区满时才传送。

RST:(Reset the connection)用于复位因某种原因引起出现的错误连接,也用来拒绝非法数据和请求。如果接收到RST位时候,通常发生了某些错误。

SYN:(Synchronize sequence numbers)用来建立连接,在连接请求中,SYN=1,CK=0,连接响应时,SYN=1,

ACK=1。即,SYN和ACK来区分Connection Request和Connection Accepted。

FIN:(No more data from sender)用来释放连接,表明发送方已经没有数据发送。

TCP三次握手模型:

我们进入比较重要的一部分:TCP连接握手过程。这个过程简单地分为三步。在没有连接中,接受方(我们针对服务器),服务器处于LISTEN状态,等待其他机器发送连接请求。

第一步:客户端发送一个带SYN位的请求,向服务器表示需要连接,比如发送包假设请求序号为10,那么则为:SYN=10,ACK=0,然后等待服务器的响应。

第二步:服务器接收到这样的请求后,查看是否在LISTEN的是指定的端口,不然,就发送RST=1应答,拒绝建立连接。如果接收连接,那么服务器发送确认,SYN为服务器的一个内码,假设为100,ACK位则是客户端的请求序号加1,本例中发送的数据是:SYN=100,ACK=11,用这样的数据发送给客户端。向客户端表示,服务器连接已经准备好了,等待客户端的确认这时客户端接收到消息后,分析得到的信息,准备发送确认连接信号到服务器

第三步:客户端发送确认建立连接的消息给服务器。确认信息的SYN位是服务器发送的ACK位,ACK位是服务器发送的SYN位加1。即:SYN=11,ACK=101。

这时,连接已经建立起来了。然后发送数据,<SYN=11,ACK=101><DATA>。这是一个基本的请求和连接过程。需要注意的是这些标志位的关系,比如SYN、ACK。

服务器不会在每次接收到SYN请求就立刻同客户端建立连接,而是为连接请求分配内存空间,建立会话,并放到一个等待队列中。如果,这个等待的队列已经满了,那么,服务器就不在为新的连接分配任何东西,直接丢弃新的请求。如果到了这样的地步,服务器就是拒绝服务了。

如果服务器接收到一个RST位信息,那么就认为这是一个有错误的数据段,会根据客户端IP,把这样的连接在缓冲区队列中清除掉。这对IP欺骗有影响,也能被利用来做DOS攻击。

有了TCP的基础和三次握手协商流程,那么DoS就是利用这其中的漏洞进行攻击的.下面就是DOS的攻击原理了:

上面的介绍,我们了解TCP协议,以及连接过程。要对SERVER实施拒绝服务攻击,实质上的方式就是有两个:

一, 迫使服务器的缓冲区满,不接收新的请求。

二, 使用IP欺骗,迫使服务器把合法用户的连接复位,影响合法用户的连接

这就是DOS攻击实施的基本思想。具体实现有这样的方法:

1、SYN FLOOD

利用服务器的连接缓冲区(Backlog Queue),利用特殊的程序,设置TCP的Header,向服务器端不断地成倍发送只有SYN标志的TCP连接请求。当服务器接收的时候,都认为是没有建立起来的连接请求,于是为这些请求建立会话,排到缓冲区队列中。

如果你的SYN请求超过了服务器能容纳的限度,缓冲区队列满,那么服务器就不再接收新的请求了。其他合法用户的连接都被拒绝掉。可以持续你的SYN请求发送,直到缓冲区中都是你的只有SYN标记的请求。现在有很多实施SYN FLOOD的工具,呵呵,自己找去吧。

-----------对于SYN flood攻击,防护原理是:现在很多动态防火墙都可以提供SYN代理功能, 具体的原理框架如下:

2、IP欺骗DOS攻击

这种攻击利用RST位来实现。假设现在有一个合法用户(1.1.1.1)已经同服务器建立了正常的连接,攻击者构造攻击的TCP数据,伪装自己的IP为1.1.1.1,并向服务器发送一个带有RST位的TCP数据段。服务器接收到这样的数据后,认为从1.1.1.1发送的连接有错误,就会清空缓冲区中建立好的连接。这时,如果合法用户1.1.1.1再发送合法数据,服务器就已经没有这样的连接了,该用户就必须从新开始建立连接。攻击时,伪造大量的IP地址,向目标发送RST数据,使服务器不对合法用户服务。

3、 带宽DOS攻击

如果你的连接带宽足够大而服务器又不是很大,你可以发送请求,来消耗服务器的缓冲区消耗服务器的带宽。这种攻击就是人多力量大了,配合上SYN一起实施DOS,威力巨大。不过是初级DOS攻击。呵呵。Ping白宫??你发疯了啊!

4、自身消耗的DOS攻击

这是一种老式的攻击手法。说老式,是因为老式的系统有这样的自身BUG。比如Win95 (winsock v1), Cisco IOS v.10.x, 和其他过时的系统。

这种DOS攻击就是把请求客户端IP和端口弄成主机的IP端口相同,发送给主机。使得主机给自己发送TCP请求和连接。这种主机的漏洞会很快把资源消耗光。直接导致当机。这中伪装对一些身份认证系统还是威胁巨大的。

上面这些实施DOS攻击的手段最主要的就是构造需要的TCP数据,充分利用TCP协议。这些攻击方法都是建立在TCP基础上的。还有其他的DOS攻击手段。

5、塞满服务器的硬盘

通常,如果服务器可以没有限制地执行写操作,那么都能成为塞满硬盘造成DOS攻击的途径,比如:

发送垃圾邮件。一般公司的服务器可能把邮件服务器和WEB服务器都放在一起。破坏者可以发送大量的垃圾邮件,这些邮件可能都塞在一个邮件队列中或者就是坏邮件队列中,直到邮箱被撑破或者把硬盘塞满。

让日志记录满。入侵者可以构造大量的错误信息发送出来,服务器记录这些错误,可能就造成日志文件非常庞大,甚至会塞满硬盘。同时会让管理员痛苦地面对大量的日志,甚至就不能发现入侵者真正的入侵途径。向匿名FTP塞垃圾文件。这样也可以塞满硬盘空间。

6、合理利用策略

一般服务器都有关于帐户锁定的安全策略,比如,某个帐户连续3次登陆失败,那么这个帐号将被锁定。这点也可以被破坏者利用,他们伪装一个帐号去错误登陆,这样使得这个帐号被锁定,而正常的合法用户就不能使用这个帐号去登陆系统了

我司的设备支持下面的攻击防范:

针对常见的网络攻击手段,如IP Source Address spoofing(伪源地址攻击)、LAND攻击、SYN Flood攻击、Smurf攻击、Ping Flood攻击,进行检测和防范。

ip source-route

源路由包:源路由包除了在网络测试工具中被正常使用外,往往也是黑客的一大工具,会话劫持时往往会用到此手段,因此,是否允许源路由包通过被设置成一个可选项;如果不被允许,此类包将一律被否决。

ip record-route

记录路由:该选项既能用于网络测试,也可被黑客用来掌握网络动态,此项也是可选的。

ip fragment

不合理的分片:是利用系统缺陷使系统紊乱的攻击,该攻击是利用这样一种分片:分片重组后该IP数据包的长度大于最大包长度(65535),而有些操作系统不知道如何处理此种异常包,导致系统挂起或死机。这种攻击中则至少存在这样一个分片:该分片的IP包数据段长度(IP长度减去IP首部长度)加上分片偏移值的结果,必定会大于最大包长度。因此,只要拒绝这样的报文,目的系统就能避免受到攻击。该功能是可选的。

ip small-packet

太小的包:太短的IP包也可能被用来进行攻击,是否允许这样的包通过,可以由用户配置进行选择(缺省为32字节)

ip intercept ipeq

源IP地址等于目的IP地址的IP报文,可被黑客用来进行攻击。是否允许这样的包通过,可以由用户配置进行选择。

ip icmp intercept fragment

分片的ICMP报文,是否允许这样的包通过,可以由用户配置进行选择。

攻击检测功能对ICMP flood、 Smurf、 Fraggle、 SYN flood、 LAND等几种攻击包的检测(或监控)。

ip icmp intercept

ICMP flood,该攻击通过向目标IP发送大量ICMP包,占用带宽,从而导致合法报文无法到达目的地,达到攻击目的;检测时,对于发向目的地址为路由器接口地址的ICMP报文进行记数,一旦报文的接收频率高出正常范围,则怀疑存在攻击行为,严格控制报文的流经频率;直到频率低出范围,又开始放行;此处理方式有一定的局限性:即当拒绝过量包时也拒绝了合法的包,但在综合考虑系统自身的承受能力的前提下,此方法是最合理的。

ip smurf intercept

Smurf也是一种这种类

本文转自 hny2000 51CTO博客,原文链接:http://blog.51cto.com/361531/1035717

DoS攻击原理和防御方法相关推荐

  1. DDoS的攻击原理与防御方法

    DDoS的攻击原理与防御方法 不可不知DDoS的攻击原理与防御方法 DoS是Denial of Service的简写就是拒绝服务,而DDoS就是Distributed Denial of Servic ...

  2. CSRF攻击原理以及防御方法

    CSRF攻击原理以及防御方法 CSRF概念:CSRF跨站点请求伪造(Cross-Site Request Forgery),跟XSS攻击一样,存在巨大的危害性,你可以这样来理解: 攻击者盗用了你的身份 ...

  3. 不可不知 DDoS的攻击原理与防御方法(2)

    转自: http://tech.sina.com.cn/s/2006-07-17/09501040151.shtml DoS攻击.DDoS攻击和DRDoS攻击相信大家已经早有耳闻了吧!DoS是Deni ...

  4. 2020最全详解DDoS的攻击原理与防御方法

    DoS是Denial of Service的简写就是拒绝服务,而DDoS就是Distributed Denial of Service的简写就是分布式拒绝服务,而DRDoS就是Distributed ...

  5. CSRF攻击原理与防御方法

    目录 什么是CSRF CSRF与XSS的区别 CSRF是怎么攻击的 攻击原理 如何防范 1.验证请求来源,通过请求头的Referer或者Origin字段来判断来源. 2.生成随机的token,在请求的 ...

  6. 典型DoS攻击原理及抵御措施(2)(转)

    典型DoS攻击原理及抵御措施(2)(转) =========================================================== 三.何为"Tribal Fl ...

  7. 服务器安全:浏览器同源策略与跨域请求、XSS攻击原理及防御策略、如何防御CSRF攻击

    主要包括 浏览器同源策略与跨域请求 XSS攻击原理及防御策略 如何使用SpringSecurity防御CSRF攻击 CC/DDOS攻击与流量攻击 什么是SSL TLS HTTPS? 一.浏览器的同源策 ...

  8. Web 安全之 XSS 攻击原理/分类/防御 详解

    什么是 XSS 攻击? 全称 Cross-Site Scripting 跨站脚本攻击,简写为了避免和 CSS 冲突而改成 XSS 原理:通过在浏览器可输入的地方(比如评论栏.搜索栏.地址栏等)注入脚本 ...

  9. 服务器SYN洪水攻击原理和防御办法-SynAttackProtect保护机制

    服务器SYN洪水攻击原理和防御办法-SynAttackProtect保护机制 一.设置SynAttackProtect键值步骤 二.防止SYN洪水攻击修改项说明 三.特别注意 SYN洪水攻击是利用客户 ...

  10. dos攻击原理及攻击实例(带脚本)

    首先声明,以下仅作为测试用,请勿作为非法用途. dos攻击原理:DoS攻击就是利用合理的服务请求来占用过多的服务资源,从而使合法用户无法得到服务的响应.(百度百科说的,大概就是这么个意思). dos攻 ...

最新文章

  1. 收藏 | CNN的一些可视化方法!
  2. springcloud上传文件_Spring Cloud实战:服务链路追踪Spring Cloud Sleuth
  3. canvas学习绘制扇形
  4. 一个程序猿如何自学双截棍,避免各种编程职业病的发生?
  5. 前端学习(1162):箭头函数面试题
  6. vue 将行转换成对象_Vue简化版实现
  7. 拼多多回应“二次上市”:公司现金储备充裕 暂无任何计划
  8. 网络现代高科技人工智能宣传海报,没有脑洞怎么办,模板拿走
  9. redis整理の配置
  10. c语言怎么删去结尾空格,新人提问:如何将输出时每行最后一个空格删除
  11. python numpy官方文档_[ Numpy中文文档 ] 介绍 - pytorch中文网
  12. 关于新手入坑vue,页面跳转样式错位刷新又好了的情况
  13. 采用LM1875组成的各种功放电路
  14. 用Matlab将坐标添加到地图上
  15. 28个UI免费漂亮的切换开关PSD下载
  16. java数据透视表算法_java – 在数据透视表上对数组进行分区
  17. kaggle比赛tweet_sentiment_extraction,带你上0.71分数
  18. Android NDK编译常见错误及解决方案
  19. 电池pack结构_锂电池包PACK结构设计需要考虑哪些因素?
  20. 抖音青少年模式?怎么这么好用啊!

热门文章

  1. dart语言hello world
  2. 计算机9针485接口,串口RS232__485的9针引脚定义
  3. Web前端 学习知识点总结(十二)jQuery进阶 表单验证和简单正则表达式
  4. comsol matlab安装教程,comsol和matlab接口
  5. 支付宝转账银行卡/隐藏卡号
  6. php怎么使用类库,如何使用 Composer 引用类库
  7. UTONMOS:中国区块链专利申请数量占全球总量的84%
  8. DelayQueue
  9. 信息系统监理师备考知识点
  10. SIM868模块+Arduino将位置信息上传到服务器