zoukankan      html  css  js  c++  java
  • DDos攻击的原理

      DDos又称分布式拒绝服务,全称是Distributed Denial of Service。DDos是利用合理的请求造成资源过载,从而导致服务不可用;就好比我们的系统是停车场,系统中的资源是车位,资源是有效的,而服务必须一直提供下去,如果资源已经被占用了,那么服务将过载,导致系统停止新的响应。

    分布式拒绝服务攻击,将正常请求放大了若干倍,通过若干个网络节点同时发起攻击,从而达成很大规模,这些网络节点就是黑客们控制的“肉鸡”,数量达到一定规模后,就形成了一个“僵尸网络”,大型的“僵尸网络”,可以到达数万,数十万台的规模,这么大规模的僵尸网络发起DDOS攻击,是不可能阻挡的。

      常见的DDOS攻击有SYN flood,UDP flood,ICMP flood等,其中SYN flood是最典型的一中攻击;SYN flood攻击是利用了TCP协议的设计缺陷,而TCP/IP协议是整个互联网的基础,修复这样的缺陷也是不太可能的;

    正常情况下TCP连接需要3次握手,过程如下:

                    

    1、客户端向服务器发送一个SYN数据包,包含客户端上使用的端口号和初始序列号x;

    2、服务器端收到客户端发送来的SYN后,向客户端发送一个SYN和ACK,包含了确认号x+1和服务端的初始序列号y;

    3、客户端收到服务器端返回的SYN 和ACK后,想服务器端返回一个确认号y+1,序列号x+1的ACK报文,这时一个标准的TCP连接就建立了;

      当SYN flood进行攻击的时候,首先会伪造大量的源IP地址,分别向服务器发送大量的SYN包,此时服务器端会返回SYN/ACK包,因为源地址是伪造的,所以伪造的IP地址不会应答,服务器端没有收到伪造的IP的回应,会重新发送3~5次SYN/ACK包,并且等待一个SYN time(一般是30秒至2分钟),如果超时就会丢弃这个连接;当攻击者大量发送这种伪造的源地址的SYN请求,服务器端将会消耗非常多的资源(CPU和内存)来处理这种半连接,同时还要不断的对这些IP 进行SYN/ACK重试,最后就会导致服务器无法进行正常的请求处理,导致拒绝服务;

      对抗SYN flood  的DDOS攻击主要措施有SYN Cookie/SYN Proxy,safereset等算法。SYN Cookie的主要思想是为每一个ip地址分配一个cookie,并统计每个ip的访问频率,如果短时间内收到大量的来自同一个ip地址的数据包,则认为是收到了攻击,之后来自这个ip的数据将会直接丢弃;

    注:以上内容来自(《白帽子讲安全》)的学习;

  • 相关阅读:
    最大子序和
    Linux中判断hdfs文件是否存在
    Python判断字符串是否为字母或者数字
    win10+1060显卡安装anaconda+CUDA10.1+pytorch+cuDNN+tensorflow-gpu
    Anaconda3+python3环境下如何创建python2环境(win+Linux下适用,同一个anaconda下py2/3共存)
    教你上传本地代码到github
    vue源码学习-vnode的挂载和更新流程
    学习 vue 源码 -- 响应式原理
    instanceof 操作符实现原理解析
    webapp开发要点记录
  • 原文地址:https://www.cnblogs.com/AnXinliang/p/9842127.html
Copyright © 2011-2022 走看看