SELinuxi juhend algajatele

SELinuxi juhend algajatele

Kursuse üliõpilastele koostatud artikli tõlge "Linuxi turvalisus"

SELinux ehk Security Enhanced Linux on täiustatud juurdepääsukontrolli mehhanism, mille on välja töötanud USA Riiklik Julgeolekuagentuur (NSA) pahatahtlike sissetungide vältimiseks. See rakendab sunnitud (või kohustuslikku) juurdepääsukontrolli mudelit (inglise keeles Mandatory Access Control, MAC) lisaks olemasolevale valikulisele (või valikulisele) mudelile (inglise Discretionary Access Control, DAC), st lugemis-, kirjutamis- ja käivitamisõigusi.

SELinuxil on kolm režiimi:

  1. Jõustamine — juurdepääsu keelamine poliitikareeglite alusel.
  2. Lubav — poliitikat rikkuvate toimingute logi pidamine, mis oleks jõustamisrežiimis keelatud.
  3. invaliidistunud — SELinuxi täielik keelamine.

Vaikimisi on sätted sees /etc/selinux/config

SELinuxi režiimide muutmine

Praeguse režiimi väljaselgitamiseks käivitage

$ getenforce

Režiimi muutmiseks lubavaks käivitage järgmine käsk

$ setenforce 0

või režiimi vahetamiseks lubav edasi jõustamisel, täitma

$ setenforce 1

Kui peate SELinuxi täielikult keelama, saate seda teha ainult konfiguratsioonifaili kaudu

$ vi /etc/selinux/config

Keelamiseks muutke SELINUXi parameetrit järgmiselt.

SELINUX=disabled

SELinuxi seadistamine

Iga fail ja protsess on tähistatud SELinuxi kontekstiga, mis sisaldab lisateavet nagu kasutaja, roll, tüüp jne. Kui lubate SELinuxi esimest korda, peate esmalt konfigureerima konteksti ja sildid. Siltide ja konteksti määramise protsessi nimetatakse märgistamiseks. Märgistamise alustamiseks muudame konfiguratsioonifailis režiimiks lubav.

$ vi /etc/selinux/config
SELINUX=permissive

Pärast režiimi seadistamist lubav, looge tühje peidetud faili nimega juure autorelabel

$ touch /.autorelabel

ja taaskäivitage arvuti

$ init 6

Märkus: kasutame režiimi lubav märgistamiseks, alates režiimi kasutamisest jõustamisel võib taaskäivitamise ajal põhjustada süsteemi krahhi.

Ärge muretsege, kui allalaadimine mõne faili külge kinni jääb, märgistamine võtab veidi aega. Kui märgistus on lõpule viidud ja teie süsteem on käivitatud, saate minna konfiguratsioonifaili ja seadistada režiimi jõustamiselja jookse ka:

$ setenforce 1

Olete nüüd SELinuxi oma arvutis edukalt lubanud.

Logide jälgimine

Võimalik, et märgistamise või süsteemi töötamise ajal ilmnesid vead. Kontrollimaks, kas teie SELinux töötab õigesti ja kas see ei blokeeri juurdepääsu ühelegi pordile, rakendusele jne, peate vaatama logisid. SELinuxi logi asub /var/log/audit/audit.log, kuid vigade leidmiseks ei pea te kogu asja läbi lugema. Vigade leidmiseks saate kasutada utiliiti audit2why. Käivitage järgmine käsk:

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

Selle tulemusena saate vigade loendi. Kui logis vigu ei esinenud, siis teateid ei kuvata.

SELinuxi poliitika konfigureerimine

SELinuxi poliitika on reeglite kogum, mis reguleerib SELinuxi turvamehhanismi. Reegel määratleb reeglistiku konkreetse keskkonna jaoks. Nüüd õpime, kuidas konfigureerida eeskirju, et võimaldada juurdepääs keelatud teenustele.

1. Loogilised väärtused (lülitid)

Lülitid (tõveväärtused) võimaldavad teil käitusajal poliitika osi muuta, ilma et peaksite uusi poliitikaid looma. Need võimaldavad teil muudatusi teha ilma SELinuxi reegleid taaskäivitama või uuesti kompileerimata.

Näide
Oletame, et tahame jagada kasutaja kodukataloogi FTP lugemise/kirjutamise kaudu ja oleme seda juba jaganud, kuid kui proovime sellele juurde pääseda, ei näe me midagi. Seda seetõttu, et SELinuxi poliitika takistab FTP-serveril kasutaja kodukataloogi lugemist ja sinna kirjutamist. Peame poliitikat muutma, et FTP-server saaks juurdepääsu kodukataloogidele. Tehes vaatame, kas selle jaoks on lüliteid

$ semanage boolean -l

See käsk loetleb saadaolevad lülitid koos nende praeguse oleku (sisse või välja) ja kirjeldusega. Otsingut saate täpsustada, lisades ftp-tulemuste leidmiseks grep:

$ semanage boolean -l | grep ftp

ja leiate järgmise

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

See lüliti on keelatud, seega lubame selle koos setsebool $ setsebool ftp_home_dir on

Nüüd pääseb meie ftp-deemon ligi kasutaja kodukataloogile.
Märkus. Seda tehes saate ka saadaolevate lülitite loendi ilma kirjelduseta getsebool -a

2. Sildid ja kontekst

See on kõige levinum viis SELinuxi poliitika rakendamiseks. Iga fail, kaust, protsess ja port on tähistatud SELinuxi kontekstiga:

  • Failide ja kaustade puhul salvestatakse sildid failisüsteemi laiendatud atribuutidena ja neid saab vaadata järgmise käsuga:
    $ ls -Z /etc/httpd
  • Protsesside ja portide puhul haldab märgistust kernel ja saate neid silte vaadata järgmiselt.

protsess

$ ps –auxZ | grep httpd

sadamasse

$ netstat -anpZ | grep httpd

Näide
Nüüd vaatame siltide ja konteksti paremaks mõistmiseks näidet. Oletame, et meil on kataloogi asemel veebiserver /var/www/html/ использует /home/dan/html/. SELinux peab seda eeskirjade rikkumiseks ja te ei saa oma veebilehti vaadata. Selle põhjuseks on asjaolu, et me pole määranud HTML-failidega seotud turbekonteksti. Vaikimisi turbekonteksti vaatamiseks 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/

Siit me jõudsime httpd_sys_content_t html-failide kontekstiks. Peame selle turvakonteksti määrama meie praeguse kataloogi jaoks, millel on praegu järgmine kontekst:

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

Alternatiivne käsk faili või kataloogi turbekonteksti kontrollimiseks:

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

Samuti kasutame konteksti muutmiseks semanage'i, kui oleme leidnud õige turbekonteksti. Faili /home/dan/html konteksti muutmiseks käivitage 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(/.*)? all files system_u:object_r:httpd_sys_content_t:s0
$ restorecon -Rv /home/dan/html

Pärast konteksti muutmist semanage'i abil laadib taastamiskäsk failide ja kataloogide vaikekonteksti. Meie veebiserver saab nüüd kaustast faile lugeda /home/dan/htmlkuna selle kausta turbekontekst on muudetud httpd_sys_content_t.

3. Looge kohalikud eeskirjad

Võib esineda olukordi, kus ülaltoodud meetoditest pole teile kasu ja saate audit.logis vigu (avc/denial). Kui see juhtub, peate looma kohaliku poliitika. Kõik vead leiate ülalkirjeldatud viisil audit2why abil.

Vigade lahendamiseks saate luua kohaliku poliitika. Näiteks saame veateate, mis on seotud httpd (apache) või smbd (samba), vead grep ja loome nende jaoks 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

see on http_policy и smb_policy on meie loodud kohalike poliitikate nimed. Nüüd peame need loodud kohalikud poliitikad praegusesse SELinuxi poliitikasse laadima. Seda saab teha järgmiselt.

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

Meie kohalikud eeskirjad on alla laaditud ja me ei peaks enam saama audit.logis avc-d ega denail-e.

See oli minu katse aidata teil SELinuxist aru saada. Loodan, et pärast selle artikli lugemist tunnete end SELinuxiga mugavamalt.

Allikas: www.habr.com

Lisa kommentaar