Hlavní navigace

Bezpečnost souborového systému

Boleslav Bobčík 2. 10. 2000

Pevné disky jsou v současnosti nejdůležitějším médiem pro trvalé ukládání dat a programů. Při zabezpečování systému je proto vhodné jim věnovat přiměřenou pozornost, protože narušení integrity nemusí být jen následek útoku, ale i defektního softwaru.

Řízení přístupu

Prvním krokem k bezpečnému systému je určení, kdo, kam a jak smí přistupovat. Triviální způsob spočívá v „privatizaci“ souborů a nastavení atributů – každé položce souborového systému určíme konkrétního vlastníka a skupinu, do které náleží. Pak přidělujeme práva metodou UGO (User-Group-Others). Běžné nastavení je například rw-r-----, které znamená, že vlastník má právo zapisovat a číst, skupina může jen číst a zbytek světa nemá k souboru přístup. O metodě UGO se dočteme v prakticky každé knize o UNIXu. Nemáme-li právě k dispozici žádnou knihu, poslouží nám i manuálová stránka programu chmod(1).

Metoda nastavení atributů UGO má nevýhody, jejichž příčinou je poměrně značné stáří tohoto schématu. Představme si situaci, kdy potřebujeme, aby do nějakého souboru měla oddělení A a B plný přístup, zatímco oddělení C, D a E mohla jen číst. Pro zbytek světa má být soubor nepřístupný. Zde UGO selhává.

Ztraceni však nejsme! Řešení spočívá v metodě ACL (Access Control Lists), kterou můžeme nazvat řízení přístupu pomocí tříd oprávněných osob. Hned zkraje je třeba poznamenat, že (nakolik je autorovi známo), není ACL zahrnuto v žádné standardní distribuci Linuxu. Podpůrný software je totiž stále ve vývoji, i když v posledních měsících už vykazuje dostatečnou robustnost.

Princip ACL, definovaný normou Posix, je jednoduchý. Místo tří tříd uživatelů jich může být libovolný počet; souboru snadno přiřadíme práva pro několik uživatelů, několik skupin a přirozeně zbytek světa. Tím získáme mnohem jemnější a preciznější kontrolu nad systémem. Výše uvedený příklad s pěti různými odděleními je pak snadnou záležitostí.

Zprovoznění ACL není právě nejjednodušší. V první řadě musíme upravit a znovu přeložit jádro operačního systému; ACL totiž mírně rozšiřuje vlastnosti souborového systému Ext2. Dále je potřeba aktualizovat program e2fsck, aby při případných opravách rozpoznal ACL bloky a nevnášel do souborového systému nekonzistence. Další úpravy provedeme na souborových utilitách (GNU fileutils) a samozřejmě si nainstalujeme podpůrný software.

Pozitiva plynoucí z používání ACL by měla být jasná. Musíme se však zamyslet i nad tím, jaké problémy vyvstanou. V první řadě se bude jednat o potíže s aplikacemi, které pracují s atributy souborů a ACL neznají. Takových je bohužel mnoho, z těch nejpoužívanějších zmiňme tar nebo celý systém NFS. Při zálohování je v současnosti nutné uložit rozšířené atributy zálohovaných dat do zvláštního souboru, což není pohodlné ani praktické. Méně významným problémem může být disková kvóta: bloky, které ACL zabírá, se do ní totiž započítávají.

Shrneme-li klady a zápory, můžeme konstatovat, že schéma UGO je pro mnoho účelů stále dostatečné. Pokud však máme na starosti systém, po němž je požadované precizní řízení přístupových práv, bude ACL jednou z nemnoha možností, které budeme mít. Navíc se dá předpokládat, že se podpora rozšířených atributů bude zvětšovat. Jakmile bude dostatečné množství aplikací upraveno pro využití možností ACL, toto schéma se nepochybně v krátké době stane nedílnou součástí standardních distribucí Linuxu.

Implementaci ACL pro Linux můžeme najít na Internetu na adrese acl.bestbits.at. Toto řešení je poměrně blízké tomu, které je součástí Solarisu firmy Sun.

Prověřování integrity souborů

