Goljufiv list za sistemskega administratorja v SELinux: 42 odgovorov na pomembna vprašanja

Prevod članka je bil pripravljen posebej za študente tečaja "Administrator Linux».

Goljufiv list za sistemskega administratorja v SELinux: 42 odgovorov na pomembna vprašanja

Tukaj boste dobili odgovore na pomembna vprašanja o življenju, vesolju in vsem, kar je v njem. Linux z izboljšano varnostjo.

"Pomembna resnica, da stvari niso vedno takšne, kot se zdijo, je splošno znana ..."

-Douglas Adams, Autostoperski vodnik po galaksiji

Varnost. Povečana zanesljivost. Dopisovanje. Politika. Sistemski administrator Štirje jezdeci apokalipse. Poleg vsakodnevnih nalog – spremljanje, varnostno kopiranje, implementacija, konfiguracija, posodabljanje itd. – smo odgovorni tudi za varnost naših sistemov. Tudi tisti sistemi, kjer tretji ponudnik priporoča, da onemogočimo povečano varnost. Zdi se kot delo Ethan Hunt iz filma "Misija: nemogoče".

Ko se soočijo s to dilemo, se nekateri sistemski skrbniki odločijo za uporabo modra tabletka, ker mislijo, da nikoli ne bodo izvedeli odgovora na veliko vprašanje življenja, vesolja in vsega tega. In kot vsi vemo, je ta odgovor 42.

V duhu Štoparskega vodnika po galaksiji je tukaj 42 odgovorov na pomembna vprašanja o nadzoru in uporabi. SELinux na vaših sistemih.

1. SELinux — je obvezen sistem nadzora dostopa, kar pomeni, da ima vsak proces oznako. Vsaka datoteka, imenik in sistemski objekt ima tudi oznako. Pravila politike urejajo dostop med označenimi procesi in objekti. Jedro uveljavlja ta pravila.

2. Dva najpomembnejša pojma sta: Označevanje — oznake (datoteke, procesi, vrata itd.) in Vrsta uveljavitve (ki ločuje procese drug od drugega na podlagi tipov).

3. Pravilna oblika etikete user:role:type:level (neobvezno).

4. Namen zagotavljanja večnivojske varnosti (Varnost na več ravneh – MLS) je upravljanje procesov (domen) glede na stopnjo varnosti podatkov, ki jih bodo uporabljali. Skrivni proces na primer ne more brati strogo zaupnih podatkov.

5. Zagotavljanje večkategorijske varnosti (Multi-Category Security - MCS) ščiti podobne procese drug pred drugim (npr. virtualne stroje, OpenShift motorje, SE sandboxe)Linux, zabojniki itd.).

6. Parametri jedra za spreminjanje načinov SELinux pri nalaganju:

  • autorelabel=1 → povzroči, da sistem izvede ponovno označevanje
  • selinux=0 → jedro ne naloži infrastrukture SELinux
  • enforcing=0 → nalaganje v dovoljenem načinu

7. Če morate znova označiti celoten sistem:

# touch /.autorelabel
#reboot

Če označevanje sistema vsebuje veliko število napak, se boste morda morali zagnati v dovoljenem načinu, da bo označevanje uspelo.

8. Preverjanje, ali je SE omogočenLinux: # getenforce

9. Za začasno omogočanje/onemogočanje SELinux: # setenforce [1|0]

10. Preverjanje stanja SELinux: # sestatus

11. Konfiguracijska datoteka: /etc/selinux/config

12. Kako deluje SELinuxTukaj je primer označevanja za spletni strežnik Apache:

  • Binarna predstavitev: /usr/sbin/httpd→httpd_exec_t
  • Imenik konfiguracije: /etc/httpd→httpd_config_t
  • Imenik dnevniške datoteke: /var/log/httpd → httpd_log_t
  • Imenik vsebine: /var/www/html → httpd_sys_content_t
  • Zaženi skript: /usr/lib/systemd/system/httpd.service → httpd_unit_file_d
  • Proces: /usr/sbin/httpd -DFOREGROUND → httpd_t
  • Pristanišča: 80/tcp, 443/tcp → httpd_t, http_port_t

Proces teče v kontekstu httpd_t, lahko komunicira z označenim predmetom httpd_something_t.

13. Mnogi ukazi sprejmejo argument -Z za ogled, ustvarjanje in spreminjanje konteksta:

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

Konteksti so vzpostavljeni, ko so datoteke ustvarjene na podlagi konteksta njihovega nadrejenega imenika (z nekaterimi izjemami). RPM-ji lahko vzpostavijo kontekst kot med namestitvijo.

14. Obstajajo štirje glavni razlogi za napake SELinux, ki so podrobneje opisani v odstavkih 15–21 spodaj:

  • Težave z označevanjem
  • Zaradi nečesa, kar SELinux bi moral vedeti
  • Napaka v pravilniku/aplikaciji SELinux
  • Vaši podatki so lahko ogroženi

15. Težava z označevanjem: če so vaše datoteke v /srv/myweb so nepravilno označeni, bo dostop morda zavrnjen. Tukaj je nekaj načinov, kako to popraviti:

  • Če poznate oznako:
    # semanage fcontext -a -t httpd_sys_content_t '/srv/myweb(/.*)?'
  • Če poznate datoteko z enakovrednimi oznakami:
    # semanage fcontext -a -e /srv/myweb /var/www
  • Obnovitev konteksta (za oba primera):
    # restorecon -vR /srv/myweb

16. Težava z označevanjem: če datoteko premaknete, namesto da bi jo kopirali, bo datoteka ohranila prvotni kontekst. Če želite odpraviti to težavo:

  • Spremenite kontekstni ukaz z oznako:
    # chcon -t httpd_system_content_t /var/www/html/index.html
  • Spremenite kontekstni ukaz z oznako povezave:
    # chcon --reference /var/www/html/ /var/www/html/index.html
  • Obnovite kontekst (za oba primera): # restorecon -vR /var/www/html/

