Varna kon­fi­gu­ra­ci­ja strežnika je ena naj­po­memb­nej­ših nalog za skrbnike. To velja ne le za strežnike, ki jih upra­vlja­te sami, temveč tudi za najeto strojno opremo. Ukrepi, kot so zaščita z geslom, za­ne­slji­ve na­sta­vi­tve SSH in redne po­so­do­bi­tve, tvorijo celovit varnostni paket.

Kdo je odgovoren za varno kon­fi­gu­ra­ci­jo strežnika?

Z lastnim stre­žni­kom imate največjo svobodo pri kon­fi­gu­ra­ci­ji. Primerna al­ter­na­ti­va so strežniki z root dostopom, ki jih ponuja veliko po­nu­dni­kov in omogočajo dostop do root računa. V obeh primerih so ključne naloge, kot so na­me­sti­tev, kon­fi­gu­ra­ci­ja in vzdr­že­va­nje, v celoti v rokah najemnika. Napake na ravni root lahko pov­zro­či­jo resne težave. Vendar pa lahko upo­šte­va­nje pravilnih postopkov ustvari idealno podlago za zanesljiv, zmogljiv in varen strežnik.

Kako korak za korakom za­va­ro­va­ti strežnik

Ne glede na to, ali želite za­va­ro­va­ti strežnik z ope­ra­cij­skim sistemom Windows, Ubuntu ali Debian, vam lahko nekaj splošnih ukrepov pomaga vzpo­sta­vi­ti trdne varnostne temelje. V na­da­lje­va­nju smo povzeli naj­po­memb­nej­še ukrepe.

Korak 1: Izvedite minimalno na­me­sti­tev

Že preden začnete izvajati varnostne ukrepe in kon­fi­gu­ri­ra­ti strežnik, lahko vplivate na prihodnjo varnostno raven vašega projekta. Ne glede na to, ali upo­ra­blja­te ope­ra­cij­ski sistem Windows ali Linux, pri na­me­sti­tvi upo­šte­vaj­te naslednje načelo: na strežniku naj bo nameščena le pro­gram­ska oprema, ki jo potrebuje za opra­vlja­nje svojih nalog.

Razlog za to je, da vsaka nameščena apli­ka­ci­ja pred­sta­vlja po­ten­ci­al­no varnostno tveganje in lahko negativno vpliva na zmo­glji­vost. Da bi zmanjšali ran­lji­vo­sti, namestite le nujno potrebne sistemske kom­po­nen­te in upo­ra­bljaj­te izključno pre­ver­je­no pro­gram­sko opremo tretjih po­nu­dni­kov.

Korak 2: Nastavite močno geslo

Po na­me­sti­tvi 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 ope­ra­cij­skih sistemov vas takoj po na­me­sti­tvi 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 spre­me­ni­te geslo. Prijavite se na strežnik prek SSH in v terminalu vnesite naslednji ukaz:

passwd
bash

Po na­sta­vi­tvi varnega gesla ga boste morali potrditi. Poskrbite, da izberete čim daljše geslo, ki vsebuje kom­bi­na­ci­jo črk, posebnih znakov in številk. Pri­po­ro­člji­vo je tudi, da uporabite upra­vi­te­lja 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 na­sta­vlje­na že med na­me­sti­tvi­jo sistema. Hekerji svoje av­to­ma­ti­zi­ra­ne poskuse prijave pogosto usmerjajo prav na ta vrata. Da bi zmanjšali tveganje ne­po­o­bla­šče­ne­ga dostopa, za šifrirane oddaljene povezave dodelite druga vrata.

Za to uredite kon­fi­gu­ra­cij­sko datoteko SSH sshd_config s katerim koli be­se­dil­nim ure­je­val­ni­kom. Če želite na primer uporabiti ure­je­val­nik nano, izvedite naslednji ukaz:

nano /etc/ssh/sshd_config
bash

Poiščite vrstico z naslovom »Port« in številko vrat 22 za­me­njaj­te s številko po vaši izbiri. Upo­šte­vaj­te, da so za različne storitve re­zer­vi­ra­na tudi druga stan­dar­dna vrata (npr. vrata 80 za protokol HTTP).

Note

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. Upo­rab­ni­ki sistema Ubuntu naj storitev ponovno zagnajo z service ssh restart.

Korak 4: One­mo­go­či­te prijavo prek SSH za ad­mi­ni­stra­tor­ske račune

Za dodatno zaščito strežnika pri­po­ro­ča­mo, da one­mo­go­či­te prijavo prek SSH za račun root ali ad­mi­ni­stra­tor. V na­spro­tnem primeru bi napadalec, če bi pridobil geslo, lahko ta račun uporabil za oddaljeni dostop.

Preden izvedete ta ukrep, se pre­pri­čaj­te, da obstaja vsaj še en račun, ki se lahko poveže s stre­žni­kom, da se ne bi iz­klju­či­li iz dostopa. V sistemih Linux ustvarite tak račun z na­sle­dnjim ukazom:

useradd -g users -d /home/user1 -m -s /bin/bash user1
bash

S tem ustvarite vzorčni upo­rab­ni­ški račun z imenom »user1«. Nato računu dodelite varno geslo:

passwd user1
bash

Preverite, ali deluje prijava z ustvar­je­nim upo­rab­ni­škim računom. Če je prijava uspešna, na­da­ljuj­te z glavno nalogo: one­mo­go­či­te račun root. Ponovno odprite kon­fi­gu­ra­cij­sko datoteko SSH sshd_config v svojem pri­lju­blje­nem ure­je­val­ni­ku. Poiščite vnos PermitRootLogin yes in ga za­me­njaj­te z PermitRootLogin no. Po ponovnem zagonu storitve SSH oddaljeni dostop za račun root ne bo več mogoč.

Z uporabo vnosa AllowGroups v kon­fi­gu­ra­cij­ski datoteki lahko določite tudi, katerim upo­rab­ni­kom je dovoljeno vzpo­sta­vi­ti povezavo prek SSH. Za to preprosto ustvarite skupino (addgroup) in vanjo dodajte želene upo­rab­ni­ke (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 spre­mlja­ti vse de­jav­no­sti na daljavo. Tako boste lahko preverili, ali je storitev SSH na vašem strežniku ustrezno zaščitena, ter pra­vo­ča­sno odkrili ne­po­o­bla­šče­ne poskuse dostopa, kar vam bo omogočilo ustrezno ukrepanje. Preprost skript v lupini lahko po vsakem uspešnem od­da­lje­nem 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
finger
txt

Nato v datoteko /etc/profile vnesite naslednjo vrstico:

/opt/shell-login.sh | mailx -s "SSH login on the server" youremail@example.com
txt

Ta vnos za­go­ta­vlja, da se skript izvede in pošlje ob­ve­stil­no 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 upo­rab­ni­ke ter pravice za pisanje za lastnika). To pravico lahko nastavite z na­sle­dnjim ukazom:

chmod 755 /opt/shell-login.sh
bash

Korak 6: Blo­ki­raj­te ne­u­po­ra­blje­na vrata

Odprta vrata na splošno ne pred­sta­vlja­jo večjega var­no­stne­ga tveganja, saj so nujna za ko­mu­ni­ka­ci­jo z raz­lič­ni­mi sto­ri­tva­mi in apli­ka­ci­ja­mi. 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 spre­me­ni­jo v ran­lji­vo­sti, če imajo povezani programi varnostne po­manj­klji­vo­sti, ki jih lahko iz­ko­ri­sti­jo napadalci.

Če ste izvedli minimalno na­me­sti­tev sistema in namestili le omejeno število programov tretjih po­nu­dni­kov, naj bi bilo število dodatnih potrebnih vrat majhno. Da bi zaščitili strežnik pred napadi, morate v na­sta­vi­tvah požarnega zidu blokirati vsa ne­po­treb­na odprta vrata. Večina glavnih ope­ra­cij­skih sistemov že privzeto vključuje pro­gram­sko opremo za fil­tri­ra­nje paketov, kot je na primer iptables. To orodje vam omogoča, da določite pravila za urejanje prometa podatkov, vključno z do­lo­ča­njem do­vo­lje­nih in blo­ki­ra­nih vrat.

7. korak: Redno po­so­da­bljaj­te pro­gram­sko opremo

Znane varnostne ran­lji­vo­sti v programih se običajno hitro odpravijo z nad­gra­dnja­mi. Če se redno obveščate o nad­gra­dnjah za svoj ope­ra­cij­ski sistem in nameščene programe ter jih nemudoma namestite, za­go­to­vi­te optimalno zaščito svojega strežnika. Večina stre­žni­ških sistemov ponuja tudi funkcije za samodejno pre­na­ša­nje in na­me­sti­tev kritičnih var­no­stnih nad­gra­denj v ozadju.

