防火墙通知受到Syn Flood攻击,并解释说:

A SYN Flood is an attempt to consume memory and resources. A Normal TCP/IP connection is established with an exchange of packets. A SYN packet, a SYN/ACK packet returned and then a final ACK packet. While the machine is waiting for the returning ACK packet, memory is consumed on the host machine in the attempt to retain the state of open connections.

(SYN Flood 企图消耗目标机的内存和资源。建立正常的TCP/IP连接时有一个数据包的交换。“目标机”接收到一个“请求连接机”发送的SYN包,就会返回一个SYN/ACK包,最后接收一个“请求连接机”返回的ACK包。当目标机在等待“请求连接机”返回ACK包时,为保持开放连接的状态,就会消耗内存。)

a.SYN Food攻击是利用特殊的程序,设置TCP的Header,向服务器端不断地成倍发送只有SYN标志的TCP连接请求。当服务器接收的时候,都认为是没有建立起来的连接请求,于是为这些请求建立会话,排到缓冲区队列中。如果你的SYN请求超过了服务器能容纳的限度,缓冲区队列满,那么服务器就不再接收新的请求了。其他合法用户的连接都被拒绝掉。此时,服务器已经无法再提供正常的服务了,所以SYN Food攻击是拒绝服务攻击。

b.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的重试。实际上如果服务器的TCP/IP栈不够强大,最后的结果往往是堆栈溢出崩溃。

即使服务器端的系统足够强大,服务器端也将忙于处理攻击者伪造的TCP连接请求而无暇理睬客户的正常请求(毕竟客户端的正常请求比率非常之小),此时从正常客户的角度看来,服务器失去响应,这种情况我们称作:服务器端受到了SYN Flood攻击(SYN洪水攻击)。

从防御角度来说,有几种简单的解决方法:

第一种是缩短SYN Timeout时间,由于SYN Flood攻击的效果取决于服务器上保持的SYN半连接数,这个值=SYN攻击的频度 x SYN Timeout,所以通过缩短从接收到SYN报文到确定这个报文无效并丢弃改连接的时间,例如设置为20秒以下(过低的SYN Timeout设置可能会影响客户的正常访问),可以成倍的降低服务器的负荷。

第二种方法是设置SYN Cookie,就是给每一个请求连接的IP地址分配一个Cookie,如果短时间内连续受到某个IP的重复SYN报文,就认定是受到了攻击,以后从这个IP地址来的包会被丢弃。

可是上述的两种方法只能对付比较原始的SYN Flood攻击,缩短SYN Timeout时间仅在对方攻击频度不高的情况下生效,SYN Cookie更依赖于对方使用真实的IP地址,如果攻击者以数万/秒的速度发送SYN报文,同时利用SOCK_RAW随机改写IP报文中的源地址,以上的方法将毫无用武之地。

c. TCP SYN Flood是一种常见,而且有效的远程拒绝服务(Denial of Service)攻击方式,它通过一定的操作破坏TCP三次握手建立正常连接,占用并耗费系统资源,使得提供TCP服务的主机系统无法正常工作。

由于TCP SYN Flood是通过网络底层对服务器进行攻击的,它可以在任意改变自己的网络地址的同时,不被网络上的其他设备所识别,这样就给公安部门追查犯罪来源造成很大的困难。

在国内与国际的网站中,这种攻击屡见不鲜。在今年年中的一个拍卖网站上,曾经有犯罪分子利用这种手段,在低价位时阻止其他用户继续对商品拍卖,干扰拍卖过程的正常运作。

=========

综上所述,SYN Flood攻击通常用于对付服务器;目前没有很好的办法对付SYN Flood攻击。

可是,我的机器没有开设服务器,也受到了攻击。当然,防火墙的解释中没有提到服务器的事情。此外,防火墙为我挡住了这些攻击。

php攻击方式及防御方法,Syn Flood 攻击 及其一般防御方法相关推荐

  1. SYN Flood攻击防范技术白皮书

    SYN Flood攻击防范技术白皮书 关键词:SYN Flood ,SYN Cookie,Safe Reset 摘    要:本文主要介绍了H3C防火墙为保护服务器免受SYN Flood攻击采用的防范 ...

  2. SYN Flood攻击及防御方法

    SYN Flood攻击及防御方法   一.  为什么Syn Flood会造成危害   这要从计算机网络的TCP/IP协议栈的实现说起.当开放了一个TCP端口后,该端口就处于Listening状态,不停 ...

  3. SYN Flood攻击原理及防御技术

    SYN泛洪一直是互联网上最常见也是最经典的DDoS攻击方式.这种攻击通过向服务器发送大量tcp请求连接报文(源IP一般是离散的),服务器为每一条连接分配资源最终导致内存耗尽而无法为后续的合法请求建立连 ...

  4. pythonddos防御_浅谈拒绝服务攻击的原理与防御(7):用Python和C实现syn flood攻击...

    01 前言 以前做DDOS的实验都是用python来编写工具的,开始不会编写结构不会算校验和的时候就用scapy写,后来学会了报文结构开始自己构造各种报文,但是用python写成之后虽然是能实现基本功 ...

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

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

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

    何为syn flood攻击: SYN Flood是一种广为人知的DoS(拒绝服务攻击)是DDoS(分布式拒绝服务攻击)的方式之一,这是一种利用TCP协议缺陷,发送大量伪造的TCP连接请求,从而使得被攻 ...

  7. syn flood攻击原理及防范

    sync攻击原理 DoS是Denial of Service的简称,即拒绝服务,造成DoS的攻击行为被称为DoS攻击,其目的是使计算机或网络无法提供正常的服务.最常见的DoS攻击有计算机网络带宽攻击和 ...

  8. 详解SYN Flood攻击原理与防范

    详解SYN Flood攻击原理与防范 SYN Flood是当前最流行的DoS(拒绝服务攻击)与DDoS(分布式拒绝服务攻击)的方式之一,它是利用TCP协议缺陷,发送大量伪造的TCP连接请求,从而使得被 ...

  9. 使用iptables防止SYN Flood攻击和CC攻击

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

最新文章

  1. MySQL字段类型与Java数据类型的对应关系
  2. AgileEAS.NET 4.0重构裁剪,新的ORM、支持Linq,正式支持WPF,开放更多的接口
  3. MySQL Date and Time Types(日期和时间格式)
  4. TCP/IP、Http、Socket的区别以及面试中关于网络协议常问的考点
  5. 计算机系统结构02325知识点,02325计算机系统结构复习资料.doc
  6. mysql有多少个端口号_mysql默认端口号(mysql端口号是多少)
  7. Oracle11g软硬件基本要求,Oracle 11g的安装
  8. Python分类求和方法
  9. Android网络验证逆向,【Android逆向】去除无聊的网络验证弹窗与360加固
  10. MATLAB插值函数interp1
  11. ai如何复制文字并对齐_AI文字怎么对齐? ai文字排版的方法
  12. VScode安装Live Server插件打开时提示 Open a folder or workspace (File Open Folder)
  13. 终身教职让美国研究型大学称霸世界,却把中国「青椒」卷怕了!
  14. 【考研数学】九. 无穷级数
  15. 给软件添加注册码【笔记】
  16. 你明明是我师父,却偏要做我女朋友
  17. electron获取系统字体
  18. JAVA中医药院校科研会议系统计算机毕业设计Mybatis+系统+数据库+调试部署
  19. 保姆级Linux系统安装并使用libpng攻略
  20. 技能高考c语言经典试题及答案,技能练习题

热门文章

  1. EFCore 迁移
  2. sso单点登录系统(解决session共享)
  3. 2016集训测试赛(二十四)Problem C: 棋盘控制
  4. 计算机编程之高级语言
  5. LeetCode85 Maximal Rectangle
  6. Ignite 配置更新Oracle JDBC Drive
  7. string 是值类型,还是引用类型(.net)
  8. linux 内核学习线索初步
  9. 使用 ConnectionStringBuilder 对象创建精确连接字符串
  10. libcurl post数据