Hlavní navigace

Neměnný operační systém: odolný útokům nebo uživatelům?

20. 9. 2024
Doba čtení: 8 minut

Sdílet

 Autor: Root.cz s využitím DALL-E
Linux beru jako systém s vysokou mírou zabezpečení pro denní použití. Poslední dobou se stále častěji setkávám s pojmem „immutable Linux“ a mnoha články na toto téma. Proč se o tom tolik hovoří a co to přesně přináší?

Článek je určen spíše začátečníkům, a proto na úvod začneme vysvětlením pojmů. Immutable Linux se do češtiny překládá jako neměnný Linux nebo neměnná linuxová distribuce. Z několika diskuzí jsem pochopil, že o tom často panuje několik nejasností. Základním parametrem totiž je, že takový systém běží v režimu pouze ke čtení. Znamená to, že na něm nic nezměníte a zůstane tak, jak byl nainstalován? Proč ho pak mít? 

Mýty a fakta

Jen několik výroků, které jsem zaznamenal v různých diskuzích:

  • Jak někdo může používat takový systém, ve kterém nic nezměníte? To musí být bezpečnostní riziko! Několik let se starými neaktualizovanými knihovnami!
  • Mám Linux, abych si s ním mohl hrát a ne jej napevno zadrátovat! 
  • Aktualizovat systém a restartovat? Fuj, proto jsem utekl od Microsoft Windows!
  • Linux používám 20 let, nechci se už přeučovat něco, co už léta používám, když je všechno jinak!
  • To už někde běží masově? Doufám, že je to jen experiment a nikdy se s tím nesetkám, natož abych byl nucen to používat!

Začněme uklidněním hned od počátku – „klasické“ linuxové distribuce nejsou v ohrožení. Nepředpokládám, že se všechny převrhnou na neměnnou verzi a nebude zbytí. K tomu vás nikdo nedonutí. Faktem ale je, že v poslední době více a více distribucí uvádí speciální neměnnou verzi, naposledy třeba v srpnu 2024 to bylo Manjaro Immutable. Navíc se o tom hodně píše a mluví. Proč se tím tedy vlastně někdo zabývá?

Je to snad jen experiment pro pár nadšenců? Možná, ale s velkou pravděpodobností už takovou neměnnou distribuci dávno používáte, jen si to neuvědomujete. Co třeba takový telefon s Androidem? Nebo SteamOS běžící na SteamDecku? Případně Chromebook s ChromeOS? Celá platforma Docker? Tak tohle přesně jsou případy neměnných linuxových distribucí. Jinými slovy – odbýt to tím, že je to projekt jen pro pár nadšenců, je příliš krátkozraké. Z tohoto pohledu je neměnný Linux používán opravdu masově, a to miliony uživatelů každý den.

Poznámka: Žádná z výše uvedených linuxových distribucí se však nebude označovat jako neměnná verze. Je to ale jen kosmetická věc, princip fungování těchto distribucí je v souladu s obecnou definicí.

Faktem také je, že pokud umíte s Linuxem, tak v případě verze „neměnné“ se budete muset naučit nové postupy. Ne že by zkušenosti s Linuxem k ničemu nebyly, ale bude zapotřebí pochopit něco nového. Standardní distribuce, která používá běžné balíčky z repozitářů distribuce, při jejich instalaci nebo aktualizaci obvykle zasahuje do systémových knihoven a konfigurací. To je naprosto běžné a očekávatelné.

Jenže to v případě neměnného Linuxu není možné – zápis je umožněn jen do konfiguračního adresáře  /etc. Proto musíte na instalaci programů jít trochu jinak. To je opět voda na mlýn těch, kteří jsou zásadně proti neměnným verzím linuxových distribucí. Namítají totiž: proč to dělat tak složitě? Řadu uživatelů to děsí, nechtějí se primárně učit něco nového, když nemusí. O tom ale až později.

Dalším faktem ale je, že neměnných distribucí existuje už poměrně dost. Fedora má projekty Silverblue, Kinoite, Sericea a Onyx, liší se použitým okenním správcem. Dalšími distribuce jsou třeba Endless OS, Vanilla OS, Blend OS, NixOS, openSUSE MicroOS, Ubuntu Core, Manjaro Immutable a další.

