LFCA: Kā uzlabot Linux sistēmas drošību — 20. daļa


Kā mēs visi zinām, root lietotājs ir karalis, un viņam ir neierobežotas privilēģijas pār Linux sistēmu. Tomēr lietotāji, kas nav root lietotāji, var veikt tikai pamata uzdevumus. Turklāt sudo lietotājiem tiek piešķirtas tikai noteiktas root tiesības, kuras root lietotājs uzskata par piemērotu konkrētu paaugstinātu uzdevumu veikšanai.

Problēmas rodas, ja parastajiem lietotājiem ir nekontrolēta piekļuve resursiem vai viņi tiek netīši pārsūtīti uz sakņu sistēmu. Tas ir nopietns drošības risks, kas var izraisīt pārkāpumus, nevēlamas modifikācijas un, sliktākajā gadījumā, sistēmas avāriju. Vēl viens potenciāls risks ir tad, ja failiem ir mazāk drošas failu atļaujas. Piemēram, sāknēšanas failus ar rakstīšanas atļaujām globāliem lietotājiem var viegli modificēt vai sabojāt, kā rezultātā sistēma sabojājas.

[Jums varētu patikt arī: Noderīgi padomi datu un Linux nodrošināšanai]

Lai gan mēs varam ieviest fizisko, tīkla un datu drošību, ļaunprātīgs lietotājs var apiet drošības pasākumus un izmantot šādas drošības nepilnības. Šī iemesla dēļ failu sistēmas drošība ir jāuztver nopietni. Tas nodrošina papildu aizsardzības līmeni, saskaroties ar uzbrukumiem vai iekšējiem draudiem no ļaunprātīgu darbinieku puses, kuriem nav jāveic smags darbs, lai apietu drošības pasākumus, lai piekļūtu failiem.

Sistēmas drošības jomā mēs koncentrēsimies uz šādiem galvenajiem punktiem:

  • Piekļuves tiesības — lietotāju un grupu atļaujas.
  • Ieviesiet paroļu politikas, izmantojot PAM moduli.

Piekļuves tiesības — lietotāju un grupu atdalīšana

Jūs droši vien esat dzirdējuši, ka viss Linux tiek uzskatīts par failu. Un, ja tā nav, tas ir process. Katrs Linux sistēmas fails pieder lietotājam un grupas lietotājam. Tam ir arī failu atļaujas 3 lietotāju kategorijām: lietotājs (u), grupa (g) un citi (o). Atļaujas tiek attēlotas lasīšanas, rakstīšanas un izpildes (rwx) formātā katrai lietotāju kategorijai.

rwx        rwx	     rwx
User       Group     Others

Kā redzams iepriekš, komandā ls, kā parādīts attēlā.

$ ls -l

Atgādinot, atļaujas parasti ir apzīmētas ar deviņām rakstzīmēm. Pirmās trīs rakstzīmes apzīmē faktiskā lietotāja, kuram pieder fails, piekļuves tiesības. Otrā rakstzīmju kopa apzīmē faila grupas īpašnieka atļaujas. Visbeidzot, pēdējais komplekts citiem vai globāliem lietotājiem. Šīs rakstzīmes pastāvīgi atrodas lasīšanas, rakstīšanas, izpildes (rwx) secībā.

Pēc atļaujām mums ir lietotāju un grupu īpašumtiesības, kam seko faila vai direktorija lielums, modifikācijas datums un, visbeidzot, faila nosaukums.

Failu/direktoriju atļauju un īpašumtiesību maiņa

Lietotāju atļaujas failiem un direktorijiem var mainīt pēc vajadzības. Īkšķis ir izmantot vismazāko privilēģiju drošības principu. Vienkārši sakot, nodrošiniet, lai lietotāji iegūtu minimālās piekļuves tiesības vai atļaujas, kas nepieciešamas darba veikšanai.

Vismazāko privilēģiju princips ierobežo lietotājus tikai ar noteiktām lomām, tādējādi samazinot risku, ka uzbrucēji var piekļūt kritiskiem datiem un mainīt tos, izmantojot zemas sviras lietotāja kontu. Tas arī samazina uzbrukuma virsmu un ierobežo ļaunprātīgas programmatūras izplatīšanos gadījumā, ja uzbrucējs pārņem kontroli pār jūsu sistēmu.

Tāpēc, ja lietotājam ir nepieciešams tikai skatīt faila vai direktorija saturu, viņam nevajadzētu piešķirt izpildes vai rakstīšanas atļaujas. Pašā pamata līmenī piešķiriet tikai vismazākās atļaujas un īpašumtiesības, kas nepieciešamas lietotājam uzdevumu veikšanai. Mēs esam pievērsušies tam, kā modificēt lietotāju atļaujas un īpašumtiesības failos/direktorijās, izmantojot chmod un chown komandas Linux pamata komandu tēmā.