Če na primer varujete strežnik Windows, lahko v razdelku »Windows Update« nastavite posebna pravila za samodejne po­so­do­bi­tve. To vključuje določitev, kdaj in kako pogosto se pre­ver­ja­jo po­so­do­bi­tve, 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 raz­po­lo­žlji­vih pro­gram­skih paketih in jih prenesejo. Dodatni skripti, kot unattended-upgrades, lahko poskrbijo za samodejno na­me­sti­tev.

Note

Tudi če upo­ra­blja­te av­to­ma­ti­zi­ran postopek po­so­da­blja­nja, poskrbite, da spre­mlja­te za­klju­če­ne po­so­do­bi­tve. To vam pomaga odkriti in odpraviti napake, ki se lahko pojavijo med po­so­da­blja­njem.

Korak 8: Zaščitite strežnike Windows in Linux pred napadi z metodo brute force

Ena naj­pre­pro­stej­ših in naj­po­go­stej­š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 upra­vlja­nju gesel lahko znatno zmanjšate ver­je­tnost, da bo ta metoda uspešna.

Če pa vaš strežnik ponuja storitve, za katere je potrebna prijava upo­rab­ni­ka, ne smete domnevati, da vsi upo­rab­ni­ki upo­šte­va­jo pravila za varna gesla. Orodja za analizo lahko pomagajo zmanjšati to tveganje: rešitve, kot sta Fail2ban (sistemi Linux/POSIX) ali RdpGuard (Windows), spre­mlja­jo dnevnike strežnika, zaznavajo nenavadno vedenje in blokirajo sumljive IP-naslove. Nastavite lahko število do­vo­lje­nih ne­u­spe­šnih poskusov pred blokado ter trajanje blokade.

Korak 9: Uporabite orodja za spre­mlja­nje

Za ohra­nja­nje varnosti strežnika je ključnega pomena, da se zagotovi, da med­se­boj­no delovanje strojne in pro­gram­ske opreme poteka po načrtu. To ni enkratna naloga, temveč stalna od­go­vor­nost, ki zahteva nenehno pozornost. Glede na veliko število različnih sis­tem­skih procesov je pri­po­ro­člji­vo že od samega začetka upo­ra­blja­ti orodja za spre­mlja­nje. Ta orodja spre­mlja­jo vse de­jav­no­sti na strežniku in vas opo­zar­ja­jo na od­sto­pa­nja.

Preprost in enostaven za na­sta­vi­tev program za ta namen je Monit, ki ga je mogoče v mnogih di­s­tri­bu­ci­jah Linuxa namestiti prek upra­vi­te­lja paketov. Ta od­pr­to­ko­dna apli­ka­ci­ja (licenca GNU-AGPL) lahko spremlja procese, datoteke, oblake, go­sti­te­lje, programe ali skripte, pa tudi sistemske vire, kot sta poraba pro­ce­sor­ja in po­mnil­ni­ka. Za bolj celovito spre­mlja­nje raz­mi­sli­te o Nagiosu, od­pr­to­ko­dnem 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

Pri­po­ro­če­ni koraki za kon­fi­gu­ra­ci­jo znatno iz­bolj­ša­jo varnost vašega strežnika. Vendar pa niti najboljše kon­fi­gu­ra­ci­je in skrbno vzdr­že­va­nje ne morejo za­go­to­vi­ti 100-odstotne zaščite. Celovita stra­te­gi­ja var­no­stne­ga kopiranja je ključni del vašega var­no­stne­ga sistema, saj vam omogoča obnovitev datotek v primeru izgube podatkov.

Na voljo je veliko za­ne­slji­vih orodij, ki vam pomagajo pri ustvar­ja­nju in obnovitvi var­no­stnih kopij. Ena od brez­plač­nih možnosti je od­pr­to­ko­dno sin­hro­ni­za­cij­sko orodje rsync, ki je zdru­žlji­vo z večino glavnih platform (macOS, Windows, Linux). To orodje po­so­da­blja 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 po­dat­kov­nih baz.

Note

Za največjo varnost var­no­stnih kopij jih shra­njuj­te na zunanjih po­mnil­ni­ških napravah (npr. prenosnih trdih diskih, dodatnih stre­žni­kih) in ne na strežniku, ki ga želite za­va­ro­va­ti.

Go to Main Menu