Bezpečnost systémů připojených k Internetu
V předcházejícím článku jsme se zmínili o základním stavebním kamenu počítačové bezpečnosti, kryptografii. Tento díl budeme věnovat praktickým otázkám - bezpečnosti systémů připojených k Internetu.
Obecně a v oblasti počítačové bezpečnosti zvláště platí jedna zásada:
Upraveno pro naše téma - na zabezpečení dat můžeme vynaložit v podstatě libovolné finanční prostředky, asi však nemá smysl utratit miliony korun na ochranu včerejších zpráv ČTK. Pokud útočník disponuje dostatečným zázemím (zejména finančním), je schopen překonat v podstatě libovolnou ochranu. Cílem je spíše případného útočníka odradit - dostat ho do situace, kdy na prolomení naší obrany vynaloží více prostředků, než kolik může získat, a proto je základním úkolem každé bezpečnostní politiky stanovit rizika. Podívejme se nyní, jak to vypadá s bezpečností počítačů připojených k Internetu.
Počítače na Internetu
V prvním díle seriálu jsme si řekli, že bezpečnost Internetu znamená vlastně bezpečnost počítačů k Internetu připojených a bezpečnost aplikací, které Internet používají. Množství počítačů k Internetu přímo připojených je obrovské, tyto počítače však lze rozdělit do několika kategorií:
- osobní počítače - jednouživatelské, používají jako operační systém jednu z variant DOS/Windows,
- pracovní stanice - víceuživatelské (řádově desítky uživatelů), pracují většinou pod nějakou variantou UNIXu (respektive Windows NT),
- servery - víceuživatelské (stovky a více uživatelů), opět používají různé odnože UNIXu.
O bezpečnosti systémů Windows bychom mohli napsat celý další seriál nebo ji shrnout do jednoho slova, z našeho pohledu jsou však důležité jednak pracovní stanice, jednak servery. Zejména servery představují mnohem lákavější cíl pro případné útočníky - je na nich závislá naprostá většina základních služeb Internetu. Podaří-li se škodilovi vlámat se do vašeho PC, jsou ohrožena vaše data; podaří-li se mu narušit bezpečnost serveru, bude pravděpodobně poškozeno mnohem více uživatelů.
Víceuživatelský UNIXový systém na Internetu si můžeme představit jako středověké město obehnané hradbami, kde žije všemocný vládce jménem Root (administrátor) a jeho poddaní (uživatelé). K městu vedou různé cesty, každá je ukončena bránou (službou), kterou hlídá stráž (démon). Poddaní do města vstupují některou z těchto bran (například branou s nápisem Telnet) a při vstupu musí říci heslo, aby je stráž vpustila dovnitř. Protože takové město je komplikovaný mechanismus napojený na vnější svět, nechal vládce zřídit i další brány, kterými do města například přichází pošta, používají je různí obchodníci k prodeji svého zboží a podobně. Tyto brány se vyznačují tím, že příchozí se většinou nemusí prokazovat heslem, ale také se (teoreticky) nemohou dostat dovnitř.
Kudy dovnitř?
Nyní si představme sami sebe v roli středověkého nájezdníka, jehož cílem je město dobýt, obchody znásilnit a ženy vyrabovat (nebo naopak?). Městské hradby jsou příliš vysoké, přes ně se dovnitř nedostaneme. Zbývá nám tedy některá z bran - buď průchozí, nebo obslužná. Zaměřme se nejprve na průchozí brány (tedy na ty, kterými se dostávají dovnitř spořádaní občané).
Nejjednodušší způsob, jak ošálit strážného démona, je získat heslo některého z měšťanů (démoni, díky své vrozené tuposti, si jednotlivé obyvatele nepamatují - znáš heslo, můžeš dovnitř). Buď se můžeme obrnit trpělivostí a heslo zkusit uhodnout (při známé tendenci uživatelů volit si zapamatovatelná hesla to nebývá těžké), nebo můžeme použít sociální inženýrství - vyhlédnutou oběť podplatíme, vydíráme, mučíme nebo podvedeme; na metodě celkem nezáleží, výsledkem je znalost hesla a přístup do města.
Druhá metoda, použitelná i u ostatních bran, je využít slabosti příslušné stráže. Démoni jsou sice nepodplatitelní, nicméně mají své chyby. Většina strážných démonů využívá autoritu vládce; podaří-li se nám je přesvědčit, aby provedli nějakou (původně nezmýšlenou) akci, máme vyhráno. Takové přesvědčování je vcelku možné, protože démoni s návštěvníky komunikují (i když každý svým vlastním jazykem - protokolem) a vhodnou zprávou můžeme démona zmást.
Zde je asi na místě naši pohádku opustit a vrátit se k holé realitě. Jeden z Murphyho zákonů říká, že v každém programu je alespoň jedna chyba, a platí to i o démonech, kteří obsluhují UNIXové služby. Tyto chyby se zejména týkají ošetření vstupních dat - je možné zasláním "správně" formulovaného požadavku přinutit démona, aby provedl útočníkem naplánovanou akci. Musíme ovšem říci, že využití takovéto chyby je záležitostí pro zkušené programátory. Mnohem častější a neméně nebezpečná je špatná konfigurace programu, kdy démon například povolí akce, které by povolit neměl a podobně.
Stručně řečeno, tam, kde je v hradbách nějaká brána, existuje i potenciální problém. Často nemusí dojít k průniku nájezdníků dovnitř, stačí i to, že se ven z města dostanou informace, které měly zůstat bezpečně skryté v pokladnici.
Třetí a historicky osvědčená metoda je použít trojského koně. Obyvatelé města jsou zvídaví a najdou-li v okolí nějaký zajímavý předmět (v našem případě program), je celkem pravděpodobné, že ho vyzkouší. Náš trojský kůň se dostane za hradby a bojovníci v něm ukrytí mohou zaškodit - jejich primární cíl samozřejmě je neopatrný uživatel.
Takovým trojským koněm mohou být například Javovské applety, komponenty ActiveX, JavaScriptové příkazy, makra ve Wordu a podobně - v podstatě cokoliv, co si nic netušící uživatel (mnohdy nechtěně) nahraje do svého počítače a co je schopno provést nějakou akci.
Tím samozřejmě seznam použitelných metod nekončí, vše záleží na vynalézavosti dobyvatelů.
Jak svrhnout vládce?
Úspěšně jsme zdolali hradby města a procházíme ulicemi maskováni za obyčejného obchodníka s ovocem. Našim úmyslem je svrhnout vládce a zmocnit se jeho pokladů - jak to udělat?
Zevnitř města je spektrum našich možností mnohem širší než zvenčí. Nejzranitelnějším cílem jsou vládcovi sluhové, kteří vykonávají rutinní i méně běžné činnosti - patří mezi ně hlídací démoni, k nimž máme snadný přístup, ale především obyčejní úředníci s delegovanými pravomocemi.
Ano, je řeč o SUID a SGID programech. Pro laiky - toto jsou programy, které může spustit libovolný uživatel, ale které při své činnosti využívají administrátorská privilegia. Vzhledem k tomu, co jsme řekli o chybách v programech a k tendenci některých tvůrců softwaru zjednodušovat si život, je každý takový program potenciálním ohrožením systému.
Můžeme se také začít rozhlížet, zda je vládce pečlivý a pořádný - nepořádní vládcové za sebou zapomínají zamykat a nechávají palác bez dozoru. A konec konců i vládce je jenom člověk a je na něj možné použít metody sociálního inženýrství.
Závěr
Smyslem tohoto dílu bylo vyvolat v čtenářích pocit zranitelnosti - poskytnout dostatek informací o možných nebezpečích a přitom se vyhnout podání návodu k prolomení systému. Už vážný závěr by měl znít: každý počítač připojený k Internetu a komunikující se svým okolím je více či méně zranitelný - díky programovým chybám, díky neopatrnosti uživatelů, díky nedbalosti autorů softwaru, chybám administrátora, ... Zcela jsme vynechali bezpečnostní rizika spojená s vlastní komunikací po Internetu (bezpečnost přenášených dat, dostupnost služeb Internetu a podobně) - těm bude věnován následující díl seriálu.