Udhezues për fillestarët mbi SELinux

Udhezues për fillestarët mbi SELinux

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

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:

  1. Enforcing — ndalon qasjen nĂ« bazĂ« tĂ« rregullave tĂ« politikĂ«s.
  2. Permissive — regjistron veprimet qĂ« shkelin politikĂ«n, tĂ« cilat nĂ« mĂ«nyrĂ«n enforcing do ishin tĂ« ndaluara.
  3. 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

$ getenforce

Për të ndryshuar mënyrën në permissive, ekzekutoni komandën e mëposhtme

$ setenforce 0

ose, 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=disabled

Për ta çaktivizuar, ndryshoni parametrin SELINUX si më poshtë:

Konfigurimi i SELinux permissive.

$ vi /etc/selinux/config
SELINUX=permissive

Pas vendosjes së modit permissive, krijojmë një skedar të zbrazët të fshehtë me emrin .autorelabel

$ touch /.autorelabel

dhe rindezim kompjuterin

$ init 6

Shë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:

, ekzekutoni

Tani 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.log

Si 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 -l

Kjo 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 ftp

dhe do të gjeni të volgende

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

Ky 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 httpd

port

$ netstat -anpZ | grep httpd

Shembuj
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/html

Pasi 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_policy

KĂ«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.pp

Politikat 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

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