洪水攻击详解

①注解:洪水攻击(FLOOD ATTACK)是指利用计算机网络技术向目标主机发送大量无用的数据报文,使得目标主机忙于处理无用的数据报文而无法提供正常服务的网络行为。

主要原理:利用了网络协议中安全机制或者直接用十分简单的ping资源的方法来对主机造成影响。

攻击手段:使用畸形报文让目标机处于处理或者等待,使用原始套接字进行程序设计。

分类:

ICMP回显攻击,利用原始套接字发送大量回显请求或者回显响应的数据,由于此数据协议栈默认是必须处理的,因此有影响

UDP,向目标主机UDP端口发送UDP报文,由于目标机需要对端口进行处理

SYN,利用TCP连接中三次握手,在发送一个SYN原始报文后,目标需要对发送的报文进行处理并等待超时

洪水攻击

ICMP洪水攻击

原理:在ping基础上形成

分类:

直接洪水攻击:主机与目标的带宽比拼,用性能砸死他。缺点:目标机可以根据源ip,屏蔽攻击源,甚至可能被反向攻击。

伪装ip攻击:将发送方ip用伪装ip代替,将直接洪水攻击改进

反射攻击:并非自身攻击,而是利用伪装ip,让其他主机误认为目标机在向其发送ICMP请求,结果:目标主机需要对所有请求进行ICMP应答发送

UDP洪水攻击

UDPFlood防护

UDP协议与TCP协议不同,是无连接状态的协议,并且UDP应用协议五花八门,差异极大,因此针对UDPFlood的防护非常困难。其防护要根据具体情况对待:

判断包大小,如果是大包攻击则使用防止UDP碎片方法:根据攻击包大小设定包碎片重组大小,通常不小于1500。在极端情况下,可以考虑丢弃所有UDP碎片。

攻击端口为业务端口:根据该业务UDP最大包长设置UDP最大包大小以过滤异常流量。

攻击端口为非业务端口:一个是丢弃所有UDP包,可能会误伤正常业务;一个是建立UDP连接规则,要求所有去往该端口的UDP包,必须首先与TCP端口建立TCP连接。不过这种方法需要很专业的防火墙或其他防护设备支持

SYN洪水攻击

简介:又称拒绝服务攻击。是一种广为人知的DoS(拒绝服务攻击)与DDoS(分布式拒绝服务攻击)的方式之一,这是一种利用TCP协议缺陷,发送大量伪造的TCP连接请求,从而使得被攻击方资源耗尽(CPU满负荷或内存不足)的攻击方式。

原理剖析:

TCP三次握手:

在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。 
第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认; 
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态; 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。 完成三次握手,客户端与服务器开始传送数据.

攻击手段:

主机A发送ICMP的SYN请求给主机B,主机A发送的报文源地址为伪造IP。主机B的第二次握手之后需要等待时间来接受A的确认包,在超时时间内会一直占用资源。如果B处理三次握手的资源不能满足A发送数量,那么B就会资源殆尽。主机A发送的是原始报文,发送速度应当是足够高的,对B必然产生影响。

防护措施:

①缩短SYNtimeout超时时间。也就是第二次握手到第三次握手之间的等待时间。

②为每一个请求ip设置cookie,如果连续时间内收到某个ip请求,那么认为是攻击,从而拦截

