Ochrana serveru Minecraft Bedrock proti DDoS útokům

Publikováno 23 min čtení

Které porty server Minecraft Bedrock skutečně potřebuje, proč je RakNet nad UDP bez ochrany handshakem obzvlášť zranitelný, jak zabezpečíte query, RCON a paketové rychlosti, a od jaké velikosti útoku pomůže už jen filtrace v síti před serverem.

Server Minecraft Bedrock, který večer na několik minut zmizí ze seznamu serverů a poté se vrátí, má jen zřídka problém s hardwarem. Většinou běží útok, a běží právě ve chvíli, kdy je online nejvíc hráčů. Tento článek ukazuje, jak ochránit server Minecraft Bedrock před DDoS útoky: nejprve to, co si bez dalších nákladů zabezpečíte sami, poté místo, kde tato opatření fyzikálně končí, a nakonec to, co se musí odehrát v síti před serverem.

Všechny údaje se vztahují k serveru Bedrock Dedicated Server, PocketMine-MP nebo Nukkit na Debianu 12, Debianu 13, Ubuntu 22.04 LTS nebo Ubuntu 24.04 LTS. Příkazy jsou psané pro uživatele root, jako běžný uživatel před ně předřaďte sudo. Kdo provozuje Java Edition, najde tam typické protokolové útoky v článku Ochrana Minecraftu proti DDoS a ochrana Nullping. Samotnou instalaci serveru Bedrock popisuje článek Instalace serveru Minecraft Bedrock s Nukkitem.

Pokud útok právě probíhá: Neměňte teď nic v konfiguraci a server nerestartujte. Nejdřív si zajistěte naměřené hodnoty (oddíl „Sbírat naměřené hodnoty, dokud nepraskne“), po útoku už budou nevratně pryč.

Proč jsou servery Minecraft Bedrock tak často cílem DDoS útoků

Bedrock Edition je verze, která běží na konzolích, smartphonech, tabletech a ve Windows, a představuje vůbec největší hráčskou základnu Minecraftu. Kde stojí mnoho serverů, vzniká největší pobídka k útokům: konkurenční sítě, zabanovaní hráči, vnitřní hádky. Útok přitom nestojí toho, kdo ho spustí, ani schopnosti, ani znatelné peníze, serverový booter se prodává v předplatném.

Technický důvod leží hlouběji. Server Bedrock mluví UDP, ne TCP, a odpovídá každému, kdo se zeptá, dávno předtím, než se odehrálo jakékoli přihlášení. Právě tyto dvě vlastnosti dělají z portu 19132 UDP vděčný cíl. Co je DDoS útok obecně, vysvětluje článek Co je DDoS útok?.

RakNet: protokol nad UDP, který odpovídá, než se někdo přihlásil

RakNet je síťová knihovna nad UDP, přes kterou Minecraft Bedrock Edition odbavuje celý svůj herní provoz. UDP nezná navázání spojení, které by server mohl vyžadovat, a adresy odesílatele se proto dají podvrhnout. RakNet nad tím staví vlastní vrstvu spolehlivosti: sekvenční čísla, potvrzení (ACK) a negativní potvrzení (NAK), kterými si klient může vyžádat ztracené pakety znovu.

Navázání spojení se skládá ze sedmi paketů, čtyř od klienta a tří od serveru:

Client  -> Server   Open Connection Request 1
Server  -> Client   Open Connection Reply 1
Client  -> Server   Open Connection Request 2
Server  -> Client   Open Connection Reply 2
Client  -> Server   Connection Request
Server  -> Client   Connection Request Accepted
Client  -> Server   New Incoming Connection

Teprve poté pošle klient přihlašovací paket se svými doklady z Xbox Live. To je rozhodující věta pro každého, kdo chce svůj server Bedrock zabezpečit: Server zpracoval sedm paketů, vynaložil výpočetní čas a paměť a několikrát odpověděl, než vůbec zjistí, kdo to klepe. Každé opatření, které se váže na přihlášení, tedy zabírá teprve poté, co zátěž už vznikla.

K tomu přistupuje druhý, ještě dřívější vstupní bod. Aby se server v seznamu serverů hráče objevil se jménem, verzí a počtem hráčů, odpovídá na Unconnected Ping (ID paketu 0x01) paketem Unconnected Pong (ID paketu 0x1C). Tato výměna se odehrává před vlastním navázáním spojení, nevyžaduje žádný doklad a u serveru Bedrock Dedicated Server ji nelze vypnout, aniž byste server vzali z každého seznamu serverů.

Unconnected Ping jako vektor zesílení: čísla

Zesilující útok (amplifikace) je útok, při kterém útočník posílá malé dotazy s podvrženou adresou odesílatele na cizí servery, aby jejich větší odpovědi skončily u oběti. Server Bedrock při tom není napadán, ale použit. U paketu Unconnected Ping vypadá výpočet takto:

Veličina Hodnota
Unconnected Ping (0x01) 33 bajtů užitečného zatížení: 1 bajt ID paketu, 8 bajtů časová značka, 16 bajtů Magic, 8 bajtů identifikátor klienta
Unconnected Pong (0x1C) 35 bajtů základní kostry plus identifikace serveru jako znakový řetězec
Identifikace serveru ve výchozí konfiguraci zhruba 96 bajtů, odpověď tedy zhruba 131 bajtů
Faktor zesílení na úrovni užitečného zatížení zhruba 4
Horní mez identifikace serveru pole s délkou je 16bitová hodnota, technicky tedy až 65 535 bajtů
Obsah odpovědi edice, jméno serveru, verze protokolu, jméno verze, aktuální a maximální počet hráčů, identifikátor serveru, jméno světa, herní režim, oba porty
Chyba zesílení v RakNetu z roku 2024 dotaz o 52 bajtech vyvolal přes 8 000 odpovědních paketů po 134 bajtech
Faktor této chyby teoreticky až 22 000, v praxi naměřeno zhruba 1 000

Dvě věci z toho plynou bezprostředně. Zaprvé: dlouhé jméno serveru zvětšuje odpověď a tím i faktor zesílení, který dáváte cizím útočníkům k dispozici. Krátké jméno není kosmetika, ale ochranné opatření. Zadruhé: faktor 4 ve výchozí konfiguraci je dost malý, aby váš server zůstal jako reflektor nezajímavý, ale dost velký, aby záplava pingů zatížila vaši vlastní odchozí linku čtyřnásobkem toho, co přichází.

Chyba zesílení z roku 2024 ukazuje, jak zlé to může být, když se zneužije samotná vrstva spolehlivosti. V tehdy používané knihovně RakNet byl paket Connection Request Accepted označený jako spolehlivý. Útočník mohl navázání spojení s podvrženou adresou odesílatele přehrát až do tohoto bodu a poté poslat jediné negativní potvrzení s rozsahem 0 až 8191. Server na to poslal tisíce paketů na podvrženou adresu, aniž by útočník musel dále cokoli dělat. Opraveno to bylo tím, že se paket přepnul na nespolehlivý, že se v paketu Open Connection Reply 1 posílá cookie, které skutečný klient zrcadlí zpět, a že se zavedly limity paketů: 120 paketů na zdrojovou adresu a takt 10 milisekund, 1 000 paketů celkem na takt.

Bedrock Edition nebo Java Edition: co je v ochraně proti DDoS jinak

Kdo už jednou zabezpečoval server Java, přenáší téměř všechno chybně. Obě edice mají společné jméno, ale ne síťový protokol:

Vlastnost Bedrock Edition Java Edition
Přenos UDP přes RakNet TCP
Výchozí port 19132 UDP pro IPv4, 19133 UDP pro IPv6 25565 TCP
Navázání spojení sedm paketů RakNet v aplikaci, bez kryptografické kontroly trojcestný handshake v jádře operačního systému
Adresa odesílatele podvržitelná ano, UDP nevyžaduje navázání spojení ne, trojcestný handshake to znemožňuje
Protiopatření v jádře žádné, UDP nezná SYN cookies SYN cookies, net.ipv4.tcp_syncookies
Autentizace Xbox Live, teprve v přihlašovacím paketu po navázání spojení RakNet účet Microsoft, teprve po navázání spojení TCP
Záznam SRV v DNS není podporovaný, hráči zadávají adresu a port odděleně je podporovaný
Seznam serverů záznam leží v klientu každého hráče, žádný otevřený master server různé veřejné seznamové služby

Řádek o SYN cookies je nejdůležitější. U Java Edition odrazí záplavu SYN jádro Linuxu, aniž by o tom proces Minecraftu cokoli zaznamenal. U Bedrock Edition tato pomoc neexistuje: každý jednotlivý UDP paket je předán až do serverového procesu a tam vyhodnocen. Server Bedrock nemá proti záplavě na portu 19132 žádnou vestavěnou ochranu v operačním systému, protože UDP žádnou nezná.

Řádek o chybějícím záznamu SRV má praktický důsledek, který mnohé překvapí: u Bedrock Edition nemůžete port schovat za záznam DNS. Hráči zadávají adresu a port ručně. Kdo port přesune, musí nový port oznámit každému hráči.

Porty, o které ve skutečnosti jde

Server Bedrock Dedicated Server se váže přesně na dva porty, a to na oba přes UDP. V souboru server.properties:

server-port=19132
server-portv6=19133
enable-lan-visibility=true
online-mode=true
allow-list=false
max-players=10
player-idle-timeout=30
max-threads=8

To jsou výchozí nastavení od Microsoftu, k dohledání v referenci k serveru Bedrock Dedicated Server. Kolem těchto dvou portů leží další služby, které podle serverového softwaru běží spolu s ním:

Port Protokol K čemu slouží Patří do otevřené sítě?
19132 UDP herní provoz Bedrocku přes RakNet, IPv4 (server-port) ano, to je jediný povinný port
19133 UDP herní provoz Bedrocku přes RakNet, IPv6 (server-portv6) jen pokud obsluhujete hráče na IPv6
19132 UDP dotazy GS4 u PocketMine-MP a Nukkitu, stejný port jako hra (enable-query, ve výchozím stavu zapnuto) ne, vypnout
19132 TCP RCON u Nukkitu: rcon.port bez vlastní hodnoty spadne zpět na server-port (enable-rcon, ve výchozím stavu vypnuto) ne, nikdy
19144 TCP debugger skriptů serveru Bedrock Dedicated Server (force-inbound-debug-port) ne
25565 TCP server Java Edition za Geyserem (remote.port) ne, navázat na 127.0.0.1
22 TCP přístup SSH omezit na pevné adresy

Třetí a čtvrtý řádek jsou nejčastější chyby na serverech Bedrock, kterým se dá předejít. U Nukkitu a PocketMine-MP stojí enable-query ze závodu na zapnuto, a u Nukkitu skončí omylem zapnuté RCON na 19132 TCP, tedy na stejném čísle portu jako hra. Kdo se dívá jen po tom, že „19132 je otevřený, to je v pořádku“, to přehlédne.

