Adaugă la favorite Adaugă la favorite    Tipăreşte Tipăreşte

Considerente securitate server joc @ 2017


 
Dupa cum bine stiti, in ultima vreme au aparut tot felul de metode prin care un tert ce are sau nu un motiv poate decide sa afecteze buna functionare a serverului de joc prin diverse tertipuri, acest tutorial aduce in atentia clientilor anumite considerente ce trebuie sa le luati in calcul atat la nivel de configurare cat si in administrarea de zi cu zi. Acest document nu este menit sa inlocuiasca documentul de recomandari de instalare si configurare ci sa-l suplineasca ! http://www.krond.org/knowledgebase/91/Recomandari-instalare-si-configurare.html.


Incepand cu 03.Mai.2017 NU mai asiguram asistenta pentru urmatoarele versiuni:
  • engine "cs_old" (5787) | steam + nonsteam
  • engine "cs_new" (6153) | nonsteam

in ambele cazuri va sugeram upgrade de engine reHLDS conform http://www.krond.org/knowledgebase/109/Upgrade-de-securitate-engine-reHLDS-at-2017.html 


 
 
1. Nonsteam si adminele pe steamid
 
Un server cu dproto - versiunea nonsteam instalata face diferenta intre id de steam legit sau nu, insa el nu va interzice accesul unui jucator ce-si cloneaza steamid-ul, cu alte cuvinte ... nu va impiedica in nici un mod accesul pe server a unui jucator ce-si cloneaza steamid-ul legit al unui ... admin spre exemplu! Daca ne gandim mai departe atunci respectivul atacator nu va mai avea nici un fel de impediment sa capete acces de admin si sa faca mai departe ce doreste. 
 
Am avut o sumedenie de tickete ce acuzau aceasta problema, un admin aparent cunoscut intra pe server (din celalalt colt al lumii) si incepe sa-l goleasca cu banuri/kick-uri sau alte activitati.
 
Solutia ?
 
a) Eliminati toate accesele de admin pe steamid precum si alte plugin-uri ce sunt configurate sa acorde credit exclusiv pe baza acestei informatii.
b) Pastrati accesele pe steamid insa adaugati autentificarea prin parola (ca a unui admin dat pe nume), de exemplu acum poti avea ceva de genu in users.ini:
 
"STEAM_0:1:11922346" "" "abcdefg" "ce"
 
Acel "ce" din coada e problematic pentru un server nonsteam cu dproto, il vom inlcui cu flag-urile "ca" si vom adauga parola astfel:
 
"STEAM_0:1:11922346" "parola" "abcdefg" "ca"
 
Astfel ... cand va incerca adminul cu steamid "STEAM_0:1:11922346" sa se conecteze el va trebui ca inainte de asta sa adauge in consola setinfo _pw "parola", altfel va primi kick. 
Mai multe informatii cu privire la flag-uri si nivele de acces, pe pagina oficiala amxmodx: https://wiki.alliedmods.net/Adding_Admins_(AMX_Mod_X)
 
 
2. Aflarea parolei de admin ... prin conectarea pe alte servere
 
Stim foarte bine ca un jucator / admin cu acces special dupa caz nu se va conecta doar pe serverul nostru, el poate juca si pe altele ... problema aici apare inca din momentul in care ne configuram parametrul "amx_password_field" din amxx.cfg ce defineste modul in care adminul isi va adauga parola inainte de conectare la server (setinfo _pw sau _alt-tag "parola"), in cazul in care punem acest parametru _respawnteg sau orice alta valoare ce sugereaza ori chiar indica serverul pentru care au fost setate ... avem o problema!
 
De ce ? Deschide CS-ul si da-i comanda "setinfo" in consola fara a fi conectat pe vreun server, toate acele informatii se transmit oricarui server pe care ne conectam ... ce-l va impiedica pe un detinator de server sa salveze acele date intr-un TXT pentru o analiza si testare ulterioara ? Nimic!
 
Au fost suficiente cazuri in care terti detinatori si-au instalat plugin-uri de salvare a acestor informatii ulterior avand accesul adminului unui alt server, mai departe ... imaginati-va ca se poate intampla orice, asta incluzand sabotarea intentionata a functionarii serverului concurent.
 
