Taratasy fitaka SELinux ho an'ny mpitantana rafitra: valiny 42 amin'ny fanontaniana manan-danja

Ny fandikana ny lahatsoratra dia nomanina manokana ho an'ny mpianatry ny taranja "Linux Administrator".

Taratasy fitaka SELinux ho an'ny mpitantana rafitra: valiny 42 amin'ny fanontaniana manan-danja

Eto ianao dia hahazo valiny amin'ireo fanontaniana manan-danja momba ny fiainana, izao rehetra izao ary ny zava-drehetra ao amin'ny Linux miaraka amin'ny fiarovana tsara kokoa.

"Ny fahamarinana manan-danja fa ny zavatra dia tsy araka izay hitany foana dia ny fahalalan'ny besinimaro..."

- Douglas Adams, Ny torolalan'ny Hitchhiker an'ny Galaxy

Fiarovana. Nitombo ny fahatokisana. Correspondence. Politika. Mpitaingin-tsoavaly efatra an'ny Apokalypsy sysadmin. Ho fanampin'ny asantsika isan'andro - ny fanaraha-maso, ny backup, ny fampiharana, ny fanamafisana, ny fanavaozana, sns. - dia tompon'andraikitra amin'ny fiarovana ny rafitray ihany koa izahay. Eny fa na dia ireo rafitra izay anoroan'ny mpanome tolotra fahatelo aza mba hanesoranay ny fiarovana nohatsaraina. Toa asa izany Ethan Hunt avy amin'ny "Mission: Impossible."

Manoloana ity olana ity dia manapa-kevitra ny handray izany ny mpitantana ny rafitra sasany pilina manga, satria mihevitra izy ireo fa tsy ho fantany mihitsy ny valin’ilay fanontaniana lehibe momba ny fiainana, izao rehetra izao sy ny zavatra rehetra. Ary araka ny fantatsika rehetra dia 42 izany valiny izany.

Ao amin'ny fanahin'ny The Hitchhiker's Guide to the Galaxy, ireto misy valiny 42 amin'ireo fanontaniana manan-danja momba ny fanaraha-maso sy ny fampiasana. SELinux amin'ny rafitrao.

1. SELinux dia rafitra fanaraha-maso fidirana an-tery, izay midika fa ny dingana rehetra dia misy marika. Ny rakitra tsirairay, ny lahatahiry ary ny zavatra rafitra dia manana etikety ihany koa. Ny fitsipiky ny politika dia mifehy ny fidirana eo amin'ireo dingana misy marika sy zavatra. Ny kernel dia mampihatra ireo fitsipika ireo.

2. Ny hevitra roa manan-danja indrindra dia: fametahaka marika - marika (rakitra, dingana, seranana, sns.) ary Karazana fampiharana (izay manasaraka ny dingana tsirairay mifototra amin'ny karazana).

3. Endriky ny etikety marina user:role:type:level (tsy voatery).

4. Ny tanjona amin'ny fanomezana fiarovana amin'ny sehatra maro (Fiarovana marobe - MLS) dia ny mitantana ny dingana (domains) mifototra amin'ny haavon'ny fiarovana ny angona hampiasainy. Ohatra, ny dingana miafina dia tsy afaka mamaky angona miafina ambony.

5. Fiantohana ny fiarovana sokajy maro (Fiarovana amin'ny sokajy maro - MCS) miaro ny dingana mitovy amin'ny tsirairay (ohatra, milina virtoaly, motera OpenShift, boaty fasika SELinux, kaontenera, sns.).

6. Safidy kernel hanovana ny maody SELinux amin'ny boot:

  • autorelabel=1 → mahatonga ny rafitra hihazakazaka relabeling
  • selinux=0 → tsy mitondra ny fotodrafitrasa SELinux ny kernel
  • enforcing=0 → Loading in permissive mode

7. Raha mila mametaka ny rafitra manontolo ianao:

# touch /.autorelabel
#reboot

Raha misy lesoka be dia be ny fanamarihan'ny rafitra dia mety mila mandeha amin'ny fomba mamela ny fanamarihana ianao mba hahombiazana.

8. Raha te hanamarina raha mandeha ny SELinux: # getenforce

9. Mba hahafahan'ny SELinux vonjimaika/mampiato: # setenforce [1|0]

10. Fanamarinana ny toeran'ny SELinux: # sestatus

11. rakitra fanamboarana: /etc/selinux/config

12. Ahoana ny fiasan'ny SELinux? Ity misy ohatra marika ho an'ny mpizara tranonkala Apache:

  • Fanehoana binary: /usr/sbin/httpd→httpd_exec_t
  • Lahatahiry fanamboarana: /etc/httpd→httpd_config_t
  • Lahatahiry rakitra log: /var/log/httpd → httpd_log_t
  • Lahatahiry votoaty: /var/www/html → httpd_sys_content_t
  • Alefaso ny script: /usr/lib/systemd/system/httpd.service → httpd_unit_file_d
  • dingana: /usr/sbin/httpd -DFOREGROUND → httpd_t
  • Seranana: 80/tcp, 443/tcp → httpd_t, http_port_t

Dingana mandeha amin'ny contexte httpd_t, dia afaka mifandray amin'ny zavatra misy marika httpd_something_t.

13. Betsaka ny baiko manaiky hevitra -Z hijery, hamorona ary hanova ny contexte:

  • ls -Z
  • id -Z
  • ps -Z
  • netstat -Z
  • cp -Z
  • mkdir -Z

Miorina ny contexts rehefa noforonina ny rakitra mifototra amin'ny tontolon'ny lahatahirin'ny ray aman-dreniny (misy maningana). Ny RPM dia afaka mametraka contexte toy ny mandritra ny fametrahana.

14. Misy antony efatra lehibe mahatonga ny fahadisoana SELinux, izay voafaritra amin'ny antsipiriany kokoa amin'ny teboka 15-21 etsy ambany:

  • Olana fametahana marika
  • Noho ny zavatra tokony ho fantatry ny SELinux
  • Hadisoana amin'ny politika/fampiharana SELinux
  • Mety ho simba ny mombamomba anao

15. Olana fametahana: raha ao ny rakitrao /srv/myweb diso marika, mety ho lavina ny fidirana. Ireto misy fomba vitsivitsy hamahana izany:

  • Raha fantatrao ny etikety:
    # semanage fcontext -a -t httpd_sys_content_t '/srv/myweb(/.*)?'
  • Raha fantatrao ny rakitra misy marika mitovy:
    # semanage fcontext -a -e /srv/myweb /var/www
  • Famerenana ny contexte (ho an'ireo tranga roa ireo):
    # restorecon -vR /srv/myweb

16. Olana fametahana: raha mamindra ny rakitra ianao fa tsy manao kopia, dia hitazona ny contexte tany am-boalohany ilay rakitra. Mba hamahana ity olana ity:

  • Ovay ny baiko contexte amin'ny etikety:
    # chcon -t httpd_system_content_t /var/www/html/index.html
  • Ovay ny baiko contexte amin'ny etikety rohy:
    # chcon --reference /var/www/html/ /var/www/html/index.html
  • Avereno ny contexte (ho an'ireo tranga roa ireo): # restorecon -vR /var/www/html/

17. raha SELinux tokony ho fantatraofa ny HTTPD dia mihaino amin'ny port 8585, lazao amin'ny SELinux:

# semanage port -a -t http_port_t -p tcp 8585

18. SELinux tokony ho fantatrao Ny soatoavina Boolean izay mamela ny ampahany amin'ny politikan'ny SELinux ovaina amin'ny fotoana fampandehanana tsy misy fahalalana momba ny politikan'ny SELinux voasoloina. Ohatra, raha te handefa mailaka ny httpd ianao dia midira: # setsebool -P httpd_can_sendmail 1

19. SELinux tokony ho fantatrao sanda lojika amin'ny fampandehanana/famonoana ny fikandrana SELinux:

  • Raha hijery ny sanda boolean rehetra: # getsebool -a
  • Raha hijery ny famaritana ny tsirairay: # semanage boolean -l
  • Hametraka sanda boolean: # setsebool [_boolean_] [1|0]
  • Ho an'ny fametrahana maharitra, ampio -P. Ohatra: # setsebool httpd_enable_ftp_server 1 -P

20. Ny politika/fampiharana SELinux dia mety misy lesoka, ao anatin'izany:

  • Lalana kaody tsy mahazatra
  • Configurations
  • Redirecting stdout
  • Miporitsaka ny famaritana ny rakitra
  • Fahatsiarovana azo tanterahana
  • Tranomboky tsy voaorina

Sokafy ny tapakila (aza mandefa tatitra any Bugzilla; Bugzilla tsy manana SLA).

21. Mety ho simba ny mombamomba anaoraha manana sehatra voafetra ianao manandrana:

  • Ampidiro ny modules kernel
  • Atsaharo ny fomba SELinux nampiharina
  • Manorata amin'ny etc_t/shadow_t
  • Hanova fitsipika iptables

22. Fitaovana SELinux amin'ny famolavolana maody politika:

# yum -y install setroubleshoot setroubleshoot-server

Avereno na avereno indray auditd aorian'ny fametrahana.

23. fampiasana

journalctl

mba hampisehoana ny lisitry ny diary rehetra mifandray amin'ny setroubleshoot:

# journalctl -t setroubleshoot --since=14:20

24. fampiasana journalctl mitanisa ny logs rehetra mifandraika amin'ny marika SELinux manokana. Ohatra:

# journalctl _SELINUX_CONTEXT=system_u:system_r:policykit_t:s0

25. Raha misy hadisoana SELinux, ampiasao ny log setroubleshoot manolotra vahaolana maro azo atao.
Ohatra, avy amin'ny 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: SELinux dia mirakitra vaovao any amin'ny toerana maro:

  • / var / log / hafatra
  • /var/log/audit/audit.log
  • /var/lib/setroubleshoot/setroubleshoot_database.xml

27. Logging: mitady lesoka SELinux ao amin'ny log audit:

# ausearch -m AVC,USER_AVC,SELINUX_ERR -ts today

28. Raha te hahita hafatra SELinux Access Vector Cache (AVC) ho an'ny serivisy manokana:

# ausearch -m avc -c httpd

29. Utility audit2allow manangona vaovao avy amin'ny diarin'ny asa voarara ary avy eo dia mamorona fitsipika momba ny fahazoan-dàlana SELinux. Ohatra:

  • Mba hamoronana famaritana azo vakin'ny olona momba ny antony tsy ahazoana miditra: # audit2allow -w -a
  • Raha hijerena karazana fitsipika fampiharana izay mamela ny fidirana nolavina: # audit2allow -a
  • Mba hamoronana môdely mahazatra: # audit2allow -a -M mypolicy
  • Option -M mamorona rakitra fampiharana karazana (.te) miaraka amin'ny anarana voafaritra ary manangona ny fitsipika ho fonosana politika (.pp): mypolicy.pp mypolicy.te
  • Hametraka môdely mahazatra: # semodule -i mypolicy.pp

30. Mba hanefena dingana misaraka (domaine) mba hiasa amin'ny fomba mamela: # semanage permissive -a httpd_t

31. Raha toa ka tsy tianao intsony ilay domaine ho mamela lalana: # semanage permissive -d httpd_t

32. Mba hanesorana ny sehatra rehetra mamela: # semodule -d permissivedomains

33. Mandeha ny politika MLS SELinux: # yum install selinux-policy-mls
в /etc/selinux/config:

SELINUX=permissive
SELINUXTYPE=mls

Ataovy azo antoka fa mandeha amin'ny fomba mamela ny SELinux: # setenforce 0
Mampiasà script fixfilesmba hahazoana antoka fa ny rakitra dia averina amin'ny reboot manaraka:

# fixfiles -F onboot # reboot

34. Mamoròna mpampiasa manana salan'isa MLS manokana: # useradd -Z staff_u john

Mampiasa ny baiko useradd, sarintany ny mpampiasa vaovao amin'ny mpampiasa SELinux efa misy (amin'ity tranga ity, staff_u).

35. Raha hijery ny sarintany eo amin'ny mpampiasa SELinux sy Linux: # semanage login -l

36. Farito ny salan'isa manokana ho an'ny mpampiasa: # semanage login --modify --range s2:c100 john

37. Raha hanitsy ny mari-pamantarana lahatahirin'ny mpampiasa (raha ilaina): # chcon -R -l s2:c100 /home/john

38. Raha hijery ny sokajy ankehitriny: # chcat -L

39. Raha hanova sokajy na hanomboka hamorona ny anao manokana dia ovay toy izao manaraka izao ny rakitra:

/etc/selinux/_<selinuxtype>_/setrans.conf

40. Mba hampandehanana baiko na script amin'ny rakitra iray, ny anjara asany ary ny tontolon'ny mpampiasa:

# runcon -t initrc_t -r system_r -u user_u yourcommandhere

  • -t contexte rakitra
  • -r contexte role
  • -u contexte mpampiasa

41. Container mandeha miaraka amin'ny SELinux kilemaina:

  • Podman: # podman run --security-opt label=disable …
  • Docker: # docker run --security-opt label=disable …

42. Raha mila manome ny fitoeran-javatra fidirana feno amin'ny rafitra ianao:

  • Podman: # podman run --privileged …
  • Docker: # docker run --privileged …

Ary izao dia efa fantatrao ny valiny. Koa azafady: aza taitra ary avelao ny SELinux.

andinin-tsoratra masina:

Source: www.habr.com

Add a comment