SELinux cheat sheet alang sa mga administrador sa sistema: 42 nga mga tubag sa hinungdanon nga mga pangutana

Ang paghubad sa artikulo espesipikong giandam alang sa mga estudyante sa kurso "Linux Administrator".

SELinux cheat sheet alang sa mga administrador sa sistema: 42 nga mga tubag sa hinungdanon nga mga pangutana

Dinhi makakuha ka mga tubag sa hinungdanon nga mga pangutana bahin sa kinabuhi, uniberso ug tanan sa Linux nga adunay gipaayo nga seguridad.

"Ang importante nga kamatuoran nga ang mga butang dili kanunay kung unsa ang ilang makita mao ang komon nga kahibalo ..."

-Douglas Adams, Ang Giya sa Hitchhiker sa Galaxy

Kaluwasan. Dugang nga kasaligan. Sulat. Polisiya. Upat ka Horsemen sa Apocalypse sysadmin. Dugang pa sa among adlaw-adlaw nga buluhaton - pagmonitor, pag-backup, pagpatuman, pag-configure, pag-update, ug uban pa - responsable usab kami sa seguridad sa among mga sistema. Bisan kadtong mga sistema diin girekomenda sa third-party nga provider nga among i-disable ang gipauswag nga seguridad. Morag trabaho Ethan Hunt gikan sa “Misyon: Imposible.”

Nag-atubang sa kini nga problema, ang pipila nga mga tagdumala sa sistema nakahukom nga kuhaon asul nga pildoras, tungod kay naghunahuna sila nga dili nila mahibal-an ang tubag sa dakong pangutana sa kinabuhi, sa uniberso ug sa tanan. Ug sa nahibal-an namong tanan, kana nga tubag 42.

Sa diwa sa The Hitchhiker's Guide to the Galaxy, aniay 42 ka tubag sa importanteng mga pangutana bahin sa pagkontrol ug paggamit. SELinux sa imong mga sistema.

1. Ang SELinux usa ka pinugos nga sistema sa pagkontrol sa pag-access, nga nagpasabut nga ang matag proseso adunay label. Ang matag file, direktoryo ug sistema nga butang adunay usab mga label. Ang mga lagda sa palisiya nagkontrol sa pag-access tali sa mga gi-tag nga proseso ug mga butang. Ang kernel nagpatuman niini nga mga lagda.

2. Ang duha ka labing importante nga mga konsepto mao ang: Ang pagbutang — mga marka (mga file, proseso, pantalan, ug uban pa) ug Pag-type sa pagpatuman (nga nagbulag sa mga proseso gikan sa usag usa base sa mga tipo).

3. Husto nga format sa label user:role:type:level (kapilian).

4. Ang katuyoan sa paghatag og multi-level nga seguridad (Multi-Level Security - MLS) mao ang pagdumala sa mga proseso (mga domain) base sa lebel sa seguridad sa datos nga ilang gamiton. Pananglitan, ang usa ka sekreto nga proseso dili makabasa sa pinakataas nga sekreto nga datos.

5. Pagsiguro sa multi-category nga seguridad (Daghang-Kategorya nga Seguridad - MCS) nanalipod sa susamang mga proseso gikan sa usag usa (pananglitan, mga virtual machine, OpenShift nga makina, SELinux sandboxes, mga sudlanan, ug uban pa).

6. Mga kapilian sa kernel alang sa pagbag-o sa mga mode sa SELinux sa boot:

  • autorelabel=1 → hinungdan sa sistema sa pagpadagan sa pag-relabel
  • selinux=0 → ang kernel wala magkarga sa imprastraktura sa SELinux
  • enforcing=0 → loading sa permissive mode

7. Kung kinahanglan nimo nga i-relabel ang tibuuk nga sistema:

# touch /.autorelabel
#reboot

Kung ang pagmarka sa sistema adunay daghang mga sayup, mahimo nimo kinahanglan nga mag-boot sa permissive mode aron molampos ang pagkomento.

8. Aron masusi kung ang SELinux gipalihok: # getenforce

9. Aron temporaryo nga ma-enable/disable ang SELinux: # setenforce [1|0]

10. Pagsusi sa kahimtang sa SELinux: # sestatus

11. Configuration file: /etc/selinux/config

