TCP时间戳赋予了什么好处?

时间:2011-10-24 18:53:08

标签: networking tcp security

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

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

5 个答案:

答案 0 :(得分:24)

答案在RFC 1323 - Round-Trip Measurement中最简洁地表达了...... 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), i.e., 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 doc on performance tuning)。某些操作系统要求您同时启用或禁用所有RFC1323选项...其他操作系统允许您有选择地启用RFC 1323选项。

如果您的虚拟服务器以某种方式限制了您的数据传输(可能您只购买了便宜的虚拟计划),那么也许您无论如何都不可能使用更高的性能...也许值得关闭它们尝试。如果您这样做,请确保在可能的情况下从几个不同的位置对您的演出前后进行基准测试。

答案 1 :(得分:14)

丹尼尔和其他任何想要澄清的人:

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

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

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

答案 2 :(得分:12)

  

为什么安全人员会要求您禁用时间戳?时间戳可能代表什么样的威胁?我打赌NTP的工作人员对此不满意; ^)

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

答案 3 :(得分:10)

我不会这样做。

如果没有时间戳,TCP保护免受包装序列号(PAWS)机制将无法正常工作。它使用timestamp选项来确定突然和随机序列号更改是一个包(16位序列号)而不是来自另一个流的疯狂数据包。

如果你没有这个,那么你的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。做一点平滑,你就好了!

...丹尼尔

答案 4 :(得分:6)

今天我被问到关于这个话题的类似问题。我的看法如下:

未修补的系统是漏洞,而不是攻击者是否可以轻松找到它。因此,解决方案是定期修补您的系统。禁用TCP时间戳不会使您的系统变得不那么脆弱 - 它只是通过默默无闻的安全性,这根本不是安全措施。

转过头来考虑问题,考虑编写一个使用TCP时间戳来识别网络中运行时间最长的主机的解决方案。这些通常是您最容易受到攻击的系统。使用此信息确定修补的优先级,以确保您的网络保持受保护。

不要忘记正常运行时间等信息对您的系统管理员也很有用。 :)