He alakaʻi no ka mea hoʻomaka iā SELinux

He alakaʻi no ka mea hoʻomaka iā SELinux

Ka unuhi ʻana o ka ʻatikala i hoʻomākaukau ʻia no nā haumāna papa "Ka palekana Linux"

ʻO SELinux a i ʻole Security Enhanced Linux kahi mea hoʻohana i hoʻomohala ʻia e ka US National Security Agency (NSA) e pale aku i nā hoʻopiʻi ʻino. Hoʻokō ia i kahi hoʻohālike hoʻokele i koi ʻia (a kauoha ʻole paha) (English Mandatory Access Control, MAC) ma luna o ke kumu hoʻohālike (a i ʻole koho) (English Discretionary Access Control, DAC), ʻo ia hoʻi, nā ʻae e heluhelu, kākau, hoʻokō.

Loaʻa iā SELinux ʻekolu mau ʻano:

  1. Hooikaika ana - hōʻole komo ma muli o nā lula kulekele.
  2. ʻAe ʻae - ka mālama ʻana i kahi moʻolelo o nā hana e kūʻē i ke kulekele, i pāpā ʻia ma ke ʻano hoʻokō.
  3. ka polokalamu JavaScript - hoʻopau piha i ka SELinux.

Ma ka paʻamau, aia nā hoʻonohonoho /etc/selinux/config

Ke hoʻololi nei i nā ʻano SELinux

No ka ʻike ʻana i ke ʻano o kēia manawa, holo

$ getenforce

E hoʻololi i ke ʻano i ʻae ʻia e holo i kēia kauoha

$ setenforce 0

a i ʻole, e hoʻololi i ke ʻano mai e pili ana maluna o hooikaika ana, hoʻokō

$ setenforce 1

Inā pono ʻoe e hoʻopau loa iā SELinux, a laila hiki ke hana ʻia ma o ka faila hoʻonohonoho

$ vi /etc/selinux/config

No ka hoʻopau, hoʻololi i ka SELINUX parameter penei:

SELINUX=disabled

Ka hoʻonohonoho ʻana iā SELinux

Hōʻailona ʻia kēlā me kēia faila a me ke kaʻina hana me kahi pōʻaiapili SELinux, aia nā ʻike hou aʻe e like me ka mea hoʻohana, kuleana, ʻano, etc. Inā ʻo kēia kou manawa mua e hiki ai iā SELinux, pono ʻoe e hoʻonohonoho i ka pōʻaiapili a me nā lepili. ʻO ke kaʻina hana o ka hāʻawi ʻana i nā lepili a me ka pōʻaiapili i ʻike ʻia ʻo ke kau inoa ʻana. No ka hoʻomaka ʻana e mākaʻikaʻi, ma ka faila hoʻonohonoho mākou e hoʻololi i ke ʻano e pili ana.

$ vi /etc/selinux/config
SELINUX=permissive

Ma hope o ka hoʻonohonoho ʻana i ke ʻano e pili ana, hana i kahi faila huna ʻole i ke kumu me ka inoa autorelabel

$ touch /.autorelabel

a hoʻomaka hou i ke kamepiula

$ init 6

Nānā: Hoʻohana mākou i ke ʻano e pili ana no ka hoailona ana, mai ka hoohana ana i ke ano hooikaika ana hiki i ka ʻōnaehana ke hāʻule i ka wā reboot.

Mai hopohopo inā paʻa ka hoʻoiho ʻana ma kekahi faila, ʻoi aku ka lōʻihi o ka mākaʻikaʻi ʻana. Ke pau ka mākaʻikaʻi ʻana a hoʻopaʻa ʻia kāu ʻōnaehana, hiki iā ʻoe ke hele i ka faila hoʻonohonoho a hoʻonohonoho i ke ʻano hooikaika anaa holo no hoi.

$ setenforce 1

Ua hoʻokō pono ʻoe iā SELinux ma kāu kamepiula.

