Segédlet rendszergazdáknak a SELinux-hoz: 42 válasz fontos kérdésekre

Az írás fordítása kifejezetten a kurzus hallgatói számára készült „Linux Adminisztrátor”.

Segédlet rendszergazdáknak a SELinux-hoz: 42 válasz fontos kérdésekre

Itt válaszokat kap fontos kérdésekre az élet, a világmindenség és minden egyéb Linux-ban, fokozott biztonsággal.

„Fontos igazság, hogy a dolgok nem mindig azok, aminek látszanak, köztudott…”

―Douglas Adams, Galaxis Útikalauz Stopposoknak

Biztonság. Megbízhatóság növelése. Megfelelés. Politika. A rendszergazda Apokalipszisának négy lovasa. A napi feladataink mellett - monitorozás, biztonsági mentés, bevezetés, konfigurálás, frissítés, stb. - a rendszereink biztonságáért is felelősek vagyunk. Még azokéért a rendszerekéért is, ahol egy külső szolgáltató javasolja a fokozott biztonság kikapcsolását. Ez olyan, mint Ethan Hunt a „Mission: Impossible”-ból.

Szembesülve ezzel a dilemmával, néhány rendszergazda úgy dönt, hogy választja a kék tablettát, mert azt gondolják, sosem tudják meg az élet, a világmindenség és minden egyéb nagy kérdésének válaszát. És, mint tudjuk, ennek a válasza 42.

A „Galaxis Útikalauz Stopposoknak” szellemében itt van 42 válasz a menedzsmenttel és a használattal kapcsolatos fontos kérdésekre SELinux a rendszereidben.

1. Az SELinux egy kötelező hozzáférés-ellenőrző rendszer, ami azt jelenti, hogy minden folyamatnak van egy címkéje (label). Minden fájl, könyvtár és rendszerobjektum is rendelkezik címkékkel. A politikai szabályok irányítják a hozzáférést a címkézett folyamatok és objektumok között. A kernel biztosítja e szabályok érvényesítését.

2. A két legfontosabb fogalom: Címkézés — címkézés (fájlok, folyamatok, portok stb.) és Típus-kihirdetés (ami elválasztja a folyamatokat egymástól típusok alapján).

3. A címke helyes formátuma user:role:type:level (opcionális).

4. A többlépcsős biztonság (Többlépcsős Biztonság — MLS) célja a folyamatok (domainek) irányítása az általuk használt adatok biztonsági szintje alapján. Például egy titkos folyamat nem olvashatja el a szigorúan titkos adatokat.

5. A több-kategóriás biztonság (Több-Kategóriás Biztonság — MCS) megvédi a hasonló folyamatokat egymástól (például virtuális gépek, OpenShift mechanizmusok, SELinux homokozók, konténerek stb.).

6. A kernel paraméterei a SELinux módok indítási változtatásához:

  • autorelabel=1 → arra kényszeríti a rendszert, hogy újramarkolja
  • selinux=0 → a kernel nem tölti be a SELinux infrastruktúrát
  • enforcing=0 → engedékeny módban töltődik be

7. Ha az egész rendszert át akarja címkézni:

# touch /.autorelabel
#reboot

Ha a rendszer címkézése sok hibát tartalmaz, szüksége lehet permissive módban történő indításra, hogy az átnevezés sikeresen végbemenjen.

8. Az SELinux állapotának ellenőrzéséhez: # getenforce

9. Az SELinux ideiglenes engedélyezéséhez/letiltásához: # setenforce [1|0]

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

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

12. Hogyan működik az SELinux? Itt van egy példa az Apache webszerver címkézésére:

  • Binaris reprezentáció: /usr/sbin/httpd→httpd_exec_t
  • Konfigurációs könyvtár: /etc/httpd→httpd_config_t
  • Naplófájlok könyvtára: /var/log/httpd → httpd_log_t
  • Tartalom könyvtára: /var/www/html → httpd_sys_content_t
  • Indító script: /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 kontextusban futó folyamat httpd_t, kapcsolatba léphet azzal az objektummal, aminek a címkéje httpd_something_t.

