SYN Flood应如何应对

1 什么是SYN Flood攻击

  在TCP三次握手时,服务器接收客户端的SYN请求,操作系统将为该请求分配一个TCP(Transmission Control Block),服务器返回一个SYN/ACK请求,并将处于SYN_RCVD状态(半开连接状态)。

  从以上过程可以看到,如果恶意的向某个服务器端口发送大量的SYN包,则可以使服务器打开大量的半开连接,分配TCB,从而消耗大量的服务器资源,同时也使得正常的连接请求无法被相应。而攻击发起方的资源消耗相比较可忽略不计。

  SYN Flood是当前最流行的DoS(拒绝服务攻击)与DDoS(分布式拒绝服务攻击)的方式之一。

2 怎样发现自己处于被攻击状态

  (1)服务端无法提供正常的TCP服务。连接请求被拒绝或超时;

  (2)通过 netstat -an 命令检查系统,发现有大量的SYN_RECV连接状态。  

3 防御措施

  (1)使用TCP Wrapper,服务端只处理有限来源IP的TCP连接请求,其它未指定来源的连接请求一概拒绝。

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

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

  (4)使用SYN Proxy防火墙

      Syn Cache技术和Syn Cookie技术总的来说是一种主机保护技术,需要系统的TCP/IP协议栈的支持,而目前并非所有的操作系统支持这些技术。因此很多防火墙中都提供一种 SYN代理的功能,其主要原理是对试图穿越的SYN请求进行验证后才放行,下图描述了这种过程:

从上图(左图)中可以看出,防火墙在确认了连接的有效性后,才向内部的服务器(Listener)发起SYN请求,在右图中,所有的无效连接均无法到达内 部的服务器。而防火墙采用的验证连接有效性的方法则可以是Syn Cookie或Syn Flood等其他技术。
采用这种方式进行防范需要注意的一点就是防火墙需要对整个有效连接的过程发生的数据包进行代理,如下图所示:

因为防火墙代替发出的SYN ACK包中使用的序列号为c,而服务器真正的回应包中序列号为c’,这其中有一个差值|c-c’|,在每个相关数据报文经过防火墙的时候进行序列号的修改。

时间: 2024-10-15 04:25:57

SYN Flood应如何应对的相关文章

如何防御syn flood的一些思路!

厦门-志君同学21期群里疑问? syn flood是否无法防御 刚看到群里同学问问题,我还在讲课,利用间隙简单给大家点思路吧. 老男孩简单答疑如下: 1.先了解什么是SYN Flood? SYN Flood是一种DoS(拒绝服务攻击)与DDoS(分布式拒绝服务攻击)的方式之一,是一种利用TCP协议缺陷,发送大量伪造的TCP连接请求,从而使得被攻击方资源耗尽的攻击方式. 2.再了解tcp/ip的三次握手和四次断开过程原理 04-老男孩linux技术分享-OSI七层模型及协议-包封装解封装详解htt

扯谈网络编程之Tcp SYN flood洪水攻击

简介 TCP协议要经过三次握手才能建立连接: (from wiki) 于是出现了对于握手过程进行的攻击.攻击者发送大量的FIN包,服务器回应(SYN+ACK)包,但是攻击者不回应ACK包,这样的话,服务器不知道(SYN+ACK)是否发送成功,默认情况下会重试5次(tcp_syn_retries).这样的话,对于服务器的内存,带宽都有很大的消耗.攻击者如果处于公网,可以伪造IP的话,对于服务器就很难根据IP来判断攻击者,给防护带来很大的困难. 攻与防 攻击者角度 从攻击者的角度来看,有两个地方可以

SYN Flood攻击及防御方法 (转)

原文连接:http://blog.csdn.net/bill_lee_sh_cn/article/details/6065704 一.为什么Syn Flood会造成危害      这要从操作系统的TCP/IP协议栈的实现说起.当开放了一个TCP端口后,该端口就处于Listening状态,不停地监视发到该端口的Syn报文,一 旦接收到Client发来的Syn报文,就需要为该请求分配一个TCB(Transmission Control Block),通常一个TCB至少需要280个字节,在某些操作系统

优化人员应如何应对搜索算法调整

优化人员应如何应对搜索算法调整,三点钟的时候,没等人去叫,阿北自己出现在了会议室的门口.从这点看,他还是保持着一个技术人员的习惯,而不像一个CEO. 不知道为什么,技术出身的阿北,别人谈起来却每每提到说他的一墙碟,两墙书,三大洲的车船票,把他描绘成一个文艺青年,把豆瓣描绘成一个文艺青年聚集地. 文艺也可能是来自商业世界的委婉评语:这家成立十年,拥有过亿用户的网站,一直没有盈利.人们认为豆瓣已经慢了,老了,甚至被移动互联网抛弃了. 阿北说,豆瓣做过尝试,犯过错误,现在找到了新方向. 在2014年的

backlog参数与SYN Flood攻击

在linux网络编程中,使用listen函数监听套接字,在linux中man其用法,第2个参数解释如下: The backlog argument defines the maximum length to which the queue of pending connections for sockfd may grow.  If  a connection  request arrives when the queue is full, the client may receive an e

SYN Flood 防范

简介: SYN Flood 是 DoS( 拒绝服务攻击 )与 DDoS( 分布式拒绝服务攻击 )的方式之一,这是一种利用 TCP 协议缺陷,发送大量伪造 TCP 连接请求,从而使得服务器资源耗尽( CPU 满负载或内存不足 )的攻击方式. TCP 三次握手: 1.客户端发送一个包含 SYN 标志的 TCP 报文到服务端,报文指明客户端使用的端口及 TCP 连接的初始序列号. 2.服务器在收到客户端的 SYN 报文后,将返回一个 SYN+ACK 报文,表示接受请求,同时 TCP 序列号加一,ACK

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

------------------------本人为自己实践所总结,概念性的东西不全,这里粗劣提下而已,网上很多,本文主要说下目前较流行的syn洪水攻击和cc攻击------------------------------------- 何为syn flood攻击: SYN Flood是一种广为人知的DoS(拒绝服务攻击)是DDoS(分布式拒绝服务攻击)的方式之一,这是一种利用TCP协议缺陷,发送大量伪造的TCP连接请求,从而使得被攻击方资源耗尽(CPU满负荷或内存不足)的攻击方式(TCP协议

SYN Flood了解和简单防范笔记!

一:什么是CentOS SYN Flood攻击? CentOS SYN Flood攻击利用的是IPv4中TCP协议的三次握手(Three-Way Handshake)过程进行的攻击.这个协议规定,如果一端想向另一端发起TCP连接,它需要首先发送TCP SYN (synchronize)包到对方. 对方收到后发送一个TCP SYN+ACK包回来,发起方再发送TCP ACK (ACKnowledge Character)包回去,这样三次握手就结束了.在上述过程中,还有一些重要的概念. 未连接队列:在

Python实现SYN Flood攻击

0×00 背景 SYN Flood是当前最流行的DoS(拒绝服务攻击)与DDoS(分布式拒绝服务攻击)的方式之一,这是一种利用TCP协议缺陷,发送大量伪造的TCP连接请求,从而使得被攻击方资源耗尽(CPU满负荷或内存不足)的攻击方式. 0×01 Code 本文章的目是介绍使用python构造packet的方法.使用raw socket来发送packets. 该程序只适用于Linux.windows可以尝试调用winpcap. ''' Syn flood program in python usi