SYN flood攻击的原理及其防御
SYNFlood攻击
SYNFlood攻击什么是SYN Flood攻击?SYN泛洪(半开放式攻击)是⼀种,旨在通过消耗所有可⽤的服务器资源来使服务器⽆法⽤于合法流量。
通过重复发送初始连接请求(SYN)数据包,攻击者可以淹没⽬标服务器计算机上的所有可⽤端⼝,从⽽使⽬标设备对合法流量的响应缓慢或完全不响应。
SYN Flood攻击如何⼯作?SYN Flood攻击通过利⽤连接的握⼿过程来⼯作。
在正常情况下,TCP连接表现出三个不同的过程以进⾏连接。
1. ⾸先,客户端将SYN数据包发送到服务器以启动连接。
2. 然后,服务器使⽤SYN / ACK数据包响应该初始数据包,以便确认通信。
3. 最后,客户端返回⼀个ACK数据包,以确认已从服务器接收到该数据包。
完成发送和接收数据包的顺序之后,TCP连接将打开并能够发送和接收数据。
为了创建,攻击者利⽤以下事实:接收到初始SYN数据包后,服务器将以⼀个或多个SYN / ACK数据包进⾏响应,并等待握⼿的最后⼀步。
运作⽅式如下:1. 攻击者通常使⽤IP地址将⼤量SYN数据包发送到⽬标服务器。
2. 然后,服务器响应每个连接请求,并保留⼀个开放的端⼝以准备接收响应。
3. 当服务器等待永远不会到达的最终ACK数据包时,攻击者将继续发送更多SYN数据包。
每个新的SYN数据包的到来使服务器暂时维持新的开放端⼝连接⼀段时间,⼀旦所有可⽤端⼝都被利⽤,服务器将⽆法正常运⾏。
在⽹络中,当服务器使连接保持打开状态但连接另⼀端的计算机未打开时,该连接被视为半打开。
在这种DDoS攻击中,⽬标服务器会不断离开开放的连接,并等待每个连接超时,然后端⼝才能再次可⽤。
结果是,这种类型的攻击可以被视为“半开放式攻击”。
SYN泛滥可以通过三种不同的⽅式发⽣:1. 直接攻击:未被欺骗的SYN泛洪称为直接攻击。
在这种攻击中,攻击者根本不会掩盖其IP地址。
由于攻击者使⽤具有真实IP地址的单个源设备来发起攻击,因此攻击者极易受到发现和缓解的影响。
[原创]SYNflood攻击原理
[原创]SYNflood攻击原理剖析"拒绝服务"攻击-SYN拒绝服务一、洪水——大自然对人类的报复每一年,自然界都要用各种方式去报复人们对它做的一切,例如洪水。
每一年,人们都要为洪水后满地的狼籍和可能造成的人员伤亡和财产损失而发愁。
为了抵抗洪水,人们砍伐树木挖采岩石建造更高的堤坝;为了破坏这些堤坝,大自然发起更猛烈的洪水冲垮这些防护措施。
在大自然与人类抗衡的同时,网络上也有人与人之间的抗衡。
每一年,有些人总要不断试验各种令某些网站长时间无法访问的攻击方法。
每一年,投资者都要因为这些网站被恶意停止所造成的经济损失头痛。
为了抵抗这些人的攻击,技术人员研究各种方法让这些攻击造成的损失降低;为了各种目的,攻击者们研究更多的攻击方法让网站再次瘫痪。
这种攻击被称为“Denial of Service(DoS)”,臭名昭著的“拒绝服务”攻击。
它通常使用不只一台机器进行攻击,攻击者能同时控制这些机器,这种结构就是“Distributed”,分布式。
所以,我们要讨论的拒绝服务,默认都是指“Distributed Denialof Service(DDoS)”,分布式拒绝服务。
二、面对洪水……1.洪水以外的东西——被滥用的SYN拒绝服务(Synchronize Denial of Service)当一个地区即将发生洪水(或者已经发生)的时候,当地居民的表现很少有镇定的:东奔西跑的、收拾财物的、不知所措的……整个城镇乱成一锅粥,造成的后果就是街道交通混乱,谁也跑不了。
这个问题到了网络上,就变成了一堆数据包只能在服务器外面乱撞而不入。
为什么会这样,因为攻击者使用了SYN攻击。
要明白SYN攻击的原理,要从连接建立的过程开始说起。
从我们输入一个网址到我们能看到这个网页,机器在非常短的时间内为我们做了三件重要的事情:1.机器发送一个带有“ SYN”(同步)标志的数据包给服务器,请求连接;2.服务器返回一个带有SYN标志和ACK(确认)标志数据包给机器;3.机器也返回一个ACK确认标志数据包给服务器,数据传输建立。
SYN FlOOD攻击原理、检测及防御
关键 词 : S Y N F l o o务攻击和分布式拒绝服务攻击是网络攻击方式中危害极 3 S Y N F l o o d攻击 检测 大的攻击, 和其他的网络攻击不 同, 拒绝服务攻击不是对攻击 目标的 3 . 1传统 检测 方法 系统和数据进行危害, 而是对攻击 目标的网络进行耗尽 , 同时对系统 种是查看本地连接是否有大量的半开连接队列 ,但这个方法 的操 作面 临着 资 源不 断 减少 的情况 ,这 样 就会 导致 攻 击 目标 的 服务 不是 很 准确 。 另一 种是 给 每一 个请 求连 接 的 I P地 址分 配一 个 C o o k i e . 器系统出现崩溃的情况 , 使得用户无法使用网络服务。S N Y F L O O D 如 果短 时 间 内连 续 受 到某 个 I P的重 复 S Y N包 ,就认 定 是受 到 了攻 就 是 拒绝 服务 攻 击 和分 布式 拒 绝服 务攻 击 的 重要 方式 之 一 ,如果 攻 击 , 以后从 这 个 I P地址 来 的包会 被 丢弃 。由于 S Y N包 的源 I P地址 可 击 的目标是支持 T C P应用的,那么这种攻击方式就可以对攻击 目标 以随意伪 造 , S Y N F I o o d 攻 击 可 以很容 易规 避 S Y N C o o k i e 检测。 的所 有 网络 连 接进 行 攻 击 ,同时 使 用户 无 法 正 常 进行 网络 的访 问 , 3 . 2 牛顿 均差 插值 检测 法 S N Y F L O O D攻 击 的原 理就 是利 用 T C P协 议在 建 立 连接 的时候 三次 插值法利用函数 f ( x ) 在某区间中若干点的函数值 , 作出适当的特 握 手 的缺 陷 , 同 时利 用 I P的欺骗 技 术 。为 了更 好 的 解决 这 种攻 击 方 定函数 , 在这些点上取已知值 , 在 区间的其他点上用这特定函数 的值 式, 对S Y N F L O O D攻 击 进行 必要 的检测 是 非 常重 要 的 , 在 检测 方 面 作为 函数 f ( x ) 的近似值。如果这特定函数是多项式 , 就称它为插值多 人们已经在使用一些方法 的,同时在防御方法上人们也找到了一些 项式。利用插值基函数很容易得到拉格 朗日插值多项式 , 公式结构紧 措施 , 可以通过修改系统的配置 , 采用必要的防火墙或者 只允许合法 凑, 在理论分析中甚为方便 , 但当插值节点增减时全部插值基 函数均 的I P源在设备上进行使用 , 这样进行 网络连接 的时候才能避免 出现 要 随之 变化 ,整 个公 式 也将 发生 变 化 ,这在 实 际计算 中是很 不 方便 的, 为了克服这一缺点 , 提出了牛顿插值 。 I P欺骗 的情 况 。 1 T C P三次 握手 4攻 击 防御 只 要服 务器 提供 T C P 应用 , 攻 击 者就 可 以进行 S Y N F l o o d攻击 , T C P 是传输控制协议 的简称 , 它是一种传输层协议 , 在使用 的时 候 主要 是进 行 面 向连 接 。面 向连 接是 一 种数 据 在传 输 的时 候建 立起 而且 S Y N F l o o d 攻 击 一般很 难 以防 御和追 踪 , 现介绍 几 种防 御办 法 。 来 的虚 电路 连 接 ,在 进行 连接 的时候 主要 是 对 客户 端 和服 务器 之 间 4 . 1修改 系统 配 置 进行 连 接 。 这个 连 接 的过程 通常 被人 们称 作 为 T C P的 三次握 手 。 T C P 我们 可 以修 改系统 支持 的最 大 T C P 连 接数 以及 通过 负 载均衡 等 的第 一 次握 手 是客 户 端 向服 务器 发 送 S Y N包 , 并且 要 在 系统 缓 存 中 来 提 高 防御 S Y N F l o o d 攻击 能力 。 开辟~个空间来对服务器 的请求进行处理,这时候连接 的状态表现 4 . 2采用 防火 墙 为S Y N 的发送 状 态 。T C P的第二 次握 手是 服务 器 收到 S Y N包 之后 , 防火墙通常用于保护内部网络不受外部网络 的非授权访 问, 它 对 客户 发送 的 S Y N包 进行 确认 ,然后 向客户 端发 送 S Y N + A C K包 这 位于 客户 端 和服 务器 之 间 。 由于防火 墙 所能 处理 的半 开 连接 数 远大 时在系统的缓存区域同时也是要开辟一块空间对客户端 的请求进行 于服 务 器所 能 处 理 的半 开 连 接 数 以及 根 据 S Y N F l o o d攻击 特 性 , 因 D O S 攻击 有效 地保 护 内部 的服 务器 。 处理, 这 时 的连 接状 态 是 S Y N 的接 收状 态 。T C P的第 三 次握 手 是客 此 防火 墙 可 以用 来 阻止 D 户端 收 到服务 器 发送 的 S Y N + A C K包 ,然后 将 A C K包重 新 发送 给服 4 . 3边缘路由设备只允许合法源 I P进入网络 务器, 服务 器 收到 A C K包 以后 , 客户 端 和服 务器 的连接 就 完 成 了 , 三 通 过在 边 界 路 由设 备 上 配 置访 问控 制 列表 只 允 许合 法 源 I P地 这样会大大过滤掉 S Y N F l o o d 攻击流量. 即使部分利 次握手也就完成了, 这时客户端和服务器就可以进行数据 的传输了。 址才能访问网络. 2 S Y N F L O O D攻击 原理 用 合法 源 I P地址 进行 的攻 击 . 也 非 常容 易被 追踪 。 这是 目前解 决互 联 网S Y N F l o o d攻击 最有 效 的办法 。 2 . 1 T C P 握 手 缺陷 5结束 语 T C P的第二次握手时 ,服务器在收到客户端发送的 S Y N 包以 后, 要在系统的缓存中对客户的请求进行处理, 同时服务器要向客户 为了更好的对 S Y N F L O O D 攻击原理进行掌握 ,同时对传统 的 进 而 找 到更 加准 确 的检 测方 法 , 在检 测方 法 端发 送 S Y N + A C K包 , 在没 有 S Y N F L O O D 攻 击 的 情况 下 , 也 可 能会 攻 击检 测方 法 进行 分 析 , 出现 因为 网络 的原 因 导致 服务 器 在一 定 的 时间 内无 法 收 到 A C K包 , 进行分析的时候对防御 的方法也能进行必要的分析。S Y N F L O O D 在 收到 S Y N F L O O D 攻 击 以后 ,服 务 器会 不 断 的进 行 S Y N + A C K包 攻击方式是与其他攻击方式不 同的攻击 , 在进行攻击的时候 , 不需要 的传 输 , 这样 就 会 导致 缓存 不 断要 进行 空 间 的预 留 , 进 而 出 现系 统缓 使用木马等程序就能对攻击 目标进行攻击,只是需要攻击 目标在使 C P服务 即可 。现 在 , 网络应 用规 模越 来越 大 , 为 了更 好 的利用 网 存不 断 释放 的情 况 , 这时的 S Y N F L O O D 攻 击 就是 利用 的 T C P 握手 用 T 络, 一定要提高网络的使用安全 , 拒绝服务攻击 的危害越来越严重 , 时 出现 的缺 陷 。 需 要提 高全 网用户 的 网络 安全 防 护意 识 和技 术水 平 以及 需要 网络 服 2 . 2 I P欺 骗 在网络 中, 路由设备要根据数据包 的目标 I P地址进行数据包 的 务提供商和用户进行共 同防御 。拒绝服务攻击将仍是我们必须重点 传输 , 使数据包传输到 目的端 , 在这个过程 中, 对源 I P地址是不会进 防范和 研究 的 网络安 全 的威 胁 之 一 。 参 考文 献 行检查的, 这样也就为 S Y N F L O O D 的攻击提供了一个便利的条件。 S Y N F L O O D 进行 攻 击 的 时候 ,可 以对 源 I P 的地 址 进行 随意 的伪 [ 1 ] 胡伟栋, 汪为农. 分布式拒绝服务攻击及其防范叨. 计算机工程 , 2 0 0 0 造 ,使 源 I P地 址在 进行 追 踪 的时候 非常 难进 行 ,尽 管 S Y N F L O O D ( 1 0 ) . 可 以通过 这种 方 式来 进行 攻击 , 同 时也可 以找到 防御 的方 法 。 [ 2 1 - ¥卫. I n t e r n e t 网络层 安全 协议 理论 研 究 与 实现 叨. 计 算机 学报 , 1 9 9 9
TCP洪水攻击(SYNFlood)的诊断和处理
TCP洪⽔攻击(SYNFlood)的诊断和处理SYN Flood是当前最流⾏的DoS(拒绝服务攻击)与DDoS(分布式拒绝服务攻击)的⽅式之⼀,这是⼀种利⽤TCP协议缺陷,发送⼤量伪造的TCP连接请求,常⽤假冒的IP或IP号段发来海量的请求连接的第⼀个握⼿包(SYN包),被攻击服务器回应第⼆个握⼿包(SYN+ACK 包),因为对⽅是假冒IP,对⽅永远收不到包且不会回应第三个握⼿包。
导致被攻击服务器保持⼤量SYN_RECV状态的“半连接”,并且会重试默认5次回应第⼆个握⼿包,塞满TCP等待连接队列,资源耗尽(CPU满负荷或内存不⾜),让正常的业务请求连接不进来。
详细的原理,⽹上有很多介绍,应对办法也很多,但⼤部分没什么效果,这⾥介绍我们是如何诊断和应对的。
诊断我们看到业务曲线⼤跌时,检查机器和DNS,发现只是对外的web机响应慢、CPU负载⾼、ssh登陆慢甚⾄有些机器登陆不上,检查系统syslog:tail -f /var/log/messagesApr 18 11:21:56 web5 kernel: possible SYN flooding on port 80. Sending cookies.检查连接数增多,并且SYN_RECV 连接特别多:netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'TIME_WAIT 16855CLOSE_WAIT 21SYN_SENT 99FIN_WAIT1 229FIN_WAIT2 113ESTABLISHED 8358SYN_RECV 48965CLOSING 3LAST_ACK 313根据经验,正常时检查连接数如下:netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'TIME_WAIT 42349CLOSE_WAIT 1SYN_SENT 4FIN_WAIT1 298FIN_WAIT2 33ESTABLISHED 12775SYN_RECV 259CLOSING 6LAST_ACK 432以上就是TCP洪⽔攻击的两⼤特征。
SYNFlood攻击的原理及防御
文章编号:2096-1472(2019)-03-29-03DOI:10.19644/ki.issn2096-1472.2019.03.009软件工程 SOFTWARE ENGINEERING 第22卷第3期2019年3月V ol.22 No.3Mar. 2019SYN Flood 攻击的原理及防御张文川(兰州石化职业技术学院,甘肃 兰州 730060)摘 要:SYN-Flood攻击是当前网络上最为常见的DDoS攻击,也是最为经典的拒绝服务攻击,它利用了TCP协议实现上的一个缺陷,通过向网络服务所在端口发送大量的伪造源地址的攻击报文,就可能造成目标服务器中的半开连接队列被占满,从而阻止其他合法用户进行访问。
为了有效防范这种攻击,在分析攻击原理的基础上,发现可以使用TCP代理防御及TCP源探测防御方法来解决这个问题,经过测试证明,该办法能够有效降低SYN Flood攻击造成的危害。
关键词:DDoS攻击;STN Flood攻击;TCP代理防御;TCP源探测防御中图分类号:TP399 文献标识码:AThe Principle and Defense of SYN Flood AttackZHANG Wenchuan(Lanzhou Petrochemical College of V ocational Technology ,Lanzhou 730060,China )Abstract:SYN-Flood attack is the most common DDoS attack and the most classic denial-of-service attack on the current network.It takes advantage of a flaw in TCP protocol implementation and sends a large number of attack packets of forged source addresses to the port where the network service is located,which may cause the semi-open connection queue in the target server to be occupied,thus preventing other legal users from accessing.In order to effectively prevent this attack,on the basis of analyzing the attack principle,it is found that TCP proxy defense and TCP source detection defense methods can be used to solve this problem.Testsprove that this method can effectively reduce the harm caused by SYN Flood attack.Keywords:DdoSattack;STN Flood attack;TCP proxy defense;TCP source detection defense基金项目:全国工业和信息化职业教育教学指导委员会工信行指委“基于校企合作人才培养模式的信息化教学的研究与实践”项目编号:【2018】20号.1 引言(Introduction)过去,攻击者所面临的主要问题是网络宽带不足,受限于较慢的网络速度,攻击者无法发出过多的请求。
SYN Flood攻击防御策略综述
SYN Flood攻击防御策略综述作者:丁彭父乐张宏莉来源:《智能计算机与应用》2014年第03期收稿日期:2014-01-08基金项目:国家“242”信息安全计划基金资助项目(2012D100)。
作者简介:丁彭父乐(1990-),女,湖南常德人,硕士研究生,主要研究方向: 网络与信息安全;张宏莉(1973-),女,吉林榆树人,博士,教授,博士生导师,主要研究方向: 网络安全与社会计算、并行计算、网络计算等。
摘要:随着互联网技术的迅速发展,越来越多网络安全问题日益突显出来。
研究表明DoS/DDoS攻击是目前最为严重的网络安全问题之一,SYN Flood攻击又是DoS/DDoS攻击中最为常见的攻击。
首先简要介绍了SYN Flood攻击的原理,然后通过研究近年来国内外学术界对SYN Flood攻击的研究成果,总结了针对SYN Flood攻击的三类防御策略:基于退让和负反馈的防御策略,基于TCP协议栈缺陷的防御策略和基于数据流的防御策略,并分别分析了各类型防御策略的主要防御方法。
关键词:SYN Flood攻击;退让和负反馈; 协议栈缺陷;数据流统计;网关侦听中图分类号:TP393 08文献标识码:A文章编号:2095-2163(2014)03-0028-04A Brief Review of SYN Flood Attacks Defense StrategyDING Pengfule,ZHANG Hongli(School of Computer Science and Technology, Harbin Institute of Technology, Harbin 150001, China)Abstract:With the rapid development of Internet technology, more and more network security issues are exposed increasingly. Studies have shown that DoS/DDoS attack is one of the most serious network security problems, and the most common one of DoS/DDoS attacks is SYN Flood attack. This paper first briefly introduces the principle of SYN Flood attack at first. And then after studying researches about SYN Flood at home and abroad in recent years, the paper finds that the common defense strategies are mainly about: defense strategy based on concession and negative feedback, defect of TCP protocol stack and the data traffic. Finally, the paper analyzes the main defense method of all types of defense strategies.Key words:SYN Flood Attack; Concession and Negative Feedback; Defect of TCP Protocol Stack; Statistic of Data Traffic; Gateway Interception0引言网络技术发展给人们带来了各种便利,但与此同时也应看到,各类新的安全问题也在不断产生。
防flood类攻击设置参数
防flood类攻击设置参数【原创实用版】目录1.防 flood 类攻击的重要性2.flood 类攻击的定义和种类3.如何设置防 flood 类攻击的参数4.设置防 flood 类攻击参数的实际应用5.总结正文【1.防 flood 类攻击的重要性】在网络世界中,安全一直是一个备受关注的话题。
随着网络技术的不断发展,网络攻击手段也日益翻新。
其中,flood 类攻击是一种常见的恶意攻击方式,对网络安全造成了严重威胁。
因此,防止 flood 类攻击显得尤为重要。
【2.flood 类攻击的定义和种类】flood 类攻击,顾名思义,是指攻击者通过向目标发送大量数据包,使得目标系统无法正常处理正常流量,从而造成拒绝服务(DoS)或拒绝访问(DoA)的攻击手段。
常见的 flood 类攻击包括:ICMP Flood、UDP Flood、TCP Flood、SYN Flood 等。
【3.如何设置防 flood 类攻击的参数】为了有效防止 flood 类攻击,我们需要设置一些相应的参数。
具体操作如下:(1)设置防火墙规则:通过防火墙,我们可以对进出网络的数据包进行控制。
针对 flood 类攻击,我们需要设置允许或拒绝某些特定类型的数据包。
例如,可以限制 ICMP、UDP 等特定协议的数据包进出网络。
(2)配置入侵检测系统(IDS):IDS 可以实时监控网络中的数据包,一旦发现异常流量,可以立即报警并采取措施进行处理。
因此,我们需要对 IDS 进行配置,以便它能够识别并防范 flood 类攻击。
(3)启用流量控制:通过流量控制,我们可以限制单位时间内通过网络的数据量。
这样一来,即使遭受 flood 类攻击,也能够保证网络中的正常流量不会受到影响。
(4)合理设置路由策略:针对 flood 类攻击,我们还可以通过设置路由策略来进行防范。
例如,可以设置路由器的出口接口的最大速率,限制数据包的发送速度。
【4.设置防 flood 类攻击参数的实际应用】在实际应用中,我们需要根据网络的实际情况和需求,灵活设置防flood 类攻击的参数。
防火墙-流量型攻击之SYN Flood及防御
防火墙-流量型攻击之SYN Flood及防御大家好,作者和你们又见面了!上一期作者带着大家一起了解了单包攻击的基本防御知识,知道了单包攻击的几大类型,以及防火墙支持防御的攻击种类。
但是,在现网中单包攻击只占了很小一部分比例,更多的攻击还是集中在流量型攻击和应用层攻击。
本期作者将继续为大家讲解一下现网上常见的流量型攻击。
过去,攻击者所面临的主要问题是网络带宽,由于较小的网络规模和较慢的网络速度的限制,攻击者无法发出过多的请求。
虽然类似“Ping of Death”的攻击类型只需要较少量的包就可以摧毁一个没有打过补丁的操作系统,但大多数的DoS攻击还是需要相当大的带宽,而以个人为单位的黑客们很难消耗高带宽的资源。
为了克服这个缺点,DoS攻击者开发了分布式的攻击。
木马成为黑客控制傀儡的工具,越来越多的计算机变成了肉鸡,被黑客所利用,并变成了他们的攻击工具。
黑客们利用简单的工具集合许多的肉鸡来同时对同一个目标发动大量的攻击请求,这就是DDoS(Distributed Denial of Service)攻击。
随着互联网的蓬勃发展,越来越多的计算机不知不觉的被利用变成肉鸡,攻击逐渐变成一种产业。
提起DDoS攻击,大家首先想到的一定是SYN Flood攻击。
今天作者就给大家详细说说SYN flood的攻击和防御。
最初的SYN Flood攻击类似于协议栈攻击,在当年的攻击类型中属于技术含量很高的“高大上”。
当年由于系统的限制以及硬件资源性能的低下,称霸DDoS攻击领域很久。
它与别人的不同在于,你很难通过单个报文的特征或者简单的统计限流防御住它,因为它“太真实”、“太常用”。
SYN Flood具有强大的变异能力,在攻击发展潮流中一直没有被湮没,这完全是他自身的优秀基因所决定的:1.单个报文看起来很“真实”,没有畸形。
2.攻击成本低,很小的开销就可以发动庞大的攻击。
2014年春节期间,某IDC的OSS系统分别于大年初二、初六、初七连续遭受三轮攻击,最长的一次攻击时间持续将近三个小时,攻击流量峰值接近160Gbit/s!事后,通过对目标和攻击类型分析,基本可以判断是有一个黑客/黑客组织发起针对同一目标的攻击时间。
SYNFlOOD攻击原理、检测及防御
SYNFlOOD攻击原理、检测及防御SYN LLOOD是现在比较常见的攻击方式,它可以利用TCP协议的缺陷来对TCP连接请求进行伪造,进而导致CPU在资源方面出现耗尽的情况,或者是导致CPU出现内存不足的情况。
在对SYN FLOOD攻击进行分析的时候可以从TCP三次握手和握手的时候出现的缺陷,同时在IP方面出现的欺骗进行分析,这样可以更好的对SYN FLOOD 进行分析,进而找到检测的方法和防御的方法。
标签:SYN Flood攻击;检测;防御拒绝服务攻击和分布式拒绝服务攻击是网络攻击方式中危害极大的攻击,和其他的网络攻击不同,拒绝服务攻击不是对攻击目标的系统和数据进行危害,而是对攻击目标的网络进行耗尽,同时对系统的操作面临着资源不断减少的情况,这样就会导致攻击目标的服务器系统出现崩溃的情况,使得用户无法使用网络服务。
SNY FLOOD就是拒绝服务攻击和分布式拒绝服务攻击的重要方式之一,如果攻击的目标是支持TCP应用的,那么这种攻击方式就可以对攻击目标的所有网络连接进行攻击,同时使用户无法正常进行网络的访问,SNY FLOOD攻击的原理就是利用TCP协议在建立连接的时候三次握手的缺陷,同时利用IP的欺骗技术。
为了更好的解决这种攻击方式,对SYN FLOOD攻击进行必要的检测是非常重要的,在检测方面人们已经在使用一些方法的,同时在防御方法上人们也找到了一些措施,可以通过修改系统的配置,采用必要的防火墙或者只允许合法的IP源在设备上进行使用,这样进行网络连接的时候才能避免出现IP欺骗的情况。
1 TCP三次握手TCP是传输控制协议的简称,它是一种传输层协议,在使用的时候主要是进行面向连接。
面向连接是一种数据在传输的时候建立起来的虚电路连接,在进行连接的时候主要是对客户端和服务器之间进行连接。
这个连接的过程通常被人们称作为TCP的三次握手。
TCP的第一次握手是客户端向服务器发送SYN包,并且要在系统缓存中开辟一个空间来对服务器的请求进行处理,这时候连接的状态表现为SYN 的发送状态。
Linux服务器防御DDOS攻击
CentOS SYN Flood攻击原理Linux下设置特别值得一提的是CentOS SYN有很多值得学习的地方,这里我们主要介绍CentOS SYN攻击,包括介绍CentOS SYN 原理等方面。
CentOS SYN Flood攻击利用的是IPv4中TCP协议的三次握手(Three-Way Handshake)过程进行的攻击。
一:什么是CentOS SYN Flood攻击CentOS SYN Flood攻击利用的是IPv4中TCP协议的三次握手(Three-Way Hands hake)过程进行的攻击。
这个协议规定,如果一端想向另一端发起TCP连接,它需要首先发送TCP SYN (synchronize)包到对方。
对方收到后发送一个TCP SYN+ACK包回来,发起方再发送TCP ACK (ACKnowled ge Character)包回去,这样三次握手就结束了。
在上述过程中,还有一些重要的概念。
未连接队列:在三次握手协议中,服务器维护一个未连接队列,该队列为每个客户端的CentOS SYN包(syn=j)开设一个条目,该条目表明服务器已收到CentOS SYN包,并向客户发出确认,正在等待客户的确认包。
这些条目所标识的连接在服务器处于CentOS SYN_RECV状态,当服务器收到客户的确认包时,删除该条目,服务器进入ESTABLISHED状态。
或者说TCP服务器收到TCP SYN request包时。
在发送TCP SYN+ACK包回TCP客户机前,TCP服务器要先分配好一个数据区专门服务于这个即把形成的TCP连接。
一般把收到CentOS SYN包而还未收到ACK包时的连接状态成为半开连接(Half-open Connection)。
Backlog参数:表示未连接队列的最大容纳数目。
CentOS SYN -ACK 重传次数:服务器发送完CentOS SYN -ACK包,如果未收到客户确认包,服务器进行首次重传,等待一段时间仍未收到客户确认包,进行第二次重传,如果重传次数超过系统规定的最大重传次数。
网络安全实验--洪泛攻击
一、实验目的和要求理解带宽攻击原理理解资源消耗攻击原理掌握洪泛攻击网络行为特征二、实验内容和原理1.SYN Flood攻击Dos(Denial of Service)拒绝服务攻击是指在特定攻击发生后,被攻击的对象不能及时提供应有的服务。
从广义上说,任何导致服务器不能正常提供服务的攻击都是拒绝服务攻击。
SYN Flood是当前最流行的拒绝服务攻击之一,这是一种利用TCP协议缺陷,发送大量的伪造的TCP连接请求,从而使得被攻击方资源耗尽(CPU满负荷或内存不足)的攻击方式。
TCP协议是基于连接的,也就是说,为了在服务端和客户端之间传送TCP数据,必须先建立一个虚拟电路,也就是TCP连接。
建立TCP连接的标准过程是这样的:第一步,请求端(客户端)发送一个包含SYN标志的TCP报文,SYN即同步(Synchronize),同步报文会指明客户端使用的端口以及TCP连接的初始序号;第二步,服务器在收到客户端的SYN报文后,将返回一个SYN+ACK的报文,表示客户端的请求被接受,同时TCP序号被加1,ACK即确认(Acknowledgement);第三步,客户端也返回一个确认报文ACK给服务器端,同样TCP序列号被加1,到此一个TCP连接完成。
以上的连接过程在TCP协议中被称为三次握手。
问题就出在TCP连接的三次握手中,假设一个用户向服务器发送了SYN报文后突然死机或掉线,那么服务器在发出SYN+ACK应答报文后是无法收到客户端的ACK报文的(第三次握手无法完成),这种情况下服务器端一般会重试(再次发送SYN+ACK给客户端)并等待一段时间后丢弃这个未完成的连接,这段时间的长度我们称为SYN超时,一般来说这个时间是分钟的数量级(大约为30秒-2分钟);一个用户出现异常导致服务器的一个线程等待1分钟并不是什么很大的问题,但如果有一个恶意的攻击者大量模拟这种情况,服务器端将为了维护一个非常大的半连接列表而消耗非常多的资源。
SYN Flood攻击防范技术
1 概述1.1 产生背景SYN Flood攻击是一种通过向目标服务器发送SYN报文,消耗其系统资源,削弱目标服务器的服务提供能力的行为。
一般情况下,SYN Flood攻击是在采用IP源地址欺骗行为的基础上,利用TCP连接建立时的三次握手过程形成的。
众所周知,一个TCP连接的建立需要双方进行三次握手,只有当三次握手都顺利完成之后,一个TCP连接才能成功建立。
当一个系统(称为客户端)请求与另一个提供服务的系统(称为服务器)建立一个TCP连接时,双方要进行以下消息交互:(1) 客户端向服务器发送一个SYN消息;(2) 如果服务器同意建立连接,则响应客户端一个对SYN消息的回应消息(SYN/ACK);(3) 客户端收到服务器的SYN/ACK以后,再向服务器发送一个ACK消息进行确认。
当服务器收到客户端的ACK消息以后,一个TCP的连接成功完成。
连接的建立过程如图1所示:图1 TCP连接的建立在上述过程中,当服务器收到SYN报文后,在发送SYN/ACK回应客户端之前,需要分配一个数据区记录这个未完成的TCP连接,这个数据区通常称为TCB资源,此时的TCP连接也称为半开连接。
这种半开连接仅在收到客户端响应报文或连接超时后才断开,而客户端在收到SYN/ACK报文之后才会分配TCB资源,因此这种不对称的资源分配模式会被攻击者所利用形成SYN Flood攻击。
图2 SYN Flood攻击原理图如图2所示,攻击者使用一个并不存在的源IP地址向目标服务器发起连接,该服务器回应SYN/ACK消息作为响应,由于应答消息的目的地址并不是攻击者的实际地址,所以这个地址将无法对服务器进行响应。
因此,TCP握手的最后一个步骤将永远不可能发生,该连接就一直处于半开状态直到连接超时后被删除。
如果攻击者用快于服务器TCP连接超时的速度,连续对目标服务器开放的端口发送SYN报文,服务器的所有TCB资源都将被消耗,以至于不能再接受其他客户端的正常连接请求。
TCPSYNFlood攻击的原理机制检测与防范及防御方法
TCPSYNFlood攻击的原理机制检测与防范及防御方法TCP SYN Flood攻击的原理机制/检测与防范及防御方法作者: 来源: 剑客网站日期: 2006-8-6 9:41TCP SYN Flood攻击的原理机制/检测与防范及防御方法现在的攻击者,无所不在了.对于一些攻击手法,很多高手也都是看在眼里而没什么实质性防范措施.除了改端口,换IP,弄域名..还能做什么? 本篇文章介绍了TCP SYN Flood攻击的原理机制/检测与防范及防御方法,希望能给大伙一个思路.TCP SYN Flood攻击的机制客户端通过发送在TCP报头中SYN标志置位的数据分段到服务端来请求建立连接。
通常情况下,服务端会按照IP报头中的来源地址来返回SYN/ACK置位的数据包给客户端,客户端再返回ACK到服务端来完成一个完整的连接(Figure-1)。
在攻击发生时,客户端的来源IP地址是经过伪造的(spoofed),现行的IP路由机制仅检查目的IP地址并进行转发,该IP包到达目的主机后返回路径无法通过路由达到的,于是目的主机无法通过TCP三次握手建立连接。
在此期间因为TCP缓存队列已经填满,而拒绝新的连接请求。
目的主机一直尝试直至超时(大约75秒)。
这就是该攻击类型的基本机制。
发动攻击的主机只要发送较少的,来源地址经过伪装而且无法通过路由达到的SYN连接请求至目标主机提供TCP服务的端口,将目的主机的TCP缓存队列填满,就可以实施一次成功的攻击。
实际情况下,发动攻击时往往是持续且高速的。
Figure-3 SYN Flood Attack这里需要使用经过伪装且无法通过路由达到的来源IP地址,因为攻击者不希望有任何第三方主机可以收到来自目的系统返回的SYN/ACK,第三方主机会返回一个RST(主机无法判断该如何处理连接情况时,会通过RST重置连接),从而妨碍攻击进行。
Figure-4 IP Spoofing由此可以看到,这种攻击方式利用了现有TCP/IP协议本身的薄弱环节,而且攻击者可以通过IP伪装有效的隐蔽自己。
SYN Flood攻击实验
实验五SYN Flood攻击实验班级﹒学号:网络1201·2012******** 姓名:******实验日期:2014.11.28 任课教师:*******【实验目的】理解SYN Flood攻击原理熟悉SYN Flood攻击方法熟悉抵御SYN Flood攻击的方法【实验原理】SYN-Flood是目前最流行的DDoS攻击手段,DDoS只是洪水攻击的一个种类。
其实还有其它种类的洪水攻击。
以前的DoS手段在向分布式这一阶段发展的过程中也经历了逐步淘汰的过程。
SYN-Flood的攻击效果最好,故众黑客不约而同选择它。
以下了解一下SYN-Flood的详细情况。
Syn Flood利用了TCP/IP协议的固有漏洞。
面向连接的TCP三次握手是Syn Flood 存在的基础。
假设一个用户向服务器发送了SYN报文后突然死机或掉线,那么服务器在发出SYN+ACK应答报文后是无法收到客户端的ACK报文的(第三次握手无法完成),这种情况下服务器端一般会重试(再次发送SYN+ACK给客户端)并等待一段时间后丢弃这个未完成的连接,这段时间的长度我们称为SYN Timeout,一般来说这个时间是分钟的数量级(大约为30秒-2分钟);一个用户出现异常导致服务器的一个线程等待1分钟并不是很严重的问题,但如果有一个恶意的攻击者大量模拟这种情况,服务器端将为了维护一个非常大的半连接列表而消耗非常多的资源,即使是简单的保存并遍历也会消耗非常多的CPU时间和内存,何况还要不断对这个列表中的IP进行SYN+ACK的重试。
实际上如果服务器的TCP/IP栈不够强大,最后的结果往往是堆栈溢出崩溃---即使服务器端的系统足够强大,服务器端也将忙于处理攻击者伪造的TCP连接请求而无暇理睬客户的正常请求(毕竟客户端的正常请求比率非常小),此时从正常客户的角度看来,服务器失去响应,这种情况称做:服务器端受到了SYN Flood攻击(SYN洪水攻击)。
TCP原理篇之SYN Flood
TCP原理篇之SYN FloodTCP协议的SYN Flood攻击,这种攻击方式虽然原始,但是生命力顽强,长久以来在DDoS圈里一直处于德高望重的地位。
SYN Flood攻击的影响也不容小觑,从攻击中可以看到,以SYN Flood为主的数十G流量,很容易就造成被攻击目标网络瘫痪。
但TCP类的攻击远不止如此,本篇我们就来全面讲解基于TCP协议的各种DDoS攻击方式和防御原理,首先来了解TCP协议的基础知识。
0x01 TCP协议基础提起TCP,相信大家都不会陌生,每一位网络工程师入门时学到的第一个协议就是TCP了吧。
由于与生俱来的优良品质(面向连接、超时重传等可靠性保证),这个传输层协议构建了网络的半壁江山,很多常用的协议或应用如Web、Telnet/SSH、FTP等都是承载于TCP的。
这里我们用一些篇幅再来温习一遍TCP协议,我们以一次FTP连接建立和断开的过程为例,分析TCP报文的交互过程,了解TCP报文中的关键字段。
下面给出了使用Wireshark工具中Flow Graph功能绘制出的整个交互过程的流图:我们重点关注交互过程的一头一尾,即三次握手建立连接以及四次握手断开连接的过程。
三次握手建立连接在TCP中,通信双方使用三次握手来建立一个连接。
第一次握手,客户端向服务器发起请求,报文中的SYN标志位置为1,序号为2452765130(用X标记),如下图所示:第二次握手,服务器收到客户端的请求后,向客户端回应报文。
报文中的SYN和ACK标志位均置为1,序号为1996069412(用Y标记),确认序号为客户端的序号+1即X+1=2452765131,如下图所示:第三次握手,客户端收到服务器回应的报文后,首先检查报文中的确认序号是否正确。
如果确认序号正确(客户端的序号+1),发送确认报文。
确认报文中的ACK标志位置为1,确认序号为服务器的序号+1即Y+1=1996069413,如下图所示:而如果客户端检查服务器回应报文中的确认序号不正确,则会发送RST(Reset)复位报文,报文中的RST标志位置为1,表示连接出现问题,需要重新建立。
SYN洪泛攻击的原理、预防和排除
总结SYN洪泛攻击原理。
思考预防SYN洪泛攻击措施及故障排除方法。
SYN洪泛攻击概述:尽管这种攻击已经出现了十四年,但它的变种至今仍能看到。
虽然能有效对抗SYN洪泛的技术已经存在,但是没有对于TCP实现的一个标准的补救方法出现。
你可以在如今的操作系统和设备中找到保护应用层和网络层的不同解决方案的不同实现。
它利用TCP三次握手协议的缺陷,向目标主机发送大量的伪造源地址的SYN连接请求,使得被攻击方资源耗尽,从而不能够为正常用户提供服务。
SYN洪泛攻击原理:在TCP协议中被称为三次握手(Three-way Handshake)的连接过程中,如果一个用户向服务器发送了SYN报文,服务器又发出 SYN+ACK 应答报文后未收到客户端的 ACK 报文的,这种情况下服务器端会再次发送SYN+ACK给客户端,并等待一段时间后丢弃这个未完成的连接,这段时间的长度称为SYN Timeout,一般来说这个时间是分钟的数量级。
SYN flood 所做的就是利用了这个SYN Timeout时间和TCP/IP协议族中的另一个漏洞:报文传输过程中对报文的源 IP 地址完全信任。
SYN flood 通过发送大量的伪造 TCP 链接报文而造成大量的 TCP 半连接,服务器端将为了维护这样一个庞大的半连接列表而消耗非常多的资源。
这样服务器端将忙于处理攻击者伪造的TCP连接请求而无法处理正常连接请求,甚至会导致堆栈的溢出崩溃。
造成SYN洪泛攻击最主要的原因是TCP/IP协议的脆弱性。
TCP/IP是一个开放的协议平台,它将越来越多的网络连接在一起,它基于的对象是可信用户群,所以缺少一些必要的安全机制,带来很大的安全威胁。
例如常见的IP欺骗、TCP连接的建立、ICMP数据包的发送都存在巨大的安全隐患,给SYN洪泛攻击带来可乘之机。
SYN洪泛攻击类别直接攻击:如果攻击者用他们自己的没有经过伪装的IP地址快速地发送SYN数据包,这就是所谓的直接攻击。
SYN Flood攻击的基本原理及防御
Googl e Sear ch首页焦点原创安全文摘安全工具安全漏洞焦点项目焦点论坛关于我们添加文章English Version文章分类专题文章<<漏洞分析安全配置黑客教学编程技术工具介绍火墙技术入侵检测破解专题焦点公告焦点峰会文章推荐LSD RPC 溢出漏洞之分析任意用户模式下执行ring 0 代码IIS的NSIISLOG.DLL 溢出问题分析SYN Flood攻击的基本原理及防御创建时间:2001-06-28文章属性:转载文章来源:/syn.htm文章提交:xundi (xundi_at_)Shotgun首发于天极网第一部分SYN Flood的基本原理SYN Flood是当前最流行的DoS(拒绝服务攻击)与DDoS(分布式拒绝服务攻击)的方式之一,这是一种利用TCP协议缺陷,发送大量伪造的TCP连接请求,从而使得被攻击方资源耗尽(CPU满负荷或内存不足)的攻击方式。
要明白这种攻击的基本原理,还是要从TCP连接建立的过程开始说起:大家都知道,TCP与UDP不同,它是基于连接的,也就是说:为了在服务端和客户端之间传送TCP 数据,必须先建立一个虚拟电路,也就是TCP连接,建立TCP连接的标准过程是这样的:首先,请求端(客户端)发送一个包含SYN标志的TCP报文,SYN即同步(Synchronize),同步报文会指明客户端使用的端口以及TCP连接的初始序号;第二步,服务器在收到客户端的SYN报文后,将返回一个SYN+ACK的报文,表示客户端的请求被接受,同时TCP序号被加一,ACK即确认(Acknowledgement)。
第三步,客户端也返回一个确认报文ACK给服务器端,同样TCP序列号被加一,到此一个TCP连接完成。
以上的连接过程在TCP协议中被称为三次握手(Three-way Handshake)。
问题就出在TCP连接的三次握手中,假设一个用户向服务器发送了SYN报文后突然死机或掉线,那么服务器在发出SYN+ACK应答报文后是无法收到客户端的ACK报文的(第三次握手无法完成),这种情况下服务器端一般会重试(再次发送SYN+ACK给客户端)并等待一段时间后丢弃这个未完成的连接,这段时间的长度我们称为SYN Timeout,一般来说这个时间是分钟的数量级(大约为30秒-2分钟);一个用户出现异常导致服务器的一个线程等待1分钟并不是什么很大的问题,但如果有一个恶意的攻击者大量模拟这种情况,服务器端将为了维护一个非常大的半连接列表而消耗非常多的资源----数以万计的半连接,即使是简单的保存并遍历也会消耗非常多的CPU时间和内存,何况还要不断对这个列表中的IP进行SYN+ACK的重试。
syn flooding的原理
syn flooding的原理
SYN Flood(半开放攻击)是一种拒绝服务(DDoS)攻击,其目的是通过消耗所有可用的服务器资源使服务器不可用于合法流量。
SYN Flood的工作原理是:攻击者向目标服务器发送大量SYN数据包,通常会使用欺骗性的IP地址。
然后,服务器响应每个连接请求,并留下开放端口准备好接收响应。
当服务器等待从未到达的最终ACK数据包时,攻击者继续发送更多的SYN数据包。
每个新的SYN数据包的到达导致服务器暂时维持新的开放端口连接一段时间,一旦所有可用端口被使用,服务器就无法正常工作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1)服务器收到一个SYN包后,计算一个消息摘要mac:
2.2地址状态监控的解决方法
地址状态监控的解决方法是利用监控工具对网络中的有关TCP连接的数据包进行监控,并对监听到的数据包进行处理。处理的主要依据是连接请求的源地址。
每个源地址都有一个状态与之对应,总共有四种状态:
初态:任何源地址刚开始的状态;
NEW状态:第一次出现或出现多次也不能断定存在的源地址的状态;
mac = MAC(A,k);
MAC是密码学中的一个消息认证码函数,也就是满足某种安全性质的带密钥的hash函数,它能够提供cookie计算中需要的安全性。
A为客户和服务器双方的IP地址和端口号以及参数t的串联组合:
A = SOURCE_IP || SOURCE_PORT || DST_IP || DSOD
NEW
BAD
ACK/RST
SYN
ACK/RST
ACK包确认超时
ACK/RST
ACK包确认超时
图3地址状态转换图
下面分析一下基于地址状态监控的方法如何能够防御SYN Flood攻击。
1)对于一个伪造源地址的SYN报文,若源地址第一次出现,则源地址的状态为NEW状态,当监听到服务器的SYN+ACK报文,表明服务器已经为该源地址的连接请求建立了半连接。此时,监控程序代源地址发送一个ACK报文完成连接。这样,半连接队列中的半连接数不是很多。计时器开始计时,由于源地址是伪造的,所以不会收到ACK报文,超时后,监控程序发送RST数据包,服务器释放该连接,该源地址的状态转为BAD状态。之后,对于每一个来自该源地址的SYN报文,监控程序都会主动发送一个RST报文。
SYN flood
文章出处:中国安全网发布时间:2006-10-11网址:
摘要介绍了SYN Flood攻击的基本原理,详细地描述了目前几种比较有效的两种防御措施:SYN-cookie技术和地址状态监控技术。
关键词SYN Flood攻击拒绝服务攻击SYN cookie
1.1 TCP连接建立的过程
要掌握SYN Flood攻击的基本原理,必须先介绍TCP的三次握手机制。
TCP三次握手过程如下:
1)客户端向服务器端发送一个SYN置位的TCP报文,包含客户端使用的端口号和初始序列号x;
2)服务器端收到客户端发送来的SYN报文后,向客户端发送一个SYN和ACK都置位的TCP报文,包含确认号为x+1和服务器的初始序列号y;
K为服务器独有的密钥;
时间参数t为32比特长的时间计数器,每64秒加1;
2)生成cookie:
cookie = mac(0:24):表示取mac值的第0到24比特位;
3)设置将要返回的SYN+ACK报文的初始序列号,设置过程如下
i.高24位用cookie代替;
ii.接下来的3比特位用客户要求的最大报文长度MMS代替;
1 SYN Flood攻击介绍
拒绝服务攻击(Denial of Service,DoS)是目前比较有效而又非常难于防御的一种网络攻击方式,它的目的就是使服务器不能够为正常访问的用户提供服务。所以,DoS对一些紧密依靠互联网开展业务的企业和组织带来了致命的威胁。
SYN Flood是最为有效和流行的一种DoS攻击形式。它利用TCP三次握手协议的缺陷,向目标主机发送大量的伪造源地址的SYN连接请求,消耗目标主机的资源,从而不能够为正常用户提供服务。
3小结
本文介绍了SYN Flood攻击的基本原理,然后详细描述了两种比较有效和方便实施的防御方法:SYN-cookie技术和基于监控的源地址状态技术。SYN-cookie技术实现了无状态的握手,避免了SYN Flood的资源消耗。基于监控的源地址状态技术能够对每一个连接服务器的IP地址的状态进行监控,主动采取措施避免SYN Flood攻击的影响。这两种技术是目前所有的防御SYN Flood攻击的最为成熟和可行的技术。
2)对于一个合法的SYN报文,若源地址第一次出现,则源地址的状态为NEW状态,服务器响应请求,发送SYN+ACK报文,监控程序发送ACK报文,连接建立完毕。之后,来自客户端的ACK很快会到达,该源地址的状态转为GOOD状态。服务器可以很好的处理重复到达的ACK包。
从以上分析可以看出,基于监控的方法可以很好的防御SYN Flood攻击,而不影响正常用户的连接。
2)监听到ACK或RST包,如果源地址的状态为NEW状态,则转为GOOD状态;如果是GOOD状态则不变;如果是BAD状态则转为NEW状态;如果是BAD状态则转为NEW状态。
3)监听到从服务器来的SYN ACK报文(目的地址为addr),表明服务器已经为从addr发来的连接请求建立了一个半连接,为防止建立的半连接过多,向服务器发送一个ACK包,建立连接,同时,开始计时,如果超时,还未收到ACK报文,证明addr不可达,如果此时addr的状态为GOOD则转为NEW状态;如果addr的状态为NEW状态则转为BAD状态;如果为addr的状态为BAD状态则不变。
GOOD状态:断定存在的源地址所处的状态;
BAD状态:源地址不存在或不可达时所处的状态。
具体的动作和状态转换根据TCP头中的位码值决定:
1)监听到SYN包,如果源地址是第一次出现,则置该源地址的状态为NEW状态;如果是NEW状态或BAD状态;则将该包的RST位置1然后重新发出去,如果是GOOD状态不作任何处理。
2
图2 SYN Flood攻击示意图
TCP客户端
客户端端口
(1024-65535)
TCP服务器端
服务器端口
(1-1023)
SYN
SYN/ACK
1
2
伪造源地址
几种防御技术
SYN Flood攻击给互联网造成重大影响后,针对如何防御SYN Flood攻击出现了几种比较有效的技术。
2.1 SYN-cookie技术
3)
TCP客户端
客户端端口
(1024-65535)
TCP服务器端
服务器端口
(1-1023)
SYN
SYN/ACK
ACK
1
3
2
图1正常情况下TCP连接建立的过程
客户端收到服务器返回的SYN+ACK报文后,向服务器返回一个确认号为y+1序号为x+1的ACK报文,一个标准的TCP连接完成。如图1所示:
1.2攻击原理
一般情况下,当服务器收到一个TCP SYN报文后,马上为该连接请求分配缓冲区,然后返回一个SYN+ACK报文,这时形成一个半连接。SYN Flood正是利用了这一点,发送大量的伪造源地址的SYN连接请求,而不完成连接。这样就大量的消耗的服务器的资源。
SYN-cookie技术针对标准TCP连接建立过程资源分配上的这一缺陷,改变了资源分配的策略。当服务器收到一个SYN报文后,不立即分配缓冲区,而是利用连接的信息生成一个cookie,并将这个cookie作为将要返回的SYN+ACK报文的初始序列号。当客户端返回一个ACK报文时,根据包头信息计算cookie,与返回的确认序列号(初始的序列号+1)的前24位进行对比,如果相同,则是一个正常连接,然后,分配资源,建立连接。
iii.最后5比特位为t mod 32。
客户端收到来自服务器SYN+ACK报文后,返回一个ACK报文,这个ACK报文将带一个cookie(确认号为服务器发送过来的SYN ACK报文的初始序列号加1,所以不影响高24位),在服务器端重新计算cookie,与确认号的前24位比较,如果相同,则说明未被修改,连接合法,然后,服务器完成连接的建立过程。
SYN-cookie技术由于在连接建立过程中不需要在服务器端保存任何信息,实现了无状态的三次握手,从而有效的防御了SYN Flood攻击。但是该方法也存在一些弱点。由于cookie的计算只涉及了包头的部分信心,在连接建立过程中不在服务器端保存任何信息,所以失去了协议的许多功能,比如,超时重传。此外,由于计算cookie有一定的运算量,增加了连接建立的延迟时间,因此,SYN-cookie技术不能作为高性能服务器的防御手段。通常采用动态资源分配机制,当分配了一定的资源后再采用cookie技术,Linux就是这样实现的。还有一个问题是,当我们避免了SYN Flood攻击的同时,同时也提供了另一种拒绝服务攻击方式,攻击者发送大量的ACK报文,使服务器忙于计算验证。尽管如此,在预防SYN Flood攻击方面,SYN-cookie技术仍然是一种有效的技术。
1.2攻击原理
在SYN Flood攻击中,黑客机器向受害主机发送大量伪造源地址的TCP SYN报文,受害主机分配必要的资源,然后向源地址返回SYN+ACK包,并等待源端返回ACK包,如图2所示。由于源地址是伪造的,所以源端永远都不会返回ACK报文,受害主机继续发送SYN+ACK包,并将半连接放入端口的积压队列中,虽然一般的主机都有超时机制和默认的重传次数,但是由于端口的半连接队列的长度是有限的,如果不断的向受害主机发送大量的TCP SYN报文,半连接队列就会很快填满,服务器拒绝新的连接,将导致该端口无法响应其他机器进行的连接请求,最终使受害主机的资源耗尽。