Ochrana serveru Minecraft Bedrock proti DDoS útokům
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á
hashlimitmístoconnlimit, 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?
Které porty musím pro server Minecraft Bedrock nechat otevřené?
Proč je Bedrock Edition k DDoS útokům zranitelnější než Java Edition?
Co je Unconnected Ping a proč je vektorem zesílení?
Chrání autentizace Xbox Live před DDoS útoky?
Pomůže allowlist proti DDoS útoku na můj server Bedrock?
Změnil jsem port, 19132 je přesto otevřený. Čím to je?
Na co musím dát pozor u Geyseru a Floodgate?
Od jaké velikosti útoku to můj server nezvládne sám?
Jde můj server Bedrock u KernelHost během útoku offline?
Stojí ochrana proti DDoS u KernelHost něco navíc a kdy potřebuji Advanced DDoS Protection?
2026 KernelHost GmbH. Všechna práva vyhrazena. Tento návod je chráněn autorským právem. Jeho zveřejnění na jiných webech, a to i po částech nebo v upravené podobě, není bez našeho písemného souhlasu dovoleno. Citace s uvedením zdroje a odkazem jsou výslovně vítány.

