SELinux csalólap rendszergazdáknak: 42 válasz fontos kérdésekre

A cikk fordítása kifejezetten a kurzus hallgatói számára készült "Linux rendszergazda".

SELinux csalólap rendszergazdáknak: 42 válasz fontos kérdésekre

Itt választ kapsz az élettel, az univerzummal és mindennel kapcsolatos fontos kérdésekre a fokozott biztonság mellett.

"Az a fontos igazság, hogy a dolgok nem mindig azok, aminek látszanak, köztudott..."

-Douglas Adams, A stoppos Útmutató a galaxishoz

Biztonság. Megnövelt megbízhatóság. Levelezés. Irányelv. Az Apokalipszis négy lovasa sysadmin. A napi feladataink mellett - figyelés, mentés, implementáció, konfiguráció, frissítés, stb. - rendszereink biztonságáért is felelősek vagyunk. Még azok a rendszerek is, ahol a külső szolgáltató a fokozott biztonság letiltását javasolja. Munkának tűnik Ethan Hunt a „Mission: Impossible” című filmből.

Ezzel a dilemmával szembesülve egyes rendszergazdák úgy döntenek, hogy megteszik kék pirula, mert azt hiszik, soha nem fogják megtudni a választ az élet nagy kérdésére, az univerzumra és mindenre. És mint mindannyian tudjuk, ez a válasz a 42.

A Galaxis útikalauz stopposoknak szellemében itt 42 válasz található a vezérléssel és a használattal kapcsolatos fontos kérdésekre. SELinux a rendszereiben.

1. A SELinux egy kényszerített hozzáférés-vezérlő rendszer, ami azt jelenti, hogy minden folyamatnak van címkéje. Minden fájlnak, könyvtárnak és rendszerobjektumnak van címkéje is. A házirendszabályok szabályozzák a címkézett folyamatok és objektumok közötti hozzáférést. A kernel kényszeríti ki ezeket a szabályokat.

2. A két legfontosabb fogalom: Címkézés — jelölések (fájlok, folyamatok, portok stb.) és Típusérvényesítés (amely típusok alapján elszigeteli egymástól a folyamatokat).

3. Helyes címkeformátum user:role:type:level (választható).

4. A többszintű biztonság biztosítása (Többszintű biztonság – MLS) célja a folyamatok (domainek) kezelése az általuk felhasznált adatok biztonsági szintje alapján. Például egy titkos folyamat nem tud szigorúan titkos adatokat olvasni.

5. Több kategóriás biztonság biztosítása (Több kategóriás biztonság – MCS) védi a hasonló folyamatokat egymástól (például virtuális gépek, OpenShift motorok, SELinux sandboxok, konténerek stb.).

6. Kernelbeállítások a SELinux módok megváltoztatásához rendszerindításkor:

  • autorelabel=1 → a rendszer átcímkézést indít el
  • selinux=0 → a kernel nem tölti be a SELinux infrastruktúrát
  • enforcing=0 → betöltés megengedő módban

7. Ha a teljes rendszert át kell címkézni:

# touch /.autorelabel
#reboot

Ha a rendszerjelölés nagyszámú hibát tartalmaz, előfordulhat, hogy engedélyező módban kell indítania a rendszerindítást, hogy a megjegyzés sikeres legyen.

8. Annak ellenőrzéséhez, hogy a SELinux engedélyezve van-e: # getenforce

9. A SELinux ideiglenes engedélyezése/letiltása: # setenforce [1|0]

10. A SELinux állapotának ellenőrzése: # sestatus

11. Konfigurációs fájl: /etc/selinux/config

12. Hogyan működik a SELinux? Íme egy példa az Apache webszerver jelölésére:

  • Bináris ábrázolás: /usr/sbin/httpd→httpd_exec_t
  • Konfigurációs könyvtár: /etc/httpd→httpd_config_t
  • Naplófájl könyvtár: /var/log/httpd → httpd_log_t
  • Tartalomkönyvtár: /var/www/html → httpd_sys_content_t
  • Indítsa el a szkriptet: /usr/lib/systemd/system/httpd.service → httpd_unit_file_d
  • folyamat: /usr/sbin/httpd -DFOREGROUND → httpd_t
  • Portok: 80/tcp, 443/tcp → httpd_t, http_port_t

A folyamat kontextusban fut httpd_t, kölcsönhatásba léphet egy címkézett objektummal httpd_something_t.

13. Sok parancs elfogad egy érvet -Z kontextus megtekintése, létrehozása és módosítása:

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

A kontextusok akkor jönnek létre, amikor a fájlokat a szülőkönyvtár kontextusa alapján hozzák létre (néhány kivételtől eltekintve). Az RPM-ek kontextust hozhatnak létre, mint a telepítés során.

14. A SELinux hibáinak négy fő oka van, amelyeket az alábbi 15-21. pontok ismertetnek részletesebben:

  • Címkézési problémák
  • Valami miatt, amit a SELinuxnak tudnia kell
  • Hiba a SELinux szabályzatban/alkalmazásban
  • Adatai veszélybe kerülhetnek

15. Címkézési probléma: ha a fájljai bent vannak /srv/myweb helytelenül vannak megjelölve, a hozzáférés megtagadható. Íme néhány módszer ennek javítására:

  • Ha ismeri a címkét:
    # semanage fcontext -a -t httpd_sys_content_t '/srv/myweb(/.*)?'
  • Ha ismer egyenértékű jelölésű fájlt:
    # semanage fcontext -a -e /srv/myweb /var/www
  • A kontextus visszaállítása (mindkét esetben):
    # restorecon -vR /srv/myweb

16. Címkézési probléma: ha másolás helyett áthelyezi a fájlt, a fájl megőrzi eredeti kontextusát. A probléma megoldása:

  • Módosítsa a kontextus parancsot a következő címkével:
    # chcon -t httpd_system_content_t /var/www/html/index.html
  • Módosítsa a kontextus parancsot a hivatkozás címkéjével:
    # chcon --reference /var/www/html/ /var/www/html/index.html
  • Állítsa vissza a kontextust (mindkét esetben): # restorecon -vR /var/www/html/

17. Ha SELinux, amit tudnia kellhogy a HTTPD a 8585-ös porton figyel, mondja meg a SELinuxnak:

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

18. SELinux, amit tudnia kell Logikai értékek, amelyek lehetővé teszik a SELinux házirend bizonyos részei futás közbeni módosítását anélkül, hogy tudnák, hogy a SELinux szabályzat felülírásra kerülne. Ha például azt szeretné, hogy a httpd e-mailt küldjön, írja be: # setsebool -P httpd_can_sendmail 1

19. SELinux, amit tudnia kell logikai értékek a SELinux beállításainak engedélyezéséhez/letiltásához:

  • Az összes logikai érték megtekintéséhez: # getsebool -a
  • Az egyes leírások megtekintéséhez: # semanage boolean -l
  • Logikai érték beállításához: # setsebool [_boolean_] [1|0]
  • Állandó telepítéshez adja hozzá -P. Például: # setsebool httpd_enable_ftp_server 1 -P

20. A SELinux irányelvei/alkalmazásai hibákat tartalmazhatnak, többek között:

  • Szokatlan kódútvonalak
  • Konfigurációk
  • Stdout átirányítása
  • A fájlleíró kiszivárog
  • Végrehajtható memória
  • Rosszul felépített könyvtárak

Nyitott jegyek (ne küldjön jelentést a Bugzillának; a Bugzillának nincs SLA-ja).

21. Adatai veszélybe kerülhetnekha korlátozott domainjei vannak:

  • Kernel modulok betöltése
  • A kényszerített SELinux mód letiltása
  • Írj neki etc_t/shadow_t
  • Az iptables szabályok módosítása

22. SELinux eszközök a házirend modulok fejlesztéséhez:

# yum -y install setroubleshoot setroubleshoot-server

Indítsa újra vagy indítsa újra auditd telepítés után.

23. használat

journalctl

a kapcsolódó összes napló megjelenítéséhez setroubleshoot:

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

24. használat journalctl egy adott SELinux címkéhez társított összes napló listázásához. Például:

# journalctl _SELINUX_CONTEXT=system_u:system_r:policykit_t:s0

25. Ha SELinux hiba lép fel, használja a naplót setroubleshoot több lehetséges megoldást kínál.
Például attól 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. Naplózás: A SELinux sok helyen rögzít információkat:

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

27. Naplózás: SELinux hibák keresése az auditnaplóban:

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

28. Egy adott szolgáltatás SELinux Access Vector Cache (AVC) üzeneteinek megkeresése:

# ausearch -m avc -c httpd

29. Hasznosság audit2allow információkat gyűjt a tiltott műveletek naplóiból, majd létrehozza a SELinux engedélyezési szabályzatát. Például:

  • Ember által olvasható leírás létrehozása a hozzáférés megtagadásának okáról: # audit2allow -w -a
  • A megtagadt hozzáférést engedélyező típusérvényesítési szabály megtekintéséhez: # audit2allow -a
  • Egyéni modul létrehozása: # audit2allow -a -M mypolicy
  • választási lehetőség -M létrehoz egy típusérvényesítési fájlt (.te) a megadott névvel, és a szabályt házirend-csomagba (.pp) fordítja: mypolicy.pp mypolicy.te
  • Egyéni modul telepítése: # semodule -i mypolicy.pp

30. Egy külön folyamat (domain) konfigurálása engedélyező módban történő működésre: # semanage permissive -a httpd_t

31. Ha már nem szeretné, hogy a domain engedélyező legyen: # semanage permissive -d httpd_t

32. Az összes engedélyezett domain letiltása: # semodule -d permissivedomains

33. MLS SELinux házirend engedélyezése: # yum install selinux-policy-mls
в /etc/selinux/config:

SELINUX=permissive
SELINUXTYPE=mls

Győződjön meg arról, hogy a SELinux megengedő módban fut: # setenforce 0
Használj scriptet fixfilesannak biztosítására, hogy a következő újraindításkor a fájlok újracímkézve legyenek:

# fixfiles -F onboot # reboot

34. Hozzon létre egy felhasználót egy adott MLS-tartományban: # useradd -Z staff_u john

A parancs segítségével useradd, leképezi az új felhasználót egy meglévő SELinux felhasználóra (ebben az esetben staff_u).

35. A SELinux és Linux felhasználók közötti leképezés megtekintéséhez: # semanage login -l

36. Határozzon meg egy adott tartományt a felhasználó számára: # semanage login --modify --range s2:c100 john

37. A felhasználó saját könyvtár címkéjének javítása (ha szükséges): # chcon -R -l s2:c100 /home/john

38. Az aktuális kategóriák megtekintéséhez: # chcat -L

39. Kategóriák módosításához vagy saját létrehozásának megkezdéséhez szerkessze a fájlt az alábbiak szerint:

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

40. Parancs vagy szkript futtatása egy adott fájlban, szerepkörben és felhasználói környezetben:

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

  • -t fájl kontextusban
  • -r szerepkörnyezet
  • -u felhasználói környezet

41. A letiltott SELinux-szal futó tárolók:

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

42. Ha teljes hozzáférést kell adnia a tárolónak a rendszerhez:

  • Podman: # podman run --privileged …
  • Dokkmunkás: # docker run --privileged …

És most már tudod a választ. Tehát kérem: ne essen pánikba, és engedélyezze a SELinuxot.

referenciák:

Forrás: will.com

Hozzászólás