12. Giunsa pagtrabaho ang SELinux? Ania ang usa ka pananglitan nga pagmarka alang sa Apache web server:

  • Binary nga representasyon: /usr/sbin/httpd→httpd_exec_t
  • Direktoryo sa pag-configure: /etc/httpd→httpd_config_t
  • Direktoryo sa log file: /var/log/httpd → httpd_log_t
  • Direktoryo sa sulod: /var/www/html → httpd_sys_content_t
  • Ilunsad ang script: /usr/lib/systemd/system/httpd.service → httpd_unit_file_d
  • Proseso: /usr/sbin/httpd -DFOREGROUND → httpd_t
  • Mga pantalan: 80/tcp, 443/tcp → httpd_t, http_port_t

Ang proseso nga nagdagan sa konteksto httpd_t, mahimong makig-uban sa usa ka butang nga gimarkahan httpd_something_t.

13. Daghang mga sugo ang modawat ug argumento -Z sa pagtan-aw, paghimo ug pag-usab sa konteksto:

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

Natukod ang mga konteksto kung ang mga file gihimo base sa konteksto sa ilang direktoryo sa ginikanan (uban ang pipila nga mga eksepsiyon). Ang mga RPM mahimong magtukod og mga konteksto sama sa panahon sa pag-instalar.

14. Adunay upat ka nag-unang hinungdan sa mga sayup sa SELinux, nga gihulagway sa mas detalyado sa mga punto 15-21 sa ubos:

  • Mga isyu sa pag-label
  • Tungod sa usa ka butang nga kinahanglan mahibal-an sa SELinux
  • Sayop sa polisiya/aplikasyon sa SELinux
  • Mahimong makompromiso ang imong impormasyon

15. Problema sa pag-label: kung naa ang imong mga file /srv/myweb sayop nga gimarkahan, ang pag-access mahimong dumilian. Ania ang pipila ka mga paagi sa pag-ayo niini:

  • Kung nahibal-an nimo ang label:
    # semanage fcontext -a -t httpd_sys_content_t '/srv/myweb(/.*)?'
  • Kung nahibal-an nimo ang usa ka file nga adunay parehas nga marka:
    # semanage fcontext -a -e /srv/myweb /var/www
  • Pagpasig-uli sa konteksto (alang sa duha ka kaso):
    # restorecon -vR /srv/myweb

16. Problema sa pag-label: kung imong ibalhin ang file imbes nga kopyahon kini, ang file magpabilin sa orihinal nga konteksto niini. Aron ayuhon kini nga problema:

  • Usba ang sugo sa konteksto gamit ang label:
    # chcon -t httpd_system_content_t /var/www/html/index.html
  • Usba ang sugo sa konteksto gamit ang label sa link:
    # chcon --reference /var/www/html/ /var/www/html/index.html
  • Iuli ang konteksto (alang sa duha ka kaso): # restorecon -vR /var/www/html/

17. kon SELinux kinahanglan nimo mahibal-annga ang HTTPD naminaw sa port 8585, sultihi ang SELinux:

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

18. SELinux kinahanglan nimo mahibal-an Ang mga kantidad sa Boolean nga nagtugot sa mga bahin sa palisiya sa SELinux nga mabag-o sa oras sa pagdagan nga wala’y kahibalo sa palisiya sa SELinux nga gi-overwrit. Pananglitan, kung gusto nimo ipadala sa httpd ang email, pagsulod: # setsebool -P httpd_can_sendmail 1

19. SELinux kinahanglan nimo mahibal-an lohikal nga mga kantidad alang sa pagpagana / pag-disable sa mga setting sa SELinux:

  • Aron makita ang tanang boolean values: # getsebool -a
  • Aron makita ang paghulagway sa matag usa: # semanage boolean -l
  • Para magbutang ug boolean value: # setsebool [_boolean_] [1|0]
  • Alang sa permanente nga pag-instalar, idugang -P. Pananglitan: # setsebool httpd_enable_ftp_server 1 -P

20. Ang mga palisiya/aplikasyon sa SELinux mahimong adunay mga sayup, lakip ang:

  • Dili kasagaran nga mga agianan sa code
  • Mga pag-configure
  • Pag-redirect sa stdout
  • Ang mga deskriptor sa file nag-leak
  • Executable memory
  • Dili maayo nga pagkatukod nga mga librarya

Buksan ang mga tiket (ayaw pagsumite ug report sa Bugzilla; Bugzilla walay SLA).

21. Mahimong makompromiso ang imong impormasyonkung ikaw adunay gidili nga mga domain nga naningkamot sa:

  • Pag-load sa mga module sa kernel
  • I-disable ang gipatuman nga SELinux mode
  • Isulat sa etc_t/shadow_t
  • Usba ang mga lagda sa iptables