Linux网络编程--洪水攻击详解的更多相关文章

  1. linux网络编程之网络函数详解

    1.epoll_create函数 函数声明:int epoll_create(int size) 该 函数生成一个epoll专用的文件描述符.它其实是在内核申请一空间,用来存放你想关注的socket ...

  2. Java网络编程和NIO详解7:浅谈 Linux 中NIO Selector 的实现原理

    Java网络编程和NIO详解7:浅谈 Linux 中NIO Selector 的实现原理 转自:https://www.jianshu.com/p/2b71ea919d49 本系列文章首发于我的个人博 ...

  3. Java网络编程和NIO详解6:Linux epoll实现原理详解

    Java网络编程和NIO详解6:Linux epoll实现原理详解 本系列文章首发于我的个人博客:https://h2pl.github.io/ 欢迎阅览我的CSDN专栏:Java网络编程和NIO h ...

  4. 网络编程TCP/IP详解

    网络编程TCP/IP详解 1. 网络通信 中继器:信号放大器 集线器(hub):是中继器的一种形式,区别在于集线器能够提供多端口服务,多口中继器,每个数据包的发送都是以广播的形式进行的,容易阻塞网络. ...

  5. Java网络编程和NIO详解开篇:Java网络编程基础

    Java网络编程和NIO详解开篇:Java网络编程基础 计算机网络编程基础 转自:https://mp.weixin.qq.com/s/XXMz5uAFSsPdg38bth2jAA 我们是幸运的,因为 ...

  6. Java网络编程和NIO详解8:浅析mmap和Direct Buffer

    Java网络编程与NIO详解8:浅析mmap和Direct Buffer 本系列文章首发于我的个人博客:https://h2pl.github.io/ 欢迎阅览我的CSDN专栏:Java网络编程和NI ...

  7. Java网络编程和NIO详解9:基于NIO的网络编程框架Netty

    Java网络编程和NIO详解9:基于NIO的网络编程框架Netty 转自https://sylvanassun.github.io/2017/11/30/2017-11-30-netty_introd ...

  8. Java网络编程和NIO详解5:Java 非阻塞 IO 和异步 IO

    Java网络编程和NIO详解5:Java 非阻塞 IO 和异步 IO Java 非阻塞 IO 和异步 IO 转自https://www.javadoop.com/post/nio-and-aio 本系 ...

  9. Java网络编程和NIO详解2:JAVA NIO一步步构建IO多路复用的请求模型

    Java网络编程与NIO详解2:JAVA NIO一步步构建IO多路复用的请求模型 知识点 nio 下 I/O 阻塞与非阻塞实现 SocketChannel 介绍 I/O 多路复用的原理 事件选择器与 ...

随机推荐

  1. 170711、Linux下搭建MySQL集群

    一.MySQL集群简介 1.什么是MySQL集群 MySQL集群是一个无共享的(shared-nothing).分布式节点架构的存储方案,其目的是提供容错性和高性能. 数据更新使用读已提交隔离级别(r ...

  2. 170525、解决maven隐式依赖包版本问题

    今天在使用dubbo2.5.3版本的时候,启动项目的时候发现一个问题,tomcat启动一直报错 Caused by: java.lang.IllegalStateException: Context ...

  3. yii2 的 Url::to() 和 Url::toRoute()

    关于Url类的操作在这个页面http://www.yiichina.com/doc/guide/2.0/helper-url: Url::to() 和 toRoute() 非常类似.这两个方法的唯一区 ...

  4. 配置oem

    [oracle@kaifai ~]$ export ORACLE_SID=dbking[oracle@kaifai ~]$ export ORACLE_SID=kaifai[oracle@kaifai ...

  5. describe neural networks as a series of computational steps via a directed graph.

    https://www.microsoft.com/en-us/research/product/cognitive-toolkit/ https://github.com/microsoft/cnt ...

  6. 【JEECG技术博文】JEECG表单配置-树形表单

    表单配置支持树型表单了,详细效果例如以下图:

  7. mapxtreme java学习之路(1)——.dwg转.tab再转.gst详细教程

    [背景] 因为项目的需要,需要在java web 项目中使用到地图,厂家提供的是dwg格式的地图,而我们采用的是mapxtreme java技术,所以先要把dwg格式的地图转成mapxtreme ja ...

  8. android showDialog用法

    protected Dialog onCreateDialog(int id) { // TODO Auto-generated method stub switch(id){ case 10: re ...

  9. spark 调优概述

    分为几个部分: 开发调优.资源调优.数据倾斜调优.shuffle调优 开发调优: 主要包括这几个方面 RDD lineage设计.算子的合理使用.特殊操作的优化等 避免创建重复的RDD,尽可能复用同一 ...

  10. 数据挖掘-KNN-K最近邻算法

    1. 算法核心思想: 通过计算每个训练样本到待分类样本的距离,选取和待分类样本的距离最近的 K 个训练样本,K个样本中那个类别的训练样本占据着多数, 则表明待分类的样本就属于哪一个类别. KNN算法在 ...