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".
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).
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:
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).
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:
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
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: