IP 欺骗现在正成为一个主要问题。我想知道我们是否可以使用模式匹配,比如比较传入数据包的跳数或 IP 数据报的 TTL(生存时间)字段来减少 IP 欺骗。有什么办法吗?
答案1
不要试图从您收到的数据包中区分 IP 欺骗。您将会输掉游戏。相反,请将注意力集中在协议堆栈的下一层,在那里可以做一些事情。
为了抵御欺骗,高层协议必须做四件事。
- 如果防止欺骗很重要,那么就向客户端发送一个不可预测的值,客户端必须发送回该值来证明他们的 IP 地址。
- 对于从尚未证明正确的 IP 地址收到的任何数据包,返回的数据包数量永远不要超过收到的数据包数量。理想情况下,永远不要返回更多的字节数,或者至少只多出一小部分。
- 永远不要花费大量的 CPU 时间(或其他资源)处理来自未经证实的 IP 的数据包。
- 永远不要存储来自未经证实的 IP 的数据包的状态。
TCP 可以完成上述所有操作(尽管最后一点只能通过 SYN cookies 实现)。这使得 TCP 能够很好地抵御 IP 欺骗。
如果您在 UDP 上运行协议,则提供针对欺骗的弹性的责任在应用层。协议设计也适用同样的四项原则。