我的服务器受到来自针对特定端口 (7777) 的单个 IP 的洪水攻击,该端口是使用 tcpdump 捕获的,如下所示:
16:38:35.079994 IP 20.195.191.67.58074 > 12.34.56.78.7777:UDP,长度 4
我尝试使用两种方法来阻止源IP:
ip route add blackhole 20.195.191.67/32
iptables -A INPUT -s 20.195.191.67 -j DROP
然而,tcpdump 报告没有变化 - 来自该 IP 的流量不断涌入。我的服务器仍然感受到它的影响(服务几乎没有响应)。
我在这里错过了什么吗?为什么我尝试封锁 IP 却没有任何影响?
答案1
我在这里错过了什么吗?为什么我尝试封锁 IP 却没有任何影响?
除非你有东西在端口 7777 上运行(虚幻锦标赛服务器?)那么这些数据包无论如何都会被丢弃。告诉 iptables 专门删除它们只会阻止 Linux 寻找侦听该端口的程序。数据包仍然到达服务器并被处理。
这是拥有专用防火墙然后只打开服务器上真正需要的端口的一个重要原因。大多数都针对此类场景配备了某种洪水检测/预防功能。
不幸的是,如果有人能够通过向单个端口(未使用)发送数据包来淹没您的服务器,那么您无法在服务器本身上采取任何措施来防止这种情况发生。
答案2
正如其他答案中提到的,无论是否有 iptables/防火墙,您的服务器仍然需要处理数据包。您可以尝试做的是阻止路由器上的 IP,或者通过类似“Cloudflare”的服务汇集所有流量,该服务将为您处理 IP 阻止(并且不会使您的硬件必须处理数据包)洪水)
答案3
也许可以考虑安装 fail2ban,它会自动阻止来自特定 IP 的攻击。我想如果你现在这样做,它会起作用。
关于 iptables,您是否:service iptables save