Udhëzuesi për të fillestarët për SELinux

Udhëzuesi për të fillestarët për SELinux

Përkthimi i artikullit është përgatitur për studentët e kursit «Siguria e Linux»

SELinux ose Security Enhanced Linux është një mekanizëm i avancuar i kontrollit të aksesit, i zhvilluar nga Agjencia e Sigurisë Kombëtare të SHBA (NSA) për të parandaluar depërtimet e keqdashura. Ai zbatohet një model të detyruar (ose mandatar) të kontrollit të aksesit (angl. Mandatory Access Control, MAC) mbi modelin ekzistues diskrecional (ose selektiv) të kontrollit të aksesit (angl. Discretionary Access Control, DAC), që do të thotë lejet për lexim, shkruajtesë dhe ekzekutim.

SELinux ka tre mundësi operimi:

  1. Enforcing — ndalon aksesin mbi bazĂ«n e rregullave tĂ« politikĂ«s.
  2. Permissive — regjistron veprimet qĂ« shkelin politikĂ«n, tĂ« cilat nĂ« mĂ«nyrĂ«n enforcing do ishin ndaluar.
  3. Çaktivizuar — çaktivizimi i plotĂ« i SELinux.

Për default, cilësimet ndodhen në /etc/selinux/config

Modifikimi i mundësive të operimit të SELinux

Për të parë mundësinë aktuale, ekzekutoni

$ getenforce

Për të ndryshuar mundësinë në permissive, ekzekutoni komandën në vijim

$ setenforce 0

ose, për të ndryshuar mundësinë nga permissive në enforcing, ekzekutoni

$ setenforce 1

Nëse ju nevojitet të çaktivizoni plotësisht SELinux, atëherë mund ta bëni këtë vetëm përmes skedës së konfigurimit

$ vi /etc/selinux/config

Për ta çaktivizuar, ndryshoni parametrin SELINUX në këtë mënyrë:

SELINUX=disabled

Cilësimi i SELinux

Çdo skedĂ« dhe proces shĂ«nohet me kontekstin SELinux, i cili pĂ«rmban informacion shtesĂ« si pĂ«rdoruesi, roli, tipi, etj. NĂ«se e aktivizoni pĂ«r herĂ« tĂ« parĂ« SELinux, duhet fillimisht tĂ« konfiguroni kontekstin dhe etiketat. Procesi i vendosjes sĂ« etiketave dhe konteksteve njihet si etiketimi. PĂ«r tĂ« filluar etiketimin, nĂ« skedĂ«n e konfigurimit ndryshoni mundĂ«sinĂ« nĂ« permissive.

$ vi /etc/selinux/config
SELINUX=permissive

Pasi të keni vendosur mundësinë permissive, krijoni një skedë të fshehtë të zbrazët me emrin .autorelabel

$ touch /.autorelabel

dhe ri-ngarkoni kompjuterin

$ init 6

Shënim: ne përdorim mundësinë permissive për etiketim, pasi përdorimi i mundësisë enforcing mund të çojë në rënien e sistemit gjatë ri-ngarkimit.

Mos u shqetësoni, nëse ngarkimi ngec në ndonjë skedë, etiketimi merr disa kohë. Pasi të përfundojë etiketimi dhe ngarkimi i sistemit tuaj, mund të shkoni te skeda e konfigurimit dhe të vendosni mundësinë enforcing, si dhe të ekzekutoni:

$ setenforce 1

Tani keni aktivizuar me sukses SELinux në kompjuterin tuaj.

Monitorimi i logëve

Mund të keni pasur ndonjë problem gjatë etiketimit ose gjatë funksionimit të sistemit. Për të kontrolluar nëse SELinux juaj funksionon siç duhet dhe nuk po bllokon qasje në ndonjë port, aplikacion etj., nevojitet të shikoni logët. Logu i SELinux ndodhet në /var/log/audit/audit.log, por ju nuk keni nevojë ta lexoni tërësisht për të gjetur gabimet. Mund të përdorni mjetin audit2why për të gjetur gabimet. Ekzekutoni komandën e mëposhtme:

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

Si rezultat, do të merrni një listë gabimesh. Nëse nuk ka gabimesh në log, asnjë mesazh nuk do të shfaqet.

Konfigurimi i politikës SELinux

Politika SELinux është një grumbull rregullash që ndjek mekanizmi i sigurisë SELinux. Politika përcakton një set rregullash për një ambient të caktuar. Tani do të shqyrtojmë si të konfigurojmë politikat për të lejuar qasje në shërbime të ndaluara.

1. Vlera logjike (çelsa)

ÇelĂ«sat (booleans) lejojnĂ« tĂ« ndryshoni pjesĂ« tĂ« politikĂ«s gjatĂ« punĂ«s, pa nevojĂ«n pĂ«r tĂ« krijuar politika tĂ« reja. Ato lejojnĂ« tĂ« bĂ«ni ndryshime pa rindizjen ose rikompilimin e politikave SELinux.

Shembulli
Supozoni se duam të ofrojmë qasje në katalogun e shtëpisë së përdoruesit për FTP në lexim dhe shk write, dhe ne tashmë e kemi ndarë atë, por kur mundohemi të qasje, nuk shohim asgjë. Kjo ndodh sepse politika SELinux i ndalon serverit FTP të lexojë dhe të shkruajë në katalogun e shtëpisë së përdoruesit. Na nevojitet të ndryshojmë politikën që serveri FTP të mund të qaset në katalogët e shtëpisë. Le të shohim nëse ka ndonjë çelës për këtë duke ekzekutuar

$ semanage boolean -l

Kjo komandë do të japë një listë çelësash të disponueshëm me gjendjen e tyre aktuale (e aktivizuar/on ose e çaktivizuar/off) dhe përshkrimin. Mund të përcaktoni kërkimin tuaj duke shtuar grep për të gjetur rezultate që i përkasin vetëm ftp:

$ semanage boolean -l | grep ftp

dhe do të gjeni këtë

ftp_home_dir -> off       Lejo ftp të lexojë & shkruajë skedarin në katalogun e shtëpisë së përdoruesit

Ky çelës është i çaktivizuar, kështu që do ta aktivizojmë atë duke përdorur setsebool $ setsebool ftp_home_dir on

Tani demonin tonë ftp do të jetë në gjendje të qaset në katalogun e shtëpisë së përdoruesit.
Shënim: mund të merrni gjithashtu një listë të çelësave të disponueshëm pa përshkrim duke ekzekutuar getsebool -a

2. Etiketat dhe konteksti

Ky Ă«shtĂ« mĂ«nyra mĂ« e zakonshme pĂ«r tĂ« pĂ«rmbushur politikat SELinux. Çdo skedar, dosje, proces dhe port etiketohen me kontekstin SELinux:

  • PĂ«r skedarĂ«t dhe dosjet, etiketat ruhen si atribute tĂ« zgjeruara nĂ« sistemin e skedarĂ«ve dhe mund tĂ« shihen me komandĂ«n e mĂ«poshtme:
    $ ls -Z /etc/httpd
  • PĂ«r proceset dhe portet, etiketimi menaxhohet nga bĂ«rthama e sistemit, dhe mund tĂ« shihni kĂ«to etiketa nĂ« kĂ«tĂ« mĂ«nyrĂ«:

një proces

$ ps –auxZ | grep httpd

port

$ netstat -anpZ | grep httpd

Shembulli
Tani, le tĂ« shqyrtojmĂ« njĂ« shembull pĂ«r tĂ« kuptuar mĂ« mirĂ« etiketat dhe kontekstin. Supozoni se kemi serverin web, i cili nĂ« vend tĂ« dosjes /var/www/html/ ĐžŃĐżĐŸĐ»ŃŒĐ·ŃƒĐ”Ń‚ /home/dan/html/. SELinux do ta konsiderojĂ« kĂ«tĂ« njĂ« shkelje tĂ« politikĂ«s dhe nuk do tĂ« keni mundĂ«si tĂ« shihni faqet tuaja tĂ« internetit. Kjo Ă«shtĂ« sepse ne nuk kemi vendosur kontekstin e sigurisĂ« tĂ« lidhur me skedarĂ«t HTML. PĂ«r tĂ« parĂ« kontekstin e sigurisĂ« qĂ« Ă«shtĂ« nĂ« parazgjedhje, pĂ«rdorni komandĂ«n e mĂ«poshtme:

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

Këtu morëm httpd_sys_content_t si kontekst për skedarët html. Na nevojitet të vendosim këtë kontekst sigurie për dosjen tonë aktuale, e cila tani ka këtë kontekst:

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

Një komandë alternative për të kontrolluar kontekstin e sigurisë së një skedari ose dosjeje:

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

Ne gjithashtu do të përdorim semanage për të ndryshuar kontekstin, pasi të gjejmë kontekstin e sigurisë të duhur. Për të ndryshuar kontekstin e /home/dan/html, ekzekutoni komandat e mëposhtme:

$ 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

Pas ndryshimit të kontekstit me semanage, komanda restorecon do të ngarkojë kontekstin në parazgjedhje për skedarët dhe dosjet. Serveri ynë i internetit tani do të jetë në gjendje të lexojë skedarët nga dosja /home/dan/html, për shkak se konteksti i sigurisë për këtë dosje u ndryshua në httpd_sys_content_t.

3. Krijimi i politikave lokale

Mund tĂ« ndodhin situata ku metodat e mĂ«parshme janĂ« tĂ« papĂ«rdorshme pĂ«r ju, dhe ju merrni gabime (avc/denial) nĂ« audit.log. Kur ndodh kjo, duhet tĂ« krijoni njĂ« politikĂ« lokale (Local policy). TĂ« gjitha gabimet mund t’i gjeni duke pĂ«rdorur audit2why, siç u pĂ«rmend mĂ« sipĂ«r.

PĂ«r tĂ« eliminuar gabimet, mund tĂ« krijoni njĂ« politikĂ« lokale. PĂ«r shembull, nĂ«se marrim njĂ« gabim qĂ« lidhet me httpd (apache) ose smbd (samba), ne grep’ojmĂ« gabimet dhe krijojmĂ« njĂ« politikĂ« pĂ«r to:

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

KĂ«tu http_policy dhe smb_policy — janĂ« emrat e politikave lokale qĂ« krijuam. Tani na nevojitet tĂ« ngarkojmĂ« kĂ«to politika lokale tĂ« krijuara nĂ« politikĂ«n aktuale SELinux. Kjo mund tĂ« bĂ«het si mĂ« poshtĂ«:

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

Politikat tona lokale u ngarkuan, dhe nuk duhet të marrim më ndonjë avc apo denial në audit.log.

Kjo ishte përpjekja ime për t'ju ndihmuar të kuptoni SELinux. Shpresoj që pas leximit të këtij artikulli të ndiheni më të rehatshëm me SELinux.

Burimi: habr.com

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster