Singularity je rootkit ve formě jaderného modulu (Linux Kernel Module), s otevřeným zdrojovým kódem dostupným pod licencí MIT. Tento rootkit je určený pro moderní linuxová jádra 6.x a poskytuje své 'komplexní skryté funkce' prostřednictvím hookingu systémových volání pomocí ftrace. Pro nadšence je k dispozici podrobnější popis rootkitu na blogu autora, případně v článku na LWN.net. Projekt je zamýšlen jako pomůcka pro bezpečnostní experty a výzkumníky, takže instalujte pouze na vlastní nebezpečí a raději pouze do vlastních strojů 😉.
Iconify je seznam a galerie kolekcí vektorových open-source ikon, ke stažení je přes 275000 ikon z více jak dvou set sad. Tento rovněž open-source projekt dává vývojářům k dispozici i API pro snadnou integraci svobodných ikon do jejich projektů.
Dle plánu certifikační autorita Let's Encrypt nově vydává také certifikáty s šestidenní platností (160 hodin) s možností vystavit je na IP adresu.
V programovacím jazyce Go naprogramovaná webová aplikace pro spolupráci na zdrojových kódech pomocí gitu Forgejo byla vydána ve verzi 14.0 (Mastodon). Forgejo je fork Gitei.
Just the Browser je projekt, 'který vám pomůže v internetovém prohlížeči deaktivovat funkce umělé inteligence, telemetrii, sponzorovaný obsah, integraci produktů a další nepříjemnosti' (repozitář na GitHubu). Využívá k tomu skrytá nastavení ve webových prohlížečích, určená původně pro firmy a organizace ('enterprise policies'). Pod linuxem je skriptem pro automatickou úpravu nastavení prozatím podporován pouze prohlížeč Firefox.
Svobodný multiplatformní herní engine Bevy napsaný v Rustu byl vydán ve verzi 0.18. Díky 174 přispěvatelům.
Miliardy korun na digitalizaci služeb státu nestačily. Stát do ní v letech 2020 až 2024 vložil víc než 50 miliard korun, ale původní cíl se nepodařilo splnit. Od loňského února měly být služby státu plně digitalizované a občané měli mít právo komunikovat se státem digitálně. Do tohoto data se povedlo plně digitalizovat 18 procent agendových služeb státu. Dnes to uvedl Nejvyšší kontrolní úřad (NKÚ) v souhrnné zprávě o stavu digitalizace v Česku. Zpráva vychází z výsledků víc než 50 kontrol, které NKÚ v posledních pěti letech v tomto oboru uskutečnil.
Nadace Wikimedia, která je provozovatelem internetové encyklopedie Wikipedia, oznámila u příležitosti 25. výročí vzniku encyklopedie nové licenční dohody s firmami vyvíjejícími umělou inteligenci (AI). Mezi partnery encyklopedie tak nově patří Microsoft, Amazon a Meta Platforms, ale také start-up Perplexity a francouzská společnost Mistral AI. Wikimedia má podobnou dohodu od roku 2022 také se společností Google ze skupiny
… více »D7VK byl vydán ve verzi 1.2. Jedná se o fork DXVK implementující překlad volání Direct3D 5, 6 a 7 na Vulkan. DXVK zvládá Direct3D 8, 9, 10 a 11.
Byla vydána verze 12.0.0 knihovny libvirt (Wikipedie) zastřešující různé virtualizační technologie a vytvářející jednotné rozhraní pro správu virtuálních strojů. Současně byl ve verzi 12.0.0 vydán související modul pro Python libvirt-python. Přehled novinek v poznámkách k vydání.
Multilevel security (MLS, víceúrovňová bezpečnost) je bezpečnostní mechanizmus, podobně jako type enforcement (TE). Existuje několik variant MLS, z nichž nejznámější je varianta dle modelu Bell-La Padula. V dalším textu tedy budeme předpokládat MLS dle tohoto modelu.
Zatímco TE rozlišuje u procesů, souborů a dalších objektů
typy (domény), MLS rozlišuje úrovně citlivosti (sensitivity). U TE
pak máme pravidla jako „typ httpd_t nesmí nic, pouze
poslouchat na portu 80 a číst soubory typu
web_pages_t“. MLS žádné takovéto specifikace pravidel
nepodporuje, má pouze pravidla dvě: Pokud je citlivost procesu X, smí
číst z objektů ≤X („no read up“) a zapisovat do
objektů ≥X („no write down“). Jinými slovy, informace
(data) smí proudit pouze na stejné úrovni citlivosti, případně od zdroje
s menší úrovní k cíli s vyšší úrovní.
Klasický příklad použití MLS: Máme úrovně citlivosti „normální“=1 a „tajné“=2. Programy instalované v systému (binární soubory) mají úroveň citlivosti 1. Soubory s tajnými daty mají úroveň 2. Smysl prvního pravidla je klasická ochrana před přímým únikem informací. Uživatel s oprávněním na úrovni 1 nemůže číst tajná data, ale uživatel na úrovni 2 může číst a spouštět nainstalované programy. Smysl druhého pravidla je ochrana před nepřímým únikem. Představme si, že uživatel na úrovni 1 prolomí klasickou bezpečnost systému a přepíše binární soubor textového editoru trojským koněm, který každý otevřený soubor uloží na místo, kde si jej může útočník na úrovni 1 přečíst. V MLS systému tento program spuštěný na úrovni 2 nebude mít právo zapisovat do adresáře na úrovni 1, tudíž nedojde k úniku dat.
Je zjevné, že pravidlo č. 2 (no write down) je podstatně silnější omezení, než poskytuje klasické zabezpečení. Ve světě bezpečnosti ale není nikdy nic zadarmo. Obousměrná komunikace mezi úrovněmi 1 a 2 není možná, což vylučuje použití protokolů jako TCP (ACK packety jsou data proudící v „zakázaném“ směru), ve výsledku je uživatel na úrovni 2 odříznut od normální sítě. Dokumenty, které jsou jednou tajné, zůstávají tajné, a v případě odtajnění se musí systém obejít. Tyto systémy mají tedy využití obvykle pouze v prostředí, kde úrovně jako „tajné“ skutečně mají svůj význam, tj. vláda nebo armáda.
Kategorie jsou rozšířením systému MLS o jednu dimenzi. Kategorie si můžeme představit jako tagy, které jednotlivým datům a procesům dáváme, např. „railgun“ a „ufo“. Kategorie, na rozdíl od úrovní citlivosti, nemají mezi sebou striktně určeno pořadí. Platí ale, že k libovolné dvojici lze vybudovat nejmenší horní a největší dolní mez. Pro zmíněné dvě kategorie bude horní mez kombinace obou, tj. „railgun ufo“ a dolní mez žádná kategorie, tj. „“. Proces pak má přístup pouze k datům, jejichž kategorie je obsažena v kategorii procesu (obdoba pravidla „no read up“):
V závislosti na použitém systému může být také implementováno pravidlo „no write down“:
A samozřejmě je možné kategorie a úrovně citlivosti kombinovat: data „citlivost=2 ufo“ může otevřít proces, který má alespoň „citlivost=2“ a alespoň kategorii „ufo“, např. „citlivost=3 ufo railgun“ ano, „citlivost=2“ ne, „citlivost=1 ufo“ také ne.
Mechanizmus MLS je implementován pomocí tzv. constraints, což jsou
dodatečná omezení, která se na danou operaci aplikují až po úspěšné
kontrole mechanizmem TE. Constraints jsou použity i mimo MLS,
například celý systém rolí je definován pomocí několika omezení ve stylu
„proces nesmí změnit svou roli, až na výjimky (program
newrole)“ a „proces smí nabýt pouze takové
typy, jaké mu dovoluje jeho role“.
V podobném duchu je implementována sada omezení pro MLS. Pravidla „no read up“ a „no write down“ platí jak pro úrovně citlivosti, tak pro kategorie. Čtvrté a páté pole bezpečnostního kontextu identifikují rozsah úrovní citlivosti a kategorií, který může daný proces nabýt. Za aktuální úroveň se bere spodní hranice rozsahu; pomocí patřičných syscallů lze pak úroveň měnit podobně, jako bychom měnili celý kontext. Citlivosti se označují písmenem s a je jich obvykle 16, kategorie písmenem c a je jich 1024. Rozsah pro kategorie je značen tečkou, seznam kategorií čárkou a rozsah citlivostí pomlčkou. Příkladně:
s0:c2,c4-s3:c0.c1023 označuje objekt, který má nejméně
nultou úroveň citlivosti a nejméně kategorie 2 a 4,
a nejvýše třetí úroveň citlivosti a nejvýše všechny kategorie
v rozmezí 0 až 1023. Tj.:
s0:c2,c3,c4 (tj. s0:c2.c4) ano,s1:c2,c4,c50 ano,s0 ne,s3:c1 ne,s2:c2 ne.Oprávnění, která se použije pro přístup k objektům je spodní mez,
tj. s0:c2,c4. Můžeme tedy číst objekty s označeními:
s0,s0:c2,s0:c4s0:c2,c4.Podobně, zapisovat můžeme nejníže
s0:c2,c4. Pomocí změny kontextu jsme schopni posunout
spodní hranici na vyšší citlivost nebo přidat kategorie, a to až
do úrovně horní hranice.
s0-s0:c0 má nejméně s0 bez kategorie
a nejvýše s0 s kategorií c0.
Pravidla pro čtení, zápis a změnu úrovně jsou podobná jako
výše.s1 má nejméně i nejvýše citlivost s1.
Tady je situace nejjednodušší, je dána jen jedna úroveň, kterou nelze
měnit.Pokud si chceme vyzkoušet MLS v praxi, můžeme tak učinit pomocí
instalace balíčku selinux-policy-mls a nastavením
politiky mls v /etc/selinux/config, ale
v závislosti na použité distribuci budeme muset tuto politiku více
nebo méně doladit. Případné experimenty nechám na čtenáře.
MCS („multi category security“) je slabší odvar politiky MLS,
kde platí vše, co bylo dosud řečeno, se dvěma rozdíly. Za prvé, používá
se pouze jedna úroveň citlivosti (s0) a za druhé je z omezení
odstraněno pravidlo „no write down“. Dále je trochu jinak vyřešeno
používání rozsahů kategorií: Proces může číst a zapisovat vše až po
svou horní hranici kategorií. Spodní úroveň má význam pouze při
vytváření nových souborů, soubor se vytvoří implicitně s touto
úrovní, ale pomocí syscallu (ne změny kontextu) lze před vytvořením tuto
úroveň změnit. Výše uvedené příklady by se tedy změnily např. takto:
Proces s s0:c2-s0:c0.c5 může číst a zapisovat do
libovolné kombinace kategorií c0 až c5
a žádné kategorie. Nové soubory budou mít implicitně
c2.
Těmito úpravami se v MCS z kategorií stává napůl dobrovolný
systém: Aplikace si může dobrovolně určit kategorie v rámci svých
mezí, případně je může přímo odstranit. Tato úprava z něj dělá ale
systém poněkud více použitelný v „normálním“ světě: Na rozdíl od „čistého“ MLS je MCS přítomno snad ve všech
distribucích ve výchozí politice. Jeho přítomnost rozeznáme podle
přítomnosti s0 a kategorie v libovolném
bezpečnostním kontextu, např. výstup programu id.
Uplatnění MCS je všude tam, kde je potřeba separovat přístup
k různým datům v rámci jednoho programu. V minulém díle
jsme si uvedli politiku pro SVN a jako jedno z možných
rozšíření možnost mít několik repozitářů pro několik projektů
a selektivně povolovat uživatelům přístup k projektům.
V čistém TE systému bychom nejspíše duplikovali typ
svndata_t jako svndata_1_t
a svndata_2_t, dále bychom museli rozdělit typy pro
běžící svnserve na svn_1_t
a svn_2_t, duplikovat jejich pravidla a nakonec
nějak zařídit přístup různých uživatelů k různým typům.
V klasickém UNIXu bychom separovali pomocí skupin, což je ale
náchylné na kompromitaci přes roota, který může číst vše (viz zákeřné getty z dílu číslo 2).
S pomocí MCS můžeme vyřešit problém elegantněji, jednoduše jednomu
repozitáři přiřadíme kategorii c0, dalšímu c1,
atd. a pak pomocí semanage login přidělíme jednotlivé rozsahy
MCS jednotlivým uživatelům (přičemž jejich selinuxová identita
a role může zůstat stejná). Jelikož lze kategorie kombinovat, lze
jednomu uživateli udělit přístup k několika projektům najednou, což
při separaci pomocí TE jde jen s obtížemi. Podobně můžeme jednomu
projektu přiřadit více kategorií. Například pokud projekt
„app“ používá data z projektů „lib1“
a „lib2“, můžeme projektu „app“ přiřadit
kategorie „app lib1 lib2“, čímž se pojistíme proti
neautorizovanému přístupu k souborům „lib1“
a „lib2“ přes pouze „app“.
Další možnosti MCS ze stejného soudku jsou:
Jediná vada na kráse je implicitní kategorie při vytváření nových souborů. Pokud např. přes SVN provedeme commit, vznikne nový soubor, jehož kategorie je momentálně dána spodní úrovní procesu, který jej vytvořil, a nikoli kategorií nadřazeného adresáře, tj. repozitáře. Tuto situaci lze řešit různými hacky od cron úlohy, která nastavuje kategorie, přes patch dané aplikace (např. svnserve) až po patch SELinuxu. Je pravděpodobné, že v budoucnu se tento problém odstraní.
MLS v SELinuxu je implementace modelu Bell-La Padula na operačním systému Linux. Politiku MLS lze využít všude tam, kde je potřeba striktně kontrolovat tok informací. Politika MCS je odvozenina tohoto modelu, kde zejména chybí pravidlo „no write down“. Lze ji využít pro separaci různých dat stejného typu (např. repozitáře patřící různým projektům). MCS je na rozdíl od MLS poměrně nový koncept, je tedy možné, že jeho vlastnosti se do budoucna budou měnit.
V příštím díle se podíváme, co umí SECMARK, spojovací můstek mezi SELinuxem a systémem netfilter (neboli iptables).
Článek vznikl za podpory ČVUT FEL, Katedra kybernetiky, kde jsou k dispozici, mimo jiné, studijní programy Otevřená informatika a Kybernetika a robotika.
Nástroje: Tisk bez diskuse
Tiskni
Sdílej:
Diskuse byla administrátory uzamčena
Ako dlho si sa to učil a stretol si sa už z niekym iným čo by mal SELinux na servery bojím sa povedať desktope
Ale aj tak je to zaujímavé, raz sa to môže hodiť.

Unixoví administrátoři z praxe nejsou takoví blbci, jak si možná myslíte.Nevím jestli jste to dobře pochopil, jde o znalost nejen obecných principů, ale i chování konkrétního software na konkrétní distribuci. Kde má uložen apache nebo named konfiguráky, co všechno potřebuje číst, kde jsou init skripty a co všechno spouští, jak se chová hotplug, jaký konkrétní syslog/MTA se používá, jaké všechny NSS/PAM moduly jsou aktivní, ... všechno tohle při psaní politiky může být podstatné.
Největší překážkou je těžko zapamatovatelná změť příkazů, scriptů... a jejich parametrů, pro nováčka zpočátku kryptické výstupy, poněkud zmatená dokumentace atd.Tak to nevím zase já o čem mluvíte. Takhle se chovají obecně všechny unixové příkazy a těch 5 nebo kolik pro administraci SELinuxu se ničím neliší.
Odpusťte si prosím povýšené poznámky o jakýchsi klikačích, to je pod vaši úroveň.Nevzpomínám si, že bych nějaké měl. BTW, téma článku je MLS a jeho pořadové číslo je ⑥. Oceňuji Váš "zájem" o SELinux, ale debatu "SELinux ano nebo ne" bych očekával někde v jedničce.