SYN Flood攻击是什么,如何防止攻击

过去,攻击者所面临的主要问题是网络带宽,由于较小的网络规模和较慢的网络速度的限制,攻击者无法发出过多的请求。虽然类似“Ping of Death”的攻击类型只需要较少量的包就可以摧毁一个没有打过补丁的操作系统,但大多数的DoS攻击还是需要相当大的带宽,而以个人为单位的黑客们很难消耗高带宽的资源。为了克服这个缺点,DoS攻击者开发了分布式的攻击。

木马成为黑客控制傀儡的工具,越来越多的计算机变成了肉鸡,被黑客所利用,并变成了他们的攻击工具。黑客们利用简单的工具集合许多的肉鸡来同时对同一个目标发动大量的攻击请求,这就是DDoS(Distributed Denial of Service)攻击。随着互联网的蓬勃发展,越来越多的计算机不知不觉的被利用变成肉鸡,攻击逐渐变成一种产业。

什么是DDoS攻击

分布式拒绝服务攻击(Distributed Denial of Service,简称“DDoS”)是指处于不同位置的多个攻击者同时向一个或数个目标发动攻击,或者一个攻击者控制了位于不同位置的多台机器并利用这些机器对受害者同时实施攻击。由于攻击的发出点分布在不同地方,因此称这类攻击为分布式拒绝服务攻击。

DDoS攻击原理

单一的DoS攻击一般采用一对一方式,利用网络协议和操作系统的一些缺陷,采用欺骗和伪装的策略来进行网络攻击,使网站服务器充斥大量要求回复的信息,消耗网络带宽或系统资源,导致网络或系统不胜负荷以至于瘫痪而停止提供正常的网络服务。
  

与DoS攻击由单台主机发起攻击相比较,分布式拒绝服务攻击(DDoS)是借助数百、甚至数千台被入侵后安装了攻击进程的主机同时发起集团行为,从而快速达到消耗网络资源,造成网络或系统瘫痪的攻击效果。

DDoS攻击常见类型

流量型攻击原理:通过多个随机源“肉鸡”向攻击目标发送大量的数据包,占用攻击目标网络资源和处理单元,造成攻击目标的网络堵塞或宕机。


流量型DDoS攻击根据攻击方式的不同可以分为IP lood、SYN Flood以及UDP反射Flood等。


(1)IP lood
以多个随机的源主机地址向目的主机发送超大量的随机或特定的IP包,造成目标主机不能处理其他正常的IP报文。


(2)SYN Flood
以多个随机的源主机地址向目的主机发送syn包,而在收到目的主机的syn+ ack包后并不回应,目的主机为这些源主机建立大量的连接队列,由于没有收到ack一直维护这些连接队列,造成资源的大量消耗而不能向正常的请求提供服务。


(3)UDP 反射Flood
在短时间内冒充被攻击地址向外部公用的服务器发送大量的UDP请求包,外部服务器收到虛假的UDP请求就会回复大量的回应包给被攻击服务器地址,造成目标主机被保护,服务器不能处理其他正常的交互流量。

而提起DDoS攻击,大家首先想到的一定是SYN Flood攻击,毕竟SYN攻击是目前市场上比较讨人厌的一种直接攻击的方式。


什么是SYN攻击

TCP SYN泛洪发生在OSI第四层,这种方式利用TCP协议的特性,就是三次握手。攻击者发送TCP SYN,SYN是TCP三次握手中的第一个数据包,而当服务器返回ACK后,该攻击者就不对其进行再确认,那这个TCP连接就处于挂起状态,也就是所谓的半连接状态,服务器收不到再确认的话,还会重复发送ACK给攻击者。这样更加会浪费服务器的资源。攻击者就对服务器发送非常大量的这种TCP连接,由于每一个都没法完成三次握手,所以在服务器上,这些TCP连接会因为挂起状态而消耗CPU和内存,最后服务器可能死机,就无法为正常用户提供服务了。

SYN泛洪攻击的原理

大家都知道一个TCP连接的启动需要经历三次握手的过程。正常情况下客户端首先向服务端发送SYN报文,随后服务端回以SYN+ACK报文到达客户端,最后客户端向服务端发送ACK报文完成三次握手,后续就是上层业务数据交互,直到某一方断开连接。