13. Sok parancs elfogad egy -Z paramétert a kontextus megtekintésére, létrehozására és módosítására:

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

A kontextusok akkor kerülnek beállításra, amikor a fájlok a szülő könyvtáruk kontextusa alapján kerülnek létrehozásra (ez alól van néhány kivétel). Az RPM-ek már telepítéskor beállítják a kontextusokat.

14. Négy alapvető oka van az SELinux hibáknak, amelyeket részletesen leírtunk a 15-21. pontokban:

  • Címkézési problémák
  • Valami miatt, amit az SELinux-nak tudnia kell
  • Hiba a SELinux szabályzatban/alkalmazásban
  • Az Ön információi veszélybe kerülhetnek

15. Címkézési probléma: ha a fájljai /srv/myweb helytelenül vannak címkézve, a hozzáférés elutasításra kerülhet. Íme néhány módja ennek javítására:

  • Ha ismeri a címkét:
    # semanage fcontext -a -t httpd_sys_content_t '/srv/myweb(/.*)?'
  • Ha ismeri a megfelelő címkézéssel rendelkező fájlt:
    # semanage fcontext -a -e /srv/myweb /var/www
  • A kontextus helyreállítása (mindkét esetben):
    # restorecon -vR /srv/myweb

16. Címkézési probléma: ha a fájlt áthelyezi ahelyett, hogy lemásolná, a fájl megőrzi az eredeti kontextusát. Ennek a problémának a megoldásához:

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

17. Ha Az SELinux-nak tudnia kell, hogy az HTTPD a 8585-ös portot figyeli, tudassa az SELinux-szal:

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

18. Az SELinux-nak tudnia kell logikai értékek, amelyek lehetővé teszik az SELinux szabályzat egyes részeinek módosítását futás közben anélkül, hogy a SELinux szabályzat felülírásáról tudomása lenne. Például, ha azt szeretné, hogy az httpd e-mailt küldjön, írja be: # setsebool -P httpd_can_sendmail 1

19. Az SELinux-nak tudnia kell logikai értékek az SELinux beállításainak engedélyezésére/letiltására:

  • Minden logikai érték megtekintéséhez: # getsebool -a
  • Minden egyes érték leírásának megtekintéséhez: # semanage boolean -l
  • Logikai érték beállításához: # setsebool [_boolean_] [1|0]
  • A tartós beállításhoz adja hozzá -P. Például: # setsebool httpd_enable_ftp_server 1 -P

20. A SELinux politikák / alkalmazások hibákat tartalmazhatnak, többek között:

  • Szokatlan kódutak
  • Konfigurációk
  • stdout átirányítása
  • Fájlleírók szivárgása
  • Végrehajtható memória
  • Rosszul felépített könyvtárak

Hozzon létre jegyeket (ne küldjön be közvetlenül a Bugzilába; a Bugzilában nincs SLA).

21. Az Ön információi veszélybe kerülhetnek, ha korlátozott domainek próbálnak:

  • Kernel modulokat betölteni
  • Kikapcsolni az enforced SELinux módot
  • Írni a etc_t / shadow_t
  • Megváltoztatni az iptables szabályokat

22. SELinux eszközök a politikai modulok fejlesztéséhez:

# yum -y install setroubleshoot setroubleshoot-server

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

23. Használja

journalctl

az összes napló listázásához, ami kapcsolódik a setroubleshoot:

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

24. Használja journalctl az összes napló listázásához, ami egy adott SELinux címkéhez kapcsolódik. Például:

# journalctl _SELINUX_CONTEXT=system_u:system_r:policykit_t:s0

25. SELinux hiba esetén használja a naplót setroubleshoot több lehetséges megoldási javaslattal.
Például a journalctl:

