Trompfolio por Sistemadministranto en SELinux42 respondoj al gravaj demandoj

La traduko de la artikolo estis preparita specife por la kursanoj "Administranto Linux».

Trompfolio por Sistemadministranto en SELinux42 respondoj al gravaj demandoj

Ĉi tie vi ricevos respondojn al gravaj demandoj pri la vivo, la universo kaj ĉio en ĝi. Linux kun plibonigita sekureco.

"La grava vero, ke aferoj ne ĉiam estas tio, kion ili ŝajnas, estas komuna scio..."

-Douglas Adams, La Petveturista Gvidilo pri la Galaksio

Sekureco. Pliigita fidindeco. Korespondado. Politiko. Kvar Rajdantoj de la Apokalipso sysadmin. Krom niaj ĉiutagaj taskoj - monitorado, sekurkopio, efektivigo, agordo, ĝisdatigo, ktp. - ni ankaŭ respondecas pri la sekureco de niaj sistemoj. Eĉ tiuj sistemoj, kie la triaparta provizanto rekomendas, ke ni malŝaltu plibonigitan sekurecon. Ĝi sentas kiel laboro Ethan Hunt de "Misio: Neebla."

Fronte al ĉi tiu dilemo, iuj sistemadministrantoj decidas preni blua pilolo, ĉar ili pensas, ke ili neniam scios la respondon al la granda demando pri vivo, la universo kaj ĉio tio. Kaj kiel ni ĉiuj scias, tiu respondo estas 42.

En la spirito de The Hitchhiker's Guide to the Galaxy, jen 42 respondoj al gravaj demandoj pri kontrolo kaj uzo. SELinux sur viaj sistemoj.

1. SELinux — estas deviga sistemo por kontroli aliron, kio signifas, ke ĉiu procezo havas etikedon. Ĉiu dosiero, dosierujo kaj sistema objekto ankaŭ havas etikedon. Politikaj reguloj regas aliron inter etikeditaj procezoj kaj objektoj. La kerno devigas ĉi tiujn regulojn.

2. La du plej gravaj konceptoj estas: Etikedado — markoj (dosieroj, procezoj, havenoj, ktp.) kaj Tajpu devigon (kiu izolas procezojn unu de la alia surbaze de tipoj).

3. Ĝusta etikedo formato user:role:type:level (laŭvola).

4. La celo provizi plurnivelan sekurecon (Plurnivela Sekureco - MLS) estas administri procezojn (domajnojn) surbaze de la nivelo de sekureco de la datumoj kiujn ili uzos. Ekzemple, sekreta procezo ne povas legi sekretegajn datumojn.

5. Certigante multkategorian sekurecon (Multi-Kategoria Sekureco - MCS) protektas similajn procezojn unu de la alia (ekz. virtualaj maŝinoj, OpenShift-motoroj, SE-sablokestojLinux, ujoj, ktp.).

6. Kernaj parametroj por ŝanĝi SE-reĝimojnLinux dum ŝarĝado:

  • autorelabel=1 → igas la sistemon ruli remarkadon
  • selinux=0 → la kerno ne ŝarĝas la SE-infrastrukturonLinux
  • enforcing=0 → ŝarĝo en permesa reĝimo

7. Se vi bezonas remarki la tutan sistemon:

# touch /.autorelabel
#reboot

Se la sistema markado enhavas grandan nombron da eraroj, vi eble bezonos ekŝalti en permesema reĝimo por ke rimarkado sukcesu.

8. Por kontroli ĉu SE estas ebligitaLinux: # getenforce

9. Por provizore ebligi/malebligi SELinux: # setenforce [1|0]

10. Kontrolado de SE-StatoLinux: # sestatus

11. Dosiero de agordo: /etc/selinux/config