Lai sistēmas administratoram būtu vieglāk pārvaldīt atļaujas, īpašas atļaujas vai piekļuves tiesības var piešķirt veseliem direktorijiem. Viena no īpašajām atļaujām, ko var izmantot, lai ierobežotu faila vai direktorija dzēšanu un modificēšanu, ir lipīgais bits.

Gadījumā, ja koplietotajam direktorijam var piekļūt visi sistēmas vai tīkla lietotāji, pastāv potenciāls risks, ka daži lietotāji var izdzēst vai modificēt direktorijā esošos failus. Tas nav vēlams, ja vēlaties saglabāt direktorija satura integritāti. Un šeit parādās lipīgais bits.

Lipīgs bits ir īpaša faila atļauja, kas iestatīta failam vai visam direktorijam. Tas piešķir tikai šī faila/direktorija īpašniekam atļauju dzēst vai veikt izmaiņas faila vai direktorija saturā. Neviens cits lietotājs nevar izdzēst vai modificēt failu/direktoriju. Tam ir simboliskā vērtība t un skaitliskā vērtība 1000.

Lai direktorijā ieslēgtu lipīgo bitu, izmantojiet komandu chmod šādi:

$ chmod +t directory_name

Tālāk esošajā piemērā direktorijā ar nosaukumu tests esam pielietojuši lipīgu bitu. Direktorija gadījumā viss saturs pārmantos lipīgo bitu atļaujas. Varat pārbaudīt lipīgo bitu atļaujas, izmantojot komandu ls -ld. Noteikti ievērojiet simbolu t faila atļauju beigās.

$ ls -ld test

Ja cits lietotājs mēģina dzēst direktoriju vai modificēt failu direktorijā, viņam tiek parādīta kļūda Atļauja liegta.

Un tā ir stick bitu faila atļaujas būtība.

SUID (iestatīt lietotāja ID) ir vēl viena īpaša faila atļauja, kas ļauj citam parastam lietotājam palaist failu ar faila īpašnieka faila atļaujām. To parasti apzīmē ar simbolisku vērtību s lietotāja faila atļauju daļā, nevis x, kas apzīmē izpildes atļaujas. SUID skaitliskā vērtība ir 4000.

SGID (Iestatīt grupas ID) ļauj parastam lietotājam mantot failu grupas īpašnieka grupas atļaujas. Izpildes atļauju x vietā jūs redzēsiet s faila atļauju grupas daļā. SGID skaitliskā vērtība ir 2000.

Lai cik ērtas tās būtu, SUID un SGID atļaujas ir saistītas ar drošības riskiem, un no tām par katru cenu ir jāizvairās. Tas ir tāpēc, ka tie piešķir īpašas privilēģijas parastajiem lietotājiem. Ja iebrucējs, kurš uzdodas par parastu lietotāju, uzduras izpildāmam failam, kas pieder saknes lietotājam un kurā ir iestatīts SUID bits, viņš var izmantot šo nepilnību un izmantot sistēmu.

Lai atrastu visus failus ar SUID bitu, kas iestatīts operētājsistēmā Linux, palaidiet atrašanas komandu kā saknes lietotāju.

$ find / -perm -4000 type -f

Palaistajiem direktorijiem:

$ find / -perm -4000 type -d

Lai atrastu visus failus ar SGID bitu komplektu, izpildiet:

$ find / -perm -2000 type -f

Direktorijiem izpildiet:

$ find / -perm -2000 type -d

Lai failā noņemtu SUID bitu, palaidiet komandu chmod, kā parādīts attēlā:

$ chmod u-s /path/to/file

Lai failā noņemtu SGID bitu, izpildiet komandu:

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

Nav nekas neparasts, ka lietotāji iestata vājas paroles. Labs skaits ir iestatītas īsas, vienkāršas un viegli uzminējamas paroles, lai tās neaizmirstu pieteikšanās laikā. Lai gan tas ir ērti, vājas paroles var viegli uzlauzt, izmantojot brutāla spēka uzbrukuma skriptus.

PAM modulis (Pluggable Authentication Module) ir modulis, kas ļauj sistēmas administratoriem ieviest paroļu politikas Linux sistēmās. Lai to paveiktu, ir nepieciešams modulis pam_pwquality, ko nodrošina bibliotēka libpam_pwquality. Modulis pam_pwquality pārbauda paroles stiprumu, salīdzinot ar noteikumu kopumu un sistēmas vārdnīcu, un precīzi norāda vājās paroles izvēles.

Lai instalētu moduli pam_pwquality Ubuntu 18.04 un jaunākās versijās, palaidiet:

$ sudo apt install libpam_pwquality

