Ochrana serveru Arma 3 před DDoS útoky

Publikováno 19 min čtení

Které z pěti UDP portů 2302 až 2306 server Arma 3 skutečně potřebuje, jak zabezpečíte Steam Query, BattlEye RCon a headless client, a od jaké paketové rychlosti pomůže už jen filtrace v síti před serverem.

Kdo chce ochránit server Arma 3 před DDoS útoky, má co do činění s přesně pěti UDP porty: 2302 až 2306. Dedikovaný server, který večer uprostřed operace vypadne naráz všem hráčům, má jen zřídka problém s hardwarem. Většinou běží útok mířený přesně na tento blok portů, a to právě ve chvíli, kdy seznam serverů ukazuje nejvyšší počet 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 Arma 3 (aplikace SteamCMD 233780) 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á: teď neměňte nic v konfiguraci a server nerestartujte, nejdřív si zajistěte naměřené hodnoty z oddílu „Logování“. Po útoku už budou pryč.

Proč jsou servery Arma 3 napadány a kdy je ochrana proti DDoS potřeba

Arma 3 spojuje několik vlastností, které ze serveru dělají pohodlný cíl. Zaprvé server svou adresu zveřejňuje sám: přes port 2304 UDP se hlásí u Steam master serveru a na portu 2303 UDP odpovídá na dotazy jménem, mapou, počtem hráčů a seznamem modů. Bez těchto dvou portů vás nikdo nenajde, s nimi stojí vaše IP adresa v každém prohlížeči serverů a na každé stavové stránce, která z prohlížeče serverů čerpá.

Zadruhé je hráčská základna vázaná na pevné časy. Life RP projekty na Altis a Tanoa, Exile, Antistasi a King of the Hill se plní večer a o víkendech, výpadek ve 20:00 je tedy maximálně vidět. Zatřetí existuje konkurence mezi projekty, zabanovaní hráči a vnitřní konflikty, a útok nestojí toho, kdo ho spustí, ani schopnosti, ani znatelné peníze.

Technicky k tomu přistupuje rozhodující bod: Arma 3 běží výhradně přes UDP, TCP hra k hernímu provozu nepotřebuje. UDP nezná navázání spojení, které by se dalo vyžadovat, a zdrojové adresy se dají podvrhnout. Útočník tedy nemusí na váš server vstoupit ani ho správně oslovit, aby vytvořil zátěž. K tomu přistupuje, že simulační smyčka serveru Arma 3 běží ve svém jádru na jediném výpočetním jádru: kdo pošle dost paketů, bere tomuto jednomu jádru výpočetní čas, a to nezávisle na tom, kolik jader má stroj jinak. Co je DDoS útok podrobně, vysvětluje článek Co je DDoS útok?.

Porty, o které ve skutečnosti jde

Server Arma 3 zabírá ve výchozím stavu blok 2302 až 2306 UDP. Startovací parametr -port=2302 určuje jen první port, zbylé čtyři z něj vyplývají pevně, totiž jako herní port plus 1 až plus 4. Kdo provozuje několik instancí na stejném stroji, nechává proto mezi nimi odstup nejméně 100 portů (2302, 2402, 2502), jinak si instance navzájem berou navazující porty.

Port Protokol K čemu slouží Patří do otevřené sítě
2302 (herní port) UDP Herní provoz a VON, vestavěný přenos hlasu ano
2303 (herní port plus 1) UDP Steam Query: odpovídá na A2S dotazy jménem, mapou, počtem hráčů, seznamem modů a podpisů ano, jinak chybí záznam v prohlížeči serverů
2304 (herní port plus 2) UDP Steam Master: přihlášení serveru u Steam master serveru ano
2305 (herní port plus 3) UDP VON, podle Bohemia Interactive rezervovaný a aktuálně nevyužitý ne
2306 (herní port plus 4) UDP Provoz BattlEye, mezi tím rozhraní RCon (RConPort v beserver_x64.cfg) ne, jen vaše administrátorské adresy
2344 a 2345 (odchozí) TCP a UDP Spojení BattlEye ze serveru na arma31.battleye.com odchozí povolit, příchozí neotvírat nic
3306 TCP MySQL pro extDB3, databázové napojení každého Life frameworku ne, navázat na 127.0.0.1
22 TCP Přístup SSH ne, jen vaše vlastní adresy

