SYN-Flood攻击:

攻击者发送大量的SYN给服务器. 服务器必须针对每一个SYN请求回送一个SYN-ACK 应答包,此时服务器就必须保持一条半开放的连接,直到接收到一个对应的ACK应答包为止. 保持如此数目巨大的半开放连接,将会持续消耗掉服务器的资源,直到资源枯竭

什么是SYN-PROXY?

SYNPROXY是一个TCP握手代理,该代理截获TCP连接建立的请求,它可以保证只有与自己完成整个TCP握手(该握手过程非常轻量级,采用Syncookie机制,不会涉及任何关于socket的逻辑)的连接才被认为是正常的连接,此时才会由代理真正发起与真实服务器的TCP连接

SYN-PROXY作用:

主要用SYN-PROXY来进行防御SYN-Flood 攻击。

Syncookie机制:

当收到客户端的SYN请求时,服务器需要回复SYN+ACK包给客户端,客户端也要发送确认包给服务器。在SYN cookies中,根据客服端发来的SYN包计算出一个cookie值。这个cookie作为将要返回的SYN ACK包的初始序列号。当客户端返回一个ACK包时,根据包头信息计算cookie,与返回的确认序列号(初始序列号 + 1)进行对比,如果相同,则是一个正常连接,否则被认为是SYN-Flood攻击

关键部分是cookie的计算,cookie的计算应该包含本次连接的状态信息,使攻击者不能伪造。

cookie的计算:

服务器收到一个SYN包,计算一个消息摘要mac。

mac = MAC(A, k);

MAC是密码学中的一个消息认证码函数,也就是满足某种安全性质的带密钥的hash函数,它能够提供cookie计算中需要的安全性。

在Linux实现中,MAC函数为SHA1。

A = SOURCE_IP || SOURCE_PORT || DST_IP || DST_PORT || t || MSSIND

k为服务器独有的密钥,实际上是一组随机数。

t为系统启动时间,每60秒加1。

MSSIND为MSS对应的索引。

SYN-PROXY原理:

图中红线部分是由代理模拟发出的

上图流程

  • 1: Client 与 Proxy 三次握手
  • 2: Proxy 与 Server 三次握手
  • 3:Client与Server之间传输数据
  • 利用 Syn Cookie 原理,实现对非 Syn 包有 Cookie 检测,不符合Cookie算法数据包直接丢弃
  • 只有在 Client 与 Proxy 三次握手之后才会与 Server 连接,实现了对Syn Flood的防御

SYN-Flood防御方法之一Synproxy的更多相关文章

  1. 用iptables抗御SYN Flood攻击

    1         引 言 网络安全是各种网络应用面临的一个首要问题.从网络普及的那天开始,网络犯罪就没有停止过,相反有愈演愈烈之势.研究发现,现今的网络攻击以分布式拒绝服务攻击(DDOS)为主 .其 ...

  2. SYN Flood攻击及防御方法 (转)

    原文连接:http://blog.csdn.net/bill_lee_sh_cn/article/details/6065704 一.为什么Syn Flood会造成危害      这要从操作系统的TC ...

  3. TCP SYN flood洪水攻击原理和防御破解

    简介 TCP协议要经过三次握手才能建立连接: 于是出现了对于握手过程进行的攻击.攻击者发送大量的SYN包,服务器回应(SYN+ACK)包,但是攻击者不回应ACK包,这样的话,服务器不知道(SYN+AC ...

  4. 浅谈iptables防SYN Flood攻击和CC攻击

    ------------------------本文为自己实践所总结,概念性的东西不全,这里粗劣提下而已,网上很多,本文主要说下目前较流行的syn洪水攻击和cc攻击------------------ ...

  5. SYN Flood应如何应对

    1 什么是SYN Flood攻击 在TCP三次握手时,服务器接收客户端的SYN请求,操作系统将为该请求分配一个TCP(Transmission Control Block),服务器返回一个SYN/AC ...

  6. 扯谈网络编程之Tcp SYN flood洪水攻击

    简单介绍 TCP协议要经过三次握手才干建立连接: (from wiki) 于是出现了对于握手过程进行的攻击.攻击者发送大量的SYN包,server回应(SYN+ACK)包,可是攻击者不回应ACK包,这 ...

  7. DDos攻击的常见方法及防御方法

    什么是DDoS? DDoS是英文Distributed Denial of Service的缩写,意即“分布式拒绝服务”,那么什么又是拒绝服务(Denial of Service)呢?可以这么理解,凡 ...

  8. DDOS SYN Flood攻击、DNS Query Flood, CC攻击简介——ddos攻击打死给钱。限网吧、黄网、博彩,,,好熟悉的感觉有木有

    摘自:https://zhuanlan.zhihu.com/p/22953451 首先我们说说ddos攻击方式,记住一句话,这是一个世界级的难题并没有解决办法只能缓解 DDoS(Distributed ...

  9. SYN FLOOD学习理解

    SYN FLOOD是一种比较常见的DoS攻击手段,它的特点就是防不胜防.SYN攻击属于DOS攻击的一种,它利用TCP协议缺陷,通过发送大量的半连接请求,耗费CPU和内存资源.SYN攻击除了能影响主机外 ...

随机推荐

  1. JqGrid saveRow方法报404错误

    TCX_1807工艺配置/检测项配置页面为jqgrid可编辑页面,使用的脚本为 ){ jQuery('#gridList').saveRow(lastId, true);//保存上一个修改的单元行 } ...

  2. 如何在Linux下添加自己的驱动

    在此Linux驱动开发采用网络的方式,介绍两种驱动开发的方法:一.驱动编译到内核 1.先选择一个放置驱动代码的位置,例:drivers/char/xxx.c 2.在drivers/char/Kconf ...

  3. js中国各大城市快速选择代码

    js中国各大城市快速选择插件 在线演示本地下载

  4. 利用JavaScript的%做隔行换色

    <html> <head> <meta charset="utf-8"> <title>无标题文档</title> &l ...

  5. 在MyEclipse中使用debug模式

     转:http://blog.csdn.net/competerh_programing/article/details/6773371 1, 首先在一个java文件中设断点,然后运行,当程序走到断点 ...

  6. j2ee学习笔记

    Servlet: ①字符集问题:②身份验证:③统一的输入输出:类似母版,重写ServletResponeceWraper的getWriter,使用缓存流. 然后输出时,分析stringWriter , ...

  7. Oracle"TNS监听程序找不到符合协议堆栈要求的可用处理程序"解决方案

    问题描述:在使用ETL工具通过odbc方式连接Oracle进行数据抽取的过程中,Oracle 监听日志报错如下: 根本原因就是Oracle的process和session已经达到了甚至超过了最大值,解 ...

  8. NagiosQL安装

        NagiosQL和Nconf是比较好用的Nagios配置工具. 一.安装NagiosQL 1.在服务器终端运行以下命令: ##YUM安装PHP模块yum -y install --disabl ...

  9. Spark的协同过滤.Vs.Hadoop MR

    基于物品的协同过滤推荐算法案例在TDW Spark与MapReudce上的实现对比,相比于MapReduce,TDW Spark执行时间减少了66%,计算成本降低了40%. 原文链接:http://w ...

  10. 3D集合图元:最小边界框/包围盒(boundingbox)

    对于2D边界框的应用时比较广泛地,它为一个简单匹配建立了很小的计算规则,3D模型的boundingbox则比较困难,计算代价较大.对于PCL库的使用则降低了计算难度,三维数值化降低了建模过程,可以使用 ...