SELinux-en Hastapenerako Gida

SELinux-en Hastapenerako Gida

Ikastaroko ikasleentzat prestatutako artikuluaren itzulpena "Linux segurtasuna"

SELinux edo Security Enhanced Linux AEBetako Segurtasun Agentziak (NSA) garatutako sarbide-kontrol-mekanismo hobetua da, intrusio gaiztoak saihesteko. Derrigorrezko (edo derrigorrezko) sarbide-kontrol-eredu bat ezartzen du (English Mandatory Access Control, MAC) dagoen eredu diskrezionalaren (edo selektiboa) gainean (English Discretionary Access Control, DAC), hau da, irakurtzeko, idazteko, exekutatzeko baimenak.

SELinux-ek hiru modu ditu:

  1. behartu — sarbide ukatzea politika-arauetan oinarrituta.
  2. Zilegi — Politika hausten duten ekintzen erregistroa gordetzea, betearazteko moduan debekatuta egongo litzatekeena.
  3. Desgaituta — SELinux erabat desgaitu.

Lehenespenez, ezarpenak sartuta daude /etc/selinux/config

SELinux moduak aldatzea

Uneko modua ezagutzeko, exekutatu

$ getenforce

Modu baimentzailea aldatzeko, exekutatu komando hau

$ setenforce 0

edo, modutik aldatzeko permisiboa on behartu, exekutatu

$ setenforce 1

SELinux guztiz desgaitu behar baduzu, konfigurazio fitxategiaren bidez bakarrik egin daiteke

$ vi /etc/selinux/config

Desgaitzeko, aldatu SELINUX parametroa honela:

SELINUX=disabled

SELinux konfiguratzea

Fitxategi eta prozesu bakoitza SELinux testuinguru batekin markatuta dago, eta informazio gehigarria dauka, hala nola erabiltzailea, rola, mota, etab. SELinux gaitzen duzun lehen aldia bada, lehendabizi testuingurua eta etiketak konfiguratu beharko dituzu. Etiketak eta testuingurua esleitzeko prozesua etiketa gisa ezagutzen da. Markatzen hasteko, konfigurazio fitxategian modura aldatzen dugu permisiboa.

$ vi /etc/selinux/config
SELINUX=permissive

Modua ezarri ondoren permisiboa, sortu ezkutuko fitxategi huts bat erroan izenarekin autorelabel

$ touch /.autorelabel

eta berrabiarazi ordenagailua

$ init 6

Oharra: modua erabiltzen dugu permisiboa markatzeko, modua erabili zenetik behartu berrabiaraztean sistema huts egitea eragin dezake.

Ez kezkatu deskarga fitxategiren batean trabatu egiten bada, markatzeak denbora pixka bat behar du. Behin markatzea amaitu eta zure sistema abiarazita, konfigurazio fitxategira joan eta modua ezar dezakezu behartueta exekutatu ere:

$ setenforce 1

Orain behar bezala gaitu duzu SELinux zure ordenagailuan.

Erregistroen jarraipena

Baliteke akats batzuk topatzea markatzerakoan edo sistema martxan dagoen bitartean. Zure SELinux-ek behar bezala funtzionatzen duen eta edozein ataka, aplikazio eta abarretarako sarbidea blokeatzen ari ez ote den egiaztatzeko, erregistroak begiratu behar dituzu. SELinux erregistroa bertan dago /var/log/audit/audit.log, baina ez duzu guztia irakurri behar akatsak aurkitzeko. Audit2why utilitatea erabil dezakezu akatsak aurkitzeko. Exekutatu komando hau:

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

Ondorioz, akatsen zerrenda jasoko duzu. Erregistroan akatsik egon ezean, ez da mezurik bistaratuko.

SELinux politika konfiguratzen

SELinux politika SELinux segurtasun mekanismoa arautzen duen arau multzo bat da. Politika batek ingurune zehatz baterako arau multzo bat definitzen du. Orain, debekatutako zerbitzuetarako sarbidea baimentzeko politikak nola konfiguratu ikasiko dugu.

1. Balio logikoak (etengailuak)

Etengailuek (booleanoak) exekuzio garaian politika baten zatiak alda ditzakezu, politika berririk sortu beharrik gabe. SELinux politikak berrabiarazi edo birkonpilatu gabe aldaketak egiteko aukera ematen dute.

