10. modulis · 10.1
Servera nostiprināšana (hardening) un CIS principi
10. modulis: Drošība ilgtermiņā · Lasīšanas laiks: 11 min.
Mācīšanās mērķis: Pēc šīs nodarbības Jūs varēsiet izskaidrot, kas ir servera nostiprināšana (hardening) un kādi principi ir tās pamatā, zināsiet, kas ir CIS Benchmarks un kā tos lietot apdomīgi, un varēsiet sistemātiski pārbaudīt savu serveri ar Lynis.
Pamatjēdzieni: nostiprināšana (hardening), uzbrukuma virsma, minimāla instalācija, minimālās tiesības (least privilege), daudzslāņu aizsardzība (defense in depth), CIS Benchmarks, Level 1 un Level 2, CIS Controls, Lynis, hardening index, AppArmor, SELinux, sysctl, laika sinhronizācija
Kas ir nostiprināšana?
Svaiga Debian vai Ubuntu instalācija ir samērā droša, taču tā ir veidota, lai darbotos pēc iespējas vairākās vietās. Nostiprināšana (hardening) nozīmē servera pielāgošanu tieši Jūsu lietojumam: noņemt visu, kas nav vajadzīgs, padarīt stingrāku visu, ko var padarīt stingrāku, un tajā pašā laikā nesabojāt savus pakalpojumus.
Iepriekšējos moduļos Jūs to jau esat darījuši pa daļām: SSH ar atslēgām (modulis 2), parasts lietotājs ar sudo (modulis 3), automātiskie atjauninājumi (modulis 4), ugunsmūris un fail2ban (modulis 5), pakalpojumi ar saviem lietotājiem (modulis 6). Šī nodarbība saliek šos atsevišķos pasākumus vienā ietvarā, lai Jūs redzētu, kā vēl trūkst.
Četri principi
1. Neliela uzbrukuma virsma. Tas, kā nav, nevar salūzt. Katrs instalētais pakalpojums, katrs atvērtais ports, katrs konts ir iespējama ieeja (nodarbība 5.1). Instalējiet minimāli un iztīriet to, ko vairs neizmantojat:
anna@web1:~$ systemctl list-units --type=service --state=running
anna@web1:~$ sudo ss -tulpn
anna@web1:~$ apt list --installed | wc -lJa darbojas pakalpojums, kuru Jūs nepazīstat, noskaidrojiet, ko tas dara (nodarbība 6.1). Ja tas nav vajadzīgs, noņemiet pakotni.
2. Minimālās tiesības. Katrs lietotājs un katra programma saņem tikai tās tiesības, kas nepieciešamas (nodarbība 3.2). Nekāda ikdienas darba kā root, pakalpojumi ar saviem lietotājiem, datubāzu lietotājiem tiesības tikai uz savu datubāzi, nekāda chmod 777.
3. Daudzslāņu aizsardzība. Rēķinieties, ka viens pasākums var neizdoties. Datubāze, kas klausās tikai uz 127.0.0.1, un atrodas aiz ugunsmūra, un kurai ir spēcīga parole, ir droša arī tad, ja viens no šiem trim nejauši izkrīt. To sauc par defense in depth.
4. Zināt, kas notiek. Nostiprināšana nav tikai aizvēršana, bet arī redzēšana: žurnāli, kas tiek saglabāti (nodarbība 6.2), uzraudzība, kas paziņo (nodarbība 8.3), un rezerves kopijas, ar kurām var atgriezties (modulis 8). Bez tā ielaušanos Jūs pamanīsiet tikai tad, kad būs par vēlu.
CIS Benchmarks
Center for Internet Security (CIS) ir amerikāņu bezpeļņas organizācija, kas veido CIS Benchmarks: plašus ieteicamo iestatījumu sarakstus katram produktam, kurus sagatavo brīvprātīgie no drošības nozares. To ir vairāk nekā simts, arī Debian Linux un Ubuntu Linux, katrai versijai atsevišķi. PDF failus var lejupielādēt bez maksas nekomerciālai lietošanai pēc konta izveides.
Linux etalonā ir simtiem ieteikumu, katram ir skaidrojums, pārbaudes veids un iestatīšanas veids. Tie ir sadalīti profilos:
- Level 1: pamata pasākumi, kurus var ieviest samērā ātri, ar skaidru drošības ieguvumu un bez būtiska servera lietojamības samazinājuma. Lielākajai daļai serveru tas ir mērķis.
- Level 2: papildu pasākumi vidēm, kurās drošība ir pirmajā vietā (daudzslāņu aizsardzība). Tie var maksāt funkcijas vai ātrumu, un, pēc paša CIS teiktā, var nodarīt kaitējumu, ja tos piemēro neuzmanīgi.
Linux gadījumā ir atsevišķi profili serveriem un darbstacijām.
Tēmu piemēri Linux etalonā: atsevišķi nodalījumi /tmp un /var/log, neizmantotu failu sistēmu un tīkla protokolu izslēgšana, laika sinhronizācija, audita žurnālēšana, SSH iestatījumi (daudzus no tiem Jūs zināt no nodarbības 2.2), paroļu politika, tiesības uz svarīgiem failiem un ugunsmūris.
Līdzās Benchmarks ir arī CIS Controls (pašlaik versija 8.1): tie nav iestatījumi konkrētam produktam, bet astoņpadsmit pasākumu grupu saraksts visai organizācijai, piemēram, "programmatūras inventārs", "ievainojamību pārvaldība" un "datu atjaunošana". Vienam serverim noderīgāki ir Benchmarks; Controls palīdz, ja domājat par visu uzņēmumu.
Lietojiet etalonu apdomīgi
Etalons nav poga, ko vienkārši nospiest. Daži noteikumi:
- Vispirms saprotiet, tad piemērojiet. Katram ieteikumam ir skaidrojums. Ja nesaprotat, kāpēc, pagaidām to nepiemērojiet.
- Viena lieta vienlaikus, un testējiet. Stingrs kodola vai tīkla iestatījums var sabojāt Jūsu lietotni. Izveidojiet momentuzņēmumu, mainiet vienu lietu un pārbaudiet, vai viss joprojām darbojas.
- Ne viss ir domāts Jums. Ieteikums par atsevišķu
/var/lognodalījumu esošā VPS ir grūti īstenojams un dod maz. Izvēlieties apzināti un pierakstiet, kāpēc kaut ko nedarāt. - Uzmanieties ar gataviem nostiprināšanas skriptiem no interneta, kas vienā reizē piemēro "visu no CIS". Tie var mainīt SSH, ugunsmūri vai žurnālus tā, ka Jūs paši sev aizslēdzat piekļuvi, un pēc tam vairs nezināt, kas ir mainīts.
Lynis: audits no iekšpuses
Lynis ir bezmaksas atvērtā koda programma (GPL) no CISOfy, kas pārbauda serveri no iekšpuses un katrai tēmai sniedz brīdinājumus un ieteikumus. Pati tā neko nemaina, tikai ziņo.
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 : 262Kā to lasīt:
- Warnings ir lietas, kas Jums noteikti jāapskata, piemēram, pakotnes ar zināmām ievainojamībām (tad Jums ir neuzstādīti atjauninājumi, nodarbība 4.1).
- Suggestions ir padomi. Daudzi ir noderīgi, daži neatbilst Jūsu serverim. Piemēram, ieteikums izslēgt
AllowTcpForwardingsabojā Jūsu SSH tuneļus (nodarbība 2.3). Izvēlieties apzināti. - Katram paziņojumam ir kods iekavās, piemēram,
[SSH-7408]. Ar to žurnālā/var/log/lynis.logvarat atrast, kas tieši tika pārbaudīts. - Hardening index ir skaitlis līdz 100. Tas ir virziena rādītājs, nevis atzīme, pēc kuras dzīties. Pieaugums pēc Jūsu izmaiņām parāda, ka virzāties uz priekšu; 100 nav mērķis.
Lynis versija Jūsu distribūcijas pakotņu avotā var nedaudz atpalikt. Pirmajam auditam tā nav problēma.
Vēl trīs tēmas īsumā
- AppArmor un SELinux ir papildu drošības slāņi kodolā, kas katrai programmai nosaka, ko tā drīkst darīt. Debian un Ubuntu izmanto AppArmor, kas pēc noklusējuma ir ieslēgts; AlmaLinux un Rocky izmanto SELinux. Neizslēdziet tos tikai tāpēc, ka "kaut kas nedarbojas": atrodiet paziņojumu žurnālā (journal) un atrisiniet problēmu mērķtiecīgi.
- sysctl iestata kodola parametrus, piemēram, tīklam. Debian un Ubuntu noklusējuma vērtības ir saprātīgas. Ja vēlaties kaut ko mainīt, ierakstiet to savā failā mapē
/etc/sysctl.d/(Debian 13 vairs nelasa/etc/sysctl.conf). - Laiks: serveris ar nepareizu laiku padara žurnālus nelietojamus un var uzskatīt sertifikātus par nederīgiem. Ar
timedatectlpārbaudiet, vai ir redzams "System clock synchronized: yes".
Praksē
WebOké, tāpat kā pie citiem VPS pakalpojumu sniedzējiem, drošību sava servera iekšienē Jūs pārvaldāt paši: pakalpojumu sniedzējs rūpējas par aparatūru, tīklu un virtualizācijas platformu. Šis kurss ir pašpalīdzība: neviens neskatās līdzi Jūsu serverī. Pirms nostiprināšanas kārtas izveidojiet momentuzņēmumu panelī un ziniet, kā atvērt konsoli, ja tomēr sev aizslēdzat piekļuvi.
Kopsavilkums
- Nostiprināšana ir servera pielāgošana savam lietojumam: noņemt to, kas nav vajadzīgs, padarīt stingrāku to, ko var.
- Četri principi: neliela uzbrukuma virsma, minimālās tiesības, daudzslāņu aizsardzība un redzēt, kas notiek.
- CIS Benchmarks katram produktam sniedz simtiem ieteikumu profilos Level 1 (pamata) un Level 2 (stingrs); lietojiet tos ar izpratni, vienu soli vienlaikus.
- Lynis pārbauda serveri no iekšpuses un sniedz brīdinājumus, ieteikumus un hardening index; pati programma neko nemaina.
- AppArmor/SELinux neizslēgt; savi kodola iestatījumi mapē
/etc/sysctl.d/; pārbaudīt laika sinhronizāciju.
Tests
Uzdevums
Uzdevums O10.1: Audits ar Lynis. Izveidojiet momentuzņēmumu, instalējiet Lynis savā serverī un palaidiet sudo lynis audit system. Pierakstiet hardening index, visus brīdinājumus un piecus ieteikumus. Izvēlieties trīs ieteikumus, kurus īstenosiet, un vienu, kuru apzināti neīstenosiet, norādot iemeslu. Pēc tam palaidiet auditu vēlreiz un pierakstiet jauno indeksu.
Uzdevums O10.1: Audits ar Lynis
Šo uzdevumu veicat paši; neviens to nepārbauda. Atzīmējiet, ko esat izdarījuši, un atzīmējiet uzdevumu kā paveiktu.
Vispirms brīdinājumi (parasti neinstalēti atjauninājumi). Lietderīgi: stingrāki SSH iestatījumi, automātiski atjauninājumi, neizmantoto pakalpojumu noņemšana. Labs iemesls kaut ko izlaist: AllowTcpForwarding, ja izmantojat tuneļus. Indekss ir orientieris, nevis mērķis.
Jūsu atzīmes un piezīmes paliek tikai šajā pārlūkprogrammā; mēs tās nekur nesūtām. Ja esat pieteikušies, sadaļā Mani kursi saglabājam tikai to, ka uzdevums ir paveikts.
Vairāk lasīt
- Jūsu VPS aizsardzība: pirmās piecas minūtes
- CIS Benchmarks (pārskats, arī Debian un Ubuntu): https://www.cisecurity.org/cis-benchmarks
- CIS Controls: https://www.cisecurity.org/controls
- Lynis, dokumentācija: https://cisofy.com/documentation/lynis/
- Nīderlandes NCSC, Beginnen met cybersecurity (Nīderlandes avots, nīderlandiešu valodā): https://www.ncsc.nl/beginnen-met-cybersecurity
