团队文章网络运营

IP 欺骗:它是什么,又该如何防范

伪造源地址能做什么、不能做什么?响应报文为什么重要?了解源地址验证与用户身份认证之间的区别。

目录

两座白色房屋前放着多个带蓝色房屋标记的白色信封,其中一个信封的寄件标签被掀起。
两个白色信封上印着相同的蓝色房屋图案,其中一个信封的寄件人标签正在翘起脱落。

回信地址可以照抄。它告诉收件人该往哪里回信,却不能证明是谁寄出了这封信。

一封信即使不是你寄的,也可以写上你的回信地址。这个地址告诉收件人该把回信寄往哪里,却不能证明是谁写了信。IP 欺骗利用的,正是互联网通信中类似的缺口。

伪造的究竟是什么?

信息以数据包的形式在网络上传输。每个 IP 数据包都有一个目的地址和一个源地址。所谓 IP 欺骗,就是在数据包中填入虚假的源地址。接收方看到的是这个自称的来源,除非另有机制检查它是否合理。

IP 地址帮助网络递送流量,并不是一个人的身份证。多人可能共用一个公网地址,设备的地址也可能发生变化。因此,允许某个特定 IP 地址的流量通过的规则,所能回答的问题,比登录验证或基于密码学的身份验证更有限。

为什么响应报文很重要

假设有人发送请求时,把你的地址填作源地址。服务通常会朝你的方向发回响应。发送者不会因此自动收到响应,也不会因此获得访问你电脑的权限。

这一点对许多应用使用的传输协议 TCP 很重要:建立连接需要双向交互,已经建立的连接也会跟踪自身状态。仅仅抄用一个地址,并不能完成这套交互。TCP 规范描述了这些连接与序列检查。它们是有用的保护措施,却不能替代对服务或用户的身份认证。

伪造地址仍然能造成什么危害

攻击者未必想建立一次通信。他们可能只是想让某个服务向其他人发送对方并不想要的响应。如果许多服务都作出响应,受害者就会收到自己从未请求过的流量。这就是反射攻击。如果响应远大于请求,还会形成放大效应。

另一些攻击试图直接耗尽资源,或利用某个过度信任源地址的服务。结果取决于具体服务、网络路径及其防护措施。单靠 IP 欺骗,并不能让人读取加密会话或接管账户。

两种不同的检查,发生在两个不同的位置

在网络边界,运营者可以拒绝那些声称来自某个源地址、却不应从该连接到达的流量。例如,一个客户的连接不应发送冒充无关客户地址范围的数据包。这就是 BCP 38 源地址过滤背后的原则。

在应用层,身份认证检查谁有权参与通信。在正确配置并完成验证的情况下,HTTPS 使用 TLS 认证服务器身份并保护连接;登录则确立另一个独立的账户身份。一个看起来有效的地址,不能替代这两种检查中的任何一种。

你可以做什么

如果你只是使用互联网,而不负责运营网络,应当保持软件更新,使用提供经过身份认证的加密连接的服务,并认真对待证书警告。这些措施保护的是你参与的通信。过滤通过互联网连接传输的伪造流量,是网络运营者的工作;换一个更强的密码,并不能做到这一点。

如果你运营网络或服务,可以先了解应在何处进行源地址检查与身份认证。要进一步厘清反射攻击、洪泛攻击及相关术语,可以继续阅读不同的攻击模式。

追问说法背后的验证机制

这里值得养成的习惯,是追问一个系统究竟验证了什么。Lu Heng 在关于现实层次与象征权力的第 20 则札记中,将这个问题带入了对制度与权力的更广泛讨论。那篇文章展开的是一个范围更广的论证;这里的网络通信例子,只是用一种具体的方式,区分某个说法与支撑它的机制。