Solutia o reprezinta nemodificarea parametrului "amx_password_field", adica sa-l lasam implicit "_pw" - nu este una care ne scapa 100% de probleme insa acela care salveaza setinfo-ul transmis de clienti chiar nu va stii pentru ce server a primit acel parametru si nici nu-si va bate capul sa afle, asta bineinteles daca nici parola nu sugereaza serverul pentru care a fost setata, o parola de genu: "parolapentrurespawnindungi" nu e deloc in regula. 

Noua metoda 2016: "Salut, vino te rog la mine pe server ca am impresia ca e lag" < atacatorul avand totul pregatit ca sa preia datele adminului


2.1. Aflarea parolei de admin si a celorlalti admini


In momentul in care raufacatorul capata un anumit nivel de acces, fie prin punctele 1,2 de mai sus ori prin spargerea parolei RCON (foarte rar), se pot intampla urmatoarele chestiuni:

a) Intra pe server cu accesul respectiv iar daca are acces la amx_cvar (litera/flag-ul G) ori amx_rcon (litera/flag-ul L), executa schimbarea parolei de RCON foarte simplu > amx_rcon rcon_password "parola" sau amx_cvar rcon_password "parola", din acel moment ... lucrurile sunt foarte simple: deschide HLSW, introduce parola RCON si incepe:

amx_who -> lista de admini, il observa pe cel cu acces:

Clients on server:
# nick authid userid imm res access
1 Daniell STEAM_0:0:950925440 5513 No No z
2 3N3<3R STEAM_ID_LAN 5510 No No z
3 Admin-exemplu STEAM_0:1:123456 5512 Yes Yes abcdefghijkmnopqrstu
5 Kurama :# STEAM_0:0:1224603642 5516 No No z


users -> daca amx_who nu este disponibil

userid : uniqueid : name
------ : ---------: ----
5513 : STEAM_0:0:950925440 : Daniell
5510 : STEAM_ID_LAN : 3N3<3R
5512 : STEAM_0:1:123456: Admin-exemplu
5566 : STEAM_0:0:2143596895 : no n
5516 : STEAM_0:0:1224603642 : Kurama :#
5520 : STEAM_ID_LAN : Carciuma



si apoi le ia accesele foarte simplu, in exemplul de mai sus avem la amx_who adminul cu userid 5512 (il deosebim simplu > nu are flag-ul z), daca executam comanda:

user 5512-> ne va fi afisat intreg setinfo-ul clientului in cauza

_cl_autowepswitch 1
bottomcolor 6
cl_dlmax 512
cl_lc 1
cl_lw 1
topcolor 30
_vgui_menus 1
_ah 1
_servercs parolamea
_serverdr parolamea123
_serversurf parolamea123
rate 25000
cl_updaterate 101
name Admin-exemplu
*sid 76561198131672993
model arctic


observi problema ? atacatorul deja stie parola acestui admin, o noteaza intr-un txt pentru utilizare ulterioara - imagineaza-ti sa ai 10 admini pe server, noteaza parolele tuturor - daca i-ai scos un acces sau ai schimbat parola unui admin, nici o problema ... cand are el chef se autentifica cu alt admin, descarca iar toate datele adminilor autentificati si o ia de la capat, simplu, eficient si foarte enervant. 

De regula cand se intampla asta ai impresia ca ti s-a spart RCON-ul, desi stii foarte clar ca aveai o parola complicata ori nici o parola setata - RCON-ul NU SE POATE SPARGE daca ai o parola complicata sau nu l-ai setat deloc, toate pornesc de la un admin cu acces suficient sa faciliteze cascada de informatii mentionata anterior - in momentul in care ti s-a spart serverul prin aceasta metoda (foarte populara in 2016) daca nu urmezi recomandarile de mai jos nu vei rezolva niciodata problema.

b) Cu acces la RCON (explicat la punctul anterior), iti poate:
- dezactiva foarte simplu log-urile (log off) astfel incat tu sa nu mai vezi nimic din ce s-a intamplat pe server
- adauga admini noi, de care tu nu stii nimic (amx_addadmin) si sa te trezesti cu ei in users.ini, de cate ori pe zi verifici acel fisier ? daca ai multi admini ... ii tii minte pe toti ?
- sterge serverul din site-urile de statistici, gametracker.com este protejat de noi prin functia de aici > http://www.krond.org/knowledgebase/102/LINUX-Protectie-claim-GameTracker-dot-com.html insa alte site-uri nu sunt sub aceasta protectie
- distruge tot serverul (kick/ban/destroy/etc)
- dezactiva orice fel de plugin (inclusiv Krond-Functions) sau alte elemente construite sa te protejeze


Recomandari

Cel mai important este sa intelegi intru-totul acest punct si cascada de evenimente la care te expui din simpla spargere a unui admin cu acces prea mare, nu pleca urechea la admini ce-ti spun ca nu se simt "owneri" sau "founderi" daca n-au nu stiu ce litera > tot la tine vin cand au vreo problema deci esti responsabil de securitatea si buna functionare a serverului de joc! Daca s-a intamplat deja o chestiune similara pe serverul tau ori vrei sa preintampini acest pericol la care te expui, ai in vedere:

- Nici un fel de admin cu acces de amx_cvar (litera/flag-ul G) ori amx_rcon (litera/flag-ul L) - nici macar tu, prietena, vecinul sau fratele - ori daca ai nevoie musai, nu te conecta pe alte servere cand te cheama cineva pentru ca s-ar putea sa iti fure parola asa cum am explicat mai sus. Poti foarte simplu sa-ti setezi o parola RCON si sa-ti administrezi serverul/cvar-urile din HLSW. NU TE BAZA PE cmdaccess.ini! Scoate flag-ul DIRECT din users.ini!

- Daca ti s-a intamplat acest gen de atac pana acum, aplica recomandarile mentionate anterior cu serverul inchis - apoi verifica admin cu admin si schimba-le parolele la toti

- Instruieste-ti adminii sa-si curete setinfo-ul la conectarea pe alte servere setinfo _pw (sau ce este) "" - in consola clientului INAINTE de a se conecta pe alte servere - chiar daca nu toti respecta acest lucru, daca se intampla sa-i fure cineva adminul macar stii sigur ce si cum din loguri si nu iti mai sunt periclitate toate parolele adminilor pentru ca atacatorul n-are acces la amx_cvar sau amx_rcon si implicit nu poate face nimic altceva decat sa se joace cu acel nivel de acces al adminului furat. 


3. Amx_ip / Amx_showip la discretia oricarui jucator
 
Nu e bine deloc! Pentru ca au aparut metode prin care un atacator poate lua lista IP-urilor jucatorilor conectati - pusa la dispozitie chiar de server, acesta dintai transmitandu-le un pachet de date special craftat pentru a le da crash la client - asa va puteti trezi cu serverul gol sau cu jucatorii redirectionati pe alt server in mai putin de 2 secunde. Aici aveti doua posibilitati, ori scoateti de tot orice plugin care raspunde la aceste comenzi ori care printeaza ip-urile jucatorilor sau ... restrictionati comanda exclusiv pentru admini (in speranta ca adminul in cauza nu este partinitor cu atacatorul ori chiar el vrea sa goleasca serverul fara a lasa loguri) - bineinteles in cazul in care adminul posibil partinitor are acces de rcon la amx ... aceasta solutie nu ne ajuta cu nimic pentru ca comanda amx_rcon status rezolva problema si furnizeaza informatiile necesare. 
 
Amx_ip  incepand cu versiunea 1.3 (facut de Krond) raporteaza ip-urile jucatorilor conectati doar la admini, insa noi am recomanda scoaterea completa a acestui plugin.
 
 
4. Upgrade DPROTO v0.9.548 (actualizat: 24.04.2015)
 
  • UPDATE > [15.09.2015] > xFakePlayers >> S-a actualizat versiunea 2.1.2 ce se va aplica la restart din panoul de control, incidenta kick-urilor eronate a scazut cu peste 80% - recomandam reactivarea update-urilor conform http://www.krond.org/knowledgebase/106/Configurare-wrapper-gameserverconfig.html daca totusi decizi sa dezactivezi "FakeDetector-ul" (vezi mai jos de ce anume te protejeaza) trece "update_dproto_aux = 00" in fisierul de configurare explicat in cadrul linkului precedent urmat de un restart la server din panoul de control. 
  • UPDATE > [11.08.2015] > xFakePlayers >> Cu toate actualizarile la zi, este foarte posibil ca unii jucatori legitimi sa primeasca "kick" pe motiv de "fake client/player", acesta este un "false-positive" generat indeosebi de modulul "fakedetector" ce se intampla destul de rar, aleatoriu si de multe ori repetitiv pe aceiasi jucatori ce au un setinfo prea incarcat ori sunt "bindati" de pe alte servere, se recomanda curatarea manuala a configului de partea acelor jucatori (client) si reincercare de conectare. In contextul amenintarilor curente (xfakeplayers) ce pune la dispozitia unui potential atacator o unealta ce are capacitatea sa afecteze buna functionare a unui server (spam de chat/radio/etc, boti prin proxy, spam de boti cu speed-hack, s.a.m.d) nu exista "perfectiune" la nivel de nonsteam. In cazul in care alegi sa dezactivezi acest modul poti experimenta in orice moment cele negative mentionate anterior iar noi nu te putem ajuta cu nimic altceva pentru inlaturarea efectului - nu exista pe moment alta solutie mai buna, insa nu vor mai fi jucatori respinsi eronat. 