Základní vlastnosti

Když to tak po sobě čtu, říkám si, proč by vlastně někdo chtěl používat neměnný Linux? Samé překážky a novoty. Ale jsou tu dvě základní vlastnosti, které se ihned nabízejí – bezpečnost a nerozbitnost uživatelským zásahem. Z hlediska bezpečnosti je to jasné. Pokud by jakýkoliv škodlivý program, proces či útočník chtěl na vašem systému provést změny, které by váš počítač přinutily chovat se nestandardně, tak by se mu to buď nepovedlo, nebo jen do chvíle, než počítač restartujete.

Což je vlastně rovnou i druhá výhoda s nemožností systém rozbít. Pokud by se váš systém začal chovat nestandardně, prostě jen restartujte a máte opět vše ve funkčním stavu. Systémové adresáře jsou připojené z úložiště jen a pouze v módu ke čtení (read-only). Navíc je vlastně takový systém velmi stabilní, protože při běhu nedochází k nějakým změnám v jádře nebo ovladačích a vše je předvídatelné. Jen pro pořádek: standardní domovský adresář ( /home) je připojen obvyklým způsobem a můžete z něj  číst i do něj zapisovat, jak je libo. Tady není žádné omezení.

Nese to s sebou pár jiných „much“, se kterými možná potřebujete bojovat. Neměnný Linux lze sice aktualizovat, ale modifikovaným postupem, než je v běžné distribuci obvyklé. Změny se neaplikují za chodu a vždy se musí restartovat pro zavedení nových změn. To se samozřejmě týká i instalace nových programů. Ty klasické z repozitářů se použít nedají, jak jsme již zmínili. Předpokládají jisté knihovny, které používají pro svůj chod a ve vašem systému vůbec nemusí být k dispozici. Ano, umějí si případně přes závislosti aktualizovat na příslušnou verzi. Jenže a opět, v neměnné distribuci to nejde.

Poznámka: Uživatelé operačního systému Microsoft Windows tento postup využívají léta, tj. po každé aktualizaci je nutný restart systému, a nepřijde jim to nijak zvláštní. Proto by od používání neměnného Linuxu nemuselo uživatele právě tohle odradit. Jinde je to běžné.

Elegantním řešením je využít kontejnerizované verze programů a univerzální balíčky jako Flatpak, AppImage nebo Snap místo těch obvyklých z repozitářů distribuce. Ty v kontejnerech se totiž instalují do vašeho domovského adresáře a všechny potřebné knihovny si nesou s sebou „přibalené“. Běh programů v kontejnerech pak opět přispívá k bezpečnosti. Aplikace prostě nemohou snadno rozbít systém. Nevýhodou pak je to, že balíčky budou nutně větší než ty z repozitářů a to někdy i násobně.

Poznámka: Nebylo by to úplně přesné, kdybych neřekl, že se můžete jako tvůrce balíčků setkat i se způsoby, kdy sdílíte knihovny v rámci např. Flatpaku pomocí tzv. frameworků nebo toolkitů. Ve zkratce jde o to, že Flatpak může nabízet sdílení knihoven v rámci lokálního flatpakového repozitáře. Nemusíte je pak přibalovat k programu. Jde o klasický koncept distribuovaných aplikací, jen se to děje v rámci vašeho lokálního repozitáře. 

Některé neměnné distribuce (třeba ty od Fedory) využívají ještě techniku zvanou layering. Jde o to, že programy z tradičních repozitářů se instalují do speciální vrstvy nad tu pouze ke čtení. Jen k tomu nemůžete použít klasické balíčkovací nástroje (apt, yum či dpkg), musíte mít speciální (třeba apx, toolbox nebo nsbox), které s touto vrstvou umějí pracovat. Někdy distribuce také fungují tak, že mají dva různé systémové oddíly a při aktualizaci se dělají změny do toho druhého, právě neaktivního oddílu (vrstvy) a při restartu se prostě prohodí zavádění systému z druhého oddílu. Návrat k předchozímu stavu je tak velmi snadný, ale opět je potřeba restart.

Některé distribuce implementují i postup aktualizací podobný vývojářským commitům tak, jak je známe třeba z Gitu, v případě potřeby návratu zpět se prostě provede jen zpětvzetí commitu.

Komplikací může být to, že uživatel zvyklý pracovat s tradiční linuxovou distribucí se na poli správy systému musí naučit spoustu nových kousků – jak instalovat balíčky, jak provádět změny, aktualizace atd. Čistě teoreticky totiž aktualizace jednoho balíčku může např. vyžadovat restart celého systému. Jistě, je to jen jiný způsob používání Linuxu, ale sami víte, že zvyk je železná košile a kdo by se chtěl učit novým věcem, když vlastně nemusí?

Pro koho?

Rychlým pohledem můžeme zjistit, že neměnná distribuce je výtečnou věcí pro toho, kdo provozuje např. cloudové služby či jiné servery, kde je bezpečnost a stabilita na prvním místě.  Nebo je neměnná distribuce výhodná jako systém pro hardwarové zařízení typu herní konzole nebo multimediální centrum. Tam nepotřebujete dělat aktualizace tak často a pokud ano, zařízení restartujete. Hodně výhod může neměnná distribuce skýtat i pro správce školních učeben nebo provozovatele internetových kaváren – po restartu máte systém jako po prvotní instalaci.

Z pohledu běžného uživatele domácího notebooku může být používání neměnného Linuxu trochu diskutabilní. Pokud nějakou standardní distribuci už používáte, musíte se při použití neměnné distribuce naučit nové věci. Pokud začínáte, je asi jedno, co se naučíte. Jen je to prostě trošku zdlouhavější, co se týká běžného rutinního provozu. Z hlediska bezpečnosti je to ale skvělá volba.

Distribuce se snaží tahle úzká hrdla eliminovat tím, že integrují využití univerzálních balíčků nebo integrací dodatečné vrstvy pro aplikace. Skalní linuxák za to není rád, protože univerzální balíčky jako Snap, FlatPak nebo AppImage moc oblíbené nejsou. Existují ale i běžné distribuce, které od použití repozitářů balíčků ustupují a nabízejí podporu právě pro balíčky univerzální. Osobně v tom problém nevidím. Otravné se tak asi stanou jen ty restarty.

Určitě bych neměnnou distribuci nezkoušel, pokud jste odpůrce univerzálních balíčků, nechcete se učit nově základy typu instalace balíčků a aktualizace systému nebo se vám nezamlouvá restart počítače po změně. Právě vám neměnná distribuce nepřináší žádnou výhodu a spíše vám bude cuchat nervy.

Neměnná distribuce skýtá mnoho výhod, ale i několik nevýhod. Každý uživatel by měl zvážit, jestli nevýhody jsou natolik zásadní, že mu vnitřně neumožní takovou distribuci využít a naopak. Pokud je bezpečnost a stabilita i v rámci změny vašeho chování při práci s Linuxem motivací, nemáte lepší volbu. V této chvíli to vůbec nevypadá, že by tento koncept měl v dohledné době nahradit koncept tradiční. Nikdo vás k přechodu nenutí, máte jen další elegantní řešení pro lepší bezpečnost. Funkčně si asi moc nepomůžete, ale zvýší se míra vašeho osobního zabezpečení. O to podobným projektům nakonec vlastně jde. 

CS24 tip temata

Kam dále?

Informačních zdrojů k dispozici je poměrně dost, záleží jen na tom, jak moc vám vadí angličtina. Základní místo, kde dostanete opravdu veliký kus informací je repozitář na GitHubu s názvem Awesome Atomic.

Pak můžete přejít na YouTube a hledat videa zadáním pojmu „immutable Linux“. Nějaký komplexní návod v češtině asi neexistuje, nenarazil jsem na něj. Spíše se zaměřte na informace o jednotlivých, i v článku jmenovaných, distribucí.

Autor článku

Pracuje na pozici IT architekta pro firmu zabývající se zpracováním ropy a výrobou produktů z ní. Navrhuje rozličná řešení a jejich integraci do firemní infrastruktury na základě firemních standardů bezpečnosti nebo plánů obnovy.