Ntuziaka onye mbido na SELinux

Ntuziaka onye mbido na SELinux

Ntụgharị asụsụ nke akụkọ a kwadebere maka ụmụ akwụkwọ nkuzi "Nchekwa Linux"

Linux SELinux ma ọ bụ Nchekwa Ekwadoro Linux bụ usoro njikwa ohere emelitere nke ụlọ ọrụ nchekwa mba US (NSA) mebere iji gbochie mbuso agha ọjọọ. Ọ na-emejuputa usoro njikwa mmanye (ma ọ bụ amanyere iwu) (English Mandatory Access Control, MAC) n'elu ụdị ikike (ma ọ bụ nhọrọ) dị (English Discretionary Access Control, DAC), ya bụ, ikike ịgụ, dee, mebie.

SELinux nwere ụdịdị atọ:

  1. Na-amanye - ohere ịgọnarị dabere na iwu iwu.
  2. ekwe - idobe ndekọ nke omume na-emebi iwu, nke a ga-amachibidoro na ọnọdụ mmanye.
  3. nwere nkwarụ - gbanyụọ SELinux zuru oke.

Site na ndabara ntọala abanyela /etc/selinux/config

Na-agbanwe ụdịdị SELinux

Iji chọpụta ọnọdụ dị ugbu a, gbaa ọsọ

$ getenforce

Ka ịgbanwee ọnọdụ ka ọ bụrụ ikike, mee iwu na-esonụ

$ setenforce 0

ma ọ bụ, ịgbanwe ọnọdụ site na masịrị on na-amanye, mebie

$ setenforce 1

Ọ bụrụ na ịchọrọ gbanyụọ SELinux kpamkpam, mgbe ahụ enwere ike ịme nke a naanị site na faịlụ nhazi

$ vi /etc/selinux/config

Iji gbanyụọ, gbanwee paramita SELINUX dị ka ndị a:

SELINUX=disabled

Ịtọlite ​​​​SELinux

Akara faịlụ na usoro ọ bụla nwere ọnọdụ SELinux, nke nwere ozi ndị ọzọ dịka onye ọrụ, ọrụ, ụdị, wdg. Ọ bụrụ na nke a bụ oge mbụ ị na-enyere SELinux aka, ị ga-ebu ụzọ hazie ọnọdụ na akara. Usoro ikenye akara na ihe gbara ya gburugburu ka a maara dị ka mkpado. Iji malite akara, na faịlụ nhazi anyị na-agbanwe ọnọdụ ka masịrị.

$ vi /etc/selinux/config
SELINUX=permissive

Mgbe ịtọchara ọnọdụ ahụ masịrị, mepụta faịlụ zoro ezo efu na mgbọrọgwụ nke nwere aha autorelabel

$ touch /.autorelabel

ma malitegharịa kọmputa ahụ

$ init 6

Mara: Anyị na-eji ọnọdụ masịrị maka akara, ebe ọ bụ na ojiji nke mode na-amanye nwere ike ime ka usoro ahụ daa n'oge nrụpụta.

Echegbula onwe gị ma ọ bụrụ na nbudata ahụ na-arapara n'ahụ ụfọdụ faịlụ, akara na-ewe oge. Ozugbo ịmechara akara na sistemụ gị, ị nwere ike ịga na faịlụ nhazi ma tọọ ọnọdụ ahụ na-amanyema gbaa ọsọ:

$ setenforce 1

Ị tinyela SELinux nke ọma na kọmputa gị ugbu a.

Nyochaa ndekọ

O nwere ike ịbụ na ị hụla mperi mgbe ị na-akara akara ma ọ bụ mgbe sistemụ na-arụ ọrụ. Iji lelee ma SELinux gị na-arụ ọrụ nke ọma ma ọ bụrụ na ọ naghị egbochi ịnweta ọdụ ụgbọ mmiri ọ bụla, ngwa, wdg, ịkwesịrị ileba anya na ndekọ. Ihe ndekọ SELinux dị na /var/log/audit/audit.log, mana ịkwesighi ịgụ ihe niile ka ịchọta mmejọ. Ị nwere ike iji utility audit2why ịchọta mperi. Gbaa iwu a:

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

N'ihi ya, ị ga-enweta ndepụta nke njehie. Ọ bụrụ na enweghị mperi na ndekọ ahụ, ọ nweghị ozi agaghị egosipụta.

Na-ahazi amụma SELinux

Amụma SELinux bụ usoro iwu na-achịkwa usoro nchekwa SELinux. Atumatu na-akọwapụta usoro iwu maka otu gburugburu ebe obibi. Ugbu a, anyị ga-amụta ka esi ahazi amụma iji kwe ka ịnweta ọrụ amachibidoro.

1. ụkpụrụ ezi uche dị na ya (mgbanwe)

Switches (booleans) na-enye gị ohere ịgbanwe akụkụ nke amụma n'oge oge, na-enweghị ịmepụta atumatu ọhụrụ. Ha na-enye gị ohere ịme mgbanwe na-enweghị ịmalitegharị ma ọ bụ chịkọta iwu SELinux.

Ihe nlele:
Ka anyị kwuo na anyị chọrọ ịkesa ndekọ ụlọ onye ọrụ site na FTP na-agụ / dee, anyị ekenyelarị ya, mana mgbe anyị gbalịrị ịnweta ya, anyị ahụghị ihe ọ bụla. Nke a bụ n'ihi na amụma SELinux na-egbochi sava FTP ịgụ na ide na ndekọ ụlọ onye ọrụ. Anyị kwesịrị ịgbanwe amụma ka sava FTP nwee ike ịnweta akwụkwọ ndekọ aha ụlọ. Ka anyị hụ ma ọ bụrụ na ọ nwere ihe mgba ọkụ maka nke a site n'ime

$ semanage boolean -l

Iwu a ga-edepụta mgbanwe ndị dị na ọnọdụ ha ugbu a (gbanyụọ ma ọ bụ gbanyụọ) yana nkọwa. Ị nwere ike imezigharị ọchụchọ gị site na ịgbakwunye grep iji chọta nsonaazụ naanị ftp:

$ semanage boolean -l | grep ftp

ma ị ga-ahụ ihe ndị a

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

Agbanyụrụ mgba ọkụ a, yabụ anyị ga-eji ya mee ya setsebool $ setsebool ftp_home_dir on

Ugbu a ftp daemon anyị ga-enwe ike ịnweta ndekọ ụlọ onye ọrụ.
Cheta na: Ị nwekwara ike nweta ndepụta nke switches dị na-enweghị nkọwa site na ime getsebool -a

2. Akara na okirikiri

Nke a bụ ụzọ a na-ahụkarị iji mejuputa amụma SELinux. Faịlụ ọ bụla, nchekwa, usoro na ọdụ ụgbọ mmiri nwere akara SELinux:

  • Maka faịlụ na nchekwa, a na-echekwa akara dị ka àgwà agbatịkwuru na sistemụ faịlụ ma enwere ike iji iwu na-esonụ lelee:
    $ ls -Z /etc/httpd
  • Maka usoro na ọdụ ụgbọ mmiri, kernel na-ejikwa akara, ma ị nwere ike ịlele akara ndị a dị ka ndị a:

usoro

$ ps –auxZ | grep httpd

ọdụ ụgbọ mmiri

$ netstat -anpZ | grep httpd

Ihe nlele:
Ugbu a, ka anyị leba anya n'ihe atụ iji ghọta nke ọma aha aha na gburugburu. Ka anyị kwuo na anyị nwere sava weebụ nke ahụ, kama ịbụ ndekọ /var/www/html/ использует /home/dan/html/. SELinux ga-ewere nke a dị ka mmebi iwu ma ị gaghị enwe ike ịlele ibe weebụ gị. Nke a bụ n'ihi na anyị edobeghị ọnọdụ nchekwa jikọtara na faịlụ HTML. Ka ilele ọnọdụ nchekwa ndabara, jiri iwu a:

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

Ebe anyị nwetara httpd_sys_content_t dị ka ọnọdụ maka faịlụ html. Anyị kwesịrị ịtọ ọnọdụ nchekwa a maka akwụkwọ ndekọ aha anyị ugbu a, nke nwere ọnọdụ ndị a ugbu a:

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

Iwu ọzọ iji lelee ọnọdụ nchekwa nke faịlụ ma ọ bụ ndekọ:

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

Anyị ga-ejikwa semanage gbanwee ihe gbara ya gburugburu ozugbo anyị chọtara ọnọdụ nchekwa ziri ezi. Ka ịgbanwee onodu nke /home/dan/html, mee iwu ndị a:

$ 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

Mgbe agbanwechara ọnọdụ ahụ site na iji semanage, iwu restorecon ga-ebu ọnọdụ ndabara maka faịlụ na akwụkwọ ndekọ aha. Sava webụ anyị ga-enwe ike ịgụ faịlụ na nchekwa /home/dan/htmln'ihi na agbanweela ọnọdụ nchekwa nchekwa nchekwa a ka ọ bụrụ httpd_sys_content_t.

3. Mepụta iwu obodo

Enwere ike ịnwe ọnọdụ ebe ụzọ ndị a dị n'elu na-abaghị uru nye gị ma nweta njehie (avc/ denial) na audit.log. Mgbe nke a mere, ịkwesịrị ịmepụta iwu mpaghara. Ị nwere ike ịchọta njehie niile site na iji audit2why, dịka akọwara n'elu.

Ị nwere ike ịmepụta amụma mpaghara iji dozie mperi. Dịka ọmụmaatụ, anyị na-enweta njehie metụtara httpd (apache) ma ọ bụ smbd (samba), anyị na-ehichapụ njehie ahụ wee mepụta iwu maka ha:

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

ọ bụ http_policy и smb_policy bụ aha iwu obodo anyị kere. Ugbu a, anyị kwesịrị ibunye amụma mpaghara ndị a mepụtara n'ime amụma SELinux dị ugbu a. Enwere ike ime nke a dị ka ndị a:

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

Ebudatala iwu obodo anyị na anyị ekwesịghịkwa ịnata avc ma ọ bụ denail na audit.log.

Nke a bụ mbọ m nyere gị aka ịghọta SELinux. Enwere m olileanya na mgbe ị gụsịrị isiokwu a, ị ga-enwekwu ahụ iru ala na SELinux.

isi: www.habr.com

Tinye a comment