Protejarea serverului Left 4 Dead 2 împotriva atacurilor DDoS
De ce porturi are într-adevăr nevoie un server Left 4 Dead 2, cum frânați interogarea A2S pe 27015/UDP fără să vă blocați proprii jucători afară, ce realizează sistemul de lobby ca filtru de acces și de la ce dimensiune a atacului ajută doar filtrarea în rețeaua din față.
Un server Left 4 Dead 2 cade rar la un moment convenabil. Cade în ultima secțiune a unei campanii, în a doua rundă a unui meci Versus sau exact atunci când un jucător banat a fost respins pentru a treia oară. Cine este atacat chiar acum nu are nevoie de o discuție de principiu despre tehnica rețelelor, ci de o ordine a pașilor. Acest articol arată mai întâi cum protejați un server Left 4 Dead 2 împotriva atacurilor DDoS cât timp asta se mai poate cu mijloacele de la bord, apoi unde se termină fizic aceste posibilități, și la final ce trebuie să se întâmple înaintea lor în rețea.
Toate informațiile se referă la un server dedicat (srcds), instalat prin SteamCMD cu App-ID 222860, pe Debian 12, Debian 13, Ubuntu 22.04 LTS sau Ubuntu 24.04 LTS. Comenzile sunt scrise pentru root, ca utilizator obișnuit puneți sudo în fața lor. Un punct de la început, pentru că stabilește ordinea: nu modificați nimic orbește în timpul unui atac în curs și nu reporniți serverul înainte să fi salvat valorile măsurate. După atac ele nu mai există.
De ce serverele Left 4 Dead 2 sunt o țintă DDoS care merită
Diferența față de un shooter cu 64 de locuri stă în dimensiunea rundei. O campanie cooperativă are patru locuri pentru supraviețuitori, un meci Versus opt locuri pentru ambele părți împreună. O cădere nu lovește de aceea niciodată jucători individuali, ci întotdeauna întreaga partidă: cine întrerupe o campanie în a treia din cinci secțiuni a încheiat seara pentru toți participanții. Exact asta face un atac atractiv pentru cel care îl declanșează, deoarece nu îl costă nici pricepere, nici bani demni de menționat, în timp ce de partea cealaltă distruge o oră de joc.
La asta se adaugă construcția. Left 4 Dead 2 rulează pe motorul Source, iar un server Source este public găsibil cu adresă IP și port. Aceasta este o condiție, nu o neglijență: un server care nu răspunde la nicio interogare nu apare în nicio listă și nu este găsit de nicio lobby. Întrebarea nu este deci niciodată dacă un atacator cunoaște adresa dumneavoastră, ci doar ce se întâmplă atunci când trage în ea. Traficul de joc merge prin UDP, iar UDP nu cunoaște o stabilire a conexiunii care s-ar putea pretinde, în plus adresele expeditorului se pot falsifica. Ce se petrece tehnic în acest timp explică articolul Ce este un atac DDoS?.
Un al treilea punct este specific Left 4 Dead 2 și nu are echivalent la Counter-Strike, Garry's Mod sau Team Fortress 2: majoritatea jucătorilor nu vin prin browserul de servere, ci prin sistemul de lobby. O lobby de până la patru jucători este trimisă prin matchmakingul Steam către un server dedicat, care primește pentru asta o rezervare. Această procedură este în același timp filtrul dumneavoastră de acces cel mai eficient și o suprafață de atac suplimentară. Amândouă apar mai jos în detaliu.
Porturile despre care este vorba de fapt
Un server Left 4 Dead 2 ocupă exact un port UDP pentru tot ce ține de joc. Standard este 27015, stabilit prin -port respectiv +hostport în linia de pornire:
./srcds_run -game left4dead2 -console -nohltv \
-port 27015 \
+ip 203.0.113.10 \
+maxplayers 4 \
+exec server.cfg \
+map c1m1_hotel
| Port și protocol | Pentru ce | Trebuie să fie deschis spre exterior |
|---|---|---|
| 27015/UDP | Trafic de joc și interogare A2S de server pe același port | Da, fără acest port nu există joc |
| 27015/TCP | RCON, în măsura în care rcon_password este setat |
Nu, deschideți doar pentru adresa proprie |
| 27005/UDP | Portul clientului, pornește de la jucător | Nu, nu are nevoie de nicio deschidere pe server |
| 27020/UDP | SourceTV, doar cu -hltv sau +tv_enable 1 |
Doar dacă transmiteți efectiv |
| 27016, 27017 și următoarele | Alte instanțe pe aceeași gazdă | Fiecare instanță separat, nu ca interval |
| 80/TCP și 443/TCP | Descărcare rapidă (sv_downloadurl), dacă se află pe aceeași gazdă |
Doar dacă serverul web rulează acolo |
| 22/TCP | Acces SSH | Nu, limitați la adresa proprie |
Primul rând al acestui tabel este miezul problemei. Traficul de joc și interogarea serverului împart 27015/UDP, la Left 4 Dead 2 nu există un port de interogare separat. Cine blochează acest port în bloc sau îl limitează grosier își aruncă în același timp proprii jucători afară și încheie atacul în sensul atacatorului.
O cerere A2S este un pachet de câteva zeci de octeți, răspunsul un multiplu al acestuia. La UDP se poate falsifica adresa expeditorului, și astfel serverul dumneavoastră devine nu doar victimă, ci amplificator: un atacator interoghează servere de joc străine cu adresa țintei sale și dirijează răspunsurile lor acolo. Valve a completat A2S_INFO în decembrie 2020 cu o solicitare prealabilă (S2C_CHALLENGE), pe care cel care interoghează trebuie să o trimită înapoi înainte să primească răspunsul. Asta atenuează reflexia, dar nu o încheie, deoarece programele de interogare mai vechi sunt în continuare deservite.
Ce puteți face singur înainte să cheltuiți bani
Partea următoare nu costă nimic și merită indiferent unde se află serverul dumneavoastră. Nu vă scutește de un atac volumetric, dar face ca atacurile mici și medii să se risipească, și înlătură căderile care sunt raportate greșit ca atac DDoS.
1. Inventar: ce ascultă cu adevărat
Înainte să scrieți o regulă, clarificați ce servicii sunt accesibile. Pe un server Left 4 Dead 2 crescut în timp, acestea sunt aproape întotdeauna mai multe decât se aștepta, deoarece pe lângă srcds mai rulează un server web pentru campanii, o bază de date de statistici și uneori un al doilea server pentru Versus:
ss -lntup
Tot ce este legat la 127.0.0.1 sau ::1 nu are nevoie de nicio deschidere. Tot ce ascultă pe 0.0.0.0 sau [::] este accesibil din internet. Perspectiva atacatorului o oferă o scanare de porturi din exterior, iar aceasta se abate, din experiență, de la așteptările proprii:
nmap -Pn -sU -sT -p 27000-27050,80,443,3306 ADRESA.IP.A.SERVERULUI
Dacă infrastructura de bază este proaspăt configurată sau vreți să o urmăriți pas cu pas, articolul Instalarea unui server de joc cu SteamCMD descrie drumul de la SteamCMD până la un srcds care rulează.
2. Lăsați deschise doar porturile de care srcds are într-adevăr nevoie
Un port UDP spre exterior, un port TCP pentru adresa proprie, nimic mai mult. RCON nu are ce căuta în internetul deschis, deoarece cine are RCON schimbă harta, blochează toți jucătorii și oprește serverul:
ufw allow 27015/udp comment "Portul de joc L4D2 și A2S"
ufw allow from 203.0.113.10 to any port 27015 proto tcp comment "RCON"
ufw allow from 203.0.113.10 to any port 22 proto tcp comment "SSH"
ufw default deny incoming
ufw default allow outgoing
ufw --force enable
Înlocuiți 203.0.113.10 cu adresa dumneavoastră. Dacă aceasta se schimbă regulat, drumul trece printr-o redirecționare de port SSH în loc de o deschidere permanentă. Ordinea la activare decide dacă vă blocați singur afară; ea se află împreună cu calea de întoarcere în articolul Configurarea firewall-ului UFW fără să vă blocați singur afară. Dacă totuși se întâmplă: serverele root KVM și serverele dedicate de la KernelHost nu au IPMI și nici iDRAC, ajungeți la server prin consola VNC din panoul clientului, iar aceasta nu depinde de stiva de rețea a sistemului oaspete.
3. Frânați interogarea A2S fără să ieșiți din căutarea prin lobby
Aici se află cea mai costisitoare greșeală din acest domeniu. Deoarece traficul de joc și interogarea serverului ocupă același port, frâna trebuie să distingă între cele două clase de pachete, nu între porturi.
Infrastructura Steam pentru servere de joc aduce pentru asta, de la modificările din decembrie 2020, o limitare proprie, care se setează înainte de pornire ca variabilă de mediu. STEAM_GAMESERVER_RATE_LIMIT_200MS=N elimină pachetele fără conexiune (A2S_INFO, A2S_RULES, A2S_PLAYERS) ale unei adrese a expeditorului imediat ce într-o fereastră de 200 de milisecunde sosesc mai mult de N dintre ele. Valve indică 25 până la 75 ca interval utilizabil, implicit limitarea este oprită:
export STEAM_GAMESERVER_RATE_LIMIT_200MS=50
./srcds_run -game left4dead2 -console -port 27015 +exec server.cfg +map c1m1_hotel
Într-o unitate systemd, aceeași valoare are ce căuta ca Environment=STEAM_GAMESERVER_RATE_LIMIT_200MS=50 în secțiunea [Service], altfel dispare după următoarea repornire. Această frână se aplică doar dacă buildul dumneavoastră de server aduce infrastructura Steamworks actuală, și protejează timpul de calcul al serverului dumneavoastră, nu conexiunea dumneavoastră: pachetele au ajuns deja.
Cu un nivel mai jos, același trafic se poate separa în kernel. Toate pachetele fără conexiune ale motorului Source, deci interogările de server și stabilirea conexiunii, încep cu patru octeți setați (0xffffffff), traficul jucătorilor deja conectați nu are acest antet. Pe asta se poate pune cu nftables o limitare de rată pentru fiecare adresă a expeditorului:
table inet l4d2 {
chain input {
type filter hook input priority -10; policy accept;
udp dport 27015 @th,64,32 0xffffffff \
meter a2sflood { ip saddr limit rate over 10/second burst 20 packets } drop
}
}
Fișierul îl încărcați cu nft -f. Prioritatea -10 face ca regula să se aplice înaintea lanțului de filtrare al UFW, iar @th,64,32 citește primii patru octeți de după antetul UDP. Începeți generos și strângeți limita abia atunci când interogările legitime trec dovedit: propria dumneavoastră intrare în lista de servere depinde de asta.
4. Folosiți sistemul de lobby ca filtru de acces
Aceasta este pârghia pe care o au doar Left 4 Dead 2 și predecesorul său. Serverul decide singur dacă acceptă în general conexiuni din afara matchmakingului. Patru directive din server.cfg stabilesc asta:
sv_allow_lobby_connect_only 1
sv_search_key "cheia-dumneavoastra"
sv_steamgroup "103582791400000000"
sv_steamgroup_exclusive 2
sv_allow_lobby_connect_only 1permite exclusiv conectările dintr-o lobby de matchmaking. Unconnect 203.0.113.10:27015în consola de dezvoltator și o invitație Steam sunt respinse. Valoarea 0 permite amândouă.sv_search_keyeste o cheie de căutare aleasă liber. Doar o lobby în care este setată aceeași cheie găsește serverul prin matchmaking. Fără această cheie, el nu apare în căutarea publică.sv_steamgroupleagă serverul la un grup Steam și îl face să apară între serverele grupului respectiv.sv_steamgroup_exclusivecunoaște trei niveluri: 0 permite oricui, 1 se comportă ca 0, dar cere conectarea prin lobby, iar 2 mai permite doar membrii grupului și accesul direct prin adresa IP.
Pentru o comunitate stabilă, combinația dintre cheia de căutare și sv_steamgroup_exclusive 2 este cel mai eficient filtru de acces gratuit pe care îl cunoaște jocul. Un server public nu o poate folosi, deoarece un server pe care nu îl găsește nimeni este la fel de gol ca unul care este offline.
Și acum partea pe care textele publicitare o lasă bucuros deoparte: aceste directive protejează logica jocului dumneavoastră, nu conexiunea dumneavoastră. Un atacator care inundă 27015/UDP nici nu vrea să se alăture. Pachetele lui sunt respinse, dar au ajuns totuși, au consumat lățime de bandă și au costat o trecere prin stiva de rețea. Împotriva unui flood de conectări din conturi de unică folosință, sv_allow_lobby_connect_only 1 acționează excelent, împotriva unui booter nu acționează deloc.
5. Rezervarea prin lobby și când sv_force_unreserved este alegerea mai bună
O rezervare prin lobby este o ocupare limitată în timp a serverului dumneavoastră de către o lobby de matchmaking. Cât timp există, serverul este considerat ocupat pentru alte lobby-uri, iar ea expiră de la sine abia după o vreme. Pentru un server cu patru locuri, asta este o resursă rară: altfel decât la un shooter cu 32 sau 64 de locuri, este nevoie de foarte puțin ca să blocați o partidă.
Cine nu își operează serverul prin matchmaking scoate complet această suprafață:
sv_force_unreserved 1
sv_allow_lobby_connect_only 0
sv_force_unreserved 1 face ca serverul să nu mai răspundă la cererile de rezervare din sistemul de lobby și să respingă conectările cu o marcă de rezervare. De aceeași setare aveți nevoie oricum dacă operați cu L4DToolZ mai mult de patru locuri cooperative, deoarece altfel lobbyul primește o rezervare imediat ce primele patru locuri sunt ocupate, iar locurile rămase rămân inaccesibile. Reversul este clar: jucătorii dumneavoastră intră atunci doar prin browserul de servere sau prin connect.
Decideți-vă conștient pentru unul dintre cele două moduri de operare. Amestecul dintre matchmaking pe jumătate deschis și conectare directă pe jumătate deschisă este varianta care reunește ambele dezavantaje.
6. Securizați RCON
Un port RCON deschis cu o parolă slabă nu este o problemă de DDoS, ci o preluare. Nu lăsați niciodată rcon_password gol și nu îl alegeți niciodată ghicibil, o valoare din openssl rand -base64 32 este suficientă. Titlurile Source aduc în plus o frână împotriva încercărilor de autentificare:
rcon_password "O_VALOARE_ALEATORIE"
sv_rcon_minfailures 3
sv_rcon_maxfailures 5
sv_rcon_minfailuretime 30
sv_rcon_banpenalty 1440
Astfel, o adresă este blocată pentru o zi după trei încercări eșuate în 30 de secunde; find sv_rcon în consola serverului arată care dintre aceste variabile le cunoaște buildul dumneavoastră. Restricția de firewall din pasul 2 rămâne totuși mai eficientă, deoarece nici nu lasă încercarea să ajungă până la aplicație. Dacă nu aveți nevoie de RCON, lăsați parola goală: atunci partea TCP a portului 27015 nu ascultă.
7. Externalizați campaniile custom în loc să le livrați prin portul de joc
Campaniile custom sunt motivul pentru care Left 4 Dead 2 se mai joacă și după cincisprezece ani, și în același timp o sursă de sarcină care la Counter-Strike nu există în această formă. O campanie este un pachet VPK cu hărți, modele, texturi și sunete, deci un multiplu din ce cântărește o singură hartă de competiție.
Calea comodă pentru jucători este Steam Workshop: pachetul vine atunci de la Steam, nu de la serverul dumneavoastră, și nu vă costă lățime de bandă. Dacă livrați singur fișiere separate, livrarea are ce căuta pe un server web și nu pe portul de joc:
sv_allowdownload 1
sv_allowupload 0
sv_downloadurl "https://cdn.example.org/l4d2/"
sv_consistency 1
Fișierele pentru sv_downloadurl au ce căuta pe serverul web ca arhivă bzip2, din hartamea.bsp devine deci hartamea.bsp.bz2. Fără sv_downloadurl, srcds trimite fișierele singur prin conexiunea de joc, și atunci se aplică: fiecare încercare de conectare a unui jucător nou vă costă descărcarea completă, fiecare întrerupere în mijlocul descărcării la fel. Aceasta este o metodă deosebit de ieftină de a umple o conexiune, și nu arată în nicio statistică precum un atac.
Trei puncte în legătură cu asta, care în practică dor. sv_allowupload 0 are ce căuta setat, deoarece nu aveți nevoie de încărcări de la client către server. Dacă serverul web pentru sv_downloadurl se află pe aceeași gazdă ca jocul, descărcarea și traficul de joc împart aceeași conexiune și aceeași adresă IP, iar un atac pe 443/TCP lovește atunci și partida dumneavoastră în curs. Iar sv_consistency 1 nu este o protecție împotriva atacurilor, ci împotriva fișierelor de client diferite; ar trebui să îl opriți doar dacă o campanie dovedit nu pornește altfel.
8. SourceMod, Metamod și extensiile
O parte considerabilă a căderilor raportate ca DDoS nu sunt căderi de acest fel. Sunt blocări și vârfuri de sarcină pe care le declanșează un singur client, pentru că în binarul serverului sau într-o extensie stă deschisă o breșă. Împotriva acestui lucru nu ajută lățimea de bandă, ci întreținerea:
- Țineți Metamod:Source și SourceMod potrivite cu versiunea motorului. Left 4 Dead 2 primește în continuare actualizări, iar o extensie nepotrivită este cel mai frecvent motiv pentru blocări imediat după o actualizare.
- Left4DHooks în loc de intervenții proprii. Evenimentele tipice pentru L4D2 se află grupate în această extensie. Intervențiile proprii în aceleași funcții sunt calea cea mai rapidă către un binar de server care cedează la anumite secvențe de pachete.
- Folosiți L4DToolZ doar în mod conștient. Extensia ridică limitele de locuri fixate în cod. Fiecare loc suplimentar este un jucător suplimentar care generează timp de calcul, iar în legătură cu sistemul de lobby ea are nevoie de
sv_force_unreserved 1. - Mai puține extensii. Fiecare plugin este cod în același proces. Extensiile cu servicii web proprii deschid porturi suplimentare și publică adesea exact adresa pe care vreți să o protejați.
Blocările au ce căuta salvate permanent, altfel dispar după repornire. Titlurile Source cunosc pentru asta banid cu writeid, precum și addip cu writeip, iar fișierele generate sunt citite din nou prin exec banned_user.cfg și exec banned_ip.cfg.
9. Descărcați urmărirea conexiunilor și bufferul de recepție
Acest punct este adesea trecut cu vederea și explică defecțiuni care arată ca un atac volumetric, dar nu sunt. Kernelul creează pentru traficul UDP intrări în urmărirea conexiunilor (conntrack), iar la adrese falsificate ale expeditorului fiecare adresă înseamnă o intrare nouă. Dacă tabelul este plin, kernelul elimină pachetele fără deosebire: atacul și jucătorii dumneavoastră zboară afară împreună. Starea și limita superioară le arată o privire:
sysctl net.netfilter.nf_conntrack_count net.netfilter.nf_conntrack_max
Pasul cel mai eficient este să nu lăsați traficul de joc să fie urmărit deloc, deoarece motorul își administrează singur sesiunile:
table inet raw {
chain prerouting {
type filter hook prerouting priority raw; policy accept;
udp dport 27015 notrack
}
chain output {
type filter hook output priority raw; policy accept;
udp sport 27015 notrack
}
}
Cu iptables, echivalentul este iptables -t raw -A PREROUTING -p udp --dport 27015 -j NOTRACK și aceeași linie pentru OUTPUT cu --sport. Portul are nevoie după aceea de o deschidere explicită, deoarece fără urmărire nu se mai aplică nicio regulă care verifică o stare existentă. Dacă pachetele ajung mai repede decât srcds le preia, se revarsă suplimentar bufferul de recepție, iar asta arată pentru jucători precum pierdere de pachete pe o conexiune liberă:
net.core.rmem_max = 16777216
net.core.rmem_default = 1048576
net.core.netdev_max_backlog = 16384
Fișierul îl puneți în /etc/sysctl.d/ și îl activați cu sysctl -p. Dacă valorile sunt în general necesare, o spune kernelul însuși: dacă UdpRcvbufErrors crește în nstat -az, atunci ele își fac treaba. Dacă contorul rămâne la zero, ajustarea nu schimbă nimic. Asta este rezervă, nu protecție.
10. Măsurați, ca să nu trebuiască să ghiciți în timpul atacului
În timpul atacului, cea mai importantă întrebare este: cât ajunge, pe ce port, și este trafic de interogare sau de joc. Patru comenzi sunt suficiente:
ip -s link show eth0
nstat -az | grep -i udp
sar -n DEV 1 10
tcpdump -ni eth0 -c 200 "udp port 27015 and udp[8:4] = 0xffffffff"
Prima comandă o executați de două ori, la distanță de zece secunde, atunci aveți o rată în loc de o valoare absolută. Ultima linie arată exclusiv pachetele fără conexiune, deci exact clasa de care abuzează un val de interogări; dacă contorul se umple în câteva secunde în timp ce aproape nimeni nu este conectat, aveți răspunsul. Țineți captura scurtă, deoarece sub sarcină costă ea însăși timp de calcul. Cum încadrați valorile scrie în articolul Recunoașterea unui atac DDoS pe server.
Pasul cel mai important este însă cel pe care aproape nimeni nu îl face în avans: crearea unei baze de comparație cât timp totul este normal. Fără o valoare normală nu puteți spune după un incident dacă 40.000 de pachete pe secundă au fost mult sau pur și simplu vineri seara cu serverul Versus plin.
Unde se opresc aceste măsuri
Acum partea onestă. Tot ce a fost descris până aici are efect abia atunci când pachetele au ajuns pe placa dumneavoastră de rețea. O regulă de firewall decide asupra unui pachet care a trecut deja prin cablu. Îl puteți elimina, dar nu îl puteți face netrimis.
Calculați o dată împreună cu noi. Un server de joc tipic atârnă la 1 Gbit/s, ceea ce corespunde cu 125 de megaocteți pe secundă. La dimensiunea de pachet cât se poate de mică, această conexiune duce în jur de 1,49 milioane de pachete pe secundă, o conexiune de 10 Gbit/s în jur de 14,88 milioane. Aceasta este limita superioară fizică, independent de procesor, kernel și firewall. Un kernel de server normal procesează, în funcție de procesor și placă de rețea, câteva sute de mii de pachete pe secundă înainte să înceapă să elimine. Un atac care nu umple nici măcar o treime din conexiunea dumneavoastră poate deci să vă paralizeze serverul, deoarece timpul de calcul se duce pe eliminarea pachetelor. Operatorii trăiesc asta ca „încărcarea nici nu era mare, totuși totul dispăruse”.
În fața acestora stau atacuri reale. Două exemple din funcționarea la KernelHost, ambele filtrate în timp real: un flood UDP împotriva unui server de joc pe 7777/UDP cu peste 112,2 Gbit/s și peste 8,7 milioane de pachete pe secundă, precum și un atac cu mai mulți vectori împotriva unui server de voce pe 9987/UDP cu peste 473,4 Gbit/s și peste 41,5 milioane de pachete pe secundă. Calculați asta față de conexiunea dumneavoastră: 473,4 Gbit/s sunt în jur de 470 de ori o conexiune de 1 Gbit/s și tot în jur de 47 de ori o conexiune de 10 Gbit/s.
De aceea cele două frâne de urgență răspândite sunt nesatisfăcătoare. Nullroutingul (blackholing) scoate adresa IP atacată din rețea și încheie într-adevăr atacul, dar și serverul dumneavoastră: pentru jucătorii dumneavoastră rezultatul este identic cu un atac reușit. O redirecționare reactivă costă, în timpul de comutare, exact minutele în care se decide campania. Eficientă este doar o filtrare care rulează permanent în rețeaua din fața serverului.
Ce pune KernelHost împotrivă
Protecția permanentă, inclusă pe fiecare server
Protecția DDoS de la KernelHost este construită pe două niveluri și este permanent activă, fără să trebuiască să activați, să comandați sau să configurați ceva:
- Nivelul 1: 17 Tbps capacitate de mitigare în rețeaua globală de scrubbing. Atacurile volumetrice sunt curățate aproape de sursa lor, cu mult înainte să ajungă la centrul de date.
- Nivelul 2: filtrare Arbor în timp real de 3,2 Tbps în Frankfurt pe Main. Direct în fața serverului sunt recunoscute și eliminate șabloanele specifice fiecărui protocol, de la Layer 3 până la 7, pachet cu pachet.
Două proprietăți sunt decisive. În primul rând, filtrarea rulează permanent, nu există deci un timp de comutare în care jucătorii dumneavoastră să zboare afară. În al doilea rând, nu se folosește nullrouting: adresa IP atacată rămâne în rețea, eliminate sunt doar pachetele dăunătoare. Protecția este inclusă în fiecare pachet de server fără cost suplimentar, fără un pachet de protecție separat și fără configurare, și este activă din momentul livrării. Serverele se află în centrul de date maincubes Premium din Frankfurt pe Main. Ce jocuri și protocoale sunt acoperite enumeră articolul Protecție DDoS în timp real pentru servere de joc.
Advanced DDoS Protection pentru proiecte atacate permanent
Unele proiecte nu sunt atacate ocazional, ci țintit și pe parcursul mai multor săptămâni, cu șabloane care se schimbă și mereu exact în seara de campanie stabilită. Pentru aceste cazuri există Advanced DDoS Protection de la 50,00 € pe lună, PrePaid și fără durată minimă. Diferența nu stă în mai multă capacitate, ci în control:
- Un IP de protecție dedicat. Serverul dumneavoastră este comutat în rețeaua noastră pe această adresă, o modificare de partea dumneavoastră nu este necesară.
- Reguli de protecție administrabile de dumneavoastră pentru fiecare port și protocol. Stabiliți în panoul clientului care port este filtrat cu ce profil, deci 27015/UDP altfel decât serverul web care livrează campaniile dumneavoastră.
- Modificările se aplică în timp real, fără tichet și fără timp de așteptare. Puteți deci ajusta în timpul unui atac în curs.
- Un profil de protecție potrivit fiecărui joc. Pentru Left 4 Dead 2 și celelalte titluri Source, la fel ca pentru peste 40 de alte jocuri și protocoale, plus profiluri libere TCP și UDP pentru servere modificate.
Și aici se aplică modelul PrePaid: fără durată minimă, fără termen de preaviz, fără contract și fără taxă de instalare. Dacă valul de atacuri a trecut, pur și simplu nu prelungiți.
Cele două niveluri în comparație
| Caracteristică | Protecția permanentă inclusă | Advanced DDoS Protection |
|---|---|---|
| Preț | inclusă în fiecare pachet de server, fără cost suplimentar | de la 50,00 € pe lună, PrePaid fără durată minimă |
| Activare | activă din momentul livrării, nimic de configurat | comandați, primiți IP de protecție, serverul este comutat |
| Capacitate de filtrare | 17 Tbps scrubbing global, plus filtrare Arbor în timp real de 3,2 Tbps în Frankfurt pe Main | aceeași filtrare pe două niveluri, plus reguli proprii |
| Adresă IP | adresa IP a serverului dumneavoastră | IP de protecție dedicat suplimentar |
| Modificarea regulilor | întreținute de KernelHost, ajustare fină prin tichet | de dumneavoastră în panoul clientului, active în timp real |
| Profiluri de joc | peste 40 de jocuri și protocoale, titlurile Source incluse | profil selectabil pentru fiecare port, și pentru servere modificate |
| Nullrouting în timpul atacului | nu | nu |
| Se potrivește pentru | orice server, de la prima campanie | proiecte atacate permanent și țintit |
Pentru majoritatea proiectelor Left 4 Dead 2, protecția permanentă inclusă împreună cu o configurație curată a serverului este suficientă. Advanced DDoS Protection este răspunsul la faptul că cineva o ia personal.
Erori frecvente și soluții
Serverul a dispărut din căutarea prin lobby, dar rulează în continuare: de obicei 27015/UDP a fost blocat în bloc sau limitat prea strâns, și deoarece traficul de joc și interogarea împart același port, o regulă grosieră le lovește pe amândouă. Lucrați în schimb cu o comparație pe pachetele fără conexiune. Dacă portul este accesibil și serverul totuși invizibil, verificați sv_search_key, sv_steamgroup_exclusive, sv_lan 0 și sv_region 255, precum și dacă pornirea a avut loc din greșeală cu -nomaster.
În consola serverului apare continuu „Invalid split packet length”: acesta nu este un atac volumetric, ci un pachet de rețea asamblat greșit, care este trimis în succesiune rapidă. Traficul rămâne minuscul, serverul laghează totuși. Verificați mai întâi dacă lățimea de bandă este în general neobișnuită și aduceți la zi binarul serverului și extensiile. Lățimea de bandă nu ajută aici la nimic.
Toți jucătorii au ping mare, dar conexiunea nu este plină: asta indică rata de pachete în loc de volum. Uitați-vă la pachetele eliminate în ip -s link show și la contoarele UDP în nstat -az. Dacă în jurnalul de sistem apare nf_conntrack: table full, scoateți portul de joc cu notrack.
Regula de firewall este corectă și totuși nu are efect: verificați cu iptables -L INPUT -n -v dacă contoarele de potriviri cresc. Dacă rămân la zero, regula nu este atinsă, deoarece stă în urma lanțurilor UFW sau s-a pierdut după ultima repornire. Dacă ele cresc și nu se schimbă nimic, conexiunea din fața serverului este saturată, iar de acolo ajută doar filtrarea în rețea.
Serverul nu mai acceptă jucători, deși sunt locuri libere: de obicei o rezervare prin lobby este blocată. Fie operați serverul consecvent prin matchmaking, fie setați sv_force_unreserved 1 și lăsați jucătorii să intre prin browserul de servere. La mai mult de patru locuri cooperative cu L4DToolZ, această setare este oricum obligatorie.
Jucătorii noi încarcă la nesfârșit și conexiunea este plină în acest timp: atunci srcds livrează singur fișierele campaniei prin portul de joc. Setați sv_downloadurl către un server web și puneți fișierele acolo ca arhivă bzip2, sau trimiteți jucătorii către Steam Workshop.
Atacul face pauză după o schimbare de IP și revine după una sau două zile: acesta este cazul normal, deoarece serverul dumneavoastră publică singur noua adresă imediat ce este din nou înregistrat, iar o înregistrare DNS uitată sau un bot de Discord cu afișare de stare face restul. O schimbare de IP vă aduce ore, nu o soluție.
Pe server rulează comenzi de administrare străine: nu este un atac DDoS, ci un acces RCON compromis. Schimbați imediat parola și restricționați partea TCP a portului 27015 la adresa proprie.
Pe scurt
- Un server Left 4 Dead 2 are nevoie de exact un port deschis spre exterior: 27015/UDP. Traficul de joc și interogarea A2S îl împart, un port de interogare separat nu există.
- 27015/TCP este RCON și are ce căuta exclusiv pe adresa proprie. Cine nu are nevoie de RCON lasă
rcon_passwordgol. - Sistemul de lobby este cel mai eficient filtru de acces gratuit pe care îl cunoaște jocul:
sv_allow_lobby_connect_only 1, unsv_search_keypropriu șisv_steamgroup_exclusive 2blochează tot ce nu vine prin matchmaking. El filtrează conectări, nu pachete. - Campaniile custom au ce căuta în Steam Workshop sau în spatele lui
sv_downloadurl, niciodată prin portul de joc. Altfel, fiecare încercare de conectare întreruptă se plătește cu lățimea dumneavoastră de bandă. - Limitarea de rată trebuie să distingă între pachetele fără conexiune (care încep cu
0xffffffff) și traficul de joc. O regulă grosieră pe 27015/UDP își aruncă afară proprii jucători. - La pachete de 64 de octeți, o conexiune de 1 Gbit/s duce în jur de 1,49 milioane de pachete pe secundă. Peste asta decide exclusiv rețeaua din fața serverului, nicio setare de pe serverul însuși.
- La KernelHost, 17 Tbps de scrubbing global și o filtrare Arbor în timp real de 3,2 Tbps în Frankfurt pe Main filtrează permanent și fără cost suplimentar, fără nullrouting și fără timp de comutare.
Dacă proiectul dumneavoastră rulează deja la KernelHost, filtrarea este activă fără să trebuiască să faceți ceva. Dacă observați totuși lucruri neobișnuite, deschideți un tichet de suport, pentru ca echipa noastră să ajusteze regulile de filtrare pentru adresa dumneavoastră IP. În timpul unui atac în curs ne găsiți suplimentar prin chatul de urgență WhatsApp la +43 650 8209883. Menționați imediat patru informații: adresa IP, portul, intervalul de timp în fusul dumneavoastră orar și ce vedeți (jucătorii zboară afară, serverul nu apare în căutarea prin lobby, ping mare). Asta scutește o rundă de întrebări, iar ea contează atunci când o campanie este chiar în curs.
Dacă găzduiți în altă parte și sunteți atacat regulat, mutarea la KernelHost este calea mai scurtă decât orice regulă suplimentară pe un server a cărui conexiune se termină mai înainte. Protecția permanentă este parte din fiecare pachet de server, nu un supliment pe care îl rezervați abia în caz de urgență.
Întrebări frecvente
Ce porturi trebuie să las deschise pentru un server Left 4 Dead 2?
Serverul meu L4D2 laghează, dar conexiunea este liberă. Este un atac DDoS?
Protejează sv_allow_lobby_connect_only 1 împotriva atacurilor DDoS?
Pot limita pur și simplu rata pe portul 27015 când serverul este atacat?
Ce este o rezervare prin lobby și de ce îmi blochează serverul?
Campaniile custom îmi fac serverul vulnerabil?
De la ce dimensiune a atacului nu mai ajută nicio regulă de firewall?
Serverul meu de la KernelHost trece offline în timpul unui atac?
Protecția DDoS de la KernelHost costă în plus?
Când am nevoie suplimentar de Advanced DDoS Protection?
2026 KernelHost GmbH. Toate drepturile rezervate. Acest ghid este protejat de legea drepturilor de autor. Republicarea lui pe alte site-uri, integral, parțial sau în formă modificată, nu este permisă fără acordul nostru scris. Citatele cu indicarea sursei și cu link sunt binevenite.

