SELinux palapala hoʻopunipuni no nā luna ʻōnaehana: 42 pane i nā nīnau koʻikoʻi
Ua hoʻomākaukau ʻia ka unuhi ʻana o ka ʻatikala no nā haumāna o ka papa "Ka Luna Hoʻokele Linux".
Maanei ʻoe e loaʻa ai nā pane i nā nīnau koʻikoʻi e pili ana i ke ola, ke ao holoʻokoʻa a me nā mea āpau ma Linux me ka palekana maikaʻi.
"ʻO ka ʻoiaʻiʻo koʻikoʻi ʻaʻole like nā mea i nā manawa a lākou e ʻike ai he ʻike maʻamau ..."
-Douglas Adams, ʻO ke alakaʻi a ka Hitchhiker i ka Galaxy
Palekana. Hoʻonui i ka hilinaʻi. Palapala leka. Kulekele. ʻEhā Lio o ka Apocalypse sysadmin. Ma waho aʻe o kā mākou mau hana i kēlā me kēia lā - nānā, hoʻihoʻi, hoʻokō, hoʻonohonoho, hoʻonui, a me nā mea ʻē aʻe - no mākou ke kuleana no ka palekana o kā mākou ʻōnaehana. ʻO kēlā mau ʻōnaehana kahi e ʻōlelo ai ka mea hāʻawi ʻaoʻao ʻekolu e hoʻopau mākou i ka palekana i hoʻonui ʻia. Me he hana lā Ethan Hunt mai "Mission: Impossible."
Ke alo nei i kēia pilikia, ua hoʻoholo kekahi mau luna ʻōnaehana e lawe pilo uliuli, no ka mea, manaʻo lākou ʻaʻole lākou e ʻike i ka pane i ka nīnau nui o ke ola, ke ao a me nā mea a pau. A e like me kā mākou i ʻike ai, ʻo ia pane he 42.
Ma ka manaʻo o The Hitchhiker's Guide to the Galaxy, eia nā pane 42 i nā nīnau koʻikoʻi e pili ana i ka mana a me ka hoʻohana. SELinux ma kāu mau ʻōnaehana.
1. ʻO SELinux kahi ʻōnaehana hoʻokele mana, ʻo ia ka mea i loaʻa i kēlā me kēia kaʻina kahi lepili. Loaʻa nā lepili i kēlā me kēia faila, papa kuhikuhi a me nā mea ʻōnaehana. Hoʻoponopono nā lula kulekele i ke komo ʻana ma waena o nā kaʻina hana a me nā mea. Hoʻokō ka kernel i kēia mau lula.
2. ʻO nā manaʻo koʻikoʻi ʻelua: Ke kālaulā - nā hōʻailona (nā faila, nā kaʻina hana, nā awa, a me nā mea ʻē aʻe) a ʻAno hoʻokō (ka mea e hoʻokaʻawale i nā kaʻina hana mai kekahi i kekahi ma muli o nā ʻano).
4. ʻO ke kumu o ka hoʻolako ʻana i ka palekana multi-level (Palekana Nui - MLS) e hoʻokele i nā kaʻina hana (domains) e pili ana i ka pae o ka palekana o ka ʻikepili a lākou e hoʻohana ai. No ka laʻana, ʻaʻole hiki i kahi kaʻina hana huna ke heluhelu i ka ʻikepili huna kiʻekiʻe.
5. E hōʻoia ana i ka palekana o nā ʻano he nui (Palekana Māhele Nui - MCS) pale i nā kaʻina hana like mai kekahi i kekahi (no ka laʻana, nā mīkini virtual, OpenShift engines, SELinux sandboxes, containers, etc.).
6. Nā koho Kernel no ka hoʻololi ʻana i nā mode SELinux ma ka boot:
autorelabel=1 → ke kumu e holo hou ai ka ʻōnaehana
selinux=0 → ʻaʻole hoʻouka ka kernel i ka ʻōnaehana SELinux
enforcing=0 → hoʻouka ʻia ma ke ʻano ʻae
7. Inā pono ʻoe e hōʻailona hou i ka ʻōnaehana holoʻokoʻa:
# touch /.autorelabel
#reboot
Inā loaʻa i ka māka ʻōnaehana he helu nui o nā hewa, pono paha ʻoe e hoʻopaʻa i ke ʻano ʻae no ka ʻōlelo ʻana e kūleʻa.
8. E nānā inā hiki iā SELinux: # getenforce
9. No ka hoʻā ʻana a hoʻopau iā SELinux no ka manawa pōkole: # setenforce [1|0]
10. Ke nānā nei i ke kūlana SELinux: # sestatus
11. waihona hoʻonohonoho: /etc/selinux/config
12. Pehea e hana ai ʻo SELinux? Eia kahi hōʻailona hōʻailona no ka pūnaewele pūnaewele Apache:
Hōʻikeʻike binary: /usr/sbin/httpd→httpd_exec_t
Papa kuhikuhi hoʻonohonoho: /etc/httpd→httpd_config_t
Papa kuhikuhi waihona waihona: /var/log/httpd → httpd_log_t
Papa kuhikuhi maʻiʻo: /var/www/html → httpd_sys_content_t
Hoʻomaka ka palapala: /usr/lib/systemd/system/httpd.service → httpd_unit_file_d
Ke holo nei ke kaʻina hana ma ka pōʻaiapili httpd_t, hiki ke launa me kekahi mea i hoailonaia httpd_something_t.
13. Nui nā kauoha e ʻae i ka hoʻopaʻapaʻa -Z e nānā, hana a hoʻololi i ka pōʻaiapili:
ls -Z
id -Z
ps -Z
netstat -Z
cp -Z
mkdir -Z
Hoʻokumu ʻia nā ʻatikala ke hana ʻia nā faila ma muli o ka pōʻaiapili o kā lākou papa kuhikuhi makua (me kekahi mau ʻokoʻa). Hiki i nā RPM ke hoʻokumu i nā pōʻaiapili e like me ke kau ʻana.
14. ʻEhā kumu nui o nā hewa SELinux, i wehewehe ʻia i nā kikoʻī ma nā helu 15-21 ma lalo.
Nā pilikia lepili
Ma muli o kahi mea e pono ai ʻo SELinux e ʻike
Hapa i ka SELinux policy/application
Hiki ke hoʻopili ʻia kāu ʻike
15.Pilikia lepili: inā aia kāu mau faila /srv/myweb hōʻailona hewa ʻia, hiki ke hōʻole ʻia ke komo ʻana. Eia kekahi mau ala e hoʻoponopono ai i kēia:
Inā ʻike ʻoe i ka lepili: # semanage fcontext -a -t httpd_sys_content_t '/srv/myweb(/.*)?'
Inā ʻike ʻoe i kahi faila me nā kaha like: # semanage fcontext -a -e /srv/myweb /var/www
Hoʻihoʻi hou i ka pōʻaiapili (no nā hihia ʻelua): # restorecon -vR /srv/myweb
16.Pilikia lepili: inā hoʻoneʻe ʻoe i ka faila ma mua o ke kope ʻana, e paʻa ka waihona i kona ʻano kumu. No ka hoʻoponopono ʻana i kēia pilikia:
E hoʻololi i ke kauoha pōʻaiapili me ka lepili: # chcon -t httpd_system_content_t /var/www/html/index.html
E hoʻololi i ke kauoha pōʻaiapili me ka lepili loulou: # chcon --reference /var/www/html/ /var/www/html/index.html
Hoʻihoʻi i ka pōʻaiapili (no nā hihia ʻelua): # restorecon -vR /var/www/html/
17. ina SELinux pono ʻoe e ʻikee hoʻolohe ana ʻo HTTPD ma ke awa 8585, e haʻi iā SELinux:
# semanage port -a -t http_port_t -p tcp 8585
18.SELinux pono ʻoe e ʻike ʻO nā waiwai Boolean e ʻae i nā ʻāpana o ke kulekele SELinux e hoʻololi ʻia i ka wā holo me ka ʻike ʻole o ke kulekele SELinux i kākau ʻia. No ka laʻana, inā makemake ʻoe iā httpd e hoʻouna i ka leka uila, e komo: # setsebool -P httpd_can_sendmail 1
19.SELinux pono ʻoe e ʻike nā waiwai kūpono no ka hiki ʻana a hoʻopau i nā hoʻonohonoho SELinux:
No ka ʻike ʻana i nā waiwai boolean a pau: # getsebool -a
E ʻike i ka wehewehe ʻana o kēlā me kēia: # semanage boolean -l
No ka hoʻonohonoho ʻana i kahi waiwai boolean: # setsebool [_boolean_] [1|0]
No kahi hoʻokomo mau, hoʻohui -P. ^ E Ha yM. Ma ke ʻano he: # setsebool httpd_enable_ftp_server 1 -P
20. Loaʻa i nā kulekele / noi SELinux nā hewa, me:
Nā ala code maʻamau
Nā hoʻonohonoho
Ke kuhikuhi hou nei i ka stdout
Leʻaleʻa ka mea wehewehe waihona
Hoʻomanaʻo hoʻokō
Nā hale waihona puke maikaʻi ʻole
E wehe i nā tiketi (mai hoʻouna i kahi hōʻike iā Bugzilla; ʻaʻohe SLA iā Bugzilla).
21.Hiki ke hoʻopili ʻia kāu ʻikeinā he mau kāʻei kapu kāu e hoʻāʻo nei e:
E hoʻouka i nā modula kernel
Hoʻopau i ke ʻano SELinux i hoʻokō ʻia
Kākau iā etc_t/shadow_t
E hoʻololi i nā lula iptables
22. Nā mea hana SELinux no ka hoʻomohala ʻana i nā modula kulekele:
25. Inā loaʻa kahi hewa SELinux, e hoʻohana i ka log setroubleshoot hāʻawi i kekahi mau mea hiki ke hoʻonā.
No ka laʻana, mai journalctl:
Jun 14 19:41:07 web1 setroubleshoot: SELinux is preventing httpd from getattr access on the file /var/www/html/index.html. For complete message run: sealert -l 12fd8b04-0119-4077-a710-2d0e0ee5755e
# sealert -l 12fd8b04-0119-4077-a710-2d0e0ee5755e
SELinux is preventing httpd from getattr access on the file /var/www/html/index.html.
***** Plugin restorecon (99.5 confidence) suggests ************************
If you want to fix the label,
/var/www/html/index.html default label should be httpd_syscontent_t.
Then you can restorecon.
Do
# /sbin/restorecon -v /var/www/html/index.html
26. Logging: Hoʻopaʻa ʻo SELinux i ka ʻike ma nā wahi he nui:
27. Hoʻopaʻa inoa: e ʻimi ana i nā hewa SELinux ma ka loiloi loiloi:
# ausearch -m AVC,USER_AVC,SELINUX_ERR -ts today
28. No ka huli ʻana i nā memo SELinux Access Vector Cache (AVC) no kahi lawelawe kikoʻī:
# ausearch -m avc -c httpd
29. Mea hoʻohana audit2allow hōʻiliʻili i ka ʻike mai nā loina o nā hana i pāpā ʻia a laila hoʻopuka i nā lula kulekele ʻae SELinux. ʻo kahi laʻana:
No ka hana ʻana i kahi wehewehe hiki ke heluhelu ʻia e ke kanaka no ke kumu i hōʻole ʻia ai ke komo ʻana: # audit2allow -w -a
No ka ʻike ʻana i kahi lula hoʻokō ʻano e ʻae ʻia ke komo ʻole: # audit2allow -a
No ka hana ʻana i kahi module maʻamau: # audit2allow -a -M mypolicy
Koho -M hana i kahi faila hoʻokō ʻano (.te) me ka inoa i ʻōlelo ʻia a hōʻuluʻulu i ka lula i loko o kahi pūʻolo kulekele (.pp): mypolicy.pp mypolicy.te
No ka hoʻouka ʻana i kahi module maʻamau: # semodule -i mypolicy.pp
30. No ka hoʻonohonoho ʻana i kahi kaʻina kaʻawale (domain) e hana ma ke ʻano ʻae: # semanage permissive -a httpd_t
31. Inā ʻaʻole ʻoe makemake hou e ʻae ʻia ka domain: # semanage permissive -d httpd_t
32. E hoʻopau i nā kāʻei kapu ʻae a pau: # semodule -d permissivedomains
33. E ʻae ana i ke kulekele MLS SELinux: # yum install selinux-policy-mls
в /etc/selinux/config:
SELINUX=permissive
SELINUXTYPE=mls
E hōʻoia e holo ana ʻo SELinux ma ke ʻano ʻae: # setenforce 0
E hoʻohana i kahi palapala fixfilese hōʻoia i ka hoʻopaʻa inoa ʻia ʻana o nā faila i ka reboot aʻe:
# fixfiles -F onboot # reboot
34. E hana i mea hoʻohana me kahi laulā MLS kikoʻī: # useradd -Z staff_u john
Ke hoʻohana nei i ke kauoha useradd, palapala ʻāina i ka mea hoʻohana hou i kahi mea hoʻohana SELinux i loaʻa (ma kēia hihia, staff_u).
35. E nānā i ka palapala 'āina ma waena o SELinux a me nā mea hoʻohana Linux: # semanage login -l
36. E wehewehe i kahi laulā kikoʻī no ka mea hoʻohana: # semanage login --modify --range s2:c100 john
37. No ka hoʻoponopono ʻana i ka lepili papa kuhikuhi home o ka mea hoʻohana (inā pono): # chcon -R -l s2:c100 /home/john
38. E nānā i nā waeʻano o kēia manawa: # chcat -L
39. No ka hoʻololi ʻana i nā waeʻano a i ʻole e hoʻomaka i ka hana ʻana i kāu iho, hoʻoponopono i ka faila penei:
/etc/selinux/_<selinuxtype>_/setrans.conf
40. No ka holo ʻana i kahi kauoha a i ʻole palapala ma kahi faila, kuleana, a me ka pōʻaiapili mea hoʻohana: