SYN-Flood防御方法之一Synproxy
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的防御
最新文章
- oracle信息统计
- PHP开发工具
- Jquery_AjaxFileUpload插件的使用记录
- C#中小数点后保留两位小数,四舍五入的函数及使用方法
- 20145208 实验二 Java面向对象程序设计
- VNC与Windows之间的复制粘贴
- (二)重拾单片机 第一天 LED灯
- A Round Peg in a Ground Hole(凸包应用POJ 1584)
- 《深入浅出WPF》重点摘要(—)Binding自动通知机制
- spring mvc 经典总结
- poj 3154 Graveyard 贪心
- (转)失落的C语言结构体封装艺术
- 10g中注意谓词过滤的位置
- S3C2440硬件IIC详解
- <;EffectiveJava>;读书笔记--02泛型数组
- 解决python第三方插件下载慢的方法
- Spring Cloud Finchley版中Consul多实例注册的问题处理
- 数据源、数据集、同步任务、数据仓库、元数据、数据目录、主题、来源系统、标签、增量识别字段、修改同步、ES索引、HBase列族、元数据同步、
- grep配置颜色显示
- python全栈开发笔记--------条件语句
热门文章
- Docker 内部之间的网络连接
- jqGrid 排序
- webpack-1
- Android拍照,录制视频,相机简单功能实现
- knockout.js(js)代码在IE中出现“意外地调用了方法或属性”的错误
- Kafka 分布式消息系统详解
- 位姿检索PoseRecognition:LSH算法.p稳定哈希
- What&#39;s Dead &; Exploded in Swift&#39;s exception stack?
- Rx (Reactive Extensions)介绍
- iframe子页面调用父页面js函数