
Artikli tĂ”lge on ette valmistatud OTUS kursuse ĂŒliĂ”pilaste jaoks.
SELinux ehk Security Enhanced Linux on tĂ€iustatud ligipÀÀsu kontrollimise mehhanism, mille on vĂ€lja töötanud USA riiklik julgeolekuagentuur (NSA), et ennetada pahatahtlikke sissetunge. See rakendab kohustuslikku (vĂ”i mandaadiga) ligipÀÀsu kontrollimise mudelit (ingl. Mandatory Access Control, MAC) olemasoleva diskretsioonilise (vĂ”i valikuliselt) mudeli (ingl. Discretionary Access Control, DAC) pĂ”hjal, st lugemise, kirjutamise ja tĂ€itmise Ă”iguste ĂŒle.
SELinuxil on kolm reĆŸiimi:
- JĂ”ustav â juurdepÀÀsu keeldumine poliitikareeglite alusel.
- Looduslik â tegevuste logimine, mis rikuvad poliitikat, mis jĂ”ustamisel oleksid keelatud.
- Keelatud â SELinuxi tĂ€ielik vĂ€ljalĂŒlitamine.
Vaikimisi asetseb seadistused /etc/selinux/config
SELinuxi reĆŸiimide muutmine
Praeguse reĆŸiimi teadmiseks kĂ€ivitage
$ getenforceReĆŸiimi muutmiseks looduslikuks kĂ€ivitage jĂ€rgmine kĂ€sk
$ setenforce 0vĂ”i, et muuta reĆŸiim looduslikust jĂ”ustavaks jĂ€rgnevaga , kĂ€ivitage$ setenforce 1
Kui soovite tĂ€ielikult SELinuxi vĂ€lja lĂŒlitada, siis seda saab teha ainult konfigureerimisfaili kaudu$ vi /etc/selinux/config
Kseatmseks muutmiseks muutke parameetrit SELINUX jĂ€rgmiselt:Selinux'i vĂ€ljalĂŒlitamiseks muuda seade jĂ€rgmiselt:
SELINUX=disabledSELinuxi seadistus
Iga fail ja protsess mĂ€rgistatakse SELinuxi kontekstiga, mis sisaldab tĂ€iendavat teavet, nagu kasutaja, roll, tĂŒĂŒp jne. Kui aktiveerite SELinuxi esmakordselt, peate esmalt konteksti ja sildid seadistama. Siltide ja konteksti mÀÀramise protsessi tuntakse kui mĂ€rgistamine. Et alustada mĂ€rgistamist, muudame konfiguratsioonifailis reĆŸiimi jĂ”ustavaks.
$ vi /etc/selinux/config
SELINUX=permissivePĂ€rast reĆŸiimi seadistamist jĂ”ustavaks, loome juurus tĂŒhja varjatud faili nimega .autorelabel
$ touch /.autorelabelja taaskÀivitame arvuti
$ init 6MĂ€rkus: me kasutame reĆŸiimi jĂ”ustavaks mĂ€rgistamiseks, kuna reĆŸiimi , kĂ€ivitage kasutamine vĂ”ib sĂŒsteemi kĂ€ivitamisel kokku kukkuda.
Ărge muretsege, kui kĂ€ivitamine jÀÀb mĂ”nesse faili kinni, mĂ€rgistamine vĂ”tab aega. PĂ€rast mĂ€rgistamise ja sĂŒsteemi kĂ€ivitamise lĂ”petamist vĂ”ite minna konfiguratsioonifaili ja seadistada reĆŸiimi , kĂ€ivitage, samuti kĂ€ivitada:
Kui soovite tĂ€ielikult SELinuxi vĂ€lja lĂŒlitada, siis seda saab teha ainult konfigureerimisfaili kauduNĂŒĂŒd olete edukalt aktiveerinud SELinuxi oma arvutis.
JĂ€lgime logisid
VĂ”imalik, et teil on tekkinud mingid vead mĂ€rgistamise ajal vĂ”i sĂŒsteemi toimimise ajal. Kontrollimaks, kas teie SELinux töötab Ă”igesti ja kas see blokeerib juurdepÀÀsu mĂ”nele pordile, rakendusele jne, tuleb vaadata logisid. SELinuxi logi asub /var/log/audit/audit.log, kuid te ei pea seda tervikuna lugema, et vigu leida. Vigade leidmiseks saab kasutada utiliiti audit2why. KĂ€ivitage jĂ€rgmine kĂ€sk:
$ audit2why < /var/log/audit/audit.logTulemuseks saate vigade nimekirja. Kui logis ei olnud vigu, siis ei ĐŸŃĐŸĐ±ŃажаŃŃŃ ĂŒhtegi teadet.
SELinuxi poliitika seadistamine
SELinuxi poliitika on mÀÀratletud reeglite kogum, mille alusel juhindub SELinuxi turvamehhanism. Poliitika mÀÀratleb reeglite kogumi konkreetse keskkonna jaoks. NĂŒĂŒd uurime, kuidas seadistada poliitika, et lubada juurdepÀÀsu keelatud teenustele.
1. Loogilised vÀÀrtused (lĂŒlitid)
LĂŒlitid (booleans) vĂ”imaldavad muuta poliitika osi töö ajal, ilma et oleks vaja uusi poliitikaid luua. Need vĂ”imaldavad teha muudatusi ilma SELinuxi poliitikate taaskĂ€ivitamiseta vĂ”i uuesti kompileerimata.
NĂ€ide
Oletame, et soovime anda FTP kaudu lugemis- ja kirjutamisĂ”iguse kasutaja kodukaustale ning me oleme selle juba jaganud, kuid juurdepÀÀsu proovimisel ei nĂ€e me midagi. Selle pĂ”hjuseks on see, et SELinuxi poliitika keelab FTP-serveril kasutaja kodukausta lugemise ja kirjutamise. Peame poliitikat muutma, et FTP-server saaks kodukaustadele juurde pÀÀseda. Vaatame, kas selleks on olemas mingeid lĂŒliteid, kĂ€ivitades
$ semanage boolean -lSee kĂ€sk genereerib loendi saadaval olevatest lĂŒlititest koos nende praeguse olekuga (kas sisse lĂŒlitatud/on vĂ”i vĂ€lja lĂŒlitatud/off) ja kirjeldusega. Saate otsingut tĂ€psustada, lisades grep, et leida tulemusi, mis kuuluvad ainult ftp:ga seotud elementidele:
$ semanage boolean -l | grep ftpja leiate jÀrgmist
ftp_home_dir -> off Lubage ftp lugeda ja kirjutada faile kasutaja kodukaustasSee lĂŒliti on vĂ€lja lĂŒlitatud, seega aktiveerime selle kĂ€sklusega setsebool ftp_home_dir on
N nĂŒĂŒd suudab meie ftp-deemon pÀÀseda kasutaja kodukaustale.
MĂ€rkus: saate ka saada loendi saadaval olevatest lĂŒlititest ilma kirjelduseta, kĂ€ivitades getsebool -a
2. Sildid ja kontekst
See on kÔige levinum viis SELinuxi poliitika rakendamiseks. Iga fail, kaust, protsess ja port on mÀrgistatud SELinuxi kontekstiga:
- Failide ja kaustade puhul salvestatakse sildid laiendatud atribuutidena failisĂŒsteemis ning neid saab vaadata jĂ€rgmise kĂ€suga:
$ ls -Z /etc/httpd - Protsesside ja portide puhul haldab mÀrgistust kernel, ja neid silte saab vaadata jÀrgmiselt:
protsess.
$ ps âauxZ | grep httpdport
$ netstat -anpZ | grep httpdNĂ€ide
KĂ€ime nĂŒĂŒd lĂ€bi nĂ€ite, et paremini mĂ”ista silte ja konteksti. Oletame, et meil on veebiserver, mis ei ole kaust /var/www/html/ ĐžŃĐżĐŸĐ»ŃĐ·ŃĐ”Ń /home/dan/html/. SELinux peab seda poliitika rikkumiseks ja te ei saa oma veebilehti vaadata. See on tingitud sellest, et me ei ole seadnud HTML-failidega seotud turbekonteksti. Vaikimisi turbekonteksti kuvamiseks kasutage jĂ€rgmist kĂ€sku:
$ ls âlz /var/www/html
-rw-rârâ. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/Siin saime httpd_sys_content_t HTML-failide kontekstina. Me peame seadma selle turbekonteksti meie praegusele kaustale, mis on praegu jĂ€rgmise konteksti:
-rw-rârâ. dan dan system_u:object_r:user_home_t:s0 /home/dan/html/Alternatiivne kĂ€sk faili vĂ”i katalooge turvakonteksti kontrollimiseks:
$ semanage fcontext -l | grep '/var/www'Kasutame samuti semanage'i konteksti muutmiseks, kui oleme leidnud Ôige turvakonteksti. Katalooge /home/dan/html muutmiseks tÀitke jÀrgmised kÀsud:
$ semanage fcontext -a -t httpd_sys_content_t â/home/dan/html(/.*)?â
$ semanage fcontext -l | grep â/home/dan/htmlâ
/home/dan/html(/.*)? kÔik failid system_u:object_r:httpd_sys_content_t:s0
$ restorecon -Rv /home/dan/htmlPĂ€rast konteksti muutmist semanage'i abil laadib kĂ€sk restorecon vaikimisi konteksti failidele ja kataloogidele. Meie veebiserver suudab nĂŒĂŒd lugeda faile kaustast /home/dan/html, kuna selle kausta turvakontekst on muudetud httpd_sys_content_t.
3. Kohalik poliitika loomine
VĂ”ib esineda olukordi, kus ĂŒlaltoodud meetodid ei aita ja saate audit.log'is vigu (avc/denial). Kui see juhtub, tuleb luua kohalik poliitika (Local policy). KĂ”iki vigu saab leida audit2why kaudu, nagu eespool kirjeldatud.
Vigade kÔrvaldamiseks saab luua kohaliku poliitika. NÀiteks, kui saame vea, mis on seotud httpd (apache) vÔi smbd (samba) probleemiga, grep'ime vead ja loome neile poliitika:
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_policySiit http_policy ja smb_policy â need on kohalike poliitikate nimetused, mille oleme loonud. NĂŒĂŒd peame need loodud kohalikud poliitikad laadima praegusesse SELinuxi poliitikasse. Seda saab teha jĂ€rgmiselt:
$ semodule âI http_policy.pp
$ semodule âI smb_policy.ppMeie kohalikud poliitikad on laaditud, ja me ei peaks enam auditis.log kindlaks tegema avc vĂ”i denail.
See oli minu katse aidata teil SELinuxi mÔista. Loodetavasti tunnete pÀrast selle reaartikli lugemist end SELinuxiga mugavamalt.
Allikas: habr.com