17. če SELinux moram vedeti, da HTTPD posluša na vratih 8585, povejte SELinux:

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

18. SELinux moram vedeti Logične vrednosti, ki vam omogočajo spreminjanje delov pravilnika SELinux med izvajanjem brez poznavanja prepisovanja pravilnikov SELinuxNa primer, če želite, da httpd pošilja e-pošto, vnesite: # setsebool -P httpd_can_sendmail 1

19. SELinux moram vedeti logične vrednosti za omogočanje/onemogočanje nastavitev SELinux:

  • Če želite videti vse logične vrednosti: # getsebool -a
  • Če si želite ogledati opis vsakega: # semanage boolean -l
  • Če želite nastaviti logično vrednost: # setsebool [_boolean_] [1|0]
  • Za trajno namestitev dodajte -P. Na primer: # setsebool httpd_enable_ftp_server 1 -P

20. Politike/aplikacije SELinux lahko vsebuje napake, vključno z:

  • Nenavadne kodne poti
  • Konfiguracije
  • Preusmerjanje stdout
  • Puščanje deskriptorja datoteke
  • Izvedljiv pomnilnik
  • Slabo zgrajene knjižnice

Odprite vstopnice (ne oddajte poročila Bugzilli; Bugzilla nima SLA).

21. Vaši podatki so lahko ogroženiče imate omejene domene, ki poskušajo:

  • Naloži module jedra
  • Onemogoči vsiljeni način SELinux
  • Pišite etc_t/shadow_t
  • Spremenite pravila iptables

22. SE orodjaLinux za razvoj modulov politik:

# yum -y install setroubleshoot setroubleshoot-server

Ponovno zaženite ali ponovno zaženite auditd po namestitvi.

23. Uporabi

journalctl

za prikaz seznama vseh dnevnikov, povezanih z setroubleshoot:

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

24. Uporabi journalctl za seznam vseh dnevnikov, povezanih z določeno oznako SELinux. Na primer:

# journalctl _SELINUX_CONTEXT=system_u:system_r:policykit_t:s0

25. Ko pride do napake SELinux dnevnik uporabe setroubleshoot ponuja več možnih rešitev.
Na primer 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. Sečnja: JVLinux beleži podatke na več mestih:

  • / var / log / sporočila
  • /var/log/audit/audit.log
  • /var/lib/setroubleshoot/setroubleshoot_database.xml

27. Beleženje: Iskanje napak SELinux v dnevniku revizije:

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

28. Iskanje sporočil SELinux Dostop do vektorskega predpomnilnika (AVC) za določeno storitev:

# ausearch -m avc -c httpd

29. Uporabnost audit2allow zbira informacije iz dnevnikov prepovedanih operacij in nato generira pravila politike dovoljenj SELinux. Na primer:

  • Če želite ustvariti človeku berljiv opis, zakaj je dostop zavrnjen: # audit2allow -w -a
  • Če si želite ogledati pravilo uveljavljanja vrste, ki dovoljuje zavrnjen dostop: # audit2allow -a
  • Če želite ustvariti modul po meri: # audit2allow -a -M mypolicy
  • Možnost -M ustvari datoteko za uveljavljanje tipa (.te) s podanim imenom in prevede pravilo v paket pravilnika (.pp): mypolicy.pp mypolicy.te
  • Če želite namestiti modul po meri: # semodule -i mypolicy.pp

30. Za konfiguracijo ločenega procesa (domene) za delo v dovoljenem načinu: # semanage permissive -a httpd_t

31. Če ne želite več, da je domena permisivna: # semanage permissive -d httpd_t

32. Če želite onemogočiti vse permisivne domene: # semodule -d permissivedomains

33. Omogočanje pravilnika MLS SELinux: # yum install selinux-policy-mls
в /etc/selinux/config:

SELINUX=dovoljen
SELINUXTYPE=mls

Prepričajte se, da SELinux deluje v permisivnem načinu: # setenforce 0
Uporabite skript fixfilesda zagotovite, da so datoteke ob naslednjem ponovnem zagonu ponovno označene:

# fixfiles -F onboot # reboot

34. Ustvarite uporabnika z določenim obsegom MLS: # useradd -Z staff_u john

Uporaba ukaza useradd, preslikajte novega uporabnika na obstoječega uporabnika SELinux (v tem primeru, staff_u).

35. Za ogled korespondence med uporabniki SELinux и Linux: # semanage login -l

36. Določite določen obseg za uporabnika: # semanage login --modify --range s2:c100 john

37. Če želite popraviti oznako domačega imenika uporabnika (če je potrebno): # chcon -R -l s2:c100 /home/john

38. Za ogled trenutnih kategorij: # chcat -L

39. Če želite spremeniti kategorije ali začeti ustvarjati svojo, uredite datoteko na naslednji način:

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

40. Če želite zagnati ukaz ali skript v določeni datoteki, vlogi in uporabniškem kontekstu:

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

  • -t kontekst datoteke
  • -r kontekst vloge
  • -u uporabniški kontekst

41. Kontejnerji se izvajajo z onemogočenim SELinux:

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

42. Če morate vsebniku omogočiti popoln dostop do sistema:

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

In zdaj že poznate odgovor. Zato prosim: brez panike in vklopite SE.Linux.

Reference:

Vir: www.habr.com

Kupite zanesljivo gostovanje za strani z DDoS zaščito, VPS VDS strežniki 🔥 Kupite zanesljivo spletno gostovanje z zaščito DDoS, VPS VDS strežniki | ProHoster