什么可以防止启用 ip_forwarded 的服务器被攻击者用作路由器

什么可以防止启用 ip_forwarded 的服务器被攻击者用作路由器

设置/问题

给定一个公共互联网上的服务器,其 IP185.48.117.176/proc/sys/net/ipv4/ip_forward=1且没有 iptable-rules。

什么可以防止攻击者

  1. 直接或
  2. 间接(通过另一个路由器)

通过使用我的服务器作为她的路由器来连接到互联网?

(我知道,如果没有设置适当的伪装,它是无用的,因为回复不会被路由回来,但它仍然可以用于 UDP 洪水攻击,而无论如何都不会预期响应包。)

我尝试过的:

我尝试添加一条路由(在我的客户端/攻击者的机器上)

route add 0.0.0.0 gw 185.48.117.176

在我添加了“假接口 IP”之后

ip address add dev wlan0 scope link 185.48.117.176

以防止SIOCADDRT: Network is unreachable出现错误消息。然后我删除了“假接口 ip”,这样路由就保留了下来。

但是我仍然无法使用该服务器作为路由,因为没有数据包到达那里(我尝试使用 tcpdump 捕获 ICMP 数据包)。

作为这个帖子关于docker的问题,好像和网络是否支持二层交换有关。

这是为什么?我忽略了什么?

答案1

@MarkoPolo(评论)

您的设备将发送 ARP 请求(广播),尝试获取与 185.48.117.176 关联的第 2 层 MAC 地址。由于没有接口物理连接到 185.48.117.176,因此不会返回任何 ARP 回复

为了物理上达到您的目标(185.48.117.176),您需要将包发送到物理上连接185.48.117.176到该目标的设备,等等。

理论上,例如,您可以使用路由器的虚假 MAC 地址构建一个以太网包(回答案例2. indirectly (through another router)),然后它会将该包转发到公共网络,这是可以的,因为这就是路由的工作方式。

您想将包到达或注入到哪个网络?

  • 如果它是任何 RFC 1918 地址,则没有公共路由器会路由它,因为这样的私有网络应该在哪里?
  • 如果它是公共网络,那么无论如何它都是公众可以访问的

因此,只有当您物理连接到与专用网络物理连接的路由器时,尝试将包注入专用网络才有意义。
物理连接是不可能的,那么您当然需要适当的过滤。


编辑:

请记住:
如果攻击者是您的 ISP/控制来自 ISP 的设备,则连接到路由器/数据中心的人可以将数据包发送到您的网络。如果您启用了 NAT,则可以与私有网络中的设备进行通信。

如果是这种情况,请记住设置适当的过滤器。

答案2

数据包不能同时发往该机器和受害者。如果发往受害者,则不会发往该机器。如果发往该机器,则不会转发,因为它已到达目的地。

严格来说,数据包可以被寻址到一台机器,然后到达目的地——这称为源路由。但除非机器配置严重错误,否则不会满足此类请求。

相关内容