我需要一些帮助,我的游戏服务器已经遭受了两天的 DoS 攻击。带宽攻击没有问题,因为我使用 OVH 托管,这些攻击会被过滤掉,但我的游戏服务器端口受到攻击,导致服务器超时并断开所有玩家的连接。
因此一开始很简单,他用相同长度(1062)的数据包发起攻击。
444 0.017859 159.208.182.160 192.95.55.2 UDP 1062 Source port: 53407 Destination port: 27016
445 0.017902 14.87.205.89 192.95.55.2 UDP 1062 Source port: 22286 Destination port: 27016
446 0.017907 68.191.26.190 192.95.55.2 UDP 1062 Source port: 48964 Destination port: 27016
447 0.017992 201.50.53.136 192.95.55.2 UDP 1062 Source port: 13001 Destination port: 27016
448 0.017993 58.15.28.176 192.95.55.2 UDP 1062 Source port: senip Destination port: 27016
所以我做了:
iptables -A INPUT -p udp --dport 27016 -m length --length 1062 -j DROP
果然,我的服务器突然恢复了活力。流量大概是 1000 - 4000 KB/s。
接下来你知道的,他开始发送 12 MB/s 的流量,我应该能够处理,因为我使用的是千兆位,而且我也确实这样做了,因为只有被攻击的服务器瘫痪了(同一台服务器上有 4 台服务器在 4 个不同的 IP 地址上运行,其他服务器都正常)。
我再次运行 tcpdump,结果还是一样。我之前阻止的所有长度为 1062 的攻击?所以我有点卡在这里,不知道该怎么办。
有人能看看我的 tcpdump 文件并告诉我我做错了什么以及如何阻止这次攻击(或不能阻止)吗?我真的会很感激!
我很难用 wireshark 读取它,我一直试图用长度、十六进制代码等来阻止数据包,但都没有成功。
http://www.mediafire.com/download/8xe7cvx33dlgwxx/ddos2.tar.gz
谢谢!
哦,还有一件事,在攻击期间我的 dmesg 输出如下:
[35126.217197] nf_conntrack: table full, dropping packet
[35144.702662] nf_conntrack: table full, dropping packet
[35147.513124] nf_conntrack: table full, dropping packet
我已经尝试过诸如 sysctl -w net.netfilter.nf_conntrack_max=524280 之类的操作,但似乎没有任何区别。
谢谢。
答案1
如果您不打算应用 NAT 或基于状态检测的过滤,那么最好不要使用连接跟踪。您可以使用表NOTRACK
中的目标按数据包禁用连接跟踪raw
。这样应该可以避免table full
您看到的消息。
合适的规则可能如下所示:
-A PREROUTING -p udp --dport 27016 -j NOTRACK
-A OUTPUT -p udp --sport 27016 -j NOTRACK