那么假如在这“握手”的过程中,客户端程序因为莫名崩溃等原因,收到SYN+ACK报文后不再回以ACK,服务端将如何处置呢?这时服务端会“优雅地”再等等,会不会是发送的包丢失了呢?于是重新发送一遍SYN+ACK,再收不到来自客户端的ACK响应的话,就把这次连接丢弃掉。这个过程大约会“优雅地”持续分钟级,这个持续时间被称作SYN timeout时间。如果只有个别这样的异常情况,目标服务端处理起来自是毫不费力;可如果大量这样的情况出现,对服务端来说就不堪重负了。这是为什么呢?

如果大量的握手请求涌向TCP服务端,而它们只发出SYN报文而不以ACK响应结束握手,服务端就要为这每一个请求都维持约一分多钟的连接去等待ACK,也就形成所谓的“半连接”。维护这些半连接是需要消耗很多服务器的网络连接资源的。如果短时间内这些资源几乎都被半连接占满,那么正常的业务请求在这期间就得不到服务,处于等待状态。

更进一步的,如果这些半连接的握手请求是恶意程序发出,并且持续不断,那么就会导致服务端较长时间内丧失服务功能——这就形成了DoS(Denial of Service拒绝服务)攻击。这种攻击方式就称为SYN泛洪(SYN flood)攻击。

由于正常的TCP三次握手中发出去多少SYN报文,就会收到多少SYN+ACK报文。攻击方需要将这些消息丢弃,同时为了隐藏自己,于是需要大量伪造泛洪攻击的源地址,随机改成其它地址。为达到SYN泛洪攻击的效果,这些伪造的源地址最好无法响应SYN+ACK,如这些源地址的主机根本不存在,或者被防火墙等网络设施拦截,等等。


SYN泛洪可以以三种不同的方式发生

一、直接攻击

SYN泛洪所在的IP地址不被欺骗被称为直接攻击。在此攻击中,攻击者根本不会屏蔽其IP地址。由于攻击者使用具有真实IP地址的单一源设备来创建攻击,因此攻击者极易受到发现和缓解。为了在目标机器上创建半开状态,黑客阻止他们的机器响应服务器的SYN-ACK数据包。这通常是通过防火墙规则来实现的,这些规则可以阻止除SYN数据包之外的传出数据包,也可以在任何传入的SYN-ACK数据包到达恶意用户计实际上,这种方法很少使用(如果有的话),因为缓解是相当简单的 - 只是阻止每个恶意系统的IP地址。如果攻击者使用僵尸网络例如Mirai僵尸网络,他们不会关心屏蔽受感染设备的IP。

二、欺骗攻击

恶意用户还可以欺骗他们发送的每个SYN数据包上的IP地址,以便抑制缓解工作并使其身份更难以发现。虽然数据包可能是欺骗性的,但这些数据包可能会被追溯到其源头。

三、分布式攻击(DDoS)

如果使用僵尸网络创建攻击,则将攻击追溯到其源的可能性很低。对于增加的混淆级别,攻击者可能使每个分布式设备也欺骗它发送数据包的IP地址。

通过使用SYN泛洪攻击,不良行为者可以尝试在目标设备或服务中创建拒绝服务,其流量远低于其他DDoS攻击。旨在使目标周围的网络基础设施饱和的体积攻击不仅仅需要大于目标操作系统中可用的积压的SYN攻击。如果攻击者能够确定积压的大小以及每个连接在超时之前保持打开的时间长度,则攻击者可以定位禁用系统所需的确切参数,从而将总流量减少到创建所需的最小量拒绝服务。

如何防范 SYN Flood 攻击?

SYN Flood 的目的是占满服务器的连接数,消耗服务器的系统资源。对于服务器自身来说,最直接的做法就是提高服务能力,比如组建集群,升级硬件。但是这种方式成本巨大,且对于海量的攻击报文来说,并没有太大的作用,仅多撑几分钟甚至几秒而已。

防范 SYN Flood 攻击,可以有以下几种方法:

1.增大半连接队列

增大 TCP 半连接队列,要同时增大下面这三个参数:

增大 net.ipv4.tcp_max_syn_backlog
增大 listen() 函数中的 backlog
增大 net.core.somaxconn

2.开启 SYN Cookie

开启 SYN Cookie 功能就可以在不使用 SYN 半连接队列的情况下成功建立连接,相当于绕过了 SYN 半连接来建立连接。


(1)当 「 SYN 队列」满之后,后续服务端收到 SYN 包,不会丢弃,而是根据算法,计算出一个 Cookie 值。Cookie 包含了一些与连接相关的信息,如初始序列号等,但不会在服务器端保存连接状态。
(2)服务端将 Cookie 值放到第二次握手报文的「序列号」里回给客户端。
(3)服务端接收到客户端的 ACK 报文时,通过将 ACK 报文减去 1 获取 Cookie,然后根据 Cookie 判断报文的合法性并重建连接状态,然后将该连接对象放入「 Accept 队列」。
(4)最后应用程序通过调用 accpet() 函数,从「 Accept 队列」取出连接。

可以看到,当开启了 SYN Cookie 了,即使受到 SYN 攻击而导致 SYN 队列满时,也能保证正常的连接成功建立。

3.减少 SYN+ACK 重传次数

当服务端受到 SYN 攻击时,就会有大量处于 SYN_RECV 状态的 TCP 连接,处于这个状态的 TCP 会重传 SYN+ACK ,当重传超过次数达到上限后,就会断开连接。
那么针对 SYN 攻击的场景,我们可以减少 SYN-ACK 的重传次数,以加快处于 SYN_REVC 状态的 TCP 连接断开。 SYN-ACK 报文的最大重传次数由 tcp_synack_retries内核参数决定(默认值是 5 次),比如将 tcp_synack_retries 减少到 2 次。

4.使用高防服务器

德迅云安全部署的T级别数据中心,具备完善的机房设施,核心骨干网络有效保证高品质的网络环境和丰富的带宽资源。搭载赠送:自主化管理平台、德迅卫士(主机安全防火墙)、WEB云防护(一站式网站安全加速)、1V1专家技术支撑,竭诚为您提供安全、可靠、稳定、高效的服务体验。

DDoS清洗:近源清洗多种流量清洗部署方案,无损防御各种DDoS攻击


CC攻击防御:5s发现恶意请求,10s快速阻断攻击,事前拦截、事后溯源、全方位防黑


WEB应用防火墙:防SQL注入、XSS跨站,后门隔离保护、WEB SHELL上传、非法HTTP协议请求。


德迅卫士:系统层安全软件,为用户远程桌面扫描登陆、手机短信验证登陆等。一键后台优化服务器权限、威胁组件、威胁端口。

5.接入无视攻击抗D盾

抗D盾是新一代的智能分布式云接入系统,接入节点采用多机房集群部署模式,隐藏真实服务器IP,但是“抗D盾”是比CDN应用范围更广的接入方式,适合任何TCP 端类应用包括(游戏、APP、微端、端类内嵌WEB等)。用户连接状态在各机房之间实时同步,节点间切换过程中用户无感知,保持TCP连接不中断,轻松应对任何网络攻击,做到完全免疫,无视攻击流量。


DDoS防御:基于SDK接入的分布式防御体系,可精准定位恶意攻击者并主动隔离,具备自动化溯源能力。


CC攻击防御:私有化协议二次封装,非链接限速、报文检测机制,0误杀、0漏过。


集成方式:EXE封装、SDK接入,支持Windows、iOS、Android系统,分钟级集成。


网络加速:智能多线节点分布,配合独家研发的隧道填补技术,保证每条线路都是优质网络


防掉线系统:研发新SocKet协议,弥补WinSock链接失败会断开问题,链接失败自动无缝切换


总之,DDoS攻击是一种常见的网络威胁,对网络安全构成了严重威胁,防范SYN攻击需要综合运用多种技术手段和管理措施,从多个层面提高网络的安全性。同时,随着网络技术的不断发展,还需要持续关注新的攻击方式和防御技术,以便及时调整和优化防御策略。想要防御住所有类型的DOS攻击是很苦难的,需要对各种攻击的原理与防御方法非常了解,并且针对不同攻击选择合适的防御方法才行。

  • 16
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值