Team Fortress 2: protejarea serverului TF2 împotriva atacurilor DDoS

Publicat pe 23 min de citit

De ce porturi are nevoie cu adevărat un server Team Fortress 2, cum limitați interogările A2S, pachetele împărțite, RCON și ratele fără să cădeți din browserul de servere, și de la ce dimensiune a atacului mai ajută doar filtrarea în rețeaua din fața serverului.

Un server de comunitate Team Fortress 2 care seara, în mijlocul rundei, pierde toți jucătorii în același timp și dispare după aceea pentru câteva minute din browserul de servere are rar o problemă de hardware. În cele mai multe cazuri rulează un atac pe 27015/UDP. Acest articol arată cum protejați un server TF2 împotriva atacurilor DDoS: mai întâi ceea ce puteți face singur în următoarele zece minute, fără costuri suplimentare, apoi punctul în care aceste măsuri se termină din motive fizice și, la final, ce trebuie să se întâmple în rețeaua dinaintea lor.

Toate datele se referă la un server dedicat Source instalat cu SteamCMD (srcds_run -game tf) sub 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ță. Dacă atacul este în curs: nu modificați mai întâi nimic și nu reporniți serverul, ci salvați valorile măsurate din secțiunea 9. După atac ele nu mai există.

De ce serverele Team Fortress 2 au nevoie de protecție DDoS

Team Fortress 2 se poate juca gratuit din 2011, și exact asta deplasează economia atacurilor. Un atacator are nelimitat de multe conturi de unică folosință, nu plătește pentru niciunul dintre ele și nu riscă nimic la o interdicție. Ce costă bani la un joc cumpărat costă aici un minut.

La asta se adaugă o particularitate care deosebește TF2 de majoritatea celorlalte jocuri: de la actualizarea „Meet Your Match” din iulie 2016 nu mai există Quickplay, care repartiza automat jucătorii noi pe serverele comunității. Jucătorii noi ajung în modul Casual, pe serverele Valve. Serverele comunității se pot găsi exclusiv prin browserul de servere. Cine cade din această listă practic nu mai există pentru jucătorii noi, chiar dacă procesul serverului rulează impecabil. Un atac care doar vă împinge serverul afară din listă și-a atins deci deja scopul.

Țintele tipice sunt pe măsură: servere de comunitate care rulează permanent, cu jucători fideli (2Fort non-stop, Trade, Jailbreak, Surf, Dodgeball, Mann vs. Machine), servere de ligă cu termen fix de meci în competițiile ETF2L, RGL și ozfortress, precum și servere ai căror operatori au dat tocmai cuiva o interdicție. Declanșatorul nu este aproape niciodată tehnic. Ce este un atac DDoS explică articolul Ce este un atac DDoS?.

Porturile despre care este vorba în realitate la un server TF2

Un server TF2 are nevoie de exact un port spre exterior: 27015/UDP. Tot restul se poate dezactiva, trebuie restrâns sau circulă oricum numai spre exterior. Acest tabel este baza pentru fiecare regulă de firewall de mai jos:

Port Protocol Pentru ce Accesibil din exterior?
27015 UDP traficul de joc și interogarea serverului A2S pe același port, setat prin -port da, obligatoriu
27015 TCP RCON, controlul la distanță al serverului prin rcon_password nu, numai de la propria dumneavoastră adresă
27020 UDP SourceTV (STV), setat prin tv_port, se poate dezactiva cu -nohltv numai dacă transmiteți efectiv
27005 UDP portul clientului, pe care jucătorul îl folosește spre exterior (+clientport) nu, pe server nu este nevoie de nicio permisiune
26900 în sus UDP portul Steam al procesului de server (-steamport), crește cu fiecare instanță suplimentară nu, numai spre exterior către Steam
80 și 443 TCP FastDL pentru hărți și conținut (sv_downloadurl), dacă se află pe aceeași gazdă numai dacă descărcarea se află acolo

La mai multe instanțe pe o mașină, numerele cresc: 27016, 27017 și așa mai departe pentru joc, 27021 și 27022 pentru SourceTV. Fișierul de configurație se află sub tf/cfg/server.cfg și este citit din nou la fiecare schimbare de hartă.

De ce portul partajat 27015 este punctul cel mai sensibil

Traficul de joc și interogarea serverului împart la TF2 același port UDP, un port de interogare separat nu există. O cerere A2S_INFO are exact 25 de octeți: patru octeți FF FF FF FF, un octet 0x54 și șirul de caractere „Source Engine Query”, lung de 20 de octeți, cu zero final. Răspunsul, cu numele serverului, harta, numărul de jucători și etichetele, este un multiplu al acestei dimensiuni. Autoritatea americană CISA cifrează factorul de amplificare al protocolului Steam în alerta TA14-017A la 5,5.

