TCP时间戳赋予什么好处?

我有一个安全扫描发现指示我禁用TCP时间戳。 我了解推荐的原因:时间戳可用于计算服务器正常运行时间,这可能对攻击者有帮助(在http://www.silby.com/eurobsdcon05/eurobsdcon_silbersack.pdf标题为“TCP Timestamps”下的正确解释)。

但是,我的理解是,TCP时间戳旨在增强TCP性能。 当然,在成本/效益分析中,性能下降是一个很大的,可能太大的成本。 我很难理解可能有多less,如果有的话,性能成本。 hivemind中的任何节点都在帮助吗?

答案在RFC 1323 – 往返测量中得到了简洁的expression… RFC的介绍也提供了一些相关的历史背景…

Introduction The introduction of fiber optics is resulting in ever-higher transmission speeds, and the fastest paths are moving out of the domain for which TCP was originally engineered. This memo defines a set of modest extensions to TCP to extend the domain of its application to match this increasing network capability. It is based upon and obsoletes RFC-1072 [Jacobson88b] and RFC-1185 [Jacobson90b]. (3) Round-Trip Measurement TCP implements reliable data delivery by retransmitting segments that are not acknowledged within some retransmission timeout (RTO) interval. Accurate dynamic determination of an appropriate RTO is essential to TCP performance. RTO is determined by estimating the mean and variance of the measured round-trip time (RTT), ie, the time interval between sending a segment and receiving an acknowledgment for it [Jacobson88a]. Section 4 introduces a new TCP option, "Timestamps", and then defines a mechanism using this option that allows nearly every segment, including retransmissions, to be timed at negligible computational cost. We use the mnemonic RTTM (Round Trip Time Measurement) for this mechanism, to distinguish it from other uses of the Timestamps option. 

禁用时间戳会造成的特定性能损失取决于您的特定服务器操作系统以及您如何执行此操作(例如,请参阅此PSC性能调优文档 )。 某些操作系统要求您一次启用或禁用所有的RFC1323选项…其他的则允许您select性地启用RFC 1323选项。

如果你的数据传输在某种程度上被你的虚拟服务器扼杀了(也许你只是买了廉价的虚拟主机计划),那么也许你不可能使用更高的性能……也许值得把它们关掉试试。 如果你这样做,如果可能的话,一定要从几个不同的地点为你的前后性能进行基准testing。

对于Daniel和其他想澄清的人:

http://www.forensicswiki.org/wiki/TCP_timestamps

“TCP时间戳用于提供对包装序列号的保护,可以通过分析TCP时间戳来计算系统正常运行时间(和启动时间)(见下文),这些计算出来的运行时间(和启动时间)可以帮助检测隐藏的networking启用操作系统(请参阅TrueCrypt),将欺骗IP和MAC地址链接在一起,将IP地址与Ad-Hoc无线AP相连接等。

这是PCI合规性中表示的低风险漏洞。

为什么安全人员希望你禁用时间戳? 什么可能的威胁可以代表一个时间戳? 我敢打赌,NTP的工作人员会对此感到不满; ^)

如果启用了TCP时间戳,将允许您猜测目标系统的正常运行时间(nmap v -O。了解系统已运行了多久可以确定是否应用了需要重新启动的安全修补程序。

我不会这样做。

没有时间戳TCP保护序列号包装(PAWS)机制将无法正常工作。 它使用时间戳选项来确定突发和随机的序列号变化是一个换行(16位序列号),而不是来自另一个stream的疯狂分组。

如果你没有这个,那么你的TCP会话会每隔一段时间打一次,这取决于它们使用序列号空间的速度。

从RFC 1185:

 ARPANET 56kbps 7KBps 3*10**5 (~3.6 days) DS1 1.5Mbps 190KBps 10**4 (~3 hours) Ethernet 10Mbps 1.25MBps 1700 (~30 mins) DS3 45Mbps 5.6MBps 380 FDDI 100Mbps 12.5MBps 170 Gigabit 1Gbps 125MBps 17 

以45Mbps速度(在802.11n速度之内),然后我们每380秒就会有一个打嗝。 不可怕,但烦人。

为什么安全人员希望你禁用时间戳? 什么可能的威胁可以代表一个时间戳? 我敢打赌,NTP的工作人员会对此感到不满; ^)

嗯,我读了一些关于使用TCP时间戳猜测发送者的时钟频率? 也许这是他们害怕的? 我不知道; ^)

时间戳对于RTT估计而言并不重要。 我碰巧喜欢它们,因为它们在确定接收器或中间件的RTT时非常有用。 然而,根据TCP的炮,只有发送者需要这种禁止的知识; ^)

发件人不需要时间戳来计算RTT。 t1 =发送数据包时的时间戳,t2 =接收到ACK时的时间戳。 RTT = t2-t1。 做一点平滑,你很好去!

丹尼尔…

今天我被问了一个类似的问题。 我的看法如下:

一个未修补的系统就是这个漏洞,而不是攻击者是否可以轻易find它。 因此,解决scheme是定期修补您的系统。 禁用TCP时间戳将不会做任何事情,使您的系统不易受到攻击 – 这只是安全性,而不是安全性。

将问题摆在首位,考虑使用TCP时间戳的解决scheme来识别networking上具有最长正常运行时间的主机。 这些通常是您最脆弱的系统。 使用此信息来优先安装修补程序,以确保您的networking保持受保护状态。

不要忘记,正常运行时间等信息对您的系统pipe理员也是有用的。 🙂