Mwongozo wa Kompyuta kwa SELinux

Mwongozo wa Kompyuta kwa SELinux

Tafsiri ya makala iliyotayarishwa kwa wanafunzi wa kozi "Usalama wa Linux"

SELinux au Linux Iliyoimarishwa Usalama ni utaratibu ulioboreshwa wa udhibiti wa ufikiaji uliotengenezwa na Wakala wa Usalama wa Kitaifa wa Marekani (NSA) ili kuzuia uvamizi mbaya. Inatumia kielelezo cha udhibiti wa ufikiaji wa kulazimishwa (au lazima) (Udhibiti wa Ufikiaji wa Lazima wa Kiingereza, MAC) juu ya modeli iliyopo ya hiari (au ya kuchagua) (Udhibiti wa Upataji wa Hiari wa Kiingereza, DAC), ambayo ni, ruhusa za kusoma, kuandika, kutekeleza.

SELinux ina njia tatu:

  1. Kuimarisha - kunyimwa ufikiaji kulingana na sheria za sera.
  2. ruhusu - kuweka kumbukumbu ya vitendo vinavyokiuka sera, ambavyo vitapigwa marufuku katika hali ya kutekeleza.
  3. Walemavu - Kuzima kabisa kwa SELinux.

Kwa chaguo-msingi mipangilio iko ndani /etc/selinux/config

Kubadilisha modes za SELinux

Ili kujua hali ya sasa, endesha

$ getenforce

Ili kubadilisha hali ya kuruhusu endesha amri ifuatayo

$ setenforce 0

au, kubadilisha hali kutoka kuruhusu juu ya kutekeleza, kutekeleza

$ setenforce 1

Ikiwa unahitaji kuzima kabisa SELinux, basi hii inaweza kufanyika tu kupitia faili ya usanidi

$ vi /etc/selinux/config

Ili kuzima, badilisha parameta ya SELINUX kama ifuatavyo:

SELINUX=disabled

Kuanzisha SELinux

Kila faili na mchakato umetiwa alama na muktadha wa SELinux, ambao una maelezo ya ziada kama vile mtumiaji, jukumu, aina, n.k. Ikiwa hii ni mara yako ya kwanza kuwezesha SELinux, utahitaji kwanza kusanidi muktadha na lebo. Mchakato wa kukabidhi lebo na muktadha unajulikana kama kuweka lebo. Kuanza kuashiria, katika faili ya usanidi tunabadilisha hali kuruhusu.

$ vi /etc/selinux/config
SELINUX=permissive

Baada ya kuweka mode kuruhusu, unda faili tupu iliyofichwa kwenye mzizi na jina autorelabel

$ touch /.autorelabel

na uanze tena kompyuta

$ init 6

Kumbuka: Tunatumia hali kuruhusu kwa kuashiria, tangu matumizi ya mode kutekeleza inaweza kusababisha mfumo kuacha kufanya kazi wakati wa kuwasha upya.

Usijali ikiwa upakuaji utakwama kwenye faili fulani, kuweka alama huchukua muda. Mara baada ya kuashiria kukamilika na mfumo wako umeanzishwa, unaweza kwenda kwenye faili ya usanidi na kuweka modi kutekelezana pia kukimbia:

$ setenforce 1

Sasa umewezesha SELinux kwa ufanisi kwenye kompyuta yako.

Ufuatiliaji wa magogo

Huenda umekumbana na baadhi ya hitilafu wakati wa kuweka alama au mfumo unapofanya kazi. Ili kuangalia ikiwa SELinux yako inafanya kazi kwa usahihi na ikiwa haizuii ufikiaji wa bandari yoyote, programu, nk, unahitaji kuangalia magogo. Logi ya SELinux iko ndani /var/log/audit/audit.log, lakini hauitaji kusoma jambo zima ili kupata makosa. Unaweza kutumia shirika la audit2why kupata makosa. Endesha amri ifuatayo:

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

Kama matokeo, utapokea orodha ya makosa. Ikiwa hapakuwa na makosa katika logi, basi hakuna ujumbe utaonyeshwa.

Inasanidi Sera ya SELinux

Sera ya SELinux ni seti ya sheria zinazosimamia utaratibu wa usalama wa SELinux. Sera inafafanua seti ya sheria kwa mazingira maalum. Sasa tutajifunza jinsi ya kusanidi sera ili kuruhusu ufikiaji wa huduma zilizopigwa marufuku.

1. Thamani za kimantiki (swichi)

Swichi (booleans) hukuruhusu kubadilisha sehemu za sera wakati wa utekelezaji, bila kulazimika kuunda sera mpya. Hukuruhusu kufanya mabadiliko bila kuwasha upya au kurejesha sera za SELinux.