Pokud se staráme o systém, chceme pochopitelně vědět, zda někdo nemanipuloval se soubory, se kterými manipulovat neměl. Například hacker obvykle smaže kompromitující záznamy v protokolech (/var/log/) a připraví si nějaká zadní vrátka (často úpravou /etc/inetd.conf). Nejprimitivnější způsob, jak integritu souborů kontrolovat, by spočíval ve vhodně skloubených programech find a md5sum. Principem činnosti je vybudování databáze signatur monitorovaných souborů a následné pravidelné kontroly.

K tomuto účelu ovšem existuje i specializovaný software. Asi nejznámější produkt je Tripware. Jeho historie je poměrně zajímavá: zpočátku se jednalo o Open Source projekt, pak jej firma Tripwire, Inc. prohlásila za proprietární a komerční software, aby jej po několika letech prohlásila opět za Open Source (oficiální zveřejnění by mělo proběhnout tento podzim na budoucí prezentační stránce).

Zamezení volného šíření Tripwire prospělo především vzniku alternativních produktů. Jedním z nich je AIDE, Advanced Intrusion Detection Environment, který si blíže představíme. Jeho schopnosti by totiž měly být ještě lepší, než u Tripwire.

Kontrolované soubory jsou vybírány pomocí regulárních výrazů, které jsou pro tento účel příhodnější než obyčejné shellové masky. Integrita vybraných souborů se ověřuje mnoha kritérii, která můžeme jednoduše konfigurovat. K základním testům patří kontrola majitele souboru, atributů, času poslední změny nebo velikosti. Nejdůležitější je však digitální signatura souboru, která nejlépe vypovídá o tom, zda byl soubor změněn. AIDE používá algoritmy md5, sha1, rmd160 a tiger; použitím knihovny mhash se tento seznam rozšíří o haval, gost a crc32.

Pro větší bezpečnost bychom měli vytvořit databázi signatur ihned po nainstalování či aktualizaci operačního systému, především však před povolením síťových služeb. Aby program AIDE měl bezpečnostní význam, je nezbytné pravidelně prověřovat obsah souborového systému, například zahrnutím kontroly do rozvrhu práce daemonu cron. Jedině tak včas zjistíme možné problémy.

Další pomůcky

Mnoho souborů na disku se s výjimkou upgradů nemění. Příkladem mohou být adresáře /bin, /usr/bin a podobné. Majitelem souborů v nich obsažených je obvykle superuživatel a běžní uživatelé systému je mohou jen číst, případně spouštět. To však není důvod, aby si administrátor oddechl, protože v historii se vyskytlo mnoho špatně naprogramovaných SUID programů, které mohly být zneužity k zápisu na disk pod identitou superuživatele (snad nejproslulejší je sendmail a jeho „schopnost“ uložit e-mail do souboru /etc/passwd).

Souborový systém Ext2 nám nabízí drobnou pomůcku, jak se chránit před zápisem do vybraných souborů – speciální souborové atributy. V balíku e2fsprogs najdeme dvě utility pro jejich manipulaci a zobrazování, chattr a lsattr.

Ze speciálních atributů jsou dva nejdůležitější: a (append-only, k obsahu souboru se smí jen přidávat nová data) a i (immutable, soubor nesmí být nijak měněn). Souborům a adresářům se přidělují podobně jako běžná práva, nastavovat je však smí jen superuživatel. Následující ukázka přibližuje zacházení s atributy:

# lsattr
-------- ./pokus.txt
# chattr +i pokus.txt
# lsattr
----i--- ./pokus.txt
# chattr =a pokus.txt
# lsattr
-----a-- ./pokus.txt

Nyní můžeme k souboru pokus.txt jen přidávat data, jak se snadno přesvědčíme:

# echo "Pokus o přidání" >> pokus.txt
# echo "Pokus o přepsání" > pokus.txt
bash: pokus.txt: Operace není povolena

Oba atributy zamezují změnu vlastníka a skupiny souboru, a též manipulaci s přístupovými prá­vy.

# chmod u+x pokus.txt
chmod: pokus.txt: Operace není povolena

