SYN cookie

✍ dations ◷ 2025-08-22 13:38:26 #计算机网络安全,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 页面存档备份,存于互联网档案馆)。

相关

  • 招待局中国人民解放军军徽中央军委机关事务管理总局招待局,位于北京市,是中央军事委员会机关事务管理总局下属局,负责中央军委机关的招待工作。2016年改革前,中国人民解放军总参谋部管
  • 居銮中华中学居銮中华中学(简称銮中;英语:Kluang Chong Hwa High School)是马来西亚柔佛州居銮市的华文独立中学。该校创办于1918年,在籍学生约3000多人。该校为全日制中学,主要以华语教学,并设
  • 止点在往复活塞式发动机中,止点(dead center)是指活塞能达到的距离曲轴最近或者最远的位置。前者称为下止点(bottom dead center, BDC),后者称为上止点(top dead center, TDC)。更广
  • 下眼俯海鲶下眼俯海鲶为辐鳍鱼纲鲶形目海鲶科的其中一种,分布于中美洲巴拿马太平洋岸的淡水、半咸水、咸水水域,体长可达35公分,栖息在沿海、河口区,属肉食性,生活习性不明,可做为食用鱼。
  • 约翰·伯伦知理约翰·卡斯帕·伯伦知理(英语:Johann Kaspar Bluntschli,1808年3月7日-1881年10月21日),是瑞士的法学家、政治家。曾任苏黎世大学教授、慕尼黑大学教授、海得尔堡大学教授,瑞士议会
  • 吉德罗·洛哈特吉德罗·洛哈特(英语:Gilderoy Lockhart),是英国作家乔安·凯瑟琳·罗琳的儿童奇幻小说《哈利·波特》系列中的人物。他是哈利·波特二年级的黑魔法防御术课的老师,号称为梅林爵
  • 四硼化铁四硼化铁(FeB4)是新近发现的一种超硬材料和超导材料,已由拜罗伊特大学的缑慧阳等人在实验室中成功合成。它是第一种先由计算机设计,再根据计算结果制备出的超导体。
  • 尤西比奥尤西比奥·达席尔瓦·费雷拉(葡萄牙语:Eusébio da Silva Ferreira,1942年1月25日-2014年1月5日),前葡萄牙著名足球运动员,是20世纪60年代一位具传奇性而出色的射手。是世界球坛中
  • 月桂山兵营月桂山兵营位于西维吉尼亚州的贝林顿市,是为南北战争期间邦联军队的一座 堡垒,用来保护帕克斯堡(Parkersburg)和斯汤顿(Staunton)这两城市。1861年6月3日南军于腓立比之役大败后被
  • 电影哲学电影哲学(英语:Philosophy of Film)是美学的分支,探求的哲学问题是关于电影的基本问题。电影哲学对电影研究的分支之一电影理论有重要影响。最早研究关于电影的哲学问题的人是雨