12. Kiel SE funkciasLinuxJen ekzemplo de markado por la retservilo Apache:

  • Binara prezento: /usr/sbin/httpd→httpd_exec_t
  • Agorda dosierujo: /etc/httpd→httpd_config_t
  • Dosierujo de protokolo: /var/log/httpd → httpd_log_t
  • Enhava dosierujo: /var/www/html → httpd_sys_content_t
  • Lanĉa skripto: /usr/lib/systemd/system/httpd.service → httpd_unit_file_d
  • Procezo: /usr/sbin/httpd -DFOREGROUND → httpd_t
  • Havenoj: 80/tcp, 443/tcp → httpd_t, http_port_t

Procezo funkcianta en kunteksto httpd_t, povas interagi kun etikedita objekto httpd_something_t.

13. Multaj komandoj akceptas argumenton -Z por vidi, krei kaj ŝanĝi kuntekston:

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

Kuntekstoj estas establitaj kiam dosieroj estas kreitaj surbaze de la kunteksto de sia gepatra dosierujo (kun kelkaj esceptoj). RPMoj povas establi kuntekstojn kiel dum instalado.

14. Estas kvar ĉefaj kialoj por SE-erarojLinux, kiuj estas priskribitaj pli detale en paragrafoj 15-21 sube:

  • Etikedaj aferoj
  • Pro io, kion SELinux devas scii
  • Eraro en SE-politiko/aplikaĵoLinux
  • Viaj informoj povas esti endanĝerigitaj

15. Problemo pri etikedado: se viaj dosieroj estas en /srv/myweb estas markitaj malĝuste, aliro povas esti malakceptita. Jen kelkaj manieroj ripari ĉi tion:

  • Se vi konas la etikedon:
    # semanage fcontext -a -t httpd_sys_content_t '/srv/myweb(/.*)?'
  • Se vi konas dosieron kun ekvivalentaj markoj:
    # semanage fcontext -a -e /srv/myweb /var/www
  • Restarigante la kuntekston (por ambaŭ kazoj):
    # restorecon -vR /srv/myweb

16. Problemo pri etikedado: se vi movas la dosieron anstataŭ kopii ĝin, la dosiero konservos sian originan kuntekston. Por solvi ĉi tiun problemon:

  • Ŝanĝu la kuntekstan komandon kun la etikedo:
    # chcon -t httpd_system_content_t /var/www/html/index.html
  • Ŝanĝu la kuntekstan komandon kun la ligilo:
    # chcon --reference /var/www/html/ /var/www/html/index.html
  • Restarigu la kuntekston (por ambaŭ kazoj): # restorecon -vR /var/www/html/

17. se SELinux bezonas scii, ke HTTPD aŭskultas ĉe pordo 8585, diru al SELinux:

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

18. SELinux bezonas scii Buleaj valoroj, kiuj permesas al vi ŝanĝi partojn de la SE-politikoLinux dum rulado sen scio pri SE-strategireverkadoLinuxEkzemple, se vi volas, ke httpd sendu retpoŝton, tajpu: # setsebool -P httpd_can_sendmail 1

19. SELinux bezonas scii logikaj valoroj por ebligi/malebligi SE-agordojnLinux:

  • Por vidi ĉiujn buleajn valorojn: # getsebool -a
  • Por vidi priskribon de ĉiu: # semanage boolean -l
  • Por agordi bulean valoron: # setsebool [_boolean_] [1|0]
  • Por konstanta instalado, aldonu -P. Ekzemple: # setsebool httpd_enable_ftp_server 1 -P

20. SE-Politikoj/AplikojLinux povas enhavi erarojn, inkluzive de:

  • Nekutimaj kodaj vojoj
  • Agordoj
  • Redirektante stdout
  • Dosiera priskribilo fukas
  • Ekzekutebla memoro
  • Malbone konstruitaj bibliotekoj

Malfermu biletojn (ne sendu raporton al Bugzilla; Bugzilla ne havas SLA).

21. Viaj informoj povas esti endanĝerigitajse vi havas limigitajn domajnojn provante:

  • Ŝarĝu kernaj moduloj
  • Malŝalti devigitan reĝimon SELinux
  • Skribu al etc_t/shadow_t
  • Ŝanĝu regulojn de iptables

