SYN cookie

✍ dations ◷ 2025-08-02 01:49:32 #计算机网络安全,TCP/IP

SYN cookie 是一种用于阻止 SYN flood 攻击的技术。这项技术的主要发明人 Daniel J. Bernstein 将 SYN cookies 定义为“TCP 服务器进行的对开始TCP数据包序列数字的特定选择”。举例来说,SYN Cookies 的应用允许服务器当 SYN 队列被填满时避免丢弃连接。相反,服务器会表现得像 SYN 队列扩大了一样。服务器会返回适当的 SYN+ACK 响应,但会丢弃 SYN 队列条目。如果服务器接收到客户端随后的ACK响应,服务器能够使用编码在 TCP 序号内的信息重构 SYN 队列条目。

发起一个 TCP 连接时,客户端将一个 TCP SYN 包发送给服务器。作为响应,服务器将 TCP SYN + ACK 包返回给客户端。此数据包中有一个序号(sequence number,TCP头中的第二个32 bit),它被 TCP 用来重新组装数据流。根据 TCP 规范,由端点发送的第一个序号可以是由该端点决定的任何值。SYN Cookies 是根据以下规则构造的初始序号:

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

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

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

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

SYN Cookies 的使用不与任何协议定义冲突,照理来说它该和所有的 TCP 实现兼容。然而,当 SYN Cookies 使用的时候,会发生两种值得注意的变化:首先,服务器只能编码八种 MSS 数值,因为只有 3 位二进制空间可用。其次,这个服务器必须拒绝所有的 TCP 选用项,例如大型窗口和时间戳,因为服务器会在信息被用其他方式存储时丢弃 SYN 队列条目。

尽管这些限制将不可避免地导致一个不如最佳的体验,它们的效果很少被客户端注意到——这些改变只在被攻击时值得注意。在这样的情况下,牺牲 TCP 选项来保护连接一般被认为是合乎情理的。

Linux内核 从 2.6.26 版本开始为 TCP 选用项加入了有限的支持,通过把它们编码在时间戳内实现。

较新的 TCP Cookie 传输(TCPCT)标准被设计用来克服 SYN Cookies 的这些问题,并且在各种方面改进这套机制。不像 SYN Cookies,TCPCT 是一个 TCP 拓展并且要求两端点都支持 TCPCT。

被设置为允许所有出站连接但对入站连接有限制(例如在 Web 服务器上只允许 80 端口)的简单防火墙一般是这样实现的:只阻断不必要端口的 SYN 请求。如果 SYN Cookies 被启动了,应当小心以保证攻击者不能使用伪造 ACK、尝试随机序列号的方式来绕过这样的防火墙。因此 SYN cookies 应该按照每个端口单独处理的方式来调节开关,这样的话一个公共端口上的 SYN Cookies 并不会在一个私有端口上被认可。

Daniel J. Bernstein 和 Eric Schenk 于 1996 年九月创造了这个技术。Jeff Weisberg 在一个月后发布了最早的实现(在 SunOS 上),Eric Schenk 随后在 1997 年二月发布了他的 Linux 实现(目前的实现使用,例如 net.ipv4.tcp_syncookies 页面存档备份,存于互联网档案馆)。

相关

  • 细菌性阴道炎细菌性阴道炎(Bacterial vaginosis,简称BV),又称细菌性阴道病、非特异性阴道炎(Nonspecific vaginitis)是种发生在阴道内的疾病,其原因是细菌大量滋生而造成的。常见的症状包括有阴
  • 格奥尔基·马林科夫格奥尔基·马克西米连诺维奇·马林科夫(俄语:Гео́ргий Максимилиа́нович Маленко́в;1902年1月8日-1988年1月14日),苏联政治家,也是苏联共产党的
  • 火山列岛火山列岛(日语:火山列島 Kazan Rettō)是日本治下的一个群岛,由3个小火山岛组成,属于小笠原群岛。它位于小笠原群岛之南部,隶属东京都小笠原村。火山列岛包含以下岛屿:位于火山列
  • 解释器解释器(英语:interpreter),是一种程序,能够把编程语言一行一行解释运行。解释器像是一位“中间人”,每次运行程序时都要先转成另一种语言再作运行,因此解释器的程序运行速度比较缓
  • 铕的同位素铕(原子量:151.964(1))的同位素,其中有1个同位素是在观测上稳定的。自然形成的铕元素由两种同位素组成:151Eu和153Eu,后者的丰度为52.2%,比前者稍高。153Eu是稳定同位素,但151Eu则会
  • 版纳鱼螈版纳鱼螈()是两栖纲鱼螈科的一种动物,为中国特有的一种蚓螈。身体呈蠕虫状,长约40厘米;头部扁平如铲状,眼呈点状,隐藏于皮膜下;皮肤光滑,多黏液;深棕色背部,有蜡光,体侧从眼后至肛侧各有
  • DDISHTVDDISHTV(蒙古语:ДДэш ТВ)是蒙古国的一家卫星电视运营商,总部位于蒙古国首都乌兰巴托,为“GEM INTERNATIONAL, MCS GROUP”旗下的卫星电视平台。蒙古国地广人稀,故卫星电视成
  • 方孟缙方孟缙(?-?),字文卿,江西南昌府武宁县人,民籍,明朝政治人物、进士出身。江西乡试第一百六十三名。嘉靖十四年,登进士第二甲第七十一名。授刑部主事。曾祖父方景华;祖父方汝宁;父亲方璞。
  • 亚历山大·巴赫曼亚历山大·巴赫曼(Alexander Bachmann,1994年7月19日-)是一名德国男子跆拳道运动员。他曾经获得2017年世界跆拳道锦标赛男子87公斤级金牌。妻子为跆拳道运动员拉比雅·古勒茨(英
  • 盛夏狮王《盛夏狮王》(英语:)是由蒂姆·麦肯莱斯指导的2003年的美国电影。故事发生在60年代初期的德克萨斯州,14岁的沃尔特(海利·乔·奥斯蒙 饰)有两个非比寻常的伯父,他们生活在德克萨