Modul 10 · 10.3
Ko gre kaj narobe
Modul 10: Ostanite varni · Čas branja: 11 minut
Učni cilj: Po tej lekciji boste prepoznali znake vdrtega strežnika, naredili prve korake, ne da bi uničili dokaze ali varnostne kopije, se odločili med čiščenjem in ponovno namestitvijo ter vedeli, kdaj morate prijaviti kršitev varstva osebnih podatkov.
Ključni pojmi: incident, znaki, izolacija, posnetek kot dokaz, dnevnik incidenta, ponovna namestitev, zamenjava ključev in gesel, čista varnostna kopija, obveznost prijave kršitev varstva osebnih podatkov (72 ur), Informacijski pooblaščenec, načrt za nujne primere
Prepoznavanje incidenta
Vdor se le redko napove. Največkrat opazite nekaj, kar je "čudno". Znaki, ki jih morate jemati resno:
- Visoka obremenitev brez razloga: procesor je ves čas na 100 %, na primer zaradi programa za rudarjenje kriptovalut. Z ukazom
topalihtoppreverite, za kateri proces gre in pod katerim uporabnikom teče. - Neznani procesi ali storitve: program s čudnim imenom, pogosto v
/tmp,/dev/shmali/var/tmp, ali storitev oziroma časovnik systemd, ki ga niste ustvarili sami. - Odhodni promet, ki ni v redu: Vaš ponudnik sporoči, da Vaš strežnik pošilja neželeno pošto ali napada druge strežnike, ali pa grafi omrežnega prometa na nadzorni plošči kažejo konice.
- Novi uporabniki ali ključi: vrstica v
~/.ssh/authorized_keys, ki je ne poznate, uporabnik v/etc/passwdz UID 0, nova vrstica v/etc/sudoers.d/. - Spremenjene datoteke: neznane datoteke PHP na Vašem spletnem mestu, spremenjen crontab.
- Dnevniki, ki so izginili ali so prazni: napadalci radi zabrišejo svoje sledi.
Nekaj ukazov za hiter pregled:
anna@web1:~$ top -o %CPU
anna@web1:~$ sudo ss -tunap | grep ESTAB
anna@web1:~$ sudo last -n 20
anna@web1:~$ awk -F: '$3 == 0 {print $1}' /etc/passwd
anna@web1:~$ sudo find /etc/systemd/system /etc/cron* -newer /etc/hostname -type f
anna@web1:~$ for u in /root /home/*; do sudo cat $u/.ssh/authorized_keys 2>/dev/null; donelast pokaže, kdo se je prijavil in kdaj, vrstica z awk prikaže vse račune z UID 0 (to bi moral biti samo root), vrstica z find pa poišče enote in datoteke cron, ki so novejše od datoteke, ustvarjene ob namestitvi.
Pozor: na strežniku, v katerega so res vdrli, so lahko ponarejeni tudi ti ukazi. Pomagajo Vam, da nekaj posumite, ne pa, da dokažete, da je vse čisto.
Prvi koraki: mir, izolacija, beleženje
V prvih minutah je najpomembnejše, da v paniki ničesar ne brišete. Delajte po tem vrstnem redu.
1. Začnite voditi dnevnik. Na papir ali na prenosnik (ne na strežnik) zapišite, kaj vidite, kdaj in kaj naredite. To boste kasneje potrebovali, da najdete vzrok, ter za prijavo, ovadbo ali zavarovalnico. To priporoča tudi nizozemski NCSC.
2. Izolirajte strežnik. Preprečite, da bi povzročal nadaljnjo škodo (neželena pošta, napadi, pošiljanje podatkov), ne da bi ga izklopili:
- v požarnem zidu svojega ponudnika (če ga ima) zaprite vse razen SSH z Vašega lastnega naslova; ali
- enako naredite na samem strežniku prek konzole;
- če drugače ne gre: strežnik izklopite prek nadzorne plošče. Takrat sicer izgubite vsebino pomnilnika.
3. Naredite posnetek. Posnetek (snapshot) na nadzorni plošči zabeleži stanje, kakršno je zdaj. To je Vaš dokaz in vir, iz katerega kasneje ugotovite, kako je napadalec prišel noter, tudi če strežnik nato znova namestite.
4. Zavarujte svoje varnostne kopije. Preverite, ali so Vaše varnostne kopije zunaj strežnika še nedotaknjene, in poskrbite, da vdrti strežnik do njih nima več dostopa (na primer tako, da prekličete dostopni ključ strežnika do shrambe varnostnih kopij). Napadalci poskušajo izbrisati ali šifrirati tudi varnostne kopije.
Čiščenje ali ponovna namestitev?
Mamljiv odgovor je: odstranite sumljivo datoteko, ustavite program za rudarjenje kriptovalut in končano. Vendar ne veste, kaj je napadalec še naredil: druga zadnja vrata, spremenjen program, dodaten ključ, časovnik, ki vse skupaj vrne nazaj. Strežniku, na katerem je imel nekdo pravice root, ne morete več zaupati.
Nasvet skrbnikov in tudi nizozemskega NCSC je zato: prizadete sisteme znova namestite in podatke obnovite iz varnostne kopije, ki sama ni okužena. Konkretno:
- Nova namestitev (ponovna namestitev na nadzorni plošči ali nov strežnik).
- Takoj osnove iz tega tečaja: posodobitve, običajen uporabnik s sudo, SSH z novimi ključi, požarni zid (moduli od 2 do 5).
- Aplikacije znova namestite iz uradnih virov, najbolje s svojimi datotekami compose ali zapiski (lekcija 10.4).
- Podatke (podatkovno bazo, naložene datoteke) obnovite iz varnostne kopije izpred incidenta. Kode ali konfiguracije ne obnavljajte na slepo: lahko vsebuje zadnja vrata. Tudi obnovljene podatke kritično preglejte; napadalec je bil morda v sistemu že dlje, kot mislite.
- Zaprite luknjo, skozi katero je napadalec prišel noter. Sicer se bo zgodilo znova. Pri iskanju Vam pomaga posnetek iz 3. koraka.
Zamenjajte vse, kar je lahko ušlo
Izhajajte iz tega, da je vse, kar je bilo na strežniku, v rokah napadalca:
- Ključi SSH: javne ključe, ki so bili na strežniku, odstranite povsod, nove pare ključev pa ustvarite, če so bili na strežniku zasebni ključi.
- Gesla podatkovnih baz, skrbniških plošč in uporabnikov Vaše aplikacije.
- Ključi API in žetoni (pošta, plačila, shramba v oblaku, shramba varnostnih kopij) iz datotek
.envin konfiguracije: prekličite jih pri storitvi in jih zamenjajte. - Certifikati: zasebni ključ Vašega certifikata je bil na strežniku. Certifikat dajte preklicati in zaprosite za novega (z Let's Encrypt gre to hitro, lekcija 7.3).
Prijava: GDPR in drugi
Če so bili na strežniku osebni podatki (podatki strank, računi, e-poštni naslovi), je morda prišlo do kršitve varstva osebnih podatkov. GDPR (splošna uredba o varstvu podatkov, člen 33) določa, da upravljavec kršitev brez nepotrebnega odlašanja in, če je izvedljivo, v 72 urah po tem, ko je zanjo izvedel, prijavi nadzornemu organu. V Sloveniji je to Informacijski pooblaščenec. Nekaj ključnih točk iz pojasnil nadzornih organov:
- prijava ni potrebna, če kršitev verjetno ne pomeni tveganja za posameznike, na katere se podatki nanašajo; če ste v dvomih, jo prijavite;
- če še nimate vseh informacij, kršitev vseeno prijavite v 72 urah in jo kasneje dopolnite;
- osebe, katerih podatki so ušli, obvestite, če zanje obstaja veliko tveganje;
- vsako kršitev zabeležite v lastno evidenco, tudi če je ni treba prijaviti.
Če strežnik upravljate za stranko, ste običajno obdelovalec: takrat morate stranko (upravljavca) obvestiti brez nepotrebnega odlašanja, da lahko kršitev prijavi. Ta lekcija ni pravni nasvet; v primeru dvoma preverite spletno mesto Informacijskega pooblaščenca.
Poleg tega: zlorabo, ki je bila izvedena z Vašega strežnika, prijavite svojemu ponudniku (ta jo je pogosto že opazil), ob resnem napadu pa podajte ovadbo pri policiji. Če Vaša organizacija spada pod Zakon o informacijski varnosti (ZInfV-1, slovenski prenos NIS2), veljajo posebni, krajši roki za prijavo.
Priprava: načrt za nujne primere
Incident se vedno zgodi ob neprimernem trenutku. Kar uredite vnaprej, Vam prihrani ure:
- Vedite, kako pridete do konzole in gumba za posnetek pri svojem ponudniku, in imejte prijavne podatke za nadzorno ploščo (z dvostopenjskim preverjanjem) shranjene nekje zunaj strežnika.
- Vedite, kje so Vaše varnostne kopije, kako jih obnovite in da delujejo (lekcija 8.2).
- Vodite seznam vseh skrivnosti, ki so na strežniku, da veste, kaj morate zamenjati.
- Imejte seznam kontaktov: Vaš ponudnik, kdo še mora vedeti za strežnik (stranka, sodelavec) in kontaktni podatki za prijavo kršitve varstva podatkov.
V praksi
Na zaslonu VPS pri WebOké najdete konzolo, posnetke, varnostne kopije in gumb za ponovno namestitev; pri drugih ponudnikih se imenujejo približno enako (console ali VNC, snapshot, rescue, reinstall). Ta tečaj je samopomoč: nihče ne spremlja Vašega strežnika in nihče namesto Vas ne počisti incidenta. Prav zato je tako pomemben načrt za nujne primere, ki ga lahko izvedete sami.
Povzetek
- Znaki: nepojasnjena obremenitev, neznani procesi, storitve ali ključi, čuden odhodni promet, spremenjene ali izginule datoteke in dnevniki.
- Prvi koraki: vodenje dnevnika, izolacija strežnika, posnetek kot dokaz, zavarovanje varnostnih kopij.
- Strežnika, na katerem je imel nekdo pravice root, ne čistite, temveč ga znova namestite; podatke obnovite iz čiste varnostne kopije in zaprite luknjo.
- Zamenjajte vse ključe, gesla, žetone in certifikate, ki so bili na strežniku.
- So prizadeti osebni podatki? Kršitev, če je izvedljivo, v 72 urah prijavite Informacijskemu pooblaščencu in vsako kršitev zabeležite.
Kviz
Naloga
Naloga O10.3: Vaš načrt za nujne primere na eni strani. Za svoj strežnik napišite načrt za nujne primere, dolg največ eno stran A4: kako pridete do nadzorne plošče, konzole in posnetkov; kje so Vaše varnostne kopije in kako jih obnovite; katere skrivnosti so na strežniku; koga morate obvestiti (in ali morate prijaviti kršitev varstva podatkov); ter katerih prvih pet korakov naredite ob sumu vdora. Načrt shranite zunaj strežnika.
Naloga O10.3: Vaš načrt za nujne primere na eni strani
To nalogo opravite sami; nihče je ne pregleda. Odkljukajte, kar ste naredili, in nalogo označite kot opravljeno.
Najprej beleženje (dnevnik zunaj strežnika), nato izolacija (požarni zid ponudnika ali prek konzole), posnetek stanja kot dokaz, zavarovanje varnostnih kopij; nato odločitev o ponovni namestitvi, zamenjavi skrivnosti in prijavi (pri osebnih podatkih s tveganjem v 72 urah Informacijskemu pooblaščencu). V ta obrazec ne vpisujte pravih gesel.
Vaše kljukice in zapiski ostanejo samo v tem brskalniku, nikamor jih ne pošiljamo. Če ste prijavljeni, v Moji tečaji shranimo samo podatek, da ste nalogo opravili.
Za nadaljnje branje
- Nimate več dostopa do svojega VPS: kaj storiti?
- Posnetki stanja in varnostne kopije VPS
- Priklop lastnega ISO ali ponovna namestitev VPS
- Nizozemski NCSC, Gehackt, wat nu? (nizozemski vir): https://www.ncsc.nl/incidenten-en-herstellen/gehackt-wat-nu
- Informacijski pooblaščenec, prijava kršitev varstva osebnih podatkov: https://www.ip-rs.si/