Mfano
Wacha tuseme tunataka kushiriki saraka ya nyumbani ya mtumiaji kupitia FTP kusoma/kuandika, na tayari tumeishiriki, lakini tunapojaribu kuipata, hatuoni chochote. Hii ni kwa sababu sera ya SELinux inazuia seva ya FTP kusoma na kuandika kwa saraka ya nyumbani ya mtumiaji. Tunahitaji kubadilisha sera ili seva ya FTP iweze kufikia saraka za nyumbani. Wacha tuone ikiwa kuna swichi zozote za hii kwa kufanya

$ semanage boolean -l

Amri hii itaorodhesha swichi zinazopatikana na hali yao ya sasa (imewashwa au kuzima) na maelezo. Unaweza kuboresha utafutaji wako kwa kuongeza grep ili kupata matokeo ya ftp pekee:

$ semanage boolean -l | grep ftp

na utapata zifuatazo

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

Swichi hii imezimwa, kwa hivyo tutaiwezesha nayo setsebool $ setsebool ftp_home_dir on

Sasa daemon yetu ya ftp itaweza kufikia saraka ya nyumbani ya mtumiaji.
Kumbuka: Unaweza pia kupata orodha ya swichi zinazopatikana bila maelezo kwa kufanya getsebool -a

2. Lebo na muktadha

Hii ndiyo njia ya kawaida ya kutekeleza sera ya SELinux. Kila faili, folda, mchakato na bandari imewekwa alama na muktadha wa SELinux:

  • Kwa faili na folda, lebo huhifadhiwa kama sifa zilizopanuliwa kwenye mfumo wa faili na zinaweza kutazamwa kwa amri ifuatayo:
    $ ls -Z /etc/httpd
  • Kwa michakato na bandari, uwekaji lebo unasimamiwa na kernel, na unaweza kutazama lebo hizi kama ifuatavyo:

mchakato

$ ps –auxZ | grep httpd

bandari

$ netstat -anpZ | grep httpd

Mfano
Sasa hebu tuangalie mfano ili kuelewa vyema lebo na muktadha. Wacha tuseme tuna seva ya wavuti ambayo, badala ya saraka /var/www/html/ использует /home/dan/html/. SELinux itachukulia huu kama ukiukaji wa sera na hutaweza kuona kurasa zako za wavuti. Hii ni kwa sababu hatujaweka muktadha wa usalama unaohusishwa na faili za HTML. Ili kuona muktadha chaguo-msingi wa usalama, tumia amri ifuatayo:

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

Hapa tumepata httpd_sys_content_t kama muktadha wa faili za html. Tunahitaji kuweka muktadha huu wa usalama kwa saraka yetu ya sasa, ambayo kwa sasa ina muktadha ufuatao:

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

Amri mbadala ya kuangalia muktadha wa usalama wa faili au saraka:

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

Pia tutatumia semanage kubadilisha muktadha pindi tu tutakapopata muktadha sahihi wa usalama. Ili kubadilisha muktadha wa /home/dan/html, endesha amri zifuatazo:

$ 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

Baada ya muktadha kubadilishwa kwa kutumia semanage, amri ya kurejesha itapakia muktadha chaguo-msingi wa faili na saraka. Seva yetu ya wavuti sasa itaweza kusoma faili kutoka kwenye folda /home/dan/htmlkwa sababu muktadha wa usalama wa folda hii umebadilishwa kuwa httpd_sys_content_t.

3. Unda sera za mitaa

Kunaweza kuwa na hali ambapo mbinu zilizo hapo juu hazina matumizi kwako na unapata makosa (avc/denial) katika audit.log. Hili linapotokea, unahitaji kuunda sera ya ndani. Unaweza kupata makosa yote kwa kutumia audit2why, kama ilivyoelezwa hapo juu.

Unaweza kuunda sera ya ndani ili kutatua hitilafu. Kwa mfano, tunapata hitilafu inayohusiana na httpd (apache) au smbd (samba), tunakusanya makosa na kuyaundia sera:

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

Hapa http_policy и smb_policy ni majina ya sera za ndani tulizounda. Sasa tunahitaji kupakia sera hizi za ndani zilizoundwa kwenye sera ya sasa ya SELinux. Hii inaweza kufanywa kama ifuatavyo:

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

Sera zetu za ndani zimepakuliwa na hatufai tena kupokea avc au denail yoyote katika audit.log.

Hili lilikuwa jaribio langu la kukusaidia kuelewa SELinux. Natumaini kwamba baada ya kusoma makala hii utajisikia vizuri zaidi na SELinux.

Chanzo: mapenzi.com

Kuongeza maoni