Algajate juhend SELinux'i kohta

Algajate juhend SELinux'i kohta

Artikli tĂ”lge on ette valmistatud OTUS kursuse ĂŒliĂ”pilaste jaoks. „Turvalisus Linuxis“

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:

  1. JĂ”ustav — juurdepÀÀsu keeldumine poliitikareeglite alusel.
  2. Looduslik — tegevuste logimine, mis rikuvad poliitikat, mis jĂ”ustamisel oleksid keelatud.
  3. Keelatud — SELinuxi tĂ€ielik vĂ€ljalĂŒlitamine.

Vaikimisi asetseb seadistused /etc/selinux/config

SELinuxi reĆŸiimide muutmine

Praeguse reĆŸiimi teadmiseks kĂ€ivitage

$ getenforce

ReĆŸiimi muutmiseks looduslikuks kĂ€ivitage jĂ€rgmine kĂ€sk

$ setenforce 0

vĂ”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=disabled

SELinuxi 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=permissive

PĂ€rast reĆŸiimi seadistamist jĂ”ustavaks, loome juurus tĂŒhja varjatud faili nimega .autorelabel

$ touch /.autorelabel

ja taaskÀivitame arvuti

$ init 6

MĂ€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 kaudu

NĂŒĂŒ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.log

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

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

ja leiate jÀrgmist

ftp_home_dir        -> off       Lubage ftp lugeda ja kirjutada faile kasutaja kodukaustas

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

port

$ netstat -anpZ | grep httpd

NĂ€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/html

PĂ€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_policy

Siit 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.pp

Meie 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

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster