8 min read

SELinux: Noční můra adminů nebo šance na lepší spánek?

10.8.2025 22:10:44

Nedávno jsem byl na schůzce s klientem, kde popisovali svou linuxovou infrastrukturu a mimo jiné zmínili, že na RHEL operačních systémech mají vypnutý SELinux. Protože téma diskuze bylo jiné, tak jsem nepoložil základní otázku: „Proč?”

ChatGPT Image 12. 8. 2025 18_18_11

Pravděpodobně by pokračovala diskuze ve stylu podobném filmu Kulový blesk:
„My sice RHEL používáme, ale Máňa říkala, že používat SELinux není směroplatný.”
„A to se jako ještě v téhle době děje?”
„No bohužel tedy to se může. Jiná věc ovšem je, že v případě kompromitace systému může vzniknout škoda. A to riziko při nepoužívání SELinuxu není malé. Koneckonců, je to vaše věc.”
„No ale vždyť my to tak děláme (rozumějte – nepoužíváme SELinux) už pětadvacet let…”

Shodou okolností jsem před prázdninami realizoval několik školení na Red Hat Enterprise Linux. Konkrétně Red Hat System Administration II (RH134) a RHCSA Rapid Track Course (RH199), které se obsahově překrývají a jejichž součástí jsou i sekce zaměřené právě na konfiguraci a použití SELinuxu. Měl jsem tedy příležitost se studenty diskutovat jejich zkušenosti v této oblasti. Obecně zaznívalo, že SELinux nepoužívají, protože s ním nemají zkušenosti a připadá jim složitý.

Tím ve mně evokovali vzpomínku, jak jsem kdysi pomáhal zavádět novou instalační base image RHEL 7 a shodli jsme se tenkrát, že chceme, aby byla o chlup bezpečnější než předchozí. Proto – vedle řady jiných opatření – jsme v image nechali zapnutý SELinux, přestože předtím se vypínal. A když už, tak rovnou i v enforcing módu.
Při první příležitosti, když další kolegové instalovali nový databázový server, na tuto změnu v image samozřejmě zapomněli a řešili, proč jim ta databáze nefunguje, respektive připojení na ni. Chvíli byli zoufalí, pak našli jeden konfigurační přepínač – SELinux boolean – a skoro jako mávnutím kouzelné hůlky databázový server začal fungovat…

Co je to ten SELinux a k čemu slouží?
Security-Enhanced Linux (SELinux) je bezpečnostní modul, součást linuxového jádra, zajišťující mandatorní řízení přístupu. Jako takový slouží ke zvýšení bezpečnosti operačního systému.
Umožňuje definovat oprávnění k provedení operace na úrovni procesů, uživatelů a socketů. Zjednodušeně si to lze představit tak, že každý proces, uživatel a socket je označen labelem.
Když probíhá na systému nějaká operace (například aplikace přistupuje k souboru), dojde na základě předdefinovaných pravidel k ověření, zda aplikace s příslušným labelem má oprávnění daný soubor použít. Pokud labely aplikace i souboru pravidlo splňují, operace je umožněna. V opačném případě je zamítnuta – a příslušná událost samozřejmě zalogována.

Jak to funguje reálně?
Zkusme si fungování SELinuxu popsat na příkladu.
Máte server s RHEL a na něm provozujete webový server, třeba Apache. Protože používáte oficiální RH repozitáře, máte všechno správně předkonfigurované rovnou od instalace. Proces httpd má správný label, adresář /var/www/html má správný label, síťový port má správný label.
Prostřednictvím oblíbeného webového prohlížeče se přihlásíte na URL serveru a je vám zprostředkován obsah uložený v adresáři. Vše funguje, protože díky labelům na objektech jsou naplněna příslušná pravidla.

Teď si zkusme představit hypotetickou situaci: ve webovém serveru nastala chyba, které využil hacker. Jeho snahou je zjistit například konfiguraci serveru uloženou v souborech v adresáři /etc, nebo vyčíst obsah uživatelských home adresářů.
Dostane se k nim? Nikoliv – protože na těchto adresářích a souborech jsou jiné SELinux labely. A protože ty nenaplňují pravidlo pro httpd, kernel přístup neumožní.

Co když chci něco jinak než je v defaultu?
Chcete nějaký vlastní adresář vystavit? Postup je jednoduchý. Stačí vytvořit nové pravidlo. V něm nadefinujete zvolený adresář, za pomoci výrazu pirát (/.*)? povolíte jeho obsah včetně vnořeného obsahu, a doplníte příslušný label, který se má na adresář propsat.
Toto pravidlo pak už jen naaplikujete na zvolený adresář.

