Väčšina programov musí s používateľom interagovať zadaním určitých údajov, či už je to celé meno, výška, hmotnosť, ktorá sa má zadať do databázy, alebo geometrické rozmery nejakého objektu, pre ktorý treba niečo vypočítať. Všetky tieto údaje zadáva užívateľ – osoba, čo znamená, že odpoveďou môže byť čokoľvek. Čo program vyprodukuje, ak ho používateľ namiesto požadovaného veku napíše slovom? S najväčšou pravdepodobnosťou sa program zrúti alebo zamrzne, ale nie, ak má v sebe „ochranu bláznov“.
Prečo sa program môže ukončiť alebo zamrznúť? Program sa pokúsi previesť znakovú sadu na číslo, čo zlyhá, čo znamená ďalšiu prácu aplikácia nie je definovaná. Preto je veľmi dôležité usporiadať štruktúru programu tak, aby pri vstupe neočakávané pre dátový program (nesprávne z hľadiska požadovaného formátu: treba číslo, ale zadá sa slovo), aplikácia „nepadla“, ale informovala užívateľa, že nastala chyba a ponúkla zopakovanie zadania. Toto je „odolné voči hlúpostiam“.
Implementácia zabezpečenia proti chybám v C
Na implementáciu dobrého foolproofingu pre zadávanie rôznych číselných (int, double...) údajov je potrebné čítať nie samotné čísla, ale celý vstupný reťazec a až potom analyzovať vstup. Jazyk C má veľmi peknú funkciu sscanf(const char *, const char *, args) , ktorá funguje podobne ako funkcia scanf(const char *, args), vracia počet úspešne prečítaných argumentov, len dáta sa čítajú nie zo štandardného vstupného toku, ale z reťazca, ktorý mu bol odovzdaný ako prvý argument.
Pozrime sa na niekoľko príkladov funkcií, ktoré implementujú kontrolu hlúposti pomocou funkcie sscanf.
Zadanie celého čísla s kontrolou neplatného vstupu
int get_integer(const char *msg) ( char odpoveď; // reťazec na prečítanie int n; // konečné celé číslo printf("%s", msg); // vytlačenie výzvy fgets(odpoveď, veľkosť(odpoveď), stdin); // čítajte reťazec // kým sa neprečíta celé číslo (sscanf(answer, "%d", &n) != 1) ( printf("Nesprávne zadanie. Skúste znova: "); // vytlačí správu o chybe fgets (odpoveď, veľkosť(odpoveď), štandardná adresa); // a znova si prečítajte reťazec ) vráti n; // vráti platné celé číslo )Ak chcete prečítať celé číslo, algoritmus prečíta celý reťazec a potom sa z neho pokúsi získať celé číslo. V prípade, že sa to nepodarí, funkcia zobrazí chybové hlásenie s návrhom zopakovať zadávanie, kým sa nezadá správna celočíselná hodnota.
Zadanie reálneho čísla s kontrolou nesprávneho zadania
double get_double(const char *msg) ( char answer; // reťazec na prečítanie double x; // výsledné reálne číslo printf("%s", msg); // výzva na tlač fgets(answer, sizeof(answer), stdin) ; // čítajte reťazec //, kým sa neprečíta skutočné číslo, zatiaľ čo (sscanf(answer, "%lf", &x) != 1) ( printf("Nesprávne zadanie. Skúste znova: "); // vytlačte správu o error fgets(answer, sizeof(answer), stdin); // a znova si prečítajte reťazec ) return x; // vráti platné reálne číslo )Zadanie bodu na súradnicovej rovine (štruktúra s dvoma reálnymi poľami)
// popis dátovej štruktúry typedef struct bod_t ( double x; // x suradnica double y; // suradnica y ) bod_t; point_t get_point(const char *msg) ( char odpoveď; // reťazec na čítanie bod_t bod; // konečný bod printf("%s", msg); // výzva na tlač fgets(odpoved, veľkosť(odpoveď), stdin ); // čítať riadok // kým sa neprečítajú obe súradnice bodu (sscanf(odpoveď, "(%lf,%lf)", &point.x, &point.y) != 2) ( printf("Nesprávne zadanie. Skúste znova: "); // vytlačí chybové hlásenie fgets(answer, sizeof(answer), stdin); // a znovu si prečíta reťazec ) návratový bod; // vráti správny bod )Ako je zrejmé z príkladov, funkcia vrátenia počtu argumentov prečítaných funkciou sscanf vám umožňuje kontrolovať správnosť zadaných údajov v zadanom formáte a čítanie celého riadku chráni pred tým, že medzery alebo riadky vo vstupnom toku zostávajú prestávky „\n“, ktoré vás veľmi často nútia nestráviť ani hodinu či dokonca deň hľadaním chyby.
Je nemožné chrániť server pred vonkajším prístupom raz a navždy, pretože každý deň sa objavujú nové zraniteľnosti a objavujú sa nové spôsoby hackovania servera. V tomto článku budeme hovoriť o ochrane serverov pred neoprávneným prístupom.
Servery ktorejkoľvek spoločnosti sa môžu skôr či neskôr stať terčom hackingu alebo vírusového útoku. Výsledkom takéhoto útoku je zvyčajne strata údajov, poškodenie dobrej povesti alebo finančné škody, takže v prvom rade by sa mali riešiť otázky zabezpečenia servera.
Malo by sa chápať, že ochrana pred hackovaním servera je súbor opatrení vrátane tých, ktoré zahŕňajú neustále monitorovanie prevádzky servera a prácu na zlepšení ochrany. Je nemožné chrániť server pred vonkajším prístupom raz a navždy, pretože každý deň sa objavujú nové zraniteľnosti a objavujú sa nové spôsoby hackovania servera.
V tomto článku budeme hovoriť o ochrane serverov pred neoprávneným prístupom.
Spôsoby a metódy ochrany serverov pred neoprávneným prístupom
Fyzická ochrana servera
Fyzická ochrana. Je žiaduce, aby bol server umiestnený v zabezpečenom dátovom centre, uzavretej a stráženej miestnosti, cudzinci by na server nemali mať prístup.
Nastavte autentifikáciu SSH
Pri nastavovaní prístupu na server použite namiesto hesla autentifikáciu pomocou kľúča SSH, pretože takéto kľúče sú oveľa ťažšie a niekedy jednoducho nemožné ich prelomiť pomocou vyhľadávania hrubou silou.
Ak si myslíte, že stále potrebujete heslo, obmedzte počet pokusov o jeho zadanie.
Venujte pozornosť, ak sa vám pri prihlásení zobrazí takáto správa:
Posledné neúspešné prihlásenie: Ut Sep 28 12:42:35 MSK 2017 from 52.15.194.10 on ssh:notty
Od posledného úspešného prihlásenia sa vyskytlo 8243 neúspešných pokusov o prihlásenie.
Môže to znamenať, že váš server bol napadnutý. V takom prípade nakonfigurujte zabezpečenie servera, zmeňte port SSH, obmedzte zoznam adries IP, z ktorých je možný prístup na server, alebo nainštalujte softvér, ktorý automaticky blokuje príliš časté a podozrivé aktivity.
Pravidelne inštalujte najnovšie aktualizácie
Na zabezpečenie ochrany servera nainštalujte najnovšie záplaty a aktualizácie serverového softvéru, ktorý používate - operačný systém, hypervízor, databázový server.
Odporúča sa každý deň kontrolovať nové záplaty, aktualizácie a nahlásené chyby/slabosti, aby ste predišli útokom využívajúcim zraniteľnosti zero-day. Ak to chcete urobiť, prihláste sa na odber noviniek od spoločnosti zaoberajúcej sa vývojom softvéru, sledujte jej stránky na sociálnych sieťach.
Chráňte heslá
Jedným z najbežnejších spôsobov získania prístupu na server je prelomenie hesla servera. Preto sa riaďte známymi, no napriek tomu relevantnými odporúčaniami, aby ste server nenechali nechránený:
- nepoužívajte heslá, ktoré sa dajú ľahko uhádnuť, ako napríklad názov spoločnosti;
- ak stále používate predvolené heslo pre správcovskú konzolu, okamžite ho zmeňte;
- heslá pre rôzne služby musia byť odlišné;
- ak potrebujete s niekým zdieľať svoje heslo, nikdy neposielajte svoju IP adresu, používateľské meno a heslo v tom istom e-maile alebo správe;
- Na prihlásenie do účtu správcu si môžete nastaviť dvojstupňové overenie.
POŽARNE DVERE
- Uistite sa, že server má , je nakonfigurovaný a beží po celú dobu.
- Chráňte prichádzajúcu aj odchádzajúcu prevádzku.
- Sledujte, aké porty sú otvorené a na aký účel, neotvárajte nič zbytočné, aby ste znížili počet možných zraniteľností pri hackovaní servera.
Najmä brána firewall veľmi pomáha pri ochrane servera pred ddos útoky, pretože môžete rýchlo vytvoriť pravidlá blokovania brány firewall a pridať adresy IP, z ktorých útok prichádza, alebo zablokovať prístup k určitým aplikáciám pomocou určitých protokolov.
Monitorovanie a detekcia narušenia
- Obmedzte softvér a služby spustené na vašom serveri. Pravidelne kontrolujte všetko, čo máte spustené, a ak sa nájdu nejaké neznáme procesy, okamžite ich vymažte a začnite s kontrolou vírusov.
- Pravidelne kontrolujte známky manipulácie. Hackovanie môže byť dokázané novým účty používateľov, ktorých ste nevytvorili, presun alebo odstránenie súboru /etc/syslog.conf, odstránené súbory/etc/shadow A /etc/passwrd.
- Monitorujte výkon svojho servera, sledujte jeho normálnu rýchlosť a priepustnosť, takže si môžete všimnúť odchýlky, napríklad keď je zaťaženie servera výrazne vyššie ako zvyčajne.
Používanie VPN a šifrovania SSL/TLS
V prípade potreby vzdialený prístup na server, malo by to byť povolené iba z určitých adries IP a malo by sa to diať cez VPN.
Ďalším krokom k zaisteniu bezpečnosti môže byť nastavenie SSL, ktoré bude nielen šifrovať dáta, ale aj overovať identitu ostatných účastníkov sieťovej infraštruktúry vydávaním príslušných certifikátov.
Bezpečnostná kontrola servera
Bolo by dobré nezávisle skontrolovať bezpečnosť servera pomocou metódy pentest, t.j. simuláciu útoku, aby ste našli potenciálne zraniteľné miesta a včas ich odstránili. Je vhodné zapojiť do toho špecialistov informačná bezpečnosť Niektoré testy však možno vykonať nezávisle pomocou programov na hackovanie serverov.
Čo ešte ohrozuje servery okrem hackovania
Server môže zlyhať z iných dôvodov, ako je napadnutie. Môže ísť napríklad o napadnutie škodlivým softvérom alebo len o fyzické zlyhanie jednej zo súčastí.
Preto by opatrenia na ochranu servera mali zahŕňať:
- Inštalácia a aktualizácia programov na ochranu servera - antivírusy.
- Pravidelné šifrované kópie údajov aspoň raz týždenne, pretože podľa štatistík sú serverové pevné disky na prvom mieste z hľadiska frekvencie porúch. Uistite sa, že záložná kópia uložené vo fyzicky zabezpečenom prostredí.
- Zabezpečenie nepretržitého napájania serverovej miestnosti.
- Včasná fyzická prevencia serverov, vrátane ich čistenia od prachu a výmeny tepelnej pasty.
Skúsenosti špecialistov Integrus nám to hovoria najlepšia ochrana proti takýmto hrozbám je použitie osvedčené postupy v oblasti systémov ochrany serverov.
Na zaistenie bezpečnosti serverov našich zákazníkov používame kombináciu nástrojov: firewally, antivírusy, technológie zabezpečenia / správy udalostí (SIM / SEM), technológie detekcie / ochrany pred narušením (IDS / IPS), technológie analýzy správania v sieti (NBA). , samozrejmosťou je pravidelná preventívna údržba serverov a zabezpečenie bezpečných serverovní na kľúč. To vám umožňuje minimalizovať riziká hackingu alebo zlyhania servera z iných dôvodov.
Sme pripravení vykonať bezpečnostný audit serverov vašej spoločnosti, poradiť sa s odborníkmi, vykonať všetky druhy prác pri nastavovaní ochrany serverových zariadení.