SELinux vadovas pradedantiesiems

SELinux vadovas pradedantiesiems

Kurso studentams parengto straipsnio vertimas "Linux sauga"

SELinux arba Security Enhanced Linux yra patobulintas prieigos kontrolės mechanizmas, sukurtas JAV Nacionalinės saugumo agentūros (NSA), kad būtų išvengta kenkėjiškų įsilaužimų. Jis įgyvendina priverstinį (arba privalomą) prieigos kontrolės modelį (angl. Mandatory Access Control, MAC), papildantį esamą diskrecinį (arba atrankinį) modelį (angl. Discretionary Access Control, DAC), ty leidimus skaityti, rašyti, vykdyti.

SELinux turi tris režimus:

  1. Vykdymas — prieigos atsisakymas remiantis politikos taisyklėmis.
  2. Leidžiantis — politiką pažeidžiančių veiksmų žurnalo vedimas, kuris būtų draudžiamas vykdymo režimu.
  3. Išjungtas - visiškai išjungti SELinux.

Pagal numatytuosius nustatymus nustatymai yra /etc/selinux/config

SELinux režimų keitimas

Norėdami sužinoti esamą režimą, paleiskite

$ getenforce

Norėdami pakeisti režimą į leistiną, paleiskite šią komandą

$ setenforce 0

arba, norėdami pakeisti režimą iš leidžiamas apie vykdymo, vykdyti

$ setenforce 1

Jei reikia visiškai išjungti SELinux, tai galima padaryti tik naudojant konfigūracijos failą

$ vi /etc/selinux/config

Norėdami išjungti, pakeiskite SELINUX parametrą taip:

SELINUX=disabled

SELinux nustatymas

Kiekvienas failas ir procesas yra pažymėti SELinux kontekstu, kuriame yra papildomos informacijos, tokios kaip vartotojas, vaidmuo, tipas ir kt. Jei pirmą kartą įgalinate SELinux, pirmiausia turėsite sukonfigūruoti kontekstą ir etiketes. Etikečių ir konteksto priskyrimo procesas žinomas kaip žymėjimas. Norėdami pradėti žymėjimą, konfigūracijos faile pakeičiame režimą į leidžiamas.

$ vi /etc/selinux/config
SELINUX=permissive

Nustačius režimą leidžiamas, sukurkite tuščią paslėptą failą šaknyje su pavadinimu autorelabel

$ touch /.autorelabel

ir iš naujo paleiskite kompiuterį

$ init 6

Pastaba: mes naudojame režimą leidžiamas žymėjimui, nuo režimo naudojimo vykdymo gali sukelti sistemos gedimą perkrovimo metu.

Nesijaudinkite, jei atsisiuntimas užstringa kokiame nors faile, žymėjimas užtrunka. Kai žymėjimas bus baigtas ir jūsų sistema bus paleista, galite pereiti į konfigūracijos failą ir nustatyti režimą vykdymoir taip pat paleisti:

$ setenforce 1

Dabar sėkmingai įjungėte SELinux savo kompiuteryje.

Žurnalų stebėjimas

Žymėdami arba kai sistema veikia, galėjo atsirasti klaidų. Norėdami patikrinti, ar jūsų SELinux veikia tinkamai ir ar jis neblokuoja prieigos prie jokio prievado, programos ir pan., turite peržiūrėti žurnalus. SELinux žurnalas yra /var/log/audit/audit.log, bet nereikia perskaityti viso teksto, kad rastumėte klaidų. Klaidoms rasti galite naudoti įrankį audit2why. Vykdykite šią komandą:

$ audit2why < /var/log/audit/audit.log

Dėl to gausite klaidų sąrašą. Jei žurnale klaidų nebuvo, pranešimai nebus rodomi.

SELinux strategijos konfigūravimas

SELinux politika yra taisyklių rinkinys, valdantis SELinux saugos mechanizmą. Politika apibrėžia tam tikros aplinkos taisyklių rinkinį. Dabar sužinosime, kaip sukonfigūruoti politiką, leidžiančią pasiekti draudžiamas paslaugas.

1. Loginės reikšmės (jungikliai)

Jungikliai (loginės vertės) leidžia keisti politikos dalis vykdymo metu, nekuriant naujų strategijų. Jie leidžia atlikti pakeitimus neperkraunant ir nekompiliuojant SELinux politikos.

Pavyzdys
Tarkime, kad norime dalytis vartotojo namų katalogu per FTP skaitymą/rašymą ir jau bendriname, bet bandydami prieiti prie jo nieko nematome. Taip yra todėl, kad SELinux politika neleidžia FTP serveriui skaityti ir rašyti į vartotojo namų katalogą. Turime pakeisti politiką, kad FTP serveris galėtų pasiekti namų katalogus. Pažiūrėkime, ar yra kokių nors jungiklių

