Cheat Sheet pre správcu systému na SELinux42 odpovedí na dôležité otázky

Preklad článku bol pripravený špeciálne pre študentov kurzu „Administrátor Linux».

Cheat Sheet pre správcu systému na SELinux42 odpovedí na dôležité otázky

Tu nájdete odpovede na dôležité otázky o živote, vesmíre a všetkom, čo sa deje v... Linux so zvýšenou bezpečnosťou.

„Dôležitá pravda, že veci nie sú vždy také, aké sa zdajú byť, je všeobecne známa...“

―Douglas Adams, Stopárov sprievodca po Galaxii

Bezpečnosť. Spoľahlivosť. Súlad. Politika. Štyria jazdci apokalypsy systémových administrátorov. Okrem našich každodenných úloh – monitorovania, zálohovania, nasadzovania, konfigurácie, aktualizácií atď. – sme zodpovední aj za bezpečnosť našich systémov. Dokonca aj tých systémov, u ktorých poskytovateľ tretej strany odporúča vypnúť rozšírené zabezpečenie. Zdá sa, že to funguje. Ethan Hunt z filmu „Misia nemožná“.

Tvárou v tvár tejto dileme sa niektorí správcovia systému rozhodnú modrá pilulka, pretože si myslia, že nikdy nebudú poznať odpoveď na veľkú otázku života, vesmíru a všetkého ostatného. A ako všetci vieme, táto odpoveď je 42.

V duchu Stopárovho sprievodcu po Galaxii prinášame 42 odpovedí na dôležité otázky týkajúce sa ovládania a používania. SELinux vo vašich systémoch.

1. SELinux — je povinný systém riadenia prístupu, čo znamená, že každý proces má označenie. Každý súbor, adresár a systémový objekt má tiež označenie. Pravidlá politiky riadia prístup medzi označenými procesmi a objektmi. Jadro vynucuje dodržiavanie týchto pravidiel.

2. Dva najdôležitejšie koncepty sú: označovanie — označovanie (súborov, procesov, portov atď.) a Vynucovanie typu (ktorý izoluje procesy od seba na základe typov).

3. Správny formát štítku user:role:type:level (voliteľné).

4. Účelom zabezpečenia viacúrovňovej bezpečnosti (Viacúrovňové zabezpečenie (MLS)) je správa procesov (domén) na základe úrovne zabezpečenia údajov, ktoré budú používať. Napríklad tajný proces nemôže čítať prísne tajné údaje.

5. Zabezpečenie bezpečnosti vo viacerých kategóriách (Viackategóriová bezpečnosť – MCS) chráni podobné procesy navzájom (napr. virtuálne stroje, OpenShift enginy, SE sandboxy)Linux, kontajnery atď.).

6. Parametre jadra pre zmenu SE režimovLinux pri nakladaní:

  • autorelabel=1 → núti systém spustiť preznačovanie
  • selinux=0 → jadro nezaťažuje infraštruktúru SELinux
  • enforcing=0 → spustenie v povolenom režime

7. Ak potrebujete preznačiť celý systém:

# touch /.autorelabel
#reboot

Ak označenie systému obsahuje veľký počet chýb, možno budete musieť systém spustiť v permisívnom režime, aby sa opätovné označenie úspešne prebehlo.

8. Ak chcete skontrolovať, či je SE povolenéLinux: # getenforce

9. Dočasné zapnutie/vypnutie SELinux: # setenforce [1|0]

10. Kontrola stavu SELinux: # sestatus

11. Konfiguračný súbor: /etc/selinux/config

12. Ako funguje SELinuxTu je príklad označenia pre webový server Apache:

  • Binárna reprezentácia: /usr/sbin/httpd→httpd_exec_t
  • Konfiguračný adresár: /etc/httpd→httpd_config_t
  • Adresár súborov denníka: /var/log/httpd → httpd_log_t
  • Adresár obsahu: /var/www/html → httpd_sys_content_t
  • Spúšťací skript: /usr/lib/systemd/system/httpd.service → httpd_unit_file_d
  • postup: /usr/sbin/httpd -DFOREGROUND → httpd_t
  • Porty: 80/tcp, 443/tcp → httpd_t, http_port_t

Proces bežiaci v kontexte httpd_t, môže interagovať s označeným objektom httpd_something_t.

13. Mnoho príkazov akceptuje argument -Z na zobrazenie, vytvorenie a úpravu kontextu:

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

Kontexty sa nastavujú pri vytváraní súborov na základe kontextu ich nadradeného adresára (s niekoľkými výnimkami). RPM balíky môžu nastavovať kontexty počas inštalácie aj počas behu.

14. Existujú štyri hlavné dôvody chýb SELinux, ktoré sú podrobnejšie opísané v odsekoch 15 – 21 nižšie:

  • Problémy s označovaním
  • Kvôli niečomu, čo SELinux musí vedieť
  • Chyba v politike/aplikácii SELinux
  • Vaše informácie môžu byť ohrozené

15. Problém s označovaním: ak sú vaše súbory v /srv/myweb Ak sú označené nesprávne, prístup môže byť zamietnutý. Tu je niekoľko spôsobov, ako to opraviť:

  • Ak poznáte označenie:
    # semanage fcontext -a -t httpd_sys_content_t '/srv/myweb(/.*)?'
  • Ak poznáte súbor s ekvivalentným označením:
    # semanage fcontext -a -e /srv/myweb /var/www
  • Obnovenie kontextu (v oboch prípadoch):
    # restorecon -vR /srv/myweb

