Ochrana serveru Unturned před DDoS útoky
Které porty server Unturned skutečně potřebuje, proč je 27017 od roku 2021 zbytečný, jak omezit záplavu dotazů, záplavu připojení a zátěž z pluginů, a od jaké velikosti útoku pomůže už jen filtrace v síti před serverem.
Server Unturned, který večer na několik minut zmizí ze seznamu serverů a přitom vyhodí všechny hráče s vypršením časového limitu, má jen zřídka problém s hardwarem. Většinou běží útok, a to přesně ve chvíli, kdy je na serveru nejvíc hráčů. Tento článek nejprve ukazuje, co si můžete bez dalších nákladů zabezpečit sami, poté, kde tato opatření technicky končí, a nakonec, co se musí odehrát v síti před serverem.
Všechny údaje se vztahují k dedikovanému serveru Unturned (U3DS, aplikace SteamCMD 1110390) 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. Pokud útok právě probíhá, neměňte zatím nic v konfiguraci a server nerestartujte: nejdřív si zajistěte naměřené hodnoty (oddíl 10), po útoku už budou pryč.
Proč jsou napadány právě servery Unturned
Servery Unturned jsou napadány proto, že jejich adresa je veřejná, herní provoz jde přes UDP a útok nestojí toho, kdo ho spustí, ani schopnosti, ani znatelné peníze. Všechny tři body zde platí silněji než u většiny ostatních her.
Veřejný server Unturned zveřejňuje svou IP adresu sám od sebe. Musí to udělat, jinak by ho nikdo nenašel: prohlížeč serverů ve Steamu se ho ptá přímo a seznamy třetích stran jako unturned-servers.net nebo BattleMetrics vedou IP adresu i port v otevřeném textu. unturned-servers.net podle vlastního údaje každých pět minut kontroluje, zda server na serverovém portu přijímá UDP spojení. Pro útočníka to není námaha, ale formulář.
K tomu přistupuje hráčská základna. Unturned je zdarma, vstupní překážka je nulová a mezi roleplay a survival projekty existuje skutečná konkurence o tytéž hráče. Zabanovaný hráč, dotčený bývalý administrátor nebo sousední projekt nepotřebují přístup k vašemu serveru, aby ho na hodinu udělali nepoužitelným. Co je DDoS útok technicky a proč ho podvržené adresy odesílatele činí tak obtížně dohledatelným, vysvětluje článek Co je DDoS útok?.
Porty, o které ve skutečnosti jde
Server Unturned zabírá přesně dva po sobě jdoucí UDP porty: hodnotu nastavenou v Commands.dat a tuto hodnotu plus jedna. Ve výchozím nastavení jsou to 27015 a 27016. Oficiální dokumentace studia Smartly Dressed Games popisuje rozdělení takto: první port nese dotazy ze seznamu serverů, druhý herní provoz. Nastavuje se jen první, druhý z něj vyplývá automaticky.
Name Muj server Unturned
Port 27015
MaxPlayers 24
Map PEI
Mode Normal
Perspective Both
Owner 76561198000000000
Soubor Commands.dat leží v U3DS/Servers/<instance>/Server/Commands.dat. Jeho formát je svérázný a bývá častým zdrojem chyb: jeden příkaz na řádek, žádné rovnítko, hodnota oddělená mezerou, a příkazy rozlišují velká a malá písmena. Řádky, které začínají na //, jsou komentáře.
Nejdůležitější bod pro firewall zní: port 27017 už není od verze 3.21.30.0 z 21. listopadu 2021 potřeba. Předtím vyžadoval server Unturned tři porty, protože dotaz Steamu ležel na portu plus dva. Touto aktualizací se dotaz dělí o port se samotným serverem a třetí port odpadl. Návody k routerům, wiki hostingů a příspěvky na fórech přesto 27017 uvádějí až dodnes. Otevřený 27017 vám už žádnou výhodu nepřinese, je to čistě jen útočná plocha.
Stejně důležité: Unturned nemá vestavěný RCON port. Oficiální dokumentace zná jen vstup a výstup konzole, které se dají nahradit přes rozhraní ICommandInputOutput. Každá vzdálená správa, kterou na serveru Unturned uvidíte, pochází z pluginu a přináší si vlastní TCP port. Tento port si musíte najít a omezit sami, protože ho za vás nikdo nezabezpečil.
| Ukazatel | Hodnota (výchozí nastavení) | Protokol | Kde se nastavuje |
|---|---|---|---|
| Dotazovací port (Steam A2S, seznam serverů) | 27015 | UDP | Port v Commands.dat |
| Herní port | 27016 (port plus jedna) | UDP | nelze nastavit samostatně |
| Třetí port 27017 | odpadá od 3.21.30.0 (21. 11. 2021) | žádný | zavřít |
| Druhý server na stejném stroji | 27017, třetí 27019 | UDP | Port, odstup dva |
| RCON | žádný vestavěný port | TCP jen přes plugin | konfigurace pluginu |
| Vazebná adresa | všechna rozhraní | žádný | Bind v Commands.dat |
| Pakety na hráče a sekundu | 50,0 | UDP | Max_Packets_Per_Second |
| Maximální povolený ping | 750 ms | žádný | Max_Ping_Milliseconds |
| Rychlost připojování na časové okno | 10 pokusů za 40,0 sekundy | žádný | Rate_Limit_Kick_Threshold |
| Čekací fronta | 8 míst, nejvýše 64 | žádný | Queue_Size v Commands.dat |
| Anti-cheat | VAC a BattlEye, oba aktivní | žádný | VAC_Secure, BattlEye_Secure |
| Faktor zesílení dotazu Steamu | 5,5 (US-CERT TA14-017A) | UDP | vlastnost protokolu |
| Normální příchozí paketová rychlost při 24 hráčích | zhruba 1 200 paketů za sekundu | UDP | 24 krát 50 |
| Nasycení linky 1 Gbit/s | 125 MB/s, zhruba 1,49 milionu paketů za sekundu při 64 bajtech | žádný | fyzika linky |
| Útoky odfiltrované na serverech KernelHost | 473,4 Gbit/s při 41,5 milionu paketů za sekundu; UDP flood se 112,2 Gbit/s | UDP | naměřené hodnoty z provozu |
Co můžete udělat sami, než utratíte peníze
Tento oddíl je nejdelší, a to záměrně. Čistě nakonfigurovaný server Unturned ustojí malé a střední útoky vlastními silami, nezávisle na tom, u koho stojí.
1. Inventura: co skutečně naslouchá?
Než napíšete jediné pravidlo, podívejte se, co váš server nabízí navenek. Nehádat, podívat se:
ss -lnup
ss -lntp
První příkaz ukáže naslouchající UDP sockety, druhý TCP sockety. Zajímavý je sloupec s lokální adresou. 0.0.0.0:27015 a [::]:27015 znamenají „dosažitelné z celého internetu“, 127.0.0.1:3306 znamená „jen lokálně“ a nepotřebuje žádné pravidlo firewallu. Vedle hry se tam často najde plugin pro RCON, webový panel, databáze a starý testovací server na 27017, který už nikdo nepoužívá. Pohled útočníka poskytne sken portů zvenčí, u Unturned výslovně s UDP:
nmap -Pn -sU -p 27000-27050 VASE.IP.ADRESA.SERVERU
nmap -Pn -p- --min-rate 1000 VASE.IP.ADRESA.SERVERU
2. Nechat otevřené jen 27015 a 27016
Pro Unturned stačí dvě UDP povolení navenek. Pro samotnou hru není potřeba jediný TCP port: oficiální dokumentace výslovně vyžaduje u obou portů UDP a síťová vrstva hry (Steam Networking Sockets, od jedné aktualizace výchozí nastavení) pracuje výhradně přes UDP. Kdo navíc povolí TCP, řídí se zastaralým návodem.
ufw allow 22/tcp comment 'SSH'
ufw allow 27015/udp comment 'Unturned dotazy'
ufw allow 27016/udp comment 'Unturned hra'
ufw default deny incoming
ufw default allow outgoing
ufw --force enable
ufw status verbose
Pořadí je důležité, jinak se sami vyzamknete. Úplný návod včetně záchranné cesty najdete v článku Jak nastavit firewall UFW, aniž byste se sami vyzamkli. Pokud provozujete několik instancí, držte doporučený odstup dva (27015, 27017, 27019) a pro každou instanci povolte přesně ty dva porty, které skutečně zabírá.
Webový panel, databáze nebo plugin pro RCON do otevřené sítě nepatří. Příslušný port omezte pomocí ufw allow from 203.0.113.10 to any port 8080 proto tcp na svou vlastní adresu, nebo se k rozhraní dostaňte přes lokální přesměrování SSH pomocí ssh -N -L 8080:127.0.0.1:8080 root@VASE.IP.ADRESA.SERVERU. Databáze se váže na 127.0.0.1.
3. Zabezpečit dotazovací port, aniž byste vypadli ze seznamu serverů
Dotazovací port je nejcitlivější místo serveru Unturned. Přes něj server odpovídá na dotazy Steamu A2S_INFO, A2S_PLAYERS a A2S_RULES. Když ho zablokujete úplně, zmizí server z každého seznamu serverů, i když běží bezvadně.
Odpověď A2S je výrazně větší než dotaz. US-CERT vede protokol Steamu ve svém přehledu zesilovacích útoků přes UDP (TA14-017A) s faktorem zesílení šířky pásma 5,5. Konkrétně to znamená: útočník posílá dotazy s podvrženou adresou odesílatele na cizí herní servery a zhruba pětapůlkrát větší odpovědi směruje na svůj skutečný cíl. Váš server pak není obětí, ale zesilovačem proti třetí straně. V opačném směru stačí záplava dotazů, aby server zmizel z prohlížeče serverů, aniž by vypadl jediný hráč. Provozovatelé hlásí přesně to: server běží, hráči na něm nic nepozorují, ale nedá se najít.
Proti malým záplavám dotazů pomáhá horní mez podle zdrojové adresy. Legitimní dotazy přicházejí zřídka: prohlížeč Steamu se ptá jednou na zobrazení, stavové služby každých několik minut.
iptables -I INPUT -p udp --dport 27015 -m hashlimit --hashlimit-name unturned_query --hashlimit-mode srcip --hashlimit-above 10/sec --hashlimit-burst 20 -j DROP
iptables -I INPUT -p udp --dport 27016 -m hashlimit --hashlimit-name unturned_game --hashlimit-mode srcip --hashlimit-above 300/sec --hashlimit-burst 500 -j DROP
Druhé číslo se odvozuje přímo ze hry: Unturned omezuje jednoho hráče ve výchozím nastavení na 50 paketů za sekundu (Max_Packets_Per_Second). 300 paketů za sekundu a zdrojovou adresu tedy nechává jedné přípojce dost prostoru, i když za stejnou adresou sedí několik hráčů. Obě hodnoty jsou výchozí hodnoty, ne pravdy. Měřte nejdřív týden v normálním provozu, jinak vyhodíte vlastní hráče.
Samotná pravidla iptables jsou po restartu pryč. Na Debianu a Ubuntu se ukládají pomocí apt-get install -y iptables-persistent a netfilter-persistent save. Pod UFW patří taková pravidla do /etc/ufw/before.rules, protože jinak při příštím ufw reload zmizí.
K tomu přistupuje zvyk, který nic nestojí: pokud vaše webová stránka nebo váš bot na Discordu ukazuje počet hráčů, nedotazujte se serveru ze strany návštěvníka, ale výsledek si v pevných intervalech ukládejte do mezipaměti. Hojně navštěvovaná stavová stránka jinak vytvoří jeden dotaz na návštěvníka místo jednoho na interval.
4. Nastavit vestavěné limity v souboru Config.json
Unturned přináší v souboru Config.json ve stejném adresáři Server jako Commands.dat oddíl, který je pro obranu důležitější, než by jeho název naznačoval. Výchozí nastavení zní:
"Server": {
"VAC_Secure": true,
"BattlEye_Secure": true,
"Max_Ping_Milliseconds": 750,
"Timeout_Queue_Seconds": 15.0,
"Timeout_Game_Seconds": 30.0,
"Max_Packets_Per_Second": 50.0,
"Join_Rate_Limit_Window_Seconds": 40.0,
"Rate_Limit_Kick_Threshold": 10,
"Use_FakeIP": false
}
Max_Packets_Per_Second omezuje připojeného hráče na 50 paketů za sekundu. Join_Rate_Limit_Window_Seconds a Rate_Limit_Kick_Threshold vyhodí spojení, které během 40 sekund překročí mez více než desetkrát. VAC_Secure a BattlEye_Secure vyžadují na straně hráče oba anti-cheat systémy a drží tím většinu jednorázových klientů mimo.
Jedno přitom musí být jasné: tyto limity působí proti klientům, kteří se skutečně připojí nebo se o to pokoušejí. Proti záplavě s podvrženými adresami odesílatele nepůsobí, protože tam žádné spojení nikdy nevznikne. Přesto jsou důležité, protože zachytí nejčastější jednotlivý případ: jediného upraveného klienta, který server přetíží sám. Ponechat Max_Ping_Milliseconds na 750 má smysl, při nižším nastavení vyhodí server při každém krátkém zakolísání sítě půl kola.
5. Odlehčit sledování spojení
Tento bod se téměř vždy přehlíží a vysvětluje výpadky, které vypadají jako volumetrický útok, ale žádný to není. Jádro zakládá záznamy ve sledování spojení (conntrack) i pro UDP provoz, a u podvržených adres odesílatele znamená každá nová adresa nový záznam. Když se tabulka naplní, zahazuje jádro pakety bez rozdílu: útok a vaši hráči vypadnou společně. V systémovém logu pak stojí nf_conntrack: table full, dropping packet.
sysctl net.netfilter.nf_conntrack_count net.netfilter.nf_conntrack_max
dmesg -T | grep -i conntrack
Nejúčinnější krok je nenechat provoz Unturned vůbec sledovat. Hra si svá spojení spravuje sama a nepotřebuje sledování stavu v jádře:
iptables -t raw -A PREROUTING -p udp --dport 27015 -j NOTRACK
iptables -t raw -A PREROUTING -p udp --dport 27016 -j NOTRACK
Dejte pozor na to, že vaše povolení pro tyto dva porty pak už nesmějí jít přes ESTABLISHED,RELATED, ale musí stát jako vlastní pravidla pro přijetí. Teprve potom se vyplatí zvýšit nf_conntrack_max. Kdo nejprve zvětší tabulku, odloží problém jen o minuty a spotřebuje na to operační paměť.
Pokud pakety přicházejí rychleji, než je serverový proces vybírá, přetéká navíc přijímací vyrovnávací paměť socketu. Pro hráče to vypadá jako ztráta paketů, přestože je linka volná:
net.core.rmem_max = 16777216
net.core.rmem_default = 1048576
net.core.netdev_max_backlog = 16384
Hodnoty uložte do /etc/sysctl.d/ a aktivujte je příkazem sysctl --system. Zda jsou potřeba, prozradí jádro: stoupá-li UdpRcvbufErrors v nstat -az nebo stojí-li v ss -lunp trvale něco v přijímací frontě, pak zabírají. Zůstávají-li obě na nule, úprava nic nezmění. To je rezerva, ne ochrana.
6. Záplava připojení, čekací fronta a whitelist
Záplava připojení je útok, při kterém útočník využívá běžnou cestu připojení, aby spotřeboval sloty a výpočetní čas, místo aby plnil linku. Unturned proti tomu přináší čtyři nástroje, které všechny stojí v Commands.dat:
Queue_Size 32nastavuje čekací frontu. Ve výchozím stavu je to 8 míst, maximum je 64. Příliš velká fronta pomáhá útočníkovi, příliš malá vyhodí skutečné hráče při každém restartu.Whitelistedpřepne server na seznam povolených hráčů. Zapisuje se přes konzoli příkazempermit <SteamID64>, odebírá příkazemunpermit <SteamID64>.Password VaseHeslovylučuje všechny, kdo mají adresu jen ze seznamu.Filterodmítá hráče s nepřípustnými znaky ve jménu,MaxPlayers 24drží počet slotů na tom, co hardware skutečně unese.
Whitelist chrání vaši herní logiku, ne vaši linku. Útočník, který váš server zaplavuje, se vůbec nechce připojit. Jeho pakety budou odmítnuty, ale přesto dorazily, a právě o to jde.
7. RocketMod, OpenMod a pluginy
Unturned má dvě rozšířené platformy pro pluginy a obě běží ve stejném procesu jako server. RocketMod je starší: původní správci ukončili jeho údržbu 20. prosince 2019 a zdrojový kód uvolnili pod licencí MIT. Smartly Dressed Games od té doby spravuje odnož Legally Distinct Missile (LDM), která se s dedikovaným serverem už dodává: Rocket.Unturned se zkopíruje z adresáře Extras do adresáře Modules. Vývojáři odnož výslovně doporučují, protože opravuje staré problémy Rocketu, jako jsou chyby ve vláknech a teleportační exploity.
OpenMod je novější následovník, vyvíjený jedním z původních správců Rocketu. RocketMod nenahrazuje, ale běží vedle něj a stávající Rocket pluginy dokáže přes integraci používat spolu s ním. Pro obranu to znamená dvě věci.
Zaprvé: každý plugin je útočná plocha v hlavním procesu. Plugin, který při každé zprávě v chatu nebo při každé herní události spustí databázový dotaz, je vlastnoručně postavený Denial of Service. Jediný hráč, který událost vyvolá ve smyčce, pak server položí bez jakékoli šířky pásma. Držte seznam pluginů krátký, dávejte přednost pluginům s otevřeným zdrojovým kódem a po každém rozšíření měřte snímkovou frekvenci serveru.
Zadruhé: protože Unturned nemá vlastní RCON port, pochází každá vzdálená správa z pluginu. Po instalaci zkontrolujte příkazem ss -lntp, který TCP port otevřel, a omezte ho na svou vlastní adresu. Otevřený port pro vzdálenou správu se slabým heslem není problém DDoS, ale problém převzetí serveru.
8. Obsah z Workshopu a průběh připojení
Obsah z Workshopu činí připojení drahým, a to se přímo odráží na zranitelnosti. Řídí se to přes WorkshopDownloadConfig.json ve stejném adresáři Server:
{
"File_IDs": [],
"Ignore_Children_File_IDs": [],
"Query_Cache_Max_Age_Seconds": 600,
"Max_Query_Retries": 2,
"Use_Cached_Downloads": true,
"Should_Monitor_Updates": true,
"Shutdown_Update_Detected_Timer": 600
}
V File_IDs stojí identifikátory map a modů z Workshopu. Při startu je server včetně závislostí stáhne a každý hráč si je při připojení automaticky dotáhne. Tři důsledky byste měli znát. Zaprvé trvá připojení u velkých seznamů modů dlouho a po útoku se všichni hráči vracejí současně, což server zatíží podruhé. Zadruhé zastaví Should_Monitor_Updates server, jakmile se aktualizuje nějaký soubor z Workshopu: výchozí Shutdown_Update_Detected_Timer o 600 sekundách pak vede k restartu, který provozovatelé v případě útoku pravidelně považují za úspěch útočníka. Zatřetí je každý mod cizí kód na vašem serveru.
Prakticky to znamená: držte seznam tak krátký, jak je to možné, po každém neočekávaném restartu zkontrolujte nejdřív v logu serveru hlášku o aktualizaci z Workshopu, a Should_Monitor_Updates vypněte jen tehdy, když si aktualizace plánujete sami.
9. Seznam serverů, kód serveru a funkce Fake IP
Vaši IP adresu nelze udržet v tajnosti, dokud je server veřejně uvedený v seznamech. Zná ji každý hráč, který se jednou připojil, a seznamy třetích stran ji zveřejňují tak jako tak. Dvě zvyklosti přesto pomohou: nezveřejňujte surovou adresu nikde sami a připojujte své hráče přes název hostitele, aby změna adresy nerozbila každý odkaz. Klasikou je zapomenutý záznam A na starou adresu, který každou změnu zbaví účinku.
Pro provoz na internetu tak jako tak potřebujete Game Server Login Token (GSLT) ze správy serverů ve Steamu pro identifikátor aplikace 304930. Navíc zajišťuje, že kód serveru zůstane přes restarty stejný, místo aby se při každém startu generoval nově.
Unturned kromě toho nabízí funkci Fake IP. Zapíná se pomocí "Use_FakeIP": true v Config.json a příkaz konzole CopyFakeIP vrátí adresu, kterou pak zveřejníte. Provoz poté jde přes přenosovou síť Steam Datagram Relay, přidělené adresy leží v rozsahu 169.254.0.0 až 169.254.255.255 a skutečná adresa serveru se hráčům už neukazuje. Valve popisuje tento provoz jako ověřený, šifrovaný a omezený v rychlosti.
Cena za to je vysoká a málokdy se zmiňuje: adresa a port se mění při každém restartu, doménové jméno na ni bez vlastních skriptů nenamíříte, a seznamy Steamu „Oblíbené“ a „Historie“ s ní nefungují, funguje jen funkce záložek. Především ale chrání tato funkce jen herní cestu. Váš server si svou skutečnou adresu ponechá a SSH, webový panel, databáze a webová stránka na ní zůstávají dostupné. Kdo adresu zná ze starého záznamu DNS, ze stavové stránky nebo z dřívějšího spojení, útočí na ni dál přímo. Funkce Fake IP tedy nenahrazuje filtraci v síti před serverem, jen zmenšuje počet lidí, kteří vaši adresu vůbec znají.
10. Logování, abyste během útoku nemuseli hádat
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ě pátek večer. S apt-get install -y vnstat sysstat běží měření trvale. Během incidentu stačí čtyři příkazy:
sar -n DEV 1 10
ip -s link show eth0
dmesg -T | tail -50
tcpdump -ni eth0 udp portrange 27015-27016 -c 200 -q
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 a odlišit útok od softwarové chyby, stojí v článku Jak poznat DDoS útok.
Kde tato opatření končí
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.
Spočítejte si to jednou. Typický herní server visí na 1 Gbit/s, to je 125 megabajtů za sekundu, a linka je plná, jakmile někdo pošle více. Normální provoz zůstává hluboko pod tím: při 24 hráčích a 50 paketech na hráče a sekundu povolených ve výchozím nastavení přichází zhruba 1 200 paketů za sekundu. Služba typu booter vytvoří bez jakékoli přípravy mnohonásobek.
Druhou veličinou je paketová rychlost a ta udeří téměř vždy dřív než šířka pásma. U malých paketů o velikosti 64 bajtů se do linky s 1 Gbit/s vejde zhruba 1,49 milionu paketů za sekundu. Běžné jádro serveru jich podle procesoru a síťové karty zpracuje několik set tisíc, než začne zahazovat. Útok, který vaši linku nenaplní ani z jedné třetiny, tedy může váš server i tak položit, protože výpočetní čas padne na zahazování. Provozovatelé to zažívají jako „vytížení přece vůbec nebylo vysoké, a stejně bylo všechno pryč“.
Pro zařazení do souvislostí, jaké řádové hodnoty se reálně vyskytují: na serverech KernelHost byl mimo jiné odfiltrován útok o více než 473,4 Gbit/s při více než 41,5 milionu paketů za sekundu na hlasový server a UDP flood o více než 112,2 Gbit/s na herní server. Na to neexistuje žádné lokální nastavení. Volumetrické útoky musí skončit v síti před serverem.
Co proti tomu staví KernelHost
Trvalá ochrana, která je v ceně každého serveru
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ž 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.
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. Lokalita 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 celé týdny. Pro ty existuje Advanced DDoS Protection od 50,00 EUR měsíčně, PrePaid, bez minimální doby trvání a bez zřizovacího poplatku. 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 odděleně, co je povolené na 27015 UDP (dotazy) a co na 27016 UDP (herní provoz), aniž byste k tomu museli psát ticket.
- Změny se projeví v reálném čase, můžete tedy doladit nastavení i během probíhajícího útoku, například dotazy sevřít těsněji a herní provoz nechat nedotčený.
- Ochranný profil odpovídající dané hře, stejně tak pro upravené a vlastní aplikace na libovolných TCP nebo UDP portech, tedy i pro plugin s vlastním portem.
Oba stupně ve srovnání
| 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, včetně Unturned | profil odpovídající hře, i pro upravené aplikace |
| 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ů Unturned stačí zahrnutá trvalá ochrana spolu s čistou konfigurací serveru. Advanced DDoS Protection je odpovědí na to, že si to někdo vzal osobně.
Časté chyby a jejich řešení
„Můj návod říká, že musím povolit 27015 až 27017“: Ten návod je starší než listopad 2021. Od verze 3.21.30.0 potřebuje server Unturned už jen dva porty, protože dotaz Steamu neleží na portu plus dva. Zavřete 27017, ledaže by tam běžela druhá instance.
„Server běží, ale nestojí už v žádném seznamu serverů“: To je typický obraz záplavy dotazů nebo příliš ostrého vlastního pravidla na 27015 UDP. Zkontrolujte pomocí iptables -L INPUT -n -v, zda vaše vlastní pravidlo počítá zásahy. Pokud čítače prudce stoupají, filtrujete právě vlastní záznamy v seznamech. Nikdy 27015 neblokujte úplně.
„Všichni hráči vypadnou naráz s vypršením časového limitu“: Nejdřív se podívejte, jestli nepřeteklo sledování spojení (dmesg -T | grep -i conntrack). Je-li tabulka plná, zahazuje jádro bez rozdílu. Timeout_Game_Seconds stojí ve výchozím nastavení na 30 sekundách: kdo se v této době vrátí, ponechá si své místo.
„Server se restartuje uprostřed provozu“: To je zřídka útok. Zkontrolujte v logu hlášku o rozpoznané aktualizaci z Workshopu. Should_Monitor_Updates server po výchozí době 600 sekund vypne.
„Změnil jsem IP adresu a o dvě hodiny později jsem byl znovu offline“: Útočník má novou adresu ze stejného zdroje jako tu starou, většinou ze seznamu serverů, z bota na Discordu nebo ze starého záznamu DNS. Změna adresy je získaný čas, ne řešení.
„Zapnul jsem funkci Fake IP a přesto jsem napadán“: Skrývá adresu před novými hráči, ale serveru ji nebere. Kdo ji zná ze starého záznamu v seznamu, ze stavové stránky nebo z dřívějšího spojení, dosáhne na váš server dál přímo, stejně tak na SSH a na každý webový panel na něm.
„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 dostat ani SSH relace, 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 Unturned potřebuje přesně dva otevřené UDP porty:
Portnastavený vCommands.dat(ve výchozím stavu 27015) a tuto hodnotu plus jedna (27016). TCP samotná hra nepotřebuje. - Port 27017 je od verze 3.21.30.0 z 21. listopadu 2021 zbytečný, protože dotaz Steamu už neleží na portu plus dva. Kdo ho má ještě otevřený, řídí se zastaralým návodem.
- Unturned nemá vestavěný RCON port. Každá vzdálená správa pochází z pluginu, přináší si vlastní TCP port a musíte ji omezit sami.
- Dotazovací port 27015 je nejcitlivější místo: záplava dotazů udělá server v seznamu serverů neviditelným, aniž by zasáhla jediného hráče, a protokol Steamu má podle US-CERT TA14-017A faktor zesílení 5,5.
- Limity v
Config.json(Max_Packets_Per_Second50,0,Rate_Limit_Kick_Threshold10 za 40 sekund) působí jen proti klientům, kteří se skutečně připojí, ne proti podvrženým adresám odesílatele. - Linka 1 Gbit/s je plná při 125 megabajtech za sekundu, u paketů o velikosti 64 bajtů už při zhruba 1,49 milionu paketů za sekundu. Normální provoz s 24 hráči leží na zhruba 1 200 paketech za sekundu. O všem nad tím rozhoduje síť před serverem, ne váš firewall.
- U KernelHost je dvoustupňová trvalá ochrana obsažena v každém serverovém balíčku bez příplatku a je aktivní od zřízení serveru, bez nullroutingu. Kdo chce filtrační pravidla řídit sám, doplní si Advanced DDoS Protection od 50,00 EUR měsíčně.
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. Během probíhajícího útoku nás navíc zastihnete přes nouzový chat na WhatsAppu na čísle +43 650 8209883.
Časté dotazy
Které porty musím pro server Unturned nechat otevřené?
Musím pro Unturned povolit port 27017?
Můj server Unturned běží, ale nestojí už v žádném seznamu serverů. Je to útok?
Má Unturned vestavěný RCON port?
Chrání funkce Fake IP v Unturned před DDoS útoky?
Mohu se proti DDoS útoku bránit pomocí iptables nebo UFW?
Od jaké velikosti útoku to můj server Unturned nezvládne sám?
Proč jsou servery Unturned napadány tak často?
Pomohou pluginy RocketMod nebo OpenMod proti DDoS útokům?
Půjde můj server u KernelHost během útoku offline?
Stojí ochrana proti DDoS u KernelHost něco navíc?
Kdy potřebuji pro svůj server Unturned navíc 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.

