Ochrana serveru Lineage 2 před útoky DDoS

Publikováno 21 min čtení

Které porty privátní server Lineage 2 skutečně potřebuje, proč je skutečným terčem přihlašovací server na portu 2106, proč útoky přicházejí sezónně ke startům serverů a od jaké velikosti útoku pomůže už jen filtrování v síti před serverem.

Privátní server Lineage 2, na kterém se večer nikdo nedostane přes přihlašovací obrazovku, zatímco hráči ve světě hrají dál bez potíží, nemá problém s hardwarem. To je otisk útoku DDoS na přihlašovací server a přesně tam musí ochrana Lineage 2 proti DDoS začínat. Tento článek nejdříve ukazuje, co si bez dalších nákladů zabezpečíte 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í na L2J a jeho odnože (L2J-Mobius, aCis) na Debianu 12, Debianu 13, Ubuntu 22.04 LTS nebo Ubuntu 24.04 LTS a dále na balíky L2OFF s AuthD, CacheD a L2Server. Příkazy jsou psané pro root, jako běžný uživatel před ně dopište sudo.

Pokud útok právě probíhá: teď v konfiguraci nic neměňte a nerestartujte ani přihlašovací server, ani herní server. Nejdříve si uložte naměřené hodnoty (viz oddíl „Zaznamenávejte"), po útoku už budou pryč.

Ochrana serveru Lineage 2 před DDoS: proč jsou privátní L2 servery terčem

Privátní server Lineage 2 spojuje několik vlastností, které z něj dělají pohodlný terč, a ochrana Lineage 2 proti DDoS musí vycházet právě z nich. Zaprvé je vaše adresa veřejná, a to od samého začátku: hráči si stáhnou upravenou složku System a v jejím souboru l2.ini stojí řádek ServerAddr= s IP adresou vašeho přihlašovacího serveru. Každý, kdo si váš projekt jednou nainstaloval, tuto adresu zná, bez ohledu na to, jestli si kdy vytvořil postavu.

Zadruhé je hráčská základna vázaná na pevné časy. Obléhání, epic raid bossové a eventy stojí v kalendáři a výpadek přesně v tuto hodinu je maximálně viditelný. Zatřetí si projekty konkurují přímo: kdo otevírá server, získává stejných pár tisíc hráčů jako tři další projekty o stejném víkendu. Vyřazení konkurenta je v této scéně běžná strategie. Útok se přitom objednává jako služba (ve scéně se tomu říká booter nebo stresser) a zadavatele nestojí ani schopnosti, ani znatelné peníze. Co je útok DDoS do detailu, vysvětluje článek Co je útok DDoS?.

Proč je skutečným terčem přihlašovací server na portu 2106

Lineage 2 je rozdělená na dva oddělené procesy: přihlašovací server a jeden nebo více herních serverů. Klient se nejdříve připojí na 2106 TCP k přihlašovacímu serveru, přihlásí se, dostane odtud seznam serverů s externí adresou a portem herního serveru a poté naváže druhé spojení na 7777 TCP k hernímu serveru. Oba procesy mají vlastní konfigurační soubory, vlastní porty a vlastní meze zatížení.

Z toho plyne vzorec útoku, který provozovatelé L2 popisují stále dokola: záplava na 2106 blokuje výhradně nová přihlášení. Kdo už stojí ve světě, hraje dál, dokud sám neztratí spojení. Počet hráčů online tedy klesá pomalu místo skokově a na fóru stojí „server běží, ale nedostanu se dovnitř". Právě tento obraz odlišuje útok na přihlašovací server od útoku na herní server, při kterém vypadnou všichni naráz.

Přihlašovací server je navíc levnější terč, protože náklady jsou rozdělené nerovnoměrně. Přihlašovací server L2J vytvoří při startu zásobu deseti párů RSA klíčů o délce 1024 bitů a dvaceti klíčů Blowfish. Každý pokus o přihlášení stojí klienta odeslání jednoho paketu a server jedno dešifrování privátním klíčem RSA. Nedokončená relace přitom blokuje místo, dokud ji nezahodí vestavěný časovač: LOGIN_TIMEOUT je ve zdrojovém kódu nastavený na 60 sekund. Výchozí hodnota MaxConnectionPerIP = 50 povoluje každé zdrojové adrese padesát souběžných spojení. Tisíc zdrojových adres tedy stačí na 50 000 současně otevřených relací, z nichž každá vydrží až minutu.

K tomu přistupuje zvláštnost hry, která ji odlišuje od většiny herních serverů: Lineage 2 běží výhradně přes TCP. Výrobce pro hru uvádí TCP porty 80, 2009, 2106 a 7777 a u UDP výhradně port 53 pro překlad jmen. Neexistuje tedy žádný herní UDP provoz, který by bylo nutné filtrovat, zato je přímo účinná klasická záplava SYN s podvrženými zdrojovými adresami a prvním úzkým hrdlem se stává sledování spojení v jádře.

Proč útoky na servery Lineage 2 přicházejí sezónně ke startům serverů

Útoky na privátní servery Lineage 2 se hromadí kolem startů serverů, protože datum a čas otevření jsou veřejně známé týdny předem. Kalendáře otevření pro projekty Lineage 2 vypisují nadcházející starty podle kroniky (Interlude, High Five, Classic, Essence), k tomu raty a přesný čas startu, a aktualizují se denně. Útočník nemusí nic zjišťovat: pro něj nejpříhodnější okamžik stojí v oznámení provozovatele.

Druhý důvod je ekonomický. Privátní server Lineage 2 vydělává své peníze vpředu: celá hráčská základna se získá v prvních dnech, dary přicházejí v prvních týdnech a poté populace setrvale klesá. Hráč, který se v první hodině nedostane dovnitř, přejde k projektu, který startuje o stejném víkendu, a takový projekt existuje vždy. Hodina výpadku v den otevření proto nestojí hodinu obratu, ale část celé životnosti serveru.

Třetí důvod je technický. Při Grand Openingu se současně pokouší přihlásit tisíce hráčů. Přihlašovací server je přesně v této minutě tak jako tak na hraně a dodatečná záplava se od špičkového zatížení skoro nedá odlišit. Útok, který by v klidné úterý zůstal bez následků, v hodině otevření stačí. Totéž platí pro ohlášené termíny za běžného provozu: obléhání hradů a epic raid bossové stojí v kalendáři a ze stejného důvodu jsou oblíbenými okny pro útok. Po náporu otevření motivace zase klesá, proto provozovatelé vnímají útoky jako vlnovité a ne jako trvalý stav.

Porty, o které ve skutečnosti jde

Následující tabulka vypisuje porty privátního serveru Lineage 2, příslušný konfigurační soubor a direktivu, která hodnotu nastavuje. Výchozí hodnoty pocházejí z dodávaných konfiguračních souborů L2J, respektive z návodů k nastavení balíků L2OFF.

Port a protokol Služba Soubor a direktiva Do veřejné sítě?
2106 TCP Přihlašovací server, přihlášení herního klienta (L2J) login/config/LoginServer.properties: LoginserverPort = 2106, LoginserverHostname = * ano
7777 TCP Herní server, herní svět (L2J) game/config/Server.properties: GameserverPort = 7777, GameserverHostname = * ano
9014 TCP Přihlašovací server přijímá registraci herních serverů LoginServer.properties: LoginPort = 9014, LoginHostname = 127.0.0.1; protějšek v Server.properties: LoginHost = 127.0.0.1, LoginPort = 9014 ne
3306 TCP MariaDB nebo MySQL, databáze každého serveru L2J Server.properties: URL = jdbc:mysql://localhost/lineage2, Login = root ne
2106 TCP (L2OFF) AuthD, přihlašovací služba oficiálních serverových souborů Konfigurace AuthD: serverExPort = 2106 ano
7777 TCP (L2OFF) L2Server, herní svět oficiálních serverových souborů l2server.ini: worldport = 7777 ano
2104 a 2108 TCP (L2OFF) AuthD interně (serverPort a serverIntPort) Konfigurace AuthD ne
2006 a 2008 TCP (L2OFF) CacheD, most mezi L2Server a databází Konfigurace CacheD ne
2002 TCP (L2OFF) L2NPC, načítá NPC do herního světa l2npc.ini ne
1433 TCP (L2OFF) Microsoft SQL Server, databáze oficiálních serverových souborů Konfigurace databáze ne
80 a 443 TCP Web projektu s registrací, donate shopem a vote stránkami Webový server ano, ale ne na stejné IP adrese
22 TCP Přístup přes SSH /etc/ssh/sshd_config jen omezeně na vlastní adresu

Tato tabulka odpovídá zároveň na dvě otázky: Lineage 2 nemá ani query port, ani RCON port. Neexistuje samostatná služba, která by dodávala stav hráčů pro seznam serverů, ani port pro dálkové ovládání jako u her postavených na Source. Seznam serverů vytváří přihlašovací server sám a posílá jej stejným spojením na 2106 přihlášenému klientovi. Dálkové ovládání běží v L2J přes příkazy ve hře a přes databázi. Tím odpadají dva vektory útoku, které jiné hry mají, a o to víc jich zůstává viset na portu 2106.

Řádové hodnoty, které byste měli znát

Veličina Hodnota
Transportní protokol hry výhradně TCP, UDP jen pro překlad jmen na portu 53
Připojení 1 Gbit/s 125 megabajtů za sekundu
Pakety o velikosti 64 bajtů v 1 Gbit/s zhruba 1,49 milionu paketů za sekundu
Co zvládne běžné serverové jádro několik set tisíc paketů za sekundu, poté začne zahazovat
Souběžná spojení na zdrojovou adresu, výchozí nastavení L2J MaxConnectionPerIP = 50
Životnost nedokončené přihlašovací relace v L2J LOGIN_TIMEOUT, 60 sekund
Neúspěšné pokusy do zablokování, výchozí nastavení L2J LoginTryBeforeBan = 5, poté LoginBlockAfterBan = 900 sekund
Útok na herní server odfiltrovaný u KernelHost přes 112,2 Gbit/s při více než 8,7 milionu paketů za sekundu
Útok na voice server odfiltrovaný u KernelHost přes 473,4 Gbit/s při více než 41,5 milionu paketů za sekundu

Co můžete udělat sami, než začnete utrácet

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

1. Inventura: co vlastně naslouchá?

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

ss -lntp

Zajímavý je sloupec s lokální adresou. 0.0.0.0:2106 a 0.0.0.0:7777 tam patří. 0.0.0.0:9014 a 0.0.0.0:3306 jsou chyby: to jsou dva porty, přes které se útočník může pověsit do vašeho seznamu serverů nebo oťukávat vaši databázi. 127.0.0.1:3306 naopak znamená „jen lokálně" a nepotřebuje pravidlo ve firewallu. Pohled útočníka nabídne sken portů zvenčí:

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

2. Držet port 9014 a databázi mimo veřejnou síť

Port 9014 je kanál, přes který se herní server registruje u přihlašovacího serveru, a za žádných okolností nepatří do veřejné sítě. L2J pro to dodává správnou výchozí hodnotu už z výroby: LoginHostname = 127.0.0.1 váže port na rozhraní loopback, zvenčí tedy není vůbec dostupný. Pokud přihlašovací server a herní server běží na dvou různých strojích, zapište místo * konkrétní interní adresu a port otevřete výhradně pro protějšek.

Stejné pravidlo platí pro databázi. Zkontrolujte v /etc/mysql/mariadb.conf.d/50-server.cnf, že tam stojí:

bind-address = 127.0.0.1

A vyměňte databázového uživatele. Dodávaný soubor Server.properties má nastaveno Login = root a sám v komentáři upozorňuje, že přesně tohle se nedoporučuje. Jak založit vlastního uživatele s minimálními právy, popisuje Zabezpečení MariaDB a MySQL. Poté výsledek zkontrolujte:

ss -lntp | grep -E ':9014|:3306'

Firewall nad tím zůstane krátký. Serveru Lineage 2 stačí dvě pravidla ven, a to přesně v tomto pořadí, abyste se sami nezamkli:

ufw allow 22/tcp comment 'SSH'
ufw allow 2106/tcp comment 'L2 Login'
ufw allow 7777/tcp comment 'L2 Game'
ufw default deny incoming
ufw default allow outgoing
ufw --force enable
ufw status verbose

Kompletní návod včetně záchranné cesty najdete pod Nastavení firewallu UFW bez rizika, že se sami zamknete.

3. Vypnout AcceptNewGameServer, jakmile je váš server zaregistrovaný

V souboru LoginServer.properties stojí z výroby AcceptNewGameServer = True a komentář nad tím přesně popisuje, co to znamená: každý herní server se smí zaregistrovat na volné místo vašeho přihlašovacího serveru. Dokud 9014 leží jen na rozhraní loopback, je to bez následků. Jakmile se port z jiného důvodu stane dostupným, jsou to otevřené dveře. Nastavte proto hodnotu na False, jakmile je váš vlastní herní server jednou zaregistrovaný a má své ID:

AcceptNewGameServer = False

V protějšku na straně herního serveru stojí AcceptAlternateID = True. To je při stavbě pohodlné, protože přihlašovací server pak přidělí jiné ID, když je požadované obsazené. Na produkčním systému chcete opak: pevné ID a chybu, pokud je obsazené.

4. Správně nastavit flood protection přihlašovacího serveru

L2J přináší v přihlašovacím serveru vlastní brzdu spojení. Stojí v souboru LoginServer.properties a všechny časové hodnoty jsou milisekundy:

EnableFloodProtection = True
FastConnectionLimit = 15
NormalConnectionTime = 700
FastConnectionTime = 350
MaxConnectionPerIP = 50

Hodnoty spolu souvisejí. Spojení, které dorazí ze stejné zdrojové adresy dříve než FastConnectionTime po předchozím, se počítá jako rychlé. Po FastConnectionLimit takových spojeních je adresa odmítnuta. NormalConnectionTime je odstup, od kterého se čítač zase snižuje. MaxConnectionPerIP je horní mez souběžně otevřených spojení na adresu.

Padesát souběžných spojení je pro jednoho hráče velmi štědré a nižší hodnoty pomáhají znatelně. Přesto je namístě opatrnost: několik hráčů v jedné domácnosti, internetová kavárna a především přípojky za Carrier-NAT (v L2 scéně se to týká mnoha hráčů z Turecka, z Brazílie a z částí východní Evropy) sdílejí jednu veřejnou adresu. Kdo tu nastaví 3, vyřadí skutečné hráče. Nejdříve týden měřte v běžném provozu, teprve poté snižujte po krocích.

A omezení, které musíte znát: tato brzda běží v Java procesu přihlašovacího serveru. Každý paket, o kterém rozhoduje, už prošel vaší linkou a už stál výpočetní čas. Proti hrstce zdrojů působí, proti botnetu ne.

5. Omezit neúspěšné pokusy a využít banned_ip.cfg

Další dvě direktivy v souboru LoginServer.properties řídí, jak dlouho smí někdo hádat:

LoginTryBeforeBan = 5
LoginBlockAfterBan = 900

LoginTryBeforeBan je počet neplatných kombinací účtu a hesla, po kterém se adresa zablokuje, LoginBlockAfterBan je délka blokace v sekundách (900 odpovídá 15 minutám). Poté se počítání spustí znovu od začátku.

Trvalé blokace zapisujete do souboru banned_ip.cfg v konfiguračním adresáři přihlašovacího serveru. Povolené jsou jednotlivé adresy, celé sítě a volitelný čas vypršení jako unixové časové razítko v milisekundách, vše za # je komentář:

198.51.100.7
203.0.113.0
198.51.100.44 1789689600000

Nastavte navíc AutoCreateAccounts = False. Výchozí hodnota True zakládá při každém přihlášení s neznámým názvem účtu automaticky nový účet. To je při stavbě praktické a v provozu je to dárek: útočník si tím vytvoří libovolné množství účtů a každý z nich smí stáhnout seznam serverů s adresou vašeho herního serveru. Nechte účty vznikat místo toho přes registraci na vašem webu, pak máte pod kontrolou, kdo dostane přihlašovací údaje.

6. Omezit rychlost spojení na 2106 a 7777 v jádře

Co rozhodne Java brzda příliš pozdě, rozhodne jádro dříve a levněji. Proti malým útokům a nečistým botům pomáhá horní mez na zdrojovou adresu:

iptables -I INPUT -p tcp --dport 2106 --syn -m connlimit --connlimit-above 8 --connlimit-mask 32 -j DROP
iptables -I INPUT -p tcp --dport 2106 --syn -m hashlimit --hashlimit-name l2login --hashlimit-mode srcip --hashlimit-above 6/sec --hashlimit-burst 20 -j DROP
iptables -I INPUT -p tcp --dport 7777 --syn -m connlimit --connlimit-above 6 --connlimit-mask 32 -j DROP

První pravidlo zahazuje nová spojení k přihlašovacímu serveru, jakmile jich má jedna adresa souběžně otevřených více než osm. Řádný klient potřebuje právě jedno. Druhé omezuje rychlost nových spojení na šest za sekundu na adresu s nárazníkem dvaceti, což ještě propustí bouři opětovných připojení po restartu serveru. Třetí povoluje na herním serveru šest souběžných spojení na adresu, protože vícenásobné přihlášení (dualbox a triplebox) je v Lineage 2 normální a příliš těsná mez zasáhne vaše platící hráče.

Všechna tři čísla jsou výchozí hodnoty, ne pravdy. Server s 2000 souběžnými hráči se chová jinak než server s 200. Nejdříve měřte, teprve poté nastavujte. Čistá 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í.

7. Zachytit záplavu SYN: syncookies, backlog a sledování spojení

Protože Lineage 2 běží výhradně přes TCP, je záplava SYN nasnadě jako vektor. Záplava SYN je útok, který posílá žádosti o spojení s podvrženými zdrojovými adresami a potvrzení nikdy neodpoví, takže server pro každou žádost rezervuje paměť, která se nikdy nepoužije. Čtyři nastavení to zmírní:

sysctl -w net.ipv4.tcp_syncookies=1
sysctl -w net.ipv4.tcp_max_syn_backlog=8192
sysctl -w net.core.somaxconn=4096
sysctl -w net.ipv4.tcp_synack_retries=2

SYN cookies jsou přitom nejdůležitější řádek: jádro odpoví na žádost, aniž by si cokoli pamatovalo, a stav založí teprve tehdy, když protějšek spojení skutečně dokončí. Podvržení odesílatelé tím narazí do prázdna. Trvale se hodnoty ukládají do souboru pod /etc/sysctl.d/ a načítají příkazem sysctl --system.

Často přehlíženým úzkým hrdlem je sledování spojení v jádře. Když se zaplní, server zahazuje i legitimní pakety a v logu stojí „nf_conntrack: table full, dropping packet". Stav a horní mez ukáže:

sysctl net.netfilter.nf_conntrack_count net.netfilter.nf_conntrack_max

8. Web, přihlašovací server a herní server na oddělené IP adresy

Web projektu s registrací, donate shopem a vote stránkami je přes vaši doménu vždy dohledatelný. Pokud leží na stejné IP adrese jako přihlašovací server, položí útok na web současně i přihlašování, a naopak. Rozdělte tyto tři role na různé adresy. Pak při útoku na web zůstane hra dostupná a při útoku na 2106 hrají už připojení hráči dál.

Udržujte přitom záznamy DNS v pořádku. Nejčastější chybou je zapomenutý záznam A na dřívější adresu: činí každou změnu adresy neúčinnou, protože útočník najde novou adresu přes stejné jméno jako vaši hráči.

A sem patří poctivost místo zbožných přání: Adresu vašeho přihlašovacího serveru nelze udržet v tajnosti. Stojí v souboru l2.ini ve složce System, kterou si stáhne každý hráč. Adresu herního serveru zase rozesílá váš vlastní přihlašovací server: v L2J stojí jako externí adresa v souboru ipconfig.xml (ve starších odnožích jako ExternalHostname v souboru Server.properties) a sděluje se každému klientovi, který se úspěšně přihlásil. Schovávání není strategie, filtrování ano.

9. Zaznamenávejte, abyste v ostrém případě měli data

Nejdůležitější krok je ten, který skoro nikdo neudělá předem: založit si srovnávací základnu, dokud vše běží normálně. Bez normální hodnoty nedokážete po incidentu říct, jestli 40 000 paketů za sekundu bylo hodně, nebo 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
ss -tn state syn-recv | wc -l
ip -s link show eth0
tcpdump -ni eth0 'tcp port 2106' -c 200 -q

Druhý řádek je u Lineage 2 nejvýmluvnější: počítá polootevřená spojení. Pětimístná hodnota při pár stovkách hráčů je záplava SYN a nic jiného. U tcpdump platí: vždy omezit pomocí -c, záznam při plném zatížení zatíží už tak přetížený server ještě víc. Jak hodnoty vyhodnotit, stojí v Jak rozpoznat útok DDoS.

Kde tato opatření končí

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

Spočítejte si to. Běžný herní server visí na 1 Gbit/s, to je 125 megabajtů za sekundu, a linka je plná, jakmile někdo pošle více. Proti serveru Lineage 2 na to nestačí ani velký útok, protože dříve udeří druhá veličina: paketová rychlost. U malých paketů o 64 bajtech se do linky s 1 Gbit/s vejde zhruba 1,49 milionu paketů za sekundu. Běžné serverové jádro jich podle CPU a síťové karty zpracuje několik set tisíc, než začne zahazovat.

U čistě TCP hry přistupuje třetí mez. Každé polootevřené spojení zabírá záznam ve sledování spojení a v backlogu a přihlašovací server L2J drží své relace až 60 sekund. Útok s několika sty tisíci paketů za sekundu, který vaši linku nenaplní ani z třetiny, tedy může přihlašování zablokovat úplně. Provozovatelé to zažívají jako „vytížení přece nebylo vůbec vysoké, a stejně se nikdo nedostal dovnitř".

Pro zařazení, jaké řády se reálně vyskytují: na serverech KernelHost byl mimo jiné odfiltrován útok s více než 112,2 Gbit/s při více než 8,7 milionu paketů za sekundu proti hernímu serveru a multivektorový útok s více než 473,4 Gbit/s při více než 41,5 milionu paketů za sekundu proti voice serveru. Na to neexistuje žádné lokální nastavení. Volumetrické útoky musí skončit v síti před serverem. Co dělat v akutním případě, stojí v Silný útok DDoS: co dělat?.

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 něco 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 datového centra.
  • Stupeň 2: filtrování Arbor v reálném čase s 3,2 Tbps ve Frankfurtu nad Mohanem. Přímo před serverem se rozpoznávají a zahazují protokolově specifické vzorce, paket po paketu.

Rozhodující jsou dvě vlastnosti. Ochrana běží permanentně a nemusí na útok teprve reagovat, neexistují tedy minuty na začátku, kdy je server pryč. Právě při Grand Openingu je to rozdíl mezi povedeným a ztraceným startem. 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ě vyřadí, dosáhne pro vás stejného výsledku jako útočník. Které hry a protokoly jsou pokryté, vypisuje Ochrana herních serverů proti DDoS v reálném čase.

Advanced DDoS Protection pro trvale ostřelované projekty

Některé projekty nejsou napadané příležitostně, ale cíleně a po celé týdny, a v Lineage 2 scéně je to normální stav každého serveru, který se probojuje do horních příček seznamů serverů. 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á ochranná IP z frankfurtského jádra, na kterou se váš server ve vlastní síti přepne. Na vaší straně není potřeba žádná přestavba.
  • Samostatně spravovatelná ochranná pravidla podle portu a protokolu v zákaznické sekci: nastavíte odděleně, co je povolené na 2106 TCP a co na 7777 TCP. To je u Lineage 2 rozhodující bod, protože oba porty mají zcela odlišné vzorce provozu: na jedné straně mnoho krátkých spojení, na druhé několik velmi dlouhých.
  • Změny se projeví v reálném čase, můžete tedy doladit i během probíhajícího útoku a můžete pravidla před hodinou otevření zpřísnit a poté zase uvolnit.
  • Ochranný profil odpovídající aplikaci, i pro upravené a vlastní serverové soubory na libovolných TCP nebo UDP portech. Jestli provozujete L2J, L2J-Mobius, aCis nebo balík L2OFF, nehraje pro sadu pravidel roli, protože ta staví na portu a protokolu.

Oba stupně ve srovnání

Vlastnost Zahrnutá trvalá ochrana proti DDoS Advanced DDoS Protection
Cena součástí každého serverového balíčku, bez příplatku od 50,00 EUR měsíčně, PrePaid
Filtrační kapacita 17 Tbps globální scrubbing plus filtrování Arbor v reálném čase s 3,2 Tbps ve Frankfurtu nad Mohanem stejné dvoustupňové filtrování
IP adresa IP adresa vašeho serveru dodatečná dedikovaná ochranná IP
Sada pravidel automatické profily, konfigurace není potřeba vlastní pravidla podle portu a protokolu v zákaznické sekci, 2106 a 7777 odděleně
Změny probíhají automaticky projeví se v reálném čase, i během útoku
Serverové soubory optimalizované profily pro běžné hry profil podle portu a protokolu, tedy i pro L2J, L2J-Mobius, aCis a L2OFF
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

Pro většinu projektů Lineage 2 stačí zahrnutá trvalá ochrana spolu s čistou konfigurací serveru. Advanced DDoS Protection je odpovědí na to, že si to někdo vezme osobně, a podle zkušeností se to děje v týdnu před Grand Openingem.

Časté chyby a řešení

„Login nejde, ale herní server běží normálně": to není náhoda, ale obvyklá podoba útoku na server Lineage 2. Přihlašovací server a herní server jsou dva procesy na dvou portech. Změřte ss -tn state syn-recv | wc -l a sar -n DEV 1 10. Pokud polootevřená spojení stoupají, zatímco šířka pásma zůstává nenápadná, jde o záplavu spojení na 2106.

„Vyměnil jsem IP adresu a druhý den jsem byl zase offline": útočník dostane novou adresu stejnou cestou jako vaši hráči, tedy přes novou složku System se změněným l2.ini, přes vaše oznámení nebo přes zapomenutý záznam DNS. Změna adresy je získaný čas, ne řešení.

„Nastavil jsem MaxConnectionPerIP na 3 a teď si hráči stěžují": dualbox je v Lineage 2 běžný a hráči za Carrier-NAT sdílejí jednu veřejnou adresu se stovkami dalších. Vraťte se na hodnotu, která pokryje vaše naměřené hodnoty z běžného provozu, a omezte místo toho rychlost nových spojení v jádře.

„Moje pravidla iptables nezabírají": časté jsou tři příčiny. Pravidla stojí za řetězci UFW a nikdy se na ně nedojde, po posledním restartu byla pryč (pak pomohou 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, jestli stoupají čítače zásahů. Pokud zůstávají na nule, pravidlo se nevykonává.

„Všichni hráči mají lag spiky, ale linka je klidná": pak to není útok DDoS. U Java serveru jsou obvyklými podezřelými pauzy garbage collectoru, databáze bez vhodných indexů a skript nebo vlastní event ve smyčce. Zkontrolujte nejdříve sar -n DEV 1 10: pokud paketové rychlosti zůstávají normální, příčina leží v serveru a ne v síti.

„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 zeptejte, jestli se filtruje, nebo nullrouteuje. Odpověď rozhoduje o vaší dostupnosti víc než jakýkoli údaj o hardwaru.

„V tcpdump nevidím nic nápadného": pokud se provoz filtruje už v síti před serverem, na server podle očekávání nic nedorazí. To je normální stav při fungujícím filtrování. Opačně platí: když je linka nasycená, nemusí vás za určitých okolností dostihnout 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.

„Můj Grand Opening je za dva týdny": pak se stěhujte teď a ne v týdnu startu. Stěhování stojí novou složku System pro hráče, přepnutí DNS a zkušební běh. To všechno chcete mít za sebou, než oznámíte datum, protože od oznámení zná každý konkurent váš nejnevhodnější okamžik.

Krátce shrnuto

  • Privátní server Lineage 2 potřebuje ve veřejné síti přesně dva porty: 2106 TCP pro přihlašovací server a 7777 TCP pro herní server. Port 9014, databáze (3306 u L2J, 1433 u L2OFF) a interní porty L2OFF 2002, 2006, 2008, 2104 a 2108 mezi ně nepatří.
  • Lineage 2 běží výhradně přes TCP a nemá ani query port, ani RCON port. Typickým útokem je proto záplava SYN nebo záplava spojení na portu 2106, nikoli záplava UDP.
  • Útok na přihlašovací server blokuje jen nová přihlášení. Když se nikdo nedostane dovnitř, zatímco hráči ve světě hrají dál, je příčinu třeba hledat na portu 2106 a ne na 7777.
  • Nastavte vědomě EnableFloodProtection, MaxConnectionPerIP, LoginTryBeforeBan a AutoCreateAccounts, po registraci přepněte AcceptNewGameServer na False a rychlosti spojení omezte navíc v jádře, protože Java brzda zabírá teprve až za linkou.
  • Útoky na servery Lineage 2 se hromadí ke startům serverů, protože datum a čas jsou veřejné týdny předem a hospodářská škoda je v den otevření největší. Ochrana musí stát před oznámením, ne po něm.
  • Nad kapacitou linky a nad několika sty tisíci paketů za sekundu rozhoduje výhradně filtrování v síti před serverem. U KernelHost je dvoustupňové, trvale aktivní, bez příplatku a bez nullroutingu.

Pokud váš projekt už běží u KernelHost, je filtrování aktivní, aniž byste museli cokoli dělat. Pokud přesto zaznamenáte nesrovnalosti, otevřete support ticket, 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 Lineage 2 je právě offline. Jak poznám, jestli jde o útok DDoS?
Podívejte se na paketovou rychlost a na polootevřená spojení, ne na vytížení CPU. Pomocí sar -n DEV 1 10 uvidíte pakety a bajty za sekundu, pomocí ss -tn state syn-recv | wc -l počet polootevřených spojení TCP. Pětimístná hodnota při pár stovkách hráčů je záplava SYN na portu 2106. Pokud se dovnitř nedostávají noví hráči, zatímco už připojení hrají normálně dál, je terčem přihlašovací server a ne herní server na 7777. Pokud obě hodnoty zůstávají nenápadné a přesto to seká, leží příčina v samotném serveru.
Které porty musím pro server Lineage 2 nechat otevřené?
Přesně dva: 2106 TCP pro přihlašovací server a 7777 TCP pro herní server. U L2J stojí v souboru LoginServer.properties jako LoginserverPort a v souboru Server.properties jako GameserverPort. Port 9014, přes který se herní server registruje u přihlašovacího serveru, zůstává na 127.0.0.1, stejně jako databáze na 3306. U balíků L2OFF platí totéž: veřejné jsou 2106 pro AuthD a 7777 pro L2Server, zatímco 2002, 2006, 2008, 2104, 2108 a port SQL 1433 zůstávají v místní síti.
Proč se u Lineage 2 útočí na přihlašovací server na portu 2106 a ne na herní server?
Protože záplava na 2106 odřízne přítok nových hráčů, aniž by útočník potřeboval mnoho šířky pásma. Přihlašovací server dešifruje při každém pokusu o přihlášení přihlašovací údaje privátním klíčem RSA a nedokončená relace blokuje v L2J místo až 60 sekund. Výchozí nastavení MaxConnectionPerIP = 50 povoluje každé zdrojové adrese padesát souběžných spojení, tisíc zdrojů tedy stačí na 50 000 otevřených relací. Hráči ve světě z toho nejdřív nic nepoznají, noví hráči se vůbec nedostanou dovnitř.
K čemu je u L2J port 9014 a musí být dostupný zvenčí?
Port 9014 je kanál, přes který se herní server registruje u přihlašovacího serveru, nastavený jako LoginPort v obou konfiguračních souborech. Nikdy nesmí být dostupný z internetu. L2J k tomu dodává správnou výchozí hodnotu už z výroby: LoginHostname = 127.0.0.1 váže port na rozhraní loopback. Pokud přihlašovací server a herní server běží na dvou strojích, zapište konkrétní interní adresu a port otevřete výhradně pro protějšek. Nastavte navíc AcceptNewGameServer na False, jakmile je váš server jednou zaregistrovaný.
Proč se na servery Lineage 2 útočí především ke Grand Openingu?
Protože datum a čas otevření jsou veřejné týdny předem: kalendáře otevření vypisují nadcházející starty Lineage 2 s kronikou, raty a přesným časem startu a aktualizují se denně. K tomu přistupuje, že privátní server vydělává své peníze vpředu. Hráčská základna se získá v prvních dnech, a kdo se v první hodině nedostane dovnitř, přejde k projektu, který startuje o stejném víkendu. Technicky je přihlašovací server v minutě otevření tak jako tak na hraně a dodatečná záplava se od špičkového zatížení skoro nedá odlišit.
Můžu se proti útoku DDoS bránit pomocí iptables nebo flood protection v L2J?
Proti malým útokům a jednotlivým zdrojům ano, proti volumetrickým útokům ne. Flood protection v L2J běží v Java procesu, iptables běží v jádře: obojí rozhoduje o paketech, které už prošly vaší linkou. Pokud je linka nasycená, pakety vašich hráčů se nedostanou dál už předtím. Lokální prostředky jsou přesto užitečné, především connlimit a hashlimit na portu 2106 a dále net.ipv4.tcp_syncookies proti podvrženým odesílatelům. Volumetrické útoky musí skončit v síti před serverem.
Pomůže teď rychle změnit IP adresu mého L2 serveru?
Jen krátce. Vaši hráči dostanou novou adresu přes novou složku System, v jejímž souboru l2.ini stojí řádek ServerAddr=, a přes stejné oznámení ji dostane i útočník. K tomu přistupují zapomenuté záznamy DNS na starou adresu, které každou změnu zbaví účinku. Adresu herního serveru navíc rozesílá váš vlastní přihlašovací server každému klientovi, který se úspěšně přihlásil. Změna adresy je získaný čas, problém ale nevyřeší.
Od jaké velikosti to můj server Lineage 2 nezvládne sám?
Typický herní server visí na 1 Gbit/s, což odpovídá 125 megabajtům za sekundu. U Lineage 2 je ale důležitější paketová rychlost: do 1 Gbit/s se při paketech o velikosti 64 bajtů vejde zhruba 1,49 milionu paketů za sekundu, běžné serverové jádro jich zpracuje jen několik set tisíc. Protože hra běží výhradně přes TCP, přistupuje jako třetí mez sledování spojení. Útok tedy může zablokovat přihlašování, i když šířka pásma není vyčerpaná.
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 filtrování Arbor v reálném čase s 3,2 Tbps ve Frankfurtu nad Mohanem. Běží permanentně a nemusí na útok teprve reagovat, neexistují tedy minuty na začátku, kdy je server pryč. Právě v hodině otevření nového serveru je přesně to rozhodující.
Účtuje se ochrana proti DDoS u KernelHost zvlášť?
Ne. Dvoustupňová trvalá ochrana je součástí každého serverového balíčku bez příplatku a je aktivní od zřízení serveru. Nemusíte ji objednávat, zapínat ani konfigurovat. Platí to nezávisle na tom, jestli provozujete L2J, L2J-Mobius, aCis nebo balík L2OFF, protože filtrování staví na portu a protokolu, a ne na serverových souborech. Další náklady vzniknou jen tehdy, když si přiberete Advanced DDoS Protection s vlastními pravidly.
Kdy potřebuji pro svůj projekt Lineage 2 navíc Advanced DDoS Protection?
Když váš projekt není napadaný příležitostně, ale cíleně a po celé týdny, a chcete filtrování řídit sami. Dostanete dedikovanou ochrannou IP a ochranná pravidla podle portu a protokolu spravujete sami v zákaznické sekci, u Lineage 2 tedy odděleně pro 2106 TCP a 7777 TCP. Změny se projeví v reálném čase, pravidla tedy můžete před hodinou otevření zpřísnit a poté zase uvolnit. Cena začíná na 50,00 EUR měsíčně, PrePaid, bez minimální doby trvání a bez zřizovacího poplatku.

Lineage 2 Ochrana Lineage 2 proti DDoS L2J L2OFF Ochrana herního serveru Port 2106 Port 7777 Advanced DDoS Protection Filtrování v reálném čase