SYN cookie

✍ dations ◷ 2025-02-24 01:17:29 #计算机网络安全,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 页面存档备份,存于互联网档案馆)。

相关

  • 鼻音 (辅音)鼻音是按发音方法分类的一类辅音。发音时,口腔中的气流通路被阻塞,软颚下垂,气流通过鼻腔,与气流从口腔流出的口腔辅音相对。 (少数的挤喉音可能同时具有口腔辅音与鼻音的性质。)
  • 2021年 成都2021年夏季世界大学生运动会(英语:XXXI 2021 Summer Universiade)简称为2021年成都大运会或成都大运会,是第31届夏季世界大学生运动会,将在2021年于中国四川省成都市举行,成都是继
  • 波状云波状云(学名:Undulatus,缩写:un ),是云的一类变种,指呈波浪状起伏的大片云体,适用于卷积云、卷层云、高积云、高层云、层积云和层云这六类云属。波状云可以是由单一的云体组成,也可
  • 奥尔汗一世奥尔汗一世又称奥尔汗加齐(Orhan Gazi,1281年出生,1362年3月逝世)是奥斯曼帝国的第二位首领(苏丹这个称号直到1383年才开始使用),他的执政时期是从1323年或1324年到1362年3月。他占
  • 拉金德拉·帕乔里拉金德拉·帕乔里(Rajendra Kumar Pachauri,1940年8月20日-2020年2月13日),前联合国政府间气候变化专门委员会主席(2002年-2015年)。联合国政府间气候变化委员会2007年的一份报告提
  • 西格丽德·温塞特西格丽德·温塞特(挪威语:Sigrid Undset,1882年5月20日-1949年6月10日)是一位挪威语小说家,1928年诺贝尔文学奖获得者。值得一提的是,温塞特获奖后,她将奖金全部捐赠给社会福利机关
  • 许廑父许廑父(1891年-1953年),名与澂,字弃疾,又字一.mw-parser-output ruby>rt,.mw-parser-output ruby>rtc{font-feature-settings:"ruby"1}.mw-parser-output ruby.large{font-size:25
  • 穿孔球穗草穿孔球穗草(学名:)为禾本科球穗草属下的一个种。 维基物种中有关穿孔球穗草的数据
  • 丁恩河 (伍珀河支流)坐标:51°2′58″N 6°57′45″E / 51.04944°N 6.96250°E / 51.04944; 6.96250丁恩河(德语:Dhünn),是德国的河流,位于该国西部,处于北莱茵-威斯特法伦州,属于伍珀河的左支流,河道
  • 萨赫勒-沃克·祖德萨赫勒-沃克·祖德(吉兹字母:ሳህለወርቅ ዘውዴ,1950年2月21日-)为现任埃塞俄比亚总统,亦是国内第一位女总统,于2018年10月25日由联邦议会投票选出。祖德曾经是外交官,并担任联合