Shumica e programeve duhet të ndërveprojnë me përdoruesin duke futur të dhëna të caktuara, qofshin emri i plotë, lartësia, pesha që duhet të futen në bazën e të dhënave, ose dimensionet gjeometrike të ndonjë objekti për të cilin diçka duhet të llogaritet. Të gjitha këto të dhëna futen nga përdoruesi - një person, që do të thotë se çdo gjë mund të vijë si përgjigje. Çfarë do të prodhojë programi nëse, në vend të moshës së kërkuar, përdoruesi e shkruan me një fjalë? Me shumë mundësi, programi do të rrëzohet ose do të varet, por jo nëse ka "mbrojtje për budallenj" në të.
Pse një program mund të përfundojë ose ngrijë? Programi do të përpiqet të konvertojë grupin e karaktereve në një numër, i cili do të dështojë, që do të thotë punë të mëtejshme aplikimi nuk është i përcaktuar. Prandaj, është shumë e rëndësishme të organizoni strukturën e programit në mënyrë që kur të hyni e papritur për programin e të dhënave (i pasaktë për sa i përket formatit të kërkuar: nevojitet një numër, por futet një fjalë), aplikacioni nuk "ra", por informoi përdoruesin se kishte ndodhur një gabim dhe ofroi të përsëriste hyrjen. Kjo është "e pamend".
Zbatimi i gabimeve në C
Për të zbatuar gabime të mira për futjen e të dhënave të ndryshme numerike (int, double...), është e nevojshme të lexoni jo vetë numrat, por të gjithë vargun e hyrjes dhe vetëm atëherë të analizoni hyrjen. Gjuha C ka një funksion shumë të bukur sscanf(const char *, const char *, args), i cili funksionon në mënyrë të ngjashme me funksionin scanf(const char *, args), duke kthyer numrin e argumenteve të lexuara me sukses, vetëm të dhënat nuk lexohen nga rrjedha standarde e hyrjes, por nga vargu i kaluar atij si argument i parë.
Le të shohim disa shembuj të funksioneve që zbatojnë një kontroll të marrë duke përdorur funksionin sscanf.
Futja e një numri të plotë duke kontrolluar për hyrje të pavlefshme
int get_integer(const char *msg) (përgjigje char; // varg për të lexuar int n; // numër i plotë përfundimtar printf("%s", msg); // print prompt fgets(përgjigje, sizeof(përgjigje), stdin); // lexo vargun // derisa të lexohet një numër i plotë ndërsa (sscanf(përgjigje, "%d", &n) != 1) ( printf("Input i pasaktë. Provo përsëri: "); // printo një mesazh rreth gabimit fgets (përgjigje, sizeof(përgjigje), stdin); // dhe rilexoni vargun ) ktheni n; // ktheni një numër të plotë të vlefshëm)Për të lexuar një numër të plotë, algoritmi lexon të gjithë vargun dhe më pas përpiqet të nxjerrë një numër të plotë prej tij. Në rast se kjo dështoi, funksioni shfaq një mesazh gabimi me një sugjerim për të përsëritur hyrjen derisa të futet vlera e saktë e numrit të plotë.
Futja e një numri real me një kontroll për hyrje të pasaktë
double get_double(const char *msg) (përgjigje char; // varg për të lexuar dyfish x; // rezulton numri real printf("%s", msg); // prompt print fgets(përgjigje, sizeof(përgjigje), stdin) ; // lexoni vargun // derisa të lexohet një numër real ndërsa (sscanf(përgjigje, "%lf", &x) != 1) ( printf("Hyrje e pasaktë. Provo përsëri: "); // printo një mesazh rreth gabim fgets(përgjigje, sizeof(përgjigje), stdin); // dhe rilexoni vargun ) ktheni x; // ktheni një numër real të vlefshëm)Futja e një pike në planin koordinativ (strukturë me dy fusha reale)
// përshkrimi i strukturës së të dhënave typedef struct point_t ( double x; // x koordinate double y; // y koordinate ) point_t; point_t get_point(const char *msg) (char përgjigje; // varg për të lexuar pikën_t; // pikë përfundimtare printf("%s", msg); // print prompt fgets(përgjigje, sizeof(përgjigje), stdin ); // lexo rreshtin // derisa të lexohen të dyja koordinatat e pikave ndërsa (sscanf(përgjigje, "(%lf,%lf)", &point.x, &point.y) != 2) ( printf("Input i gabuar. Provo sërish: "); // printoni mesazhin e gabimit fgets(përgjigje, madhësia(përgjigje), stdin); // dhe rilexoni vargun ) pikën e kthimit; // ktheni pikën e saktë)Siç shihet nga shembujt, veçoria e kthimit të numrit të argumenteve të lexuara nga funksioni sscanf ju lejon të kontrolloni korrektësinë e të dhënave të futura në formatin e specifikuar, dhe leximi i të gjithë rreshtit mbron nga fakti që karakteret e hapësirës ose rreshti ndërprerjet "\n" mbeten në transmetimin e hyrjes, të cilat shumë shpesh ju detyrojnë të shpenzoni as një orë të vetme apo edhe një ditë për të kërkuar një gabim.
Është e pamundur të mbrosh një herë e mirë serverin nga aksesi i jashtëm, sepse çdo ditë zbulohen dobësi të reja dhe shfaqen mënyra të reja të hakimit të serverit. Ne do të flasim për mbrojtjen e serverëve nga aksesi i paautorizuar në këtë artikull.
Serverët e çdo kompanie herët a vonë mund të bëhen një objektiv për hakerim ose një sulm virusi. Në mënyrë tipike, rezultati i një sulmi të tillë është humbja e të dhënave, dëmtimi i reputacionit ose financiar, kështu që çështjet e sigurisë së serverit duhet të adresohen në radhë të parë.
Duhet të kuptohet se mbrojtja nga hakimi i serverit është një grup masash, duke përfshirë ato që nënkuptojnë monitorim të vazhdueshëm të funksionimit të serverit dhe punë për të përmirësuar mbrojtjen. Është e pamundur të mbrosh një herë e mirë serverin nga aksesi i jashtëm, sepse çdo ditë zbulohen dobësi të reja dhe shfaqen mënyra të reja të hakimit të serverit.
Ne do të flasim për mbrojtjen e serverëve nga aksesi i paautorizuar në këtë artikull.
Mënyrat dhe metodat e mbrojtjes së serverëve nga aksesi i paautorizuar
Mbrojtja fizike e serverit
Mbrojtje fizike. Është e dëshirueshme që serveri të jetë i vendosur në një qendër të sigurt të dhënash, një dhomë të mbyllur dhe të mbrojtur, të huajt nuk duhet të kenë akses në server.
Konfiguro vërtetimin SSH
Kur vendosni hyrjen në server, përdorni vërtetimin e çelësit SSH në vend të një fjalëkalimi, pasi çelësat e tillë janë shumë më të vështirë dhe ndonjëherë thjesht të pamundur për t'u thyer duke përdorur një kërkim me forcë brutale.
Nëse mendoni se ju duhet ende një fjalëkalim, sigurohuni që të kufizoni numrin e përpjekjeve për ta futur atë.
Kushtojini vëmendje nëse shihni një mesazh si ky kur identifikoheni:
Identifikimi i fundit i dështuar: Mar 28 shtator 12:42:35 MSK 2017 nga 52.15.194.10 në ssh:notty
Pati 8243 përpjekje të dështuara për hyrje që nga identifikimi i fundit i suksesshëm.
Mund të tregojë se serveri juaj është hakuar. Në këtë rast, për të konfiguruar sigurinë e serverit, ndryshoni portën SSH, kufizoni listën e IP-ve nga të cilat është e mundur qasja në server ose instaloni softuer që bllokon automatikisht aktivitetin tepër të shpeshtë dhe të dyshimtë.
Instaloni përditësimet më të fundit rregullisht
Për të siguruar mbrojtjen e serverit, instaloni arnimet dhe përditësimet më të fundit të softuerit të serverit që përdorni - sistemi operativ, hipervizor, server i bazës së të dhënave.
Këshillohet që çdo ditë të kontrolloni për arna, përditësime dhe gabime/dobësi të raportuara për të parandaluar sulmet që shfrytëzojnë dobësitë e ditës zero. Për ta bërë këtë, regjistrohuni në lajmet nga kompania e zhvillimit të softuerit, ndiqni faqet e saj në rrjetet sociale.
Mbroni fjalëkalimet
Deri tani, një nga mënyrat më të zakonshme për të fituar akses në një server është të hapni fjalëkalimin e serverit. Prandaj, ndiqni rekomandimet e njohura, por gjithsesi relevante në mënyrë që të mos e lini serverin të pambrojtur:
- mos përdorni fjalëkalime që janë të lehta për t'u hamendësuar, siç është emri i kompanisë;
- nëse jeni duke përdorur ende fjalëkalimin e paracaktuar për tastierën e administratorit, ndryshojeni menjëherë;
- fjalëkalimet për shërbime të ndryshme duhet të jenë të ndryshme;
- nëse keni nevojë të ndani fjalëkalimin tuaj me dikë, kurrë mos dërgoni adresën tuaj IP, emrin e përdoruesit dhe fjalëkalimin në të njëjtin email ose mesazh të dërguarit;
- Mund të konfiguroni "Verifikimin me 2 hapa" për t'u identifikuar në llogarinë e administratorit.
muri i zjarrit
- Sigurohuni që serveri të ketë , të jetë i konfiguruar dhe të funksionojë gjatë gjithë kohës.
- Mbroni trafikun në hyrje dhe në dalje.
- Mbani gjurmët e porteve të hapura dhe për çfarë qëllimi, mos hapni asgjë të panevojshme për të zvogëluar numrin e dobësive të mundshme për hakimin e serverit.
Në veçanti, një mur zjarri ndihmon shumë në mbrojtjen e serverit nga sulmet ddos, sepse mund të krijoni shpejt rregulla bllokimi të murit të zjarrit dhe të shtoni adresa IP nga vjen sulmi, ose të bllokoni aksesin në aplikacione të caktuara duke përdorur protokolle të caktuara.
Monitorimi dhe zbulimi i ndërhyrjeve
- Kufizoni softuerin dhe shërbimet që funksionojnë në serverin tuaj. Kontrolloni periodikisht gjithçka që keni në punë dhe nëse gjenden procese të panjohura, fshijini ato menjëherë dhe filloni të kontrolloni për viruse.
- Kontrolloni periodikisht për shenja të ngacmimit. Hakerimi mund të evidentohet me të reja Llogaritë përdoruesit që nuk keni krijuar, lëvizur ose fshirë një skedar /etc/syslog.conf, skedarë të fshirë/etc/hije dhe /etc/passwrd.
- Monitoroni serverin tuaj, mbani një sy në shpejtësinë dhe xhiron e tij normale, në mënyrë që të vini re devijime, për shembull, kur ngarkesa në server është bërë shumë më e madhe se zakonisht.
Përdorimi i kriptimit VPN dhe SSL/TLS
Nëse është e nevojshme akses në distancë në server, duhet të lejohet vetëm nga disa adresa IP dhe të ndodhë përmes VPN.
Hapi tjetër për të garantuar sigurinë mund të jetë konfigurimi i SSL, i cili jo vetëm që do të kodojë të dhënat, por gjithashtu do të verifikojë identitetin e pjesëmarrësve të tjerë në infrastrukturën e rrjetit duke lëshuar certifikata të përshtatshme për ta.
Kontrolli i sigurisë së serverit
Do të ishte një ide e mirë që të kontrolloni në mënyrë të pavarur sigurinë e serverit duke përdorur metodën pentest, d.m.th. simulimi i sulmit për të gjetur dobësitë e mundshme dhe për t'i eliminuar ato në kohë. Këshillohet që të përfshihen specialistë në këtë siguria e informacionit, megjithatë, disa teste mund të bëhen në mënyrë të pavarur duke përdorur programe të hakimit të serverit.
Çfarë tjetër kërcënon serverët përveç hakerimit
Një server mund të dështojë për një sërë arsyesh të tjera përveçse për t'u hakuar. Për shembull, mund të jetë një infeksion malware ose thjesht një dështim fizik i njërit prej komponentëve.
Prandaj, masat për të mbrojtur serverin duhet të përfshijnë:
- Instalimi dhe përditësimi i programeve për mbrojtjen e serverit - antiviruse.
- Kopje të rregullta të koduara të të dhënave të paktën një herë në javë, sepse, sipas statistikave, hard disqet e serverëve janë në vendin e parë për sa i përket shpeshtësisë së prishjeve. Sigurohu kopje rezervë të ruajtura në një mjedis fizikisht të sigurt.
- Sigurimi i furnizimit me energji të pandërprerë në dhomën e serverit.
- Parandalimi fizik në kohë i serverëve, duke përfshirë pastrimin e tyre nga pluhuri dhe zëvendësimin e pastës termike.
Këtë na e tregon eksperienca e specialistëve të Integrus mbrojtja më e mirë kundër kërcënimeve të tilla është përdorimi Praktikat më të mira në fushën e sistemeve të mbrojtjes së serverëve.
Për të garantuar sigurinë e serverëve të klientëve tanë, ne përdorim një kombinim mjetesh: mure zjarri, antivirus, teknologji të sigurisë / menaxhimit të ngjarjeve (SIM / SEM), teknologjitë e zbulimit / mbrojtjes nga ndërhyrjet (IDS / IPS), teknologjitë e analizës së sjelljes në rrjet (NBA). , sigurisht serverët e rregullt të mirëmbajtjes parandaluese dhe rregullimi i dhomave të sigurta të serverëve me çelësa në dorë. Kjo ju lejon të minimizoni rreziqet e hakimit ose dështimit të serverit për arsye të tjera.
Ne jemi të gatshëm të kryejmë një auditim sigurie të serverëve të kompanisë suaj, të konsultojmë specialistë, të kryejmë të gjitha llojet e punës për vendosjen e mbrojtjes së pajisjeve të serverit.