10 modulis · 10.1
Sustiprinimas (hardening) ir CIS principai
10 modulis: Išlikti saugiems · Skaitymo laikas: 11 min.
Mokymosi tikslas: Po šios pamokos galėsite paaiškinti, kas yra sustiprinimas (hardening) ir kokie principai už jo slypi, žinosite, kas yra CIS Benchmarks ir kaip juos protingai naudoti, ir galėsite sistemingai patikrinti savo serverį su Lynis.
Pagrindinės sąvokos: sustiprinimas (hardening), atakos paviršius, minimalus diegimas, mažiausios teisės (least privilege), daugiasluoksnė gynyba (defense in depth), CIS Benchmarks, Level 1 ir Level 2, CIS Controls, Lynis, hardening index, AppArmor, SELinux, sysctl, laiko sinchronizavimas
Kas yra sustiprinimas (hardening)?
Ką tik įdiegta Debian ar Ubuntu sistema yra pakankamai saugi, tačiau sukurta veikti kuo įvairesnėse aplinkose. Hardening (sustiprinimas) yra serverio pritaikymas būtent Jūsų naudojimui: pašalinti viską, ko nereikia, sugriežtinti viską, ką galima sugriežtinti, ir nesugadinti savo paslaugų.
Ankstesniuose moduliuose tai jau darėte žingsnis po žingsnio: SSH su raktais (modulis 2), įprastas naudotojas su sudo (modulis 3), automatiniai atnaujinimai (modulis 4), užkarda ir fail2ban (modulis 5), paslaugos su savo naudotojais (modulis 6). Ši pamoka sudeda šias atskiras priemones į vieną sistemą, kad matytumėte, ko dar trūksta.
Keturi principai
1. Mažas atakos paviršius. Ko nėra, tas negali sugesti. Kiekviena įdiegta paslauga, kiekvienas atviras prievadas, kiekviena paskyra yra galimas įėjimas (pamoka 5.1). Diekite tik tai, kas būtina, ir pašalinkite tai, ko nebenaudojate:
anna@web1:~$ systemctl list-units --type=service --state=running
anna@web1:~$ sudo ss -tulpn
anna@web1:~$ apt list --installed | wc -lJei veikia paslauga, kurios nepažįstate, išsiaiškinkite, ką ji daro (pamoka 6.1). Jei ji Jums nereikalinga, pašalinkite paketą.
2. Mažiausios teisės. Kiekvienas naudotojas ir kiekviena programa gauna tik būtinas teises (pamoka 3.2). Jokio kasdienio darbo kaip root, paslaugos su savo naudotojais, duomenų bazių naudotojai tik su teisėmis į savo duomenų bazę, jokio chmod 777.
3. Daugiasluoksnė gynyba. Darykite prielaidą, kad viena priemonė nesuveiks. Duomenų bazė, kuri klauso tik 127.0.0.1 ir yra už užkardos ir turi stiprų slaptažodį, išlieka saugi, net jei viena iš šių trijų priemonių netyčia neveikia. Tai vadinama defense in depth.
4. Žinoti, kas vyksta. Sustiprinimas yra ne tik uždarymas, bet ir matymas: saugomi žurnalai (pamoka 6.2), pranešanti stebėsena (pamoka 8.3) ir atsarginės kopijos, iš kurių galite atkurti (modulis 8). Be to įsilaužimą pastebėsite tik tada, kai bus per vėlu.
CIS Benchmarks
Center for Internet Security (CIS) yra amerikiečių ne pelno organizacija, kurianti CIS Benchmarks: išsamius rekomenduojamų nustatymų sąrašus kiekvienam produktui, kuriuos rengia saugumo srities savanoriai. Jų yra daugiau nei šimtas, taip pat Debian Linux ir Ubuntu Linux, kiekvienai versijai atskirai. PDF failus galite nemokamai atsisiųsti nekomerciniam naudojimui, susikūrę paskyrą.
Linux skirtas benchmark apima šimtus rekomendacijų, kurių kiekviena turi paaiškinimą, patikrinimo būdą ir nustatymo būdą. Jos suskirstytos į profilius:
- Level 1: pagrindinės priemonės, kurias galima gana greitai įdiegti, su aiškia saugumo nauda ir nedideliu poveikiu serverio naudojimui. Daugumai serverių tai yra tikslas.
- Level 2: papildomos priemonės aplinkoms, kuriose saugumas yra svarbiausias (daugiasluoksnė gynyba). Jos gali kainuoti funkcijų ar greičio, o pasak pačios CIS, neatsargiai pritaikytos gali pakenkti.
Linux sistemoms yra atskiri profiliai serveriams ir darbo stotims.
Linux benchmark temų pavyzdžiai: atskiri skaidiniai /tmp ir /var/log, nenaudojamų failų sistemų ir tinklo protokolų išjungimas, laiko sinchronizavimas, audito žurnalai, SSH nustatymai (daugelį jų žinote iš pamokos 2.2), slaptažodžių politika, teisės į svarbius failus ir užkarda.
Be Benchmarks, yra ir CIS Controls (dabar 8.1 versija): tai ne nustatymai konkrečiam produktui, o aštuoniolikos priemonių grupių sąrašas visai organizacijai, pavyzdžiui, "programinės įrangos inventorizacija", "pažeidžiamumų valdymas" ir "duomenų atkūrimas". Vienam serveriui Benchmarks naudingesni; Controls padeda, kai galvojate apie visą savo įmonę.
Protingai naudokite benchmark
Benchmark nėra mygtukas, kurį tiesiog paspaudžiate. Kelios taisyklės:
- Pirmiausia supraskite, tik tada taikykite. Kiekviena rekomendacija turi paaiškinimą. Jei nesuprantate, kodėl, kol kas jos netaikykite.
- Po vieną pakeitimą ir testuokite. Griežtas branduolio ar tinklo nustatymas gali sugadinti Jūsų programą. Padarykite momentinę kopiją (snapshot), pakeiskite vieną dalyką ir patikrinkite, ar viskas vis dar veikia.
- Ne viskas skirta Jums. Rekomendaciją dėl atskiro
/var/logskaidinio esamame VPS įgyvendinti sunku, o naudos ji duoda nedaug. Rinkitės sąmoningai ir užsirašykite, kodėl kažko nedarote. - Būkite atsargūs su paruoštais sustiprinimo scenarijais iš interneto, kurie vienu kartu pritaiko "viską iš CIS". Jie gali taip pakeisti SSH, užkardą ar žurnalus, kad užsirakinsite patys, o vėliau nebežinosite, kas buvo pakeista.
Lynis: auditas iš vidaus
Lynis yra nemokama atvirojo kodo programa (GPL) iš CISOfy, kuri patikrina Jūsų serverį iš vidaus ir pagal temas pateikia įspėjimus ir pasiūlymus. Ji pati nieko nekeičia; ji tik praneš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 : 262Kaip skaityti rezultatus:
- Warnings yra dalykai, kuriuos tikrai turite peržiūrėti, pavyzdžiui, paketai su žinomomis spragomis (tada turite neįdiegtų atnaujinimų, pamoka 4.1).
- Suggestions yra patarimai. Daugelis jų naudingi, kai kurie netinka Jūsų serveriui. Pavyzdžiui, pasiūlymas išjungti
AllowTcpForwardingsugadina Jūsų SSH tunelius (pamoka 2.3). Rinkitės sąmoningai. - Kiekvienas pranešimas turi kodą laužtiniuose skliaustuose, pavyzdžiui,
[SSH-7408]. Pagal jį žurnale/var/log/lynis.loggalite rasti, kas tiksliai buvo tikrinta. - Hardening index yra skaičius iki 100. Tai krypties rodiklis, o ne pažymys, kurio reikia vaikytis. Padidėjimas po Jūsų pakeitimų rodo, kad judate pirmyn; 100 nėra tikslas.
Lynis versija Jūsų distribucijos paketų saugykloje gali būti kiek atsilikusi. Pirmajam auditui tai nėra problema.
Dar trys temos trumpai
- AppArmor ir SELinux yra papildomi saugumo sluoksniai branduolyje, kurie kiekvienai programai nustato, ką ji gali daryti. Debian ir Ubuntu naudoja AppArmor, kuris įjungtas pagal numatytuosius nustatymus; AlmaLinux ir Rocky naudoja SELinux. Neišjunkite jų "todėl, kad kažkas neveikia": suraskite pranešimą žurnale (journal) ir išspręskite problemą tikslingai.
- sysctl nustato branduolio parametrus, pavyzdžiui, tinklo. Numatytosios Debian ir Ubuntu reikšmės yra pakankamai geros. Jei norite ką nors pakeisti, įrašykite tai į atskirą failą kataloge
/etc/sysctl.d/(Debian 13 nebeskaito/etc/sysctl.conf). - Laikas: serveris su neteisingu laiku daro žurnalus nenaudingus ir gali laikyti sertifikatus negaliojančiais. Su
timedatectlpatikrinkite, ar rodoma "System clock synchronized: yes".
Praktikoje
WebOké, kaip ir kitų VPS paslaugų teikėjų atveju, saugumą savo serveryje valdote patys: teikėjas pasirūpina aparatine įranga, tinklu ir virtualizacijos platforma. Šis kursas skirtas savarankiškam mokymuisi: niekas nestebi Jūsų serverio. Prieš sustiprinimo darbus padarykite momentinę kopiją (snapshot) valdymo skydelyje ir žinokite, kaip atidaryti konsolę, jei vis dėlto užsirakintumėte.
Santrauka
- Sustiprinimas (hardening) yra serverio pritaikymas savo naudojimui: pašalinti tai, ko nereikia, sugriežtinti tai, ką galima.
- Keturi principai: mažas atakos paviršius, mažiausios teisės, daugiasluoksnė gynyba ir matymas, kas vyksta.
- CIS Benchmarks kiekvienam produktui pateikia šimtus rekomendacijų profiliuose Level 1 (pagrindinis) ir Level 2 (griežtas); naudokite jas suprasdami, po vieną žingsnį.
- Lynis patikrina Jūsų serverį iš vidaus ir pateikia įspėjimus, pasiūlymus bei hardening index; pati ji nieko nekeičia.
- Neišjunkite AppArmor/SELinux; savo branduolio nustatymus laikykite
/etc/sysctl.d/; tikrinkite laiko sinchronizavimą.
Testas (quiz)
Užduotis
Užduotis O10.1: Auditas su Lynis. Padarykite momentinę kopiją (snapshot), įdiekite Lynis savo serveryje ir paleiskite sudo lynis audit system. Užsirašykite hardening index, visus įspėjimus ir penkis pasiūlymus. Pasirinkite tris pasiūlymus, kuriuos įgyvendinsite, ir vieną, kurio sąmoningai neįgyvendinsite, nurodydami priežastį. Tada paleiskite auditą dar kartą ir užsirašykite naują indeksą.
Užduotis O10.1: Auditas su Lynis
Šią užduotį atliekate patys; niekas jos netikrina. Pažymėkite, ką atlikote, ir pažymėkite užduotį kaip atliktą.
Pirmiausia įspėjimai (dažniausiai neįdiegti atnaujinimai). Prasminga: griežtesni SSH nustatymai, automatiniai atnaujinimai, nenaudojamų paslaugų pašalinimas. Gera priežastis ko nors nedaryti: AllowTcpForwarding, jei naudojate tunelius. Indeksas yra kelrodis, o ne tikslas.
Jūsų pažymėti varneliai ir pastabos lieka tik šioje naršyklėje; niekur jų nesiunčiame. Jei esate prisijungę, skiltyje Mano kursai išsaugome tik tai, kad užduotį atlikote.
Skaitykite daugiau
- VPS apsauga: pirmosios penkios minutės
- CIS Benchmarks (apžvalga, taip pat Debian ir Ubuntu): https://www.cisecurity.org/cis-benchmarks
- CIS Controls: https://www.cisecurity.org/controls
- Lynis, dokumentacija: https://cisofy.com/documentation/lynis/
- Nyderlandų NCSC, kibernetinio saugumo pradžiamokslis (nyderlandų kalba): https://www.ncsc.nl/beginnen-met-cybersecurity
