„Linux“ yra daugumos interneto serverių, debesijos infrastruktūros, konteinerių ir tinklo įrangos pagrindas. Kai užpuolikas atakuoja įmonės svetainę, duomenų bazę ar debesijos aplinką, labai tikėtina, kad taikinys veikia „Linux“. Ši sistema laikoma saugia, tačiau jos saugumas priklauso nuo konfigūracijos: prastai prižiūrimas „Linux“ serveris su atviru SSH prisijungimu ir neatnaujintomis programomis yra lengvas grobis. Šioje temoje apžvelgsime svarbiausias „Linux“ sistemų stiprinimo sritis.
Mažiausias atakos paviršius
Stiprinimas prasideda nuo diegimo. Serveriui pasirenkama minimali sistemos versija be grafinės aplinkos ir nereikalingų paketų, o įdiegiama tik tai, ko tikrai reikia jo paskirčiai. Kiekvienas papildomas paketas yra papildomas kodas, kuriame gali būti pažeidžiamumų.
Toliau peržiūrimos veikiančios paslaugos. Komanda systemctl list-units --type=service parodo paleistas paslaugas, o ss -tulpn atskleidžia, kurios programos laukia tinklo jungčių ir kokiais prievadais. Viskas, kas nereikalinga, sustabdoma ir išjungiama. Pavyzdžiui, interneto serveriui nereikia pašto ar failų bendrinimo paslaugų.
„Linux“ sistemoms taip pat skirti CIS Benchmarks kiekvienam populiariam platinimui, pavyzdžiui, „Ubuntu“, „Debian“ ar „Red Hat Enterprise Linux“. Jų atitiktį automatiškai padeda patikrinti tokie įrankiai kaip „Lynis“ ar „OpenSCAP“.
Naudotojai ir teisės
„Linux“ sistemoje visagalis naudotojas yra root. Su juo įmanoma padaryti bet ką, todėl tiesioginis darbas root paskyra yra didelė rizika: viena klaida ar užvaldyta sesija gali sunaikinti visą sistemą.
Vietoj to naudojamas sudo, leidžiantis įprastam naudotojui vykdyti konkrečias komandas su padidintomis teisėmis. Sudo privalumai yra du. Pirma, teises galima suteikti tiksliai, pagal mažiausių privilegijų principą: pavyzdžiui, leisti naudotojui perkrauti tik interneto serverio paslaugą, o ne vykdyti bet kokias komandas. Antra, kiekvienas sudo panaudojimas registruojamas žurnale, todėl visada aišku, kas ir ką darė. Sudo taisyklės aprašomos faile /etc/sudoers, kuris redaguojamas tik komanda visudo, apsaugančia nuo sintaksės klaidų.
Būtina reguliariai peržiūrėti ir naudotojų paskyras: išjungti nebenaudojamas, patikrinti, kas priklauso administratorių grupei (sudo arba wheel), ir įsitikinti, kad niekas, išskyrus root, neturi naudotojo identifikatoriaus 0.
Failų teisės
Kiekvienas „Linux“ failas turi savininką, grupę ir tris teisių rinkinius: savininkui, grupei ir visiems kitiems. Kiekvienam rinkiniui nustatoma, ar galima failą skaityti (r), rašyti (w) ir vykdyti (x). Pavyzdžiui, teisės 640 reiškia, kad savininkas gali skaityti ir rašyti, grupė tik skaityti, o kiti neturi jokių teisių.
Dažniausios su teisėmis susijusios klaidos yra failai, į kuriuos rašyti gali visi, konfigūracijos failai su slaptažodžiais, kuriuos gali perskaityti bet kuris naudotojas, ir nereikalingi SUID bitai. SUID bitas leidžia programai veikti savininko, dažnai root, teisėmis, nesvarbu, kas ją paleido. Jei toks bitas nustatytas netinkamai programai, ji gali tapti keliu privilegijoms išplėsti. Todėl failai su SUID bitu reguliariai inventorizuojami ir tikrinami, ar jie tikrai reikalingi.
Papildomą apsaugos sluoksnį suteikia privalomosios prieigos kontrolės sistemos SELinux ir AppArmor. Jos apriboja, ką gali daryti kiekviena programa, net jei ji veikia su root teisėmis. Jei užpuolikas užvaldo interneto serverio procesą, SELinux neleis jam skaityti failų už leistinų ribų. Dažna klaida yra šias sistemas išjungti, kai jos trukdo programai veikti, užuot sutvarkius taisykles.
SSH apsauga
SSH yra pagrindinis „Linux“ serverių nuotolinio valdymo būdas, todėl ir dažniausiai atakuojama paslauga. Internete veikiantys serveriai nuolat sulaukia automatizuotų slaptažodžių spėjimo bandymų. Svarbiausi SSH stiprinimo žingsniai, nustatomi faile /etc/ssh/sshd_config:
Prisijungimas raktais vietoj slaptažodžių (PasswordAuthentication no). SSH raktų pora yra daug stipresnė už bet kokį slaptažodį, o privatusis raktas saugomas tik administratoriaus įrenginyje, geriausia apsaugotas slaptafraze.
Tiesioginio root prisijungimo draudimas (PermitRootLogin no). Administratoriai jungiasi savo paskyromis ir naudoja sudo, todėl visada žinoma, kas jungėsi.
Prieigos ribojimas. Nurodoma, kurie naudotojai gali jungtis per SSH, o pačią paslaugą, jei įmanoma, leidžiama pasiekti tik iš įmonės tinklo ar per VPN.
Apsauga nuo spėjimo. Įrankis „Fail2ban“ stebi žurnalus ir laikinai užblokuoja IP adresus, iš kurių daugybę kartų nesėkmingai bandoma prisijungti.
Prievado pakeitimas iš standartinio 22 į kitą sumažina automatinių bandymų triukšmą žurnaluose, tačiau tai nėra tikra apsaugos priemonė, nes prievadų skeneriai jį vis tiek suranda.
Ugniasienė
„Linux“ branduolys turi integruotą paketų filtravimo sistemą netfilter, valdomą įrankiais nftables arba senesniu iptables. Paprastesnės sąsajos yra ufw „Ubuntu“ sistemose ir firewalld „Red Hat“ šeimos sistemose. Taikomas tas pats principas: įeinančios jungtys numatytai draudžiamos, o leidžiami tik būtini prievadai, pavyzdžiui, 443 interneto serveriui ir 22 tik iš administravimo tinklo.
Atnaujinimai
„Linux“ paketų tvarkyklės (apt, dnf) leidžia atnaujinti visą sistemą viena komanda. Serveriuose verta įjungti automatinius saugumo atnaujinimus, pavyzdžiui, „Ubuntu“ paketą unattended-upgrades. Atnaujinus branduolį ar svarbias bibliotekas, dažnai reikia perkrauti sistemą ar paslaugas, kitaip sena, pažeidžiama versija lieka veikti atmintyje. Kaip ir „Windows“ atveju, būtina stebėti platinimo palaikymo terminus.
Žurnalai ir stebėsena
„Linux“ sistemose žurnalus renka systemd-journald (peržiūrimi komanda journalctl) ir tradicinė rsyslog sistema. Saugumui svarbiausi yra autentifikacijos žurnalai (/var/log/auth.log „Debian“ šeimoje ir /var/log/secure „Red Hat“ šeimoje), kuriuose matyti SSH prisijungimai ir sudo naudojimas.
Išsamesniam stebėjimui naudojamas audito posistemis auditd, galintis fiksuoti, kas ir kada keitė svarbius failus, pavyzdžiui, /etc/passwd ar /etc/sudoers. Failų vientisumo stebėsenos įrankiai, tokie kaip „AIDE“, palygina sistemos failus su žinoma švaria būsena ir praneša apie pakeitimus. Kaip ir „Windows“ aplinkoje, žurnalai siunčiami į centrinę SIEM sistemą.
Svarbiausios temos išvados
„Linux“ stiprinimas prasideda nuo minimalaus diegimo ir nereikalingų paslaugų išjungimo, o CIS Benchmarks ir tokie įrankiai kaip „Lynis“ padeda patikrinti konfigūraciją. Kasdien dirbama ne root paskyra, o per sudo su tiksliai apibrėžtomis ir registruojamomis teisėmis. Failų teisės ir SUID bitai reguliariai tikrinami, o SELinux ar AppArmor riboja programų veiksmus. SSH apsaugomas raktais, draudžiamu root prisijungimu ir „Fail2ban“, ugniasienė leidžia tik būtinus prievadus, o atnaujinimai ir auditd žurnalai užbaigia gynybos sluoksnius. Kitoje temoje išnagrinėsime tapatybės ir prieigos valdymą organizacijos mastu.
Savikontrolės klausimai
1. Kodėl serveriui rekomenduojama minimali sistemos versija ir kaip patikrinti, kurios paslaugos laukia tinklo jungčių?
2. Kokius du pagrindinius privalumus turi sudo, palyginti su darbu root paskyra?
3. Kodėl netinkamai nustatytas SUID bitas gali tapti privilegijų išplėtimo keliu?
4. Kodėl SSH prievado pakeitimas nėra tikra apsaugos priemonė ir kas iš tikrųjų apsaugo SSH?
5. Kuo SELinux ar AppArmor papildo įprastas failų teises?
Visos pamokos