Leiðbeiningar fyrir byrjendur fyrir SELinux

Leiðbeiningar fyrir byrjendur fyrir SELinux

Þýðing á greininni unnin fyrir nemendur á námskeiðinu "Linux öryggi"

SELinux eða Security Enhanced Linux er aukið aðgangsstýringarkerfi þróað af bandarísku þjóðaröryggisstofnuninni (NSA) til að koma í veg fyrir illgjarn innbrot. Það útfærir þvingað (eða skyldubundið) aðgangsstýringarlíkan (English Mandatory Access Control, MAC) ofan á núverandi valkvæða (eða sértæka) líkan (English Discretionary Access Control, DAC), það er heimildir til að lesa, skrifa, framkvæma.

SELinux hefur þrjár stillingar:

  1. Þvinga — aðgangsbann byggt á stefnureglum.
  2. leyfilegt — halda skrá yfir aðgerðir sem brjóta í bága við stefnuna, sem væri bannað í framfylgdarhamnum.
  3. Fatlaðir — algjörlega slökkt á SELinux.

Sjálfgefið er að stillingarnar séu í /etc/selinux/config

Að breyta SELinux stillingum

Til að komast að núverandi stillingu skaltu keyra

$ getenforce

Til að breyta stillingunni í leyfilegt skaltu keyra eftirfarandi skipun

$ setenforce 0

eða, til að skipta um ham úr leyfilegt á framfylgja, framkvæma

$ setenforce 1

Ef þú þarft að slökkva alveg á SELinux, þá er þetta aðeins hægt að gera í gegnum stillingarskrána

$ vi /etc/selinux/config

Til að slökkva á, breyttu SELINUX færibreytunni sem hér segir:

SELINUX=disabled

Setja upp SELinux

Hver skrá og ferli er merkt með SELinux samhengi, sem inniheldur viðbótarupplýsingar eins og notanda, hlutverk, tegund osfrv. Ef þetta er í fyrsta skipti sem þú virkjar SELinux þarftu fyrst að stilla samhengið og merkin. Ferlið við að úthluta merki og samhengi er þekkt sem merking. Til að byrja að merkja, í stillingarskránni breytum við hamnum í leyfilegt.

$ vi /etc/selinux/config
SELINUX=permissive

Eftir að stillingin hefur verið stillt leyfilegt, búðu til tóma falna skrá í rótinni með nafninu autorelabel

$ touch /.autorelabel

og endurræstu tölvuna

$ init 6

Athugið: Við notum stillinguna leyfilegt fyrir merkingu, þar sem notkun hamsins framfylgja getur valdið því að kerfið hrynji við endurræsingu.

Ekki hafa áhyggjur ef niðurhalið festist á einhverri skrá, merking tekur smá stund. Þegar merkingu er lokið og kerfið þitt er ræst geturðu farið í stillingarskrána og stillt stillinguna framfylgjaog keyra líka:

$ setenforce 1

Þú hefur nú virkjað SELinux á tölvunni þinni.

Eftirlit með skrám

Þú gætir hafa rekist á villur við merkingu eða á meðan kerfið er í gangi. Til að athuga hvort SELinux þinn virkar rétt og hvort hann sé ekki að loka fyrir aðgang að neinni höfn, forriti osfrv., þarftu að skoða annálana. SELinux login er staðsett í /var/log/audit/audit.log, en þú þarft ekki að lesa allt til að finna villur. Þú getur notað audit2why tólið til að finna villur. Keyra eftirfarandi skipun:

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

Fyrir vikið færðu lista yfir villur. Ef engar villur voru í skránni munu engin skilaboð birtast.

Stillir SELinux stefnu

SELinux stefna er sett af reglum sem stjórna SELinux öryggiskerfi. Stefna skilgreinir sett af reglum fyrir tiltekið umhverfi. Nú munum við læra hvernig á að stilla reglur til að leyfa aðgang að bönnuðum þjónustu.

1. Rökrétt gildi (rofar)

Rofar (booleans) gera þér kleift að breyta hlutum stefnu á keyrslutíma, án þess að þurfa að búa til nýjar stefnur. Þeir gera þér kleift að gera breytingar án þess að endurræsa eða setja saman SELinux stefnur aftur.

