Orice versiune Protecție cuprinzătoare împotriva atacurilor (OOG și altele). Protecția serverului împotriva hackingului Protecție fizică a serverului

Majoritatea programelor trebuie să interacționeze cu utilizatorul introducând anumite date, fie că este vorba despre numele complet, înălțimea, greutatea care urmează să fie introduse în baza de date sau dimensiunile geometrice ale unui obiect pentru care trebuie calculat ceva. Toate aceste date sunt introduse de utilizator - o persoană, ceea ce înseamnă că orice poate veni ca răspuns. Ce va produce programul dacă, în loc de vârsta cerută, utilizatorul o scrie într-un cuvânt? Cel mai probabil programul se va bloca sau se va bloca, dar nu dacă are „protecție prostească” în el.

De ce s-ar putea termina sau îngheța un program? Programul va încerca să convertească setul de caractere într-un număr, ceea ce va eșua, ceea ce înseamnă munca in continuare aplicația nu este definită. Prin urmare, este foarte important să organizați structura programului astfel încât atunci când intrați neașteptat pentru programul de date (incorect în ceea ce privește formatul cerut: este necesar un număr, dar se introduce un cuvânt), aplicația nu a „căzut”, dar a informat utilizatorul că a apărut o eroare și s-a oferit să repete introducerea. Acest lucru este „fool-proof”.

Implementarea izolației în C

Pentru a implementa o bună siguranță pentru introducerea diferitelor date numerice (int, double...), este necesar să citiți nu numerele în sine, ci întregul șir de intrare și abia apoi să analizați intrarea. Limbajul C are o funcție foarte frumoasă sscanf(const char *, const char *, args) , care funcționează similar cu funcția scanf(const char *, args), returnând numărul de argumente citite cu succes, doar datele sunt citite nu din fluxul de intrare standard, dar din șirul trecut la acesta ca prim argument.

Să ne uităm la câteva exemple de funcții care implementează o verificare prost folosind funcția sscanf.

Introducerea unui număr întreg cu verificarea intrării nevalide

int get_integer(const char *msg) (char answer; // șir pentru a citi int n; // final întreg printf("%s", msg); // imprimare prompt fgets(răspuns, dimensiunea(răspuns), stdin); // citește șirul // până când este citit un număr întreg în timp ce (sscanf(răspuns, „%d”, &n) != 1) ( printf(„Introducere incorectă. Încercați din nou: „); // imprimați un mesaj despre erorile fgets (răspuns, dimensiunea(răspuns), stdin); // și recitiți șirul ) return n; // returnează un număr întreg valid)

Pentru a citi un număr întreg, algoritmul citește întregul șir și apoi încearcă să scoată un număr întreg din el. În cazul în care aceasta nu a reușit, funcția afișează un mesaj de eroare cu o sugestie de a repeta introducerea până când este introdusă valoarea întreagă corectă.

Introducerea unui număr real cu verificarea introducerii incorecte

double get_double(const char *msg) (car răspuns; // șir pentru a citi dublu x; // rezultat numărul real printf("%s", msg); // tipar prompt fgets(răspuns, dimensiunea(răspuns), stdin) ; // citește șirul // până când se citește un număr real în timp ce (sscanf(răspuns, "%lf", &x) != 1) ( printf("Introducere incorectă. Încercați din nou: "); // imprimați un mesaj despre eroare fgets (răspuns, dimensiunea (răspuns), stdin); // și recitiți șirul ) returnează x; // returnează un număr real valid)

Introducerea unui punct pe planul de coordonate (structură cu două câmpuri reale)

// descrierea structurii de date typedef struct point_t ( double x; // x coordonate double y; // y coordonate ) point_t; point_t get_point(const char *msg) ( răspuns char; // șir pentru a citi point_t point; // punctul final printf("%s", msg); // imprimare prompt fgets(răspuns, dimensiunea(răspuns), stdin); // citește linia // până când ambele coordonate ale punctelor sunt citite în timp ce (sscanf(răspuns, "(%lf,%lf)", &point.x, &point.y) != 2) ( printf("Introducere incorectă. Încercați din nou: "); // tipăriți mesajul de eroare fgets(răspuns, dimensiunea (răspuns), stdin); // și recitiți șirul ) return point; // returnează punctul corect)

După cum se poate vedea din exemple, caracteristica de returnare a numărului de argumente citite de funcția sscanf vă permite să controlați corectitudinea datelor introduse în formatul specificat, iar citirea întregii linii protejează împotriva faptului că caracterele de spațiu sau linia pauzele „\n” rămân în fluxul de intrare, ceea ce de multe ori vă obligă să nu petreceți o oră sau chiar o zi pentru a căuta o eroare.

Salutare tuturor din echipa UNITWAY PW. Cu această temă, am dori să demonstrăm absența concurenței neloiale din partea noastră și a concurenței negre, urâte, înșelătoare din proiectul NewDestiny.

Iată o listă de soluții de la atacuri care au fost folosite vreodată de administratorii NewDestiny loko9988, TyrikMan (atacul OOG de ieri a fost de la adresa IP a lui Yoshkar Ola), Killer_Pooh (a fost înregistrat și un atac din orașul Volzhsky). Pe lângă atacurile asupra noastră, am primit informații despre un atac asupra unui număr de alte servere, care a fost asociat cu descoperirea noastră. Publicând o serie de remedieri ale acestor atacuri, demonstrăm neimplicarea noastră în atacuri asupra oricui, în ciuda poziției clar preocupate a administratorului Zzebra PW (mirthhost) pe proiectul nostru. Nu avem absolut ranchiună față de toți cei care s-au îndrăgostit de articolul galben despre noi, fiecare are capul lui pe umeri.


Și aceasta este doar o parte din conturile lor.

Unul dintre motivele pentru publicarea acestui subiect au fost zvonurile care au ajuns la noi. Esența acestor zvonuri este că loko9988 atacă serverele nu numai din cauza concurenței, ci și pentru a oferi protecție acestor servere prin intermediul acestuia.

Protecție împotriva atacurilor OOG bazate pe iptables:
În primul rând, creăm reguli de firewall scriptate, le puteți numi cum doriți.

iptables -A INPUT -p tcp -m multiport --dports 29000 -m lungime --lungime 500:65535 -j LOG --log-prefix "PW"

Faceți clic pentru a dezvălui...

Cu această regulă, scriem toate pachetele de joc de la portul 29000 în dimensiune de la 500 la 65535 octeți.

iptables -A INPUT -p tcp -m multiport --dports 29000 -m lungime --lungime 500:65535 -m recent --name pachete --set
iptables -A INPUT -p tcp -m multiport --dports 29000 -m lungime --lungime 500:65535 -m recent --name pachete --update --seconds 1 --hitcount 100 -j REJECT

Faceți clic pentru a dezvălui...

Cu aceste reguli, blocăm utilizatorul dacă serverul a primit de la el mai mult de 100 de pachete de 500 - 65535 octeți în 1 secundă pe portul 29000 (joc).

iptables -A INPUT -p tcp -m multiport --dports 29000 -m lungime --lungime SIZE -m recent --name packet1 --set
iptables -A INPUT -p tcp -m multiport --dports 29000 -m lungime --lungime SIZE -m recent --name packet1 --update --seconds 15 --hitcount 3 -j REJECT

Faceți clic pentru a dezvălui...

Cu aceste reguli, blocăm utilizatorii care au trimis mai mult de 3 pachete în 15 secunde la portul 29000. SIZE - dimensiunea pachetului în octeți.
Cum să urmăriți dimensiunea pachetului în octeți?
După prima regulă, în care înregistrăm toate pachetele de jocuri, le puteți vedea în fișier /var/log/syslog sau echipa dmesgîn consola serverului.
Când un atac este în curs, vor exista multe pachete identice în syslog într-un timp scurt.

PW IN=ipip1 OUT= MAC= SRC= ADRESA UTILIZATORULUI DST=*.*.*.* LEN=547 TOS=0x00 PREC=0x00 TTL=241 ID=13328 DF PROTO=TCP SPT=22511 DPT=63947 WINDOW=254 RES=0x00 ACK PSH URGP=0

Faceți clic pentru a dezvălui...

În exemplul de mai sus, dimensiunea exploziei este „LEN=547”.

Ne-am dat seama de protecția OOG. Să trecem la alte moduri în care NewDestiny concurează.
Conturi brute. Totul este destul de simplu aici:
#block autentificare în forță brută

iptables -A INPUT -p tcp -m multiport --dports 29000 -m conntrack --ctstate NOU -m recent --name brute --set
iptables -A INPUT -p tcp -m multiport --dports 29000 -m conntrack --ctstate NEW -m recent --name brute --update --seconds 30 --hitcount 3 -j REJECT

Faceți clic pentru a dezvălui...

Cu această regulă, blocăm IP-ul utilizatorului timp de 30 de secunde dacă a făcut mai mult de 3 solicitări de conectare la portul 29000.
  • Faceți o restricție completă pentru porturi, cu excepția jocurilor prin iptables.
  • Faceți o conexiune la server folosind cheia ssh (tastele) cu un cuvânt de cod.
  • Utilizare ultimele versiuni mysql, apache2 și alte pachete importante.
  • După încărcarea prin OOG, utilizați logrotate, în caz contrar, când backup busteni Berbec Serverul dvs. va fi utilizat pe deplin. Acest lucru poate duce la un hack.
  • Nu utilizați software terță parte pe serverul de joc.
  • Utilizați un filtru personalizat de parolă pentru jucător. În câteva ore, au existat peste 50.000 de încercări de autorizare nevalidă asupra autorizației noastre. 30% dintre jucătorii noștri au avut autentificări identice de la aceste perechi de conectare-parolă.
Preferăm o conduită corectă a competiției, nu avem timp și bani în plus pentru atacuri. Nu te încurca cu acești oameni, se poate termina rău.

Este imposibil să protejezi serverul de accesul extern odată pentru totdeauna, deoarece în fiecare zi se descoperă noi vulnerabilități și apar noi modalități de hacking a serverului. Vom vorbi despre protejarea serverelor împotriva accesului neautorizat în acest articol.

Serverele oricărei companii pot deveni mai devreme sau mai târziu o țintă pentru hacking sau un atac de virus. De obicei, rezultatul unui astfel de atac este pierderea de date, daune reputaționale sau financiare, astfel încât problemele de securitate ale serverului ar trebui abordate în primul rând.

Trebuie înțeles că protecția împotriva hackingului de server este un set de măsuri, inclusiv cele care implică monitorizarea constantă a funcționării serverului și lucrează pentru îmbunătățirea protecției. Este imposibil să protejezi serverul de accesul extern odată pentru totdeauna, deoarece în fiecare zi se descoperă noi vulnerabilități și apar noi modalități de hacking a serverului.

Vom vorbi despre protejarea serverelor împotriva accesului neautorizat în acest articol.

Modalități și metode de a proteja serverele împotriva accesului neautorizat

Protecția fizică a serverului

Protecție fizică. Este de dorit ca serverul să fie amplasat într-un centru de date securizat, o cameră închisă și păzită, străinii să nu aibă acces la server.

Configurați autentificarea SSH

Când configurați accesul la server, utilizați autentificarea cheii SSH în loc de o parolă, deoarece astfel de chei sunt mult mai dificile și, uneori, pur și simplu imposibil de spart folosind o căutare cu forță brută.

Dacă credeți că mai aveți nevoie de o parolă, asigurați-vă că limitați numărul de încercări de a o introduce.

Fiți atenți dacă vedeți un mesaj ca acesta când vă conectați:

Ultima conectare eșuată: marți 28 sept 12:42:35 MSK 2017 de la 52.15.194.10 pe ssh:notty
Au existat 8243 de încercări de conectare nereușite de la ultima conectare reușită.

Poate indica faptul că serverul dvs. a fost piratat. În acest caz, pentru a configura securitatea serverului, modificați portul SSH, limitați lista de IP-uri de la care este posibil accesul la server sau instalați software care blochează automat activitatea excesiv de frecventă și suspectă.

Instalați în mod regulat cele mai recente actualizări

Pentru a asigura protecția serverului, instalați cele mai recente patch-uri și actualizări ale software-ului server pe care îl utilizați - sistem de operare, hypervisor, server de baze de date.

Este recomandabil să verificați în fiecare zi noi patch-uri, actualizări și erori/vulnerabilități raportate pentru a preveni atacurile care exploatează vulnerabilități zero-day. Pentru a face acest lucru, abonați-vă la știrile companiei de dezvoltare de software, urmăriți paginile acesteia pe rețelele sociale.

Protejați parolele

De departe, una dintre cele mai comune modalități de a obține acces la un server este de a sparge parola serverului. Prin urmare, urmați recomandările binecunoscute, dar totuși relevante pentru a nu lăsa serverul neprotejat:

  • nu utilizați parole ușor de ghicit, cum ar fi numele companiei;
  • dacă încă utilizați parola implicită pentru consola de administrare, schimbați-o imediat;
  • parolele pentru diferite servicii trebuie să fie diferite;
  • dacă trebuie să împărtășiți parola cu cineva, nu trimiteți niciodată adresa IP, numele de utilizator și parola în același e-mail sau mesaj messenger;
  • Puteți configura verificarea în doi pași pentru a vă conecta la contul de administrator.

firewall

  • Asigurați-vă că serverul are , este configurat și rulează tot timpul.
  • Protejați atât traficul de intrare, cât și cel de ieșire.
  • Urmăriți ce porturi sunt deschise și în ce scop, nu deschideți nimic inutil pentru a reduce numărul de vulnerabilități posibile pentru hacking server.

În special, un firewall ajută foarte mult la protejarea serverului de atacuri ddos, deoarece puteți crea rapid reguli de blocare pentru firewall și puteți adăuga adrese IP de la care provine atacul sau puteți bloca accesul la anumite aplicații folosind anumite protocoale.

Monitorizare și detectare a intruziunilor

  • Limitați software-ul și serviciile care rulează pe serverul dvs. Verificați periodic tot ce rulați și, dacă sunt găsite procese necunoscute, ștergeți-le imediat și începeți să căutați viruși.
  • Verificați periodic dacă există semne de manipulare. Hackingul poate fi evidențiat de noi Conturi utilizatorii pe care nu i-ați creat, mutați sau ștergeți un fișier /etc/syslog.conf, fișiere șterse/etc/shadowși /etc/passwrd .
  • Monitorizați performanța serverului dvs., urmăriți viteza normală și debitului, astfel încât să puteți observa abateri, de exemplu, atunci când încărcarea pe server a devenit semnificativ mai mare decât de obicei.

Folosind VPN și criptare SSL/TLS

Daca este nevoie acces de la distanță la server, ar trebui să fie permis numai de la anumite adrese IP și să se întâmple prin VPN.

Următorul pas în asigurarea securității poate fi configurarea SSL, care nu numai că va cripta datele, ci va verifica și identitatea celorlalți participanți la infrastructura de rețea prin emiterea de certificate adecvate pentru aceștia.

Verificarea securității serverului

Ar fi o idee bună să verificați în mod independent securitatea serverului folosind metoda pentest, de exemplu. simulare de atac pentru a găsi potențiale vulnerabilități și a le elimina la timp. Este recomandabil să implicați specialiști în acest sens securitatea informatiei, totuși, unele teste pot fi făcute independent folosind programe de hacking de server.

Ce altceva amenință serverele în afară de hacking

Un server se poate defecta din mai multe motive, altele decât a fi piratat. De exemplu, ar putea fi o infecție cu malware sau doar o defecțiune fizică a uneia dintre componente.

Prin urmare, măsurile de protecție a serverului ar trebui să includă:

  • Instalarea și actualizarea programelor pentru protejarea serverului - antivirusuri.
  • Copii regulate criptate ale datelor cel puțin o dată pe săptămână, deoarece, conform statisticilor, hard disk-urile serverelor sunt pe primul loc în ceea ce privește frecvența defecțiunilor. Asigura-te ca copie de rezervă stocate într-un mediu sigur din punct de vedere fizic.
  • Asigurarea alimentării neîntrerupte a camerei serverelor.
  • Prevenirea fizică în timp util a serverelor, inclusiv curățarea acestora de praf și înlocuirea pastei termice.

Experiența specialiștilor Integrus ne spune asta cea mai buna protectieîmpotriva unor astfel de amenințări este utilizarea cele mai bune practiciîn domeniul sistemelor de protecţie a serverelor.

Pentru a asigura securitatea serverelor clienților noștri, folosim o combinație de instrumente: firewall-uri, antivirusuri, tehnologii de securitate/gestionare a evenimentelor (SIM/SEM), tehnologii de detectare/protecție a intruziunilor (IDS/IPS), tehnologii de analiză comportamentală a rețelei (NBA). , desigur servere regulate de întreținere preventivă și amenajarea camerelor de servere securizate la cheie. Acest lucru vă permite să minimizați riscurile de hacking sau defecțiune a serverului din alte motive.

Suntem pregătiți să efectuăm un audit de securitate al serverelor companiei dumneavoastră, să consultăm specialiști, să efectuăm toate tipurile de lucrări privind configurarea protecției echipamentelor serverului.



Se încarcă...
Top