SYN Flood 防范

简介:

SYN Flood 是 DoS( 拒绝服务攻击 )与 DDoS( 分布式拒绝服务攻击 )的方式之一,这是一种利用 TCP 协议缺陷,发送大量伪造 TCP

连接请求,从而使得服务器资源耗尽( CPU 满负载或内存不足 )的攻击方式。

TCP 三次握手:

1、客户端发送一个包含 SYN 标志的 TCP 报文到服务端,报文指明客户端使用的端口及 TCP 连接的初始序列号。

2、服务器在收到客户端的 SYN 报文后,将返回一个 SYN+ACK 报文,表示接受请求,同时 TCP 序列号加一,ACK确认。

3、客户端收到后,返回一个确认报文 ACK 给服务器,同时 TCP 序列号加一,到此建立连接完成。

SYN Flood :

当客户端将 TCP 连接请求发给服务器后,自己死机或掉线无法收到服务器发回的 SYN+ACK 应答报文,这时服务器会隔一段时间去重新发送

应答报文,重试次数上限后,如果客户端还没有响应,即丢弃这个未完成的连接。如果恶意的模拟这种情况,服务器将使用很多资源去维护这个

半连接表,还需去重试这些恶意的半连接请求,从而对正常的访问请求失去响应或变的非常缓慢,这就是 SYN Flood 攻击。( TCP 洪水攻击 )

如何确认是否为 SYN Flood 攻击:

通常情况,服务器负荷突然升高甚至失去响应,使用 netstat -ant 可以看到大量的 SYN_RCVD 的半连接,数量大于 500 或超过总连接数的

10% ,系统日志 messages 中有 SYN Flooding 字样等,则可认定为遭到 SYN Flood 攻击。

防范一、更改内核参数(只能有效降低)、临时封源 IP 地址

net.ipv4.tcp_synack_retries = 0 ( 默认 5 )

## TCP 连接三次握手中第二次握手请求次数,每次等待 30 ~ 40 秒,如果对方没有回应第三个握手包(ACK),即:重试。

面临 SYN Flood 即 TCP 洪水攻击时,可以将此参数改为 0 ,即:回应第二个握手包给客户端后,如果收不到客户端回应的第三个握手包,

不进行重试,加快半开连接的回收,防止系统资源被耗尽。弊端:当网络状态很差时,有可能客户端没有收到服务器发出的第二个握手包,那

么连接服务器可能会失败。但是问题并不大,客户端也有第一次握手重试次数。

net.ipv4.tcp_syncookies = 1 ( 默认 0 )

## 开启 SYN Cookies ,当半连接队列溢出时,向请求连接的 IP 分配 Cookies ,短时间内连续收到某 IP 的重复 SYN 报文,即认为受到攻击,

之后收到此 IP 地址来的包都会被丢弃,可阻止少量 SYN 攻击。

net.ipv4.tcp_max_syn_backlog = 2048

## SYN 队列长度,可容纳更多的半连接数,最大限度接受客户端请求。(这个取值范围没弄明白,现在是按一倍内存取的)

netstat -ant | grep ‘SYN_RECV‘ > SYN.txt 分析 IP 地址,使用 iptables 干掉它。

防范二、使用硬件防火墙来抵挡(成本高)

可以让客户端先跟硬防建立 TCP 连接,连接成功后才转发到后端服务器。

时间: 2024-11-11 01:52:11

SYN Flood 防范的相关文章

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

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

扯谈网络编程之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个字节,在某些操作系统

SYN Flood应如何应对

1 什么是SYN Flood攻击 在TCP三次握手时,服务器接收客户端的SYN请求,操作系统将为该请求分配一个TCP(Transmission Control Block),服务器返回一个SYN/ACK请求,并将处于SYN_RCVD状态(半开连接状态). 从以上过程可以看到,如果恶意的向某个服务器端口发送大量的SYN包,则可以使服务器打开大量的半开连接,分配TCB,从而消耗大量的服务器资源,同时也使得正常的连接请求无法被相应.而攻击发起方的资源消耗相比较可忽略不计. SYN Flood是当前最流

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的一些思路!

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

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

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

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

SYN Flood工具之awl简单使用!

下载包: wget  [[email protected] ~]# ll 总用量 292 -rw-r--r-- 1 root root 296340 9月   8 10:28 awl-0.2.tar_vhcFaEwRuq7S.gz [[email protected] ~]# tar xf awl-0.2.tar_vhcFaEwRuq7S.gz  [[email protected] ~]# cd awl-0.2 [[[email protected] awl-0.2]# [[email pro