Ochrana serveru Mordhau proti DDoS útokům

Publikováno 20 min čtení

Které čtyři UDP porty server Mordhau skutečně potřebuje, jak zabezpečíte query port 27015, beacon port 15000 a RCON, a od jaké velikosti útoku pomůže už jen filtrace v síti před serverem.

Server Mordhau, který uprostřed kola Frontline naráz ztratí všechny hráče, pak je několik minut offline a nezobrazuje se v seznamu serverů, má jen zřídka problém s hardwarem. V převážné většině případů běží útok na jeden ze čtyř UDP portů, které musí dedikovaný server Mordhau držet otevřené navenek. Tento článek nejprve ukazuje, co si v rámci ochrany serveru Mordhau proti DDoS zvládnete bez dalších nákladů zařídit sami, poté, kde tato opatření fyzikálně končí, a nakonec, co se musí odehrát v síti před serverem.

Všechny údaje se vztahují k oficiálnímu dedikovanému serveru Mordhau (Steam App ID 629800, Unreal Engine 4) 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 teď nic v konfiguraci a server nerestartujte, nejdřív si zajistěte naměřené hodnoty (oddíl 9), protože po útoku už budou pryč. U Mordhau k tomu přistupuje druhý důvod, který se mnoho provozovatelů učí bolestivě: serverový proces při ukončení zapisuje svůj stav z operační paměti zpět do souboru Game.ini. Kdo soubor upravuje za běhu serveru, přijde o své změny při příštím zastavení.

Proč servery Mordhau potřebují ochranu proti DDoS a kdo je napadá

Servery Mordhau jsou napadány, protože jejich adresa je veřejná, celý herní provoz jde přes UDP a výpadek je okamžitě vidět všem. Záznam v prohlížeči serverů obsahuje IP adresu a herní port v otevřeném textu, protože jinak by hráči server nenašli. Veřejné seznamy serverů a trackery si tytéž údaje odebírají přes query port Steamu a zveřejňují je podruhé. Vaše adresa tedy není tajemství, ale údaj o produktu.

K tomu přistupuje technika hry. Unreal Engine 4 přenáší pohyby, zásahy a krytí přes UDP. UDP nezná navázání spojení, které by se dalo vyžadovat, a adresu odesílatele UDP paketu lze podvrhnout. Útočník tedy nemusí na váš server vstoupit ani ho správně oslovit, aby vytvořil zátěž. U Mordhau to váží víc než u mnoha jiných her: výměna úderů se rozhoduje v rozsahu několika desetin sekundy a už 200 milisekund dodatečného zpoždění dělá boj na blízko nehratelným, dávno předtím, než server skutečně vypadne. Právě proto stačí malý útok ke zničení celého kola. Co je DDoS útok podrobně, vysvětluje článek Co je DDoS útok?.

Typické spouštěče jsou nenápadné: konkurence mezi komunitami, zabanovaní hráči, prohrané duely, hádky na Discordu. Útok nestojí zadavatele ani schopnosti, ani znatelné peníze, protože práci odvedou pronajaté booter služby. Provozovatelé pravidelně hlásí, že útoky začínají přesně ve chvíli, kdy je server plný, a přestávají, jakmile se vyprázdní. To není náhoda, ale známka toho, že někdo sleduje váš záznam v prohlížeči serverů a používá počet hráčů jako spouštěč.

Porty, o které u Mordhau ve skutečnosti jde

Dedikovaný server Mordhau potřebuje navenek přesně čtyři UDP porty: 7777, 7778, 15000 a 27015. Všechno ostatní je buď volitelné, nebo do otevřené sítě nepatří. Porty se předávají při startu jako parametry:

./MordhauServer.sh FFA_ThePit -log -Port=7777 -QueryPort=27015 -BeaconPort=15000 -RconPort=27020
Port Protokol K čemu slouží Nastavuje se přes
7777 UDP herní port: celý herní provoz síťové vrstvy Unreal Engine 4 -Port=
7778 UDP port Steamu, vyplývá z herního portu plus jedna odvozený
15000 UDP beacon port: rezervuje slot, dokud hráč načítá mapu -BeaconPort=
27015 UDP query port Steamu (A2S): dodává prohlížeči serverů jméno, mapu a počet hráčů -QueryPort=
volitelný TCP RCON podle protokolu Source RCON, ve výchozím stavu vypnutý RconPort= v Game.ini nebo -RconPort=
22 TCP přístup SSH k operačnímu systému, ke hře nepatří systémová služba

