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

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 a „Mission: Impossible”-ból.
Szembesülve ezzel a dilemmával, néhány rendszergazda úgy dönt, hogy választja a , 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 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 újramarkoljaselinux=0→ a kernel nem tölti be a SELinux infrastruktúrátenforcing=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 -Zid -Zps -Znetstat -Zcp -Zmkdir -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.html26. 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ó
-Megy 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-ra szerep kontextusa-ua 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:
- szerzője
- Dan Walsh által
- szerzője
- szerzője
Forrás: habr.com
