C apsauga nuo. Serverio apsauga nuo įsilaužimo

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 užstrigti arba užstrigti? Programa bandys konvertuoti simbolių rinkinį į skaičių, o tai nebus įmanoma, o tai reiškia tolesnis darbas paraiška 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ą neapsaugą įvedant įvairius skaitmeninius (int, double...) duomenis, reikia perskaityti ne pačius skaičius, o visą įvesties eilutę ir tik tada analizuoti įvestį. C kalba turi labai gera funkcija 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 neskaitomi iš standartinis srautasįvestis, bet iš eilutės perduota kaip pirmasis argumentas.

Pažvelkime į keletą funkcijų, kurios įgyvendina kvailių tikrinimą 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 raginimą fgets(atsakymas, dydis(atsakymas), stdin) ; // skaitykite eilutę //, kol bus nuskaitytas tikrasis skaičius, while (sscanf(atsakymas, "%lf", &x) != 1) ( printf("Neteisinga įvestis. Bandykite dar kartą: "); // atspausdinkite pranešimą apie klaida fgets(atsakymas, dydis(atsakymas), stdin); // ir dar kartą perskaitykite eilutę ) return x; // grąžinkite teisingą realųjį 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 abiejų taškų 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ų, nuskaitytų argumentų skaičių grąžinančios funkcijos sscanf funkcija leidžia kontroliuoti įvestų duomenų teisingumą nurodytu formatu, o visos eilutės skaitymas apsaugo nuo tarpo simbolių ar eilučių pertraukų. „\n“ liks įvesties sraute, o tai labai dažnai verčia jus eikvoti. Klaidai rasti nereikia valandos ar net dienos.

Sveiki visi iš UNITWAY PW komandos. Šia tema norime parodyti, kad iš mūsų pusės nėra nesąžiningos konkurencijos ir juodos, bjaurios, apgaulingos „NewDestiny“ projekto konkurencijos.

Štai sąrašas atakų sprendimų, kuriuos kada nors naudojo NewDestiny administratoriai loko9988, TyrikMan (vakar OOG ataka buvo iš Yoshkar Ola IP adreso), Killer_Pooh (Taip pat buvo užfiksuota ataka iš Volzhsky miesto). Be atakų prieš mus, gavome informacijos apie daugelio kitų serverių ataką, kuri buvo susijusi su mūsų atradimu. Paskelbdami daugybę šių atakų pataisymų, parodome, kad nedalyvaujame atakose prieš bet ką, nepaisant aiškiai susirūpinusios Zzebra PW (mirthost) administratoriaus pozicijos dėl mūsų projekto. Visiškai negailime pykčio visiems, kurie papuolė į geltoną straipsnį apie mus, kiekvienas turi savo galvą ant pečių.


Ir tai tik dalis jų sąskaitų.

Viena iš priežasčių paskelbti šią temą buvo mus pasiekę gandai. Šių gandų esmė ta, kad loko9988 atakuoja serverius ne tik dėl konkurencijos, bet ir tam, kad per jį galėtų pasiūlyti šių serverių apsaugą.

Apsauga nuo OOG atakų, pagrįsta iptables:
Pirmiausia sukuriame scenarijus užkardos taisykles, jas galite vadinti kaip tik norite.

iptables -A ĮVESTIS -p tcp -m multiport -dports 29000 -m ilgis -ilgis 500:65535 -j LOG -log-prefix "PW"

Spustelėkite norėdami išplėsti...

Pagal šią taisyklę įrašome visus žaidimų paketus iš 29000 prievado, kurių dydis svyruoja nuo 500 iki 65535 baitų.

iptables -A INPUT -p tcp -m multiport -dports 29000 -m ilgis -ilgis 500:65535 -m naujausi -name paketai -set
iptables -A Įvestis -p tcp -m multiport -dports 29000 -m ilgis -ilgis 500:65535 -m naujausi -pavadinimo paketai -atnaujinimas -sekundės 1 -atvykimų skaičius 100 -j ATMESTI

Spustelėkite norėdami išplėsti...

Pagal šias taisykles mes blokuojame vartotoją, jei serveris iš jo gavo daugiau nei 100 paketų, kurių dydis yra 500 - 65535 baitai per 1 sekundę per 29000 prievadą (žaidimas).

iptables -A INPUT -p tcp -m multiport -dports 29000 -m ilgis -ilgis DYDIS -m naujausias -name paketas1 -set
iptables -A ĮVEDIS -p tcp -m multiport -dports 29000 -m ilgis -ilgis DYDIS -m naujausias -pavadinimas paketas1 -atnaujinimas -sekundės 15 -atvykimų skaičius 3 -j ATMESTI

Spustelėkite norėdami išplėsti...

Taikydami šias taisykles blokuojame vartotojus, kurie per 15 sekundžių išsiuntė daugiau nei 3 paketus į 29000 prievadą. DYDIS – paketo dydis baitais.
Kaip sekti paketo dydį baitais?
Po pirmosios taisyklės, kurioje registruojame visus žaidimų paketus, juos galite pamatyti faile /var/log/syslog arba komanda dmesg serverio konsolėje.
Kai įvyksta ataka „syslog“, per trumpą laiką bus daug identiškų paketų.

PW IN=ipip1 OUT= MAC= SRC= VARTOTOJO IP ADRESAS 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

Spustelėkite norėdami išplėsti...

Aukščiau pateiktame pavyzdyje paketo dydis yra „LEN=547“.

Sutvarkėme OOG apsaugą. Pereikime prie kitų būdų, kaip „NewDestiny“ konkuruoja.
Žiaurios sąskaitos. Čia viskas labai paprasta:
#blokuoti brutalios jėgos prisijungimą

iptables -A INPUT -p tcp -m multiport --dports 29000 -m conntrack --ctstate NAUJAS -m naujausias --name brute --set
iptables -A INPUT -p tcp -m multiport -dports 29000 -m conntrack -ctstate NAUJAS -m naujausias -name brute -atnaujinimas

Spustelėkite norėdami išplėsti...

Pagal šią taisyklę 30 sekundžių blokuojame vartotojo IP, jei jis pateikė daugiau nei 3 užklausas prisijungti prie 29000 prievado.
  • Visiškai apribokite prievadus, išskyrus žaidimų per iptables.
  • Prisijunkite prie serverio naudodami ssh raktą (raktus) su kodiniu žodžiu.
  • Naudokite naujausios versijos mysql, apache2 ir kiti svarbūs paketai.
  • Įkėlus per OOG, naudokite logrotate, kitu atveju kai atsarginė kopija guolis RAM Jūsų serveris bus visiškai išnaudotas. Dėl to gali įvykti įsilaužimas.
  • Žaidimų serveryje nenaudokite trečiosios šalies programinės įrangos.
  • Naudokite tinkintą grotuvo slaptažodžio filtrą. Vos per kelias valandas mūsų prisijungus buvo daugiau nei 50 000 netinkamų autorizavimo bandymų. 30 % mūsų žaidėjų turėjo tuos pačius prisijungimus iš šių prisijungimo ir slaptažodžių porų.
Mes teikiame pirmenybę sąžiningai konkurencijai, neturime laiko ar papildomų finansų pulti. Nesipainiokite su šiais žmonėmis, tai gali baigtis blogai.

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, pašaliniai asmenys neturėtų prieiti prie serverio.

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į;
  • skirtingų paslaugų slaptažodžiai turi būti skirtingi;
  • 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ąskaitos 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 būtina Nuotolinis prisijungimasį 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 vieno iš komponentų 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, remiantis statistika, kietieji diskai serveriai yra pirmoje vietoje pagal gedimų dažnumą. Įsitikinti, kad 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ą.

Tą byloja Integrus specialistų patirtis geriausia apsauga kovoti su tokio tipo grėsme 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), įsibrovimų aptikimo / apsaugos technologijos (IDS / IPS), tinklo elgsenos analizės (NBA) technologijos. , ir, ž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.

Dalintis