防火墙如何减轻 IP 欺骗攻击?

防火墙如何减轻 IP 欺骗攻击?

我知道您可以实施防火墙以仅允许从特定 IP 地址访问服务器,但人们难道不能伪造 TCP 数据包中的源 IP 地址吗?这实际上如何阻止不道德的人访问您的服务器?

答案1

老兄说的就是你想要的答案。

我想你的想法是这样的:

SERVER.......................CLIENT
............[FIREWALL].........|
..|............................|
..|_>___[CHECK FOR AUTHORITY]_<_|

该图假设服务器和客户端都具有防火墙(通常都有)。

如果授权失败,对服务器/客户端的调用将被忽略。

因此,如果服务器 IP 为 xxx.xxx.xxx.1,客户端为 xxx.xxx.xxx.2,并且客户端尝试通过发送未经授权的命令来访问服务器,则您的服务器日志将如下所示 xxx.xxx.xxx.2 [授权失败 - 忽略]

如果 xxx.xxx.xxx.2 将其 IP 伪装成有权访问服务器的 xxx.xxx.xxx.3,则会发生以下情况:xxx.xxx.xxx.3 -> 将命令包发送到 xxx.xxx.xxx.1 xxx.xxx.xxx.1 -> 响应命令并将包发送到 xxx.xxx.xxx.3

因此 xxx.xxx.xxx.1 永远不会获得检索到的命令。


现在你可能想到的是那怎么安全呢?

事实上大多数服务器都是这样工作的......

SERVER..............................CLIENT
..|______________[CONNECT]___________<_|
............|
...[TEST AUTHORIZATION]
...........|
......[PASSED]
..........|
...........[SEND CONNECTED RESPONSE]...|

因此,如果客户端被授权并调用服务器,服务器将以连接的响应进行响应以发送回客户端,如果客户端收到此响应,服务器就知道这是正确的客户端。

答案2

当然,有人可以伪造他的 IP 地址来发送 TCP/IP 数据包,但他永远不会得到任何响应,因为响应将转到他使用的伪造 IP 地址!所以对于想要建立双向通信的人来说,这种方法毫无用处!

答案3

有人指出,伪造发件人是不够的,您还需要得到回复才能做很多有用的事情。所以您需要做一个完整的中间人。

然而,防火墙通常不会仅仅根据源 IP 就“允许”太多内容。

防火墙主要用于阻塞,但不用于授权

也就是说,不受信任的 IP 甚至不知道有 VPN,也无法连接到 VPN 服务。或者说,很容易受到攻击。但主要的安全功能是 VPN 本身。

由于基于 IP 的过滤成本低廉,因此它成为一种很好的第一道防线。防火墙拒绝任何数据包意味着后面的服务将需要处理的“攻击”(和其他噪音)少得多。对防火墙运行 DDoS 比对实际服务运行 DDoS 更难,因为您需要填满互联网连接,而不是处理请求的服务器的 CPU。

答案4

单向连接(例如使用 UDP 等无状态协议)确实有可能造成危害,但这归结为避免基于 IP(不安全)的身份验证。

TCP

TCP 通常不受影响,因为建立连接需要将数据包发送回原始主机。具体过程如下:

Alice 在授权主机列表中。

  • Alice 向 Bob 发送一个 SYN 数据包。
  • Bob 返回 SYN-ACK 给 Alice,表示她可以继续
  • Alice 继续发送 ACK 数据包,并继续传输预期的有效载荷。

Charlie 尝试连接该服务。

  • Charlie 向 Bob 发送一个 SYN 数据包。
  • 防火墙阻止了该数据包,Bob 什么也没收到(或者在日志中收到 Charlie 尝试连接他的警告)。
  • Charlie 可能知道也可能不知道他的请求被拒绝了(取决于防火墙配置,要么请求超时,要么 Bob 明确发送 ICMP 拒绝/无法访问的数据包)

Charlie 以某种方式知道 Alice 可以访问该服务。

  • Charlie 向 Bob 发送一个 SYN 数据包,假装他是 Alice。
  • 数据包穿过防火墙,Bob 向 Alice 返回 SYN-ACK。
  • Alice 回复 RST-ACK(重置确认)或 ICMP 不可达,因为她没有期待 Bob 的任何回复。
  • 查理永远不会知道这个请求是否被批准。

现在,如果连接已经建立会怎么样?这就是序列号的用途:它们不能(也不应该)被其他人预测,并且双方都希望序列总是增加一。

  • 当连接建立时,双方选择一个最好随机的序列号。
  • 他们发送的每个数据包的序列号都应加一。这样接收端就可以拒绝序列号错误的数据包,并重新排序在接受窗口内的数据包。

现在 Charlie 无法将数据包“注入”到 Alice 和 Bob 之间现有的连接中,因为他无法预测序列号,并且他的数据包将被 Bob 拒绝,同时日志中可能会出现警告或通知。

UDP

如果协议是 UDP,则很容易受到欺骗,因为对等方能够在 Internet 上注入欺骗数据包,因此您必须在应用程序层而不是传输层添加身份验证或加密机制。

减轻

ISP 将采取措施防止 IP 地址欺骗。措施可能很简单,例如拒绝所有与自己的网络块不匹配的数据包从路由器发出,并拒绝所有与自己的网络块匹配的数据包进入自己的网络。

在本地网络中,进行欺骗通常非常容易,因为没有很多机制可以阻止某人这样做。

相关内容