Dæmi
Segjum að við viljum deila heimaskrá notanda í gegnum FTP lestur/skrifa, og við höfum þegar deilt henni, en þegar við reynum að fá aðgang að henni sjáum við ekkert. Þetta er vegna þess að SELinux stefna kemur í veg fyrir að FTP þjónn lesi og skrifar í heimaskrá notandans. Við þurfum að breyta stefnunni þannig að FTP þjónninn geti nálgast heimaskrár. Við skulum sjá hvort það eru einhverjir rofar fyrir þetta með því að gera

$ semanage boolean -l

Þessi skipun mun skrá tiltæka rofa með núverandi stöðu (kveikt eða slökkt) og lýsingu. Þú getur betrumbætt leitina þína með því að bæta við grep til að finna ftp-only niðurstöður:

$ semanage boolean -l | grep ftp

og þú munt finna eftirfarandi

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

Þessi rofi er óvirkur, svo við munum virkja hann með setsebool $ setsebool ftp_home_dir on

Nú mun ftp púkinn okkar geta fengið aðgang að heimaskrá notandans.
Athugið: Þú getur líka fengið lista yfir tiltæka rofa án lýsingar með því að gera getsebool -a

2. Merki og samhengi

Þetta er algengasta leiðin til að innleiða SELinux stefnu. Sérhver skrá, mappa, ferli og höfn eru merkt með SELinux samhenginu:

  • Fyrir skrár og möppur eru merki geymd sem útbreiddir eiginleikar í skráarkerfinu og hægt er að skoða þau með eftirfarandi skipun:
    $ ls -Z /etc/httpd
  • Fyrir ferla og höfn er merkingunni stjórnað af kjarnanum og þú getur skoðað þessi merki sem hér segir:

ferlið

$ ps –auxZ | grep httpd

höfnin

$ netstat -anpZ | grep httpd

Dæmi
Nú skulum við skoða dæmi til að skilja betur merki og samhengi. Segjum að við höfum vefþjón sem, í staðinn fyrir möppu /var/www/html/ использует /home/dan/html/. SELinux mun líta á þetta sem brot á stefnu og þú munt ekki geta skoðað vefsíðurnar þínar. Þetta er vegna þess að við höfum ekki stillt öryggissamhengið sem tengist HTML skránum. Til að skoða sjálfgefið öryggissamhengi skaltu nota eftirfarandi skipun:

$ ls –lz /var/www/html
 -rw-r—r—. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/

Hér fengum við httpd_sys_content_t sem samhengi fyrir html skrár. Við þurfum að stilla þetta öryggissamhengi fyrir núverandi möppu okkar, sem hefur eftirfarandi samhengi eins og er:

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

Önnur skipun til að athuga öryggissamhengi skráar eða möppu:

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

Við munum einnig nota semanage til að breyta samhenginu þegar við höfum fundið rétta öryggissamhengið. Til að breyta samhengi /home/dan/html skaltu keyra eftirfarandi skipanir:

$ 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

Eftir að samhenginu hefur verið breytt með því að nota semanage mun restorecon skipunin hlaða sjálfgefna samhenginu fyrir skrár og möppur. Vefþjónninn okkar mun nú geta lesið skrár úr möppunni /home/dan/htmlvegna þess að öryggissamhengi þessarar möppu hefur verið breytt í httpd_sys_content_t.

3. Búðu til staðbundnar stefnur

Það geta komið upp aðstæður þar sem ofangreindar aðferðir gagnast þér ekki og þú færð villur (avc/denial) í audit.log. Þegar þetta gerist þarftu að búa til staðbundna stefnu. Þú getur fundið allar villur með því að nota audit2why, eins og lýst er hér að ofan.

Þú getur búið til staðbundna stefnu til að leysa villur. Til dæmis fáum við villu sem tengist httpd (apache) eða smbd (samba), við gripum villurnar og búum til stefnu fyrir þær:

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

Hér http_policy и smb_policy eru nöfn sveitarfélaganna sem við bjuggum til. Nú þurfum við að hlaða þessum búnu staðbundnu stefnum inn í núverandi SELinux stefnu. Þetta er hægt að gera á eftirfarandi hátt:

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

Staðbundnum reglum okkar hefur verið hlaðið niður og við ættum ekki lengur að fá nein avc eða afneitun í audit.log.

Þetta var tilraun mín til að hjálpa þér að skilja SELinux. Ég vona að eftir að hafa lesið þessa grein mun þér líða betur með SELinux.

Heimild: www.habr.com

Bæta við athugasemd