Kurssin opiskelijoille laaditun artikkelin käännös
SELinux tai Security Enhanced Linux on Yhdysvaltain kansallisen turvallisuusviraston (NSA) kehittämä parannettu kulunvalvontamekanismi, joka estää haitalliset tunkeutumiset. Se toteuttaa pakotetun (tai pakollisen) kulunvalvontamallin (English Mandatory Access Control, MAC) olemassa olevan harkinnanvaraisen (tai valikoivan) mallin (English Discretionary Access Control, DAC) päälle, toisin sanoen luku-, kirjoitus- ja suoritusoikeudet.
SELinuxilla on kolme tilaa:
- täytäntöönpanossa — pääsyn epääminen käytäntöjen perusteella.
- Salliva — pitää kirjaa toimista, jotka rikkovat käytäntöä, mikä olisi kiellettyä täytäntöönpanotilassa.
- Vammaiset - SELinuxin poistaminen kokonaan käytöstä.
Oletuksena asetukset ovat käytössä /etc/selinux/config
SELinux-tilojen vaihtaminen
Selvitä nykyinen tila suorittamalla
$ getenforce
Jos haluat muuttaa tilan sallivaksi, suorita seuraava komento
$ setenforce 0
tai tilan vaihtamiseksi salliva päälle täytäntöön, suorita
$ setenforce 1
Jos sinun on poistettava SELinux kokonaan käytöstä, se voidaan tehdä vain asetustiedoston kautta
$ vi /etc/selinux/config
Voit poistaa käytöstä muuttamalla SELINUX-parametria seuraavasti:
SELINUX=disabled
SELinuxin asetukset
Jokainen tiedosto ja prosessi on merkitty SELinux-kontekstilla, joka sisältää lisätietoja, kuten käyttäjä, rooli, tyyppi jne. Jos tämä on ensimmäinen kerta, kun otat SELinuxin käyttöön, sinun on ensin määritettävä konteksti ja tunnisteet. Tunnisteiden ja kontekstin määrittäminen tunnetaan nimellä merkintä. Merkitsemisen aloittamiseksi konfiguraatiotiedostossa muutamme tilaksi salliva.
$ vi /etc/selinux/config
SELINUX=permissive
Tilan asettamisen jälkeen salliva, luo tyhjään piilotettuun tiedostoon juurinimellä autorelabel
$ touch /.autorelabel
ja käynnistä tietokone uudelleen
$ init 6
Huomautus: Käytämme tilaa salliva merkitsemistä varten tilan käytöstä lähtien täytäntöön saattaa aiheuttaa järjestelmän kaatumisen uudelleenkäynnistyksen aikana.
Älä huoli, jos lataus juuttuu johonkin tiedostoon, merkitseminen kestää hetken. Kun merkintä on valmis ja järjestelmäsi on käynnistetty, voit siirtyä asetustiedostoon ja asettaa tilan täytäntöönja ajaa myös:
$ setenforce 1
Olet nyt onnistuneesti ottanut SELinuxin käyttöön tietokoneessasi.
Lokien seuranta
Olet saattanut kohdata virheitä merkinnän aikana tai järjestelmän ollessa käynnissä. Tarkistaaksesi, toimiiko SELinux oikein ja jos se ei estä pääsyä mihinkään porttiin, sovellukseen jne., sinun on katsottava lokit. SELinux-loki sijaitsee /var/log/audit/audit.log
, mutta sinun ei tarvitse lukea koko juttua löytääksesi virheitä. Voit etsiä virheitä audit2why-apuohjelman avulla. Suorita seuraava komento:
$ audit2why < /var/log/audit/audit.log
Tämän seurauksena saat luettelon virheistä. Jos lokissa ei ollut virheitä, viestejä ei näytetä.
SELinux-käytännön määrittäminen
SELinux-käytäntö on joukko sääntöjä, jotka ohjaavat SELinuxin suojausmekanismia. Käytäntö määrittelee joukon sääntöjä tietylle ympäristölle. Nyt opimme määrittämään käytännöt sallimaan pääsyn kiellettyihin palveluihin.
1. Loogiset arvot (kytkimet)
Kytkimien (booleans) avulla voit muuttaa käytännön osia ajon aikana ilman, että sinun tarvitsee luoda uusia käytäntöjä. Niiden avulla voit tehdä muutoksia ilman uudelleenkäynnistystä tai SELinux-käytäntöjen uudelleenkääntämistä.
Esimerkki
Oletetaan, että haluamme jakaa käyttäjän kotihakemiston FTP-luku-/kirjoitustoiminnolla, ja olemme jo jakaneet sen, mutta kun yritämme käyttää sitä, emme näe mitään. Tämä johtuu siitä, että SELinux-käytäntö estää FTP-palvelinta lukemasta ja kirjoittamasta käyttäjän kotihakemistoon. Meidän on muutettava käytäntöä, jotta FTP-palvelin voi käyttää kotihakemistoja. Katsotaan, onko tähän olemassa kytkimiä tekemällä
$ semanage boolean -l
Tämä komento näyttää käytettävissä olevat kytkimet niiden nykyisen tilan (päällä tai pois päältä) ja kuvauksen kanssa. Voit tarkentaa hakuasi lisäämällä grep löytääksesi vain ftp-tuloksia:
$ semanage boolean -l | grep ftp
ja löydät seuraavat
ftp_home_dir -> off Allow ftp to read & write file in user home directory
Tämä kytkin on poistettu käytöstä, joten otamme sen käyttöön setsebool $ setsebool ftp_home_dir on
Nyt ftp-demonimme voi päästä käyttäjän kotihakemistoon.
Huomautus: Voit myös saada luettelon käytettävissä olevista kytkimistä ilman kuvausta tekemällä getsebool -a
2. Tunnisteet ja konteksti
Tämä on yleisin tapa toteuttaa SELinux-käytäntö. Jokainen tiedosto, kansio, prosessi ja portti on merkitty SELinux-kontekstilla:
- Tiedostojen ja kansioiden tarrat tallennetaan laajennettuina attribuutteina tiedostojärjestelmään, ja niitä voidaan tarkastella seuraavalla komennolla:
$ ls -Z /etc/httpd
- Prosessien ja porttien merkintöjä hallitsee ydin, ja voit tarkastella näitä tarroja seuraavasti:
prosessi
$ ps –auxZ | grep httpd
portti
$ netstat -anpZ | grep httpd
Esimerkki
Katsotaanpa nyt esimerkkiä tunnisteiden ja kontekstin ymmärtämiseksi paremmin. Oletetaan, että meillä on web-palvelin hakemiston sijaan /var/www/html/ использует /home/dan/html/
. SELinux pitää tätä käytäntöjen vastaisena, etkä voi tarkastella verkkosivujasi. Tämä johtuu siitä, että emme ole määrittäneet HTML-tiedostoihin liittyvää suojauskontekstia. Voit tarkastella oletusarvoista suojauskontekstia käyttämällä seuraavaa komentoa:
$ ls –lz /var/www/html
-rw-r—r—. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/
Tässä olemme httpd_sys_content_t
html-tiedostojen kontekstina. Meidän on asetettava tämä suojauskonteksti nykyiselle hakemistollemme, jolla on tällä hetkellä seuraava konteksti:
-rw-r—r—. dan dan system_u:object_r:user_home_t:s0 /home/dan/html/
Vaihtoehtoinen komento tiedoston tai hakemiston suojauskontekstin tarkistamiseksi:
$ semanage fcontext -l | grep '/var/www'
Käytämme myös semanagea kontekstin muuttamiseksi, kun olemme löytäneet oikean suojauskontekstin. Jos haluat muuttaa /home/dan/html-kontekstia, suorita seuraavat komennot:
$ 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
Kun kontekstia on muutettu semanagen avulla, restorecon-komento lataa tiedostojen ja hakemistojen oletuskontekstin. Verkkopalvelimemme pystyy nyt lukemaan kansion tiedostoja /home/dan/html
koska tämän kansion suojauskonteksti on muutettu muotoon httpd_sys_content_t
.
3. Luo paikallisia käytäntöjä
Saattaa olla tilanteita, joissa yllä olevista menetelmistä ei ole sinulle hyötyä ja saat virheitä (avc/denial) audit.logissa. Kun näin tapahtuu, sinun on luotava paikallinen käytäntö. Löydät kaikki virheet käyttämällä audit2why-toimintoa, kuten yllä on kuvattu.
Voit luoda paikallisen käytännön virheiden ratkaisemiseksi. Saamme esimerkiksi httpd:hen (apache) tai smbd:hen (samba) liittyvän virheen, grep virheet ja luo niille käytännön:
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
Täällä http_policy
и smb_policy
ovat luomiemme paikallisten käytäntöjen nimiä. Nyt meidän on ladattava nämä luodut paikalliset käytännöt nykyiseen SELinux-käytäntöön. Tämä voidaan tehdä seuraavasti:
$ semodule –I http_policy.pp
$ semodule –I smb_policy.pp
Paikalliset käytäntömme on ladattu, emmekä saa enää avc- tai denail-ilmoituksia audit.logissa.
Tämä oli yritykseni auttaa sinua ymmärtämään SELinuxia. Toivon, että tämän artikkelin lukemisen jälkeen tunnet olosi mukavammaksi SELinuxin kanssa.
Lähde: will.com