Z těchto osmi řádků patří do otevřeného internetu přesně tři: 2302, 2303 a 2304 UDP. Všechno ostatní je správa, a otevřené správní porty jsou na serverech Arma 3 nejčastější chybou, které se dá předejít.

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

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

1. Inventura: co na serveru naslouchá?

Než napíšete jediné pravidlo, 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:2302 znamená „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 na Life serveru pravidelně objevují MariaDB, webový server pro stránku frakce, TeamSpeak nebo jiná hlasová služba a zapomenutý panel. Pohled útočníka poskytne sken portů zvenčí:

nmap -Pn -sU -p 2300-2320 VASE.IP.ADRESA.SERVERU
nmap -Pn -p- --min-rate 1000 VASE.IP.ADRESA.SERVERU

První příkaz ukáže UDP blok hry, druhý všechno, co je otevřené na TCP. Server Arma 3 nepotřebuje k hernímu provozu jediný otevřený TCP port.

2. Nechat otevřené jen porty, které Arma 3 skutečně potřebuje

Tři UDP porty navenek stačí, všechno ostatní se omezí. S UFW to vypadá takto, a to přesně v tomto pořadí, abyste se sami nevyzamkli:

ufw allow from 203.0.113.10 to any port 22 proto tcp comment 'SSH'
ufw allow 2302:2304/udp comment 'Arma 3 hra, Steam Query, Steam Master'
ufw allow from 203.0.113.10 to any port 2306 proto udp comment 'BattlEye RCon'
ufw default deny incoming
ufw default allow outgoing
ufw --force enable
ufw status verbose

Nahraďte 203.0.113.10 svou vlastní adresou. Port 2305 zůstává zavřený, protože ho Bohemia Interactive vede jako rezervovaný a aktuálně nevyužitý. Důležitý je řádek ufw default allow outgoing: BattlEye navazuje ze serveru spojení na arma31.battleye.com a potřebuje k tomu odchozí port 2344 na TCP i UDP a 2345 na TCP. Kdo odchozí provoz paušálně zablokuje, zablokuje vlastní anti-cheat. Po přestavení ověřte skutečným připojením do hry, že BattlEye vaše hráče dál pouští. Úplný návod včetně záchranné cesty najdete v článku Jak nastavit firewall UFW, aniž byste se sami vyzamkli.

Databáze do otevřené sítě v žádném případě nepatří. Altis Life a ostatní Life frameworky mluví přes rozšíření extDB3 s databází MySQL a přihlašovací údaje stojí v otevřeném textu v @extDB3/extdb3-conf.ini. Zkontrolujte v /etc/mysql/mariadb.conf.d/50-server.cnf, že tam stojí:

bind-address = 127.0.0.1

3. Zmírnit Steam Query port, aniž byste vypadli z prohlížeče serverů

Port 2303 UDP je nejcitlivější místo veřejného serveru Arma 3. Odpovídá na A2S dotazy, tedy na standardní dotaz prohlížeče serverů Steamu: A2S_INFO vrací jméno, mapu a počet hráčů, A2S_PLAYERS seznam hráčů, A2S_RULES seznam modů a podpisů. Dotaz je malý UDP paket, odpověď je jeho násobkem. US-CERT vede protokol Steamu ve výstraze TA14-017A s faktorem zesílení šířky pásma 5,5 a u Army 3 vychází odpověď obzvlášť velká, protože se s ní posílá kompletní seznam modů.

Z toho plynou dvě věci. Zaprvé může být váš server zneužit jako zesilovač proti třetím stranám, pokud útočník posílá dotazy s podvrženou zdrojovou adresou. Zadruhé, a pro vás důležitěji, stojí každý dotaz výpočetní čas na tom jediném jádru, které nese simulaci. Bohemia Interactive k tomu od roku 2015 vede ticket (T83469): podvržené UDP pakety na herní port nebo na Steam Query port vyhnaly CPU na 100 procent a server zmrazily, a pro úspěšný útok přes query port stačily už 4 Mbit/s. To je důvod, proč je u Army 3 paketová rychlost nebezpečnější než šířka pásma.

