我试图了解一些有关SYN防洪的技术,有三个术语我找不到明确的解释。
让我困惑的术语是:
这意味着什么,它们之间有什么不同?
发布于 2013-12-10 09:08:08
Syn-代理是一种本体协议。设备将代理任何TCP请求,但只有在完全建立三种方式握手的情况下,才会将其转发给服务器。
有关SYN和SYN,请参阅西斯科的以下摘录:
SYN缓存:两个终端主机防御,称为SYN缓存和SYN (稍后描述),通过减少最初分配给接收到的SYN生成的TCB的状态数量,并推迟实例化完整状态8。在使用SYN缓存的主机中,每个散列桶中空间有限的哈希表用于存储通常会进入分配的TCB的数据子集。如果接收到完成ACK的握手,则可以将此数据移动到完整的TCB中;否则,可以在需要时获取具有特定哈希值的最古老的桶。在Lemon的FreeBSD示例8中,半连接的SYN缓存条目为160个字节,而完整的TCB为736个字节,支持SYN缓存中的15359个条目。SYN缓存数据结构对试图溢出其桶的攻击者是健壮的,因为它使用启动器的本地端口号和散列值中的一些秘密位。由于堆栈是比简单链接列表更有效的数据结构,使用SYN缓存的堆栈可以提高速度,即使没有受到攻击。根据Lemon的测试,在主动攻击期间,使用SYN缓存的主机能够建立合法的连接,延迟只增加大约15%。SYN Cookies:与SYN缓存方法不同,SYN技术导致接收到的SYN生成绝对零的状态。相反,包含连接状态的最基本数据被压缩为SYN中使用的序列号的位。由于对于合法连接,将收到一个ACK段,该段与此序列号(实际上是序列号加一个序列)相呼应,因此可以重新生成基本的TCB数据,并且可以通过解压缩确认字段来安全地实例化一个完整的TCB。即使在严重的攻击下,这种解压缩也是有效的,因为侦听器上没有任何存储负载,只有计算负载才能将数据编码到SYN序列号中。缺点是并非所有的TCB数据都能适应32位序列号字段,因此可能会禁用一些高性能所需的TCP选项。另一个问题是SYN不被重新传输(因为重传需要状态),从而改变了RFC 793中的TCP同步过程。TCP的确切格式不是互操作性问题,因为它们只在本地进行解释,生成和验证的格式和过程在不同的实现中可能略有不同。图5描述了多个实现使用的SYN生成和验证的一般过程。为了在使用TCP cookie时计算SYN序列号(即TCP cookie),主机首先连接一些本地秘密位、包含IP地址和TCP端口的数据结构、初始SYN序列号和一些标识秘密位的索引数据。在所有这些字节上计算一个MD5摘要,并且从要放置在SYN序列号中的哈希值中截断一些位。因为序列号大约是完整哈希值的四分之一大小,所以这种截断是必要的,但是通常使用的哈希位值至少有3个字节,这意味着在不知道本地秘密位的情况下,猜测有效的cookie仍然需要2^24的努力。除了哈希输出之外,一些cookie位指示SYN包含的最大段大小(MSS)的下限,以及识别哈希中使用的本地秘密的索引位。要验证SYN,首先将传入ACK段中的确认号减少1,以检索生成的SYN。根据IP地址对、TCP端口号、段序列号减1和来自与cookie内索引位对应的秘密池的值计算截断散列位集的有效值。如果这些计算的散列位与ACK段中的哈希位匹配,则初始化TCB并继续连接。编码MSS绑定用于设置不大于最初广告的合理大小的MSS。此MSS通常被实现为三位,其代码点对应于基于典型链路最大传输单元(MTU)和报头开销的八个“常见的”MSS值。混合方法:混合方法结合了前面描述的两个或多个单一防御技术。例如,一些终端主机操作系统实现了大型待办事项和some,但只有在占用的积压量超过某个阈值时才启用some,允许它们正常运行而不存在some的缺点,但也允许它们失败到some行为,并在发生攻击时受到强烈保护。
https://security.stackexchange.com/questions/46756
复制相似问题