Jei valdai savo serverį, pavyzdžiui VPS, turi suprasti vieną dalyką: nuo pirmos įjungimo minutės jį jau bando pasiekti automatiniai botai. Jie dieną naktį ieško silpnų slaptažodžių, atvirų prievadų ir pasenusių programų. Gera žinia, serverio apsauga nėra magija. Užtenka kelių pamatinių žingsnių, kad iš lengvo taikinio virstum tvirtove. Šiame tekste žingsnis po žingsnio parodysiu, kaip apsaugoti prisijungimą su SSH raktais, sukonfigūruoti ugniasienę, įdiegti fail2ban ir užtikrinti reguliarius atnaujinimus.
Kodėl serverio saugumas svarbus nuo pirmos minutės
Daugelis pradedančiųjų mano, kad jų serveris niekam neįdomus, nes svetainė dar maža. Tai pavojinga klaida. Botams nesvarbu, ar tavo svetainė populiari. Jie skenuoja visą internetą, ieškodami bet kokio serverio, į kurį galėtų įsilaužti. Įsilaužęs užpuolikas gali pavogti duomenis, įdėti kenkėjišką kodą, naudoti tavo serverį atakoms prieš kitus arba paprasčiausiai viską ištrinti. Todėl saugumas nėra papildoma funkcija, kurią galima atidėti vėliau. Tai pamatas, kurį reikia pakloti dar prieš paleidžiant svetainę.
Kodėl botai atakuoja būtent tavo serverį
Daugelis nesupranta, kad atakos nėra asmeniškos. Užpuolikai naudoja automatinius įrankius, kurie be perstojo skenuoja milijonus IP adresų, ieškodami atvirų prievadų ir žinomų spragų. Kai jie randa serverį su atviru SSH prievadu ir slaptažodžių prisijungimu, iš karto pradeda spėjimo atakas. Jiems visai nesvarbu, ar tavo svetainė turi vieno lankytojo, ar milijoną. Serveris jiems yra tiesiog resursas, kurį galima išnaudoti.
Kai kurie užpuolikai nori pavogti duomenis, kiti nori panaudoti tavo serverį kriptovaliutų kasimui ar atakoms prieš kitas svetaines. Būtent dėl šios priežasties net visiškai naujas serveris be jokio turinio jau po kelių minučių sulaukia pirmųjų bandymų prisijungti.
Pirmas žingsnis: SSH raktų autentifikacija
Pati pirma ir svarbiausia apsauga yra tai, kaip jungiesi prie serverio. Dauguma serverių valdomi per SSH. Standartiškai jungiamasi su vartotojo vardu ir slaptažodžiu. Problema ta, kad slaptažodį galima atspėti. Botai nuolat bando tūkstančius slaptažodžių kombinacijų, kol vieną suranda. SSH raktų autentifikacija išsprendžia šią problemą iš esmės.
Kas yra SSH raktai
SSH raktai yra pora kriptografinių failų. Vienas vadinamas privačiu raktu ir lieka tik tavo kompiuteryje. Kitas vadinamas viešuoju raktu ir įdedamas į serverį. Kai jungiesi, serveris patikrina, ar tavo privatus raktas atitinka viešąjį. Jei taip, prisijungimas leidžiamas be jokio slaptažodžio.
Privatus raktas praktiškai neįmanoma atspėti, nes jis daug ilgesnis ir sudėtingesnis už bet kokį slaptažodį. Todėl net jei botas bandys milijardus kartų, jis tiesiog nepateks.
Kaip nustatyti SSH raktų autentifikaciją
- Savo kompiuteryje sugeneruok rakto porą, naudodamas komandą, kuri sukuria privatų ir viešąjį raktus.
- Viešąjį raktą nukopijuok į serverį, į vartotojo katalogo specialų failą. Tai galima padaryti automatine komanda arba rankiniu būdu.
- Įsitikink, kad gali prisijungti naudodamas raktą be slaptažodžio.
- Svarbiausias žingsnis: kai įsitikinai, kad raktai veikia, išjunk prisijungimą slaptažodžiu SSH konfigūracijoje.
Nuo tada prie serverio bus galima prisijungti tik su tavo raktu, o slaptažodžių spėjimo atakos taps beprasmės.
Kaip SSH raktai praktiškai pakeičia kasdieną
Perėjus prie SSH raktų pasikeičia ne tik saugumas, bet ir patogumas. Nebereikia atsiminti ilgo slaptažodžio kiekvienam serveriui. Prisijungimas tampa greitesnis, nes raktas patvirtina tapatybę automatiškai. Jei valdai kelis serverius, gali naudoti tą patį raktą arba atskirus raktus kiekvienam.
Papildomai privatų raktą gali apsaugoti slaptafraze, kuri veikia kaip papildomas užraktas. Net jei kas nors pavogtų tavo privataus rakto failą, be slaptafrazės jis būtų nenaudingas. Taip gauni ir didesnį saugumą, ir kasdienį patogumą vienu metu.
Papildomi SSH saugumo patarimai
- Pakeisk standartinį SSH prievadą. Standartiškai naudojamas 22 prievadas, ir būtent į jį nusitaiko botai. Perkėlus SSH į kitą prievadą, dauguma automatinių atakų jį tiesiog praranda.
- Išjunk root vartotojo prisijungimą tiesiogiai. Vietoj to junkis paprastu vartotoju ir tik po to gauk administratoriaus teises. Taip net jei kas nors sužino root, užteks mažiau galimybių.
- Leisk prisijungti tik konkretiems vartotojams, o ne visiems iš eilės.
Antras žingsnis: ugniasienės nustatymas
Ugniasienė yra tarsi durininkas, kuris sprendžia, kuris srautas gali patekti į tavo serverį, o kuris ne. Be jos visi serverio prievadai gali būti atviri ir prieinami iš bet kur. Su ugniasiene tu pats nusprendi, kas leidžiama. Pagrindinė taisyklė paprasta: uždaryk viską, ko nereikia, ir palik atvira tik tai, kas būtina.
Kokie prievadai paprastai reikalingi
Tipiškai serveriui reikia kelių prievadų:
- SSH prievado, kad galėtum prisijungti ir valdyti,
- HTTP prievado (80), kad svetainė būtų pasiekiama,
- HTTPS prievado (443), kad veiktų saugus ryšys.
Visa kita dažniausiai galima uždaryti. Jei serveryje veikia el. paštas ar duomenų bazė, prireiks papildomų prievadų, bet net tada verta apriboti, iš kur prie jų galima jungtis.
Kaip sukonfigūruoti ugniasienę
Linux sistemose populiarus paprastas įrankis, vadinamas UFW, kuris palengvina ugniasienės valdymą.
- Nustatyk, kad standartiškai visas įeinantis srautas būtų blokuojamas, o išeinantis leidžiamas.
- Atverk būtinus prievadus: SSH, HTTP ir HTTPS.
- Įjunk ugniasienę. Labai svarbu prieš įjungiant įsitikinti, kad SSH prievadas atvertas. Kitaip rizikuoji užsirakinti pats už durų ir netekti prieigos prie serverio.
Sukonfigūravus ugniasienę, tavo serveris tampa nematomas daugumai automatinių skenerių, nes uždaryti prievadai tiesiog neatsako į užklausas.
Ugniasienė ir paslaugos: kaip rasti balansą
Konfigūruojant ugniasienę svarbu nepersistengti. Jei uždarysi per daug prievadų, kai kurios paslaugos gali nustoti veikti. Pavyzdžiui, jei serveryje veikia el. paštas, jam reikia savų prievadų. Jei uždarysi juos, laiškai nustos ateiti. Todėl prieš uždarant prievadą visada išsiaiškink, kokia paslauga jį naudoja.
Gera praktika ne tik atverti būtinus prievadus, bet ir apriboti, iš kur prie jų galima jungtis. Pavyzdžiui, duomenų bazės dažnai visai nereikia atverti išoriniam pasauliui, užtenka, kad prie jos jungtųsi tik pats serveris. Taip net jei kas nors žinotų prievadą, tiesiog nepasiektų paslaugos iš išorės.
Trečias žingsnis: fail2ban diegimas
SSH raktai ir ugniasienė jau labai sustiprina apsaugą, bet yra dar vienas galingas įrankis, fail2ban. Jo idėja paprasta: jis stebi serverio žurnalus ir jei pastebi įtartiną elgesį, pavyzdžiui daug nesėkmingų prisijungimo bandymų iš to paties adreso, automatiškai užblokuoja tą adresą tam tikram laikui.
Kaip veikia fail2ban
Fail2ban nuolat skaito serverio įvykių žurnalus. Kai kas nors kelis kartus nesėkmingai bando prisijungti, fail2ban tai pastebi ir laikinai užblokuoja to lankytojo adresą per ugniasienę. Botas, kuris bando tūkstančius slaptažodžių, labai greitai viršija leidžiamą ribą ir yra atkirstas. Tai apsaugo ne tik SSH, bet ir kitas paslaugas, pavyzdžiui svetainės prisijungimo formas ar el. pašto serverį.
Kaip įdiegti ir sukonfigūruoti fail2ban
- Įdiek fail2ban iš savo sistemos paketų.
- Sukurk vietinį konfigūracijos failą, kad pakeitimai išliktų net po atnaujinimų.
- Nustatyk pagrindinius parametrus: kiek nesėkmingų bandymų leidžiama prieš blokavimą, kiek laiko truks blokavimas ir kurias paslaugas stebėti.
- Įjunk fail2ban ir patikrink, ar jis veikia, peržiūrėdamas jo būklės ataskaitą, kurioje matysi, kiek adresų jau užblokuota.
Sukonfigūravus, fail2ban dirba tyliai fone ir nuolat gina serverį be tavo įsikišimo.
Ketvirtas žingsnis: reguliarūs atnaujinimai
Net geriausiai sukonfigūruotas serveris tampa pažeidžiamas, jei jame veikia pasenusi programinė įranga. Programose nuolat randamos saugumo spragos, o gamintojai leidžia pataisymus. Jei atnaujinimų nediegti, serveris lieka atviras žinomoms spragoms, kurias užpuolikai jau moka išnaudoti. Todėl reguliarūs atnaujinimai yra vienas svarbiausių ir kartu dažnai apleidžiamų saugumo veiksmų.
Ką būtina atnaujinti
- Operacinės sistemos branduolį ir sistemos paketus.
- Serverio programinę įrangą, pavyzdžiui web serverį, duomenų bazę ir kitas paslaugas.
- Svetainės turinio valdymo sistemą, jos temas ir įskiepius, jei naudoji WordPress ar panašią platformą.
Būtent pasenę įskiepiai dažnai tampa įsilaužimo priežastimi, todėl jų negalima ignoruoti.
Kaip užtikrinti reguliarius atnaujinimus
- Rankiniai atnaujinimai, kai periodiškai pats paleidi atnaujinimo komandas. Tai suteikia daugiausia kontrolės, bet reikalauja disciplinos.
- Automatiniai saugumo atnaujinimai, kuriuos galima įjungti, kad svarbiausi pataisymai būtų diegiami savaime. Tai patogu ir užtikrina, kad kritinės spragos būtų uždaromos laiku.
- Atsarginė kopija prieš didelį atnaujinimą. Jei atnaujinimas kažką sugadins, galėsi greitai atkurti veikiančią būklę.
Geriausia praktika derinti automatinius saugumo atnaujinimus kritiniams pataisymams su reguliaria rankine peržiūra didesniems pokyčiams.
Papildomi serverio saugumo sluoksniai
Be keturių pagrindinių žingsnių verta apsvarstyti dar kelis dalykus:
- Stiprūs vartotojų slaptažodžiai. Net jei naudoji SSH raktus, kitos paslaugos vis tiek gali reikalauti slaptažodžių, todėl jie turi būti ilgi ir sudėtingi.
- Minimalus paslaugų skaičius. Kuo mažiau programų veikia serveryje, tuo mažiau galimų spragų. Išjunk viską, ko nenaudoji.
- Reguliarus žurnalų stebėjimas. Periodiškai peržiūrėdamas serverio žurnalus, pastebėsi įtartiną veiklą anksti.
- Atsarginės kopijos. Jokia apsauga nėra šimtu procentų patikima, todėl reguliarios kopijos yra tavo paskutinė gynybos linija.
Dažnos serverio saugumo klaidos
- Paliekamas prisijungimas slaptažodžiu vietoj SSH raktų.
- Root vartotojo prisijungimas lieka įjungtas.
- Ugniasienė visai nesukonfigūruota, ir visi prievadai atviri.
- Atnaujinimai atidedami mėnesiais, o serveris lieka su žinomomis spragomis.
- Nedaromos atsarginės kopijos, todėl įsilaužimo atveju prarandama viskas.
- Naudojami silpni ar pakartotiniai slaptažodžiai keliose paslaugose.
Kaip patikrinti, ar serveris apsaugotas
Kai atlikai pagrindinius žingsnius, verta įsitikinti, kad viskas veikia:
- Pabandyk prisijungti prie serverio. Jei prisijungimas veikia tik su raktu, o slaptažodžiu neveikia, pirmas žingsnis atliktas teisingai.
- Patikrink ugniasienės būklę ir įsitikink, kad atviri tik būtini prievadai.
- Peržiūrėk fail2ban ataskaitą ir pamatysi, ar jis jau blokuoja įtartinus adresus.
- Patikrink, ar sistemoje nėra neįdiegtų atnaujinimų.
Jei visi keturi patikrinimai švarūs, tavo serveris jau turi tvirtą saugumo pamatą.
Serverio saugumo prioritetų tvarka
Jei nežinai, nuo ko pradėti, laikykis šio eiliškumo. Pirmiausia įdiek SSH raktus ir išjunk slaptažodžių prisijungimą, nes būtent SSH yra dažniausias atakos taikinys. Toliau sukonfigūruok ugniasienę, kad uždarytum nereikalingus prievadus. Tada įdiek fail2ban, kad automatiškai blokuotum atkaklius botus. Galiausiai užtikrink reguliarius atnaujinimus, kad serveris neliktų su žinomomis spragomis. Ši tvarka logiškai kyla nuo svarbiausių prie papildomų apsaugų ir tinka beveik kiekvienam serveriui.
Kodėl daugiasluoksnė apsauga svarbi
Serverio saugumas remiasi principu, kad jokia viena priemonė nėra tobula. Jei užpuolikas apeitų vieną barjerą, jį sustabdo kitas. SSH raktai apsaugo prisijungimą, bet jei kažkas nutiktų, ugniasienė vis tiek riboja prieigą. Jei botas prasiveržtų pro ugniasienę, fail2ban jį užblokuotų po kelių bandymų. Jei atsirastų programos spraga, reguliarūs atnaujinimai ją uždarytų. O jei viskas nepavyktų, atsarginė kopija leistų atkurti svetainę.
Būtent šis sluoksnių derinys, o ne viena stebuklinga priemonė, daro serverį tikrai saugų. Kiekvienas sluoksnis atskirai gali būti apeitas, bet visi kartu sukuria apsaugą, kurią įveikti tampa neverta pastangų.
Ką daryti, jei serveris jau pažeistas
Jei įtari, kad į serverį jau įsilaužta, veik greitai:
- Atjunk serverį nuo tinklo arba apribok prieigą, kad žala neplistų.
- Pakeisk visus slaptažodžius ir SSH raktus.
- Peržiūrėk žurnalus ir bandyk suprasti, kaip užpuolikas pateko.
- Jei įmanoma, atkurk serverį iš švarios atsarginės kopijos, padarytos prieš įsilaužimą.
- Uždaryk spragą, per kurią užpuolikas pateko, kad situacija nepasikartotų.
Dažniausiai švariausias sprendimas yra ne bandyti išvalyti pažeistą serverį, o atkurti jį iš naujo ir iš karto pritaikyti visas saugumo priemones.
Serverio saugumas nėra vienkartinis darbas
Svarbu suprasti, kad saugumas nėra dalykas, kurį sukonfigūruoji kartą ir pamiršti. Grėsmės nuolat keičiasi, atsiranda naujos spragos, o užpuolikai tobulina savo metodus. Todėl verta bent kartą per mėnesį peržiūrėti serverio būklę, patikrinti, ar veikia visi apsaugos sluoksniai ir ar nėra neįdiegtų atnaujinimų. Toks nuolatinis dėmesys reikalauja nedaug laiko, bet apsaugo nuo didžiųjų problemų.
Dažni klausimai apie serverio saugumą
Taip. Kuo anksčiau įdiegsi raktus, tuo mažiau laiko serveris bus atviras slaptažodžių atakoms.
Ne. Jie veikia kartu. Ugniasienė nustato bendras taisykles, o fail2ban dinamiškai blokuoja įtartinus adresus.
Kritiniams saugumo pataisymams taip. Didesniems pokyčiams verta rankinis valdymas su atsargine kopija.
Ne. Tai tik viena iš priemonių. Ji sumažina triukšmą, bet nepakeičia SSH raktų, ugniasienės ir atnaujinimų.
Taip. Botai atakuoja visus serverius, nepriklausomai nuo dydžio, todėl pagrindinė apsauga būtina kiekvienam.
Trumpa atmintinė serverio saugumui
- Sugeneruok SSH rakto porą ir įdėk viešąjį raktą į serverį.
- Išbandyk prisijungimą su raktu ir tik tada išjunk slaptažodžių prisijungimą.
- Pakeisk standartinį SSH prievadą ir išjunk root prisijungimą.
- Sukonfigūruok ugniasienę, atverdamas tik SSH, HTTP ir HTTPS prievadus.
- Įdiek fail2ban ir nustatyk blokavimo taisykles.
- Įjunk automatinius saugumo atnaujinimus ir susiplanuok reguliarią rankinę peržiūrą.
- Nustatyk reguliarias atsargines kopijas ir patikrink, ar jos veikia.
- Peržiūrėk žurnalus periodiškai, kad pastebėtum įtartiną veiklą anksti.
Kai visi punktai atlikti, tavo serveris turi tvirtą, daugiasluoksnę apsaugą.
Išvada
Serverio saugumas remiasi keturiais pamatiniais žingsniais: SSH raktų autentifikacija apsaugo prisijungimą, ugniasienė uždaro nereikalingus prievadus, fail2ban automatiškai blokuoja atkaklius užpuolikus, o reguliarūs atnaujinimai uždaro žinomas spragas. Kai visi keturi veikia kartu, tavo serveris iš lengvo taikinio virsta rimtai apsaugotu. Svarbiausia neatidėlioti. Botai pradeda skenuoti serverį jau pirmomis minutėmis, todėl geriausias laikas pasirūpinti saugumu yra būtent tada, kai serveris dar naujas. O kaip tavo serveris? Ar prie jo vis dar galima prisijungti slaptažodžiu, ar jau tik su raktu, kurio joks botas neatspės?
