Bezpečnost Unixu

Otevřenost, pružnost, přenositelnost, interoperabilita... tak jsou charakterizovány unixové operační systémy. Tyto vla...


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 jen 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řístupo-vá 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ící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ál-ní 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ří:
lúspěšná přihlášení včetně místa a času,
lneúspěšná přihlášení,
lzahájení a ukončení chodu systému,
lproblémy zjištěné za chodu systému,
lpříjem a odesílání elektronické pošty,
lzměny UID,
lvý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 disposi-ci 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/ToolsUnixSig.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/ SecurityTools.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ě činnos-ti 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áto-ra 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.
8 1460 / kat









Komentáře
K tomuto článku není připojena žádná diskuze, nebo byla zakázána.