22. Mga himan sa SELinux alang sa pagpalambo sa mga module sa palisiya:

# yum -y install setroubleshoot setroubleshoot-server

I-reboot o i-restart auditd human sa pag-instalar.

23. Paggamit

journalctl

aron ipakita ang usa ka lista sa tanan nga mga log nga adunay kalabotan setroubleshoot:

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

24. Paggamit journalctl aron ilista ang tanan nga mga troso nga adunay kalabotan sa usa ka piho nga tag sa SELinux. Pananglitan:

# journalctl _SELINUX_CONTEXT=system_u:system_r:policykit_t:s0

25. Kung adunay mahitabo nga sayup sa SELinux, gamita ang log setroubleshoot nagtanyag sa pipila ka posible nga mga solusyon.
Pananglitan, gikan sa 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. Pag-log: Ang SELinux nagrekord sa impormasyon sa daghang mga dapit:

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

27. Pag-log: pagpangita sa mga sayup sa SELinux sa audit log:

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

28. Aron makit-an ang mga mensahe sa SELinux Access Vector Cache (AVC) alang sa usa ka piho nga serbisyo:

# ausearch -m avc -c httpd

29. Gamit audit2allow nagkolekta og impormasyon gikan sa mga troso sa gidili nga mga operasyon ug dayon nagmugna sa mga lagda sa polisiya sa pagtugot sa SELinux. Pananglitan:

  • Aron makahimo og usa ka mabasa sa tawo nga deskripsyon kung nganong gibalibaran ang pag-access: # audit2allow -w -a
  • Sa pagtan-aw sa usa ka matang sa pagpatuman sa lagda nga nagtugot sa gibalibaran access: # audit2allow -a
  • Sa paghimo og custom nga module: # audit2allow -a -M mypolicy
  • Kapilian -M naghimo ug tipo nga enforcement file (.te) nga adunay gipiho nga ngalan ug gihugpong ang lagda ngadto sa usa ka pakete sa polisiya (.pp): mypolicy.pp mypolicy.te
  • Sa pag-instalar og custom nga module: # semodule -i mypolicy.pp

30. Aron ma-configure ang usa ka bulag nga proseso (domain) aron molihok sa permissive mode: # semanage permissive -a httpd_t

31. Kung dili na nimo gusto nga ang domain mahimong permissive: # semanage permissive -d httpd_t

32. Aron ma-disable ang tanang permissive domain: # semodule -d permissivedomains

33. Pag-enable sa polisiya sa MLS SELinux: # yum install selinux-policy-mls
в /etc/selinux/config:

SELINUX=permissive
SELINUXTYPE=mls

Siguroha nga ang SELinux nagdagan sa permissive mode: # setenforce 0
Gamit ug script fixfilesaron masiguro nga ang mga file gi-relabel pag-usab sa sunod nga pag-reboot:

# fixfiles -F onboot # reboot

34. Paghimo usa ka tiggamit nga adunay piho nga sakup sa MLS: # useradd -Z staff_u john

Gamit ang sugo useradd, mapa ang bag-ong user ngadto sa kasamtangan nga user sa SELinux (niining kasoha, staff_u).

35. Aron tan-awon ang pagmapa tali sa mga tiggamit sa SELinux ug Linux: # semanage login -l

36. Paghubit sa usa ka piho nga range alang sa tiggamit: # semanage login --modify --range s2:c100 john

37. Aron matul-id ang label sa home directory sa user (kon gikinahanglan): # chcon -R -l s2:c100 /home/john

38. Aron matan-aw ang mga karon nga kategorya: # chcat -L

39. Aron mausab ang mga kategorya o magsugod sa paghimo sa imong kaugalingon, usba ang file ingon sa mosunod:

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

40. Aron magpadagan og command o script sa usa ka piho nga file, papel, ug konteksto sa user:

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

  • -t konteksto sa file
  • -r konteksto sa papel
  • -u konteksto sa tiggamit

41. Ang mga sudlanan nga nagdagan nga adunay SELinux nga gibabagan:

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

42. Kung kinahanglan nimo nga hatagan ang sulud sa hingpit nga pag-access sa sistema:

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

Ug karon nahibal-an na nimo ang tubag. Busa palihug: ayaw kalisang ug i-enable ang SELinux.

Mga reperensiya:

Source: www.habr.com

Idugang sa usa ka comment