Adibidea
Demagun erabiltzailearen hasierako direktorioa partekatu nahi dugula FTP irakurketa/idazketa bidez, eta dagoeneko partekatu dugula, baina sartzen saiatzen garenean, ez dugu ezer ikusten. Hau da SELinux politikak FTP zerbitzariak erabiltzailearen hasierako direktorioan irakurtzea eta idaztea eragozten duelako. Politika aldatu behar dugu, FTP zerbitzariak etxeko direktorioetara sartu ahal izateko. Ea eginda honetarako etengailurik dagoen

$ semanage boolean -l

Komando honek eskuragarri dauden etengailuak zerrendatuko ditu uneko egoerarekin (aktibatuta edo desaktibatuta) eta deskribapenarekin. Bilaketa hobetu dezakezu grep gehituta ftp-eko emaitzak aurkitzeko:

$ semanage boolean -l | grep ftp

eta honako hau aurkituko duzu

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

Etengailu hau desgaituta dago, beraz, honekin gaituko dugu setsebool $ setsebool ftp_home_dir on

Orain gure ftp deabrua erabiltzailearen hasierako direktoriora sartu ahal izango da.
Oharra: deskribapenik gabe erabilgarri dauden etengailuen zerrenda ere lor dezakezu eginda getsebool -a

2. Etiketak eta testuingurua

Hau da SELinux politika ezartzeko modurik ohikoena. Fitxategi, karpeta, prozesu eta atak bakoitza SELinux testuinguruarekin markatuta dago:

  • Fitxategi eta karpetetarako, etiketak atributu hedatu gisa gordetzen dira fitxategi-sisteman eta komando honekin ikus daitezke:
    $ ls -Z /etc/httpd
  • Prozesu eta portuetarako, etiketa nukleoak kudeatzen du, eta etiketa hauek honela ikus ditzakezu:

prozesua

$ ps –auxZ | grep httpd

portu

$ netstat -anpZ | grep httpd

Adibidea
Orain, ikus dezagun adibide bat etiketak eta testuingurua hobeto ulertzeko. Demagun web zerbitzari bat dugula direktorio baten ordez /var/www/html/ использует /home/dan/html/. SELinux-ek politika haustetzat hartuko du eta ezin izango dituzu zure web orriak ikusi. Hau da, ez dugulako ezarri HTML fitxategiekin lotutako segurtasun-testuingurua. Segurtasun-testuinguru lehenetsia ikusteko, erabili komando hau:

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

Hemen dugu httpd_sys_content_t html fitxategien testuinguru gisa. Segurtasun-testuinguru hau ezarri behar dugu gure uneko direktoriorako, gaur egun testuinguru hau duena:

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

Komando alternatibo bat fitxategi edo direktorio baten segurtasun-testuingurua egiaztatzeko:

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

Semanage ere erabiliko dugu testuingurua aldatzeko segurtasun testuinguru egokia aurkitu dugunean. /home/dan/html-ren testuingurua aldatzeko, exekutatu komando hauek:

$ 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

Testuingurua semanage erabiliz aldatu ondoren, restorecon komandoak fitxategien eta direktorioen testuinguru lehenetsia kargatuko du. Gure web zerbitzariak karpetako fitxategiak irakurri ahal izango ditu orain /home/dan/htmlkarpeta honen segurtasun-testuingurua hona aldatu delako httpd_sys_content_t.

3. Tokiko politikak sortu

Baliteke goiko metodoek ezertarako balio ez dizuten egoerak eta akatsak (avc/denial) jasoko dituzu audit.log-en. Hori gertatzen denean, tokiko politika bat sortu behar duzu. Audit2why erabiliz akats guztiak aurki ditzakezu, goian azaldu bezala.

Tokiko politika bat sor dezakezu akatsak konpontzeko. Adibidez, httpd (apache) edo smbd (samba) lotutako errore bat jasotzen dugu, akatsak konpontzen ditugu eta politika bat sortzen dugu:

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

Hemen http_policy и smb_policy sortu ditugun tokiko politiken izenak dira. Orain sortutako tokiko politika hauek egungo SELinux politikan kargatu behar ditugu. Hau honela egin daiteke:

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

Gure tokiko politikak deskargatu dira eta jada ez dugu avc edo denailrik jaso beharko audit.log-en.

Hau izan zen SELinux ulertzen laguntzeko nire saiakera. Artikulu hau irakurri ondoren SELinux-ekin erosoago sentituko zarela espero dut.

Iturria: www.habr.com

Gehitu iruzkin berria