RHEL/CentOS 8 palaidiet komandu:

$ sudo dnf install libpwquality

Konfigurācijas fails ir atrodams šādā vietā:

  • Debian-Systems — /etc/pam.d/common-password
  • RedHat Systems — /etc/pam.d/system-auth

Pirms sākam modificēt PAM konfigurācijas failu, vispirms apsveriet iespēju apkopot ieskatus par paroles novecošanas vadīklām.

Tos var atrast /etc/login.defs failā.

Failā ir šādas galvenās paroles vadīklas:

  • PASS_MAX_DAYS: maksimālais dienu skaits, ko var izmantot paroli.
  • PASS_MIN_DAYS: minimālais skaits. dienu skaits starp paroles maiņu.
  • PASS_WARN_AGE: dienu skaits, kad tiek sniegts brīdinājums, pirms beidzas paroles derīguma termiņš.

Noklusējuma vērtības ir norādītas zemāk.

Atribūts PASS_MAX_DAYS ierobežo dienu skaitu, kurā lietotājs var izmantot savu paroli. Kad šī vērtība tiek sasniegta vai beidzas paroles derīguma termiņš, lietotājs ir spiests mainīt savu paroli, lai pieteiktos sistēmā. Pēc noklusējuma šī vērtība ir iestatīta uz 99999, kas nozīmē 273 gadus. Tam nav lielas jēgas, ciktāl tas attiecas uz drošību, jo lietotājs var turpināt izmantot savu paroli visu mūžu.

Varat iestatīt jēgpilnu vērtību, piemēram, 30 dienas, kā parādīts attēlā.

PASS_MAX_DAYS  30

Pēc 30 dienām lietotājs būs spiests nomainīt savu paroli uz citu.

Atribūts PASS_MIN_DAYS norāda minimālo ilgumu, kādā lietotāji var izmantot savu paroli pirms tās maiņas. Ko tas nozīmē? Ja, piemēram, šī vērtība ir iestatīta uz 15 dienām, lietotājs nevarēs atkārtoti mainīt paroli, pirms būs pagājušas 15 dienas.

PASS_MAX_DAYS  15

Atribūts PASS_WARN_AGE norāda, cik dienu laikā lietotājs saņems brīdinājumu par tuvojošos paroles derīguma termiņa beigām, pirms tā beidzas. Piemēram, varat iestatīt 7 dienas, kā parādīts attēlā.

PASS_MAX_DAYS  7

PIEZĪME. Šīs paroles vadīklas nedarbojas ar jau esošiem kontiem. Tie tiek piemēroti tikai jauniem kontiem, kas izveidoti pēc noteikumu definēšanas.

Pirms /etc/pam.d/common-password faila rediģēšanas izveidojiet rezerves kopiju. Šajā piemērā esam izveidojuši dublējuma kopiju failu common-password.bak.

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

Pēc tam atveriet failu.

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

Atrodiet zemāk redzamo līniju.

password        requisite          pam_pwquality.so retry=3

Atkārtota mēģinājuma opcija iestata maksimālo reižu skaitu, kad jāievada pareizā parole, pirms tiek parādīts kļūdas ziņojums. Pēc noklusējuma tas ir iestatīts uz 3. Šī ir tikai viena iespēja, un mēs iekļausim vairākas iespējas.

Pievienojiet rindai šādus atribūtus:

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

Noskaidrosim šos atribūtus.

  • minlen=10: iestata minimālo pieņemamo paroles izmēru. Šajā gadījumā 10 rakstzīmes.
  • difok=3: tas ir maksimālais rakstzīmju skaits, kas atrodas iepriekšējā parolē.
  • lcredit=-1: šis ir minimālais mazo burtu skaits, kam ir jābūt parolē.
  • ucredit=-1: maksimālais mazo burtu skaits, kam jābūt parolei.
  • dcredit=-1: minimālais ciparu rakstzīmju skaits, kas jādefinē parolē.
  • ocredit=-1: minimālais speciālo rakstzīmju skaits, piemēram, @, # un &, kas jādefinē parolē.
  • reject_username: šī opcija aktivizē paroles noraidīšanu, ja parole ir lietotājvārds tiešā vai apgrieztā formātā.

Ja mēģināt izveidot jaunu lietotāju, kas neatbilst paroļu politikām, jūs saskarsities ar šādām kļūdām, kā parādīts attēlā.

Tas noslēdz tēmu par sistēmas drošību un drošības pamatiem kopumā. Visā nodaļā mēs esam izskaidrojuši pamata drošības pasākumus, kurus varat ieviest, lai aizsargātu savu Linux sistēmu no ļaunprātīgiem lietotājiem, piemēram, hakeriem vai neapmierinātiem darbiniekiem.