security - 我应该为 Kubernetes 禁用 TCP 时间戳吗?

标签 security kubernetes tcp containers nginx-ingress

我们聘请了一名安全顾问对我们的应用程序的公共(public) IP(Kubernetes 负载均衡器)进行渗透测试,并就我们的安全缺陷以及避免这些缺陷所需的措施撰写报告。他们的报告警告我们,我们启用了 TCP 时间戳,从我读到的有关该问题的信息来看,它将允许攻击者预测机器的启动时间,从而能够授予对其的控制权。

我还了解到 TCP 时间戳对于 TCP 性能很重要,最重要的是,对于防止包装序列很重要。

但是由于我们使用 Kubernetes 而不是 GKE,并且 Nginx Ingress Controller 位于其前面,所以我想知道 TCP Timestamp 对于该上下文是否真的很重要。我们应该关心吗?如果是这样,它真的会使我的网络因缺乏防止包装序列而容易受到攻击吗?

有关其他问题的 TCP 时间戳的更多信息: What benefit is conferred by TCP timestamp?

最佳答案

根据 RFC 1323(高性能 TCP 扩展),TCP 时间戳用于两种主要机制:

  • PAWS(防止序列缠绕)
  • RTT(往返时间)

PAWS - 用于识别和拒绝以其他包装顺序到达的数据包的防御机制(数据完整性)。

往返时间 - 数据包到达目的地并将确认发送回其发起设备的时间。

禁用 TCP 时间戳时会发生什么:

  • 关闭 TCP 时间戳可能会导致性能问题,因为 RTT 将停止工作。
  • 它将禁用 PAWS
  • McAfee网站称禁用时间戳可能会导致拒绝攻击。

正如前面提到的 McAfee 网站:

For these reasons, McAfee strongly recommends keeping this feature enabled and considers the vulnerability as low..

-- McAfee

来自另一个网站的引用:

Vulnerabilities in TCP Timestamps Retrieval is a Low risk vulnerability that is one of the most frequently found on networks around the world. This issue has been around since at least 1990 but has proven either difficult to detect, difficult to resolve or prone to being overlooked entirely.

-- Beyond Security

我鼓励您观看此视频:HIP15-TALK:Exploiting TCP Timestamps

GKE 怎么样

获取有关启动时间(在本例中为正常运行时间)的信息可以了解哪些安全补丁应用于集群。它可能会导致那些未修补的漏洞被利用。

解决这个问题的最佳方法是定期更新现有集群。 GKE 实现了两种方法:

即使攻击者知道您计算机的启动时间,它也是无用的,因为系统是最新的并且所有安全补丁都已应用。 有专门的 Kubernetes 引擎安全公告站点:Security bulletins

关于security - 我应该为 Kubernetes 禁用 TCP 时间戳吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58996638/

相关文章:

java - 了解 SecureRandom 字符串生成器?

java - 在 JDK 6 中编译并在 JDK7 上运行的 Java 字节码是否对 JDK 7 中已修复的漏洞开放?

c# - 取消请求会降低网络速度

security - UDP 与 TCP 安全性

mongodb - Mongo 3.2 SCRAM-SHA-1 身份验证问题

go - Helm 小枝模板管和/或协商

nginx - Nginx在上游响应日志中显示2种不同的状态

kubernetes - NodePort服务不会将请求重定向到另一个节点

profiling - 您最喜欢的适用于 Windows 的免费 Netstat GUI/连接监视器应用程序是什么?

Ruby - 在 Mac 和 Ubuntu 上执行不同的代码