Sem patří i jedna zvláštnost oficiálního serveru Bedrock Dedicated Server: nezná žádnou direktivu server-ip. PocketMine-MP a Nukkit ji mají (server-ip, u PocketMine navíc server-ipv6), oficiální server nikoli. Naslouchá tedy vždy na všech adresách systému a firewall je vaše jediná možnost, jak to omezit.

Co můžete udělat sami, než utratíte peníze

Tento oddíl je nejdelší, a to záměrně. Čistě nakonfigurovaný server Bedrock ustojí malé a střední útoky vlastními silami, nezávisle na tom, u koho stojí.

1. Inventura: co vlastně naslouchá na portu 19132?

Než napíšete jediné pravidlo, podívejte se, co váš server nabízí navenek. Nehádat, podívat se:

ss -lntup
ss -lnup sport = :19132

Zajímavý je sloupec s lokální adresou. 0.0.0.0:19132 a [::]:19133 znamenají „dosažitelné z celého internetu“. Objeví-li se vedle toho záznam TCP na stejném čísle portu, běží RCON. Pohled útočníka poskytne sken portů zvenčí, u UDP s přepínačem -sU:

nmap -Pn -sU -p 19132,19133 VASE.IP.ADRESA.SERVERU
nmap -Pn -p- --min-rate 1000 VASE.IP.ADRESA.SERVERU

2. Nechat otevřený jen 19132 UDP, všechno ostatní zavřít

Pro server Bedrock stačí jediné uvolnění navenek, dvě s IPv6. S UFW to vypadá takto, a to přesně v tomto pořadí, abyste se sami nevyzamkli:

ufw allow 22/tcp comment 'SSH'
ufw allow 19132/udp comment 'Bedrock IPv4'
ufw allow 19133/udp comment 'Bedrock IPv6'
ufw default deny incoming
ufw default allow outgoing
ufw --force enable
ufw status verbose

Nemáte-li hráče na IPv6, řádek pro 19133 vynechte a u PocketMine-MP navíc nastavte enable-ipv6=false. Každý port, který neuvolníte, je port, který nemusíte hájit. Úplný návod včetně záchranné cesty stojí v článku Jak nastavit firewall UFW, aniž byste se sami vyzamkli.

3. Vypnout viditelnost v LAN, jinak zůstane 19132 otevřený

To je past, do které spadne skoro každý, kdo chce port přesunout. Direktiva enable-lan-visibility stojí ze závodu na true a stará se o to, aby server odpovídal na vyhledávací dotazy v místní síti. Microsoft k tomu výslovně píše, že se server tím navíc váže na výchozí porty 19132 a 19133, i když server-port a server-portv6 mají jiné hodnoty.

Kdo tedy port přesune na 19140 a ukolébá se v bezpečí, naslouchá dál na 19132. Pro server v internetu proto do souboru server.properties patří:

enable-lan-visibility=false

Poté pomocí ss -lnup ověřte, že 19132 skutečně zmizel. Mimochodem totéž nastavení řeší problém, že si dva servery Bedrock na stejném hostiteli navzájem berou port.

4. Vypnout query a RCON

PocketMine-MP a Nukkit přinášejí dotazy GS4, tedy serverový dotaz nad UDP podle vzoru protokolu UT3, a odpovídají na tyto dotazy na stejném portu 19132, na kterém běží hra. Podrobná odpověď obsahuje jméno serveru, verzi, jméno světa, stav whitelistu, adresu a port, počet hráčů, jména všech připojených hráčů a u PocketMine-MP na přání kompletní seznam pluginů. To je praktické pro stavové stránky a Discord boty, prozradí to ale útočníkovi přesně to, kdy se útok vyplatí, a stojí to na každý dotaz výpočetní čas.

enable-query=off
enable-rcon=off

U PocketMine-MP jsou hodnoty false místo off, a seznam pluginů vypnete v souboru pocketmine.yml pomocí settings.query-plugins: false. Zařazení, které se čte zřídka: dotazy GS4 u PocketMine-MP kontrolují token, který je solený adresou odesílatele. Velkou odpověď tedy nelze odrazit na podvrženou adresu. Dotaz přesto stojí výpočetní čas, a zveřejněné údaje pomáhají útočníkovi při výběru cíle. Oficiální Bedrock Dedicated Server nezná ani query, ani RCON, tam tento bod odpadá.

Pokud RCON skutečně potřebujete, nastavte u Nukkitu bezpodmínečně rcon.port na vlastní hodnotu a uvolněte ho jen pro svou vlastní adresu. Návrat na server-port jinak znamená, že vzdálené ovládání vašeho serveru naslouchá na 19132 TCP, tedy na stejném čísle, které jste si tak jako tak všude zapsali jako „otevřené“.

5. Vynutit autentizaci Xbox Live

Autentizace Xbox Live je kontrola, zda připojující se hráč má skutečný účet podepsaný Microsoftem. Ve všech třech serverových softwarech stojí ze závodu na zapnuto a musí tam i zůstat.

U serveru Bedrock Dedicated Server se direktiva jmenuje online-mode, u PocketMine-MP a Nukkitu se jmenuje xbox-auth. V obou případech je true stav ze závodu a správná hodnota:

online-mode=true
xbox-auth=true

Microsoft k tomu formuluje důležité omezení: klienti, kteří se spojují se serverem mimo místní síť, potřebují autentizaci Xbox Live tak jako tak vždy, nezávisle na tomto nastavení. Doklad se přenáší jako podepsaný řetěz tokenů v přihlašovacím paketu, spolu s identifikátorem Xbox (XUID) a zobrazovaným jménem.

