SELinux cheat sheet pou administratè sistèm: 42 repons pou kesyon enpòtan yo

Tradiksyon atik la te prepare espesyalman pou elèv yo nan kou a "Administratè Linux".

SELinux cheat sheet pou administratè sistèm: 42 repons pou kesyon enpòtan yo

La a ou pral jwenn repons a kesyon enpòtan sou lavi, linivè a ak tout bagay nan Linux ak sekirite amelyore.

"Verite enpòtan ke bagay yo pa toujou sa yo sanble se konesans komen ..."

-Douglas Adams, Gid otostòp pou galaksi an

Sekirite. Ogmantasyon fyab. Korespondans. Règleman. Kat kavalye nan sysadmin Apocalypse la. Anplis travay chak jou nou yo - siveyans, backup, aplikasyon, konfigirasyon, aktyalizasyon, elatriye - nou responsab tou pou sekirite sistèm nou yo. Menm sistèm sa yo kote founisè twazyèm pati a rekòmande pou nou enfim sekirite amelyore. Li santi tankou travay Etan Hunt soti nan "Misyon: Enposib."

Fè fas ak dilèm sa a, kèk administratè sistèm deside pran grenn ble, paske yo panse yo pap janm konnen repons pou gwo kesyon lavi a, linivè ak tout sa. E jan nou tout konnen, repons sa a se 42.

Nan lespri Gid Otostòp Galaksi a, isit la gen 42 repons pou kesyon enpòtan sou kontwòl ak itilizasyon. SELinux sou sistèm ou yo.

1. SELinux se yon sistèm kontwòl aksè fòse, ki vle di ke chak pwosesis gen yon etikèt. Chak fichye, anyè ak objè sistèm tou gen etikèt. Règleman yo kontwole aksè ant pwosesis tag ak objè yo. Kernel la fè respekte règ sa yo.

2. De konsèp ki pi enpòtan yo se: Etikèt — mak (fichye, pwosesis, pò, elatriye) ak Kalite ranfòsman (ki izole pwosesis youn ak lòt ki baze sou kalite).

3. Fòma etikèt kòrèk user:role:type:level (opsyonèl).

4. Objektif pou bay sekirite milti-nivo (Sekirite milti-nivo - MLS) se jere pwosesis (domèn) ki baze sou nivo sekirite done yo pral itilize yo. Pou egzanp, yon pwosesis sekrè pa ka li done top sekrè.

5. Asire sekirite milti kategori (Sekirite milti-kategori - MCS) pwoteje pwosesis ki sanble youn ak lòt (pa egzanp, machin vityèl, motè OpenShift, bwat sab SELinux, resipyan, elatriye).

6. Opsyon Kernel pou chanje mòd SELinux nan bòt:

  • autorelabel=1 → lakòz sistèm lan kouri re-etikèt
  • selinux=0 → Kernel la pa chaje enfrastrikti SELinux la
  • enforcing=0 → chaje nan mòd tolerans

7. Si ou bezwen remarke tout sistèm nan:

# touch /.autorelabel
#reboot

Si maketing sistèm nan gen yon gwo kantite erè, ou ka bezwen bòt nan mòd toleran pou remak yo reyisi.

8. Pou tcheke si SELinux aktive: # getenforce

9. Pou tanporèman aktive/enfim SELinux: # setenforce [1|0]

10. Tcheke estati SELinux: # sestatus

11. Fichye konfigirasyon: /etc/selinux/config

12. Ki jan SELinux travay? Men yon egzanp make pou sèvè wèb Apache la:

  • reprezantasyon binè: /usr/sbin/httpd→httpd_exec_t
  • Anyè konfigirasyon: /etc/httpd→httpd_config_t
  • Anyè dosye log: /var/log/httpd → httpd_log_t
  • Anyè kontni: /var/www/html → httpd_sys_content_t
  • Lanse script: /usr/lib/systemd/system/httpd.service → httpd_unit_file_d
  • Pwosesis: /usr/sbin/httpd -DFOREGROUND → httpd_t
  • Pò: 80/tcp, 443/tcp → httpd_t, http_port_t

Pwosesis kouri nan yon kontèks httpd_t, ka kominike avèk yon objè ki make httpd_something_t.

13. Anpil kòmandman aksepte yon agiman -Z pou wè, kreye ak chanje kontèks:

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

Kontèks yo etabli lè yo kreye dosye ki baze sou kontèks anyè paran yo (ak kèk eksepsyon). RPM yo ka etabli kontèks tankou pandan enstalasyon.

14. Gen kat kòz prensipal erè SELinux, ki dekri an plis detay nan pwen 15-21 anba a:

  • Pwoblèm etikèt
  • Paske nan yon bagay ke SELinux bezwen konnen
  • Erè nan politik/aplikasyon SELinux
  • Enfòmasyon ou yo ka konpwomèt

15. Pwoblèm etikèt: si dosye ou yo nan /srv/myweb yo make mal, aksè yo ka refize. Men kèk fason pou ranje sa a:

  • Si w konnen etikèt la:
    # semanage fcontext -a -t httpd_sys_content_t '/srv/myweb(/.*)?'
  • Si w konnen yon fichye ki gen mak ekivalan:
    # semanage fcontext -a -e /srv/myweb /var/www
  • Retabli kontèks la (pou tou de ka):
    # restorecon -vR /srv/myweb

16. Pwoblèm etikèt: si w deplase fichye a olye w kopye li, fichye a ap kenbe kontèks orijinal li. Pou rezoud pwoblèm sa a:

  • Chanje lòd kontèks la ak etikèt la:
    # chcon -t httpd_system_content_t /var/www/html/index.html
  • Chanje lòd kontèks la ak etikèt lyen an:
    # chcon --reference /var/www/html/ /var/www/html/index.html
  • Retabli kontèks la (pou tou de ka): # restorecon -vR /var/www/html/

17. Si SELinux ou bezwen konnenke HTTPD ap koute sou pò 8585, di SELinux:

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

18. SELinux ou bezwen konnen Valè Boolean ki pèmèt pati nan politik SELinux yo dwe chanje nan kouri san yo pa konnen politik SELinux yo te ranplase. Pou egzanp, si ou vle httpd voye imèl, antre: # setsebool -P httpd_can_sendmail 1

19. SELinux ou bezwen konnen valè lojik pou aktive / enfim anviwònman SELinux:

  • Pou wè tout valè booleyen yo: # getsebool -a
  • Pou wè yon deskripsyon chak: # semanage boolean -l
  • Pou mete yon valè booleyen: # setsebool [_boolean_] [1|0]
  • Pou yon enstalasyon pèmanan, ajoute -P. Pa egzanp: # setsebool httpd_enable_ftp_server 1 -P

20. Règleman/aplikasyon SELinux yo ka genyen erè, tankou:

  • Chemen kòd etranj
  • Konfigirasyon
  • Redireksyon stdout
  • Fichye deskriptè koule
  • memwa ègzekutabl
  • Bibliyotèk mal konstwi

Louvri tikè (pa soumèt yon rapò bay Bugzilla; Bugzilla pa gen okenn SLA).

21. Enfòmasyon ou yo ka konpwomètsi ou gen domèn restriksyon ap eseye:

  • Chaje modil nwayo yo
  • Enfim ranfòse mòd SELinux
  • Ekri bay etc_t/shadow_t
  • Chanje règ iptables yo

22. Zouti SELinux pou devlope modil politik:

# yum -y install setroubleshoot setroubleshoot-server

Rdemare oswa rekòmanse auditd apre enstalasyon.

23. Itilize

journalctl

pou montre yon lis tout mòso bwa ki asosye avèk yo setroubleshoot:

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

24. Itilize journalctl pou lis tout mòso bwa ki asosye ak yon tag SELinux espesifik. Pa egzanp:

# journalctl _SELINUX_CONTEXT=system_u:system_r:policykit_t:s0

25. Si yon erè SELinux rive, sèvi ak boutèy la setroubleshoot ofri plizyè solisyon posib.
Pou egzanp, soti nan 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. Anrejistre: SELinux anrejistre enfòmasyon nan anpil kote:

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

27. Anrejistre: chèche erè SELinux nan boutèy odit la:

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

28. Pou jwenn mesaj SELinux Access Vector Cache (AVC) pou yon sèvis espesifik:

# ausearch -m avc -c httpd

29. Sèvis piblik audit2allow kolekte enfòmasyon ki soti nan mòso bwa sou operasyon entèdi ak Lè sa a, jenere règ politik pèmisyon SELinux. Pa egzanp:

  • Pou kreye yon deskripsyon lizib pou moun sou rezon ki fè yo refize aksè: # audit2allow -w -a
  • Pou wè yon règ ranfòsman kalite ki pèmèt aksè refize: # audit2allow -a
  • Pou kreye yon modil koutim: # audit2allow -a -M mypolicy
  • Opsyon -M kreye yon dosye ranfòsman kalite (.te) ak non an espesifye epi konpile règ la nan yon pake politik (.pp): mypolicy.pp mypolicy.te
  • Pou enstale yon modil koutim: # semodule -i mypolicy.pp

30. Pou konfigirasyon yon pwosesis separe (domèn) pou travay nan mòd tolerans: # semanage permissive -a httpd_t

31. Si ou pa vle domèn nan toleran ankò: # semanage permissive -d httpd_t

32. Pou enfim tout domèn ki pèmèt: # semodule -d permissivedomains

33. Pèmèt politik MLS SELinux: # yum install selinux-policy-mls
в /etc/selinux/config:

SELINUX=permissive
SELINUXTYPE=mls

Asire w ke SELinux ap kouri nan mòd tolerans: # setenforce 0
Sèvi ak yon script fixfilespou asire ke fichye yo gen yon lòt etikèt sou pwochen rdemare:

# fixfiles -F onboot # reboot

34. Kreye yon itilizatè ak yon seri MLS espesifik: # useradd -Z staff_u john

Sèvi ak kòmandman an useradd, kat nouvo itilizatè a nan yon itilizatè SELinux ki deja egziste (nan ka sa a, staff_u).

35. Pou wè kat ki genyen ant itilizatè SELinux ak Linux: # semanage login -l

36. Defini yon seri espesifik pou itilizatè a: # semanage login --modify --range s2:c100 john

37. Pou korije etikèt anyè lakay itilizatè a (si sa nesesè): # chcon -R -l s2:c100 /home/john

38. Pou wè kategori aktyèl yo: # chcat -L

39. Pou chanje kategori oswa kòmanse kreye pwòp ou a, modifye fichye a jan sa a:

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

40. Pou kouri yon lòd oswa yon script nan yon dosye espesifik, wòl, ak kontèks itilizatè:

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

  • -t kontèks dosye
  • -r kontèks wòl
  • -u kontèks itilizatè

41. Kontenè kap kouri ak SELinux andikape:

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

42. Si ou bezwen bay veso a aksè konplè nan sistèm nan:

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

Epi kounye a ou deja konnen repons lan. Se konsa, tanpri: pa panike epi pèmèt SELinux.

Lyen:

Sous: www.habr.com

Add nouvo kòmantè