![]() Specializovaný týdeník o výpočetní technice |
|
![]() |
Seriál o bezpečnosti a informačním soukromí |
Část 51 - CW 27/98
Bezpečnost UnixuJaroslav Dočkal, Josef Kaderka
Otevřenost, pružnost, přenositelnost, interoperabilita... tak jsou charakterizovány unixové operační systémy. Tyto vlastnosti musí mít dopad na jejich bezpečnost, ať již kladný anebo záporný. Některé typické otázky s tím spojené jsou naznačeny v tomto dílu seriálu. Operační systém Unix vznikl na přelomu 60. a 70. let v Bellových laboratořích firmy AT&T. V souladu s vývojem byl kontinuálně obohacován o nové funkce, např. o podporu počítačových sítí, grafické uživatelské rozhraní nebo bezpečnostní prvky. Vzhledem ke své průkopnické roli se samozřejmě nevyhnul problémům či chybám a také některé jeho vlastnosti jsou poplatné době vzniku.
Uživatelé systému a jeho administrátor Do Unixu může uživatel přistupovat pouze na základě znalosti přihlašovacího jména a hesla. Zvláštních (až neomezených) výsad požívá superuživatel (superuser), jehož přihlašovací jméno je root a skrývá se pod ním administrátor systému. Méně zkušeným administrátorům působí těžké chvíle fakt, že omylem zadaný destruktivní příkaz nelze vzít zpět. Každý uživatel má svůj identifikátor (UID -- User Identifier) a identifikátor skupiny GID (Group Identifier). Vytváření skupin a zařazování uživatelů do nich je jedním z úkolů administrátora systému. Udělením určitého práva skupině získávají její členové možnost tímto právem disponovat. Tato možnost však nevyplývá z členství automaticky (jako např. v Novell NetWare), nýbrž uživatel si musí žádanou skupinu příkazem newgrp nastavit. Jako v každém víceuživatelském a víceúlohovém operačním systému i v Unixu hraje mimořádně významnou roli administrátor systému. Díky otevřenosti Unixu může svůj systém skutečně dokonale ovládnout způsobem, který je v jiných prostředích nemyslitelný, může jej také snadno kompromitovat.
Řízení přístupu k souborům a adresářům Systém souborů v Unixu představuje strom s jediným kořenem, který se dále větví do jednotlivých adresářů. Jeho struktura je pevná a je dána standardy POSIX. V tradičním Unixu existují pro každý soubor 3 možná přístupová práva -- pro čtení r, pro zápis w a pro provádění x. Dále se odlišují 3 kategorie uživatelů -- vlastník souboru, skupina a ostatní. U nově vytvořených souborů je vlastníkem jejich tvůrce. Vlastnictví souboru a přístupová práva může změnit jen vlastník souboru a samozřejmě superuživatel. Každá z uvedených kategorií má svoji trojici přístupových práv. V moderních verzích Unixu se používají i další mechanismy, např. Access Control List (ACL). Tento nadstavbový prostředek dovoluje oprávnění k přístupu definovat jemněji. K manipulaci s ACL obvykle slouží příkazy lsacl (výpis) a chacl (nastavení nebo změna). Pro specifikaci ACL se používá tvar (uživatel.skupina,přístup). Závěrečná zmínka se týká přístupových práv k adresáři. Chce-li mít uživatel rozumný přístup do adresáře, měl by mít alespoň právo r-x. V takovém případě může daný adresář zkoumat (vstoupit do něj a vypisovat jeho obsah; číst obsah souborů nebo jej kopírovat jinam -- pokud to dovolí práva těchto souborů). Má-li uživatel k adresáři práva rwx, může v něm rušit soubory včetně těch, které mu nepatří nebo ke kterým nemá žádné právo (i když s nimi jinak nemůže dělat nic)! Existuje také speciální atribut, při jehož nastavení mohou rušit soubory v adresáři jen jejich vlastníci (pak má příslušný výpis tvar rwt).
Procesy Každý proces (běžící program) má svého vlastníka (viz UID), kterým je uživatel, jenž daný proces vytvořil a od kterého se odvozují práva procesu. Avšak uživatel má jistě možnost měnit svoje heslo. Musí tudíž mít možnost zápisu do souboru uchovávajícího hesla. Ale tak důležitý soubor přece nemůže být přístupný pro zápis obyčejnému uživateli! Řešení se nazývá s-bit, označení je odvozeno od Set UID ( SUID, podobně SGID). Jedná se o doplňkový atribut souboru, který říká, že program, obsažený v daném souboru, bude mít po spuštění UID nikoli uživatele, který jej spustil, nýbrž vlastníka souboru. Někdy se používá termín efektivní UID. Mechanismus SUID je na jedné straně dobrým pomocníkem, ale na druhé může být zdrojem problémů. Ledabylý administrátor může vytvořit soubor s nastaveným s-bitem, u kterého z roztržitosti neomezí přístup pro zápis. Naopak pečlivý administrátor by měl mít přehled o všech souborech ve svém systému s nastaveným s-bitem. Naštěstí akce typu "Vymyslím nekalý program, uložím do souboru, nastavím u něj s-bit, vlastnictví předám uživateli root a je to" zde již byly a Unix je řeší obvykle tak, že při změně vlastníka s-bit zruší. Avšak z historie i současnosti je známo více postupů využívajích nevhodně nastavený s-bit k získání neoprávněného přístupu.
Autentizace uživatele Autentizace uživatele spočívá v uvedení správného hesla. Unix obvykle požaduje volit netriviální heslo o alespoň šesti znacích. V případě potřeby lze snadno stanovit povinnost mít delší heslo, určit dobu jeho platnosti, nutnost je periodicky měnit apod. Pokud by byla ochrana heslem nedostačující, mohou být doplněny libovolné další mechanismy, např. systém jednorázových hesel S/Key, dodatečná hesla pro přístup přes modemy nebo autentizace pomocí nástrojů jako Kerberos, RADIUS apod. V minulosti byla hesla (samozřejmě šifrovaná) přístupná všem uživatelům, u současného Unixu jsou uložena mimo jejich dosah. Někdy bývají navíc kopie šifrovaných hesel spolu s dalšími důležitými údaji uloženy v TCB (Trusted Computing Base -- důvěryhodná výpočetní báze), kde jsou navíc jištěny kontrolními součty a jinými opatřeními. Při startu operačního systému i při některých dalších operacích se ověřuje konzistentnost obsahu TCB. Jsou-li detekovány problémy, nepovolí se např. přechod do víceuživatelského modu, dokud není zjednána náprava. Tím se dociluje odolnosti vůči nekorektním zásahům do systémových oblastí včetně zásahu administrátora. V Internetu lze vyhledat programy pro hledání slabých hesel (crack, npasswd, passwd+). V praxi je může použít jen administrátor, neboť uvedené programy musí mít přístup k šifrovaným heslům. Jejich činnost se obvykle skládá ze dvou základních fází. Při první se zkouší různé kombinace známých údajů o uživateli, ve druhé se pak přechází na slovníky. Standardně jsou k disposici slovníky z anglofonního prostředí, nicméně díky píli tuzemských nadšenců máme i slovníky národní.
Komunikace a sítě V Unixu jsou dobře patrné stopy vývoje počítačového světa počínaje terminálovým režimem přes jednoduché sítě založené na dvoubodové komunikaci až po sítě poskytující služby odpovídající dnešním požadavkům. U klasického Unixu se např. autentizace opírala o důvěryhodnost IP adres a nemožnost neoprávněně zachytit komunikaci mezi systémy. Na tomto předpokladu je založen zejména klasický síťový souborový systém (NFS), umožňující sdílení systému souborů v rámci počítačové sítě stejně jako bezpečnostní mechanismus, povolující přístup k danému počítači jen z definovaných adres. Rovněž systém grafického uživatelského rozhraní X-Window byl zamýšlen pro relativně bezpečné prostředí. Navíc běžné síťové protokoly jako Telnet, ftp, POP3 a další komunikují otevřeně, čili riziko zachycení hesel je značné. V současných verzích Unixu jsou už všechny naznačené problémy vyřešeny. Prakticky ke všem službám existují bezpečné alternativy, založené na osvědčených kryptografických metodách. Jejich implementace je jedním z úkolů administrátora.
Záznamy o průběhu práce systému a uživatelů Unix má k dispozici propracovaný systém záznamů o chodu systému, neboť již od začátku poskytoval podklady pro platby od uživatelů. Některé údaje zaznamenávají přímo systémové procesy do určených souborů (logů). Další možností vedení záznamů je systémový proces syslog, na který se mohou definovaným způsobem obracet i jiné procesy. Samozřejmostí je možnost zvolit akci při vzniku události (ignorování, záznam, odeslání elektronického dopisu, okamžité hlášení na terminál). K základním zaznamenávaným údajům patří: - úspěšná přihlášení -- včetně místa a času, - neúspěšná přihlášení, - zahájení a ukončení chodu systému, - problémy zjištěné za chodu systému, - příjmu a odesílání elektronické pošty, - změny UID, - významná hlášení jiných programů. Kromě uvedených údajů lze zaznamenávat aktivitu každého uživatele nebo procesu a samotného operačního systému, např. spouštění programů, přístup k souborům a jiným prostředkům atd. Je třeba mít na mysli, že takové záznamy mohou rychle zaplnit i velmi velký systém souborů.
Šifrování a kontrolní součty Hesla se šifrují upraveným algoritmem DES. Pro šifrování souborů je uživatelům k disposici program crypt, který poskytuje jen poměrně nízký stupeň odolnosti. V případě potřeby lze doplnit dokonalejší mechanismy, např. PGP. Pro kontrolní součty se používá program cmp anebo různé nástroje pro digitální podpis typu MD2, MD4, MD5 anebo Snefru (viz http://ciac.llnl.gov/ciac/ToolsUn ixSig.html). Např. pro klíčové binární soubory zajišťuje uložení digitálních podpisů na bázi MD5 nástroj zvaný Tripwire (ftp://info.cert.org/pub/tech_tip s/security_tools). Některé systémy jako je HP-UX používají tzv. PDF (Product Description File), které slouží pro kontrolu atributů a existence souborů.
Jak zajistit bezpečnost systému? Administrátor musí mít náležitou průpravu, spočívající v dobré znalosti vlastního systému, bezpečnostních rizik, slabin, potenciálních zdrojů útoků a v neposlední řadě i svých uživatelů. Nevyhnutelností je přístup administrátora k Internetu. Nejaktuálnější údaje o problémech různého druhu najdete na http://161.53.42.3/~crv/security/ bugs/list.html, viz obrázek). Administrátor by měl urychleně instalovat všechny záplaty. Měl by používat potřebné bezpečnostní nástroje (např. http://ciac.llnl.gov/ciac/Securit yTools.html). Musí vést uživatele k dodržování bezpečnostních zásad. Měl by vyjít ze zásad bezpečnostní politiky své organizace a mít zpracovánu metodiku kontrol včetně časových rozvrhů. Dále je vhodné mít připraven scénář opatření pro případ průniku a postup při obnově činnosti systému. Pro zefektivnění práce při ovládání většího množství systémů dodávají specializované firmy vhodné nástroje.
Systémy vyšších bezpečnostních úrovní Převážná většina systémů Unix má možnost posílit svoji úroveň bezpečnosti na stupeň C2 (podle TCSEC, viz CW 33/97). Výjimečně existují systémy, vyhovující stupni B1 (viz CW 32/97). Jako příklady systémů této úrovně lze uvést HP-UX BLS-CMW, SCO CMW+. Na úrovni B2 se požaduje formální model bezpečnostní politiky. Příslušným kritériím zatím vyhovuje jediný systém typu Unix a to Trusted RUBIX B2 firmy Infosystems Technology. A co ještě vyšší úrovně? Jejich požadavky jdou již nad filozofii Unixu, počínaje zavedením funkce bezpečnostního administrátora u úrovně B3 nebo důrazem na verifikaci u úrovně A1. Systémy těchto úrovní je třeba vyvíjet s ohledem na bezpečnost od samotného počátku návrhu.
| COMPUTERWORLD - seriál o bezpečnosti | COMPUTERWORLD | IDG CZ homepage | |