
Përkthimi i artikullit është përgatitur për studentët e kursit
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:
- Enforcing â ndalon aksesin mbi bazĂ«n e rregullave tĂ« politikĂ«s.
- Permissive â regjistron veprimet qĂ« shkelin politikĂ«n, tĂ« cilat nĂ« mĂ«nyrĂ«n enforcing do ishin ndaluar.
- Ă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
$ getenforcePër të ndryshuar mundësinë në permissive, ekzekutoni komandën në vijim
$ setenforce 0ose, për të ndryshuar mundësinë nga permissive në enforcing, ekzekutoni
$ setenforce 1Në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/configPër ta çaktivizuar, ndryshoni parametrin SELINUX në këtë mënyrë:
SELINUX=disabledCilë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=permissivePasi të keni vendosur mundësinë permissive, krijoni një skedë të fshehtë të zbrazët me emrin .autorelabel
$ touch /.autorelabeldhe ri-ngarkoni kompjuterin
$ init 6Shë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 1Tani 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.logSi 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 -lKjo 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 ftpdhe do të gjeni këtë
ftp_home_dir -> off Lejo ftp të lexojë & shkruajë skedarin në katalogun e shtëpisë së përdoruesitKy ç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 httpdport
$ netstat -anpZ | grep httpdShembulli
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/htmlPas 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_policyKĂ«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.ppPolitikat 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
