ProHoster > Blog > podávání > Cheat sheet SELinux sysadmin: 42 odpovědí na důležité otázky
Cheat sheet SELinux sysadmin: 42 odpovědí na důležité otázky
Překlad článku byl připraven speciálně pro studenty kurzu "Správce Linuxu".
Zde získáte odpovědi na důležité otázky o životě, vesmíru a všem v Linuxu s vylepšeným zabezpečením.
„Důležitá pravda, že věci nejsou vždy takové, jak se zdají, je dobře známá…“
- Douglas Adams, Stopařův průvodce po Galaxii
Bezpečnost. Zvyšování spolehlivosti. Korespondence. Politika. Čtyři jezdci z Apokalypsy sysadmin. Kromě našich každodenních úkolů – monitorování, zálohování, implementace, konfigurace, aktualizace atd. – jsme také zodpovědní za bezpečnost našich systémů. Dokonce i ty systémy, kde nám poskytovatel třetí strany radí deaktivovat vylepšené zabezpečení. Vypadá to na práci Ethan Hunt z Mission Impossible.
Tváří v tvář tomuto dilematu se někteří správci systému rozhodnou přijmout modrá pilulkaprotože si myslí, že nikdy nebudou znát odpověď na velkou otázku života a vesmíru a tak dále. A jak všichni víme, odpověď je 42.
V duchu Stopařova průvodce po Galaxii je zde 42 odpovědí na důležité otázky týkající se správy a používání SELinux na vašich systémech.
1. SELinux je systém kontroly vynuceného přístupu, což znamená, že každý proces má označení. Každý soubor, adresář a systémový objekt má také štítky. Pravidla zásad řídí přístup mezi označenými procesy a objekty. Jádro tato pravidla vynucuje.
2. Dva nejdůležitější pojmy jsou: Označování - značení (soubory, procesy, porty atd.) a Vynucení typu (který izoluje procesy od sebe na základě typů).
4. Účelem poskytování víceúrovňového zabezpečení (Víceúrovňové zabezpečení - MLS) je řídit procesy (domény) na základě úrovně zabezpečení dat, které budou používat. Tajný proces například nemůže číst přísně tajná data.
5. Zajištění bezpečnosti ve více kategoriích (Zabezpečení více kategorií - MCS) chrání podobné procesy před sebou navzájem (například virtuální stroje, motory OpenShift, sandboxy SELinux, kontejnery atd.).
6. Možnosti jádra pro změnu režimů SELinux při spouštění:
autorelabel=1 → způsobí, že systém začne znovu označovat
selinux=0 → jádro nenačte infrastrukturu SELinux
enforcing=0 → stáhnout v permisivním režimu
7. Pokud potřebujete přeoznačit celý systém:
# touch /.autorelabel
#reboot
Pokud označení systému obsahuje mnoho chyb, může být nutné zavést systém v permisivním režimu, aby bylo opětovné označení úspěšné.
8. Chcete-li zkontrolovat, zda je povolen SELinux: # getenforce
Proces běžící v kontextu httpd_t, může interagovat s objektem se štítkem httpd_something_t.
13. Mnoho příkazů má argument -Z pro zobrazení, vytvoření a úpravu kontextu:
ls -Z
id -Z
ps -Z
netstat -Z
cp -Z
mkdir -Z
Kontexty se nastavují při vytváření souborů na základě kontextu jejich nadřazeného adresáře (s některými výjimkami). RPM mohou nastavovat kontexty stejně jako během instalace.
14. Existují čtyři hlavní příčiny chyb SELinux, které jsou podrobněji popsány v odstavcích 15-21 níže:
Problémy s označováním
Kvůli něčemu, co SELinux potřebuje vědět
Chyba v zásadách/aplikaci SELinux
Vaše informace mohou být ohroženy
15.Problém s označováním: pokud jsou vaše soubory v /srv/myweb nesprávně označený, přístup může být odepřen. Zde je několik způsobů, jak to opravit:
Pokud znáte označení: # semanage fcontext -a -t httpd_sys_content_t '/srv/myweb(/.*)?'
Pokud znáte soubor s ekvivalentním označením: # semanage fcontext -a -e /srv/myweb /var/www
Obnovení kontextu (pro oba případy): # restorecon -vR /srv/myweb
16.Problém se značením: pokud soubor přesunete místo zkopírování, zachová si svůj původní kontext. Chcete-li tento problém vyřešit:
Změňte kontextový příkaz s popiskem: # chcon -t httpd_system_content_t /var/www/html/index.html
Obnovte kontext (pro oba případy): # restorecon -vR /var/www/html/
17. Jestliže SELinux musíte znátže HTTPD naslouchá na portu 8585, řekněte SELinuxu:
# semanage port -a -t http_port_t -p tcp 8585
18.SELinux musíte znát booleans, které umožňují měnit části zásad SELinux za běhu bez znalosti přepisování zásad SELinux. Pokud například chcete, aby httpd odeslal e-mail, zadejte: # setsebool -P httpd_can_sendmail 1
19.SELinux musíte znát Booleovské hodnoty pro povolení/zakázání nastavení SELinux:
Chcete-li zobrazit všechny logické hodnoty: # getsebool -a
Chcete-li zobrazit popis každého: # semanage boolean -l
25. Když dojde k chybě SELinux, použijte protokol setroubleshoot nabízí několik možných řešení.
Například z 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. Protokolování: SELinux protokoluje informace na mnoha místech:
Ujistěte se, že SELinux běží v permisivním režimu: # setenforce 0
Použijte skript fixfilesabyste zajistili, že při příštím restartu budou soubory přeznačeny:
# fixfiles -F onboot # reboot
34. Vytvořte uživatele s konkrétním rozsahem MLS: # useradd -Z staff_u john
Pomocí příkazu useradd, namapujte nového uživatele na stávajícího uživatele SELinuxu (v tomto případě staff_u).
35. Chcete-li zobrazit korespondenci mezi uživateli SELinuxu a Linuxu: # semanage login -l
36. Definujte konkrétní rozsah pro uživatele: # semanage login --modify --range s2:c100 john
37. Chcete-li opravit štítek v domovském adresáři uživatele (v případě potřeby): # chcon -R -l s2:c100 /home/john