Ikastaroko ikasleentzat prestatutako artikuluaren itzulpena
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:
- behartu — sarbide ukatzea politika-arauetan oinarrituta.
- Zilegi — Politika hausten duten ekintzen erregistroa gordetzea, betearazteko moduan debekatuta egongo litzatekeena.
- 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/html
karpeta 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