Modul 10 · 10.1
Utrjevanje in načela CIS
Modul 10: Ostanite varni · Čas branja: 11 minut
Učni cilj: Po tej lekciji boste znali razložiti, kaj je utrjevanje (hardening) in na katerih načelih temelji, vedeli boste, kaj so CIS Benchmarks in kako jih smotrno uporabljati, ter znali boste svoj strežnik sistematično pregledati z orodjem Lynis.
Ključni pojmi: utrjevanje (hardening), napadalna površina, minimalna namestitev, najmanjše potrebne pravice (least privilege), večplastna obramba (defense in depth), CIS Benchmarks, Level 1 in Level 2, CIS Controls, Lynis, hardening index, AppArmor, SELinux, sysctl, sinhronizacija časa
Kaj je utrjevanje?
Sveža namestitev sistema Debian ali Ubuntu je razmeroma varna, vendar je narejena tako, da deluje na čim več mestih. Utrjevanje (hardening) pomeni, da strežnik prilagodite natanko svoji uporabi: odstranite vse, česar ne potrebujete, in zaostrite vse, kar je mogoče zaostriti, ne da bi pri tem pokvarili svoje storitve.
V prejšnjih modulih ste to že počeli korak za korakom: SSH s ključi (modul 2), navaden uporabnik s sudo (modul 3), samodejne posodobitve (modul 4), požarni zid in fail2ban (modul 5), storitve pod lastnimi uporabniki (modul 6). Ta lekcija te posamezne ukrepe postavi v okvir, da vidite, kaj še manjka.
Štiri načela
1. Majhna napadalna površina. Česar ni, se ne more pokvariti. Vsaka nameščena storitev, vsaka odprta vrata, vsak račun so morebiten vhod (lekcija 5.1). Nameščajte minimalno in pospravite, česar ne uporabljate več:
anna@web1:~$ systemctl list-units --type=service --state=running
anna@web1:~$ sudo ss -tulpn
anna@web1:~$ apt list --installed | wc -lČe teče storitev, ki je ne poznate, ugotovite, kaj počne (lekcija 6.1). Če je ne potrebujete, odstranite paket.
2. Najmanjše potrebne pravice. Vsak uporabnik in vsak program dobi samo pravice, ki jih potrebuje (lekcija 3.2). Nobenega vsakdanjega dela kot root, storitve pod lastnimi uporabniki, uporabniki podatkovnih baz samo s pravicami za svojo bazo, nobenega chmod 777.
3. Večplastna obramba. Izhajajte iz tega, da bo en ukrep odpovedal. Podatkovna baza, ki posluša samo na 127.0.0.1 in je za požarnim zidom in ima močno geslo, je varna tudi, če eden od teh treh ukrepov po nesreči izpade. Temu pravimo defense in depth.
4. Vedeti, kaj se dogaja. Utrjevanje ni samo zapiranje, temveč tudi opazovanje: dnevniki, ki se hranijo (lekcija 6.2), nadzor, ki opozarja (lekcija 8.3), in varnostne kopije, s katerimi se lahko vrnete nazaj (modul 8). Brez tega vdor opazite šele, ko je prepozno.
CIS Benchmarks
Center for Internet Security (CIS) je ameriška neprofitna organizacija, ki pripravlja CIS Benchmarks: obsežne sezname priporočenih nastavitev za posamezne izdelke, ki jih sestavljajo prostovoljci iz varnostne stroke. Teh je več kot sto, tudi za Debian Linux in Ubuntu Linux, za vsako različico posebej. Datoteke PDF lahko za nekomercialno uporabo brezplačno prenesete, ko ustvarite račun.
Benchmark za Linux vsebuje več sto priporočil, vsako z razlago, načinom preverjanja in načinom nastavitve. Razdeljena so v profile:
- Level 1: osnovni ukrepi, ki jih lahko uvedete razmeroma hitro, z jasno varnostno koristjo, ne da bi strežnik postal bistveno manj uporaben. Za večino strežnikov je to cilj.
- Level 2: dodatni ukrepi za okolja, kjer je varnost na prvem mestu (večplastna obramba). Lahko stanejo nekaj funkcij ali hitrosti in po navedbah samega CIS lahko povzročijo škodo, če jih uporabite brez premisleka.
Pri Linuxu obstajajo ločeni profili za strežnike in delovne postaje.
Primeri tem v benchmarku za Linux: ločene particije za /tmp in /var/log, izklop neuporabljenih datotečnih sistemov in omrežnih protokolov, sinhronizacija časa, revizijsko beleženje, nastavitve SSH (veliko jih poznate iz lekcije 2.2), pravila za gesla, pravice nad pomembnimi datotekami in požarni zid.
Poleg Benchmarks obstajajo še CIS Controls (zdaj različica 8.1): to niso nastavitve za posamezen izdelek, temveč seznam osemnajstih skupin ukrepov za celotno organizacijo, na primer "popis programske opreme", "upravljanje ranljivosti" in "obnova podatkov". Za en strežnik so Benchmarks bolj uporabni; Controls Vam pomagajo, ko razmišljate o celotnem podjetju.
Benchmark uporabljajte smotrno
Benchmark ni gumb, ki ga preprosto pritisnete. Nekaj pravil:
- Najprej razumite, nato uporabite. Vsako priporočilo ima razlago. Če ne razumete, zakaj, ga še ne uporabite.
- Eno stvar naenkrat in preizkušanje. Stroga nastavitev jedra ali omrežja lahko pokvari Vašo aplikacijo. Naredite posnetek stanja (snapshot), spremenite eno stvar in preverite, ali vse še deluje.
- Ni vse za Vas. Priporočilo za ločeno particijo
/var/logje na obstoječem VPS težko izvedljivo in prinese malo. Izbirajte premišljeno in zapišite, zakaj nečesa ne naredite. - Pazite na že pripravljene skripte za utrjevanje z interneta, ki "vse iz CIS" uveljavijo naenkrat. SSH, požarni zid ali dnevnike lahko spremenijo tako, da se zaklenete ven, pozneje pa ne veste več, kaj je bilo spremenjeno.
Lynis: revizija od znotraj
Lynis je brezplačen odprtokodni program (GPL) podjetja CISOfy, ki Vaš strežnik pregleda od znotraj in za vsako temo poda opozorila in predloge. Sam ničesar ne spreminja; samo poroča.
anna@web1:~$ sudo apt install lynis
anna@web1:~$ sudo lynis audit system
...
-[ Lynis 3.x Results ]-
Warnings (1):
----------------------------
! Found one or more vulnerable packages. [PKGS-7392]
Suggestions (34):
----------------------------
* Consider hardening SSH configuration [SSH-7408]
- Details : AllowTcpForwarding (set YES to NO)
...
Lynis security scan details:
Hardening index : 66 [############# ]
Tests performed : 262Kako ga berete:
- Warnings (opozorila) so stvari, ki si jih res morate ogledati, na primer paketi z znanimi ranljivostmi (takrat imate čakajoče posodobitve, lekcija 4.1).
- Suggestions (predlogi) so nasveti. Mnogi so koristni, nekateri ne ustrezajo Vašemu strežniku. Predlog, da izklopite
AllowTcpForwarding, na primer pokvari Vaše tunele SSH (lekcija 2.3). Izbirajte premišljeno. - Vsako sporočilo ima kodo v oglatih oklepajih, na primer
[SSH-7408]. Z njo v dnevniku/var/log/lynis.logpoiščete, kaj točno je bilo preizkušeno. - Hardening index je število do 100. Je kažipot, ne ocena, za katero bi se morali poditi. Porast po Vaših prilagoditvah pokaže, da napredujete; 100 ni cilj.
Različica Lynis v repozitoriju paketov Vaše distribucije lahko nekoliko zaostaja. Za prvo revizijo to ni težava.
Še tri teme na kratko
- AppArmor in SELinux sta dodatni varnostni plasti v jedru, ki za vsak program določata, kaj sme. Debian in Ubuntu uporabljata AppArmor, ki je privzeto vklopljen; AlmaLinux in Rocky uporabljata SELinux. Ne izklapljajte ju "ker nekaj ne deluje": poiščite sporočilo v journalu in težavo rešite ciljno.
- sysctl nastavlja parametre jedra, na primer za omrežje. Privzete vrednosti v sistemih Debian in Ubuntu so smiselne. Če želite kaj spremeniti, to zapišite v lastno datoteko v
/etc/sysctl.d/(Debian 13 datoteke/etc/sysctl.confne bere več). - Čas: strežnik z napačnim časom naredi dnevnike neuporabne in lahko certifikate obravnava kot neveljavne. Z
timedatectlpreverite, ali piše "System clock synchronized: yes" (sistemska ura je sinhronizirana).
V praksi
Pri WebOké, tako kot pri drugih ponudnikih VPS, za varnost znotraj strežnika skrbite sami: ponudnik poskrbi za strojno opremo, omrežje in virtualizacijsko platformo. Ta tečaj je samopomoč: nihče ne spremlja Vašega strežnika. Pred krogom utrjevanja v nadzorni plošči naredite posnetek stanja in vedite, kako odprete konzolo, če se vseeno zaklenete ven.
Povzetek
- Utrjevanje pomeni prilagoditi strežnik lastni uporabi: odstraniti, kar ni potrebno, in zaostriti, kar se da.
- Štiri načela: majhna napadalna površina, najmanjše potrebne pravice, večplastna obramba in opazovanje dogajanja.
- CIS Benchmarks za vsak izdelek podajo več sto priporočil v profilih Level 1 (osnova) in Level 2 (strogo); uporabljajte jih z razumevanjem, korak za korakom.
- Lynis pregleda strežnik od znotraj ter poda opozorila, predloge in hardening index; sam ničesar ne spreminja.
- AppArmor/SELinux ne izklapljajte; lastne nastavitve jedra v
/etc/sysctl.d/; preverite sinhronizacijo časa.
Kviz
Naloga
Naloga O10.1: Revizija z orodjem Lynis. Naredite posnetek stanja, na strežnik namestite Lynis in zaženite sudo lynis audit system. Zapišite hardening index, vsa opozorila in pet predlogov. Izberite tri predloge, ki jih izvedete, in enega, ki ga premišljeno ne izvedete, z razlogom. Nato revizijo zaženite znova in zapišite novi indeks.
Naloga O10.1: Revizija z orodjem Lynis
To nalogo opravite sami; nihče je ne pregleda. Odkljukajte, kar ste naredili, in nalogo označite kot opravljeno.
Najprej opozorila (običajno čakajoče posodobitve). Smiselno: strožje nastavitve SSH, samodejne posodobitve, odstranitev neuporabljenih storitev. Dober razlog, da nekaj preskočite: AllowTcpForwarding, če uporabljate tunele. Indeks je kažipot, ne cilj.
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
- Zaščita VPS: prvih pet minut
- CIS Benchmarks (pregled, tudi Debian in Ubuntu): https://www.cisecurity.org/cis-benchmarks
- CIS Controls: https://www.cisecurity.org/controls
- Lynis, dokumentacija: https://cisofy.com/documentation/lynis/
- Nizozemski NCSC, Beginnen met cybersecurity (nizozemski vir): https://www.ncsc.nl/beginnen-met-cybersecurity