A teď část, která pomáhá proti nedorozuměním: Autentizace Xbox Live chrání vaši herní logiku, ne vaši linku. Odehrává se v přihlašovacím paketu, tedy po úplném navázání spojení RakNet. Útočník, který váš server zaplavuje, se vůbec připojit nechce. Jeho pakety jsou odmítnuty, ale přesto dorazily, a právě o to jde.

6. Allowlist a horní mez hráčů, a co nezvládnou

Allowlist (dřív whitelist) je seznam hráčů, kteří se smějí připojit. U serveru Bedrock Dedicated Server ji zapnete pomocí allow-list=true, záznamy stojí v souboru allowlist.json se jménem, XUID a polem ignoresPlayerLimit. U Nukkitu a PocketMine-MP se direktiva dál jmenuje white-list.

allow-list=true
max-players=60
player-idle-timeout=15

Krátká doba nečinnosti přes player-idle-timeout je proti vyčerpání slotů účinná: hráči, kteří jen zabírají místo, vypadnou po uvedeném počtu minut. Hodnota 0 znamená, že nikdo nikdy nebude odpojen kvůli nečinnosti, a právě to využívá útočník, který vám skutečnými účty blokuje místa.

I tady platí mez z předchozího oddílu, a je to vůbec nejčastěji přehlížený bod: allowlist se kontroluje teprve tehdy, když je přihlašovací paket zpracovaný. Zabraňuje připojením, ne paketům.

7. Omezit paketové rychlosti podle zdrojové adresy

Proti malým útokům a nečistým botům pomáhá horní mez podle zdrojové adresy. Pro UDP se pracuje s hashlimit, ne s connlimit, protože UDP nezná spojení:

iptables -I INPUT -p udp --dport 19132 -m hashlimit --hashlimit-name bedrock_udp --hashlimit-mode srcip --hashlimit-above 400/sec --hashlimit-burst 600 -j DROP

Pravidlo zahazuje UDP pakety, jakmile stejná zdrojová adresa posílá trvale více než 400 paketů za sekundu. Hodnota je výchozí bod, ne pravda: plný server s 60 hráči a velkou dohledností vytváří výrazně více paketů než prázdný, a kdo nastaví příliš těsně, vyhazuje vlastní hráče. Měřte nejdřív týden v normálním provozu.

Výrazně přísněji smíte nastavit u paketu Unconnected Ping, protože skutečný klient se ptá na stav serveru jen tak dlouho, dokud je seznam serverů otevřený, a to v sekundovém taktu. S nftables lze zasáhnout právě tento jeden paket, protože ID paketu je první bajt za hlavičkou UDP:

nft add table inet bedrock
nft add chain inet bedrock prerouting '{ type filter hook prerouting priority -150 ; policy accept ; }'
nft add rule inet bedrock prerouting udp dport 19132 @th,64,8 0x01 limit rate over 500/second drop

Výraz @th,64,8 čte osm bitů od 64. bitu transportní hlavičky, tedy první bajt užitečného zatížení UDP. Hodnota 0x01 je ID paketu Unconnected Ping. Totéž místo můžete použít k pozorování, než cokoli začnete zahazovat:

tcpdump -ni eth0 'udp dst port 19132 and udp[8] = 0x01' -c 200 -q
tcpdump -ni eth0 'udp src port 19132 and udp[8] = 0x1c' -c 200 -q

První řádek počítá příchozí stavové dotazy, druhý vaše vlastní odpovědi. Jdou-li obě v sekundovém taktu do tisíců, zatímco téměř nikdo nehraje, vidíte záplavu pingů, a ne své hráče.

Dvě poznámky k trvanlivosti. Samotná pravidla iptables jsou po restartu pryč, na Debianu a Ubuntu se ukládají takto:

apt-get install -y iptables-persistent
netfilter-persistent save

A pod UFW patří taková pravidla do /etc/ufw/before.rules, protože jinak při příštím ufw reload zmizí.

8. Odlehčit sledování spojení v jádře

Úzké hrdlo, které u her nad UDP udeří mnohem dřív než u TCP: jádro zakládá pro každý pár UDP paketů záznam ve sledování spojení. Při záplavě s podvrženými adresami odesílatele je každý paket novou zdrojovou adresou, a tím novým záznamem. Když se tabulka naplní, zahazuje server i legitimní pakety a v logu stojí „nf_conntrack: table full, dropping packet“.

sysctl net.netfilter.nf_conntrack_count net.netfilter.nf_conntrack_max

Stojí-li stav čítače trvale blízko horní meze, můžete herní provoz ze sledování vyjmout. To je účinné, ale ne bez následků, proto v oba směry a s následným testem spojení:

iptables -t raw -I PREROUTING -p udp --dport 19132 -j NOTRACK
iptables -t raw -I OUTPUT -p udp --sport 19132 -j NOTRACK

Poté už pro tento provoz nezabírají pravidla založená na stavu. Vaše uvolnění pro 19132 UDP tedy musí být skutečné uvolnění portu a nesmí se spoléhat na stav ESTABLISHED. Po nastavení zkontrolujte pomocí conntrack -L | grep 19132, že už žádné záznamy nevznikají, a než pravidla trvale uložíte, jednou se do hry připojte.

9. Provozovat Geyser a Floodgate čistě

Geyser je most, který nechá klienty Bedrocku hrát na serveru Java Edition: přijímá na 19132 UDP spojení Bedrocku, překládá protokol a na druhé straně mluví se serverem Java na 25565 TCP. Floodgate je doplněk, který těmto hráčům Bedrocku dovolí připojit se bez účtu Java. Pro ochranu proti DDoS to znamená tři věci.

Zaprvé: Držte Geyser aktuální. Právě tento most byl dvakrát důvodem dokumentovaných útoků. V březnu 2024 byla široce zneužita výše popsaná chyba zesílení v knihovně RakNet, opraveno od buildu 478. V červenci 2025 následoval druhý případ: opakovaně posílaný paket k potvrzení balíčků zdrojů vytvářel několik sezení na hráče a odpojení klienti mohli dál posílat pakety, protože se síťový kanál nezavřel. Opraveno od buildu 897. Oba případy zveřejnil projekt sám i s časovou osou.

Zadruhé: Server Java do otevřené sítě nepatří. V konfiguraci Geyseru ukazuje remote.address na auto, respektive 127.0.0.1, a remote.port na 25565. Navažte server Java odpovídajícím způsobem lokálně a 25565 TCP navenek neuvolňujte. Jinak máte dvě útočné plochy místo jedné, a ta druhá je ta, pro kterou jste si nikdy nerozmysleli pravidla.

Zatřetí: Soubor key.pem je tajemství. Je to klíč, kterým Floodgate přeskakuje autentizaci Java pro účty Bedrocku. Kdo ho vloží do veřejného repozitáře, zkopíruje do ticketu na podporu nebo ukáže na snímku obrazovky, daroval přihlášení na svůj server. Projekt před tím výslovně varuje.

10. Sbírat naměřené hodnoty, dokud nepraskne

Nejdůležitější krok je ten, který skoro nikdo neudělá předem: založit si srovnávací základnu, dokud všechno běží normálně. Bez normální hodnoty nedokážete po incidentu říct, jestli bylo 40 000 paketů za sekundu hodně, nebo jestli to byl prostě sobotní večer. S apt-get install -y vnstat sysstat conntrack běží měření trvale.

sar -n DEV 1 10
ip -s link show eth0
ss -lunp sport = :19132
nstat -az | grep -E 'UdpInDatagrams|UdpNoPorts|UdpInErrors|UdpRcvbufErrors'
dmesg -T | tail -50

Tři z těchto hodnot jsou u serveru Bedrock obzvlášť vypovídající. Trvale od nuly odlišné Recv-Q na UDP socketu portu 19132 znamená, že serverový proces už nestíhá přicházející pakety dost rychle odebírat. UdpRcvbufErrors počítá právě ty pakety, které byly proto zahozeny, a je nejtvrdším důkazem toho, že úzkým hrdlem není linka, ale proces. UdpNoPorts stoupá, když někdo ostřeluje porty, na kterých vůbec nic nenaslouchá, typický obrázek při široce rozprostřeném skenu portů před vlastním útokem.

U tcpdump platí: vždy omezit pomocí -c, záznam při plném zatížení dodatečně zatěžuje už tak přetížený server. Jak naměřené hodnoty vyhodnotit, stojí v článku Jak poznat DDoS útok.

Kde tato opatření končí: šířka pásma a paketová rychlost

Teď část, kterou nevyřeší žádný konfigurační soubor. Všechna dosavadní opatření běží na vašem serveru, tedy na konci linky. Pravidlo firewallu rozhoduje o paketu, který už po kabelu proběhl. Můžete ho zahodit, ale nemůžete ho udělat neodeslaným.

Ukazatel Hodnota
Běžná konektivita herního serveru 1 Gbit/s, to odpovídá 125 megabajtům za sekundu
Pakety, které se při 64 bajtech vejdou do 1 Gbit/s zhruba 1,49 milionu za sekundu
Co z toho zpracuje běžné jádro serveru několik set tisíc paketů za sekundu
Typické útoky proti projektům Minecraftu 5 až 50 Gbit/s
Největší veřejně dokumentovaný útok na síť Minecraftu 2,5 Tbit/s ve třetím čtvrtletí 2022, z botnetu Mirai, smíšené floody UDP a TCP
Odfiltrováno na serverech KernelHost v reálném čase přes 473,4 Gbit/s při více než 41,5 milionu paketů za sekundu na hlasový server
Rovněž odfiltrováno UDP flood s více než 112,2 Gbit/s na herní server

Spočítejte si to jednou. Vaše linka je plná, jakmile někdo pošle více než 125 megabajtů za sekundu. Útok o 5 až 50 Gbit/s leží na pětinásobku až padesátinásobku toho. Jestli je vaše pravidlo hashlimit za tím dobré, pak už nehraje roli, protože pakety vašich hráčů se tam už dřív nedostanou.

Druhou veličinou je paketová rychlost a u serveru Bedrock udeří téměř vždy jako první. Celý herní provoz se skládá z mnoha malých UDP paketů, a přesně v této disciplíně je útočník nejlevnější. Útok, který vaši linku nezaplní ani do jedné třetiny, tedy může váš server přesto položit, protože výpočetní čas odejde na vyhodnocování a zahazování. Provozovatelé to zažívají jako „vytížení přece vůbec nebylo vysoké, a stejně byli všichni venku“. Ve hře se totéž projeví jako lag spiky, gumové efekty a přerušení spojení uprostřed staveb.

Na to neexistuje žádné lokální nastavení. Volumetrické útoky musí skončit v síti před serverem.

Co proti DDoS útokům na servery Bedrock staví KernelHost

Trvalá ochrana, která je na každém serveru v ceně

Ochrana proti DDoS od KernelHost je postavená dvoustupňově a je trvale aktivní, aniž byste museli cokoli zapínat, objednávat nebo konfigurovat:

  • Stupeň 1: 17 Tbps mitigační kapacity v globální scrubbingové síti. Volumetrické útoky se čistí blízko svého zdroje, ještě než vůbec dorazí do datacentra.
  • Stupeň 2: filtrace Arbor v reálném čase s 3,2 Tbps ve Frankfurtu nad Mohanem. Přímo před serverem se rozpoznávají a zahazují vzory specifické pro jednotlivé protokoly, paket po paketu. K tomu patří i vzory UDP na portu 19132, které nevykazují chování RakNetu.

Rozhodující jsou dvě vlastnosti. Ochrana běží trvale a nemusí na útok teprve reagovat, nejsou tedy žádné minuty na začátku, kdy je server pryč. A nepoužívá se nullrouting: vaše IP adresa zůstává v síti, zahazují se jen škodlivé pakety. Kdo IP adresu ze sítě stáhne, dosáhne pro vás stejného výsledku jako útočník. Stanovištěm je Frankfurt nad Mohanem. Které hry a protokoly jsou pokryté, vypisuje článek Ochrana herních serverů proti DDoS v reálném čase.

Advanced DDoS Protection pro trvale ostřelované projekty

Některé projekty nejsou napadány příležitostně, ale cíleně a po celé týdny. Pro ně existuje Advanced DDoS Protection od 50,00 EUR měsíčně, PrePaid a bez minimální doby trvání. Rozdíl neleží ve větší kapacitě, ale v kontrole:

  • Dedikovaná chráněná IP z frankfurtského jádra, na kterou se váš server ve vlastní síti přepne. Na vaší straně není žádná přestavba nutná.
  • Vlastnoručně spravovatelná ochranná pravidla podle portu a protokolu v zákaznické sekci: nastavíte, co je povolené na 19132 UDP, co na 19133 UDP a co na odlišném portu, pokud jste svůj server přesunuli.
  • Změny se projeví v reálném čase, můžete tedy doladit nastavení i během probíhajícího útoku, místo abyste čekali na servisní okno.
  • Ochranný profil odpovídající dané hře. Pro Minecraft existují hotové profily, stejně tak pro upravené a vlastní aplikace na libovolných TCP nebo UDP portech, tedy i pro Nukkit, PocketMine-MP nebo instanci Geyseru na vlastně zvoleném portu.

Srovnání obou stupňů

Vlastnost Zahrnutá trvalá ochrana proti DDoS Advanced DDoS Protection
Cena obsažena v každém serverovém balíčku, bez příplatku od 50,00 EUR měsíčně, PrePaid
Filtrační kapacita 17 Tbps globální scrubbing plus filtrace Arbor v reálném čase s 3,2 Tbps ve Frankfurtu nad Mohanem stejná dvoustupňová filtrace
IP adresa IP adresa vašeho serveru navíc dedikovaná chráněná IP
Sada pravidel automatické profily, žádná konfigurace není nutná vlastní pravidla podle portu a protokolu v zákaznické sekci
Změny probíhají automaticky projeví se v reálném čase, i během útoku
Herní profil optimalizované profily pro běžné hry, Minecraft včetně profil odpovídající hře, i pro upravené aplikace a odlišné porty
Nullrouting ne ne
Doba trvání vázaná na serverový balíček PrePaid, žádná minimální doba trvání, žádná výpovědní lhůta, žádný zřizovací poplatek

Většině projektů Bedrock stačí zahrnutá trvalá ochrana spolu s čistou konfigurací serveru. Advanced DDoS Protection je odpovědí na to, že si to někdo vzal osobně. Kdo svůj server momentálně provozuje jinde, vyřeší problém nejspíš stěhováním: filtrace působí v síti před serverem, a tato síť musí být naše.

Časté chyby a jejich řešení

„Změnil jsem port na 19140, 19132 je přesto otevřený“: To je enable-lan-visibility=true. Bedrock Dedicated Server se pak váže navíc na 19132 a 19133, bez ohledu na to, co stojí v server-port. Nastavit na false, server restartovat, pomocí ss -lnup ověřit.

„Upravil jsem allowlist.json a teď se sám nedostanu dovnitř“: Časté jsou dvě příčiny. V adresáři leží ještě starý soubor whitelist.json, který server čte místo toho, nebo chybí, respektive je špatný záznam XUID. Samotné jméno při aktivní autentizaci Xbox Live spolehlivě nestačí.

„Můj hoster zablokoval můj server, přesto že jsem byl napadený“: Zkontrolujte, zda váš server sám neposílal pakety. Přesně to se stalo při chybě zesílení v RakNetu z roku 2024: zasažené servery posílaly tisíce paketů na cizí adresy a v hlášeních o zneužití stál jako zdroj port 19132. Pomocí tcpdump -ni eth0 'udp src port 19132' -c 200 -q vidíte, kam váš server odpovídá. Aktuální build příčinu odstraní.

„Moje pravidla iptables nezabírají“: Časté jsou tři příčiny. Pravidla stojí až za řetězci UFW a nikdy se na ně nedojde, po posledním restartu byla pryč (pak pomůže netfilter-persistent save nebo záznam v /etc/ufw/before.rules), nebo je útok volumetrický a pravidlo pracuje správně na lince, která je už plná. Zkontrolujte pomocí iptables -L INPUT -n -v, zda stoupají čítače zásahů. Zůstávají-li na nule, pravidlo se nedostane ke slovu.

„Server stojí v seznamu, ale nikdo se nedostane dovnitř“: Pokud záznam ukazuje jméno a počet hráčů, funguje Unconnected Pong, port je tedy v zásadě dosažitelný. Pokud připojení přesto selhává, visí to většinou na přihlášení Xbox Live nebo na allowlistu. Nedostanou-li se naopak dovnitř jen hráči na IPv6, chybí uvolnění pro 19133 UDP.