In cazul in care addon-ul nostru nu ne permite intregul procedeu de upgrade (engine + amxmodx + dproto) explicat aici: http://www.krond.org/knowledgebase/98/Upgrade-de-securitate-si-performanta-engine-HLDS-v6153-at-2014.html putem macar sa rezolvam o buna parte a problemelor de securitate precum si a metodelor de flood prin upgrade-ul dproto-ului, in panou sunt disponibile doua variante "Dproto - Non-Steam" si "Dproto - Steam-Only". Daca efectuam upgrade dproto de la o versiunea anterioara 0.9.491 atunci este necesara REINSTALAREA acestuia din panoul de control intrucat sunt multe modificari de librarii dar si al fisierului de configurare.

ATENTIE: Nu mai oferim asistenta pentru nici o alta versiune de dproto anterioara 0.9.548 din motive obiective, au aparut multe gauri de securitate in HLDS iar singura solutie sigura prin care le putem bloca reprezinta actualizarea dproto-ului la ultima versiune! Daca ai deja instalat 0.9.491, 0.9.497, 0.9.514, 0.9.519, 0.9.522, 0.9.524, 0.9.534 atunci panoul va face automat upgrade la ultima versiune la momentul in care restartezi serverul - altfel iti recomandam REINSTALAREA dproto-ului manual de la tab-ul "UPDATES" => mentionam: ambele actiuni se fac din panou, atat restartul cat si reinstalarea dproto-ului. 


NOTA: Sistemul va aplica un patch de engine automat in cazul prezentei unei versiuni dProto suportate (mai sus) - pentru protejarea si impotriva unor bug-uri ce nu sunt inca publice dar se actioneaza cu acestea indeosebi impotriva serverelor de pe primele locuri din GameTracker. Asadar atat instalarea manuala ori cea automata a dProto-ului te va proteja complet impotriva exploit-urilor cunoscute la acest moment.


Probleme cunoscute, fara o alternativa in acest moment:

a) Versiunea 0.9.391 + CF_FIX + FULLUPD - crash-uri aleatorii, indeosebi dupa ce se joaca o harta mai mult de ~ 60 minute, vulnerabilitate la overflow bug 22.02.2015 - se recomanda upgrade la 0.9.5xx
b) Versiunile din 0.9.4xx / 0.9.5xx - foarte sensibil (chestiune ameliorata cu update-ul 0.9.531) la jucatorii cu latenta mare (+150) considerandu-i eronat boti si eliminandu-i de pe server, nu exista o solutie pentru a dezactiva aceasta functie pentru ca insusi prin acest comportament are datoria de a ne proteja de atacuri cu boti, verificandu-le latenta si comportamentul.


 
Pachetul contine:

cstrike/liblist.gam
cstrike/addons/metamod/plugins.ini
cstrike/addons/metamod/dlls/metamod_i386.so
cstrike/addons/metamod/dlls/dproto.so
cstrike/addons/metamod/dlls/dproto_i386.so
cstrike/addons/metamod/dlls/metamod.so
cstrike/dproto.cfg

 
Pentru ca acesta sa functioneze avem nevoie de aceiasi structura, daca am instalat dproto nonsteam atunci cand am configurat serverul nu trebuie sa ne facem griji ca totul e in ordine. Putem verifica fisierul addons/metamod/plugins.ini sa contina linia: "linux addons/metamod/dlls/dproto_i386.so" - daca calea e la fel, totul este in regula.
 
In cazul in care configuratia precum si locatia fisierelor este diferita, puteti descarca pachetul dproto de pe site-ul oficial pentru upgrade manual: http://cs.rin.ru/forum/viewtopic.php?f=29&t=55986

Un server cu upgrade-ul DPROTO facut va raporta la comanda rcon "meta list":
 
[ 1] dproto_EF        RUN   -    dproto_i386.so    v0.9.531  ini  Start Never
 
alaturi de celalalte module incarcate bineinteles
 
Ţi-a folosit?

Citiţi şi