Kako zavarovati strežnik
Varna konfiguracija strežnika je ena najpomembnejših nalog za skrbnike. To velja ne le za strežnike, ki jih upravljate sami, temveč tudi za najeto strojno opremo. Ukrepi, kot so zaščita z geslom, zanesljive nastavitve SSH in redne posodobitve, tvorijo celovit varnostni paket.
Kdo je odgovoren za varno konfiguracijo strežnika?
Z lastnim strežnikom imate največjo svobodo pri konfiguraciji. Primerna alternativa so strežniki z root dostopom, ki jih ponuja veliko ponudnikov in omogočajo dostop do root računa. V obeh primerih so ključne naloge, kot so namestitev, konfiguracija in vzdrževanje, v celoti v rokah najemnika. Napake na ravni root lahko povzročijo resne težave. Vendar pa lahko upoštevanje pravilnih postopkov ustvari idealno podlago za zanesljiv, zmogljiv in varen strežnik.
Kako korak za korakom zavarovati strežnik
Ne glede na to, ali želite zavarovati strežnik z operacijskim sistemom Windows, Ubuntu ali Debian, vam lahko nekaj splošnih ukrepov pomaga vzpostaviti trdne varnostne temelje. V nadaljevanju smo povzeli najpomembnejše ukrepe.
Korak 1: Izvedite minimalno namestitev
Že preden začnete izvajati varnostne ukrepe in konfigurirati strežnik, lahko vplivate na prihodnjo varnostno raven vašega projekta. Ne glede na to, ali uporabljate operacijski sistem Windows ali Linux, pri namestitvi upoštevajte naslednje načelo: na strežniku naj bo nameščena le programska oprema, ki jo potrebuje za opravljanje svojih nalog.
Razlog za to je, da vsaka nameščena aplikacija predstavlja potencialno varnostno tveganje in lahko negativno vpliva na zmogljivost. Da bi zmanjšali ranljivosti, namestite le nujno potrebne sistemske komponente in uporabljajte izključno preverjeno programsko opremo tretjih ponudnikov.
Korak 2: Nastavite močno geslo
Po namestitvi morate najprej nastaviti močno geslo za skrbnika (Windows) ali root (Linux). Privzeto geslo ni določeno, zato ostane skrbniški račun blokiran, dokler ga ne vnesete. Večina operacijskih sistemov vas takoj po namestitvi pozove, da ustvarite račun z geslom, ki bo služilo kot geslo za prijavo skrbnika ali root.
Če ste si Linux strežnik najeli pri ponudniku in ste prejeli že obstoječe geslo za prijavo kot root, takoj spremenite geslo. Prijavite se na strežnik prek SSH in v terminalu vnesite naslednji ukaz:
passwdbashPo nastavitvi varnega gesla ga boste morali potrditi. Poskrbite, da izberete čim daljše geslo, ki vsebuje kombinacijo črk, posebnih znakov in številk. Priporočljivo je tudi, da uporabite upravitelja gesel, da geslo varno shranite in ga po potrebi enostavno poiščete.
Korak 3: Spremeni vrata SSH
Privzeto se za dostop prek SSH uporablja vrata TCP/UDP 22, ki so bila nastavljena že med namestitvijo sistema. Hekerji svoje avtomatizirane poskuse prijave pogosto usmerjajo prav na ta vrata. Da bi zmanjšali tveganje nepooblaščenega dostopa, za šifrirane oddaljene povezave dodelite druga vrata.
Za to uredite konfiguracijsko datoteko SSH sshd_config s katerim koli besedilnim urejevalnikom. Če želite na primer uporabiti urejevalnik nano, izvedite naslednji ukaz:
nano /etc/ssh/sshd_configbashPoiščite vrstico z naslovom »Port« in številko vrat 22 zamenjajte s številko po vaši izbiri. Upoštevajte, da so za različne storitve rezervirana tudi druga standardna vrata (npr. vrata 80 za protokol HTTP).
Preden spremembe v datoteki sshd_config začnejo veljati, morate ponovno zagnati storitev SSH. V sistemu Debian to storite z ukazom etc/init.d/ssh restart. Uporabniki sistema Ubuntu naj storitev ponovno zagnajo z service ssh restart.
Korak 4: Onemogočite prijavo prek SSH za administratorske račune
Za dodatno zaščito strežnika priporočamo, da onemogočite prijavo prek SSH za račun root ali administrator. V nasprotnem primeru bi napadalec, če bi pridobil geslo, lahko ta račun uporabil za oddaljeni dostop.
Preden izvedete ta ukrep, se prepričajte, da obstaja vsaj še en račun, ki se lahko poveže s strežnikom, da se ne bi izključili iz dostopa. V sistemih Linux ustvarite tak račun z naslednjim ukazom:
useradd -g users -d /home/user1 -m -s /bin/bash user1bashS tem ustvarite vzorčni uporabniški račun z imenom »user1«. Nato računu dodelite varno geslo:
passwd user1bashPreverite, ali deluje prijava z ustvarjenim uporabniškim računom. Če je prijava uspešna, nadaljujte z glavno nalogo: onemogočite račun root. Ponovno odprite konfiguracijsko datoteko SSH sshd_config v svojem priljubljenem urejevalniku. Poiščite vnos PermitRootLogin yes in ga zamenjajte z PermitRootLogin no. Po ponovnem zagonu storitve SSH oddaljeni dostop za račun root ne bo več mogoč.
Z uporabo vnosa AllowGroups v konfiguracijski datoteki lahko določite tudi, katerim uporabnikom je dovoljeno vzpostaviti povezavo prek SSH. Za to preprosto ustvarite skupino (addgroup) in vanjo dodajte želene uporabnike (adduser). Nato vnesite ime izbrane skupine v polje sshd_config (npr. AllowGroups ssh_users).
Korak 5: Nastavite e-poštna obvestila za prijave prek SSH
Ne glede na konkretne ukrepe, ki jih sprejmete za zaščito dostopa prek SSH, morate nato nenehno spremljati vse dejavnosti na daljavo. Tako boste lahko preverili, ali je storitev SSH na vašem strežniku ustrezno zaščitena, ter pravočasno odkrili nepooblaščene poskuse dostopa, kar vam bo omogočilo ustrezno ukrepanje. Preprost skript v lupini lahko po vsakem uspešnem oddaljenem prijavi na vaš strežnik samodejno pošlje obvestilo na vaš e-poštni naslov.
Tukaj je primer skripta /opt/shell-login.sh za Linux, ki ga lahko enostavno ustvarite sami:
#!/bin/bash
echo "Login on $(hostname) on $(date +%Y-%m-%d) at $(date +%H:%M)"
echo "User: $USER"
echo
fingertxtNato v datoteko /etc/profile vnesite naslednjo vrstico:
/opt/shell-login.sh | mailx -s "SSH login on the server" youremail@example.comtxtTa vnos zagotavlja, da se skript izvede in pošlje obvestilno e-poštno sporočilo na navedeni naslov ob vsakem prijavi prek SSH. Da bi to dosegli, je treba skriptu dodeliti pravico 755 (pravice za branje in izvajanje za vse uporabnike ter pravice za pisanje za lastnika). To pravico lahko nastavite z naslednjim ukazom:
chmod 755 /opt/shell-login.shbashKorak 6: Blokirajte neuporabljena vrata
Odprta vrata na splošno ne predstavljajo večjega varnostnega tveganja, saj so nujna za komunikacijo z različnimi storitvami in aplikacijami. Na primer, vrata 80 in 443 so potrebna za povezave HTTP in HTTPS, prav tako pa tudi izbrano SSH-vrata. Vendar pa se ti vmesniki lahko spremenijo v ranljivosti, če imajo povezani programi varnostne pomanjkljivosti, ki jih lahko izkoristijo napadalci.
Če ste izvedli minimalno namestitev sistema in namestili le omejeno število programov tretjih ponudnikov, naj bi bilo število dodatnih potrebnih vrat majhno. Da bi zaščitili strežnik pred napadi, morate v nastavitvah požarnega zidu blokirati vsa nepotrebna odprta vrata. Večina glavnih operacijskih sistemov že privzeto vključuje programsko opremo za filtriranje paketov, kot je na primer iptables. To orodje vam omogoča, da določite pravila za urejanje prometa podatkov, vključno z določanjem dovoljenih in blokiranih vrat.
7. korak: Redno posodabljajte programsko opremo
Znane varnostne ranljivosti v programih se običajno hitro odpravijo z nadgradnjami. Če se redno obveščate o nadgradnjah za svoj operacijski sistem in nameščene programe ter jih nemudoma namestite, zagotovite optimalno zaščito svojega strežnika. Večina strežniških sistemov ponuja tudi funkcije za samodejno prenašanje in namestitev kritičnih varnostnih nadgradenj v ozadju.
Če na primer varujete strežnik Windows, lahko v razdelku »Windows Update« nastavite posebna pravila za samodejne posodobitve. To vključuje določitev, kdaj in kako pogosto se preverjajo posodobitve, ali naj se namestijo takoj ter kdaj naj se sistem ponovno zažene. Sistemi Linux ponujajo orodja, kot sta skripta apt-listchanges ali apticron, ki vas vsak dan obveščata o novih razpoložljivih programskih paketih in jih prenesejo. Dodatni skripti, kot unattended-upgrades, lahko poskrbijo za samodejno namestitev.
Tudi če uporabljate avtomatiziran postopek posodabljanja, poskrbite, da spremljate zaključene posodobitve. To vam pomaga odkriti in odpraviti napake, ki se lahko pojavijo med posodabljanjem.
Korak 8: Zaščitite strežnike Windows in Linux pred napadi z metodo brute force
Ena najpreprostejših in najpogostejših metod napada je napad z bruto silo. Pri tej vrsti napada hekerji z orodji večkrat poskušajo uganiti geslo. Z uvedbo dobrih praks pri upravljanju gesel lahko znatno zmanjšate verjetnost, da bo ta metoda uspešna.
Če pa vaš strežnik ponuja storitve, za katere je potrebna prijava uporabnika, ne smete domnevati, da vsi uporabniki upoštevajo pravila za varna gesla. Orodja za analizo lahko pomagajo zmanjšati to tveganje: rešitve, kot sta Fail2ban (sistemi Linux/POSIX) ali RdpGuard (Windows), spremljajo dnevnike strežnika, zaznavajo nenavadno vedenje in blokirajo sumljive IP-naslove. Nastavite lahko število dovoljenih neuspešnih poskusov pred blokado ter trajanje blokade.
Korak 9: Uporabite orodja za spremljanje
Za ohranjanje varnosti strežnika je ključnega pomena, da se zagotovi, da medsebojno delovanje strojne in programske opreme poteka po načrtu. To ni enkratna naloga, temveč stalna odgovornost, ki zahteva nenehno pozornost. Glede na veliko število različnih sistemskih procesov je priporočljivo že od samega začetka uporabljati orodja za spremljanje. Ta orodja spremljajo vse dejavnosti na strežniku in vas opozarjajo na odstopanja.
Preprost in enostaven za nastavitev program za ta namen je Monit, ki ga je mogoče v mnogih distribucijah Linuxa namestiti prek upravitelja paketov. Ta odprtokodna aplikacija (licenca GNU-AGPL) lahko spremlja procese, datoteke, oblake, gostitelje, programe ali skripte, pa tudi sistemske vire, kot sta poraba procesorja in pomnilnika. Za bolj celovito spremljanje razmislite o Nagiosu, odprtokodnem orodju, ki je na voljo za Linux in Windows. Nagios je mogoče razširiti tudi z vtičniki Nagios.
Korak 10: Nastavite varnostne kopije
Priporočeni koraki za konfiguracijo znatno izboljšajo varnost vašega strežnika. Vendar pa niti najboljše konfiguracije in skrbno vzdrževanje ne morejo zagotoviti 100-odstotne zaščite. Celovita strategija varnostnega kopiranja je ključni del vašega varnostnega sistema, saj vam omogoča obnovitev datotek v primeru izgube podatkov.
Na voljo je veliko zanesljivih orodij, ki vam pomagajo pri ustvarjanju in obnovitvi varnostnih kopij. Ena od brezplačnih možnosti je odprtokodno sinhronizacijsko orodje rsync, ki je združljivo z večino glavnih platform (macOS, Windows, Linux). To orodje posodablja vašo varnostno kopijo v realnem času, tako da zrcalno kopira vse spremembe, narejene na izvirnih podatkih.
Poleg splošne varnostne kopije strežnika poskrbite tudi za varnostno kopijo svojih podatkovnih baz.
Za največjo varnost varnostnih kopij jih shranjujte na zunanjih pomnilniških napravah (npr. prenosnih trdih diskih, dodatnih strežnikih) in ne na strežniku, ki ga želite zavarovati.