Dvě věci se přitom pravidelně chápou špatně. Zaprvé: beacon port 15000 není žádný doplněk. Beacon rezervuje slot v okamžiku, kdy se hráč připojuje, aby po načtení mapy zase nevypadl. Je-li 15000 zablokovaný nebo přetížený, hráči se už nedostanou dovnitř, přesto že port 7777 odpovídá. Zadruhé: RCON u Mordhau není předkonfigurovaný. Aktivuje se teprve tím, že nastavíte RconPassword a RconPort, a běží pak přes TCP, ne přes UDP.

Nejdůležitější ukazatele serveru Mordhau na jednom místě:

Ukazatel Hodnota
Steam App ID dedikovaného serveru 629800 (herní klient: 629760)
Konfigurační adresář pod Linuxem Mordhau/Saved/Config/LinuxServer/
Konfigurační adresář pod Windows Mordhau\Saved\Config\WindowsServer\
Konfigurační soubory Game.ini (hra a sezení), Engine.ini (síť a tickrate)
Výchozí tickrate 60, přes NetServerMaxTickRate lze zvýšit na 120
Běžný počet slotů až 64 přes MaxSlots, kooperativní režimy výrazně méně
Pakety na hráče a směr při tickrate 60 řádově 60 paketů za sekundu
Herní provoz plného serveru s 64 sloty řádově 4 000 paketů za sekundu v každém směru
Paketová rychlost, která se vejde do 1 Gbit/s (pakety 64 bajtů) zhruba 1,49 milionu paketů za sekundu
Velikost dotazu A2S_INFO 25 bajtů, odpověď je jeho násobkem

Vzory útoků, které se u Mordhau vyskytují

Čtyři vzory pokrývají prakticky všechno, co se proti serveru Mordhau vede, a každý zasahuje jiný port.

  • UDP flood na herní port 7777. To je standardní útok booteru: co nejvíc podvržených paketů na port, který stojí v prohlížeči serverů. Míří na šířku pásma a paketovou rychlost, ne na zranitelnost, a projevuje se nejprve jako lag spiky, dávno předtím, než někdo ztratí spojení.
  • Záplava dotazů na query port 27015. Dotaz A2S_INFO má 25 bajtů, odpověď se jménem serveru, mapou, herním režimem a počtem hráčů je jeho násobkem. Útočník tedy investuje málo a u vás si vynutí výpočetní práci a odchozí provoz.
  • Reflexe přes váš vlastní query port. Zde není váš server cílem, ale nástrojem: útočník posílá dotazy s podvrženou adresou odesílatele a váš server odpovídá oběti. Všimnete si toho jako nevysvětlitelně vysokého odchozího provozu na 27015 a jako hlášení o zneužití od svého poskytovatele.
  • Vyčerpání připojení a slotů přes beacon port 15000. Místo pálení šířky pásma zaberou automatizovaná připojení rezervované sloty. Server běží dál, je ale plný, a skuteční hráči se už nedostanou dovnitř.

K tomu přistupuje pátý vzor, jakmile RCON stojí otevřený v síti: pokusy o přihlášení v sekundovém taktu proti RCON portu. To je zřídka volumetrické, stojí to ale výpočetní čas, a je to jediný z pěti případů, kdy vám zásah vezme server úplně z rukou.

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

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

1. Inventura: co na serveru vlastně naslouchá?

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

ss -lntup

Zajímavý je sloupec s lokální adresou. 0.0.0.0:7777 a [::]:7777 znamenají „dosažitelné z celého internetu“, 127.0.0.1:27020 znamená „jen lokálně“ a nepotřebuje žádné pravidlo firewallu. Vedle hry se tam často objeví ještě webový panel, databázová služba a dávno zapomenutá hlasová služba. Pohled útočníka poskytne sken zvenčí, u UDP s krátkým seznamem portů, protože úplný UDP sken je velmi pomalý:

nmap -Pn -sU -p 7777,7778,15000,27015 VASE.IP.ADRESA.SERVERU
nmap -Pn -p- --min-rate 1000 VASE.IP.ADRESA.SERVERU

2. Nechat otevřené jen ty čtyři porty, které Mordhau skutečně potřebuje

