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的防御

最新文章

  1. oracle信息统计
  2. PHP开发工具
  3. Jquery_AjaxFileUpload插件的使用记录
  4. C#中小数点后保留两位小数,四舍五入的函数及使用方法
  5. 20145208 实验二 Java面向对象程序设计
  6. VNC与Windows之间的复制粘贴
  7. (二)重拾单片机 第一天 LED灯
  8. A Round Peg in a Ground Hole(凸包应用POJ 1584)
  9. 《深入浅出WPF》重点摘要(—)Binding自动通知机制
  10. spring mvc 经典总结
  11. poj 3154 Graveyard 贪心
  12. (转)失落的C语言结构体封装艺术
  13. 10g中注意谓词过滤的位置
  14. S3C2440硬件IIC详解
  15. <EffectiveJava>读书笔记--02泛型数组
  16. 解决python第三方插件下载慢的方法
  17. Spring Cloud Finchley版中Consul多实例注册的问题处理
  18. 数据源、数据集、同步任务、数据仓库、元数据、数据目录、主题、来源系统、标签、增量识别字段、修改同步、ES索引、HBase列族、元数据同步、
  19. grep配置颜色显示
  20. python全栈开发笔记--------条件语句

热门文章

  1. Docker 内部之间的网络连接
  2. jqGrid 排序
  3. webpack-1
  4. Android拍照,录制视频,相机简单功能实现
  5. knockout.js(js)代码在IE中出现“意外地调用了方法或属性”的错误
  6. Kafka 分布式消息系统详解
  7. 位姿检索PoseRecognition:LSH算法.p稳定哈希
  8. What's Dead & Exploded in Swift's exception stack?
  9. Rx (Reactive Extensions)介绍
  10. iframe子页面调用父页面js函数