První páka je velikost odpovědi. Direktiva steamProtocolMaxDataSize v souboru server.cfg určuje, kolik bajtů smí server zabalit do své odpovědi na dotaz. Provozovatelé velkých seznamů modů ji zvyšují na 2048 nebo více, protože jinak stojí v logu varování „Query data overflow, Mods/Signatures will not be correctly received by clients“. Každé zvýšení ale zvětšuje přesně tu odpověď, kterou útočník zesiluje. Nastavte proto hodnotu tak nízko, jak to váš seznam modů ještě dovolí, a vyhoďte nepoužívané mody ze startovacího příkazu:

steamProtocolMaxDataSize = 2048;

Druhá páka je omezení rychlosti podle zdrojové adresy, které se týká jen query portu. Neblokujte 2303 UDP paušálně: bez odpovědi na dotazy váš server zmizí z prohlížeče serverů i z každé stavové stránky a noví hráči ho už nenajdou. Legitimní prohlížeč serverů se ptá několikrát za minutu, ne stokrát za sekundu.

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

BattlEye je anti-cheat Army 3 a zapíná se v souboru server.cfg pomocí BattlEye = 1;. Příslušná vzdálená správa, BattlEye RCon, je vlastní UDP protokol a konfiguruje se v BattlEye/beserver_x64.cfg (soubor s příponou _x64 platí pro arma3server_x64, tedy pro dnes běžný server):

RConPassword VaseAlfanumerickeHeslo
RConPort 2306
RConIP 127.0.0.1
MaxPing 350
RestrictRCon 0

Rozhodující jsou tři body. Heslo k RCon musí být čistě alfanumerické, speciální znaky tiše rozhodí parser protokolu BattlEye, a přístup k RCon s tichou chybou je přístup, který v nouzi nemáte. RConIP určuje, na které adrese RCon naslouchá: pokud tam stojí 127.0.0.1, je rozhraní dosažitelné jen lokálně a váš nástroj pro RCon se k němu dostane přes přesměrování portu v SSH. A RConPort musí ležet nad herním blokem, obvyklý je herní port plus 4, tedy 2306. Kdo musí RCon otevřít navenek, uvolňuje port jen pro pevnou adresu svého admin týmu.

Jedno by přitom mělo být jasné: BattlEye je anti-cheat, ne ochrana proti DDoS. Kontroluje hráče, kteří jsou připojeni. Útočník, který váš server zaplavuje, se vůbec nechce připojit.

5. Pevně svázat headless client

Headless client je druhá instance Army 3 bez grafiky, která se k serveru připojí jako hráč a odebere mu výpočet umělé inteligence. U velkých misí je to vůbec nejdůležitější zisk výkonu, protože AI jinak leží na stejném jádru jako simulace. Povoluje se v souboru server.cfg:

headlessClients[] = {"127.0.0.1"};
localClient[] = {"127.0.0.1"};

Bez těchto záznamů server žádné připojení headless clienta nepovolí, to je dobrá zpráva. Ta špatná: localClient[] přiznává zapsané adrese neomezenou šířku pásma a prakticky žádnou kontrolu latence. Zapisujte tam výhradně 127.0.0.1 nebo pevnou adresu vlastního serveru s headless clientem, nikdy celý rozsah adres. Client se spouští pomocí -client -connect=127.0.0.1 -port=2302 -password=... a zabírá jeden slot z maxPlayers. Počítejte s ním tedy dopředu, jinak vaši hráči narazí na plný server.

6. Zpřísnit připojení, podpisy a hlasování

Tato nastavení nechrání vaši linku, ale zavírají všechno, co přichází běžnou cestou připojení: upravené klienty, spouštění skriptů ve hře a zneužití hlasování. Následující řádky patří do každého souboru server.cfg veřejného serveru:

verifySignatures = 2;
BattlEye = 1;
kickDuplicate = 1;
allowedFilePatching = 0;
maxPlayers = 64;
disconnectTimeout = 30;
maxPing = 200;
maxDesync = 150;
maxPacketLoss = 50;
kickClientsOnSlowNetwork[] = {1, 1, 1, 1};
voteThreshold = 1.5;
voteMissionPlayers = 100;
onUnsignedData = "kick (_this select 0)";
onHackedData = "kick (_this select 0)";

verifySignatures = 2 vynucuje kontrolu podpisů verze 2 pro všechny addony a je minimálním požadavkem pro každý veřejný server s mody. allowedFilePatching = 0 odmítne připojení klientům, kteří byli spuštěni s -filePatching (hodnota 1 to dovoluje jen headless clientům, hodnota 2 všem). kickDuplicate = 1 vyhodí druhé spojení stejné identity. kickClientsOnSlowNetwork[] rozhoduje pro každou položku zvlášť, zda se čtyři prahy z maxPing, maxPacketLoss, maxDesync a disconnectTimeout jen logují (0), nebo vynucují (1). disconnectTimeout přijímá hodnoty od 5 do 90 sekund. Hodnota voteThreshold nad 1 učiní hlasování nedosažitelným a ukončí tím nejoblíbenější způsob, jak narušit server bez jediného útočného paketu: změnu mise hlasováním.

7. Omezit rychlost paketů a spojení podle zdrojové adresy

Proti malým útokům a nečistým botům pomáhá horní mez podle zdrojové adresy. Protože Arma 3 jezdí čistě na UDP, pracuje se s hashlimit, a query port dostane výrazně přísnější mez než herní port:

iptables -I INPUT -p udp --dport 2303 -m hashlimit --hashlimit-name a3_query --hashlimit-mode srcip --hashlimit-above 10/sec --hashlimit-burst 20 -j DROP
iptables -I INPUT -p udp --dport 2302 -m hashlimit --hashlimit-name a3_game --hashlimit-mode srcip --hashlimit-above 900/sec --hashlimit-burst 1200 -j DROP
iptables -I INPUT -p udp --dport 2302:2306 -m length --length 0:27 -j DROP

První pravidlo zahazuje dotazy ze stejného zdroje od trvale více než deseti za sekundu, druhé herní pakety od trvale více než 900 za sekundu, třetí UDP pakety bez použitelné datové části. Všechna tři čísla jsou výchozí hodnoty, ne pravdy: plný Life server s 80 hráči vytváří výrazně více paketů než kolo Antistasi v šesti lidech, a kdo nastaví meze příliš těsně, vyhazuje vlastní hráče. Měřte nejdřív týden v normálním provozu.

Dvě poznámky k tomu. 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í. Často přehlíženým úzkým hrdlem je navíc sledování spojení v jádře: i UDP tam zakládá záznamy a query flood z mnoha podvržených adres 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

8. basic.cfg: šířka pásma, velikosti paketů a doplňkové soubory

Druhý konfigurační soubor serveru Arma 3 se jmenuje basic.cfg a načítá se pomocí -cfg=, zatímco -config= načítá server.cfg. Řídí chování v síti a obsahuje přesně jednu hodnotu, která je bezprostředně bezpečnostně relevantní:

MaxMsgSend = 1024;
MaxSizeGuaranteed = 512;
MaxSizeNonguaranteed = 256;
MinBandwidth = 15000000;
MaxBandwidth = 100000000;
MinErrorToSend = 0.001;
MinErrorToSendNear = 0.01;
MaxCustomFileSize = 0;
class sockets { maxPacketSize = 1400; };

MaxCustomFileSize je maximální velikost v bajtech pro soubory s obličeji a zvuky, které si hráči přinesou a které server rozesílá všem ostatním. Hodnota 0 toto rozesílání vypíná. Tím odpadá cesta, na které jediný klient zabere šířku pásma vašeho serveru bez jakékoli útočné infrastruktury. MinBandwidth je šířka pásma, kterou server považuje za jistou, orientační hodnota je počet hráčů krát 256 kbit/s, tedy zhruba 16 Mbit/s pro 64 slotů. Příliš optimistické hodnoty zvyšují zátěž a desynchronizaci, protože server vytváří zprávy, které pak zahazuje. MaxMsgSend omezuje počet paketů na jeden krok simulace a je první pákou proti desynchronizaci, výchozí hodnota 128 je pro moderní servery nastavená příliš nízko.

9. 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ě sobotní večer. S apt-get install -y vnstat sysstat běží měření trvale a logFile = "arma3server.log"; v souboru server.cfg vám k tomu dodá pohled serveru. 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 2302-2306 -c 200 -q

Vypovídající je srovnání portů. Leží-li zátěž téměř úplně na 2303, jde o query flood a ten zasahuje výpočetní čas. Rozděluje-li se rovnoměrně přes 2302 až 2306 se stále novými zdrojovými adresami, jde o podvržený UDP flood a ten zasahuje linku. 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. Jak se server vůbec čistě instaluje a aktualizuje, stojí v článku Instalace herního serveru pomocí SteamCMD.

Kde tato opatření končí

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. Druhou veličinou je paketová rychlost a u Army 3 udeří téměř vždy jako první. 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 CPU a síťové karty zpracuje několik set tisíc, než začne zahazovat, a simulace Army 3 navíc visí na jediném jádru.

Ukazatel Hodnota
Standardní blok portů 2302 až 2306 UDP, pro herní provoz žádné TCP
Query port herní port plus 1, standardně 2303 UDP
Port RCon (BattlEye) volitelný přes RConPort, obvykle herní port plus 4, tedy 2306 UDP
Odstup portů při více instancích nejméně 100 (2302, 2402, 2502)
Orientační šířka pásma v normálním provozu počet hráčů krát 256 kbit/s, tedy zhruba 16 Mbit/s při 64 slotech
Faktor zesílení protokolu Steamu 5,5 podle výstrahy US-CERT TA14-017A
Doložená dolní hranice účinného útoku 4 Mbit/s na query port stačily ke zmrazení serveru Arma 3 (ticket T83469 studia Bohemia Interactive)
1 Gbit/s v paketech zhruba 1,49 milionu paketů za sekundu při velikosti paketu 64 bajtů
Špičky odfiltrované u KernelHost 473,4 Gbit/s při 41,5 milionu paketů za sekundu, odděleně UDP flood se 112,2 Gbit/s

Řádek se 4 Mbit/s je ten nejnepříjemnější. Útok u Army 3 nemusí být velký, aby zabral: musí jen poslat dost paketů na správný port. Provozovatelé to zažívají jako „vytížení přece vůbec nebylo vysoké, a stejně bylo všechno pryč“. Naopak u volumetrických útoků platí jednoduchá fyzika: při 473,4 Gbit/s je každé lokální nastavení bezvýznamné, protože pakety vašich hráčů se už dřív nedostanou skrz. 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. 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. Life server s pevnou hráčskou základnou a konkurenční scénou je pro to pravidlem, ne výjimkou. Pro takové případy 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 2302 UDP a co na 2303 UDP, a query port tak můžete vést výrazně přísněji než herní port.
  • 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, stejně tak pro upravené a vlastní aplikace na libovolných TCP nebo UDP portech.

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, například 2302 a 2303 odděleně
Změny probíhají automaticky projeví se v reálném čase, i během útoku
Herní profil optimalizované profily pro běžné hry 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ů Arma 3 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í

„Přesunul jsem port z 2302 na 2402 a útok běžel dál“: To se dalo čekat. Server svůj nový port sám ohlásí Steam master serveru a seznam serverů ho okamžitě zase zveřejní. Změna portu pomůže jen proti tomu, kdo používá starý údaj ze starého snímku obrazovky.

„Zablokoval jsem 2303 úplně a teď nás nikdo nenajde“: Přesně to se stane. Bez odpovědi na Steam Query portu chybí záznam v prohlížeči serverů a každá stavová stránka i každý Discord bot ukazuje server jako offline. Správné je omezení rychlosti podle zdrojové adresy, ne blokace.

„V logu stojí NetServer::SendMsg: cannot find channel“: Tato hláška přichází, když chce server zapisovat do spojení, které už neexistuje. Zpravidla doprovází trhající se spojení hráčů a propady výkonu (Bohemia Interactive to vede pod T83936), ne nutně útok. Zkontrolujte nejdřív, zda je paketová rychlost rozhraní vůbec nápadná.

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

„BattlEye od nového firewallu kickuje všechny hráče“: Server už nedosáhne na arma31.battleye.com. Odchozí porty 2344 na TCP i UDP a 2345 na TCP musí zůstat otevřené, jinak se spojení anti-cheatu ze serveru přetrhne.

„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 Arma 3 potřebuje navenek přesně tři UDP porty: 2302 pro hru a hlas, 2303 pro Steam Query a 2304 pro přihlášení u Steam master serveru. TCP hra nepotřebuje.
  • Port 2306 UDP nese BattlEye a rozhraní RCon a patří výhradně na vaše vlastní administrátorské adresy, nastavuje se přes RConPort a RConIP v beserver_x64.cfg.
  • Steam Query port 2303 je nejcitlivější místo: protokol Steamu má podle US-CERT TA14-017A faktor zesílení 5,5 a každý dotaz stojí výpočetní čas na jádru, které nese simulaci. Omezovat místo blokovat.
  • steamProtocolMaxDataSize držet tak nízko, jak to seznam modů dovolí, a nastavit MaxCustomFileSize = 0; v souboru basic.cfg: obojí zmenšuje objem dat, který váš server vydává bez vyzvání.
  • U Army 3 rozhoduje paketová rychlost, ne šířka pásma. Bohemia Interactive od roku 2015 dokumentuje pod T83469, že ke zmrazení serveru stačily už 4 Mbit/s na query port.
  • Lokální opatření končí na lince. Od objemu útoku 1 Gbit/s nebo několika set tisíc paketů za sekundu 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 bez příplatku a je aktivní od zřízení serveru, bez nullroutingu. Advanced DDoS Protection ji od 50,00 EUR měsíčně 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. 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