Ke nānā nei i nā lāʻau

Ua ʻike paha ʻoe i kekahi mau hewa i ka wā e kaha ana a i ʻole e holo ana ka ʻōnaehana. No ka nānā ʻana inā hana pololei kāu SELinux a inā ʻaʻole ia e pale ana i ke komo ʻana i kekahi awa, noi, a me nā mea ʻē aʻe, pono ʻoe e nānā i nā lāʻau. Aia ka log SELinux ma /var/log/audit/audit.log, akā ʻaʻole pono ʻoe e heluhelu i ka mea holoʻokoʻa e ʻike i nā hewa. Hiki iā ʻoe ke hoʻohana i ka pono audit2why e ʻike i nā hewa. E holo i kēia kauoha:

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

ʻO ka hopena, e loaʻa iā ʻoe kahi papa inoa o nā hewa. Inā ʻaʻohe hewa i ka log, ʻaʻole e hōʻike ʻia nā memo.

Ke hoʻonohonoho nei i ke kulekele SELinux

ʻO kahi kulekele SELinux kahi hoʻonohonoho o nā lula e hoʻokele i ka mīkini palekana SELinux. ʻO kahi kulekele e wehewehe i kahi hoʻonohonoho o nā lula no kahi kaiapuni kikoʻī. I kēia manawa e aʻo mākou pehea e hoʻonohonoho ai i nā kulekele e ʻae i ke komo ʻana i nā lawelawe i pāpā ʻia.

1. Nā waiwai kūpono (nā hoʻololi)

Hiki i nā hoʻololi (booleans) ke hoʻololi i nā ʻāpana o kahi kulekele i ka wā holo, me ka ʻole e hana i nā kulekele hou. Hāʻawi lākou iā ʻoe e hana i nā loli me ka ʻole o ka rebooting a i ʻole ka hoʻopili hou ʻana i nā kulekele SELinux.

Pākuhi:
E ʻōlelo mākou makemake mākou e kaʻana like i ka papa kuhikuhi home o ka mea hoʻohana ma o FTP heluhelu/kākau, a ua hōʻike mua mākou iā ia, akā ke hoʻāʻo mākou e komo, ʻaʻohe mea ʻike. ʻO kēia no ka mea ua pale ke kulekele SELinux i ka server FTP mai ka heluhelu ʻana a me ke kākau ʻana i ka papa kuhikuhi home o ka mea hoʻohana. Pono mākou e hoʻololi i ke kulekele i hiki i ka server FTP ke komo i nā papa kuhikuhi home. E ʻike inā he mau hoʻololi no kēia ma ka hana ʻana

$ semanage boolean -l

E papa inoa kēia kauoha i nā hoʻololi i loaʻa me ko lākou kūlana o kēia manawa (a i ʻole a i ʻole) a me ka wehewehe. Hiki iā ʻoe ke hoʻomaʻemaʻe i kāu hulina ma ka hoʻohui ʻana i ka grep e ʻike i nā hopena ftp-wale:

$ semanage boolean -l | grep ftp

a e loaʻa iā ʻoe kēia mau mea

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

Ua pio kēia hoʻololi, no laila hiki iā mākou ke hoʻohana setsebool $ setsebool ftp_home_dir on

I kēia manawa hiki i kā mākou ftp daemon ke komo i ka papa kuhikuhi home o ka mea hoʻohana.
Nānā: Hiki iā ʻoe ke loaʻa kahi papa inoa o nā hoʻololi i loaʻa me ka ʻole o ka wehewehe ʻana ma ka hana ʻana getsebool -a

2. Nā lepili a me ka pōʻaiapili

ʻO kēia ke ala maʻamau e hoʻokō i ke kulekele SELinux. Hōʻailona ʻia kēlā me kēia faila, waihona, kaʻina hana a me ke awa me ka pōʻaiapili SELinux:

  • No nā faila a me nā waihona, mālama ʻia nā lepili ma ke ʻano he ʻano nui ma ka ʻōnaehana faila a hiki ke ʻike ʻia me kēia kauoha:
    $ ls -Z /etc/httpd
  • No nā kaʻina hana a me nā awa, mālama ʻia ka lepili e ka kernel, a hiki iā ʻoe ke nānā i kēia mau lepili penei:

