Bezpečnostní díry jako standard?

25. 11. 2005

Sdílet

Každý operační systém či jakýkoliv jiný program, který má co do činění s bezpečností, má své typické bezpečnostní nedostatky a svá typická slabá místa. Je to dáno vnitřní strukturou takového softwaru a také tím, že všichni administrátoři mají tendenci opomíjet přesně ty samé bezpečnostní díry a dělat stejné chyby…

Linux je z hlediska míry typičnosti běžných bezpečnostních prohřešků opravdovým šampiónem. Je to způsobeno vysokou standardizovaností linuxového prostředí. V Linuxu existují velmi vyhraněné způsoby přístupu k řešení prakticky jakéhokoliv problému, což se týká zejména problémů bezpečnostních. Ono řešení ve stylu „takhle to přece dělá správný linuxář“ potom v praxi znamená, že existuje omezená množina nejčastějších bezpečnostních problémů, s nimiž se v linuxovém prostředí můžeme setkat. Ostatní slabá místa systému se sice vyskytují, ale jsou k vidění jen velmi zřídka.

Mohlo by se zdát, že jasně definovaný okruh vyskytujících se děr nahrává spíše hackersky orientovaným záškodníkům než mírumilovným správcům. Ovšem situace je trochu jiná: za prvé, pokud správce ví, na co si má dát pozor, je mnohem menší pravděpodobnost, že se dopustí chyby. Za druhé, teprve postavením administrátorů před stejné problémy je umožněna jejich spolupráce. A spolupráce odborníků na bezpečnostní problematiku je samozřejmě jedním z hlavních předpokladů pro zlepšení současné úrovně zabezpečení počítačových systémů.

Existence do jisté míry „standardních“ bezpečnostních děr stála v roce 1999 v pozadí vzniku projektu CVE – Common Vulnerabilities and Exposures, který má za cíl vytvořit co nejúplnější kartotéku běžných bezpečnostních „slabých míst“ a jiných potencionálních bezpečnostních problémů. Smyslem CVE je sjednotit „jazyk“ všech programů, které se starají o automatizovanou kontrolu zabezpečení. Pokud jeden CVE podporující program konkrétní bezpečnostní díru podle standardu nějak nazve, můžeme ji pod tímto názvem jiným programem spřáteleným s CVE odstranit nebo najdeme způsob nápravy podle známého standardizovaného názvu v diskusních fórech na internetu.

Nyní, když máme k dispozici rozsáhlý katalog pojmenovaných obvyklých bezpečnostních prohřešků a ke každému z nich standardizovaný název, můžeme se poohlédnout po nějakých programech, které je dokáží v našem systému snadno a rychle nalézt.



Bezpečnostní skenery

Poznatek, že velká většina chyb v konfiguraci linuxových systémů je vesměs typická, vyústil v nápad sestrojit program, který systém prohledává a snaží se nalézt jeho potenciální bezpečnostní slabiny. Na ty potom upozorňuje správce systému, jenž posoudí, zda se opravdu jedná o bezpečnostní riziko nebo pouze o planý poplach. Použití takového programu značně usnadňuje práci správcům tím, že jim umožňuje zabývat se něčím konstruktivnějším, než je neustálá rutinní kontrola, zda při změně konfigurace systému něco neopomenul a nenarušil tím jeho bezpečnost.

Programy pro automatizované vyhledávání bezpečnostních slabin systému se nazývají security scannery. Jejich výhody jsou zřejmé – jejich použití je rychlé a pokud se jedná o kvalitní programy, jen málokterý potenciální bezpečnostní problém jim unikne. To, jak dobrý daný bezpečnostní skener je, se samozřejmě nedá určit jen podle toho, kolik
bezpečnostních děr dokáže teoreticky najít. Možná mnohem důležitější pro praktické využití je, jak dobře rozpozná skutečný problém v zabezpečení od nepodstatné banality plynoucí z toho, že žádné dva systémy nejsou identické. Vzhledem k tomu, že security scanner zjednodušeně řečeno pouze vyhledává v databázi běžných bezpečnostních neduhů, je totiž schopen v několika minutách „odhalit“ tolik chyb v konfiguraci, že by trvalo celé měsíce je všechny „opravit“. Zkrátka security scanner, který dělá z komára velblouda, není k ničemu. Jak vidno, dobrý skener je pro správce systému program k nezaplacení a pokud je kvalifikovaně obsluhován, dokáže velmi významně zvýšit produktivitu administrátora. Na některé oblíbené security scannery, jimiž současný svět zabezpečení informačních technologií disponuje, se proto podíváme blíže.



Nessus security scanner (www.nessus.org)

Nessus je pravděpodobně nejlépe hodnocený security scanner, který je v současné době k dispozici. Jedná se v prvé řadě o skener síťový, tedy použitelný pro vyhledávání děr zvenčí diagnostikovaného počítače. Nessus se na počítač tedy dívá ze stejné perspektivy jako hacker. Pomocí skupiny testů zjišťující nejrůznější druhy problémů si Nessus počítače v síti „oťukává“ k nerozeznání od toho, jak by to dělal samotný hacker.

Nessus má k dispozici některé velmi pokročilé metody testování. U většiny security scannerů bylo zvykem zjišťovat slabiny síťových služeb – třeba webserveru – podle verze dané síťové služby. Prostě se předpokládalo, že třeba verze 1.12a určitého serveru trpí tím nebo oním neduhem. To mělo hned dvě nevýhody – jednak bylo třeba udržovat a pravidelně aktualizovat poměrně rozlehlou databázi verzí jednotlivých síťových služeb (a i tak se stávalo, že úsudek security scanneru neodpovídal skutečnosti). Tímto neduhem Nessus rozhodně netrpí. Místo prohledávání tabulek umí útok sám provést, respektive umí jej provést do fáze, kdy už lze jednoznačně rozhodnout, zda je konkrétní počítač napadnutelný. Pro testování je navíc možné použít účinný skriptovací jazyk, umožňující správci snadno konstruovat a prověřovat různé nové typy útoku.

Ke standardnímu vybavení patří celá řada plug-inů. Klasické jsou například plug-iny testující systém na možnost přímého získání superuživatelského přístupu nebo libovolného neoprávněného vzdáleného přístupu, plug-iny testující odolnost proti útokům typu Denial-of-Service nebo nenapadnutelnost na webu tolik běžných skriptů CGI. Kromě běžných plug-inů si samozřejmě můžeme z webu stáhnout i řadu specializovanějších. Výsledky všech provedených testů lze zobrazit v téměř libovolném formátu. Zmiňme například XML, HTML, LaTeX apod. Navíc jsou výsledky kompatibilní s pojmenováním podle standardu Common Vulnerabilities & Exposures a je tedy zaručena jejich dobrá další zužitkovatelnost.

Nessus je značně škálovatelný. Je možné ho použít jak pro malé firemní sítě o několika počítačích, tak pro velké úseky sítí, čítající stovky IP adres. Kromě toho je provozovatelný na vesměs libovolné platformě. A v neposlední řadě je Nessus vydán pod licencí Open-
Source. Jeho zdrojové kódy stejně jako samotný program jsou zdarma k dispozici doslova každému. S těmito parametry Nessus jen stěží nachází ve své kategorii konkurenci.



COPS (www.fish.com/cops)

Tento program, jehož úplný název zní Computer Oracle and Password System, je typický zástupce druhé skupiny bezpečnostních skenerů, a sice lokálních, někdy nazývaných též host security scanners. Ty se spouštějí přímo v systému, který chceme testovat. Fungují na principu vyhledávání podezřelého nastavení „zevnitř“, obvykle podle obsahu konfiguračních souborů nebo podobných indicií.

Programy tohoto typu obvykle nacházejí snadno prolomitelná uživatelská hesla, podezřelé programy spouštěné startovacími skripty, kontrolují nastavení přístupových práv souborů, speciálně potom např. zda mají programy nastavený SUID bit. Velmi často také dokáží evidovat kontrolní součty spustitelných souborů na pevném disku. Pokud se kontrolní součet některého souboru změní a správce přitom soubor v poslední době neaktualizoval, může z toho usoudit, že pozměněný soubor by mohl obsahovat parazitní škodlivý kód.

Již ze způsobu přístupu k vyhledávání bezpečnostních děr je jasné, že oba typy bezpečnostních skenerů jsou schopny nalézt systémové slabiny poněkud odlišného charakteru. Lokální bezpečnostní skener například může s úspěchem zjistit, že některá přístupová práva souborů jsou patrně vlivem omylu nebo nedopatření odlišná od normálu. Třeba soubor v domovském adresáři uživatele, který má povolen zápis „pro všechny“, je krajně podezřelý, stejně jako soubor s hesly, u něhož je povoleno čtení. Bezpečnostní omyly tohoto typu by síťový skener objevil jen stěží. A naopak: je mnohem snazší zjistit napadnutelnost síťové služby, která není chráněná před útokem DoS, tím, že zkusíme útok simulovat, než byť tou nejsložitější analýzou konfiguračních souborů.

Pro správnou ochranu systému je tedy nejlepší využít vhodné kombinace síťových a lokálních bezpečnostních skenerů. Podobné kombo je schopné pomoci nakonfigurovat systém tak, aby byl odolný proti většině běžných útoků. Je však třeba pamatovat na to, že hlavním článkem zabezpečovacího řetězce je osoba administrátora. Špatnému správci ani ten nejdokonalejší skener nepomůže.



Užitečné odkazy


• cve.mitre.org

• www.nessus.org

• www.kbeta.com/Tools/LinuxTools.htm

• www.fish.com/cops/



Vulnerability X Exposure

Systém CVE definuje dvě hlavní kategorie narušení bezpečnosti – takzvanou bezpečnostní zranitelnost (angl. vulnerability) a „vystavení se“ bezpečnostnímu riziku (angl. exposure). První termín označuje objektivní nedostatek v zabezpečení, tedy takovou bezpečnostní charakteristiku, která je chápána jako negativní bez ohledu na konkrétní specifické využití daného počítače. Typickou bezpečnostní slabinou je např. možnost obejit přístupová hesla při přihlášení k počítači. Druhá kategorie, označovaná obtížně přeložitelným názvem exposure, zahrnuje prohřešky s pouze relativní mírou ohrožení. Za hezký příklad můžeme považovat např. spuštění služby, která zbytečně usnadňuje zvenčí vedený útok tím, že umožní získat nepřiměřené množství informací o našem stroji. Samozřejmě, že hranice toho, které informace už jsou nepřiměřené, se liší podle konkrétního využití a požadované míry zabezpečení systému, což je také důvodem, proč nemůžeme exposure označit jako bezpečnostní díru s všeobecnou platností.

Výběr pluginů v programu Nessus.

Autor článku