„Server běží, ale všichni mají lag spiky“: To je častěji plugin než útok. Podívejte se nejdřív, jestli roste Recv-Q na UDP socketu a jestli stoupá UdpRcvbufErrors. Zůstávají-li oba v klidu a je-li sar -n DEV 1 10 nenápadný, nebyl to DDoS útok, ale serverový proces sám. U serveru Bedrock Dedicated Server pak dále pomůžou hlídací psi skriptů, jejichž prahy stojí v souboru server.properties pod script-watchdog-hang-threshold a script-watchdog-slow-threshold.

„Můj dosavadní poskytovatel zablokoval moji IP adresu“: To je nullrouting. Poskytovatel tím chrání vlastní síť, pro vás je výsledek totožný s úspěšným útokem, většinou ještě hodiny poté. V případě pochybností se ptejte, zda se filtruje, nebo nulluje. Odpověď rozhoduje o vaší dostupnosti víc než jakýkoli údaj o hardwaru.

„V tcpdump nevidím nic nápadného“: Když se provoz filtruje už v síti před serverem, na server podle očekávání nic nedorazí. To je při funkční filtraci normální stav. Naopak platí: je-li linka nasycená, nemusí se k vám za určitých okolností dostat ani relace SSH, kterou jste chtěli měřit. Použijte pak VNC konzoli v zákaznické sekci, která funguje nezávisle na síti hostovaného systému.

Stručné shrnutí

  • Server Minecraft Bedrock potřebuje navenek přesně jeden otevřený port: 19132 UDP, k tomu 19133 UDP jen pro hráče na IPv6. Query, RCON, debugger skriptů na 19144 TCP a server Java za Geyserem na 25565 TCP do otevřené sítě nepatří.
  • Kdo port přesune, musí nastavit enable-lan-visibility=false, jinak se Bedrock Dedicated Server navíc dál váže na 19132 a 19133.
  • Autentizace Xbox Live a allowlist zabírají teprve v přihlašovacím paketu, tedy po úplném navázání spojení RakNet. Chrání vaši herní logiku a vaše místa, ne vaši linku.
  • Unconnected Ping se dotazuje 33 bajty a odpovídá se na něj zhruba 131 bajty, tedy s faktorem zesílení asi čtyři. Krátké jméno serveru drží tento faktor malý.
  • U UDP pomáhá hashlimit místo connlimit, a sledování spojení v jádře se při podvržených adresách odesílatele naplní jako první. Obojí byste měli mít naměřené před prvním útokem.
  • Od asi 1 Gbit/s je vaše linka plná a u paketů o velikosti 64 bajtů se tam vejde zhruba 1,49 milionu paketů za sekundu. Nad tím rozhoduje výhradně filtrace v síti před serverem.
  • U KernelHost je dvoustupňová trvalá ochrana obsažena v každém serverovém balíčku, je aktivní od zřízení serveru a bez nullroutingu. Advanced DDoS Protection ji doplňuje o dedikovanou chráněnou IP a vlastnoručně spravovatelná pravidla podle portu.

Běží-li váš projekt už u KernelHost, je filtrace aktivní, aniž byste museli cokoli dělat. Pokud přesto zaznamenáte nesrovnalosti, otevřete ticket na podporu, aby se filtrační pravidla pro vaši IP adresu doladila. Při probíhajícím útoku nás zastihnete navíc přes nouzový chat na WhatsAppu na čísle +43 650 8209883.

Časté dotazy

