Kaip apsaugoti serverį
Saugus serverio konfigūravimas yra viena iš svarbiausių administratorių užduočių. Tai taikoma ne tik savarankiškai valdomiems serveriams, bet ir nuomojamai įrangai. Tokios priemonės kaip apsauga slaptažodžiais, patikimi SSH nustatymai ir reguliarūs atnaujinimai sudaro išsamų saugumo paketą.
Kas atsakingas už saugų serverio konfigūravimą?
Savo serverio priegloba suteikia maksimalią konfigūravimo laisvę. Tinkama alternatyva yra „root“ serveriai, kuriuos siūlo daugelis paslaugų teikėjų ir suteikia prieigą prie „root“ paskyros. Abiem atvejais svarbiausios užduotys, tokios kaip įdiegimas, struktūrizavimas ir priežiūra, tenka vien tik nuomininkui. Klaidos „root“ srityje gali sukelti rimtų problemų. Tačiau laikantis tinkamų procedūrų galima sukurti puikų pagrindą patikimam, našiam ir saugiam serveriui.
Kaip apsaugoti savo serverį: žingsnis po žingsnio
Nesvarbu, ar norite apsaugoti „Windows“, „Ubuntu“ ar „Debian“ serverį, keletas universalių veiksmų padės sukurti tvirtą saugumo pagrindą. Toliau apibendriname svarbiausius veiksmus.
1 žingsnis: Atlikite minimalią diegimą
Dar prieš pradėdami imtis apsaugos priemonių ir konfigūruoti serverį, galite paveikti savo projekto būsimą saugumo potencialą. Nepriklausomai nuo to, ar naudojate „Windows“, ar „Linux“ operacinę sistemą, diegimo metu laikykitės šio principo: jūsų serveryje turėtų būti tik ta programinė įranga, kurios reikia jo užduotims atlikti.
Priežastis ta, kad kiekviena įdiegta programa kelia potencialią grėsmę saugumui ir gali neigiamai paveikti sistemos našumą. Norėdami sumažinti pažeidžiamumą, įdiekite tik būtinus sistemos komponentus ir naudokite tik patikrintą trečiųjų šalių programinę įrangą.
2 žingsnis: Nustatykite saugų slaptažodį
Įdiegus sistemą, pirmiausia turėtumėte nustatyti saugų administratoriaus (Windows) arba root (Linux) slaptažodį. Pagal numatytuosius nustatymus slaptažodis nėra nustatytas, todėl administratoriaus paskyra lieka užblokuota, kol jo nenustatysite. Dauguma operacinių sistemų iškart po įdiegimo prašo sukurti paskyrą su slaptažodžiu, kuris bus naudojamas prisijungiant kaip administratorius arba root.
Jei Linux serverį išsinuomojote iš paslaugų teikėjo ir gavote jau esamą root prisijungimo vardą, nedelsdami pakeiskite slaptažodį. Prisijunkite prie serverio per SSH ir terminale įveskite šią komandą:
passwdbashNustačius saugų slaptažodį, jį reikės patvirtinti. Pasirinkite kuo ilgesnį slaptažodį, sudarytą iš raidžių, specialių simbolių ir skaičių derinio. Taip pat rekomenduojama naudoti slaptažodžių tvarkyklę, kad slaptažodis būtų saugiai saugomas ir prireikus jį būtų galima lengvai rasti.
3 žingsnis: Pakeiskite SSH prievadą
Pagal numatytuosius nustatymus SSH ryšys naudoja TCP/UDP 22-ąjį prievadą, kuris yra iš anksto sukonfigūruotas diegiant sistemą. Hakeriai dažnai savo automatinius prisijungimo bandymus nukreipia būtent į šį prievadą. Norėdami sumažinti neteisėto prisijungimo riziką, šifruotiems nuotoliniams ryšiams paskirkite kitą prievadą.
Norėdami tai padaryti, redaguokite SSH konfigūracijos failą sshd_config naudodami bet kurį teksto redaktorių. Pavyzdžiui, norėdami naudoti redaktorių „nano“, paleiskite šią komandą:
nano /etc/ssh/sshd_configbashRaskite eilutę su pavadinimu „Port“ ir pakeiskite 22-ąjį prievadą į norimą numerį. Atminkite, kad įvairioms paslaugoms yra rezervuoti ir kiti standartiniai prievadai (pvz., 80-asis prievadas – HTTP).
Kad pakeitimai faile sshd_config įsigaliotų, reikia iš naujo paleisti SSH paslaugą. „Debian“ sistemoje tai galima padaryti komanda etc/init.d/ssh restart“. „Ubuntu“ vartotojai paslaugą turi paleisti iš naujo komanda service ssh restart“.
4 žingsnis: Išjunkite SSH prisijungimą administratorių paskyroms
Norint dar labiau apsaugoti savo serverį, rekomenduojama išjungti SSH prisijungimą naudotojo „root“ arba administratoriaus paskyrai. Priešingu atveju, jei įsilaužėlis sužinotų slaptažodį, jis galėtų pasinaudoti šia paskyra nuotolinei prieigai.
Prieš įgyvendindami šią priemonę, įsitikinkite, kad yra bent viena kita paskyra, kuri gali prisijungti prie serverio, kad išvengtumėte situacijos, kai patys negalėsite prisijungti. Linux sistemose tokią paskyrą sukurkite naudodami šią komandą:
useradd -g users -d /home/user1 -m -s /bin/bash user1bashTai sukuria pavyzdinę vartotojo paskyrą pavadinimu „user1“. Toliau paskyrai priskirkite saugų slaptažodį:
passwd user1bashPatikrinkite, ar pavyksta prisijungti naudojant sukurtą vartotojo paskyrą. Jei pavyko, pereikite prie pagrindinės užduoties: išjunkite „root“ paskyrą. Vėl atidarykite SSH konfigūracijos failą sshd_config naudodami pageidaujamą redaktorių. Suraskite įrašą PermitRootLogin yes ir pakeiskite jį į PermitRootLogin no. Perkėlus SSH paslaugą, nuotolinė prieiga naudojant „root“ paskyrą nebus galima.
Naudodami konfigūracijos failo AllowGroups įrašą, taip pat galite nurodyti, kuriems vartotojams leidžiama prisijungti per SSH. Tam tiesiog sukurkite grupę (addgroup) ir į ją įtraukite norimus vartotojus (adduser). Tada įrašykite pasirinktos grupės pavadinimą į sshd_config (pvz., AllowGroups ssh_users).
5 žingsnis: Nustatykite el. pašto pranešimus apie prisijungimus per SSH
Nepriklausomai nuo to, kokių konkrečių priemonių imatės SSH prieigai apsaugoti, vėliau turėtumėte nuolat stebėti visą nuotolinę veiklą. Tai užtikrins, kad galėsite patikrinti, ar jūsų serveryje veikianti SSH paslauga yra tinkamai apsaugota, ir anksti aptikti neteisėtus prisijungimo bandymus, o tai leis jums tinkamai reaguoti. Paprastas komandinės eilutės scenarijus gali automatiškai išsiųsti pranešimą el. paštu į jūsų adresą po kiekvieno sėkmingo nuotolinio prisijungimo prie jūsų serverio.
Čia pateikiamas pavyzdinis scenarijus /opt/shell-login.sh, skirtas „Linux“ sistemai, kurį galite lengvai sukurti patys:
#!/bin/bash
echo "Login on $(hostname) on $(date +%Y-%m-%d) at $(date +%H:%M)"
echo "User: $USER"
echo
fingertxtToliau į failą /etc/profile įtraukite šią eilutę:
/opt/shell-login.sh | mailx -s "SSH login on the server" youremail@example.comtxtŠis įrašas užtikrina, kad skriptas būtų vykdomas ir išsiųstų pranešimo laišką į nurodytą adresą kiekvieną kartą, kai prisijungiama per SSH. Tam, kad tai veiktų, skriptui turi būti suteiktos 755 teisės (skaitymo ir vykdymo teisės visiems vartotojams bei rašymo teisės savininkui). Šias teises galite nustatyti šia komanda:
chmod 755 /opt/shell-login.shbash6 žingsnis: Užblokuokite nenaudojamus prievadus
Atviri prievadai paprastai nekelia didelės grėsmės saugumui, nes jie yra būtini ryšiui su įvairiomis paslaugomis ir programomis palaikyti. Pavyzdžiui, prievadai 80 ir 443 yra būtini HTTP ir HTTPS ryšiams, kaip ir jūsų pasirinktas SSH prievadas. Tačiau šios sąsajos gali tapti pažeidžiamomis, jei susijusiose programose yra saugumo spragų, kuriomis gali pasinaudoti įsilaužėliai.
Jei atlikote minimalią sistemos diegimą ir įdiegėte tik ribotą skaičių trečiųjų šalių programų, papildomų reikalingų prievadų skaičius turėtų būti nedidelis. Norėdami apsaugoti savo serverį nuo atakų, ugniasienės nustatymuose turėtumėte užblokuoti visus nereikalingus atvirus prievadus. Daugumoje pagrindinių operacinių sistemų iš anksto įdiegta paketų filtravimo programinė įranga, pavyzdžiui, „iptables“. Ši priemonė leidžia nustatyti taisykles, reguliuojančias duomenų srautą, įskaitant leidžiamų ir blokuojamų prievadų nurodymą.
7 žingsnis: Reguliariai atnaujinkite programinę įrangą
Žinomos programųsaugumo spragos paprastai greitai pašalinamos atnaujinimais. Nuolat sekdami savo operacinės sistemos ir įdiegtų programų atnaujinimus bei juos nedelsiant įdiegdami, užtikrinate optimalų savo serverio apsaugą. Dauguma serverių sistemų taip pat siūlo funkcijas, leidžiančias automatiškai atsisiųsti ir įdiegti svarbiausius saugumo atnaujinimus foniniame režime.
Pavyzdžiui, jei saugote „Windows“ serverį, skyriuje „Windows Update“ galite nustatyti konkrečias automatinių atnaujinimų taisykles. Tai apima nustatymą, kada ir kaip dažnai tikrinami atnaujinimai, ar juos reikia įdiegti iš karto ir kada sistema turi būti perkrauta. „Linux“ sistemose yra tokių įrankių kaip apt-listchanges arba apticron apvalkalo scenarijus, kurie kasdien praneša apie naujus prieinamus programinės įrangos paketus ir juos atsisiunčia. Papildomi scenarijai, pavyzdžiui, unattended-upgrades, gali atlikti automatinį įdiegimą.
Net ir naudodami automatinį atnaujinimo procesą, būtinai stebėkite, kokie atnaujinimai jau atlikti. Tai padės nustatyti ir ištaisyti klaidas, kurios gali atsirasti atnaujinimo proceso metu.
8 žingsnis: Apsaugokite „Windows“ ir „Linux“ serverius nuo atakų „brute-force“ metodu
Vienas iš paprasčiausių ir dažniausiai pasitaikančių atakų būdų yra „brute-force“ ataka. Šio tipo atakos metu hakeriai naudoja įrankius, kad pakartotinai bandytų atspėti slaptažodį. Įgyvendindami patikimas slaptažodžių tvarkymo praktikas, galite žymiai sumažinti tikimybę, kad šis metodas bus sėkmingas.
Tačiau jei jūsų serveris teikia paslaugas, kurioms reikalingas vartotojo prisijungimas, negalima manyti, kad visi vartotojai laikosi saugių slaptažodžių naudojimo taisyklių. Šią riziką padėti sumažinti gali analizės įrankiai: tokios programos kaip „Fail2ban“ (Linux/POSIX sistemoms) arba „RdpGuard“ (Windows) stebi serverio žurnalo failus, aptinka neįprastą elgesį ir blokuoja įtartinus IP adresus. Galite nustatyti, kiek kartų leidžiama nesėkmingai bandyti prisijungti prieš pradedant blokavimą, taip pat blokavimo trukmę.
9 žingsnis: Naudokite stebėjimo įrankius
Siekiant užtikrinti serverio saugumą, labai svarbu užtikrinti, kad aparatinė ir programinė įranga sąveikautų taip, kaip numatyta. Tai nėra vienkartinis uždavinys, o nuolatinė pareiga, reikalaujanti nuolatinio dėmesio. Atsižvelgiant į didelį skirtingų sistemos procesų skaičių, patartina nuo pat pradžių naudoti stebėjimo įrankius. Šie įrankiai stebi visą serverio veiklą ir įspėja apie nukrypimus nuo normos.
Paprasta ir lengvai konfigūruojama programa šiam tikslui yra „Monit“, kurią daugelyje „Linux“ distribucijų galima įdiegti per paketų tvarkyklę. Ši atvirojo kodo programa (GNU-AGPL licencija) gali stebėti procesus, failus, debesų aplinkas, kompiuterius, programas ar skriptus, taip pat sistemos išteklius, pavyzdžiui, procesoriaus ir atminties naudojimą. Norint vykdyti išsamesnę stebėseną, verta apsvarstyti „Nagios“ – atvirojo kodo įrankį, skirtą „Linux“ ir „Windows“ sistemoms. „Nagios“ taip pat galima išplėsti naudojant „Nagios“ papildinius.
10 žingsnis: Nustatykite atsargines kopijas
Rekomenduojami konfigūravimo veiksmai žymiai padidina jūsų serverio saugumą. Tačiau net ir geriausios konfigūracijos bei kruopšti priežiūra negali užtikrinti 100 % apsaugos. Išsami atsarginių kopijų strategija yra esminė jūsų saugumo sistemos sudedamoji dalis, leidžianti atkurti failus duomenų praradimo atveju.
Yra daug patikimų įrankių, kurie padės jums kurti ir atkurti atsargines kopijas. Viena iš nemokamų galimybių – atvirojo kodo sinchronizavimo įrankis „rsync“, suderinamas su dauguma pagrindinių platformų (macOS, Windows, Linux). Šis įrankis užtikrina, kad jūsų atsarginė kopija būtų atnaujinama realiuoju laiku, atspindėdamas visus originalioje duomenų bazėje atliktus pakeitimus.
Be bendros serverio atsarginės kopijos, būtinai pasirūpinkite, kad būtų sukurtos ir duomenų bazių atsarginės kopijos.
Siekiant užtikrinti maksimalų atsarginių kopijų saugumą, jas reikėtų saugoti išorinėse laikmenose (pvz., nešiojamuosiuose kietuosiuose diskuose, papildomuose serveriuose), o ne pačiame saugomame serveryje.