Nemogoče je enkrat za vselej zaščititi strežnik pred zunanjim dostopom, saj se vsak dan odkrijejo nove ranljivosti in pojavijo se novi načini za vdor v strežnik. V tem članku bomo govorili o zaščiti strežnikov pred nepooblaščenim dostopom.
Strežniki katerega koli podjetja lahko prej ali slej postanejo tarča vdorov ali napadov virusov. Običajno je rezultat takšnega napada izguba podatkov, ugled ali finančna škoda, zato je treba vprašanjem varnosti strežnika nameniti prednost.
Treba je razumeti, da je zaščita pred vdorom v strežnik niz ukrepov, vključno s stalnim spremljanjem delovanja strežnika in delom za izboljšanje zaščite. Nemogoče je enkrat za vselej zaščititi strežnik pred zunanjim dostopom, saj se vsak dan odkrijejo nove ranljivosti in pojavijo se novi načini za vdor v strežnik.
V tem članku bomo govorili o zaščiti strežnikov pred nepooblaščenim dostopom.
Načini in metode zaščite strežnikov pred nepooblaščenim dostopom
Fizično varovanje strežnika
Fizično varovanje. Priporočljivo je, da se strežnik nahaja v varnem podatkovnem centru, v zaprtem in varovanem prostoru ne smejo imeti dostopa do strežnika.
Nastavite avtentikacijo SSH
Pri nastavitvi dostopa do strežnika namesto gesla uporabite avtentikacijo ključa SSH, saj je takšne ključe veliko težje in včasih preprosto nemogoče vdreti s surovo silo.
Če menite, da še vedno potrebujete geslo, omejite število poskusov vnosa.
Prosimo, upoštevajte, če vidite takšno sporočilo, ko se prijavite:
Zadnja neuspešna prijava: torek, 28. september, 12:42:35 MSK 2017 z 52.15.194.10 na ssh:notty
Od zadnje uspešne prijave je bilo 8243 neuspelih poskusov prijave.
Morda pomeni, da je nekdo poskušal vdreti v vaš strežnik. V tem primeru za konfiguracijo varnosti strežnika spremenite vrata SSH, omejite seznam IP-jev, s katerih je možen dostop do strežnika, ali namestite programsko opremo, ki samodejno blokira prepogosto in sumljivo dejavnost.
Redno nameščajte najnovejše posodobitve
Za zagotovitev zaščite strežnika nemudoma namestite najnovejše popravke in posodobitve za strežniško programsko opremo, ki jo uporabljate – operacijski sistem, hipervizor, strežnik baz podatkov.
Priporočljivo je, da vsak dan preverite, ali obstajajo novi popravki, posodobitve in poročila o napakah/ranljivostih, da preprečite napade, ki izkoriščajo ranljivosti ničelnega dne. Če želite to narediti, se naročite na novice podjetja za razvoj programske opreme, sledite njegovim stranem v družbenih omrežjih.
Zaščitite svoja gesla
Do zdaj je bil eden najpogostejših načinov za dostop do strežnika vdiranje v geslo strežnika. Zato upoštevajte dobro znana, a kljub temu ustrezna priporočila, da strežnika ne pustite nezaščitenega:
- Ne uporabljajte gesel, ki jih je enostavno uganiti, kot je ime vašega podjetja;
- če še vedno uporabljate privzeto geslo za skrbniško konzolo, ga takoj spremenite;
- gesla za različne storitve mora biti drugačen;
- če morate nekomu dati geslo, nikoli ne pošiljajte naslova IP, prijave in gesla v istem e-poštnem sporočilu ali sporočilu Messengerja;
- Za prijavo v skrbniški račun lahko nastavite dvostopenjsko avtentikacijo.
Požarni zid
- Prepričajte se, da ima strežnik , da je konfiguriran in da ves čas deluje.
- Zavarujte dohodni in odhodni promet.
- Spremljajte, katera vrata so odprta in za kakšne namene, ne odpirajte ničesar nepotrebnega, da zmanjšate število možnih ranljivosti za vdor v strežnik.
Zlasti požarni zid je zelo koristen pri zaščiti strežnika pred ddos napadi, ker lahko hitro ustvarite prepovedana pravila požarnega zidu in dodate naslove IP, s katerih prihaja napad, ali blokirate dostop do določenih aplikacij z uporabo določenih protokolov.
Nadzor in odkrivanje vdorov
- Omejite programsko opremo in storitve, ki se izvajajo na vašem strežniku. Občasno preverite vse, kar imate zagnano, in če najdete kakršne koli procese, ki vam niso znani, jih takoj izbrišite in začnite skenirati za viruse.
- Redno preverjajte znake poseganja. Nove informacije lahko kažejo na vdor računi uporabniki, ki jih niste ustvarili, premikanje ali brisanje datoteke /etc/syslog.conf, izbrisane datoteke/etc/shadow in /etc/geslo.
- Spremljajte delovanje strežnika, si oglejte njegovo običajno hitrost in prepustnost, tako da lahko opazite odstopanja, na primer, ko je obremenitev strežnika postala bistveno večja kot običajno.
Uporaba VPN in šifriranja SSL/TLS
Če je potrebno oddaljeni dostop na strežnik, mora biti dovoljen samo z določenih naslovov IP in se zgoditi prek VPN-ja.
Naslednji korak pri zagotavljanju varnosti bi lahko bila nastavitev SSL, ki vam bo omogočila ne le šifriranje podatkov, ampak tudi preverjanje identitete drugih udeležencev v omrežni infrastrukturi, ki jim izdaja ustrezne certifikate.
Varnostni pregled strežnika
Dobro bi bilo samostojno preveriti varnost strežnika z metodo pentest, tj. modeliranje napadov za iskanje potencialnih ranljivosti in njihovo pravočasno odpravo. V ta namen je priporočljivo vključiti strokovnjake informacijska varnost, nekatere teste pa je mogoče opraviti neodvisno, z uporabo programov za vdiranje v strežnike.
Kaj še ogroža strežnike poleg vdorov?
Strežnik lahko odpove iz več razlogov, ki niso vdori. To je lahko na primer okužba z zlonamerno programsko opremo ali preprosto fizična okvara katere koli komponente.
Zato morajo ukrepi za zaščito strežnika vključevati:
- Namestitev in posodabljanje programov za zaščito strežnika - antivirusi.
- Redno šifrirano kopiranje podatkov, vsaj enkrat tedensko, saj so po statistiki strežniški trdi diski na prvem mestu po pogostosti okvar. Prepričajte se varnostno kopiranje shranjeni v fizično varnem okolju.
- Zagotavljanje neprekinjenega napajanja strežniške sobe.
- Pravočasna fizična preventiva strežnikov, vključno s čiščenjem pred prahom in zamenjavo termalne paste.
Izkušnje Integrusovih strokovnjakov nam povedo, da je najboljša zaščita pred tovrstnimi grožnjami uporaba najboljših praks na področju sistemov za zaščito strežnikov.
Za zagotavljanje varnosti strežnikov naših strank uporabljamo kombinacijo orodij: požarne zidove, protivirusne programe, tehnologije za varnost/upravljanje dogodkov (SIM/SEM), tehnologije za zaznavanje/zaščito vdorov (IDS/IPS), tehnologije za analizo vedenja omrežja (NBA). , seveda redno preventivno vzdrževanje strežnikov in ureditev varovanih strežniških sob na ključ. To vam omogoča, da zmanjšate tveganje vdora ali okvare strežnika iz drugih razlogov na minimum.
Pripravljeni smo izvesti varnostni pregled strežnikov vašega podjetja, se posvetovati s strokovnjaki in opraviti vse vrste del za vzpostavitev zaščite strežniške opreme.
Večina programov mora komunicirati z uporabnikom tako, da vnese določene podatke, pa naj bo to polno ime, višina, teža, ki jih je treba vnesti v bazo podatkov, ali geometrijske dimenzije nekega predmeta, za katerega je treba nekaj izračunati. Vse te podatke vnese uporabnik – oseba, kar pomeni, da lahko v odgovor pride karkoli. Kaj bo izpisal program, če ga uporabnik namesto zahtevane starosti zapiše z besedami? Najverjetneje se bo program zrušil ali zamrznil, vendar ne, če ima "zaščito pred norci".
Zakaj se lahko program zruši ali zamrzne? Program bo nabor znakov poskušal pretvoriti v število, kar pa ne bo mogoče, kar pomeni, da nadaljnje delovanje aplikacije ni definirano. Zato je zelo pomembno strukturo programa organizirati tako, da ob vstopu nepričakovano za podatkovni program (nepravilno z vidika zahtevane oblike: potrebna je številka, vnesena pa je beseda), se aplikacija ni zrušila, ampak je uporabnika obvestila, da je prišlo do napake in zahtevala ponovitev vnosa. To je "dokaz za bedaka".
Implementacija zaščite pred napakami v C
Za izvedbo dobre zaščite pred napakami pri vnosu različnih številskih (int, double...) podatkov ni treba prebrati samih števil, temveč celoten vhodni niz in šele nato analizirati vnos. Jezik C ima zelo dobro funkcijo sscanf(const char *, const char *, args) , ki deluje podobno kot funkcija scanf(const char *, args) in vrne število uspešno prebranih argumentov, le podatki se ne berejo iz standardnega vhodnega toka, ampak iz niza, ki mu je bil posredovan kot prvi argument.
Oglejmo si nekaj primerov funkcij, ki izvajajo zaščito pred napakami s funkcijo sscanf.
Vnos celega števila s preverjanjem napačnega vnosa
int get_integer(const char *msg) ( char odgovor; // vrstica za branje int n; // končno celo število printf("%s", msg); // prikaz poziva fgets(odgovor, sizeof(odgovor), stdin); // preberi vrstico // dokler ni prebrano celo število while (sscanf(answer, "%d", &n) != 1) ( printf("Nepravilen vnos. Poskusi znova: "); // natisni sporočilo o napaki fgets (odgovor, sizeof(odgovor), stdin); // in ponovno preberite vrstico return n; // vrnite pravilno celo število)Za branje celega števila algoritem prebere celoten niz in nato poskuša iz njega pridobiti celo število. Če to ne uspe, funkcija prikaže sporočilo o napaki in vas prosi, da ponavljate vnos, dokler ne vnesete pravilne vrednosti celega števila.
Vnos realnega števila s preverjanjem napačnega vnosa
double get_double(const char *msg) ( char odgovor; // vrstica za branje dvojnega x; // končno realno število printf("%s", msg); // prikaz vnosnega poziva fgets(odgovor, sizeof(odgovor), stdin); // preberi vrstico // dokler ni prebrano realno število, medtem ko (sscanf(odgovor, "%lf", &x) != 1) ( printf("Napačen vnos. Poskusi znova: "); // natisni sporočilo o napaki fgets(answer, sizeof(answer), stdin); // in ponovno preberite vrstico; vrnite pravilno realno število)Vnos točke na koordinatno ravnino (struktura z dvema realnima poljema)
// opis podatkovne strukture typedef struct point_t ( dvojni x; // x koordinata dvojni y; // y koordinata ) point_t; point_t get_point(const char *msg) ( char answer; // vrstica za branje point_t point; // končna točka printf("%s", msg); // prikaz vnosnega poziva fgets(answer, sizeof(answer), stdin ); // branje vrstice // dokler se ne prebereta obe koordinati točke while (sscanf(odgovor, "(%lf,%lf)", &point.x, &point.y) != 2) ( printf("Nepravilen vnos. Poskusi znova: "); // prikaže sporočilo o napaki fgets(answer, sizeof(answer), stdin); // in znova preberi vrstico) vrni točko; // vrni pravilno točko)Kot je razvidno iz primerov, funkcija funkcije sscanf, ki vrne število prebranih argumentov, omogoča nadzor nad pravilnostjo vnesenih podatkov v podanem formatu, branje celotne vrstice pa ščiti pred dejstvom, da presledki ali prelomi vrstic »\n« bo ostal v vhodnem toku, kar vas zelo pogosto prisili v zapravljanje. Ne potrebujete ene ure ali celo dneva, da odkrijete napako.
Pregled