In spiekbriefke foar in systeembehearder op SELinux: 42 antwurden op wichtige fragen

De oersetting fan it artikel waard spesifyk taret foar de learlingen fan 'e kursus "Behearder Linux».

In spiekbriefke foar in systeembehearder op SELinux: 42 antwurden op wichtige fragen

Hjir krije jo antwurden op wichtige fragen oer it libben, it universum en alles yn Linux mei ferbettere feiligens.

"De wichtige wierheid dat dingen net altyd binne wat se lykje is gewoane kennis ..."

-Douglas Adams, De Hitchhiker's Guide to the Galaxy

Feilichheid. Ferhege betrouberens. Korrespondinsje. Belied. Four Horsemen of the Apocalypse sysadmin. Neist Ășs deistige taken - tafersjoch, reservekopy, ymplemintaasje, konfiguraasje, fernijing, ensfh - binne wy ​​ek ferantwurdlik foar de feiligens fan Ășs systemen. Sels dy systemen wĂȘr't de provider fan tredden advisearret dat wy ferbettere feiligens Ăștskeakelje. It fielt as wurk Ethan Hunt fan "Mission: Impossible."

Mei dit dilemma beslute guon systeembehearders te nimmen blauwe pil, om't se tinke dat se it antwurd nea witte sille op 'e grutte fraach fan it libben, it universum en dat alles. En sa't wy allegearre witte, is dat antwurd 42.

Yn 'e geast fan The Hitchhiker's Guide to the Galaxy, hjir binne 42 antwurden op wichtige fragen oer kontrÎle en gebrûk. SELinux op jo systemen.

1. SELinux — is in ferplicht tagongskontrîlesysteem, wat betsjut dat elk proses in label hat. Elk bestñn, elke map en elk systeemobjekt hat ek in label. Beliedsregels regelje tagong tusken labelde prosessen en objekten. De kernel hanthavenet dizze regels.

2. De twa wichtichste begripen binne: Labeling - markearrings (bestannen, prosessen, havens, ensfh.) en Typ hanthavenjen (dat isolearret prosessen fan elkoar basearre op typen).

3. Korrekte labelformaat user:role:type:level (fakultatyf).

4. It doel fan befeiliging op meardere nivo's (Multi-Level Security - MLS) is om prosessen (domeinen) te behearjen basearre op it nivo fan feiligens fan 'e gegevens dy't se sille brĂ»ke. Bygelyks, in geheim proses kin net lĂȘze top geheime gegevens.

5. Befeiliging fan meardere kategoryen garandearje (Multi-Category Security - MCS) beskermet ferlykbere prosessen fan elkoar (bygelyks firtuele masines, OpenShift-motors, SE-sĂąnbakkenLinux, konteners, ensfh.).

6. Kernelparameters foar it feroarjen fan SE-modiLinux by it laden:

  • autorelabel=1 → feroarsaket it systeem om relabeling Ășt te fieren
  • selinux=0 → de kernel laadt de SE-ynfrastruktuer netLinux
  • enforcing=0 → laden yn permissive modus

7. As jo ​​​​it heule systeem opnij moatte markearje:

# touch /.autorelabel
#reboot

As de systeemmarkearring in grut oantal flaters befettet, moatte jo miskien bootje yn permissive modus foar it slagjen fan remarking.

8. Om te kontrolearjen oft SE ynskeakele isLinux: # getenforce

9. Om SE tydlik yn/Ășt te skeakeljenLinux: # setenforce [1|0]

10. SE-status kontrolearjeLinux: # sestatus

11. Konfiguraasjetriem: /etc/selinux/config

12. Hoe SE wurketLinuxHjir is in foarbyld fan markearring foar de Apache-webserver:

  • BinĂȘre fertsjintwurdiging: /usr/sbin/httpd→httpd_exec_t
  • Konfiguraasjemap: /etc/httpd→httpd_config_t
  • Logtriemmap: /var/log/httpd → httpd_log_t
  • YnhĂąld map: /var/www/html → httpd_sys_content_t
  • Launch skript: /usr/lib/systemd/system/httpd.service → httpd_unit_file_d
  • Procesje: /usr/sbin/httpd -DFOREGROUND → httpd_t
  • Poarten: 80/tcp, 443/tcp → httpd_t, http_port_t

Proses rint yn kontekst httpd_t, kin ynteraksje mei in markearre foarwerp httpd_something_t.

13. In protte kommando's akseptearje in argumint -Z om kontekst te besjen, te meitsjen en te feroarjen:

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

Konteksten wurde fĂȘststeld as bestannen makke wurde basearre op 'e kontekst fan har Ăąldermap (mei guon ĂștsĂ»nderings). RPM's kinne konteksten fĂȘstigje lykas by ynstallaasje.

14. Der binne fjouwer haadredenen foar SE-flatersLinux, dy't yn mear detail beskreaun wurde yn paragrafen 15-21 hjirûnder:

  • Labeling saken
  • Fanwegen eat dat SELinux moat witte
  • Fout yn SE-belied/applikaasjeLinux
  • Jo ynformaasje kin kompromittearre wurde

15. Labeling probleem: as jo bestannen yn binne /srv/myweb binne ferkeard markearre, tagong kin wurde wegere. Hjir binne wat manieren om dit te reparearjen:

  • As jo ​​​​it label kenne:
    # semanage fcontext -a -t httpd_sys_content_t '/srv/myweb(/.*)?'
  • As jo ​​​​in bestĂąn kenne mei lykweardige markearring:
    # semanage fcontext -a -e /srv/myweb /var/www
  • De kontekst weromsette (foar beide gefallen):
    # restorecon -vR /srv/myweb

16. Labeling probleem: as jo it bestĂąn ferpleatse ynstee fan it te kopiearjen, sil it bestĂąn syn oarspronklike kontekst behĂąlde. Om dit probleem op te lossen:

  • Feroarje it kontekstkommando mei it label:
    # chcon -t httpd_system_content_t /var/www/html/index.html
  • Feroarje it kontekstkommando mei it linklabel:
    # chcon --reference /var/www/html/ /var/www/html/index.html
  • De kontekst weromsette (foar beide gefallen): # restorecon -vR /var/www/html/

17. as SELinux moatte witte, dat HTTPD harket op poarte 8585, fertel SELinux:

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

18. SELinux moatte witte Booleaanske wearden dy't jo tastean om dielen fan it SE-belied te feroarjenLinux by runtime sûnder kennis fan SE-beliedsherskriuwingLinuxBygelyks, as jo wolle dat httpd e-post ferstjoert, fier dan yn: # setsebool -P httpd_can_sendmail 1

19. SELinux moatte witte logyske wearden foar it ynskeakeljen/Ăștskeakeljen fan SE-ynstellingenLinux:

  • Om alle Booleaanske wearden te sjen: # getsebool -a
  • Om in beskriuwing fan elk te sjen: # semanage boolean -l
  • Om in Booleaanske wearde yn te stellen: # setsebool [_boolean_] [1|0]
  • Foar in permaninte ynstallaasje, add -P. Bygelyks: # setsebool httpd_enable_ftp_server 1 -P

20. SE-belied/applikaasjesLinux kin flaters befetsje, ynklusyf:

  • Ungewoane koade paden
  • Konfiguraasjes
  • Stdout trochferwizing
  • BestĂąnsbeskriuwing lekt
  • Utfierber Ă»nthĂąld
  • Min boude biblioteken

Iepenje tickets (ferslach net yntsjinje by Bugzilla; Bugzilla hat gjin SLA).

21. Jo ynformaasje kin kompromittearre wurdeas jo beheinde domeinen hawwe besykje te:

  • Laad kernel modules
  • SE-ĂŽftwongen modus ĂștskeakeljeLinux
  • Skriuw nei etc_t/shadow_t
  • Feroarje iptables regels

22. SE-arkLinux foar it ûntwikkeljen fan beliedsmodules:

# yum -y install setroubleshoot setroubleshoot-server

Reboot of opnij starte auditd nei ynstallaasje.

23. Gebrûk

journalctl

om in list fan alle logs te sjen dy't ferbûn binne mei setroubleshoot:

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

24. Gebrûk journalctl om alle logs te listjen dy't ferbûn binne mei in spesifike SE-tagLinux. Bygelyks:

# journalctl _SELINUX_CONTEXT=system_u:system_r:policykit_t:s0

25. As in SE-flater optreedtLinux logboek brûke setroubleshoot biedt ferskate mooglike oplossingen.
Bygelyks, fan 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 registrearret ynformaasje op in protte plakken:

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

27. Logging: SE-fouten fineLinux yn it auditlogboek:

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

28. Om SE-berjochten te finenLinux Tagong ta Vector Cache (AVC) foar in spesifike tsjinst:

# ausearch -m avc -c httpd

29. Utility audit2allow sammelet ynformaasje Ășt logs fan ferbeane operaasjes en genereart dan SE-tastimmingsbeliedsregelsLinux. Bygelyks:

  • Om in minsklik lĂȘsbere beskriuwing te meitsjen fan wĂȘrom tagong wegere wurdt: # audit2allow -w -a
  • Om in type hanthaveningsregel te besjen dy't tagong wegere jout: # audit2allow -a
  • Om in oanpaste module te meitsjen: # audit2allow -a -M mypolicy
  • Opsje -M makket in type hanthaveningsbestĂąn (.te) mei de opjĂ»ne namme en kompilearret de regel yn in beliedspakket (.pp): mypolicy.pp mypolicy.te
  • Om in oanpaste module te ynstallearjen: # semodule -i mypolicy.pp

30. Om in apart proses (domein) te konfigurearjen om yn permissive modus te wurkjen: # semanage permissive -a httpd_t

31. As jo ​​​​net langer wolle dat it domein permissyf is: # semanage permissive -d httpd_t

32. Om alle permissive domeinen Ășt te skeakeljen: # semodule -d permissivedomains

33. MLS SE-belied ynskeakeljeLinux: # yum install selinux-policy-mls
ĐČ /etc/selinux/config:

SELINUX=permissyf
SELINUXTYPE=mls

Soargje derfoar dat SELinux wurket yn permissive modus: # setenforce 0
Brûk in skript fixfilesom te soargjen dat de bestannen opnij wurde markearre by de folgjende herstart:

# fixfiles -F onboot # reboot

34. Meitsje in brûker mei in spesifyk MLS-berik: # useradd -Z staff_u john

Mei help fan it kommando useradd, wize de nije brûker ta oan in besteande SE-brûkerLinux (yn dit gefal, staff_u).

35. Om de korrespondinsje tusken SE-brûkers te besjenLinux О Linux: # semanage login -l

36. Definiearje in spesifyk berik foar de brûker: # semanage login --modify --range s2:c100 john

37. Om it label fan 'e thĂșsmap fan 'e brĂ»ker te korrigearjen (as nedich): # chcon -R -l s2:c100 /home/john

38. Om hjoeddeistige kategoryen te besjen: # chcat -L

39. Om kategoryen te feroarjen of jo eigen te begjinnen, bewurkje it bestĂąn as folget:

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

40. Om in kommando of skript Ășt te fieren yn in spesifike triem, rol en brĂ»kerskontekst:

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

  • -t triem kontekst
  • -r rol kontekst
  • -u brĂ»ker kontekst

41. Konteners dy't rinne mei SE ĂștskeakeleLinux:

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

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


42. As jo ​​​​de kontener folsleine tagong moatte jaan ta it systeem:

  • Podman: # podman run --privileged 

  • Docker: # docker run --privileged 


En no witte jo it antwurd al. Dus asjebleaft: gjin panyk en set SE oanLinux.

Ferwizings:

Boarne: www.habr.com

Keapje betroubere hosting foar siden mei DDoS-beskerming, VPS VDS-tsjinners đŸ”„ Keapje betroubere websidehosting mei DDoS-beskerming, VPS VDS-tsjinners | ProHoster