洪水攻击详解

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

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

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

分类:

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

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

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

原理:在ping基础上形成

分类:

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

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

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

UDPFlood防护

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

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

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

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

简介:又称拒绝服务攻击。是一种广为人知的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请求,那么认为是攻击,从而拦截

udp洪水攻击java_Linux网络编程--洪水攻击详解相关推荐

  1. Visual C++网络编程经典案例详解 第9章 实用播放器 数据读取与播放控制 识别数据文件信息

    识别数据文件信息主要是指对mp3数据格式识别 定义顺序代码如下 typedef struct mp3_struct //自定义mp3结构体 {char heade[3]; //tag字符标记char ...

  2. linux网络编程常用函数详解与实例(socket--bind--listen--accept)

    常用的网络命令: netstat 命令netstat是用来显示网络的连接,路由表和接口统计等网络的信息.netstat有许多的选项我们常用的选项是 -an 用来显示详细的网络状态.至于其它的选项我们可 ...

  3. connect: 网络不可达_Java网络编程和NIO详解1:JAVA 中原生的 socket 通信机制

    本文转自:https://github.com/jasonGeng88/blog 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https ...

  4. python网络编程讲解_详解Python Socket网络编程

    Socket 是进程间通信的一种方式,它与其他进程间通信的一个主要不同是:它能实现不同主机间的进程间通信,我们网络上各种各样的服务大多都是基于 Socket 来完成通信的,例如我们每天浏览网页.QQ ...

  5. 【C/C++服务器开发】socket网络编程函数接口详解

    文章目录 一.前言 TCP 网络编程 结合三次握手连接的 TCP socket 结合四次次挥手的 TCP socket 二.socket常用函数和数据结构 1.socket()函数 2.bind() ...

  6. 网络编程基础知识详解

    什么是网络编程 网络编程的本质是两个设备之间的数据交换,当然,在计算机网络中,设备主要指计算机.数据传递本身没有多大的难度,不就是把一个设备中的数据发送给两外一个设备,然后接受另外一个设备反馈的数据. ...

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

    老曹眼中的网络编程基础 转自:https://mp.weixin.qq.com/s/XXMz5uAFSsPdg38bth2jAA 我们是幸运的,因为我们拥有网络.网络是一个神奇的东西,它改变了你和我的 ...

  8. java httputil_Java网络编程与NIO详解2:JAVA NIO 一步步构建IO多路复用的请求模型

    本文转载自:https://github.com/jasonGeng88/blog 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 http ...

  9. 猫哥网络编程系列:详解 BAT 面试题

    从产品上线前的接口开发和调试,到上线后的 bug 定位.性能优化,网络编程知识贯穿着一个互联网产品的整个生命周期.不论你是前后端的开发岗位,还是 SQA.运维等其他技术岗位,掌握网络编程知识均是岗位的 ...

  10. Java网络编程和NIO详解1:JAVA 中原生的 socket 通信机制

    JAVA 中原生的 socket 通信机制 转载自:https://github.com/jasonGeng88/blog 当前环境 jdk == 1.8 知识点 socket 的连接处理 IO 输入 ...

最新文章

  1. clisp语言中的包
  2. struts2学习笔记(二):Struts2配置
  3. linux 基础知识点杂项记
  4. 购物车清除的php,php-如何清除废弃的woocommerce购物车
  5. MySQL通过存储过程使用循环结构循环创建数据,以及批量数据的导入导出
  6. 转载:vscode快捷键
  7. win10英伟达NVIDIA无法登录
  8. C 怎么读取Cpp文件_从PCD文件写入和读取点云数据
  9. Laravel中优雅的验证日期需要大于今天
  10. SQL的TRUNCATE和DELETE
  11. python-组合数据类型
  12. 海蜘蛛V8想转WAYOS的用户有福了,用户数据转换工具出来了
  13. 孙鑫VC学习笔记:第十七讲 (二) 用匿名管道实现进程间的通信
  14. 小知识-Spring Boot是如何确定当前运行环境
  15. uWSGI, Gunicorn,ngnix 服务器 详解
  16. 给马云、马化腾订制旅行,这家公司想做旅游行业的“得到”
  17. 学会ipad当作电脑扩展屏方法
  18. 这是一篇路由器踩坑的文章
  19. 工信部确定5G使用频段 产业链即将迎来变革
  20. 用python实现相声、评书自动下载(一)

热门文章

  1. js 利用window.getSelection() 实现简单的文字标注(鼠标选中文本,给其加下滑线、背景色)
  2. RC522(RFID模块)实践总结
  3. 判断用户首次登录的两种方式
  4. 自动机器学习-H2O.ai
  5. 操作系统 - 虚拟存储管理技术之虚拟页式存储管理
  6. Hi3516EV200设置手动曝光时间
  7. JDK下载、安装和环境配置
  8. 浙江大学计算机学院师资队伍,浙江大学计算机科学与技术学院导师教师师资介绍简介-朱建科...
  9. 研究:多因素影响粮食安全 应早做规划避免粮食短缺
  10. 【签约】ManageEngine卓豪签约中国大饭店 | 智能解析日志、洞察威胁,提升数据安全合规性