我知道 UDP 是一种无连接的传输层协议。由于在标头中伪造源 IP 和源端口很容易,是什么阻止任何人通过 RIP 毒化路由表?在我看来,在这种情况下,我可以很容易地用虚假信息消息淹没路由器。
在路由信息协议 (RIP) 中使用 UDP 是一种安全的做法吗?
是的,普通 RIP 可能容易受到攻击。RIP 早在 Internet 商业化之前就已创建。今天,有一些选项可用于 RIP 更新的安全身份验证。例如,RFC 4822,RIPv2 加密认证:
介绍
Internet 的发展使我们意识到需要改进路由信息的身份验证。RIPv2 提供未经身份验证的服务(如在经典 RIP 中)或密码身份验证。两者都容易受到目前在 Internet 上普遍存在的被动攻击。路由协议中存在众所周知的安全问题 [Bell89]。最初指定用于 RIPv2 的明文密码被广泛认为容易受到易于部署的被动攻击 [HA94]。
最初的 RIPv2 加密身份验证规范 RFC 2082 [AB97] 使用 Keyed-MD5 加密机制。虽然没有公开发布针对该机制的攻击,但一些报告 [Dobb96a、Dobb96b] 引起人们对 MD5 加密散列函数的最终强度的担忧。此外,一些最终用户,尤其是几个不同的政府,需要使用 SHA 散列函数系列而不是出于政策原因的任何其他此类功能。最后,原始规范使用的散列结构被广泛认为比本次规范修订版中添加的算法所使用的 HMAC 结构弱。
本文档废弃了原始规范 RFC 2082 [AB97]。该规范与 RFC 2082 的不同之处在于增加了对 SHA 系列哈希算法和 HMAC 技术的支持,同时保留了原始的 Keyed-MD5 算法和模式。由于原始 RIPv2 加密身份验证机制与算法无关,因此保留了向后兼容性。这种向后兼容性的要求排除了对协议进行重大更改。因此,本文档限制了对附加加密算法系列的支持的更改。最初的规范已经得到了非常广泛的实施,众所周知,它具有广泛的互操作性,并且也得到了广泛的部署。
作者不认为该规范是 RIPv2 身份验证的最终答案,并鼓励读者查阅本文档的安全注意事项部分以了解更多详细信息。
如果禁用 RIPv2 身份验证,则只会检测到简单的错误配置。原始的 RIPv2 身份验证机制依赖于重复使用的明文密码。使用明文密码身份验证可以防止意外错误配置,如果这是唯一的问题,但从安全角度来看没有帮助。通过简单地捕获线路上的信息——即使在远程环境中也很简单——敌对实体可以读取明文 RIPv2 密码并使用该知识通过 RIPv2 路由协议将虚假信息注入路由系统。
此机制旨在降低对 RIPv2 部署进行成功被动攻击的风险。也就是说,这种机制的部署大大降低了基于 RIPv2 的路由系统免受被动攻击的脆弱性。当启用加密身份验证时,我们在 RIPv2 数据包的身份验证字段中传输密钥加密单向函数的输出,而不是在 RIPv2 数据包中发送明文可重用密码。RIPv2 认证密钥只有 RIPv2 会话的授权方知道。RIPv2 身份验证密钥绝不会以明文形式通过网络发送。
通过这种方式,可以防止伪造或消息修改。虽然可以在序列号更改之前重播消息,但可以使用序列号来降低重播风险。该机制不提供机密性,因为消息保持明文。由于路由协议的目标是通告路由拓扑,因此路由协议通常不需要保密性。
该方法的其他相关原理是 MD5 和 SHA-1 都用于其他目的,因此通常已经存在于 IP 路由器中,某种形式的密码管理也是如此。
在 FHRP(即 HSRP)开始使用之前,当 RIP (v1) 通常被用作终端主机寻找冗余网关的机制时,路由表中毒曾经是偶然发生的(并且有一些规律性)。错误配置的主机(通常是 UNIX 系统管理员忘记将 -q / quiet 选项添加到 ripd)会将错误路由通告到共享子网中。这不仅会导致网络中的其他主机开始将流量发送到错误的地方,而且可能(会)通过路由器传播到环境的其余部分。
最佳实践的几个要素来自于此:
- 对主机使用 FHRP,这样它们(通常)就不需要比默认网关更多的东西了。
- 只允许路由协议在专门互连路由器的网段上运行。Cisco 命令
passive-interface default
为大多数 IGP 完成此操作(即默认情况下,在未明确启用的任何接口上不允许路由邻接)。 - 理想情况下使用能够进行身份验证的 IGP,然后实际使用该身份验证(这最后一部分仍然很少见)。
所以,是的,RIPv1 肯定(是)容易受到(有意或无意)接收不良信息的影响。UDP本身的使用不一定是它的起源,而是从根本上过时的协议实现(无论协议选择如何)以及网络工程师的不良/草率做法。
如果没有适当的措施,这个问题可能是真的。在网络上保护此通信的正确方法是要求 MD5 身份验证。
请记住,RIPv1 无法进行身份验证,只能使用 RIPv2。
这是一个更实际的例子,这是一个思科文档