Můj server Minecraft Bedrock je právě offline. Podle čeho poznám DDoS útok?
Podívejte se na paketovou rychlost, ne na vytížení procesoru. Pomocí sar -n DEV 1 10 uvidíte pakety a bajty za sekundu, pomocí ss -lunp frontu UDP socketu na portu 19132. Trvale od nuly odlišné Recv-Q a stoupající UdpRcvbufErrors z nstat -az znamenají, že serverový proces už přicházející pakety neodebírá. Stoupají-li vstupní pakety daleko nad normální hodnotu, zatímco server sám téměř nepracuje, jde o útok. Zůstávají-li všechny síťové čítače v klidu a přesto všechno seká, leží to na serverovém procesu nebo na nějakém pluginu.
Které porty musím pro server Minecraft Bedrock nechat otevřené?
Přesně jeden: 19132 UDP, nastavený přes server-port v souboru server.properties. Pokud obsluhujete hráče na IPv6, přidá se 19133 UDP přes server-portv6. Všechno ostatní zůstává zavřené. Dotazy GS4 u PocketMine-MP a Nukkitu běží na stejném portu 19132 UDP a vypínají se pomocí enable-query. RCON u Nukkitu bez vlastního rcon.port spadne zpět na 19132 TCP. Debugger skriptů serveru Bedrock Dedicated Server leží na 19144 TCP a server Java Edition za Geyserem patří na 127.0.0.1 s portem 25565.
Proč je Bedrock Edition k DDoS útokům zranitelnější než Java Edition?
Protože mluví UDP. Java Edition běží přes TCP na portu 25565 a jádro Linuxu odrazí záplavu SYN pomocí SYN cookies, aniž by o tom proces Minecraftu cokoli zaznamenal. Bedrock Edition běží přes RakNet na 19132 UDP a UDP nezná ani navázání spojení, které by se dalo vyžadovat, ani SYN cookies. Adresy odesílatele se dají podvrhnout a každý jednotlivý paket je předán až do serverového procesu a tam vyhodnocen. Server Bedrock tedy nemá proti záplavě paketů na portu 19132 žádnou vestavěnou ochranu v operačním systému.
Co je Unconnected Ping a proč je vektorem zesílení?
Unconnected Ping (ID paketu RakNet 0x01) je stavový dotaz, kterým si klient Bedrocku bere jméno, verzi a počet hráčů pro svůj seznam serverů. Server odpovídá paketem Unconnected Pong (ID paketu 0x1C), aniž by se kdokoli přihlásil. Dotaz má 33 bajtů, odpověď se skládá z 35 bajtů základní kostry plus identifikace serveru, ve výchozí konfiguraci tedy zhruba 131 bajtů. To dává faktor zesílení asi čtyři: útočník se může zeptat s podvrženou adresou odesílatele a nechat čtyřnásobný objem dat dopadnout na oběť. Krátké jméno serveru drží tento faktor malý.
Chrání autentizace Xbox Live před DDoS útoky?
Ne, chrání vaši herní logiku, ne vaši linku. Kontrola se odehrává v přihlašovacím paketu a ten klient pošle teprve poté, co je dokončené celé navázání spojení RakNet ze sedmi paketů. Server v tom okamžiku už vynaložil výpočetní čas a paměť a několikrát odpověděl. Nastavení se jmenuje online-mode u serveru Bedrock Dedicated Server a xbox-auth u PocketMine-MP a Nukkitu, všude stojí ze závodu na true a mělo by tam zůstat. Proti záplavě paketů nepomůže, protože útočník se vůbec připojit nechce.
Pomůže allowlist proti DDoS útoku na můj server Bedrock?
Ne. Allowlist působí proti všemu, co používá běžnou cestu připojení: trollům, zabanovaným hráčům, jednorázovým účtům. Kontroluje se ale teprve tehdy, když je přihlašovací paket zpracovaný, tedy po navázání spojení RakNet a po kontrole Xbox Live. Útočník, který váš server zaplavuje, se připojit nechce. Jeho pakety jsou odmítnuty, ale přesto dorazily. Proti vyčerpání slotů naopak působí velmi dobře, spolu s realistickým max-players a s player-idle-timeout, který nestojí na 0.
Změnil jsem port, 19132 je přesto otevřený. Čím to je?
Direktivou enable-lan-visibility v souboru server.properties, která stojí ze závodu na true. Microsoft výslovně dokumentuje, že se Bedrock Dedicated Server tím navíc váže na výchozí porty 19132 a 19133, i když server-port a server-portv6 mají jiné hodnoty. Nastavte direktivu na false, server restartujte a pomocí ss -lnup zkontrolujte, že 19132 skutečně zmizel. Totéž nastavení řeší i konflikt portů, když na stejném hostiteli běží dva servery Bedrock.
Na co musím dát pozor u Geyseru a Floodgate?
Na tři věci. Držte Geyser aktuální: v březnu 2024 byla široce zneužita chyba zesílení v použité knihovně RakNet, opraveno od buildu 478, v červenci 2025 následoval druhý případ kolem dvakrát posílaných paketů v raném navázání spojení, opraveno od buildu 897. Navažte server Java Edition lokálně, protože remote.address a remote.port ukazují na 127.0.0.1 s portem 25565, a 25565 TCP navenek neuvolňujte. A se souborem key.pem zacházejte jako s tajemstvím: je to klíč, kterým Floodgate přeskakuje autentizaci Java pro účty Bedrocku.
Od jaké velikosti útoku to můj server nezvládne sám?
Typický herní server visí na 1 Gbit/s, to odpovídá 125 megabajtům za sekundu. Útoky proti projektům Minecraftu leží obvykle mezi 5 a 50 Gbit/s, tedy na pětinásobku až padesátinásobku vaší linky. Stejně důležitá je paketová rychlost: do 1 Gbit/s se u paketů o velikosti 64 bajtů vejde zhruba 1,49 milionu paketů za sekundu, běžné jádro serveru jich zpracuje jen několik set tisíc. U serveru Bedrock udeří téměř vždy jako první paketová rychlost, protože celý herní provoz se skládá z mnoha malých UDP paketů.
Jde můj server Bedrock u KernelHost během útoku offline?
Ne. Nepoužívá se nullrouting. Vaše IP adresa zůstává v síti, zahazují se jen škodlivé pakety. Ochrana je postavená dvoustupňově: 17 Tbps mitigační kapacity v globální scrubbingové síti a filtrace Arbor v reálném čase s 3,2 Tbps ve Frankfurtu nad Mohanem. Běží trvale a nemusí na útok teprve reagovat, nejsou tedy žádné minuty na začátku, kdy server mizí ze seznamu serverů vašich hráčů.
Stojí ochrana proti DDoS u KernelHost něco navíc a kdy potřebuji Advanced DDoS Protection?
Dvoustupňová trvalá ochrana je obsažena v každém serverovém balíčku bez příplatku a je aktivní od zřízení serveru, nemusíte ji objednávat, zapínat ani konfigurovat. Advanced DDoS Protection potřebujete, když váš projekt není napadaný příležitostně, ale cíleně a po celé týdny, a chcete filtraci řídit sami. Dostanete dedikovanou chráněnou IP a ochranná pravidla podle portu a protokolu spravujete sami v zákaznické sekci, tedy odděleně pro 19132 UDP a každý odlišný port. Změny se projeví v reálném čase. Cena začíná na 50,00 EUR měsíčně, PrePaid, bez minimální doby trvání a bez zřizovacího poplatku.

Minecraft Bedrock Ochrana Minecraft Bedrock proti DDoS Ochrana herních serverů RakNet Port 19132 Geyser Advanced DDoS Protection Filtrace v reálném čase