Atribut immutable je vhodný pro binární soubory. Atribut append-only by mohl být užitečný pro logovací soubory, ovšem pak mohou nastat problémy při rotaci souborů.

Bylo by chybou se domnívat, že speciální atributy mohou samy o sobě zabránit hackerům v průniku do systému, případně omezit škody takového průniku. V okamžiku, kdy vetřelec získá administrátorská práva, může tyto atributy zcela prozaicky deaktivovat. Jejich hlavní využití spočívá v ochraně důležitých souborů před „nepřímými“ útoky, kdy hacker útočí z neprivilegovaného účtu pomocí některé špatně zabezpečené SUID aplikace.

Představili jsme si tři z mnoha možných způsobů, jak chránit obsah disku před bezpečnostním incidentem. Běžný uživatel, který se stará o svou pracovní stanici, je patrně nevyužije. Ale administrátor, který má na starosti systém s mnoha uživateli, by měl být s uvedenými způsoby důkladně seznámen, aby mohl rozpoznat, jaká kombinace metod je pro jeho systém ta nejvhodnější.

Našli jste v článku chybu?

15. 6. 2006 14:45

Navi (neregistrovaný)
Coz je ovsem pomerne brutalni hack na neco, co by _mel_ umet OS sam od sebe...

9. 10. 2000 15:16

Jaroslav Nevlud (neregistrovaný)

Pane Bobcik, konkretni reseni me sice nenapada, ale uprime: Vy jste se s timto pripadem nekdy setkal? Asi 10 let se venuji sprave unixovych systemu (tru64,Solaris,Aix,HPUX,Linux) a nikdy jsem podobnou vec nepotreboval. Kdybych potreboval, tak bych nastavil atribut group na cteni/zapis a pro cteni bych napsal desetiradkovy programek, ktery by mel prava -r-xr-s--x a skupinu umoznijici cteni/zapis souboru a proste bych si zkontroloval login a program by se choval jako cat.... A uzivatele, kteri moh…

Podnikatel.cz: Přivýdělek u Airbnb nebo Uberu? Čekejte kontrolu

Přivýdělek u Airbnb nebo Uberu? Čekejte kontrolu

Vitalia.cz: I církev dnes vyrábí potraviny

I církev dnes vyrábí potraviny

Vitalia.cz: Jak koupit Mikuláše a nenaletět

Jak koupit Mikuláše a nenaletět

Lupa.cz: E-shopy: jen sleva už nestačí

E-shopy: jen sleva už nestačí

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Podnikatel.cz: K EET. Štamgast už peníze na stole nenechá

K EET. Štamgast už peníze na stole nenechá

DigiZone.cz: Recenze Westworld: zavraždit a...

Recenze Westworld: zavraždit a...

Vitalia.cz: Chtějí si léčit kvasinky. Lék je jen v Německu

Chtějí si léčit kvasinky. Lék je jen v Německu

Vitalia.cz: Říká amoleta - a myslí palačinka

Říká amoleta - a myslí palačinka

Podnikatel.cz: EET: Totálně nezvládli metodologii projektu

EET: Totálně nezvládli metodologii projektu

Vitalia.cz: 9 největších mýtů o mase

9 největších mýtů o mase

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí

Lupa.cz: Google měl výpadek, nejel Gmail ani YouTube

Google měl výpadek, nejel Gmail ani YouTube

120na80.cz: Pánové, pečujte o svoje přirození a prostatu

Pánové, pečujte o svoje přirození a prostatu

Podnikatel.cz: Prodává přes internet. Kdy platí zdravotko?

Prodává přes internet. Kdy platí zdravotko?

Vitalia.cz: To není kašel! Správná diagnóza zachrání život

To není kašel! Správná diagnóza zachrání život

Podnikatel.cz: Víme první výsledky doby odezvy #EET

Víme první výsledky doby odezvy #EET

Vitalia.cz: Jsou čajové sáčky toxické?

Jsou čajové sáčky toxické?

Vitalia.cz: Tesco: Chudá rodina si koupí levné polské kuře

Tesco: Chudá rodina si koupí levné polské kuře