22. SE-IlojLinux por disvolvi politikajn modulojn:

# yum -y install setroubleshoot setroubleshoot-server

Rekomencu aŭ rekomencu auditd post instalado.

23. Uzu

journalctl

por montri liston de ĉiuj protokoloj asociitaj kun setroubleshoot:

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

24. Uzu journalctl por listigi ĉiujn protokolojn asociitajn kun specifa SE-etikedoLinux. Ekzemple:

# journalctl _SELINUX_CONTEXT=system_u:system_r:policykit_t:s0

25. Kiam SE-eraro okazasLinux uzi protokolon setroubleshoot proponante plurajn eblajn solvojn.
Ekzemple, de 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. Arbohakado: SELinux registras informojn en multaj lokoj:

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

27. Protokolado: Trovante SE-ErarojnLinux en la revizia protokolo:

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

28. Por trovi SE-mesaĝojnLinux Aliru Vektoran Kaŝmemoron (AVC) por specifa servo:

# ausearch -m avc -c httpd

29. Utileco audit2allow kolektas informojn el protokoloj de malpermesitaj operacioj kaj poste generas SE-permesajn politikoregulojnLinux. Ekzemple:

  • Por krei homlegeblan priskribon de kial aliro estas malakceptita: # audit2allow -w -a
  • Por vidi tipan plenuman regulon, kiu permesas rifuzitan aliron: # audit2allow -a
  • Por krei kutiman modulon: # audit2allow -a -M mypolicy
  • Opcio -M kreas tipan devigdosieron (.te) kun la specifita nomo kaj kompilas la regulon en politikan pakaĵon (.pp): mypolicy.pp mypolicy.te
  • Por instali kutiman modulon: # semodule -i mypolicy.pp

30. Por agordi apartan procezon (domajno) por labori en permesema reĝimo: # semanage permissive -a httpd_t

31. Se vi ne plu volas, ke la domajno estu permesema: # semanage permissive -d httpd_t

32. Por malŝalti ĉiujn permesajn domajnojn: # semodule -d permissivedomains

33. Ebligi MLS SE-politikonLinux: # yum install selinux-policy-mls
в /etc/selinux/config:

SELINUX=permesiva
SELINUXTYPE=mls

Certigu SELinux funkcias en permesema reĝimo: # setenforce 0
Uzu skripton fixfilespor certigi, ke la dosieroj estas reetikeditaj dum la sekva rekomenco:

# fixfiles -F onboot # reboot

34. Kreu uzanton kun specifa MLS-gamo: # useradd -Z staff_u john

Uzante la komandon useradd, mapu la novan uzanton al ekzistanta SE-uzantoLinux (tiuokaze, staff_u).

35. Por vidi la korespondadon inter SE-uzantojLinux и Linux: # semanage login -l

36. Difinu specifan intervalon por la uzanto: # semanage login --modify --range s2:c100 john

37. Por korekti la hejmdosierujon de la uzanto (se necese): # chcon -R -l s2:c100 /home/john

38. Por vidi aktualajn kategoriojn: # chcat -L

39. Por ŝanĝi kategoriojn aŭ komenci krei viajn proprajn, redaktu la dosieron jene:

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

40. Por ruli komandon aŭ skripton en specifa dosiero, rolo kaj uzantkunteksto:

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

  • -t dosiero kunteksto
  • -r rola kunteksto
  • -u uzanta kunteksto

41. Ujoj funkciantaj kun SE malŝaltitaLinux:

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

42. Se vi bezonas doni al la ujo plenan aliron al la sistemo:

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

Kaj nun vi jam scias la respondon. Do bonvolu: ne paniku kaj ŝaltu SE.Linux.

Referencoj

fonto: www.habr.com

Aĉetu fidindan gastigadon por retejoj kun DDoS-protekto, VPS-VDS-serviloj 🔥 Aĉetu fidindan retejan gastigadon kun DDoS-protekto, VPS VDS-servilojn | ProHoster