Deoarece UDP nu cunoaște nicio deschidere de conexiune și adresele expeditorului se pot falsifica, asta a fost ani de zile o breșă de amplificare deschisă: un atacator interoga servere Source străine folosind adresa victimei sale ca expeditor, iar serverele își trimiteau răspunsurile către victimă. A2S_PLAYER și A2S_RULES au cerut întotdeauna o provocare obținută în prealabil, A2S_INFO nu. Abia în decembrie 2020 Valve a adăugat o provocare și pentru A2S_INFO: serverul poate trimite în locul răspunsului un S2C_CHALLENGE, pe care cel care întreabă trebuie să îl repete, dovedind astfel că nu a falsificat adresa expeditorului.

Asta atenuează reflexia, dar nu pune capăt necazului. Fiecare pachet de interogare ajunge în continuare la dumneavoastră și costă timp de calcul, înainte să primească răspuns sau să fie eliminat. Iar un atacator care vă inundă serverul direct nu are oricum nevoie de nicio amplificare.

Ce puteți face singur înainte să dați bani

Această secțiune este cea mai lungă, și asta în mod intenționat. Un server TF2 configurat curat rezistă din propriile forțe atacurilor mici și medii, indiferent la cine se află.

1. Inventar: ce ascultă și cu ce linie de pornire

Înainte să scrieți o singură regulă, verificați ce oferă serverul dumneavoastră în exterior. Nu ghiciți, verificați:

ss -lntup

Tot ce este legat la 127.0.0.1 sau ::1 nu are nevoie de nicio permisiune. Tot ce se află pe 0.0.0.0 sau [::] este accesibil din internet, inclusiv baza de date MySQL adusă de un plugin de statistici și serverul web pe care se află fișierele dumneavoastră FastDL. Comparați rezultatul cu linia dumneavoastră de pornire:

./srcds_run -game tf -console \
  -port 27015 -steamport 26901 -nohltv \
  +maxplayers 24 +map ctf_2fort +sv_pure 1 \
  +sv_setsteamaccount TOKENUL_DVS_GSLT

Fiecare port din această linie este o decizie conștientă. Cum se instalează fundația se află în Instalarea unui server de joc cu SteamCMD.

2. Lăsați deschise numai porturile de care TF2 are nevoie cu adevărat

Un server TF2 public are nevoie de exact o permisiune spre exterior, plus RCON pentru propria dumneavoastră adresă. Cu UFW, și anume în această ordine, ca să nu vă blocați singur accesul:

ufw allow 22/tcp comment 'SSH'
ufw allow 27015/udp comment 'TF2 joc și A2S'
ufw allow from 203.0.113.10 to any port 27015 proto tcp comment 'RCON'
ufw default deny incoming
ufw default allow outgoing
ufw --force enable
ufw status verbose

Înlocuiți 203.0.113.10 cu propria dumneavoastră adresă. SourceTV lipsește aici în mod intenționat: cine nu transmite pornește cu -nohltv și nu ocupă deloc 27020/UDP. Asta înjumătățește suprafața UDP a unui server TF2 accesibilă din exterior. Dacă transmiteți meciuri de ligă, se adaugă ufw allow 27020/udp, și atunci trebuie setat un tv_password.

Instrucțiunile complete, inclusiv calea de salvare, se află în Configurarea firewallului UFW fără să vă blocați singur accesul. Dacă totuși se întâmplă: serverele root KVM și serverele dedicate de la KernelHost le ajungeți prin consola VNC din panoul clientului, care funcționează independent de rețeaua sistemului oaspete.

3. Limitați interogările A2S fără să cădeți din browserul de servere

Aici se află cea mai scumpă greșeală din acest domeniu: a bloca global 27015/UDP sau a-l limita grosier în rată aruncă afară jucătorii proprii și încheie atacul în sensul dorit de atacator. Deoarece traficul de joc și interogarea ocupă același port, granița trebuie să treacă între tipurile de pachete, nu pe port.

Motorul aduce pentru asta trei variabile de consolă, care aparțin fișierului tf/cfg/server.cfg:

sv_max_queries_sec 3
sv_max_queries_sec_global 60
sv_max_queries_window 30

Prima limitează interogările cărora se răspunde, pe adresă de expeditor, a doua suma peste toate adresele, a treia stabilește fereastra de mediere în secunde. Ele protejează procesorul de a genera răspunsuri fără rost. Valorile implicite diferă în funcție de joc și de build, find sv_max_queries în consola serverului arată ce valori cunoaște serverul dumneavoastră.

A doua valoare este cea delicată la TF2: ea plafonează răspunsurile peste toate adresele. Dacă o setați prea jos, serverul dumneavoastră nu mai răspunde, în timpul unui val de interogări, nici cererilor serviciilor de listare și dispare din browserul de servere, adică din singura cale pe care jucătorii noi vă găsesc. Începeți generos și strângeți abia atunci când puteți măsura că interogările legitime trec.

Un nivel mai jos, același trafic se poate separa curat. Toate pachetele fără conexiune ale motorului Source încep cu patru octeți setați (0xffffffff), traficul jucătorilor deja conectați nu are acest cap. Pe asta se poate așeza o limitare de rată, fără să atingeți traficul de joc:

table inet tf2 {
    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ă acționeze înaintea lanțului de filtrare al UFW, iar @th,64,32 citește primii patru octeți de după capul UDP.

4. Opriți floodurile de pachete împărțite, care apar în jurnal ca NET_GetLong

Acest atac este o particularitate a motorului Source și lovește TF2 în mod deosebit, deoarece TF2 rulează până astăzi pe ramura veche a motorului. Pe lângă pachetele obișnuite fără conexiune, motorul cunoaște pachete împărțite: ele încep cu FE FF FF FF în loc de FF FF FF FF și anunță că urmează un mesaj mai mare, în mai multe părți. Serverul trebuie să stocheze temporar părțile și să aștepte restul.

Exact asta se poate abuza. Un atacator trimite în masă părți de pachet anunțate, dar niciodată complete, cu adrese de expeditor falsificate. Încărcarea procesorului crește, jocul se blochează, iar în jurnalul serverului se adună linii cu NET_GetLong. Pentru asta ajunge un singur calculator, lățime de bandă nu este aproape deloc nevoie. Operatorii raportează asta cu regularitate ca atac DDoS, deși conexiunea este aproape goală.

Deoarece un client TF2 obișnuit nu are aproape niciun motiv să trimită serverului pachete împărțite, o limitare strânsă este aici justificabilă:

udp dport 27015 @th,64,32 0xfffffffe \
    meter tf2split { ip saddr limit rate over 5/second burst 10 packets } drop

Linia aparține aceluiași lanț ca regula din secțiunea 3. Unul dintre puținele motive legitime pentru încărcările de la client îl scoateți suplimentar din joc cu sv_allowupload 0 (vedeți secțiunea 7).

5. Scoateți RCON de pe internetul deschis

Protocolul RCON al motorului Source transmite parola în clar prin TCP. Cine poate citi drumul dintre dumneavoastră și server are după aceea parola dumneavoastră RCON, iar cine are RCON poate schimba harta, poate da interdicție tuturor jucătorilor și poate opri serverul. Asta nu este o problemă de DDoS, ci o preluare, dar este raportată cu regularitate ca atac.

Nu lăsați rcon_password niciodată gol și niciodată ghicibil, o valoare din openssl rand -base64 32 este suficientă. La asta se adaugă o frână împotriva încercărilor de conectare:

rcon_password "AICI_VALOAREA_ALEATORIE"
sv_rcon_maxfailures 3
sv_rcon_minfailures 3
sv_rcon_minfailuretime 30
sv_rcon_banpenalty 1440

Cu asta serverul blochează o adresă după trei încercări eșuate în 30 de secunde, pentru 24 de ore; find sv_rcon arată ce variabile cunoaște buildul dumneavoastră. Mai eficientă rămâne totuși regula de firewall din secțiunea 2, deoarece ea nu lasă încercarea să ajungă deloc până la aplicație. Pentru accesul de la conexiuni schimbătoare configurați o redirecționare locală prin SSH și vorbiți după aceea cu RCON pe 127.0.0.1:

ssh -N -L 27015:127.0.0.1:27015 root@ADRESA.IP.A.SERVERULUI

6. Plafonați ratele și lăsați hibernarea pornită

Team Fortress 2 rulează fix cu 66,67 de ticks pe secundă. Cât trafic rezultă din asta nu îl decide tickul, ci ceea ce are voie să solicite un singur client. Fără o limită superioară, fiecare jucător își ia cât cere clientul lui, iar asta o plătiți cu lățimea dumneavoastră de bandă de ieșire:

sv_minrate 50000
sv_maxrate 100000
sv_mincmdrate 40
sv_maxcmdrate 66
sv_minupdaterate 40
sv_maxupdaterate 66

Faceți o dată socoteala: la sv_maxrate 100000 fiecare jucător poate primi 100 de kiloocteți pe secundă, pe 24 de locuri asta înseamnă 2,4 megaocteți pe secundă, adică circa 19 Mbit/s spre exterior. Dacă setați sv_maxrate 0, nu există nicio limită superioară. Serverele de ligă fac asta în mod conștient, un server public cu multe locuri nu ar trebui. Pluginurile care deblochează rata de ticks multiplică rata de pachete pe jucător și, cu ea, același calcul.

Al doilea punct este făcut adesea greșit. TF2 adoarme de îndată ce nimeni nu este conectat și are nevoie în această stare de aproape niciun procesor. Mulți operatori dezactivează asta, ca serverul să se simtă „treaz”. Pe o mașină cu mai multe instanțe asta înseamnă că procesorul este ocupat deja în gol și că un atac lovește un sistem care este deja plin. Lăsați valoarea implicită pe loc:

sv_hibernate_when_empty 1
sv_hibernate_postgame_delay 5
tf_allow_server_hibernation 1

7. Separați FastDL și dezactivați încărcările

Serverele comunității trăiesc din hărți proprii, și exact din asta rezultă o a doua suprafață de atac. Fără sv_downloadurl, fiecare jucător descarcă conținutul prin canalul de rețea al jocului, adică prin același port și același proces care calculează în același timp meciul. Sunt câțiva kiloocteți pe secundă și un fișier după altul, iar la o colecție de hărți de 200 de megaocteți asta vă blochează serverul minute în șir, pentru fiecare jucător în parte:

sv_allowdownload 1
sv_allowupload 0
net_maxfilesize 64
sv_downloadurl "https://fastdl.example.org/tf/"

net_maxfilesize este implicit pe 15 și se poate ridica la cel mult 64 de megaocteți. sv_allowupload 0 împiedică clienții să trimită serverului fișiere proprii (de exemplu sprayuri) și scoate astfel unul dintre puținele motive legitime pentru pachetele împărțite din secțiunea 4.

Decisiv este unde se află gazda FastDL. Dacă se află pe aceeași adresă IP ca serverul de joc, ajunge un flood HTTP împotriva 443/TCP pentru a umple conexiunea și pentru a sufoca astfel și 27015/UDP. Puneți descărcarea rapidă pe o altă gazdă sau în spatele unei rețele de conținut, atunci un atac asupra fișierelor nu lovește jocul.

8. Limitați sistemul de vot, floodurile de conectări și pluginurile

Nu fiecare cădere este lățime de bandă. Deoarece TF2 este gratuit, un atac asupra logicii jocului nu costă nimic în afară de conturi: flooduri de conectări care ocupă fiecare loc, spam de voce și de chat și voturi abuzate, care aruncă afară jucătorii obișnuiți. Valorile implicite ale TF2 sunt aici deja rezonabile, dar sunt slăbite frecvent:

sv_allow_votes 1
sv_vote_issue_kick_allowed 0
sv_vote_allow_spectators 0
sv_vote_creation_timer 150
sv_vote_failure_timer 300
sv_vote_quorum_ratio 0.6

Acestea sunt valorile standard: voturile sunt permise, voturile de kick nu, spectatorii nu votează, între două voturi trec 150 de secunde, după unul eșuat 300, iar un vot are nevoie de 60 la sută de acord. Cine setează sv_vote_issue_kick_allowed 1 ar trebui să știe că deschide astfel un instrument care pe un server public este abuzat cu siguranță.

Tot ce depășește asta vine la TF2 din SourceMod și Metamod:Source. Amândouă se află sub tf/addons/ și se anunță în consolă cu meta version și sm version. Altfel decât la Counter-Strike 2, fundația este aici matură, iar pluginurile pentru liste de interdicții, verificarea la conectare și limitarea chatului sunt calea obișnuită. Două reguli pentru asta: fiecare plugin este cod în același proces, un plugin care se prăbușește ia serverul cu el. Și pluginurile care aduc servicii web proprii deschid porturi suplimentare și publică uneori exact adresa pe care vreți să o protejați. sm plugins list arată ce rulează efectiv.

Cât de serios trebuie luată partea motorului arată aprilie 2020: după scurgerea unor versiuni mai vechi de cod sursă de la TF2 și CS:GO, operatori mari de comunitate precum Creators.TF și Red Sun și-au oprit temporar serverele, de grija exploatării. Țineți binarul serverului la zi, iar extensiile potrivite cu versiunea motorului.

9. Măsurați și înregistrați înainte să ardă

Pasul cel mai important este cel pe care aproape nimeni nu îl face dinainte: să creați o bază de comparație cât timp totul merge 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. În timpul unui incident sunt suficiente patru comenzi:

ip -s link show eth0
nstat -az | grep -i udp
tcpdump -ni eth0 -c 200 "udp port 27015 and udp[8:4] = 0xffffffff"
tcpdump -ni eth0 -c 200 "udp port 27015 and udp[8:4] = 0xfffffffe"

Prima comandă arată pachete, erori și pachete eliminate pe fiecare interfață; executați-o de două ori, la distanță de zece secunde, atunci aveți o rată în loc de o valoare absolută. Cele două capturi separă valul de interogări de floodul de pachete împărțite și răspund astfel la întrebarea care dintre cele două reguli din secțiunile 3 și 4 trebuie să acționeze. Limitați-le întotdeauna cu -c, o captură sub încărcare maximă costă ea însăși timp de calcul.

În interiorul serverului, comanda de consolă stats livrează într-o singură linie încărcarea procesorului, încărcarea de rețea de intrare și de ieșire în kiloocteți pe secundă, rata de cadre a serverului și numărul de jucători. Dacă rata de cadre a serverului scade clar sub valoarea tickului, în timp ce numărul de jucători este normal, serverul lucrează la altceva decât la joc. Cum încadrați valorile se află în Recunoașterea unui atac DDoS pe server.

Unde se termină aceste măsuri: lățimea de bandă și rata de pachete

Acum partea pe care niciun fișier de configurație nu o poate rezolva. Toate măsurile de până acum rulează pe serverul dumneavoastră, deci la capătul conexiunii. 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.

Puneți regimul normal al unui server TF2 plin lângă un atac real, atunci raportul devine clar:

Indicator Server TF2 plin, 24 de locuri, 66,67 de ticks Atac
Pachete de intrare circa 1.600 pe secundă (24 de jucători ori 66 de comenzi) mai multe milioane pe secundă
Lățime de bandă de intrare clar sub 2 Mbit/s de obicei 5 până la 50 Gbit/s împotriva game serverelor de comunitate
Lățime de bandă de ieșire circa 19 Mbit/s la sv_maxrate 100000 nu este problema
Interogări A2S câteva pe minut pentru fiecare serviciu de listare mai multe mii pe secundă
Limita fizică superioară 1 Gbit/s transportă circa 1,49 milioane de pachete minime pe secundă 10 Gbit/s transportă circa 14,88 milioane

Un game server tipic atârnă de o conexiune de 1 Gbit/s, adică 125 de megaocteți pe secundă, iar conexiunea este plină de îndată ce cineva trimite mai mult. A doua mărime este rata de pachete, și ea lovește de obicei mai devreme decât lățimea de bandă: fiecare pachet costă o trecere prin stiva de rețea, chiar dacă este eliminat după aceea. Un atac care nu vă umple conexiunea nici măcar la o treime vă scoate deci totuși serverul din funcțiune. Operatorii trăiesc asta ca „încărcarea nici nu era mare, și totuși totul era pierdut”.

Pentru încadrare, ce ordine de mărime apar în realitate: pe serverele KernelHost au fost filtrate în timp real, printre altele, un flood UDP împotriva unui game server cu peste 112,2 Gbit/s la peste 8,7 milioane de pachete pe secundă și un atac cu vectori multipli împotriva unui server de voce cu peste 473,4 Gbit/s la peste 41,5 milioane de pachete pe secundă. 473,4 Gbit/s sunt circa de 470 de ori o conexiune de 1 Gbit/s. Pentru asta nu există nicio setare locală.

Cele două frâne de urgență răspândite nu ajută mai departe. Nullroutingul scoate adresa IP atacată din rețea și încheie atacul, dar și serverul dumneavoastră. O redirecționare reactivă costă, în timpul de comutare, exact minutele în care se decide meciul. Eficientă este numai o filtrare care rulează permanent în rețeaua din fața serverului.

Ce pune KernelHost împotriva atacurilor asupra serverelor TF2

Protecția permanentă, inclusă în fiecare pachet de server

Protecția DDoS de la KernelHost este construită pe două niveluri și este activă permanent din momentul livrării, fără să fie nevoie să comandați, să activaț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, înainte să ajungă în centrul de date.
  • Nivelul 2: filtrare Arbor în timp real cu 3,2 Tbps în Frankfurt pe Main. Direct în fața serverului, modelele specifice de protocol sunt recunoscute și eliminate, pachet cu pachet.

Două proprietăți sunt decisive pentru un server TF2. Filtrarea rulează permanent și nu trebuie să reacționeze abia la un atac, deci nu există niciun timp de comutare în care jucătorii dumneavoastră zboară afară și serverul dumneavoastră cade din browserul de servere. Și nu se folosește nullrouting: adresa dumneavoastră IP rămâne în rețea, eliminate sunt numai pachetele dăunătoare. Ce jocuri și protocoale sunt acoperite le enumeră Protecție DDoS în timp real pentru game servere.

Advanced DDoS Protection pentru serverele bombardate permanent

Unele proiecte nu sunt atacate ocazional, ci în mod țintit și săptămâni în șir, cu modele schimbătoare și mereu exact la ora meciului. Pentru asta există Advanced DDoS Protection de la 50,00 EUR pe lună, PrePaid și fără durată minimă. Diferența nu stă în mai multă capacitate, ci în control:

  • IP de protecție dedicat din nucleul de la Frankfurt, pe care serverul dumneavoastră este comutat în rețeaua noastră. De partea dumneavoastră nu este nevoie de nicio modificare.
  • Reguli de protecție administrabile de dumneavoastră, pe port și pe protocol, în panoul clientului: stabiliți separat ce este permis pe 27015/UDP, ce pe 27020/UDP și ce pe 27015/TCP, fără să scrieți pentru asta un tichet.
  • Modificările au efect în timp real, deci puteți ajusta chiar în timpul unui atac în desfășurare, în loc să așteptați până la sfârșitul meciului.
  • Profil de protecție potrivit jocului, pentru Team Fortress 2 și celelalte titluri Source la fel ca profilurile TCP și UDP libere pentru aplicații proprii.

Oferta se adresează serverelor care rulează la KernelHost. Dacă serverul dumneavoastră TF2 se află în prezent în altă parte și este bombardat cu regularitate, mutarea este calea către această protecție.

Cele două niveluri în comparație

Caracteristică Protecția DDoS permanentă inclusă Advanced DDoS Protection
Preț inclusă în fiecare pachet de server, fără cost suplimentar de la 50,00 EUR pe lună, PrePaid
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 cu 3,2 Tbps în Frankfurt pe Main aceeași filtrare pe două niveluri
Adresă IP adresa IP a serverului dumneavoastră IP de protecție dedicat suplimentar
Set de reguli profiluri automate, ajustare fină prin tichet reguli proprii pe port și pe protocol în panoul clientului
Modificări se aplică automat au efect în timp real, chiar și în timpul unui atac
Profil de joc profiluri optimizate pentru jocurile răspândite, Team Fortress 2 inclus profil selectabil pe port, și pentru servere modificate
Nullrouting nu nu
Durată legată de pachetul de server PrePaid, fără durată minimă, fără termen de preaviz, fără taxă de instalare

Pentru majoritatea serverelor de comunitate TF2, protecția permanentă inclusă este suficientă împreună cu o configurație curată a serverului. Advanced DDoS Protection este răspunsul la faptul că cineva o ia personal.

Greșeli frecvente și soluții

„Serverul rulează, dar nu mai apare în browserul de servere”: Verificați mai întâi Game Server Login Tokenul. Serverele TF2 au nevoie de un token pentru intrarea publică, setat prin sv_setsteamaccount și generat pentru App ID 440. Steam retrage tokenurile care nu au fost folosite 30 de zile. Un server care dispare după o pauză mai lungă are deci adesea nevoie doar de un token nou și nu este deloc atacat. Abia după aceea intră în discuție un sv_max_queries_sec_global prea mic sau o regulă de firewall prea grosieră pe 27015/UDP.

„Procesorul stă la 100 la sută, conexiunea este aproape goală”: Aceasta este imaginea tipică a unui val de interogări sau a unui flood de pachete împărțite. Căutați în jurnalul serverului linii cu NET_GetLong și măsurați cu cele două linii de tcpdump din secțiunea 9 ce fel de pachete sosesc.

„Regulile mele de nftables sau de iptables nu acționează”: Trei cauze sunt frecvente. Regula stă în spatele lanțurilor UFW și nu este atinsă niciodată (de aceea prioritatea -10), ea a dispărut după ultima repornire, sau atacul este volumetric și regula lucrează corect pe o conexiune care este deja plină. Verificați cu nft list ruleset dacă contoarele cresc. Dacă rămân la zero, regula nu este atinsă.

„Am schimbat adresa IP și a doua zi eram iar offline”: Atacatorul găsește adresa nouă din aceeași sursă ca pe cea veche. Serverul dumneavoastră o publică singur, de îndată ce apare din nou în browserul de servere, iar vechile înregistrări DNS și boții de Discord cu afișare de stare fac restul. O schimbare de adresă aduce ore, nu o soluție.

„Serverul se prăbușește în mod reproductibil, fără ca lățimea de bandă să iasă în evidență”: De obicei nu este un atac DDoS, ci un plugin care nu se potrivește cu versiunea motorului sau un binar de server învechit. sm plugins list și o comparație a versiunilor sunt aici mai rapide decât orice regulă de filtrare.

„Serverul reacționează cu întârziere după gol”: Aceasta este hibernarea și nu o eroare. Ea coboară încărcarea procesorului la aproape zero cât timp nimeni nu este conectat, și exact aceasta este starea în care vreți să aveți rezerve.

„Pe server rulează comenzi de administrare străine”: Nu este un atac DDoS, ci un acces RCON compromis. Setați parola imediat din nou, restrângeți portul la propria dumneavoastră adresă și țineți minte că parola circulă în clar pe conexiune.

„Furnizorul meu de până acum mi-a blocat adresa IP”: Acesta este nullrouting. Furnizorul își protejează astfel propria rețea, pentru dumneavoastră rezultatul este identic cu un atac reușit, de obicei încă pentru ore după aceea. Întrebați la nevoie dacă se filtrează sau se face nullrouting. Răspunsul decide mai mult asupra disponibilității dumneavoastră decât orice specificație de hardware.

Pe scurt

  • Un server TF2 are nevoie spre exterior exact de 27015/UDP. RCON pe 27015/TCP trebuie restrâns la propria adresă, iar SourceTV pe 27020/UDP se dezactivează cu -nohltv dacă nu transmiteți.
  • Traficul de joc și interogarea A2S împart același port. Cine blochează sau limitează global 27015/UDP își aruncă afară jucătorii proprii. Granița trebuie să treacă între tipurile de pachete, recognoscibile după primii patru octeți de după capul UDP.
  • Floodurile de pachete împărțite, cu capul FE FF FF FF, produc încărcare de procesor în loc de lățime de bandă și apar în jurnal ca NET_GetLong. O limitare strânsă a acestui tip de pachete este la TF2 justificabilă.
  • De la „Meet Your Match”, jucătorii noi găsesc serverele comunității numai prin browserul de servere. Fiecare măsură care vă împinge afară din listă acționează ca atacul însuși.
  • Un server plin cu 24 de locuri prelucrează circa 1.600 de pachete de intrare pe secundă. Atacurile împotriva game serverelor de comunitate se situează de obicei la 5 până la 50 Gbit/s și la mai multe milioane de pachete pe secundă.
  • 1 Gbit/s transportă, la pachete minime, circa 1,49 milioane de pachete pe secundă. Deasupra acestei limite decide exclusiv rețeaua din fața serverului, nicio regulă de pe server.
  • La KernelHost, protecția permanentă pe două niveluri este inclusă în fiecare pachet de server fără cost suplimentar și este activă din momentul livrării, fără nullrouting. Advanced DDoS Protection se adaugă de la 50,00 EUR pe lună, dacă vreți să conduceți singur regulile pe port.

Dacă serverul dumneavoastră rulează deja la KernelHost, filtrarea este activă fără să trebuiască să faceți ceva. Dacă observați totuși nereguli, deschideți un tichet de suport, pentru ca regulile de filtrare pentru adresa dumneavoastră IP să fie ajustate. În timpul unui atac în desfășurare ne puteți contacta suplimentar prin chatul de urgență WhatsApp la +43 650 8209883. Menționați imediat patru date: adresa IP, portul, intervalul de timp în fusul dumneavoastră orar și ce observați. Asta scutește o rundă de întrebări, iar ea contează când rulează un meci.

Întrebări frecvente

Serverul meu TF2 este offline chiar acum. Cum recunosc dacă este un atac DDoS?
Uitați-vă la rata de pachete a interfeței, nu la încărcarea procesorului. Cu ip -s link show eth0, executat de două ori la distanță de zece secunde, obțineți o rată în loc de o valoare absolută, iar cu nstat -az contoarele UDP. Dacă pachetele de intrare urcă mult peste valoarea normală în timp ce aproape nimeni nu este conectat, rulează un atac. Dacă contoarele de rețea rămân neremarcabile și serverul se prăbușește totuși, cauza este de obicei un plugin sau un binar de server învechit, nu un atac.
Ce porturi trebuie să las deschise pentru un server Team Fortress 2?
Exact unul: 27015/UDP. Prin acest port circulă împreună traficul de joc și interogarea serverului A2S, un port de interogare separat nu există la TF2. 27015/TCP este RCON și trebuie restrâns la propria dumneavoastră adresă. 27020/UDP este SourceTV și nu se ocupă deloc, cu parametrul de pornire -nohltv, dacă nu transmiteți. 27005/UDP este portul clientului jucătorului și nu are nevoie de nicio permisiune pe server, iar portul Steam de la 26900 în sus numai spre exterior.
Pot să blochez sau să limitez în rată pur și simplu portul 27015?
Nu. Deoarece traficul de joc și interogarea A2S împart același port, o regulă grosieră lovește amândouă: jucătorii dumneavoastră zboară afară, iar serverul dispare din browserul de servere. Granița trebuie să treacă între tipurile de pachete. Toate pachetele fără conexiune ale motorului Source încep cu patru octeți setați (0xffffffff), traficul jucătorilor conectați nu. Exact pe asta se poate așeza cu nftables o limitare de rată pe adresă de expeditor, fără să atingeți traficul de joc.
Ce înseamnă liniile cu NET_GetLong din jurnalul serverului?
Acesta este indiciul unui flood de pachete împărțite, o particularitate a motorului Source. Pachetele împărțite încep cu cei patru octeți FE FF FF FF și anunță că urmează un mesaj mai mare, în părți. Un atacator trimite în masă părți anunțate, dar niciodată complete, cu adrese de expeditor falsificate, iar serverul așteaptă și stochează temporar. Asta produce încărcare de procesor în loc de lățime de bandă: conexiunea rămâne aproape goală, jocul se blochează totuși. O limitare de rată strânsă pe acest tip de pachete este la TF2 justificabilă.
Serverul meu rulează, dar nu mai apare în browserul de servere. Sunt atacat?
Nu neapărat. Verificați mai întâi Game Server Login Tokenul, de care are nevoie fiecare server TF2 listat public și care se setează prin sv_setsteamaccount, generat pentru App ID 440. Steam retrage tokenurile care nu au fost folosite 30 de zile. Abia după aceea intră în discuție un sv_max_queries_sec_global setat prea jos, o regulă de firewall prea grosieră pe 27015/UDP sau un val real de interogări. De la actualizarea Meet Your Match, browserul de servere este singura cale pe care jucătorii noi găsesc serverele comunității.
Ajută dacă schimb repede adresa IP acum?
Doar pentru scurt timp. Serverul dumneavoastră publică singur adresa nouă, de îndată ce este din nou înscris în browserul de servere, pentru că exact asta este condiția ca jucătorii să îl găsească. La asta se adaugă vechile înregistrări DNS, boții de Discord cu afișare de stare și paginile de listare, care preiau intrarea. O schimbare de adresă aduce ore până la zile, dar nu rezolvă problema. Cine este bombardat permanent are nevoie de o filtrare în rețeaua din fața serverului.
De la ce dimensiune a atacului nu mai face față singur serverul meu TF2?
Un server plin cu 24 de locuri prelucrează circa 1.600 de pachete de intrare pe secundă și clar sub 2 Mbit/s. Un game server tipic atârnă de o conexiune de 1 Gbit/s, ceea ce corespunde cu 125 de megaocteți pe secundă. Atacurile împotriva game serverelor de comunitate se situează de obicei între 5 și 50 Gbit/s. La fel de importantă este rata de pachete: în 1 Gbit/s încap, la pachete minime, circa 1,49 milioane de pachete pe secundă, în timp ce un kernel obișnuit de server prelucrează doar câteva sute de mii dintre ele. Un atac vă poate deci scoate din funcțiune, deși lățimea de bandă nu este epuizată.
Serverul meu de la KernelHost cade offline în timpul unui atac?
Nu. Nu se folosește nullrouting. Adresa dumneavoastră IP rămâne în rețea, eliminate sunt numai pachetele dăunătoare. Protecția este construită pe două niveluri: 17 Tbps capacitate de mitigare în rețeaua globală de scrubbing și o filtrare Arbor în timp real cu 3,2 Tbps în Frankfurt pe Main. Ea rulează permanent și nu trebuie să reacționeze abia la un atac. Pentru un server TF2 asta este decisiv, deoarece nu există niciun timp de comutare în care jucătorii zboară afară și serverul cade din browserul de servere.
Costă extra protecția DDoS la KernelHost și când am nevoie de Advanced DDoS Protection?
Protecția permanentă pe două niveluri este inclusă în fiecare pachet de server fără cost suplimentar și este activă din momentul livrării, nu trebuie nici să o comandați, nici să o activați. Advanced DDoS Protection vă trebuie atunci când serverul dumneavoastră este atacat în mod țintit și săptămâni în șir și când vreți să conduceți singur filtrarea. Primiți un IP de protecție dedicat și administrați regulile de protecție pe port și pe protocol în panoul clientului, deci 27015/UDP separat de 27020/UDP. Modificările au efect în timp real. Prețul începe de la 50,00 EUR pe lună, PrePaid, fără durată minimă și fără taxă de instalare.

Team Fortress 2 Protecție DDoS TF2 Servere de comunitate SourceTV SourceMod Port 27015 Protecție game server Advanced DDoS Protection