
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 следующим образом:
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