16. Problém s označovaním: Ak súbor presuniete namiesto kopírovania, súbor si zachová svoj pôvodný kontext. Ak chcete tento problém vyriešiť:

  • Zmeňte kontextový príkaz s popisom:
    # chcon -t httpd_system_content_t /var/www/html/index.html
  • Zmeňte kontextový príkaz s označením odkazu:
    # chcon --reference /var/www/html/ /var/www/html/index.html
  • Obnoviť kontext (pre oba prípady): # restorecon -vR /var/www/html/

17. Ak SELinux potrebujem vedieť, že HTTPD počúva na porte 8585, povedzte SELinux:

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

18. SELinux potrebujem vedieť Boolovské hodnoty, ktoré vám umožňujú zmeniť časti politiky SELinux za behu bez znalosti prepisovania politík SELinuxNapríklad, ak chcete, aby httpd odosielal e-maily, zadajte: # setsebool -P httpd_can_sendmail 1

19. SELinux potrebujem vedieť logické hodnoty pre povolenie/zakázanie nastavení SELinux:

  • Ak chcete zobraziť všetky logické hodnoty: # getsebool -a
  • Ak chcete zobraziť popis každého z nich: # semanage boolean -l
  • Nastavenie logickej hodnoty: # setsebool [_boolean_] [1|0]
  • Pre trvalú inštaláciu pridajte -P, Napríklad: # setsebool httpd_enable_ftp_server 1 -P

20. Zásady/žiadosti SELinux môže obsahovať chyby, vrátane:

  • Nezvyčajné cesty kódu
  • Konfigurácie
  • Presmerovanie stdout
  • Úniky deskriptorov súborov
  • Spustiteľná pamäť
  • Zle postavené knižnice

Otvorené tikety (neposielajte hlásenie do Bugzilly; Bugzilla nemá SLA).

21. Vaše informácie môžu byť ohrozené, ak máte obmedzené domény, ktoré sa snažia:

  • Načítanie modulov jadra
  • Zakázať vynútený režim SELinux
  • Napísať etc_t/shadow_t
  • Zmena pravidiel iptables

22. Nástroje SELinux pre vývoj politických modulov:

# yum -y install setroubleshoot setroubleshoot-server

Reštart alebo reštart auditd po inštalácii.

23. použitie

journalctl

zobraziť zoznam všetkých protokolov súvisiacich s setroubleshoot:

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

24. použitie journalctl zobraziť zoznam všetkých protokolov priradených ku konkrétnej značke SELinux, Napríklad:

# journalctl _SELINUX_CONTEXT=system_u:system_r:policykit_t:s0

25. Keď sa vyskytne chyba SELinux použiť protokol setroubleshoot s návrhom niekoľkých možných riešení.
Napríklad od 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. Ťažba dreva: SELinux zaznamenáva informácie na mnohých miestach:

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

27. Záznamy: Hľadanie chýb SELinux v protokole auditu:

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

28. Vyhľadanie správ SELinux Prístup k vektorovej vyrovnávacej pamäti (AVC) pre konkrétnu službu:

# ausearch -m avc -c httpd

29. Užitočnosť audit2allow zhromažďuje informácie zo záznamov o zakázaných operáciách a následne generuje pravidlá politiky povolení SELinux, Napríklad:

  • Ak chcete vytvoriť čitateľný popis dôvodu odmietnutia prístupu: # audit2allow -w -a
  • Ak chcete zobraziť pravidlo presadzovania typu, ktoré povoľuje odmietnutý prístup: # audit2allow -a
  • Vytvorenie vlastného modulu: # audit2allow -a -M mypolicy
  • Možnosť -M Vytvorí súbor vynucovania typu (.te) so zadaným názvom a skompiluje pravidlo do balíka politík (.pp): mypolicy.pp mypolicy.te
  • Inštalácia vlastného modulu: # semodule -i mypolicy.pp

30. Ak chcete nakonfigurovať samostatný proces (doménu) na spustenie v permisívnom režime: # semanage permissive -a httpd_t

31. Ak už nechcete, aby bola doména permisívna: # semanage permissive -d httpd_t

32. Ak chcete zakázať všetky povolené domény: # semodule -d permissivedomains

33. Povolenie politiky MLS SELinux: # yum install selinux-policy-mls
в /etc/selinux/config:

SELINUX=povolený
SELINUXTYPE=mls

Uistite sa, že SELinux pracuje v permisívnom režime: # setenforce 0
Použite skript fixfilesaby sa zabezpečilo, že súbory budú pri ďalšom reštarte premenované:

# fixfiles -F onboot # reboot

34. Vytvorte používateľa s konkrétnym rozsahom MLS: # useradd -Z staff_u john

Pomocou príkazu useradd, namapujte nového používateľa na existujúceho používateľa SELinux (v tomto prípade, staff_u).

35. Zobrazenie korešpondencie medzi používateľmi SELinux и Linux: # semanage login -l

36. Definujte konkrétny rozsah pre používateľa: # semanage login --modify --range s2:c100 john

37. Ak chcete opraviť označenie v domovskom adresári používateľa (ak je to potrebné): # chcon -R -l s2:c100 /home/john

38. Ak chcete zobraziť aktuálne kategórie: # chcat -L

39. Ak chcete zmeniť kategórie alebo začať vytvárať vlastné, upravte súbor takto:

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

40. Ak chcete spustiť príkaz alebo skript v konkrétnom súbore, role a kontexte používateľa:

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

  • -t kontext súboru
  • -r kontext roly
  • -u kontext používateľa

41. Kontajnery spustené s vypnutým SELinux:

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

42. Ak potrebujete udeliť kontajneru plný prístup k systému:

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

A teraz už odpoveď poznáte. Takže prosím: neprepadajte panike a zapnite SE.Linux.

odkazy:

Zdroj: hab.com

Kúpte si spoľahlivý hosting pre stránky s DDoS ochranou, VPS VDS servery 🔥 Kúpte si spoľahlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster