Konfigurace SELinuxu (TeX)
Pavel Kankovsky
peak na argo.troja.mff.cuni.cz
Pondělí Prosinec 25 01:32:05 CET 2006
On Tue, 19 Dec 2006, Jan Kasprzak wrote:
> - jak rict "ted prekladam neduveryhodny zdroj"? Pomoci nove role?
> Pomoci specialniho uzivatele? Pomoci nejakeho typu/domeny?
> - jak oznacit soubory? mit zvlast typ/domenu pro adresar s docasnymi
> soubory, zvlast pro spustitelne veci TeXu a zvlast pro ostatni
> veci TeXu? Nebo typ/domena je spatne slovo a mam pouzit roli?
>
> Z ruznych dokumentaci vicemene rozumim zakladnim pojmum,
> ale uz ne tomu, jak tyto vlastnosti pouzit (a ktere pouzit), abych
> dosahl vyse uvedeneho.
Pár opožděných poznámek víceméně teoretického charakteru:
SELinux ve mne budí dojem, že byl navržen pro lidi, kteří už dávno mají
informační toky, type enforcement a podobné věci v malíčku a denně to
používají v práci (rozuměj v NSA <g>) a chtěli by to mít i doma na Linuxu.
Navíc se to snažili udělat strašně obecné a výsledek je poněkud
překombinovaný. A že ho tato predeterminace stále dost ovlivňuje (ale
možná je nevyhnutelné v tom smyslu, že bez apriorní znalosti problematiky
(a je to dost velká věda, tedy nechci Yenyu podceňovat, ale z dokumentace
SELinuxu nebo čehokoli podobného se tohle asi fakt naučit nedá (*)) nelze
dost dobře navrhnout smysluplnou bezpečnostní politiku).
Tohle vypadá jako víceméně klasický problém na omezení toku infomací,
zejména nahlíženo z pohledu integrity (viz Bibův model), čili role bych
do toho netahal.
"Nedůvěryhodný zdroj" by měl být vyjádřen tak, že vstupní soubor bude mít
typ signalizující nízký stupeň (**) integrity. Pokud ho nějaký subjekt
(třeba onen TeX) bude chtít, bude muset přejít do domény (***) pro tento
nízký stupeň integrity, odkud bude moci zapisovat zase jen do objektů
určitých typů se stejně nízkou (nebo ještě nižší) integritou, což bude
například ten adresář pro dočasné soubory a soubory v něm.
Omezovat přístup pro čtení není v jistém smyslu potřeba, když se správně
omezí zápis (+), jelikož jakákoli důvěrná data bude možna přemístit
pouze do povoleného výstupního souboru. Pokud by to nedostačovalo (např.
je v plánu výstupní soubory publikovat, což by vyžadovalo jejich
"deklasifikaci"), pak je to duální problém, tentokrát s důvěrností:
soubory, které lze číst nebo kam lze zapisovat, budou mít typ s nízkým
stupněm důvěrnosti, ostatní budou mít vysoký stupeň. Doména, ve které bude
zpracovatel fungovat, bude muset mít také nízký stupeň, aby mohla
zapisovat, čili bude schopna číst jen vybrané soubory s patřičným typem.
(*) I když je pravda, že třeba dnes již klasický článek "The Inevitability
of Failure: The Flawed Assumption of Security in Modern Computing
Environments" je svým způsobem do dokumentace SELinuxu zahrnutý a že
hlubokou meditací nad tímto článkem lze dosáhnout základní úrovně
osvícení. :)
(**) Samozřejmě to nutně neznamená, že v systému musí být nějaká globální
lineární hierarchie.
(***) Type enforcement použitý v SELinuxu považuje domény za typy (což má
hlubší smysl, jelikož v počítači jsou subjekty zároveň objekty), ale pro
větší názornost budu u klasifikace subjektů používat termín doména.
(+) Pojem zápis samozřejmě zahrnuje i odeslání dat nějakým komunikačním
kanálem. Ostatně ani nechceme, aby nedůvěryhodný vstupní soubor během
svého zpracování mohl exploitnout nějakou díru a pak například rozesílat
spam, takže je smysluplné to zablokovat.
--Pavel Kankovsky aka Peak [ Boycott Microsoft--http://www.vcnet.com/bms ]
"Resistance is futile. Open your source code and prepare for assimilation."
Další informace o konferenci Linux