Hagaha bilowga ah ee SELinux

Hagaha bilowga ah ee SELinux

Turjumaada maqaalka loo diyaariyey ardayda koorsada "Linux Security"

SELinux ama Linux La xoojiyey ee Amniga waa hannaan kontarool oo la xoojiyey oo ay samaysay Hay'adda Ammaanka Qaranka Maraykanka (NSA) si looga hortago faragelinta xaasidnimada ah. Waxay fulisaa qaab lagu khasbay (ama qasab) gelitaanka qaabka (Ingiriisi Kantaroolka Helitaanka khasabka ah ee Ingiriisiga, MAC) oo korka ka ah moodeelka ikhtiyaariga ah (ama xulashada) ee jira (English Discretionary Access Control, DAC), taas oo ah, oggolaanshaha akhriska, qorista, fulinta.

SELinux waxay leedahay saddex nooc:

  1. Fulinta - diidmada gelitaanka ee ku salaysan xeerarka siyaasadda.
  2. ogolaansho - Haysashada diiwaanka ficillada ku xad-gudbay siyaasadda, kaas oo laga mamnuuci doono habka dhaqangelinta.
  3. naafada - gabi ahaanba curyaaminta SELinux.

Sida caadiga ah goobaha ayaa ku jira /etc/selinux/config

Beddelka qaababka SELinux

Si aad u ogaato qaabka hadda, orod

$ getenforce

Si aad qaabka ugu beddesho oggolaanshaha socodsii amarka soo socda

$ setenforce 0

ama, in laga beddelo qaabka oggolaansho on dhaqan gelinta, fulin

$ setenforce 1

Haddii aad u baahan tahay inaad gebi ahaanba joojiso SELinux, markaa tan waxaa lagu samayn karaa oo keliya faylka qaabeynta

$ vi /etc/selinux/config

Si aad u joojiso, u beddel qiyaasta SELINUX sida soo socota:

SELINUX=disabled

Dejinta SELinux

Fayl kasta iyo nidaam kasta waxaa lagu calaamadeeyay macnaha SELinux, kaas oo ka kooban macluumaad dheeri ah sida isticmaale, door, nooca, iwm. Haddii tani ay tahay markii ugu horreysay ee aad awood u siiso SELinux, waxaad marka hore u baahan doontaa inaad habayso macnaha guud iyo sumadaha. Habka meelaynta summadaha iyo macnaha guud waxa loo yaqaan calaamadaynta. Si loo bilaabo calaamadaynta, faylka qaabeynta waxaanu u bedelnaa qaabka oggolaansho.

$ vi /etc/selinux/config
SELINUX=permissive

Kadib dejinta qaabka oggolaansho, ku samee fayl qarsoon oo maran xididka magaca autorelabel

$ touch /.autorelabel

oo dib u bilow kombayutarka

$ init 6

Xusuusin: Waxaan isticmaalnaa qaabka oggolaansho calaamadaynta, tan iyo isticmaalka habka dhaqan gelinta waxay sababi kartaa in nidaamka burburo inta lagu jiro dib u kicinta.

Ha werwerin haddii soo dejintu ku dhegto faylalka qaar, calaamadayntu waxay qaadanaysaa wakhti. Marka calaamadaynta la dhammeeyo oo nidaamkaaga la furo, waxaad aadi kartaa faylka qaabeynta oo aad dejin kartaa qaabka dhaqan gelintaoo waliba orod:

$ setenforce 1

Waxaad hadda si guul leh ugu suurtagelisay SELinux kombuyuutarkaaga.

La socodka diiwaanka

Waxaa laga yaabaa inaad la kulantay khaladaad marka aad calaamadaynayso ama inta nidaamku socdo. Si aad u hubiso in SELinux-gaagu si sax ah u shaqeynayo iyo haddii aysan xannibin marin u helka deked kasta, codsi, iwm, waxaad u baahan tahay inaad eegto diiwaannada. Diiwaanka SELinux wuxuu ku yaalaa gudaha /var/log/audit/audit.log, laakiin uma baahnid inaad akhrido dhammaan si aad u ogaato khaladaadka. Waxaad isticmaali kartaa hantidhawrka2why utility si aad u hesho khaladaadka. Ku socodsii amarka soo socda:

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

Natiijo ahaan, waxaad heli doontaa liis khaladaad ah. Haddii aysan jirin khaladaad ku jira log, markaa farriimaha lama soo bandhigi doono.

Dejinta Siyaasadda SELinux

Siyaasadda SELinux waa xeerar nidaamiya habka amniga SELinux. Siyaasaddu waxay qeexdaa xeerar u dejisan deegaan gaar ah. Hadda waxaan baran doonaa sida loo habeeyo siyaasadaha si loogu oggolaado gelitaanka adeegyada la mamnuucay.

1. Qiimaha macquulka ah

Switches (booleans) waxay kuu ogolaanaysaa inaad bedesho qaybo ka mid ah siyaasada wakhtiga runtime, adoon samaynin siyaasado cusub. Waxay kuu oggolaanayaan inaad isbedel sameyso adigoon dib u kicin ama dib u ururin siyaasadaha SELinux.

Tusaale:
Aynu nidhaahno waxaan rabnaa inaan wadaagno tusaha guriga isticmaale iyada oo loo marayo akhrinta/qorista FTP, oo aan horay u wadaagnay, laakiin markaan isku dayno inaan galno, waxba ma aragno. Tani waa sababta oo ah siyaasadda SELinux waxay ka hortagtaa server-ka FTP inuu akhriyo oo u qoro tusaha guriga isticmaalaha. Waxaan u baahanahay inaan bedelno siyaasadda si server-ka FTP uu u galo hagaha guriga. Aynu aragno haddii ay jiraan wax dareemmo ah oo tan samaynta

$ semanage boolean -l

Amarkani wuxuu taxayaa daaranayaasha la heli karo oo wata xaaladdooda hadda (daran ama dansan) iyo sharraxaadda. Waxaad sifayn kartaa raadintaada adiga oo ku daraya grep si aad u hesho natiijooyinka ftp-kaliya:

$ semanage boolean -l | grep ftp

waxaadna ka heli doontaa kuwan soo socda

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

Furahani waa naafo, markaa waanu ku suurtagelin doonaa setsebool $ setsebool ftp_home_dir on

Hadda daemon-keena ftp wuxuu awood u yeelan doonaa inuu galo tusaha guriga isticmaalaha.
Fiiro gaar ah: Waxa kale oo aad heli kartaa liiska shixnadyada la heli karo iyada oo aan sifooyin lahayn adigoo samaynaya getsebool -a

2. Calaamadaha iyo macnaha guud

Tani waa habka ugu badan ee lagu hirgeliyo siyaasadda SELinux. Fayl kasta, gal, habraac iyo deked kasta waxaa lagu calaamadeeyay macnaha SELinux:

  • Faylasha iyo faylalka, sumadaha waxaa loo kaydiyaa sifada la dheereeyay ee nidaamka faylka waxaana lagu arki karaa amarka soo socda:
    $ ls -Z /etc/httpd
  • Nidaamyada iyo dekedaha, calaamadaynta waxaa maamula kernel-ka, waxaadna u arki kartaa summadan sida soo socota:

habka

$ ps –auxZ | grep httpd

dekedda

$ netstat -anpZ | grep httpd

Tusaale:
Hadda aan eegno tusaale si aan si fiican u fahamno calaamadaha iyo macnaha guud. Aynu nidhaahno waxaan haynaa server-ka shabakadda, beddelkii hagaha /var/www/html/ использует /home/dan/html/. SELinux waxay u qaadan doontaa inay tani tahay xad gudub siyaasad mana awoodid inaad aragto boggaga internetka. Tani waa sababta oo ah ma aanaan dejin xaaladda amniga ee la xidhiidha faylasha HTML. Si aad u aragto macnaha guud ee amniga, adeegso amarka soo socda:

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

Halkan waxaan ku helnay httpd_sys_content_t sida macnaha guud ee faylasha html Waxaan u baahanahay inaan dejino xaaladdan amniga ee hagahayaga hadda, kaas oo hadda leh macnaha soo socda:

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

Amar kale oo lagu hubinayo xaaladda amniga ee faylka ama hagaha:

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

Waxaan sidoo kale isticmaali doonaa semanage si aan u bedelno macnaha guud marka aan helno macnaha amniga saxda ah. Si aad u bedesho macnaha guud ee /home/dan/html, socodsii amarrada soo socda:

$ 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

Ka dib marka macnaha guud la beddelo iyadoo la adeegsanayo semanage, amarka soo celinta ayaa ku shubi doona macnaha guud ee faylasha iyo hagayaasha. Seerfarkeena mareegta ayaa hadda awood u yeelan doona in uu akhriyo faylasha galka /home/dan/htmlsababtoo ah xaaladda amniga ee galkan ayaa loo beddelay httpd_sys_content_t.

3. Samee siyaasado maxali ah

Waxaa laga yaabaa inay jiraan xaalado hababka kor ku xusan aysan faa'iido kuu lahayn oo aad ka hesho khaladaad (avc/dinial) gudaha audit.log. Marka tani dhacdo, waxaad u baahan tahay inaad abuurto siyaasad maxalli ah. Waxaad ku heli kartaa dhammaan khaladaadka adiga oo isticmaalaya audit2why, sida kor lagu sharaxay.

Waxaad abuuri kartaa siyaasad maxalli ah si aad u xalliso khaladaadka. Tusaale ahaan, waxaan helnaa qalad la xiriira httpd (apache) ama smbd (samba), waxaan qabnaa khaladaadka waxaana u abuurnaa siyaasad:

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

waa http_policy и smb_policy waa magacyada siyaasadaha deegaanka ee aan abuurnay. Hadda waxaan u baahanahay inaan ku shubno siyaasadaha maxaliga ah ee la abuuray siyaasadda SELinux ee hadda jirta. Tan waxaa loo samayn karaa sida soo socota:

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

Nidaamyadayada maxalliga ah waa la soo dejiyey mana aha inaan mar dambe helin wax avc ama diidmo ah audit.log.

Kani wuxuu ahaa isku daygii aan ku doonayay inaan kaa caawiyo inaad fahamto SELinux. Waxaan rajeynayaa in ka dib markaad akhrido maqaalkan aad dareemi doonto raaxo badan SELinux.

Source: www.habr.com

Add a comment