kaʻina

$ ps –auxZ | grep httpd

awa

$ netstat -anpZ | grep httpd

Pākuhi:
I kēia manawa, e nānā kākou i kekahi laʻana no ka hoʻomaopopo maikaʻi ʻana i nā lepili a me ka pōʻaiapili. E ʻōlelo mākou he kikowaena pūnaewele mākou, ma kahi o kahi papa kuhikuhi /var/www/html/ использует /home/dan/html/. E noʻonoʻo ʻo SELinux i kēia mea he uhaki i ke kulekele a ʻaʻole hiki iā ʻoe ke nānā i kāu mau ʻaoʻao pūnaewele. No ka mea ʻaʻole mākou i hoʻonohonoho i ka pōʻaiapili palekana e pili ana i nā faila HTML. No ka ʻike ʻana i ka pōʻaiapili palekana paʻamau, e hoʻohana i kēia kauoha:

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

Eia mākou i loaʻa httpd_sys_content_t e like me ka pōʻaiapili no nā faila html. Pono mākou e hoʻonohonoho i kēia pōʻaiapili palekana no kā mākou papa kuhikuhi o kēia manawa, aia i kēia manawa kēia pōʻaiapili:

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

He kauoha ʻē aʻe e nānā i ka pōʻaiapili palekana o kahi faila a papa kuhikuhi paha:

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

E hoʻohana pū mākou i ka semanage e hoʻololi i ka pōʻaiapili ke loaʻa iā mākou ka pōʻaiapili palekana kūpono. No ka hoʻololi i ka pōʻaiapili o /home/dan/html, e holo i kēia mau kauoha:

$ 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

Ma hope o ka hoʻololi ʻana i ka pōʻaiapili me ka semanage, e hoʻouka ke kauoha restorecon i ka pōʻaiapili paʻamau no nā faila a me nā papa kuhikuhi. Hiki i kā mākou kikowaena pūnaewele ke heluhelu i nā faila mai ka waihona /home/dan/htmlno ka mea, ua hoʻololi ʻia ka pōʻaiapili palekana no kēia waihona i httpd_sys_content_t.

3. E hana i nā kulekele kūloko

Loaʻa paha nā kūlana i hoʻohana ʻole ʻia nā ala i luna a loaʻa iā ʻoe nā hewa (avc/denial) ma audit.log. Ke hana ʻia kēia, pono ʻoe e hana i kahi kulekele kūloko. Hiki iā ʻoe ke ʻike i nā hewa āpau me ka hoʻohana ʻana i audit2why, e like me ka mea i wehewehe ʻia ma luna.

Hiki iā ʻoe ke hana i kahi kulekele kūloko e hoʻoponopono i nā hewa. No ka laʻana, loaʻa iā mākou kahi hewa e pili ana i ka httpd (apache) a i ʻole smbd (samba), ʻike mākou i nā hewa a hana i kahi kulekele no lākou:

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

he mea http_policy и smb_policy ʻo ia nā inoa o nā kulekele kūloko a mākou i hana ai. I kēia manawa pono mākou e hoʻouka i kēia mau kulekele kūloko i hana ʻia i ke kulekele SELinux o kēia manawa. Hiki ke hana penei:

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

Ua hoʻoiho ʻia kā mākou kulekele kūloko a ʻaʻole pono mākou e loaʻa hou i kekahi avc a i ʻole denail ma audit.log.

ʻO kēia kaʻu hoʻāʻo e kōkua iā ʻoe e hoʻomaopopo iā SELinux. Manaʻo wau ma hope o ka heluhelu ʻana i kēia ʻatikala e ʻoluʻolu ʻoe me SELinux.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka