Ai pus chei la SSH și un firewall. Bun început, dar un server Metin2 are mai multe „uși” decât pare: site-ul cu panoul de administrare, baza de date, conturile de GM, serverul de patch, chiar și contul de la firma de hosting. Un hoț intră pe ușa cea mai slabă, nu pe cea mai bine păzită. În această lecție faci lista tuturor ușilor și le închizi pe rând.
777 și te uiți regulat în jurnale. Protecția DDoS e utilă, dar nu înlocuiește nimic din toate acestea.Cuvinte pe care le vei întâlni
| Cuvânt | Ce înseamnă |
|---|---|
| Acces neautorizat | Cineva intră unde nu are voie: pe server, în baza de date, într-un cont de GM. |
| Parolă implicită | Parola cu care vine un program „din fabrică”. O știe oricine are același pachet. |
| Jurnal (log) | Un fișier în care serverul notează ce s-a întâmplat, de exemplu încercările de logare. |
| Permisiuni de fișier | Cine are voie să citească sau să modifice un fișier. |
| 2FA | Autentificare în doi pași: pe lângă parolă, un cod de pe telefon. |
Pasul 1: Fă lista tuturor ușilor
Gândește-te la o casă: ușa din față, ușa din spate, geamurile, garajul. Încuietoarea de la ușa din față nu ajută dacă geamul e deschis. Scrie într-un document fiecare ușă și cine are cheia:
| Ușa | Cine intră pe ea | Cum o închizi |
|---|---|---|
| Contul la firma de hosting | tu | parolă unică și 2FA, dacă există |
| SSH | tu și echipa tehnică | chei SSH, fără root, fără parole |
MySQL 3306 | doar programele de pe server | port închis în firewall |
| Panoul de admin al site-ului | tu și moderatorii | parole unice, conturi separate |
| Conturile de GM din joc | echipa | gmlist cu niveluri mici |
ADMINPAGE din CONFIG | doar serverul însuși | parolă schimbată, IP 127.0.0.1 |
| Serverul de patch | tu | doar tu poți încărca fișiere |
| Discord, e-mail | tu și echipa | 2FA pe toate conturile |
Primele două uși le-ai rezolvat în lecțiile despre SSH și firewall, iar conturile de GM în lecția despre permisiunile GM.
Pasul 2: Schimbă toate parolele implicite
Pachetele de serverfiles circulă pe internet. Dacă tu ai descărcat un pachet, au mai făcut-o și alte mii de oameni, deci parolele din el nu mai sunt secrete.
Locuri de verificat:
- Contul de joc
admindin pachet (și rândul lui dingmlist). - Parola MySQL din
CONFIGși dindb/conf.txt. Dacă o schimbi, o schimbi în toate fișierele care o conțin, altfel canalele nu mai pornesc. ADMINPAGE_PASSWORDdin fiecareCONFIG.- Contul de admin al site-ului sau al CMS-ului.
Despre ADMINPAGE: în pachetul pe care l-am verificat, fiecare CONFIG are rândurile:
ADMINPAGE_PASSWORD: ***
ADMINPAGE_IP: 127.0.0.1Este o mică „ușă de administrare” a procesului de joc, prin care se pot trimite comenzi precum anunțuri sau oprirea serverului. În pachetul verificat, parola venea completată implicit, aceeași pentru toată lumea. Schimb-o în toate fișierele CONFIG cu o parolă lungă și lasă ADMINPAGE_IP: 127.0.0.1, adică ușa se deschide doar din interiorul serverului. Vezi rapid ce ai acum:
find /usr/home/game -name CONFIG -exec grep -H "ADMINPAGE" {} +(Calea e un exemplu.) Schimbarea se aplică după un restart al canalelor.
Pasul 3: Ține sistemul actualizat
Programele au uneori găuri de securitate descoperite după lansare. Producătorii le repară prin actualizări. Pe FreeBSD, comanda care îți spune dacă ai programe instalate cu probleme cunoscute este:
pkg audit -FCe ar trebui să vezi: ideal, 0 problem(s) in 0 installed package(s) found. Dacă apare o listă, acele programe trebuie actualizate.
Actualizarea sistemului (freebsd-update) și a programelor (pkg upgrade) le faci într-o mentenanță anunțată, după un backup și ideal după ce ai încercat pe serverul de test. O actualizare poate schimba versiunea MySQL sau a unor librării de care depinde jocul. Vezi și cum pregătești o mentenanță fără pierderi.
Pasul 4: Permisiunile fișierelor
Nu face niciodată chmod -R 777 pe folderul jocului. 777 înseamnă „oricine de pe server poate citi, modifica și rula orice”. Pare că rezolvă probleme, dar de fapt lasă ușa larg deschisă.
Fișierele cu parole (CONFIG, db/conf.txt) trebuie să poată fi citite doar de utilizatorul care rulează jocul. Caută fișierele pe care le poate modifica oricine:
find /usr/home/game -perm -o+w -type fIdeal, comanda nu afișează nimic. Dacă afișează fișiere, scoate dreptul de scriere pentru „ceilalți”:
chmod o-w /usr/home/game/channel1/first/CONFIG(Exemplu pentru un fișier; repetă doar pentru fișierele găsite și testează pornirea după.)
Pasul 5: Uită-te în jurnale
Încercările de logare SSH apar în /var/log/auth.log. Ultimele încercări eșuate:
grep -E "Failed|Invalid user" /var/log/auth.log | tail -n 20Ce ar trebui să vezi: probabil multe încercări de la IP-uri necunoscute. Dacă ai închis parolele, ele nu au cum să reușească. Ce te interesează sunt logările reușite pe care nu le recunoști:
grep "Accepted" /var/log/auth.log | tail -n 20Fiecare rând trebuie să fie al tău sau al cuiva din echipă. În joc, uită-te și în log.command_log (comenzile GM-ilor), cum ai văzut în lecția despre conturile GM.
Pasul 6: Clientul nu păstrează secrete
Tot ce pui în client ajunge pe calculatorul fiecărui jucător și poate fi deschis. În client nu pui niciodată parole de bază de date, chei de acces sau adrese de panouri interne. Iar orice verificare importantă (prețuri, drop, permisiuni) trebuie făcută pe server, nu în client.
Protecția DDoS nu e același lucru
Un atac DDoS încearcă să-ți „înece” serverul în trafic, ca să cadă. Protecția Anti-DDoS de la Zentaris Host filtrează acest trafic la nivel de rețea (vezi protecția DDoS). Dar nu te apără de o parolă implicită uitată sau de un GM care creează iteme. Sunt probleme diferite, cu soluții diferite.
Greșeli des întâlnite
- Aceeași parolă peste tot. Dacă scapă una, scapă toate. Folosește un manager de parole.
- Ai dat parola MySQL pe Discord „ca să te ajute cineva”. Schimb-o imediat.
- Ai lăsat copii de rezervă ale bazei de date în folderul public al site-ului. Oricine le poate descărca. Backup-urile stau în afara site-ului.
- Ai uitat conturile oamenilor care au plecat din echipă. Le scoți accesul în aceeași zi: SSH,
gmlist, panou, Discord.
Întrebări frecvente
Cum îmi dau seama că cineva a intrat pe server?
Semne: logări „Accepted” pe care nu le recunoști, iteme apărute din nimic, comenzi GM neașteptate în command_log, fișiere modificate pe care nu le-ai atins. Dacă vezi așa ceva, schimbă imediat toate parolele și cere ajutor firmei de hosting.
E suficient să schimb parolele o singură dată?
Le schimbi la lansare și de fiecare dată când pleacă cineva din echipă sau bănuiești o scurgere.
Pot să-mi „testez” singur serverul?
Da, cu verificări defensive pe serverul tău: lista de porturi cu sockstat, testul de port din lecția de firewall, comenzile din această lecție. Nu testa niciodată serverele altora.
Ce urmează
Acum ai toate ușile închise. Le punem pe toate, împreună cu restul pregătirilor, într-un checklist tehnic de lansare. Toate lecțiile sunt în lista tutorialelor Metin2.
Server Metin2 gata de joc
Găzduire Metin2 în România, cu instalare de serverfiles, bază de date MySQL și protecție Anti-DDoS inclusă.