Jun 14 19:41:07 web1 setroubleshoot: A SELinux megakadályozza, hogy a httpd getattr hozzáférést kérjen a fájlhoz /var/www/html/index.html. A teljes üzenet megjelenítéséhez futtassa: sealert -l 12fd8b04-0119-4077-a710-2d0e0ee5755e

# sealert -l 12fd8b04-0119-4077-a710-2d0e0ee5755e
A SELinux megakadályozza, hogy a httpd getattr hozzáférést kérjen a fájlhoz /var/www/html/index.html.

***** A restorecon plugin (99,5%-os bizalom) azt javasolja ************************

Ha meg akarja javítani a címkét,
/var/www/html/index.html alapértelmezett címkéje httpd_syscontent_t.
Ekkor futtathatja a restorecon-t.
Tegye:
# /sbin/restorecon -v /var/www/html/index.html

26. Naplózás: A SELinux sok helyen tárol információt:

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

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

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

28. A SELinux Access Vector Cache (AVC) üzeneteinek kereséséhez egy adott szolgáltatás számára:

# ausearch -m avc -c httpd

29. Eszköz audit2allow információt gyűjt a megtagadott műveletek naplóiból, majd SELinux engedélyezési szabályokat generál. Például:

  • Ahhoz, hogy könnyen olvasható leírást készítsen a hozzáférés megtagadásának okáról: # audit2allow -w -a
  • Megnézni egy kötelező típusú szabályt, amely engedélyezi a megtagadott hozzáférést: # audit2allow -a
  • Saját modul létrehozása: # audit2allow -a -M mypolicy
  • Opció -M egy kötelező típusú (.te) fájlt hoz létre a megadott névvel, és lefordítja a szabályt politikai csomagba (.pp): mypolicy.pp mypolicy.te
  • Saját modul telepítése: # semodule -i mypolicy.pp

30. Egy külön folyamat (doma) beállítása, amely permissive módban működik: # semanage permissive -a httpd_t

31. Ha már nincs szüksége arra, hogy a domain permissive legyen: # semanage permissive -d httpd_t

32. Minden permissive domainek letiltása: # semodule -d permissivedomains

33. MLS SELinux politika engedélyezése: # yum install selinux-policy-mls
a /etc/selinux/config:

SELINUX=permissive
SELINUXTYPE=mls

Győződjön meg arról, hogy a SELinux permissive módban működik: # setenforce 0
Használjon egy scriptet fixfiles, hogy biztosítsa, hogy a fájlok újrafelvétele a következő újraindításkor megtörténjen:

# fixfiles -F onboot # reboot

34. Felhasználó létrehozása adott MLS tartománnyal: # useradd -Z staff_u john

A parancs használatával useradd, az új felhasználó összepárosítása egy meglévő SELinux felhasználóval (ebben az esetben, staff_u).

35. A SELinux és Linux felhasználók közötti megfelelé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ó otthoni könyvtárának címkéjének javításához (ha szükséges): # chcon -R -l s2:c100 /home/john

38. A jelenlegi kategóriák megtekintéséhez: # chcat -L

39. A kategóriák megváltoztatásához, vagy saját kategóriák létrehozásának megkezdéséhez módosítsa a fájlt az alábbiak szerint:

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

40. A parancs vagy szkript futtatásához egy adott fájl, szerep és felhasználói kontextus alatt:

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

  • - folyamatosan „pingelni” (a leállításhoz nyomjuk meg a Ctrl+C kombinációt) a fájl kontextusa
  • -r a szerep kontextusa
  • -u a felhasználói kontextus

41. A letiltott SELinux-szal működő konténerek:

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

42. Ha a konténernek teljes hozzáférést kell biztosítania a rendszerhez:

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

És most már tudja a választ. Ezért, kérjük, ne pánikoljon, és kapcsolja be a SELinux-ot.

Linkek:

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster