LFCA: kuidas parandada Linuxi süsteemi turvalisust - 20. osa


Nagu me kõik teame, on juurkasutaja kuningas ja omab Linuxi süsteemile piiramatuid privileege. Kuid juurkasutajad piirduvad põhiülesannetega. Lisaks antakse sudo kasutajatele ainult teatud määral juurõigusi, mida root kasutaja peab sobivaks konkreetsete kõrgendatud ülesannete täitmiseks.

Probleemid tekivad siis, kui tavakasutajatel on kontrollimatu juurdepääs ressurssidele või kui nad laienevad tahtmatult juurima. See on tõsine turvarisk, mis võib põhjustada rikkumisi, soovimatuid muudatusi ja halvimal juhul süsteemi krahhi. Teine potentsiaalne risk on see, kui failidel on vähem turvalised failiõigused. Näiteks saab globaalsete kasutajate kirjutamisõigustega alglaadimisfaile hõlpsasti muuta või rikkuda, mille tulemuseks on katkenud süsteem.

[Samuti võib teile meeldida: kasulikke näpunäiteid andmete ja Linuxi turvamiseks]

Kuigi me suudame rakendada füüsilist, võrgu- ja andmeturvet, võib pahatahtlik kasutaja turvameetmetest mööda hiilida ja selliseid turvaauke ära kasutada. Sel põhjusel tuleks failisüsteemi turvalisust tõsiselt võtta. See pakub täiendavat kaitsekihti rünnakute või siseringi ähvarduste korral pahatahtlikelt töötajatelt, kes ei pea failidele juurdepääsu saamiseks turvameetmetest mööda hiilima.

Süsteemi turvalisuses keskendume järgmistele põhipunktidele:

  • Juurdepääsuõigused - kasutajate ja rühmade õigused.
  • PAM-mooduliga jõustada paroolipoliitika

Juurdepääsuõigused - kasutajate ja rühmade eraldamine

Tõenäoliselt olete kuulnud, et kõike Linuxis peetakse failiks. Ja kui see pole nii, siis on see protsess. Iga Linuxi süsteemi fail kuulub kasutajale ja rühma kasutajale. Sellel on ka failiload kolme kasutajakategooria jaoks: kasutaja (u), rühm (g) ja teised (o). Õigused on esitatud iga kasutaja kategooria jaoks lugemise, kirjutamise ja käivitamise (rwx) vormingus.

rwx        rwx	     rwx
User       Group     Others

Nagu varem näha, käsus ls, nagu näidatud.

$ ls -l

Lihtsalt kokkuvõtteks võib öelda, et õigused on tavaliselt üheksa tähemärgiga. Esimesed kolm märki tähistavad faili omava tegeliku kasutaja juurdepääsuõigusi. Teine tähemärkide komplekt tähistab faili rühma omaniku õigusi. Lõpuks viimane komplekt teistele või globaalsetele kasutajatele. Need tähemärgid on alati lugemise, kirjutamise, teostamise (rwx) järjekorras.

Pärast õigusi on meil kasutajate ja gruppide omandiõigused, millele järgneb faili või kataloogi suurus, muutmise kuupäev ja viimasena faili nimi.

Faili-/kataloogiõiguste ja omandiõiguste muutmine

Failide ja kataloogide kasutajaõigusi saab muuta sobivaks peetavateks. Rusikareegel on kasutada kõige vähem privileegide turvalisuse põhimõtet. Lihtsamalt öeldes veenduge, et kasutajad saaksid töö tegemiseks vajalikud minimaalsed juurdepääsuõigused või load.

Vähimate privileegide põhimõte piirab kasutajaid ainult teatud rollides ja seda tehes minimeerib ründajate juurdepääsu kriitilistele andmetele ja nende muutmist madala hoovaga kasutajakonto abil. Samuti vähendab see rünnakupinda ja piirab pahavara levikut juhul, kui ründaja võtab teie süsteemi üle kontrolli.

Seega, kui kasutajal on vaja vaadata ainult faili või kataloogi sisu, ei tohiks talle anda täitmis- ega kirjutamisõigusi. Andke kõige põhilisemal tasemel ainult kõige vähem õigusi ja omandiõigusi, mida kasutaja ülesannete täitmiseks vajab. Oleme käsitlenud, kuidas muuta failide/kataloogide kasutajaõigusi ja omandiõigusi, kasutades chmod- ja chown-käske Linuxi põhikäskude teemas.

