我知道人们可以修改 IP 标头并更改源 IP 地址,但是网络设备检测这些消息应该很简单。如果他们不这样做,为什么这么难?它是否会增加太多开销?
今天的路由器是否可以防止伪造的 IP 标头?
我知道人们可以修改 IP 标头并更改源 IP 地址,但是网络设备检测这些消息应该很简单。
商业网络设备可以检测和阻止标头中的虚假IP源地址;其他伪造的 IPv4 标头可能有点难以识别。大多数人将检测虚假源IP地址的功能称为“单播反向路径转发”,缩写为uRPF;uRPF在RFC 3704 中定义,被认为是 Internet最佳当前实践。 uRPF应应用于客户驻地设备的第一个路由器,或公司网络中的边缘路由器。
如果他们不这样做,为什么这么难?它是否会增加太多开销?
只要路由器不是基于 CPU 的路由器,就不会有性能损失。ISP 使用的许多路由器/交换机都将此功能内置到硬件的 ASIC 中;通常打开它不会有巨大的性能损失。有时会出现功能冲突,但这在大多数情况下也不是什么大问题。
ISP 工程/运营人员的政策和能力各不相同,许多 ISP(特别是在较小的国家/地区)忙于使事情“正常工作”,以至于他们没有使事情“正常工作”的周期。
防止更改源 IP 地址需要访问列表 (ACL) 或单播反向路径过滤 (uRPF)。
都不是免费的。uRPF 通常需要额外的查找或更复杂的单一查找,因此在某些平台上它甚至可能使您的查找性能减半。ACL 会减慢查找和使用内存的速度。
uRPF 是免维护的,您只需配置一次即可忘记它。ACL 需要系统知道哪些地址位于接口后面并确保 ACL 保持最新。
ACL 比 uRPF 得到更广泛的支持,uRPF 是 L3 交换机级设备中比较少见的特性。在“真实”路由器中,通常这两种功能都可用。
即使这两个功能都可用,在网络的错误位置配置 uRPF 可能会中断网络,不了解平台特定的 ACL 限制可能会导致中断。
通常,您自己不会因防止源地址欺骗而受益,而受益的主要是整个 Internet。您尝试这样做具有非零风险,因为您最终可能会破坏东西。而且您的客户不会获得任何好处,没有人会为您的实施支付更多费用。所以这样做的回报很低。
负责任的服务提供商这样做,因为这是正确的做法,但期望我们在部署的大部分访问设备中获得反欺骗是不现实的。更现实的目标是,如果我们在 IP 传输连接中执行 ACL,因为那里只有大约 6000 个左右的短节 AS 编号。
为什么这甚至是问题是因为 UDP 反射攻击,可以通过 QUIC 和 MinimaLT 等协议修复,确保反射没有收益,因为保证传入的查询大于传出的答案,因此欺骗失去了它的好处。
最近再次流行使用 UDP 反射作为 DDoS 攻击。消费者 CPE 设备中有许多广泛开放的 DNS 服务器,消费者并不知道,因此这些消费者因家庭连接拥塞而遭受损失,因为它被用来反映攻击。这也是获得显着放大的简单方法,几十字节的小查询可以产生上千字节的大答案。已经发生了每秒数百吉比特的反射 DDoS 攻击,并且每天都发生较小的攻击,就在周日晚上,我们向我们的一位客户传输了 43Gbps 攻击。
源地址过滤在现实世界中很重要,因为 Internet 路由是非对称的,所以原则上我们需要有根据地猜测来自这个源的数据包是否可能出现在这个传入接口上。
对此没有简单的公式,因为对于几乎适用于所有情况的每条规则,还有一个具有商业意义的用例会在那时被打破。
反向路径过滤在边缘路由器上效果很好,其中“内部”和“外部”有明确的定义——您不允许外部人员使用“内部”地址,反之亦然。一旦我开始使用多个边缘路由器进行冗余,它就会变得更加复杂。
对于骨干路由器,实现反向路径过滤的唯一方法是在对等方宣布工作路由时允许传入的数据包(无论这是否是我们的偏好)。这将是一个非常长的查找,很容易被规避并破坏了我故意购买运输但不在该链接下宣布我的前缀的用例。