Pro Mordhau stačí čtyři UDP uvolnění navenek, všechno ostatní se omezí nebo vůbec nezveřejní. 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 7777/udp comment 'Mordhau hra'
ufw allow 7778/udp comment 'Mordhau Steam'
ufw allow 15000/udp comment 'Mordhau Beacon'
ufw allow 27015/udp comment 'Mordhau Query'
ufw allow from 203.0.113.10 to any port 27020 proto tcp comment 'Mordhau RCON'
ufw default deny incoming
ufw default allow outgoing
ufw --force enable
ufw status verbose

Nahraďte 203.0.113.10 svou vlastní adresou. Důležité je, co tady nestojí: žádné uvolnění pro webový panel, žádné pro databázi, žádné pro souborový server. Každý další otevřený port je další cíl, který se hrou nemá nic společného. Úplný návod včetně záchranné cesty najdete v článku Jak nastavit firewall UFW, aniž byste se sami vyzamkli.

3. Omezit query port 27015, aniž byste vypadli ze seznamu serverů

Query port smíte omezit, ale nesmíte ho zavřít. Když se 27015 UDP uzavře, zmizí váš server z prohlížeče serverů, protože počet hráčů, jméno mapy a jméno serveru se dotazují právě přes tento port. Horní mez podle zdrojové adresy problém vyřeší, aniž by to stálo viditelnost:

iptables -I INPUT -p udp --dport 27015 -m hashlimit --hashlimit-name mh_query --hashlimit-mode srcip --hashlimit-above 10/sec --hashlimit-burst 20 -j DROP

Běžný prohlížeč serverů se váš server dotazuje několikrát za minutu, ne několikrát za sekundu. Deset dotazů za sekundu na zdrojovou adresu je tedy velkorysé pro každého hráče a těsné pro každého bota. Poté zkontrolujte na čítači zásahů, jestli pravidlo vůbec zabírá:

iptables -L INPUT -n -v | head -20
tcpdump -ni eth0 udp port 27015 -c 200 -q

Tady leží i odpověď na otázku reflexe. Při reflexi není váš server napadán, ale zneužit jako zesilovač: dotazy přicházejí s podvrženou adresou odesílatele a vaše odpovědi zasáhnou cizí oběť. Omezení rychlosti podle zdrojové adresy je proti tomu nejúčinnějším lokálním opatřením, protože podvržená adresa odesílatele je užitečná jen tak dlouho, dokud váš server ochotně a neomezeně odpovídá.

4. Vzít RCON z otevřené sítě

RCON u Mordhau v žádném případě nepatří neomezeně do internetu. Přístup se zapíná v souboru Game.ini, v oddílu [/Script/Mordhau.MordhauGameSession]:

[/Script/Mordhau.MordhauGameSession]
ServerName=Muj Mordhau server
MaxSlots=64
ServerPassword=
AdminPassword=DlouheNahodneHeslo
RconPassword=JineDlouheNahodneHeslo
RconPort=27020

Mordhau mluví protokolem Source RCON, tedy TCP, a spolupracuje proto s každým běžným nástrojem pro RCON. Právě to využívají i skripty, které zkoušejí přihlašovací údaje. Případ pokryjí tři pravidla. Zaprvé: RconPassword a AdminPassword jsou dvě různá, dlouhá, náhodná hesla, a ne variace jména serveru. Zadruhé: uvolnění pro RCON port omezíte na svou vlastní adresu, tak jako výše v bloku UFW. Zatřetí, pokud nemáte pevnou adresu: nechte port zvenčí zavřený a dosáhněte na něj přes přesměrování portu v SSH, poté se spojíte lokálně na 127.0.0.1:27020:

ssh -N -L 27020:127.0.0.1:27020 root@VASE.IP.ADRESA.SERVERU

Musí-li RCON přesto zůstat otevřený, omezte alespoň počet současných spojení podle zdrojové adresy. Nástroj pro RCON potřebuje jedno spojení, skript na hádání hesel stovky:

iptables -I INPUT -p tcp --dport 27020 --syn -m connlimit --connlimit-above 3 --connlimit-mask 32 -j DROP

5. Zabezpečit beacon port 15000 proti záplavám připojení

Beacon port je nedocenitelné místo útoku na server Mordhau. Přes něj hra rezervuje slot připojujícího se hráče, dokud ten ještě načítá. Bot, který v rychlém sledu spouští připojení, tím zabírá sloty, aniž by se kdy dostal do hry. Server zůstává online a přesto působí jako plný. Horní mez podle zdrojové adresy to zachytí, protože skutečný hráč beaconuje na jedno připojení právě jednou, a ne dvacetkrát za sekundu:

iptables -I INPUT -p udp --dport 15000 -m hashlimit --hashlimit-name mh_beacon --hashlimit-mode srcip --hashlimit-above 20/sec --hashlimit-burst 40 -j DROP
iptables -I INPUT -p udp --dport 7777 -m hashlimit --hashlimit-name mh_game --hashlimit-mode srcip --hashlimit-above 400/sec --hashlimit-burst 600 -j DROP

Druhé pravidlo platí pro herní port a potřebuje rozvahu. Při tickrate 60 vyměňuje server s každým připojeným hráčem řádově 60 paketů za sekundu v každém směru. Mez 400 paketů za sekundu na zdrojovou adresu tak nechává každému skutečnému hráči dost prostoru a přesto zasáhne každý zdroj, který očividně zaplavuje. Měřte nejdřív týden v normálním provozu, než nastavíte těsněji: kdo nastaví příliš těsně, vyhodí vlastní hráče a pak to považuje za útok.

Samotná pravidla iptables jsou po restartu pryč. Na Debianu a Ubuntu se ukládají takto:

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

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

6. Game.ini a Engine.ini: co skutečně něco přinese

Mordhau má dva konfigurační soubory a oba leží pod Linuxem v Mordhau/Saved/Config/LinuxServer/, pod Windows v Mordhau\Saved\Config\WindowsServer\. Soubor Game.ini řídí jméno serveru, sloty, hesla, seznam administrátorů, rotaci map a identifikátory modů z mod.io, soubor Engine.ini chování v síti. Oba upravujte výhradně při zastaveném serveru, jinak serverový proces při ukončení přepíše vaše změny stavem z operační paměti.

Pro velikost útočné plochy jsou skutečně relevantní tři nastavení. Zaprvé ServerPassword: udrží mimo každého, kdo není zvaný, stojí ale veřejnou dohledatelnost a proti záplavě na portu 7777 nepomůže vůbec, protože útočník se vůbec připojit nechce. Zadruhé realistické číslo v MaxSlots: Mordhau je navržený až na 64 hráčů a každý další slot je další zdroj paketů, který musí obsloužit váš procesor. Zatřetí tickrate v souboru Engine.ini:

[/Script/OnlineSubsystemUtils.IpNetDriver]
NetServerMaxTickRate=60
LanServerMaxTickRate=60

[IpDrv.TcpNetDriver]
NetServerMaxTickRate=60

Výchozí tickrate serveru Mordhau je 60. Zvýšení na 120 zdvojnásobí paketovou rychlost na hráče i zátěž procesoru, a je tedy přesně tím, co pod útokem nepotřebujete. Server se 64 sloty a tickrate 120 vytváří v normálním provozu už řádově 8 000 paketů za sekundu v každém směru. Kdo je trvale ostřelovaný, jede s hodnotou 60 znatelně stabilněji než s 120.

7. Odlehčit sledování spojení a přijímací vyrovnávací paměť

Často přehlíženým úzkým hrdlem je sledování spojení v jádře. Vede záznam pro každý UDP tok a záplava z desetitisíců podvržených adres odesílatele naplní tabulku během sekund. Když se naplní, zahazuje server i legitimní pakety a v logu stojí „nf_conntrack: table full“. Stav a horní mez ukáže:

sysctl net.netfilter.nf_conntrack_count net.netfilter.nf_conntrack_max
dmesg -T | grep -i conntrack | tail -20

Proti tomu pomáhá dvojí. Zvýšíte horní mez, nebo herní porty ze sledování úplně vyjmete. To druhé je u herního serveru většinou lepší cesta, protože UDP tak jako tak nemá žádný stav, který by se musel sledovat:

iptables -t raw -I PREROUTING -p udp --dport 7777 -j NOTRACK
iptables -t raw -I PREROUTING -p udp --dport 15000 -j NOTRACK
iptables -t raw -I PREROUTING -p udp --dport 27015 -j NOTRACK

Rovněž smysluplné jsou větší přijímací vyrovnávací paměti a hlubší fronta síťové karty, aby krátké špičky nevedly hned k zahazování:

sysctl -w net.core.rmem_max=16777216
sysctl -w net.core.rmem_default=4194304
sysctl -w net.core.netdev_max_backlog=5000

Trvale patří tyto hodnoty do souboru pod /etc/sysctl.d/, například 99-gameserver.conf. Důležité pro porozumění: větší vyrovnávací paměti nezvyšují vaši odolnost proti velkému útoku, zabraňují jen tomu, aby krátký výkyv hned stál pakety.

8. Vaše adresa stojí v seznamu serverů a to se nedá změnit

Tady se vyplatí poctivost místo zbožných přání: IP adresu veřejného serveru Mordhau nelze udržet v tajnosti. Stojí v záznamu prohlížeče serverů, stojí ve veřejných seznamech serverů třetích stran, které pravidelně odečítají query port, a zná ji každý hráč, který byl jednou připojený. Změna adresy proto přinese hodiny, zřídka dny, protože útočník najde novou adresu stejnou cestou jako tu starou.

Účinné jsou k tomu tři zvyky. Nezveřejňujte surovou IP adresu nikde sami, tedy ani na kanálu na Discordu, ani na stránce projektu. Připojujte své hráče přes jméno hostitele, aby změna adresy v ostrém případě nerozbila všechny odkazy. A uklízejte staré záznamy DNS, protože zapomenutý A záznam na předchozí adresu učiní každou změnu bezúčinnou. Totéž platí pro testovací servery: každý veřejně dosažitelný druhý server na stejném stroji prozradí adresu hlavního serveru.

9. Měřit, dokud všechno běží normálně

Nejdůležitější krok je ten, který skoro nikdo neudělá předem: založit si srovnávací základnu, dokud server běží v klidu. 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 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 port 7777 or udp port 15000 or udp port 27015' -c 200 -q

U tcpdump platí: vždy omezit pomocí -c, protože záznam při plném zatížení dodatečně zatěžuje už tak přetížený server. Dávejte pozor zvlášť na čítače zahozených paketů z ip -s link. Stoupající hodnoty dropped při současně klidném procesoru jsou nejjasnějším znamením, že problémem je paketová rychlost, a ne výpočetní výkon. Jak naměřené hodnoty vyhodnotit, stojí v článku Jak poznat DDoS útok. Jak server čistě nainstalovat pomocí SteamCMD a udržovat aktuální, popisuje článek Instalace herního serveru pomocí SteamCMD.

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.

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. Plný server Mordhau se 64 sloty z toho potřebuje jen zlomek: při tickrate 60 leží herní provoz řádově na 4 000 paketech za sekundu v každém směru. Pronajatý booter naproti tomu bez problémů dodá 5 až 50 Gbit/s, tedy pětinásobek až padesátinásobek vaší linky. Jestli je vaše pravidlo iptables 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 ta udeří často 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 nezaplní ani do jedné třetiny, tedy může váš server Mordhau přesto položit, protože výpočetní čas odejde 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í, jaké řádové hodnoty se reálně vyskytují: na serverech KernelHost byl mimo jiné odfiltrován útok s více než 473,4 Gbit/s při více než 41,5 milionu paketů za sekundu na hlasový server a UDP flood s 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 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.

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é servery Mordhau

Některé servery nejsou napadány příležitostně, ale cíleně a po celé týdny. Pro ně existuje Advanced DDoS Protection od 50,00 € 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 7777 UDP, co na 15000 UDP a co na 27015 UDP, aniž byste na to 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, místo abyste čekali na servisní okno.
  • Ochranný profil odpovídající hře. Pro herní servery na Unreal Engine přes UDP a pro query porty Steamu existují hotové profily, stejně tak pro upravené a vlastní aplikace na libovolných TCP nebo UDP portech.

Advanced DDoS Protection je určená serverům, které běží u KernelHost. Stojí-li váš server Mordhau momentálně jinde a je pravidelně vystřelován ze sítě, je cestou k této filtraci stěhování.

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 € 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, servery na Unreal Engine včetně 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ě serverů Mordhau stačí zahrnutá trvalá ochrana spolu s čistou konfigurací. Advanced DDoS Protection je odpovědí na to, že si to někdo vzal osobně.

Časté chyby a jejich řešení

„Zavřel jsem port 27015 a teď už můj server nestojí v seznamu“: To je očekávatelný důsledek. Query port Steamu dodává prohlížeči serverů jméno, mapu a počet hráčů. Bez něj se váš server už nezobrazí, nebo je vedený jako nedosažitelný. Správné je omezení rychlosti podle zdrojové adresy místo blokace.

„Hráči se nedostanou dovnitř, přesto že server běží“: Zkontrolujte nejdřív port 15000 UDP. Beacon rezervuje slot během načítání. Je-li zablokovaný, příliš těsně filtrovaný nebo přetížený, zůstane připojení viset, přesto že port 7777 odpovídá a server stojí v prohlížeči.

„Moje změny v Game.ini jsou po restartu zase pryč“: Upravovali jste soubor za běhu serveru. Serverový proces Mordhau při ukončení zapisuje svůj stav z operační paměti zpět a přepíše při tom vaši verzi. Server zastavit, upravit, spustit, v tomto pořadí.

„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ž dávno 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 běží, ale všichni mají lag spiky a zásahy přicházejí pozdě“: Podívejte se nejdřív, jestli stoupá vstupní paketová rychlost, zatímco procesor zůstává v klidu. Přesně to je vzor útoku. Zůstává-li paketová rychlost normální a procesor přitom stojí na 100 procentech, není to DDoS útok, ale většinou příliš vysoký tickrate, příliš mnoho slotů nebo nějaký mod.

„Můj poskytovatel hlásí odchozí zneužití portu 27015“: Váš server byl zneužit jako zesilovač pro reflexi. Dotazy přicházely s podvrženou adresou odesílatele, odpovídal váš server cizí oběti. Omezení rychlosti na 27015 UDP podle zdrojové adresy to ukončí.

„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í

  • Dedikovaný server Mordhau potřebuje navenek přesně čtyři UDP porty: 7777 (hra), 7778 (Steam), 15000 (beacon) a 27015 (dotazy Steamu). Všechno ostatní patří zavřít.
  • RCON u Mordhau běží přes TCP podle protokolu Source RCON a aktivuje se teprve pomocí RconPassword a RconPort v souboru Game.ini. Omezte port na svou vlastní adresu.
  • Port 27015 UDP smíte omezit, ale nesmíte zavřít: bez něj váš server zmizí z prohlížeče serverů, protože počet hráčů, mapa a jméno se dotazují přes tento port.
  • Port 15000 UDP je beacon port a rezervuje slot během načítání. Je-li zablokovaný nebo přetížený, hráči se nedostanou dovnitř, přesto že server běží.
  • Soubory Game.ini a Engine.ini upravujte jen při zastaveném serveru, protože serverový proces při ukončení zapisuje zpět stav z operační paměti.
  • Lokální pravidla firewallu končí na šířce pásma: 1 Gbit/s je 125 megabajtů za sekundu a u paketů o velikosti 64 bajtů zhruba 1,49 milionu paketů za sekundu. Nad tím rozhoduje výhradně síť před serverem.
  • 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 filtraci řídit sám, dostane ho s Advanced DDoS Protection od 50,00 € měsíčně.

Běží-li váš server Mordhau 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

Které porty musím pro server Mordhau nechat otevřené?
Přesně čtyři, a všechny čtyři přes UDP: 7777 pro herní provoz, 7778 jako port Steamu (herní port plus jedna), 15000 pro beacon, který při připojení rezervuje slot, a 27015 pro dotaz Steamu, ze kterého prohlížeč serverů čte jméno, mapu a počet hráčů. Nastavují se při startu přes -Port=, -QueryPort= a -BeaconPort=. RCON je volitelný, běží přes TCP na volitelně zvoleném portu a neomezeně do otevřené sítě nepatří. Všechno ostatní, například webový panel nebo databáze, zůstává zavřené.
Můj server Mordhau je právě offline. Podle čeho poznám, že běží DDoS útok?
Podívejte se na paketovou rychlost rozhraní, ne na vytížení procesoru. Pomocí sar -n DEV 1 10 uvidíte pakety a bajty za sekundu, pomocí ip -s link show eth0 čítače zahozených paketů. Stoupají-li vstupní pakety daleko nad normální hodnotu, zatímco server sám téměř nepracuje, jde o útok. Zůstávají-li síťové čítače nenápadné a procesor přesto stojí na 100 procentech, je příčinou většinou příliš vysoký tickrate, příliš mnoho slotů nebo nějaký mod. Naměřte normální hodnoty, než útok přijde, jinak vám bude chybět srovnání.
Můžu port 27015 jednoduše zavřít, abych zastavil záplavy dotazů?
Ne. Když se 27015 UDP zavře, zmizí váš server Mordhau z prohlížeče serverů, protože jméno, mapa a počet hráčů se odečítají právě přes tento query port Steamu. Správné je omezení rychlosti podle zdrojové adresy, například deset dotazů za sekundu pomocí modulu hashlimit v iptables. Skutečný prohlížeč serverů se ptá několikrát za minutu, bot několikrát za sekundu. Totéž pravidlo mimochodem zabrání tomu, aby byl váš server zneužit jako zesilovač pro reflexi na cizí oběť.
K čemu je u serveru Mordhau port 15000?
15000 UDP je beacon port. Přes něj Mordhau rezervuje slot připojujícího se hráče, dokud tento ještě načítá mapu, aby po načtení zase nevypadl. Nastavuje se při startu pomocí -BeaconPort=. Prakticky to znamená: je-li 15000 zablokovaný, příliš těsně filtrovaný nebo přetížený záplavou připojení, hráči se už nedostanou dovnitř, přesto že server stojí v prohlížeči a port 7777 odpovídá. Přesně tento vzor využívá útok na sloty, úplně bez velké šířky pásma.
Jak zabezpečím RCON na serveru Mordhau?
RCON u Mordhau není předkonfigurovaný a aktivuje se teprve tím, že v souboru Game.ini v oddílu [/Script/Mordhau.MordhauGameSession] nastavíte hodnoty RconPassword a RconPort. Přístup mluví protokolem Source RCON, a běží tedy přes TCP. Stačí tři opatření: dlouhé, náhodné heslo, které se liší od AdminPassword, uvolnění ve firewallu výhradně pro vaši vlastní adresu, a při měnící se adrese přístup přes přesměrování portu v SSH na 127.0.0.1. Musí-li port zůstat otevřený, omezte počet současných spojení podle zdrojové adresy pomocí connlimit.
Pomůže teď rychle změnit IP adresu?
Jen na krátko. Adresa veřejného serveru Mordhau stojí v otevřeném textu v záznamu prohlížeče serverů a veřejné seznamy serverů třetích stran ji přes query port průběžně znovu odečítají. Útočník proto novou adresu většinou najde v průběhu hodin. Změna získá čas, problém ale nevyřeší. Účinnější je surovou IP adresu nikde sami nezveřejňovat, hráče připojovat přes jméno hostitele a staré záznamy DNS smazat, protože zapomenutý A záznam učiní každou změnu adresy bezúčinnou.
Proč jsou moje změny v Game.ini po restartu pryč?
Protože jste soubor upravovali za běhu serveru. Serverový proces Mordhau drží svou konfiguraci v operační paměti a tento stav při ukončení zapisuje zpět do souboru Game.ini. Přepíše při tom vaši verzi. Správné pořadí proto vždy zní: server zastavit, Game.ini nebo Engine.ini upravit, server spustit. To platí i během útoku, a je to důvod, proč byste pod ostřelováním měli nejdřív měřit a teprve poté konfigurovat.
Od jaké velikosti útoku to můj server Mordhau nezvládne sám?
Typický herní server visí na 1 Gbit/s, to odpovídá 125 megabajtům za sekundu. Plný server Mordhau se 64 sloty potřebuje při tickrate 60 jen řádově 4 000 paketů za sekundu v každém směru. Pronajaté bootery naproti tomu dodají 5 až 50 Gbit/s. 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. Útok vás tedy může položit, přesto že šířka pásma není vyčerpaná.
Jde můj server Mordhau 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 je server pryč, a nemusíte nic hlásit, aby se filtrace rozběhla.
Stojí ochrana proti DDoS u KernelHost něco navíc?
Ne. 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, a platí pro všechny porty vašeho serveru Mordhau, tedy pro 7777, 7778, 15000 a 27015 stejně jako pro RCON port. Změna serverového balíčku nebo přesun na jiný stroj na tom nic nemění.
Kdy potřebuji pro svůj server Mordhau navíc Advanced DDoS Protection?
Když váš server 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 7777 UDP, 15000 UDP a 27015 UDP. Změny se projeví v reálném čase, můžete tedy doladit i během probíhajícího útoku. Cena začíná na 50,00 € měsíčně, PrePaid, bez minimální doby trvání a bez zřizovacího poplatku. Nabídka platí pro servery, které běží u KernelHost.

Mordhau Ochrana Mordhau proti DDoS Ochrana herních serverů Unreal Engine 4 Port 7777 Port 27015 RCON Advanced DDoS Protection