Selleks, et süsteemiadministraatoril oleks lihtsam õigusi hallata, võib tervetele kataloogidele anda spetsiaalseid õigusi või juurdepääsuõigusi. Üks spetsiaalsetest lubadest, mida saab faili või kataloogi kustutamise ja muutmise piiramiseks rakendada, on kleepuv bitti.

Stsenaariumi korral, kus jagatud kataloogile pääsevad juurde kõik süsteemi või võrgu kasutajad, on potentsiaalne oht, et mõned kasutajad saavad kataloogis olevaid faile kustutada või muuta. See on ebasoovitav, kui soovite säilitada kataloogi sisu terviklikkuse. Ja siin tuleb kleepuv otsik sisse.

Kleepuv bit on failile või kogu kataloogile määratud spetsiaalne faililuba. See annab ainult selle faili/kataloogi omanikule loa faili või kataloogi sisu kustutada või muuta. Ükski teine kasutaja ei saa faili/kataloogi kustutada ega muuta. Selle sümboolne väärtus on t ja arvuline väärtus on 1000.

Kleepuva biti sisselülitamiseks kataloogis kasutage käsku chmod järgmiselt:

$ chmod +t directory_name

Allolevas näites oleme rakendanud kataloogi nimega test kleepuva bitti. Kataloogi puhul pärib kogu sisu kleepuvate bitide õigused. Kleepuvate bitide õigusi saate kontrollida käsuga ls -ld. Pange tähele, et faililubade lõpus on sümbol t .

$ ls -ld test

Kui mõni teine kasutaja üritab kataloogi kustutada või kataloogis olevat faili muuta, tervitatakse teda veaga Luba keelatud.

Ja see on stick bit faili loa põhisisu.

SUID (Set User ID) on veel üks spetsiaalne faililuba, mis võimaldab teisel tavakasutajal käivitada faili omaniku failiõigustega. Seda tähistatakse failiõiguste kasutajaosas tavaliselt sümboolse väärtusega s , mitte täitmislubasid tähistava x -ga. SUID-i arvuline väärtus on 4000.

SGID (Set Group ID) võimaldab tavakasutajal pärida failirühma omaniku rühmaõigused. Õiguste täitmiseks x asemel näete failiõiguste rühmaosas s . SGID arvväärtus on 2000.

Ükskõik kui mugavaks need osutuvad, on SUID- ja SGID-õigused seotud turvariskidega ning neid tuleks iga hinna eest vältida. Seda seetõttu, et nad annavad tavakasutajatele erilisi privileege. Kui tavakasutajana poseeriv sissetungija kohtub juurkasutajale kuuluva käivitatava failiga, millele on seatud SUID-bit, saab ta seda lünka kasutada ja süsteemi ära kasutada.

Kõigi Linuxis seatud SUID-bitiga failide leidmiseks käivitage juurkasutajana käsk find.

$ find / -perm -4000 type -f

Käivitatavate kataloogide jaoks:

$ find / -perm -4000 type -d

Kõigi failide leidmiseks, kui SGID-i bitikomplekt töötab

$ find / -perm -2000 type -f

Kataloogide käivitamiseks:

$ find / -perm -2000 type -d

SUID-biti eemaldamiseks failist käivitage käsk chmod, nagu näidatud:

$ chmod u-s /path/to/file

Failist SGID-biti eemaldamiseks käivitage käsk:

$ chmod g-s filename /path/to/file

Pole haruldane, et kasutajad määravad nõrgad paroolid. Hea number määras lühikesed, lihtsad ja hõlpsasti äraarvatavad paroolid, et vältida sisselogimisel unustamist. Ehkki mugavaid, nõrku paroole saab toore jõu rünnaku skriptide abil hõlpsasti rikkuda.

PAM-moodul (Pluggable Authentication Module) on moodul, mis võimaldab süsteemiadministraatoritel rakendada Linuxi süsteemides paroolipoliitikat. Selle saavutamiseks on vaja pam_pwquality moodulit, mille pakub teek libpam_pwquality. Moodul pam_pwquality kontrollib parooli tugevust reeglite ja süsteemisõnastiku kogumi põhjal ning näitab nõrku paroolivalikuid.

Mooduli pam_pwquality installimiseks Ubuntu 18.04 ja uuematesse versioonidesse käivitage:

$ sudo apt install libpam_pwquality

RHEL/CentOS 8 puhul käivitage käsk:

$ sudo dnf install libpwquality

Konfiguratsioonifail asub järgmises asukohas:

  • Debiani süsteemidest - /etc/pam.d/common-password
  • RedHati süsteemides - /etc/pam.d/system-auth

Enne kui alustame PAM-i konfiguratsioonifaili muutmist, kaalume kõigepealt paroolide vananemise juhtnuppide kohta teadmiste kogumist.

Need leiate failist /etc/login.defs.

Fail sisaldab järgmisi võtme parooli juhtelemente:

  • PASS_MAX_DAYS: paroolide kasutamise maksimaalne arv.
  • PASS_MIN_DAYS: minimaalne arv. parooli muutmise vahel lubatud päevade arv.
  • PASS_WARN_AGE: enne parooli aegumist antud hoiatuspäevade arv.

Vaikeväärtused on toodud allpool.

Atribuut PASS_MAX_DAYS piirab päevade arvu, mille jooksul kasutaja saab oma parooli kasutada. Kui see väärtus on saavutatud või parool aegub, on kasutaja süsteemi sisselogimiseks sunnitud oma parooli muutma. Vaikimisi on see väärtus 99999, mis tähendab 273 aastat. Turvalisuse seisukohast pole sellel palju mõtet, kuna kasutaja saab oma parooli kogu elu jooksul kasutada.

Võite selle väärtuseks määrata, näiteks 30 päeva, nagu näidatud.

PASS_MAX_DAYS  30

Pärast 30 päeva möödumist on kasutaja sunnitud oma parooli vahetama.

Atribuut PASS_MIN_DAYS täpsustab minimaalse kestuse, mille jooksul kasutajad saavad oma parooli enne selle muutmist kasutada. Mida see tähendab? Näiteks kui selle väärtuse väärtuseks määratakse 15 päeva, ei saa kasutaja oma parooli enne 15 päeva möödumist uuesti muuta.

PASS_MAX_DAYS  15

Atribuut PASS_WARN_AGE määrab, mitu päeva saab kasutaja parooli eelseisva aegumise eest hoiatuse enne selle kehtivuse lõppemist. Näiteks saate selle määrata 7 päevaks, nagu näidatud.

PASS_MAX_DAYS  7

MÄRKUS. Need paroolikontrollerid ei tööta olemasolevate kontodega. Neid rakendatakse uutele kontodele, mis on loodud pärast reeglite määratlemist.

Enne faili /etc/pam.d/common-password muutmist looge varukoopia. Selles näites oleme loonud varukoopiafaili common-password.bak.

$ sudo cp /etc/pam.d/common-password /etc/pam.d/common-password.bak

Seejärel avage fail.

$ sudo vim /etc/pam.d/common-password 

Leidke allpool näidatud rida.

password        requisite          pam_pwquality.so retry=3

Uuesti proovimise suvand määrab maksimaalse arvu kordi, mil peate enne tõrke saamist sisestama õige parooli. Vaikimisi on see seatud väärtusele 3. See on vaid üks võimalus ja lisame mitu võimalust.

Lisage reale järgmised atribuudid:

minlen=10 difok=3 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1 reject_username 

Täpsustame need atribuudid.

  • minlen = 10: määrab parooli minimaalse vastuvõetava suuruse. Sel juhul 10 tähemärki.
  • difok = 3: see on maksimaalne märkide arv, mis sisaldub eelmises paroolis.
  • lcredit = -1: see on minimaalne väiketähtede arv, mis peaks paroolis olema.
  • ucredit = -1: see on maksimaalne väiketähtede arv, mis peaks paroolis olema.
  • dcredit = -1: paroolis määratletava minimaalse arvu numbrimärke.
  • ocredit = -1: minimaalne erimärkide arv, nt @, #, ja mis tuleks määratleda paroolis.
  • reject_username: see valik käivitab parooli tagasilükkamise, kui parool on kasutajanimi kas sirges või vastupidises vormingus.

Kui proovite luua uue kasutaja, mis ei vasta paroolipoliitikatele, satute selliste näidatud vigade juurde.

See lõpetab teema süsteemi turvalisuse ja turvalisuse aluste kohta üldiselt. Kogu peatükis oleme valgustanud põhilisi turvameetmeid, mida saate rakendada, et kaitsta oma Linuxi süsteemi pahatahtlike kasutajate, näiteks häkkerite või rahulolematute töötajate eest.