应用安全问题:伪造IP地址有多容易?

6
我正在处理一个受防火墙保护的应用程序,只允许特定IP地址(即应用程序Web服务器)访问。
这有点微妙,引入其他身份验证/保护层会很麻烦。
我对网络的理解不是很好,因为这不是我的专业,但在我的脑海中,我构想了以下情况:
1. 有人知道我们某个应用程序服务器的IP地址,并想伪造它以访问他所知道的其他应用程序,他知道该应用程序的侦听套接字和协议。 2. 因此,他更改其IP数据包的头文件以将Web服务器IP作为发件人。
接下来会发生什么?
A:他的ISP拒绝该数据包并说:“嘿,那不是你从我的分配的IP地址。” - 问题解决
B:ISP将数据包传递给下一级(上行...)
假设ISP已被攻击或数据包未经检查而被传递(我不知道是否是这种情况)
接下来会发生什么?
A:运营商拒绝数据包并说:“嘿,该IP不在我们同意您操作的IP范围内!”-如果我的Web服务器没有由攻击者入侵的与我相同的ISP运营商,则问题解决
B:ISP未检查数据包或已被攻击并将其转发到上行链路。
现在我确信通过路由器传递IP地址时会进行检查和过滤。否则,这将是完全的无政府状态。
因此,想要伪造我的IP地址的攻击者需要入侵负责Web服务器所在IP范围的同一ISP,或者该ISP不进行数据包检查。
这正确吗?
好的,现在我想象一下我的服务器位于办公室,其ISP是地区有线电视公司。
从我的IP地址发送数据包需要哪些步骤?
(当然,我只是想了解风险并选择适当的保护!)
我想象定位路由站点,通常在街边的某个小容器中,仅受锁保护。进去。更换电缆或插入自己。
如果您知道自己在做什么,这很可能会起作用,还是需要使用存储在真实办公室调制解调器上的密钥进行加密握手以建立经过身份验证的连接?
我谈论的是有关今天的标准的有线互联网。
最后一个想法:因此,如果我的源服务器不是一些家庭ISP,它的站点易受攻击,那么我应该相当安全,对吗?
我记得NFS服务器默认仅依赖于IP身份验证。因为这很常见-是否有任何示例显示伪造IP地址的NFS服务器被黑客攻击?

我意识到这个问题表达得非常含糊。这是因为我不确定我在这里说的任何事情。我只是想提供一些输入,其中我认为洞穴可能存在,以便它们可以得到确认或排除。

总体而言,我感谢任何关于这个主题的评论和你个人的想法!

2个回答

8

现在我非常确定当通过路由器时,IP地址会被检查和过滤。

尽管您非常确定,但这种假设是不正确的。这种名为“出口过滤”的操作通常不会进行。

广泛欺骗IP地址的主要保护措施是攻击者不会收到任何响应数据包-它们都将被路由回使用被欺骗IP地址的合法主机。这种攻击称为“盲目欺骗”,因为攻击者是盲目攻击的。

为了在TCP连接上发送数据,必须能够完成TCP“三次握手”。这需要知道对端使用的初始序列号-由于TCP初始序列号是相当随机选择的1,这防止了盲目欺骗攻击的发生。(请注意,这不适用于UDP-如果没有某种应用程序层预防措施,则UDP很容易受到盲目欺骗攻击的威胁)。

如果攻击者可以看到回复(例如,因为他正在嗅探服务器的上行链路或本地网络),则这也不适用-在这种情况下欺骗TCP连接不仅是可能的,而且是微不足道的。


1. 现在是这样,但以前不是这样。


我很清楚你知道自己在说什么。关于TCP/IP欺骗,谷歌上有太多垃圾信息,真是让人惊讶。谢谢! - wlf
1
@wlf:是的,你日志中的地址很可能对应着实际进行连接的机器-也就是说,该机器有可能是第三方机器,被攻击者入侵并用于发动攻击。 - caf

1

在局域网内,这取决于您的路由器/交换机/集线器如何配置。但我认为欺骗应该很常见。


我认为IP地址没有被检查。因此,您可以发送带有伪造发件人IP的UDP数据包。但是,由于服务器将把答案发送给该IP的真实所有者,因此您将无法收到答案。

这意味着您不能在TCP中简单地伪造IP,因为建立连接需要握手。


如果响应将通过您的路由器,则可以伪造某人的IP。因此,网络管理员可以在他的局域网内伪造所有IP,ISP可以在其网络内伪造所有IP,并且运营商可以在许多国际连接上伪造IP(前提是它们经过他的路由器)。


最后,有可能滥用BGP来修改该IP的路由以通过您的计算机。但并非每个人都可以访问BGP,您可能需要成为ISP才能获得它。然后,操纵可能会被检测到,因为BGP路由更改受到监控。


这都非常有趣。总之,漏洞是一种中间人攻击。一旦攻击成功,例如基本的HTTP身份验证也将变得无效。到目前为止,我可以依赖IP身份验证,但如果我想更进一步,我需要使用共享密钥或异步确认公共密钥来实现加密。你同意吗? - The Surrican
如果IP地址被多个不信任彼此(但信任路由器/代理)的人共享(NAT,代理等),则IP身份验证会失败,但攻击者仍无法拦截TCP连接。 - CodesInChaos
我会简单地使用已知的公钥和https。这对于公共/不受信任的WLAN也有帮助,而且这是一个相对常见的情况。 - CodesInChaos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接