$ semanage boolean -l

Ši komanda pateiks galimų jungiklių sąrašą su jų dabartine būsena (įjungta arba išjungta) ir aprašymu. Galite patikslinti paiešką pridėdami grep, kad rastumėte tik ftp rezultatus:

$ semanage boolean -l | grep ftp

ir rasite toliau nurodytus dalykus

ftp_home_dir        -> off       Allow ftp to read & write file in user home directory

Šis jungiklis išjungtas, todėl įjungsime jį naudodami setsebool $ setsebool ftp_home_dir on

Dabar mūsų ftp demonas galės pasiekti vartotojo namų katalogą.
Pastaba: taip pat galite gauti galimų jungiklių sąrašą be aprašymo getsebool -a

2. Etiketės ir kontekstas

Tai yra labiausiai paplitęs SELinux politikos įgyvendinimo būdas. Kiekvienas failas, aplankas, procesas ir prievadas yra pažymėtas SELinux kontekstu:

  • Failų ir aplankų etiketės saugomos kaip išplėstiniai atributai failų sistemoje ir jas galima peržiūrėti naudojant šią komandą:
    $ ls -Z /etc/httpd
  • Procesų ir prievadų žymėjimą tvarko branduolys, o šias etiketes galite peržiūrėti taip:

procesą

$ ps –auxZ | grep httpd

uostas

$ netstat -anpZ | grep httpd

Pavyzdys
Dabar pažvelkime į pavyzdį, kad geriau suprastume etiketes ir kontekstą. Tarkime, kad turime ne katalogą, o žiniatinklio serverį /var/www/html/ использует /home/dan/html/. SELinux laikys tai politikos pažeidimu ir jūs negalėsite peržiūrėti savo tinklalapių. Taip yra todėl, kad nenustatėme su HTML failais susieto saugos konteksto. Norėdami peržiūrėti numatytąjį saugos kontekstą, naudokite šią komandą:

$ ls –lz /var/www/html
 -rw-r—r—. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/

Štai mes gavome httpd_sys_content_t kaip html failų kontekstą. Turime nustatyti šį saugos kontekstą mūsų dabartiniam katalogui, kuriame šiuo metu yra toks kontekstas:

-rw-r—r—. dan dan system_u:object_r:user_home_t:s0 /home/dan/html/

Alternatyvi komanda failo ar katalogo saugos kontekstui patikrinti:

$ semanage fcontext -l | grep '/var/www'

Mes taip pat naudosime semanažą, norėdami pakeisti kontekstą, kai tik surasime tinkamą saugos kontekstą. Norėdami pakeisti /home/dan/html kontekstą, paleiskite šias komandas:

$ semanage fcontext -a -t httpd_sys_content_t ‘/home/dan/html(/.*)?’
$ semanage fcontext -l | grep ‘/home/dan/html’
/home/dan/html(/.*)? all files system_u:object_r:httpd_sys_content_t:s0
$ restorecon -Rv /home/dan/html

Pakeitus kontekstą naudojant semanage, komanda restorecon įkels numatytąjį failų ir katalogų kontekstą. Mūsų žiniatinklio serveris dabar galės skaityti failus iš aplanko /home/dan/htmlnes šio aplanko saugos kontekstas buvo pakeistas į httpd_sys_content_t.

3. Sukurkite vietinę politiką

Gali būti situacijų, kai aukščiau pateikti metodai jums nenaudingi ir audit.log rasite klaidų (avc/denial). Kai taip nutinka, turite sukurti vietinę politiką. Visas klaidas galite rasti naudodami audit2why, kaip aprašyta aukščiau.

Galite sukurti vietinę politiką, kad išspręstumėte klaidas. Pavyzdžiui, gauname klaidą, susijusią su httpd (apache) arba smbd (samba), mes grep klaidas ir sukuriame joms politiką:

apache
$ grep httpd_t /var/log/audit/audit.log | audit2allow -M http_policy
samba
$ grep smbd_t /var/log/audit/audit.log | audit2allow -M smb_policy

Čia http_policy и smb_policy yra vietinės politikos, kurią sukūrėme, pavadinimai. Dabar turime įkelti šias sukurtas vietines strategijas į dabartinę SELinux politiką. Tai galima padaryti taip:

$ semodule –I http_policy.pp
$ semodule –I smb_policy.pp

Mūsų vietinė politika buvo atsisiųsta ir nebeturėtume gauti jokių avc arba denail audit.log.

Tai buvo mano bandymas padėti jums suprasti SELinux. Tikiuosi, kad perskaitę šį straipsnį jausitės patogiau naudodami SELinux.

Šaltinis: www.habr.com

Добавить комментарий