我的游戏服务器遭受了 DDoS 攻击。这不是直接攻击机器的常规 DDoS 攻击,而是攻击具有多个 IP 地址(UDP 协议)的端口。因此,我用 Python 开发了一个函数来识别传入的 DDoS 攻击,但我无法单独阻止每个传入 IP。
所以我的问题是......我如何才能阻止所有传入特定端口(例如 27022)的请求并且不阻止连接的请求?
答案1
如果你的 Python 函数针对某个特定的日志文件来识别这些 DDOS 攻击,那么值得查看一下失败禁止动态删除“坏”的 UDP 连接。它会根据您定义的匹配条件更新 iptables。
几乎任何标识您可能想要丢弃的 IP 的日志都可以用作来源。您可以创建复杂的规则,例如(用简单的语言):“5 分钟内来自 [IP] 的三个‘短数据包 UDP’连接 = 丢弃 15 分钟”
以下是一个例子有人用它kern.log
来识别 UDP“短数据包”。排名最高的答案显示了一个示例正则表达式以及如何使用 Fail2Ban 测试丢弃规则的指导。
Fail2Ban 可能会完全取代您的 Python 函数。或者,如果该函数执行的操作比您通过正则表达式和 Fail2Ban 规则集可以组合的操作更复杂,如果该函数输出到文件,则该文件又可以用作源。
答案2
您可以创建一个临时白名单,它是您的 python 应用程序的字典,其中包含已连接的客户端。