L-implimentazzjoni tal-Kontroll Obbligatorju tal-Aċċess b'SELinux jew AppArmor fil-Linux


Biex tegħleb il-limitazzjonijiet ta' u biex iżżid il-mekkaniżmi ta' sigurtà pprovduti minn permessi standard ugo/rwx u listi ta' kontroll tal-aċċess, l-Aġenzija tas-Sigurtà Nazzjonali (NSA) tal-Istati Uniti fasslet metodu ta' Kontroll tal-Aċċess Mandatorju (MAC) flessibbli magħruf. bħala SELinux (qosor għal Security Enhanced Linux) sabiex tirrestrinġi fost affarijiet oħra, il-kapaċità tal-proċessi li jaċċessaw jew iwettqu operazzjonijiet oħra fuq oġġetti tas-sistema (bħal fajls, direttorji, portijiet tan-netwerk, eċċ) għall-inqas permess possibbli, filwaqt li jkunu għadhom li jippermettu modifiki aktar tard għal dan il-mudell.

MAC ieħor popolari u użat ħafna huwa AppArmor, li minbarra l-karatteristiċi pprovduti minn SELinux, jinkludi mod ta’ tagħlim li jippermetti lis-sistema \titgħallem kif taġixxi applikazzjoni speċifika, u li tistabbilixxi limiti billi tikkonfigura profili għall-użu sikur tal-applikazzjoni. .

F'CentOS 7, SELinux huwa inkorporat fil-kernel innifsu u huwa attivat fil-mod ta 'Infurzar awtomatikament (aktar dwar dan fit-taqsima li jmiss), għall-kuntrarju ta' openSUSE u Ubuntu li jużaw AppArmor.

F'dan l-artikolu ser nispjegaw l-essenzjali ta 'SELinux u AppArmor u kif tuża waħda minn dawn l-għodod għall-benefiċċju tiegħek skont id-distribuzzjoni magħżula tiegħek.

Introduzzjoni għal SELinux u Kif tużah fuq CentOS 7

Sigurtà Mtejba Linux jista 'jopera b'żewġ modi differenti:

  1. Infurzar: SELinux jiċħad aċċess ibbażat fuq ir-regoli tal-politika SELinux, sett ta' linji gwida li jikkontrollaw il-magna tas-sigurtà.
  2. Permissiv: SELinux ma jiċħadx aċċess, iżda ċaħdiet huma illoggjati għal azzjonijiet li kienu jkunu miċħuda li kieku taħdem fil-mod ta' infurzar.

SELinux jista' wkoll jiġi diżattivat. Għalkemm mhuwiex mod ta 'tħaddim innifsu, xorta huwa għażla. Madankollu, it-tagħlim kif tuża din l-għodda huwa aħjar milli sempliċement tinjoraha. Żommha f'moħħha!

Biex turi l-mod attwali ta' SELinux, uża getenforce. Jekk trid taqleb il-mod ta' tħaddim, uża setenforce 0 (biex issettjaha bħala Permissiva) jew setenforce 1 (Infurzar).

Peress li din il-bidla mhux se tibqa' ħaj minn reboot, ser ikollok bżonn teditja l-fajl /etc/selinux/config u tissettja l-varjabbli SELINUX biex jew enforcing, permissive, jew >diżattivat sabiex tinkiseb persistenza matul reboots:

Fuq nota tal-ġenb, jekk getenforce jirritorna Disabled, ikollok teditja /etc/selinux/config bil-mod ta' tħaddim mixtieq u terġa' tibda. Inkella, ma tkunx tista' tissettja (jew taqleb) il-mod ta' tħaddim b'setenforce.

Wieħed mill-użi tipiċi ta' setenforce jikkonsisti f'li taqleb bejn il-modi SELinux (minn infurzar għal permissiv jew bil-maqlub) biex issolvi l-problemi ta' applikazzjoni li qed taġixxi ħażin jew li ma taħdimx kif mistenni. Jekk taħdem wara li ssettja SELinux għall-mod Permissiv, tista 'tkun kunfidenti li qed tħares lejn kwistjoni ta' permessi SELinux.

Żewġ każijiet klassiċi fejn x'aktarx ikollna nittrattaw SELinux huma:

  1. Nibdlu l-port default fejn daemon jisma'.
  2. L-issettjar tad-direttiva DocumentRoot għal host virtwali barra minn /var/www/html.

Ejja nagħtu ħarsa lejn dawn iż-żewġ każijiet billi tuża l-eżempji li ġejjin.

Waħda mill-ewwel ħaġa li jagħmlu l-biċċa l-kbira tal-amministraturi tas-sistema sabiex jiżguraw is-servers tagħhom hija li jibdlu l-port fejn jisma' d-daemon SSH, l-aktar biex jiskoraġġixxu l-iskaners tal-port u l-attakkanti esterni. Biex tagħmel dan, nużaw id-direttiva tal-Port f'/etc/ssh/sshd_config segwit min-numru tal-port il-ġdid kif ġej (se nużaw il-port 9999 f'dan il-każ):

Port 9999

Wara li ppruvaw nibdew mill-ġdid is-servizz u niċċekkjaw l-istatus tiegħu naraw li naqas milli jibda:

# systemctl restart sshd
# systemctl status sshd

Jekk nagħtu ħarsa lejn /var/log/audit/audit.log, se naraw li sshd twaqqaf milli jibda fuq il-port 9999 minn SELinux minħabba li dak huwa port riżervat għas-servizz JBoss Management (messaġġi log SELinux jinkludu l-kelma AVC” sabiex ikunu jistgħu jiġu identifikati faċilment minn messaġġi oħra):

# cat /var/log/audit/audit.log | grep AVC | tail -1

F'dan il-punt ħafna nies probabbilment jiskonnettjaw SELinux iżda aħna le. Se naraw li hemm mod biex SELinux, u sshd jisimgħu fuq port differenti, biex jgħixu f'armonija flimkien. Kun żgur li għandek il-pakkett policycoreutils-python installat u ħaddem:

# yum install policycoreutils-python

Biex tara lista tal-portijiet fejn SELinux jippermetti li sshd jisma'. Fl-immaġni li ġejja nistgħu naraw ukoll li l-port 9999 kien riservat għal servizz ieħor u għalhekk ma nistgħux nużawh biex inħaddmu servizz ieħor għalissa:

# semanage port -l | grep ssh

Naturalment nistgħu nagħżlu port ieħor għal SSH, imma jekk aħna ċerti li mhux se jkollna bżonn nużaw din il-magna speċifika għal kwalunkwe servizz relatat ma 'JBoss, nistgħu mbagħad nimmodifikaw ir-regola SELinux eżistenti u nassenjaw dak il-port lil SSH minflok:

# semanage port -m -t ssh_port_t -p tcp 9999

Wara dan, nistgħu nużaw l-ewwel kmand semanage biex niċċekkjaw jekk il-port kienx assenjat b'mod korrett, jew l-għażliet -lC (qosra għal lista custom):

# semanage port -lC
# semanage port -l | grep ssh

Issa nistgħu nibdew mill-ġdid SSH u nikkonnettjaw mas-servizz billi tuża l-port 9999. Innota li din il-bidla SE tibqa 'ħajja minn reboot.

Jekk għandek bżonn twaqqaf host virtwali Apache billi tuża direttorju għajr /var/www/html bħala DocumentRoot (pereżempju, /websrv/sites/gabriel/public_html):

DocumentRoot “/websrv/sites/gabriel/public_html”

Apache se jirrifjuta li jservi l-kontenut minħabba li l-index.html ġie ttikkettjat bit-tip default_t SELinux, li Apache ma jistax jaċċessa:

# wget http://localhost/index.html
# ls -lZ /websrv/sites/gabriel/public_html/index.html

Bħal fl-eżempju preċedenti, tista 'tuża l-kmand li ġej biex tivverifika li din hija tabilħaqq kwistjoni relatata ma' SELinux:

# cat /var/log/audit/audit.log | grep AVC | tail -1

Biex tibdel it-tikketta ta' /websrv/sites/gabriel/public_html b'mod rikorsiv għal httpd_sys_content_t, agħmel:

# semanage fcontext -a -t httpd_sys_content_t "/websrv/sites/gabriel/public_html(/.*)?"

Il-kmand ta 'hawn fuq jagħti lil Apache aċċess għall-qari biss għal dak id-direttorju u l-kontenut tiegħu.

Fl-aħħarnett, biex tapplika l-politika (u tagħmel il-bidla tat-tikketta effettiva immedjatament), agħmel:

# restorecon -R -v /websrv/sites/gabriel/public_html

Issa għandek tkun tista' taċċessa d-direttorju:

# wget http://localhost/index.html

Għal aktar informazzjoni dwar SELinux, irreferi għall-gwida ta' Fedora 22 SELinux u Amministratur.