
Përkthimi i artikullit është përgatitur për studentët e kursit
SELinux ose Security Enhanced Linux është një mekanizëm i avancuar për menaxhimin e qasjes, i zhvilluar nga Agjencia Kombëtare e Sigurisë e SHBA (NSA) për të parandaluar përpjekjet e dëmshme të depërgimit. Ai zbaton një model të detyruar (ose mandator) të menaxhimit të qasjes (Mandatory Access Control, MAC) mbi një model ekzistues të përzgjedhur (Discretionary Access Control, DAC), domethënë lejet për lexim, shkruar dhe ekzekutim.
SELinux ka tre mënyra:
- Enforcing â ndalon qasjen nĂ« bazĂ« tĂ« rregullave tĂ« politikĂ«s.
- Permissive â regjistron veprimet qĂ« shkelin politikĂ«n, tĂ« cilat nĂ« mĂ«nyrĂ«n enforcing do ishin tĂ« ndaluara.
- Disabled â çaktivizimi i plotĂ« i SELinux.
Në parazgjedhje, cilësimet ndodhen në /etc/selinux/config
Ndryshimi i mënyrave të SELinux
Për të mësuar mënyrën aktuale, ekzekutoni
$ getenforcePër të ndryshuar mënyrën në permissive, ekzekutoni komandën e mëposhtme
$ setenforce 0ose, për të ndryshuar mënyrën nga permissive në nëenforcing
, ekzekutoni$ setenforce 1
Nëse ju nevojitet të çaktivizoni plotësisht SELinux, kjo mund të bëhet vetëm nëpërmjet skedarit të konfigurimit$ vi /etc/selinux/config
SELINUX=disabledPër ta çaktivizuar, ndryshoni parametrin SELINUX si më poshtë:
Konfigurimi i SELinux permissive.
$ vi /etc/selinux/config
SELINUX=permissivePas vendosjes së modit permissive, krijojmë një skedar të zbrazët të fshehtë me emrin .autorelabel
$ touch /.autorelabeldhe rindezim kompjuterin
$ init 6Shënim: ne përdorim modin permissive për etiketimin, pasi përdorimi i modit në mund të çojë në dështimin e sistemit gjatë rindezjes.
Mos u shqetësoni nëse ngarkimi ngec në ndonjë skedar, etiketimi merr disa kohë. Pas përfundimit të etiketimit dhe ngarkimit të sistemit tuaj, mund të shkoni te skedari i konfigurimit dhe të vendosni modin në, siç duhet të ekzekutoni:
, ekzekutoniTani e keni aktivizuar me sukses SELinux në kompjuterin tuaj.
Monitoroni loget
Mund të keni hasur disa gabime gjatë etiketimit ose në funksionin e sistemit. Për të kontrolluar nëse SELinux-i juaj funksionon siç duhet dhe nuk bllokon aksesin në ndonjë port, aplikacion etj., duhet të kontrolloni log-et. Log-u i SELinux-it ndodhet në /var/log/audit/audit.log, por nuk keni nevojë ta lexoni tërësisht për të gjetur gabimet. Mund të përdorni utilitarin 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 pasur gabime në log, nuk do të shfaqen mesazhe.
Konfigurimi i politikës SELinux
Politika SELinux është një grup rregullash të cilat udhëheqin mekanizmin e sigurisë SELinux. Politika përcakton një set rregullash për një mjedis të caktuar. Tani do të studiojmë se si të konfigurojmë politikat për të lejuar aksesin në shërbime të ndaluara.
1. Vlera logjike (ndërrues)
Ndërruesit (booleans) lejojnë ndryshimin e pjesëve të politikës gjatë funksionimit, pa pasur nevojë të krijoni politika të reja. Ata lejojnë të bëni ndryshime pa rinisjen ose rimëkëmbjen e politikave SELinux.
Shembuj
Supozoni se dëshirojmë të ofrojmë qasje në dosjen e shtëpisë së përdoruesit përmes FTP për lexim dhe shkruanim, dhe tashmë e kemi ndarë atë, por kur përpiqemi të qasemi, nuk shohim asgjë. Kjo ndodh sepse politika SELinux ndalon serverin FTP të lexojë dhe shkruajë në dosjen e shtëpisë së përdoruesit. Na nevojitet të ndryshojmë politikën në mënyrë që serveri FTP të mund të accedojë në dosjet e shtëpisë. Le të shohim nëse ka ndonjë kalues për këtë, duke e ekzekutuar
$ semanage boolean -lKjo komandë do të japë një listë të kaluesve të disponueshëm me gjendjen e tyre aktuale (aktive/on ose inaktive/off) dhe përshkrimin. Mund të sqaroni 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 të volgende
ftp_home_dir -> off Lejo ftp të lexojë & shkruajë skedarin në dosjen e shtëpisë së përdoruesitKy kalues është i çaktivizuar, kështu që do ta aktivizojmë atë me setsebool $ setsebool ftp_home_dir on
Tani, demonit tonë ftp do t'i lejohet të ketë qasje në dosjen e shtëpisë së përdoruesit.
Shënim: gjithashtu mund të merrni një listë të kaluesve të disponueshëm pa përshkrim, duke ekzekutuar getsebool -a
2. Etiketat dhe konteksti
Ky Ă«shtĂ« mĂ«nyra mĂ« e zakonshme pĂ«r tĂ« zbatuar politikĂ«n 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 skedareve dhe mund të shihen me komandën e mëposhtme:
$ ls -Z /etc/httpd - Për proceset dhe portet, etiketimi menaxhohet nga bërthama, dhe mund të shihni këto etiketa në këtë mënyrë:
proces
$ ps âauxZ | grep httpdport
$ netstat -anpZ | grep httpdShembuj
Tani le tĂ« shqyrtojmĂ« njĂ« shembull pĂ«r tĂ« kuptuar mĂ« mirĂ« etiketat dhe kontekstin. Le tĂ« supozoni se kemi server web, e cila nĂ« vend tĂ« dosjes /var/www/html/ ĐžŃĐżĐŸĐ»ŃĐ·ŃĐ”Ń /home/dan/html/. SELinux do ta konsideronte kĂ«tĂ« njĂ« shkelje tĂ« politikĂ«s, dhe nuk do tĂ« ishit nĂ« gjendje tĂ« shihni faqet tuaja tĂ« internetit. Kjo ndodh sepse nuk kemi caktuar kontekstin e sigurisĂ« qĂ« lidhet me skedarĂ«t HTML. PĂ«r tĂ« parĂ« kontekstin e sigurisĂ« pĂ«r default, 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 katalogu:
$ semanage fcontext -l | grep '/var/www'Ne gjithashtu do të përdorim semanage për të ndryshuar kontekstin, pasi të gjejmë kontekstin e duhur të sigurisë. 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(/.*)? të gjitha skedarët system_u:object_r:httpd_sys_content_t:s0
$ restorecon -Rv /home/dan/htmlPasi të jetë ndryshuar konteksti me semanage, komanda restorecon do të ngarkojë kontekstin e paracaktuar për skedarët dhe katalogët. Serveri ynë web tani do të jetë në gjendje të lexojë skedarët nga folderi /home/dan/html, pasi që konteksti i sigurisë për këtë folder u ndryshua në httpd_sys_content_t.
3. Krijimi i politikave lokale
Mund tĂ« ndodhin situata kur metodat e mĂ«sipĂ«rme janĂ« tĂ« paefektshme pĂ«r ju, dhe merrni gabime (avc/denial) nĂ« audit.log. Kur ndodh kjo, ju nevojitet tĂ« krijoni njĂ« politikĂ« lokale (Local policy). TĂ« gjitha gabimet mund tâi gjeni me audit2why, siç pĂ«rshkruhet mĂ« sipĂ«r.
PĂ«r tĂ« eliminimin e gabimeve, mund tĂ« krijoni njĂ« politikĂ« lokale. PĂ«r shembull, nĂ«se marrim njĂ« gabim nĂ« lidhje 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Ă« kemi krijuar. Tani na nevojitet t'i ngarkojmĂ« kĂ«to politika lokale tĂ« krijuara nĂ« politikĂ«n aktuale tĂ« SELinux. KĂ«tĂ« mund ta bĂ«jmĂ« si mĂ« poshtĂ«:
$ semodule âI http_policy.pp
$ semodule âI smb_policy.ppPolitikat tona lokale janĂ« ngarkuar, dhe nuk duhet tĂ« marrim mĂ« ndonjĂ« avc apo denail nĂ« audit.log.
Kjo ishte përpjekja ime për t'ju ndihmuar të kuptoni SELinux. Shpresoj se, pas leximit të këtij artikulli, do të ndiheni më të rehatshëm me SELinux.
Burimi: habr.com