Chcete cíleně sdílet obsah z uživatelských home adresářů? Ani nemusíte definovat nové pravidlo – s touto možností se už počítalo. Jen není aktivní, protože ve výchozím stavu přece home adresáře sdílet nechcete.
Teď ale ano. Stačí přepnout příslušný přepínač (v terminologii SELinuxu jde o seboolean) a tím funkcionalitu aktivovat.

Chcete použít jiný než výchozí port? Opět vytvoříte nové pravidlo s příslušným labelem.

Nevíte, jaký label nastavit a jak chybu vyřešit? Řešení je poměrně jednoduché. Existuje několik cest:

  • Vylistuji si veškerá předkonfigurovaná pravidla a v nich příslušné najdu (například pomocí grep).
  • Podívám se pomocí ls -Z, jaký label je na adresáři, třeba /var/www/html, a stejný použiji v novém pravidle. Přepínač -Z slouží k zobrazení SELinux kontextu. Funguje i na jiné příkazy – například ps a další.
  • Pokus & omyl. Prostě webový server spustím a následně hledám příslušnou chybovou zprávu. Ať už v journalu, nebo audit logu, případně za pomoci webové konzole Cockpit. Součástí chybové zprávy je často i návrh na řešení, který lze aplikovat přímo tak, jak je, nebo jen s minimální úpravou.
  • RTFM. Alias otevřu si dokumentaci. Ani nemusím hledat na internetu – je rovnou na systému. Mimo jiné i ve formě man stránek.

Je SELinux složitý?
Domnívám se, že z pohledu běžné administrace není.
Znalost SELinuxu by měla patřit do výbavy každého správce linuxových operačních systémů. Pro správce Red Hat Enterprise Linuxu je taková znalost nutná – tedy pokud nepatříte do kategorie „vypínačů“.

Proto je SELinux součástí níže uvedených školení. V nich se mimo jiné naučíte:

  • jak SELinux subsystém ovládat – vedle enforcing módu existuje i permissive, který se hodí pro vývoj a ladění
  • že od RHEL 9 už nelze SELinux běžným způsobem vypnout (tedy pokud si jakože fakt nechcete hrát s kernel boot parametry)
  • jak nastavovat politiky (labely) na úrovni file systému
  • jak nastavovat SELinux politiky pro síťové porty
  • jak snadno najít chybu a opravit ji – nejen přes příkazovou řádku, ale i graficky pomocí web console

Možná si pak uvědomíte, že cca 99 % všeho potřebného je pro běžné použití už připraveno. A ve většině zbývajícího procenta stačí jen malá úprava. Ten zbytek? Ten už je pro vývojáře platforem – a ti už dávno vědí, jak SELinux politiky a pravidla konfigurovat.

Která školení o SELinux existují?

Základní znalosti pro správu operačního systému Red Hat Enterprise linux získáte v kurzech:

Zkušenosti získané z těchto dvou kurzů můžete potvrdit certifikační zkouškou Red Hat Certified System Administrator (RHCSA) exam Získáte tak oprávnění být označen jako Red Hat Certified System Administror.

Další možné kurzy jsou:

Co říct závěrem?
Studenti z předprázdninových školení na konci kapitol často říkali něco ve smyslu:
„SELinux se nám zdál složitý, protože jsme o něm moc nevěděli. Ale teď nám dává smysl a nebojíme se ho. Jen si ho trochu ošaháme, ale už víme, jak na to.”

P.S. Při psaní článku jsem narazil na skvělý seriál na Rootu z let 2007–2008: Jak správně na SELinux (https://www.root.cz/serialy/jak-spravne-na-selinux/).
Pokud chcete SELinuxu proniknout hlouběji pod pokličku, určitě doporučuji. Dnes už ale jako linuxový admin pravděpodobně nebudete potřebovat pravidla, jak jsou v seriálu popsána, sami psát.

Václav Miller

Written by Václav Miller

Vašek se na IT moře vydal už na začátku 21. století a od té doby kormidloval různými proudy – od IBM mainframe systémů až po konzultace v oblasti infrastruktury a jejího provozu. Posledních 10 let se pohybuje v červených vodách Red Hatu, kde se stal ostříleným kapitánem hybridního cloudu a CloudForms implementací. Když zrovna nemá na palubě rozbalené Ansible playbooky, svižně manévruje s OpenShiftem a naviguje klienty skrze rozbouřené vody kontejnerových platforem. Díky svému přirozenému čichu na komplikace a smyslu pro strukturu umí i ty nejspletitější technické výzvy převést do srozumitelné mapy. A tak, zatímco někteří v IT čekají na klidný vítr, Vašek už dávno plachtí dál.

 

Chcete se dozvědět více?

Prostě jen klikněte na tlačítko níže a zarezervujte si s námi bezplatnou konzultaci.

 

ZAREZERVOVAT KONZULTACI ZDARMA