SYNCookie原理

发起一个TCP 连接时,客户端将一个SYN包发送给服务器。作为响应,服务器将SYN + ACK 包返回给客户端。此数据包中有一个序号,它被TC 用来重新组装数据流。

SYN Cookies是根据以下规则构造的初始序号:

令t为一个缓慢递增的时间戳(通常为time()>>6,提供64 秒的分辨率);

令m为服务器会在SYN 队列条目中存储的最大分段大小(Maximum segment size);

令s为一个加密散列函数对服务器和客户端各自的IP 地址和端口号以及t进行运算的结果。返回得到的数值s必须是一个24位值。

初始TCP序号,也就是所谓的SYN cookie,按照如下算法得到:

头五位:tmod32;

中三位:m编码后的数值;

末24位:s本身;

注:由于m必须用3位进行编码,服务器在启用了 SYN Cookie时只能为m发送八种不同的数值。

根据TCP 规范,当客户端发回ACK包给服务器以响应服务器的SYN + ACK包时,客户端必须使用由服务器发送的初始序号加1作为数据包中的确认号。服务器接着从确认号中减去 1 以便还原向客户端发送的原始 SYN Cookie。

接下来服务器进行以下检查:

配合现在时间t来检查连接是否过期。

重新计算s来确认这是不是一个有效的SYN Cookie。

从3位编码中解码m,以便之后用来重建SYN 队列条目。在此之后,连接照常进行。

配置项:

net.ipv4.tcp_syncookies 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SYN Flood攻击是一种常见的DoS(拒绝服务)攻击方式,其原理是利用TCP协议的三次握手过程中的漏洞,向目标主机发送大量伪造的SYN包,使得目标主机在等待客户端响应的过程中,消耗大量的资源,直到无法响应正常的网络请求。 具体来说,攻击者会向目标主机发送大量伪造的TCP连接请求(SYN包),这些请求中会包含一个虚假的源IP地址。当目标主机收到这些请求时,它会回复一个SYN-ACK包,表示接受连接请求并等待客户端的确认。但由于源IP地址是虚假的,因此这些SYN-ACK包会被发送到一个不存在的地址,导致目标主机无法收到确认信息。由于TCP协议的三次握手必须完成才能建立连接,目标主机会一直等待客户端的确认,同时消耗大量的系统资源,直到无法响应正常的网络请求。 为了防止SYN Flood攻击,可以采取以下措施: 1. 过滤掉伪造的IP地址:通过过滤掉来自不可信源地址的数据包,可以减少攻击的成功率。 2. 增加连接队列长度:通过调整连接队列长度,可以增加目标主机处理连接请求的能力。 3. 加强硬件设备的防御能力:可以使用防火墙、负载均衡器等设备对网络流量进行监控和过滤,防止攻击流量到达目标主机。 4. 启用SYN Cookie:SYN Cookie是一种TCP协议的机制,它可以在不保存连接状态的情况下建立连接,从而减少目标主机的负担。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值