同Project Nazca搞防DDoS經驗

背景

是咁的,香港有個比較出名既鐵路向Minecraft server叫Project Nazca (PNS) , 樹大招風,最近呢個禮拜狂被人DDoS。

作為過來人,我前兩日出手嘗試幫下佢地。

關於DDoS攻擊

針對Minecraft server既DDoS攻擊黎黎去去都係L3/L4攻擊,絕少係L7 (除非舊版Minecraft),因為可以用防火牆block到。L3/L4攻擊之中,UDP Flood (NTP/DNS等 Amplication) 最常被用都最係實用。

要避免直接受到UDP攻擊,需要技術;而要減低攻擊影響,需要大量的金錢(頻寬)。

難題

PNS行Minecraft server既OS係Windows,叫人無啦啦裝Linux(好多方面)應該難過登天。佢地亦要知玩家IP,唔可以全部127.0.0.1。GRE + CF WST大法因此直接收皮,唔可以係佢地Server行到。

解決方法

BungeeCord係一個Minecraft server既proxy/多伺服管理程式,配合埋Spigot用,可以做到IP forwarding (差唔多等同L7 transparent proxy)。因此,我既propose係有兩條路:

用GRE Tunnel既: 玩家 <-> GRE Server <-> BungeeCord Server <-> PNS

同埋用CloudFlare + Websocket + WSTunnel做後備既玩家 (WSTClient) <-> CloudFlare <-> BungeeCord Server <-> PNS

當中GRE Server同BungeeCord Server都係我黎提供,全部Server都係香港Server,咁既話可以做到:

  • 隱藏IP (教埋佢地點set CloudFlare DNS同轉IP)
  • 防DDoS (攻擊者唔會搵到PNS IP,亦唔會搵到BungeeCord Server IP)
  • 保持低Ping
  • 睇到玩家IP
  • 就算攻擊者惡到ko晒所有GRE Server,玩家仲有後路入Ser玩

奶野

BungeeCord要求Minecraft server熄online mode,但PNS admin話佢地之前試過熄過online mode一次,玩家物品唔見晒 (我諗係UUID搞事)。

收皮

垃圾Windows唔support呢樣(GRE)唔support果樣(IP_TRANSPARENT),令成個計劃失敗。

要到PNS肯將成個Minecraft server搬落VM Linux or baremetal Linux先得。當然BSD既話我都可以睇下點搞。

將玩家連線倒落Linux VM,Minecraft server同VM一齊玩SNAT DNAT,令server可以睇返玩家IP,唔知得唔得呢?我冇咁得閒研究啦。

Extra read

Recommendations

Last modified: 2016-12-29 18:59:31
Powered by Simple Blog