Můj server Arma 3 je právě offline. Jak poznám, jestli jde o DDoS útok?
Podívejte se na paketovou rychlost rozhraní, ne na vytížení CPU. Pomocí sar -n DEV 1 10 uvidíte pakety a bajty za sekundu, pomocí ip -s link show eth0 čítače zahozených paketů. Vypovídající je rozdělení přes porty: leží-li téměř vše na 2303 UDP, jde o query flood a ten zasahuje výpočetní čas. Rozděluje-li se se stále novými zdrojovými adresami přes 2302 až 2306, jde o podvržený UDP flood a ten zasahuje linku. Zůstávají-li obě hodnoty nenápadné a server přesto trhá, bývá příčinou mise nebo zátěž od umělé inteligence.
Které porty server Arma 3 skutečně potřebuje?
Navenek přesně tři UDP porty: 2302 pro herní provoz a vestavěný přenos hlasu VON, 2303 pro Steam Query a 2304 pro přihlášení u Steam master serveru. Port 2305 vede Bohemia Interactive jako rezervovaný a aktuálně nevyužitý, port 2306 nese provoz BattlEye včetně RCon a patří jen na vaše administrátorské adresy. TCP server Arma 3 k hernímu provozu nepotřebuje. Startovací parametr -port určuje jen první port, zbylé čtyři z něj vyplývají pevně jako herní port plus 1 až plus 4.
Můžu Steam Query port 2303 prostě zablokovat?
Ne. Bez odpovědi na 2303 UDP váš server zmizí z prohlížeče serverů Steamu a každá stavová stránka i každý Discord bot ho ukáže jako offline. Noví hráči ho pak už nenajdou. Správné je omezení rychlosti podle zdrojové adresy: legitimní prohlížeč serverů se ptá několikrát za minutu, útočník stokrát za sekundu. Navíc pomáhá držet steamProtocolMaxDataSize tak nízko, jak to váš seznam modů ještě dovolí, protože tato hodnota přímo určuje velikost odpovědi.
Co je Steam Query reflexe a proč zasahuje servery Arma 3?
Steam Query reflexe znamená, že útočník posílá dotazy s podvrženou zdrojovou adresou na mnoho herních serverů, aby jejich odpovědi dorazily ke skutečné oběti. US-CERT vede faktor zesílení šířky pásma protokolu Steamu ve výstraze TA14-017A s hodnotou 5,5. U Army 3 vychází odpověď obzvlášť velká, protože se s ní posílá kompletní seznam modů a podpisů. Váš server je zasažen dvakrát: může posloužit jako zesilovač proti třetím stranám a každý dotaz stojí výpočetní čas na tom jediném jádru, které nese simulaci.
Chrání BattlEye můj server Arma 3 před DDoS útoky?
Ne. BattlEye je anti-cheat a kontroluje hráče, kteří jsou už připojeni. Útočník, který váš server zaplavuje UDP pakety, se vůbec nechce připojit, a jeho pakety dorazily dávno předtím, než by BattlEye vůbec měl co kontrolovat. Na veřejném serveru je přesto povinností. Zvláštní pozornost potřebuje rozhraní RCon: běží přes UDP na portu nastaveném v beserver_x64.cfg pomocí RConPort, obvyklý je 2306, a pomocí RConIP patří omezit na 127.0.0.1 nebo na pevnou administrátorskou adresu.
Pomůže teď rychle změnit IP adresu nebo port?
Jen krátce. Server hlásí adresu i port sám u Steam master serveru a seznam serverů obojí během minut zase zveřejní. Změna portu z 2302 na 2402 proto pomůže jen proti tomu, kdo používá starý údaj ze starého snímku obrazovky. Změna adresy získá čas, problém ale nevyřeší, dokud nová adresa zase veřejně stojí v seznamu serverů. Myslete kromě toho na staré záznamy DNS: zapomenutý záznam A na předchozí adresu udělá každou změnu bezúčinnou.
Můžu se proti DDoS útoku bránit pomocí iptables nebo UFW?
Proti malým útokům a nečistým botům ano, proti volumetrickým útokům ne. Pravidlo firewallu na serveru rozhoduje o paketech, které už proběhly po vaší lince. Je-li linka nasycená, pakety vašich hráčů se nedostanou skrz už dřív, a to úplně nezávisle na tom, jak dobrá je vaše sada pravidel. Smysl mají pravidla hashlimit podle zdrojové adresy, těsně na 2303 UDP a výrazně volněji na 2302 UDP. Volumetrické útoky musí skončit v síti před serverem.
Od jaké velikosti to můj server Arma 3 nezvládne sám?
Dřív, než většina provozovatelů očekává. Bohemia Interactive od roku 2015 dokumentuje pod ticketem T83469, že ke zmrazení serveru Arma 3 stačily už 4 Mbit/s podvržených dotazů na Steam Query port, protože simulace ve svém jádru běží na jediném výpočetním jádru. U volumetrických útoků platí fyzika: typický herní server visí na 1 Gbit/s, to je 125 megabajtů za sekundu, a při paketech o velikosti 64 bajtů zhruba 1,49 milionu paketů za sekundu. Běžné jádro serveru jich zpracuje jen několik set tisíc.
Jak správně zabezpečím headless client?
Přes dva řádky v souboru server.cfg: headlessClients[] a localClient[]. Bez těchto záznamů server žádné připojení headless clienta vůbec nepovolí. Zapisujte tam výhradně 127.0.0.1 nebo pevnou adresu vlastního stroje s headless clientem, nikdy celý rozsah adres, protože localClient[] přiznává zapsané adrese neomezenou šířku pásma a prakticky žádnou kontrolu latence. Počítejte kromě toho s tím, že každý headless client zabírá jeden slot z maxPlayers.
Půjde můj server u KernelHost během útoku offline?
Ne. Nullrouting se nepoužívá. Vaše IP adresa zůstává v síti, zahazují se jen škodlivé pakety. Ochrana je 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č.
Účtuje se ochrana proti DDoS u KernelHost zvlášť 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 ani zapínat. Advanced DDoS Protection potřebujete, když váš projekt není napadán příležitostně, ale cíleně a 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, třeba 2302 a 2303 UDP odděleně. 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.

Arma 3 Ochrana Arma 3 proti DDoS Altis Life Ochrana herního serveru BattlEye Headless client Port 2302 Advanced DDoS Protection