\"/
\"/ \"/    

Bezpečnost v systémech UNIX

David Rohleder, ÚVT MU
Ročník VII - číslo 4, duben 1997
Citace: D. Rohleder. Bezpečnost v systémech UNIX. Zpravodaj ÚVT MU. ISSN 1212-0901, 1997, roč. VII, č. 4, s. 14-16.
Tematické zařazení: Bezpečnost
Článek je součástí seriálu Bezpečnost v systémech UNIX
 předchozí článek | následující číslo 

Bezpečnost počítačových systémů je jednou z věcí, o kterých se v současnosti hodně mluví. Zejména v souvislosti s Internetem. Počítače připojené k Internetu jsou vystaveny většímu nebezpečí než ostatní. Operační systém UNIX sice patří mezi nejstarší systémy, ale zároveň mezi systémy, u kterých byl na bezpečnost kladen zřetel. V následující sérii článků popíšu některé prvky bezpečnosti a jejich potenciální slabá místa.

Hesla

S prvním prvkem bezpečnosti se uživatel setká hned na začátku své práce v podobě přihlašovací procedury. Ta musí být dostatečně silná, aby zamezila neoprávněnému přístupu k systému. Autentizace uživatele spočívá na uživatelově znalosti, v tomto případě znalosti hesla. Je tedy na místě říci, která hesla jsou špatná a která dobrá.

Špatné heslo je takové, které je snadno uhodnutelné nebo odvoditelné. Týká se to především následujících příkladů:

Dobré heslo naopak splňuje následující požadavky:

Takto specifikované heslo je však obtížně zapamatovatelné. Jak dlouho si budete pamatovat heslo wDf78!@ ? Můžeme tedy zvolit heslo, pro které máme nějakou mnemotechnickou pomůcku. Např. 2Brn2B? (To be or not to be?), první písmena druhé sloky oblíbené písně, značky chemických prvků, jejichž atomová čísla jsou dělitelná 7 atd.

V dřívějších systémech byla hesla uložena nezašifrovaná v souborech přístupných pouze superuživateli. V současné době používá UNIX k ochraně hesel algoritmus crypt(3). Jedná se o modifikovaný algoritmus DES doplněný o metodu solení.

Heslo se zpracovává následovně: Systém získá heslo ze vstupu. Z každého písmene sebere dolních 7 bitů. Pak se vygenerují dva tisknutelné znaky (sůl), které se použijí na permutaci bitů v hesle. Algoritmus má tedy 7x8=56 bitů klíče, které se použijí k zašifrování nulového 64bitového řetězce modifikovaným algoritmem DES. Takto vzniklý šifrový obraz hesla se uloží spolu s vygenerovanou solí, která tvoří předponu takto vzniklého obrazu, do souboru s hesly.

Autentizace uživatele je pak totožná s výše popsaným algoritmem, s tím, že na konci algoritmu je právě vytvořený šifrový obraz porovnán s uloženým obrazem. Jestliže jsou tyto obrazy totožné, pak uživatel zadal správné heslo.

Potenciální útočník má pak několik možností, jak takové heslo zjistit:

  1. Opakované pokusy o přihlášení. Tento útok může uspět proti účtům bez hesel, s přednastaveným heslem nebo u velmi slabých hesel.
  2. Dešifrování ukradeného souboru s hesly. Takový soubor může být získán z již narušeného počítače (uživatelé obvykle používají stejná hesla na více počítačích) nebo z nenarušeného počítače použitím služeb jako ftp, tftp apod.
  3. Odposloucháváním. Jestliže útočník může odposlouchávat terminálové relace, pak může zjistit i heslo.

Obranou proti útokům na hesla je především volba dobrého hesla. Superuživatel může použít upravený program passwd, který odmítá slabá hesla.

Útok na hesla jejich dešifrováním je možný dvěma způsoby.

  1. Útok hrubou silou. Útočník zkouší všechny kombinace klíče. Uveďme příklad pro heslo s 6 písmeny. Máme 96 tisknutelných znaků. Procesor Pentium 133 zvládne vyzkoušet přibližně 2.400 klíčů za sekundu. Pro vyzkoušení všech možností klíče tedy potřebujeme 96^6/1.000=326.149.079 sekund, což je 3.774 dní. Ubráním jednoho písmene zmenšíme čas potřebný k dešifrování 96násobně. Navíc je algoritmus dešifrování snadno paralelizovatelný. Jak je vidět, prohledání celého stavového prostoru pro 6písmenné heslo může trvat na jediném počítači asi 10 let. Ale pro 5písmenné heslo je to pouze 39 dní.
  2. Slovníkový útok. Je modifikací útoku hrubou silou. Tímto postupem se omezí počet prohledávaných klíčů. Nejznámější je v této oblasti program crack. Program má k dispozici několik slovníků a soubor pravidel. Na každé slovo jsou použita pravidla, která dané slovo modifikují. Pak jsou všechny modifikace zašifrovány a porovnány se souborem hesel. Ve slovnících jsou obsažena jak běžná slova, tak i některá špatná hesla jako 123456, qwerty nebo slova z počítačového žargonu. Program také zkouší použít další informace, které může získat z uživatelových souborů. Jedná se o informace ze souboru /etc/passwd a souborů ~/.plan~/.project. (Pozn.: crack je velmi náročný na výkon systému, proto by měl být použit pouze v době, kdy není počítač vytížen.)

Možná se zdá, že tady dávám rady útočníkům, jak narušit systém. Pokud však program crack používá superuživatel, vezme tím útočníkům možnost objevit slabá hesla, protože je před tím objevil sám. (Pozn. pro administrátory: nespustíte-li crack vy, spustí ho určitě někdo jiný!) Procento takovým způsobem odhalených hesel může být poměrně vysoké, zvláště pokud nejsou uživatelé poučeni o volbě správných hesel.

Se vzrůstajícím výkonem počítačů je stále jednodušší se pokoušet o útok na hesla hrubou silou nebo slovníkovým útokem. Proto je důležité uchovat v tajnosti i šifrové obrazy hesel. Tyto obrazy jsou pak uloženy v souboru /etc/shadow, který je čitelný pouze superuživateli. Tím zamezíme možnosti slovníkového útoku na hesla, protože obrazy hesel nejsou dostupné.

V současnosti většina počítačových sítí pracuje na Ethernetu. Všechna data jsou posílána přes přenosovou sběrnici, kterou mají možnost všechny připojené stanice odposlouchávat. Prostředí, kde by byly pouze UNIXové počítače spravované důvěryhodným správcem, by se dalo považovat po této stránce za celkem bezpečné. Většinou tomu tak není a UNIXové počítače slouží jako servery jiným operačním polosystémům, jako jsou MS-DOS nebo Windows 1.0 - 95. Protože tyto systémy nemají žádný mechanismus řízení přístupu k systémovým prostředkům, je pro neprivilegovaného uživatele jednoduché takový počítač zneužít k odposlouchávání provozu v síti. Tento problém je hardwarově řešitelný záměnou tenkého ethernetu nebo strukturované kabeláže s hubem za strukturovanou kabeláž s přepínačem. Toto řešení je finančně velmi náročné a přitom existují programy, které umožnují těmto rizikům předcházet použitím kryptografie. Mezi nejznámější programy tohoto druhu patří systém Kerberos a v poslední době především Secure Shell.

(... pokračování)
Zpět na začátek
ÚVT MU, poslední změna 14.11.2011