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.
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.