Apsaugoti serverio nuo išorinės prieigos kartą ir visiems laikams neįmanoma, nes kasdien atrandama vis naujų pažeidžiamumų ir atsiranda naujų būdų nulaužti serverį. Šiame straipsnyje kalbėsime apie serverių apsaugą nuo neteisėtos prieigos.
Bet kurios įmonės serveriai anksčiau ar vėliau gali tapti įsilaužimo ar virusų atakos taikiniu. Paprastai tokios atakos pasekmė yra duomenų praradimas, reputacijos ar finansinė žala, todėl serverio saugumo klausimams turėtų būti skiriamas prioritetas.
Reikėtų suprasti, kad apsauga nuo įsilaužimo į serverį yra priemonių rinkinys, apimantis nuolatinį serverio veikimo stebėjimą ir darbą siekiant pagerinti apsaugą. Apsaugoti serverio nuo išorinės prieigos kartą ir visiems laikams neįmanoma, nes kasdien atrandama vis naujų pažeidžiamumų ir atsiranda naujų būdų nulaužti serverį.
Šiame straipsnyje kalbėsime apie serverių apsaugą nuo neteisėtos prieigos.
Serverių apsaugos nuo neteisėtos prieigos būdai ir metodai
Serverio fizinė apsauga
Fizinė apsauga. Patartina, kad serveris būtų saugiame duomenų centre, uždaroje ir saugomoje patalpoje prie serverio neturėtų patekti pašaliniai asmenys.
Nustatykite SSH autentifikavimą
Nustatydami prieigą prie serverio, naudokite SSH rakto autentifikavimą, o ne slaptažodį, nes tokius raktus yra daug sunkiau, o kartais tiesiog neįmanoma nulaužti naudojant brutalią jėgą.
Jei manote, kad slaptažodis vis tiek reikalingas, būtinai apribokite bandymų jį įvesti skaičių.
Atkreipkite dėmesį, jei prisijungdami matote tokį pranešimą:
Paskutinis nepavykęs prisijungimas: antradienis, rugsėjo 28 d., 12:42:35 MSK 2017 m. nuo 52.15.194.10 svetainėje ssh:notty
Nuo paskutinio sėkmingo prisijungimo buvo 8243 nesėkmingi prisijungimo bandymai.
Tai gali reikšti, kad kažkas bandė įsilaužti į jūsų serverį. Tokiu atveju, norėdami sukonfigūruoti serverio apsaugą, pakeiskite SSH prievadą, apribokite IP, iš kurių galima prieiti prie serverio, sąrašą arba įdiekite programinę įrangą, kuri automatiškai blokuoja pernelyg dažną ir įtartiną veiklą.
Reguliariai įdiekite naujausius naujinimus
Norėdami užtikrinti serverio apsaugą, nedelsdami įdiekite naujausius naudojamos serverio programinės įrangos pataisas ir naujinimus – operacinė sistema, hipervizorius, duomenų bazės serveris.
Patartina kiekvieną dieną tikrinti, ar nėra naujų pataisų, naujinimų ir klaidų / pažeidžiamumo pranešimų, kad išvengtumėte atakų, kurios išnaudoja nulinės dienos pažeidžiamumą. Norėdami tai padaryti, užsiprenumeruokite programinės įrangos kūrimo įmonės naujienas, sekite jos puslapius socialiniuose tinkluose.
Apsaugokite savo slaptažodžius
Iki šiol vienas iš labiausiai paplitusių būdų gauti prieigą prie serverio yra nulaužti serverio slaptažodį. Todėl laikykitės gerai žinomų, bet vis dėlto svarbių rekomendacijų, kad nepaliktumėte serverio neapsaugoto:
- Nenaudokite slaptažodžių, kuriuos lengva atspėti, pavyzdžiui, įmonės pavadinimo;
- jei vis dar naudojate numatytąjį administratoriaus konsolės slaptažodį, nedelsdami pakeiskite jį;
- slaptažodžiai skirtingos paslaugos turi skirtis;
- jei kam nors reikia duoti slaptažodį, niekada nesiųskite IP adreso, prisijungimo vardo ir slaptažodžio tuo pačiu el.paštu ar messenger žinute;
- Norėdami prisijungti prie savo administratoriaus paskyros, galite nustatyti dviejų veiksnių autentifikavimą.
Ugniasienė
- Įsitikinkite, kad serveryje yra , jis sukonfigūruotas ir veikia visą laiką.
- Apsaugokite tiek įeinantį, tiek išeinantį srautą.
- Stebėkite, kurie prievadai yra atidaryti ir kokiais tikslais, neatidarykite nieko nereikalingo, kad sumažintumėte galimų pažeidžiamumų, susijusių su įsilaužimu į serverį, skaičių.
Visų pirma ugniasienė labai padeda apsaugoti serverį nuo ddos atakų, nes galite greitai sukurti draudžiančias ugniasienės taisykles ir pridėti IP adresus, iš kurių kyla ataka, arba blokuoti prieigą prie tam tikrų programų naudodami tam tikrus protokolus.
Stebėjimas ir įsibrovimų aptikimas
- Apribokite savo serveryje veikiančią programinę įrangą ir paslaugas. Periodiškai tikrinkite viską, ką veikiate, ir, jei pastebėsite, kad procesai jums nepažįstami, nedelsdami juos ištrinkite ir pradėkite nuskaityti, ar nėra virusų.
- Reguliariai tikrinkite, ar nėra klastojimo požymių. Nauja informacija gali rodyti įsilaužimą sąskaitas naudotojai, kurių nesukūrėte, perkeldami ar ištrynę failą /etc/syslog.conf, ištrintus failus/etc/shadow Ir /etc/passwrd.
- Stebėkite savo serverio našumą, įprastą jo greitį ir pralaidumas, todėl galite pastebėti nukrypimus, pavyzdžiui, kai serverio apkrova tapo žymiai didesnė nei įprastai.
Naudojant VPN ir SSL/TLS šifravimą
Jei reikia nuotolinė prieigaį serverį, jis turėtų būti leidžiamas tik iš tam tikrų IP adresų ir vykti per VPN.
Kitas žingsnis užtikrinant saugumą galėtų būti SSL nustatymas, kuris leis ne tik užšifruoti duomenis, bet ir patikrinti kitų tinklo infrastruktūros dalyvių tapatybę, išduodant jiems atitinkamus sertifikatus.
Serverio saugumo patikra
Vertėtų savarankiškai patikrinti serverio saugumą pentest metodu, t.y. atakų modeliavimas, siekiant rasti galimus pažeidžiamumus ir laiku juos pašalinti. Patartina į tai įtraukti specialistus informacijos saugumas, tačiau kai kuriuos bandymus galima atlikti savarankiškai, naudojant serverių įsilaužimo programas.
Kas dar kelia grėsmę serveriams, be įsilaužimo?
Serveris gali sugesti dėl daugelio kitų priežasčių nei įsilaužimas. Pavyzdžiui, tai gali būti kenkėjiškų programų infekcija arba tiesiog fizinis bet kurio komponento gedimas.
Todėl serverio apsaugos priemonės turėtų apimti:
- Programų, skirtų serveriui apsaugoti, diegimas ir atnaujinimas – antivirusai.
- Reguliarios šifruotos duomenų kopijos, bent kartą per savaitę, nes pagal statistiką serverių standieji diskai yra pirmoje vietoje pagal gedimų dažnį. Įsitikinkite atsarginė kopija saugomi fiziškai saugioje aplinkoje.
- Nepertraukiamo maitinimo serverio patalpoje užtikrinimas.
- Laiku atliekama fizinė serverių prevencija, įskaitant jų valymą nuo dulkių ir terminės pastos keitimą.
Integrus specialistų patirtis byloja, kad geriausia apsauga nuo tokio pobūdžio grėsmių yra geriausios praktikos taikymas serverių apsaugos sistemų srityje.
Klientų serverių saugumui užtikrinti naudojame įrankių derinį: ugniasienės, antivirusinės, saugumo / įvykių valdymo technologijos (SIM / SEM), įsibrovimo aptikimo / apsaugos technologijos (IDS / IPS), tinklo elgsenos analizės (NBA) technologijos. , žinoma, reguliari profilaktinė serverių priežiūra ir saugių serverių kambarių sutvarkymas iki galo. Tai leidžia iki minimumo sumažinti įsilaužimo ar serverio gedimo dėl kitų priežasčių riziką.
Esame pasiruošę atlikti Jūsų įmonės serverių saugos auditą, konsultuotis su specialistais, atlikti visus serverių įrangos apsaugos nustatymo darbus.
Dauguma programų turi sąveikauti su vartotoju įvesdamos tam tikrus duomenis, ar tai būtų vardas, pavardė, ūgis, svoris, kurį reikia įvesti į duomenų bazę, ar kokio nors objekto, kuriam reikia ką nors apskaičiuoti, geometriniai matmenys. Visus šiuos duomenis įveda vartotojas – asmuo, o tai reiškia, kad atsakyti gali bet kas. Ką išduos programa, jei vartotojas ją parašys žodžiais, o ne reikalaujamu amžiumi? Labiausiai tikėtina, kad programa sugenda arba užšaldys, bet ne, jei ji turi „kvailių apsaugą“.
Kodėl programa gali sugesti arba užstrigti? Programa bandys paversti simbolių rinkinį į skaičių, o tai nebus įmanoma, vadinasi, tolimesnė aplikacijos veikla neapibrėžta. Todėl labai svarbu sutvarkyti programos struktūrą taip, kad stojant netikėtas duomenų programai (neteisinga reikalingo formato požiūriu: reikalingas skaičius, bet įvedamas žodis), aplikacija nesugriuvo, o pranešė vartotojui, kad įvyko klaida ir paprašė pakartoti įvedimą. Tai yra „kvailos įrodymas“.
Apsaugos nuo klaidų įgyvendinimas C
Norint įgyvendinti gerą apsisaugą nuo įvairių skaitmeninių (int, double...) duomenų įvedimo, reikia perskaityti ne pačius skaičius, o visą įvesties eilutę ir tik tada analizuoti įvestį. C kalba turi labai gerą funkciją sscanf(const char *, const char *, args) , kuri veikia panašiai kaip funkcija scanf(const char *, args) grąžina sėkmingai nuskaitytų argumentų skaičių, tik duomenys nuskaitomi ne iš standartinio įvesties srauto, bet iš eilutės, perduotos jam kaip pirmasis argumentas.
Pažvelkime į keletą funkcijų, kurios įgyvendina apsisaugojimo nuo klaidų naudojant funkciją sscanf, pavyzdžius.
Įvedamas sveikasis skaičius tikrinant, ar įvestis neteisinga
int get_integer(const char *msg) ( char atsakymas; // eilutė, skirta skaityti int n; // galutinis sveikasis skaičius printf("%s", msg); // rodyti raginimą fgets(atsakymas, dydis(atsakymas), stdin); // skaitykite eilutę // kol bus nuskaitytas sveikasis skaičius, while (sscanf(atsakymas, "%d", &n) != 1) ( printf("Neteisinga įvestis. Bandykite dar kartą: "); // atspausdinkite pranešimą apie klaidą fgets (atsakymas, dydis(atsakymas), stdin ir dar kartą perskaitykite eilutę ) return n // grąžinti teisingą sveikąjį skaičių )Norėdami nuskaityti sveikąjį skaičių, algoritmas nuskaito visą eilutę ir bando iš jos gauti sveikąjį skaičių. Jei tai nepavyksta, funkcija rodo klaidos pranešimą, kuriame prašoma pakartoti įvestį, kol bus įvesta teisinga sveikojo skaičiaus reikšmė.
Tikrojo skaičiaus įvedimas tikrinant, ar įvestis neteisingai
double get_double(const char *msg) ( char atsakymas; // eilutė, skirta skaityti double x; // galutinis realusis skaičius printf("%s", msg); // rodyti įvesties raginimą fgets(atsakymas, dydis(atsakymas), stdin); // skaitykite eilutę //, kol bus nuskaitytas tikrasis skaičius (sscanf(atsakymas, "%lf", &x) != 1) ( printf("Neteisinga įvestis. Bandykite dar kartą: "); // spausdinkite a. pranešimas apie klaidą fgets(atsakymas, dydis(atsakymas), stdin // ir dar kartą perskaitykite eilutę) return x // grąžina teisingą realų skaičių;Taško įvedimas koordinačių plokštumoje (struktūra su dviem realiais laukais)
// duomenų struktūros aprašymas typedef struct point_t ( double x; // x koordinatė double y; // y koordinatė ) point_t; point_t get_point(const char *msg) ( char atsakymas; // eilutė point_t point skaitymui; // galutinis taškas printf("%s", msg); // rodyti įvesties raginimą fgets(atsakymas, dydis(atsakymas), stdin ); // skaitykite eilutę //, kol bus nuskaitytos abi taško koordinatės, o (sscanf(atsakymas, "(%lf,%lf)", &point.x, &point.y) != 2) ( printf("Neteisinga įvestis. Bandykite dar kartą: "); // rodomas klaidos pranešimas fgets(atsakymas, dydis(atsakymas), stdin); // ir dar kartą perskaitykite eilutę ) return point; // grąžinti teisingą tašką )Kaip matyti iš pavyzdžių, sscanf funkcijos funkcija, grąžinanti nuskaitytų argumentų skaičių, leidžia kontroliuoti įvestų duomenų teisingumą nurodytu formatu, o visos eilutės skaitymas apsaugo nuo tarpo simbolių ar eilučių lūžių. „\n“ liks įvesties sraute, o tai labai dažnai verčia jus eikvoti. Klaidai rasti nereikia valandos ar net dienos.
Apžvalga