ZÁPADOČESKÁ UNIVERZITA V PLZNI FAKULTA APLIKOVANÝCH VĚD KATEDRA INFORMATIKY A VÝPOČETNÍ TECHNIKY



Podobné dokumenty
Jak se měří síťové toky? A k čemu to je? Martin Žádník

rychlý vývoj webových aplikací nezávislých na platformě Jiří Kosek

Inteligentní NetFlow analyzátor

Novinky ve FlowMon 6.x/FlowMon ADS 6.x

Flow Monitoring & NBA. Pavel Minařík

Flow monitoring a NBA

JAK ČÍST TUTO PREZENTACI

Současný svět Projekt č. CZ.2.17/3.1.00/32038, podpořený Evropským sociálním fondem v rámci Operačního programu Praha adaptabilita

Monitorování datových sítí: Dnes

Možnosti aplikace: Copyright 2001, COM PLUS CZ, Praha

12. Virtuální sítě (VLAN) VLAN. Počítačové sítě I. 1 (7) KST/IPS1. Studijní cíl. Základní seznámení se sítěmi VLAN. Doba nutná k nastudování

MATLABLINK - VZDÁLENÉ OVLÁDÁNÍ A MONITOROVÁNÍ TECHNOLOGICKÝCH PROCESŮ

Aktivní prvky: brány a směrovače. směrovače

Měření teploty, tlaku a vlhkosti vzduchu s přenosem dat přes internet a zobrazování na WEB stránce

Load Balancer. RNDr. Václav Petříček. Lukáš Hlůže Václav Nidrle Přemysl Volf Stanislav Živný

CYCLOPE PRINT MANAGEMENT SOFTWARE- UŽIVATELSKÁ PŘÍRUČKA

nástroj pro jednoduchou správu a vedení agendy studentských počítačových sítí na kolejích SU OPF Karviná Ing.

Základní informace: vysoce komfortnímu prostředí je možné se systémem CP Recorder efektivně pracovat prakticky okamžitě po krátké zaškolení.

Registrační číslo projektu: CZ.1.07/1.5.00/ Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost

MPLS MPLS. Label. Switching) Michal Petřík -

Routování směrovač. směrovač

Microsoft SharePoint Portal Server Zvýšená týmová produktivita a úspora času při správě dokumentů ve společnosti Makro Cash & Carry ČR

vlastnosti Výsledkem sledování je: a) Využití aplikací b) Používání internetu c) Vytížení počítačů d) Operační systém e) Sledování tisků

IntraVUE Co je nového

Maturitní témata Školní rok: 2015/2016

Matematika v programovacích

Registrační číslo projektu: CZ.1.07/1.5.00/ Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost

MBI - technologická realizace modelu

Přepínaný Ethernet. Virtuální sítě.

RouterOS: Vizualizace datových toků

Koncept. Centrálního monitoringu a IP správy sítě

Přednáška 3. Opakovače,směrovače, mosty a síťové brány

Model ISO - OSI. 5 až 7 - uživatelská část, 1 až 3 - síťová část

FlowMon ADS 3. Nová generace řešení pro analýzu provozu datové sítě. Pavel Minařík

Provozní statistiky Uživatelský manuál

Internet a zdroje. (ARP, routing) Mgr. Petr Jakubec. Katedra fyzikální chemie Univerzita Palackého v Olomouci Tř. 17. listopadu

Systémy pro sběr a přenos dat

Zabezpečení v síti IP

1. Webový server, instalace PHP a MySQL 13

Vstupní požadavky, doporučení a metodické pokyny

1. SYSTÉMOVÉ POŽADAVKY / DOPORUČENÁ KONFIGURACE HW A SW Databázový server Webový server Stanice pro servisní modul...

Instalace a konfigurace web serveru. WA1 Martin Klíma

1 Webový server, instalace PHP a MySQL 13

IB111 Programování a algoritmizace. Programovací jazyky

Benefity a úskalí plošného souvislého sledování IP provozu na bázi toků při řešení bezpečnostních hlášení

Principy a použití dohledových systémů

Network Measurements Analysis (Nemea)

Využití systému Dynamips a jeho nástaveb pro experimenty se síťovými technologiemi Petr Grygárek

Správa sítí. RNDr. Ing. Vladimir Smotlacha, Ph.D.

Profilová část maturitní zkoušky 2013/2014

Váš partner ve světě vysokorychlostních sítí Bezpečnostní a monitorovací řešení pro sítě do 10 Gb/s

Technologické postupy práce s aktovkou IS MPP

Počítačová síť. je skupina počítačů (uzlů), popřípadě periferií, které jsou vzájemně propojeny tak, aby mohly mezi sebou komunikovat.

L2 multicast v doméně s přepínači CISCO

Firewally a iptables. Přednáška číslo 12

Telekomunikační sítě Protokolové modely

VYSOKÁ ŠKOLA BÁŇSKÁ TECHNICKÁ UNIVERZITA OSTRAVA FAKULTA STROJNÍ DATABÁZOVÉ SYSTÉMY ARCHITEKTURA DATABÁZOVÝCH SYSTÉMŮ. Ing. Lukáš OTTE, Ph.D.

Provádí ochranu sítě před napadením (ochrana počítačů nestačí) Odděluje uživatele (prvek nespolehlivosti) od prvků ochrany


Protokoly: IP, ARP, RARP, ICMP, IGMP, OSPF

Profilová část maturitní zkoušky 2017/2018

Versiondog Co je nového

přes webový prohlížeč pomocí Ing. Tomáš Petránek

INFORMAČNÍ SYSTÉM VIDIUM A VYUŽITÍ MODERNÍCH TECHNOLOGIÍ

Počítačové sítě pro V3.x Teoretická průprava II. Ing. František Kovařík

Detailní report nezávislého Network auditu pro FIRMA, s.r.o.

Úvod do informačních služeb Internetu

FlowMon Monitoring IP provozu

Bezpečnost webových stránek

Projektování distribuovaných systémů Lekce 2 Ing. Jiří ledvina, CSc

Střední průmyslová škola elektrotechnická Praha 10, V Úžlabině 320

Vlákno (anglicky: thread) v informatice označuje vlákno výpočtu neboli samostatný výpočetní tok, tedy posloupnost po sobě jdoucích operací.

K čemu slouží počítačové sítě

Počítačové sítě. Lekce 4: Síťová architektura TCP/IP

Střední průmyslová škola elektrotechnická Praha 10, V Úžlabině 320 M A T U R I T N Í T É M A T A P Ř E D M Ě T U

2015 GEOVAP, spol. s r. o. Všechna práva vyhrazena.

5. Směrování v počítačových sítích a směrovací protokoly

Virtuální sítě 2.část VLAN

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

Sledování IPv6 provozu v e-infrastruktuře CESNET možnosti spolupráce s uživateli

7. Aplikační vrstva. Aplikační vrstva. Počítačové sítě I. 1 (5) KST/IPS1. Studijní cíl. Představíme si funkci aplikační vrstvy a jednotlivé protokoly.

Maturitní témata. IKT, školní rok 2017/18. 1 Struktura osobního počítače. 2 Operační systém. 3 Uživatelský software.

Zápočtová úloha z předmětu KIV/ZSWI DOKUMENT SPECIFIKACE POŽADAVKŮ

Č.j. MV /VZ-2014 V Praze 22. dubna 2015

STRUČNÝ NÁVOD K POUŽITÍ

NetFlow a NBA? FlowMon 7 umí mnohem více! (NPM, APM, VoIPM, packet capture) Petr Špringl springl@invea.com

Vývoj moderních technologií při vyhledávání. Patrik Plachý SEFIRA spol. s.r.o.

MPLS Penultimate Hop Popping

Technická analýza kyberútoků z března 2013

SIMATIC S IT. Micro Automation. Promoters Meeting October Představení CP IT SPIDER CONTROL TELESERVIS. TESTOVACÍ server.

Komunikační protokoly počítačů a počítačových sítí

Y36PSI Protokolová rodina TCP/IP

WORKWATCH ON-LINE EVIDENCE PRÁCE A ZAKÁZEK

Analýza aplikačních protokolů

Registrační číslo projektu: CZ.1.07/1.5.00/ Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost

Technická specifikace

Tomáš Kantůrek. IT Evangelist, Microsoft

Směrovací protokol Mesh (802.11s) na platformě Mikrotik

Technologie MPLS X36MTI. Michal Petřík

Transkript:

ZÁPADOČESKÁ UNIVERZITA V PLZNI FAKULTA APLIKOVANÝCH VĚD KATEDRA INFORMATIKY A VÝPOČETNÍ TECHNIKY NÁVRH SYSTÉMU SLEDOVÁNÍ A VYHODNOCOVÁNÍ PROVOZU POČÍTAČOVÉ SÍTĚ DIPLOMOVÁ PRÁCE Jan Nejman Studijní program: 3902T Inženýrská informatika Studijní obor: 3902/01 Informatika a výpočetní technika (1996-2001) Vedoucí diplomové práce: Dr. Ing. Pavel Šmrha Plzeň, květen 2001

Návrh systému sledování a vyhodnocování provozu počítačové sítě Abstrakt: Cílem projektu je návrh modulárně řešeného distribuovaného systému NetFlow Monitor, který umožňuje vyhodnocování síťového provozu zpracováním NetFlow statistik exportovaných ze směrovačů Cisco. Monitor umožňuje analýzu provozu téměř v reálném čase, inteligentní filtraci, agregaci a statistické vyhodnocení dat. Dále poskytuje multikriteriální selekci dat na úrovni jednotlivých datových toků (například podle zdrojové/cílové IP adresy, použitého protokolu, portů apod., zahrnuje i heuristické metody umožňující zpracování protokolů s dynamickými porty. Systém by měl být zároveň schopen inteligentně upozorňovat na podezřelé aktivity síťového provozu (například bezpečnostní incidenty, chyby směrování apod.) zobrazováním varovných zpráv. Monitoring and evaluating system of network traffic Abstract: The goal of the project is the design of the distributed NetFlow Monitor supporting evaluation of the network traffic using NetFlow statistics exported from Cisco routers. It provides nearly real-time traffic monitoring, smart flow filtration, aggregation and statistical evaluation. It is capable of providing multicriterial data flow selection using source/destination IP addresses, protocols, ports etc., including heuristic methods for protocols using dynamic ports. The NetFlow Analyzer should be able to deal with suspicious network activities (e.g. security attacks, routing troubles etc.) by displaying appropriate warning messages.

1 Úvod... 3 2 Současné technologie analýzy rozsáhlých sítí... 4 2.1 Analýza a monitorování sítě...4 2.2 Současné produkty pro monitorování sítě...4 2.3 Směrovací techniky založené na technologii přepínání...8 2.3.1 Klasické metody pro přepínání paketů na třetí vrstvě...8 2.3.2 Cisco Express Forwarding...9 2.3.3 Tag Switching...9 2.3.4 NetFlow Switching...10 2.4 NetFlow Export...11 2.4.1 Použití NetFlow Exportu...11 2.4.2 Verze a formát NetFlow Exportu...12 3 Bezpečnost počítačové sítě... 13 3.1 Útoky typu odepření služby (Denial Of Service Attacks)...13 3.2 Používané DDoS nástroje...16 4 Popis programových prostředků... 17 4.1 Perl...17 4.2 PHP...18 4.3 MySQL databáze...19 4.4 Knihovna GD...20 5 Návrh architektury NetFlow analyzátoru... 21 5.1 NetFlow Redirector...22 5.2 NetFlow Collector...22 5.2.1 Popis programu...22 5.2.2 Detekce spojení v pasivním módu...23 5.3 NetFlow Database...24 5.3.1 Popis programu...24 5.3.2 Implementace bezpečnostních modulů...25 5.4 Návrh databázového modelu...26 5.4.1 E-R Model...26 5.4.2 Definice tabulek...27 5.5 NetFlow Web...29 5.5.1 Hlavní statistiky (menu Main)...31 5.5.2 Výpis bezpečnostních incidentů (menu Event)...35 5.5.3 Statistika přenesených dat (menu Audit)...36 5.5.4 Statistika TOP 10 (menu Top)...37 5.5.5 Informace o databázi a o směrovačích (menu Stats)...40 5.5.6 Pomoc (menu Help)...41 1

6 Instalace, použití a optimalizace výkonu... 42 6.1 Požadavky na hardwarové vybavení...42 6.2 Instalace...42 6.2.1 MySQL databáze...42 6.2.2 Perl...42 6.2.3 Perl moduly pro přístup k databázi MySQL...43 6.2.4 Instalace WWW serveru a PHP...43 6.2.5 Vytvoření databáze a tabulek...45 6.2.6 Instalace NetFlow Monitoru...45 6.2.6.1 Konfigurace NetFlow Redirectoru...46 6.2.6.2 Konfigurace NetFlow Collectoru...46 6.2.6.3 Konfigurace NetFlow Database...46 6.2.6.4 Konfigurace NetFlow Web...46 6.3 Použití NetFlow Monitoru...47 6.4 Optimalizace výkonu MySQL serveru...47 6.4.1 Tipy pro kompilaci MySQL...47 6.4.2 Nastavení parametrů serveru...48 7 Závěr... 50 2

1 Úvod Hlavním cílem práce je návrh modulárně řešeného systému pro sledování a vyhodnocování síťového provozu takřka v reálném čase založeném na zpracování NetFlow statistik exportovaných ze směrovačů Cisco. Výsledný systém by měl poskytovat inteligentní filtraci, agregaci a statistické zpracování získaných dat s případnou detekcí bezpečnostních incidentů nebo anomálního chování sítě. Cílem navrženého analyzátoru je hlavně umožnění výběru a zobrazení specifického datového toku. To lze provést například podle zdrojové/cílové IP adresy, použitého protokolu, zdrojového/cílového portu apod. Systém by měl mít možnost současného zpracování dat z různých směrovačů. Proto pro vytvoření distribuovaného systému je důležité navrhnout strukturu monitoru tak, aby se skládala z několika modulů. Jednotlivé moduly pak mohou spolupracovat a vytvářet tak i velmi rozsáhlý systém. Pro přehledné zobrazení výsledků v HTML formátu lze výhodně použit interpretovaný jazyk PHP. Všechny vytvořené stránky pak mohou mít jednotný vzhled a mohou být propojeny hypertextovými odkazy. Hypertextové odkazy zlepší přehlednost a orientaci v celém systému. To umožňuje vytvoření rozsáhlého systému, který je přehledný a snadný na ovládání. Pro grafickou reprezentaci získaných dat lze v systému implementovat barevné grafy, které mohou charakterizovat nejaktivnější stanice nebo uzly, nejpoužívanější protokoly, služby apod. Stručný obsah: V druhé kapitole jsou probrány současné technologie analýzy rozsáhlých sítí a dostupné programy pro analýzu dat, směrovací techniky založené na technologii přepínání a popis NetFlow Exportu. Ve třetí kapitole je probrána velmi zkráceně bezpečnost počítačových sítí, možné typy útoků apod. Čtvrtá kapitola popisuje použité programové vybavení a vlastní návrh analyzátoru. Pátá kapitola se obsahuje vlastní programovou realizací zadání. Předposlední, sedmá, kapitola popisuje instalaci, použití a optimalizaci celého systému. V poslední kapitole je rozbor a vyhodnocení dosažených výsledků. 3

2 Současné technologie analýzy rozsáhlých sítí 2.1 Analýza a monitorování sítě Účelem oprávněného monitorování sítě je buď odhalení provozních problémů, nebo zajištění bezpečnosti sítě (detekce napadení či snaha o odhalení útočníků). Služba sledování síťového provozu umožňuje správcům sítě sledovat vytíženost daného systému. Cílem této služby je zajistit, aby vlastnosti daného informačního systému splňovaly požadavky kvalitního systému, tj. aby systém byl funkční, výkonný, spolehlivý, ekonomický a stabilní. Vytvořený monitorovací systém ukáže, zda je nedostačující nebo zda se jedná o nesprávné, případně neefektivní využívání (například problém pomalého přístupu, zablokování přístupu k Internetu, výpadky lokální počítačové sítě). Na základě zavedení systému sledování provozu je možné vydávat operativní, taktická i strategická rozhodnuti o informačním systému a způsobu jeho užívání tak, aby informační systém vykazoval všechny vlastnosti dobrého systému. 2.2 Současné produkty pro monitorování sítě V dnešní době existuje mnoho komerčních i volně dostupných produktů, které se zabývají monitorováním a analýzou počítačové sítě. Z nich heslovitě popíšeme nejdůležitější nebo nejzajímavější z nich. Statistické zpracování NetFlow Exportů Velmi obsáhlý účtovací systém s příjemným webovským rozhraním. Systém vznikl pod záštitou sdružení CESNET. Systém zpracovává NetFlow exporty z přepínačů Cisco plus integruje data obdržená i z jiných zdrojů, jako jsou například SNMP statistiky, ap. Systém je vytvořen nad databázi MySQL s využitím interpretovaného jazyka Perl. Hlavním řešitelem tohoto systému je Tomáš Košňar. Fluxoscope Systém napsaný v Lispu, který implementuje různé přístupy k agregaci NetFlow dat. Je používán sdružením SWITCH (Swiss Academic and Research Network) k prověřování, monitorování zaoceánských linek (JANET) a slouží k zpracování ohromného množství dat. Transatlantic Itemisation Service Statistické vyhodnocení síťového provozu do Ameriky, které používá sdružení JANET jako svůj vlastní systém. Umožňuje organizacím přijímat detailní účtovací data jejich sítí či podsítí. Každá organizace zaregistrovaná u JANET může odeslat seznam síťových prefixů, pro které chce monitorovat a vyhodnocovat síťový provoz, který prochází přes Atlantik. 4

Purgatorio NetFlow statistika pro páteřní linky sítí připojených do TEN-155 pro evropské výzkumné sítě. Tento systém používá sdružení DANTE. Dalším jejich systémem je FloodLog, který byl navržen pro detekci útoků typu odepření služby (Denial-of-Service attacks). Pokud by se systém měl porovnat s ostatními detektory DoS útoků, tak FloodLog obsahuje další vylepšení, které navíc musí pracovat v místech s velmi vysokou agregací dat (enormní množství datových toků). MRTG - The Multi Router Traffic Grapher Velice rozšířený a populární nástroj pro monitorování síťového provozu. MRTG generuje HTML stránky s obrázky ve formátu PNG, které zobrazují dané vytíženosti linek. Obrázek 2.1: MRTG statistika. MRTG se skládá ze skriptu napsaného v jazyce Perl, který používá SNMP knihovnu, a z programu napsaného v jazyce C, který zaznamenává provoz a vytváří uvedené grafické reprezentace. Tyto grafy jsou pak vkládány do www stránek, které už mohou být zobrazovány odkudkoliv. Dá se zobrazit detailní denní, týdenní, 14 denní a roční provoz. S využitím nástroje MRTG se dá také monitorovat jakákoliv SNMP proměnná, která se navolí v konfiguračních souborech. Často je kromě síťového provozu ještě monitorováno vytížení jednotlivých procesorů, počet přihlášených lidi k systémům, dostupnosti modemů, atd. MRTG umí agregovat více zobrazovaných zdrojů do jediného obrázku, což je velice výhodné pro vytváření celkového přehledu o měřeném systému. Autorem systému je v prvé řadě Tobias Oetiker. GRNET Accounting Graphs Je používán pro generování grafů vytíženosti linek mezi GRNET a Evropou či Amerikou. Grafy jsou podobné jako MRTG grafy. O tento systém se stará Dimitrios Kalogeras. CoralReef CoralReef je komplexní software navržený organizací CAIDA pro sběr a analýzu dat z pasivních monitorů síťového provozu. Může zpracovávat data buď v reálném čase nebo analyzovat již uložené vzorky. Při zpracování 5

v reálném čase monitoruje systém síťové rozhraní s využítím knihovny libpcap. Distribuce v sobě obsahuje FreeBSD ovladače pro Apptel POINT (OC12 a OC3 ATM) a FORE ATM (OC3 ATM) karty, a podporu linuxových ovladačů pro WAND DAG (OC3 a OC12, POS a ATM) karty. Kromě toho balík obsahuje i vlastní programové API pro jazyk C a v neposlední řadě i aplikace pro odchytávání, analýzu a generování webovských hlášení. Tento balík vyvíjí organizace CAIDA ve spolupráci s internetovou komunitou. CoralReef je následník staršího softwaru Coral. Mantra (Monitor and Analysis of Traffic in Multicast Routers) Mantra je nástroj pro monitorování multicastových datových přenosů, které prochází směrovačem. Výsledkem systému je grafický výstup multicastové infrastruktury. Výsledky jsou zpracovány v pravidelných intervalech, každých 15-30 minut. Jednotlivé snímky mohou být zobrazovány v několika různých módech. Matra je ve stále ve vývoji a je vytvářena ve spolupráci organizací CAIDA a Network and Multimedia Systems Lab pod záštitou Kalifornské Univerzity v Santa Barbaře. CFLOWD Cflowd je analyzátor datových toků používaný pro analýzu Cisco NetFlow exportů. Nejnovější verze obsahuje prostředky pro sběr, ukládání a základní analýzu dat. Možností, kde se dá tento analyzátor použít je mnoho, od účtování, síťového plánování a monitorování, analýzy trendů, vytváření uživatelských profilů, až po různé bezpečnostní výzkumy. Celá distribuce se skládá z několika modulů: 1. cflowdmux - Tato část se stará o příjem NetFlow exportů z jednoho či více směrovačů. Obdržená data zapisuje do sdílené paměti, kde si je mohou odebírat jednotliví klienti, kteří chtějí mít přístup k nezpracovaným datům. 2. cflowd - Čte nezpracovaná data (nasbíraná cflowdmux) a vytváří tabulky se souhrnem síťového provozu (matice sítí, portů, rozhraní, protokolů a další). 3. cfdcollect - Tento blok se stará o centrální zpracování tabulek od různých instancí cflowd. Tato data jsou pak v pravidelných intervalech archivována. Jednotlivé archivy, pak mohou být přístupny i jiným aplikacím, které obsahují podporu funkcí arts++ knihovny. NeTraMet NeTraMet je volně dostupná implementace RTFM architektury pro Network Traffic Flow Measurement, kterou vytváří a podporuje Nevil Brownlee na Univerzitě v Aucklandu. Nevil Browlee také navrhl verzi NeTraMetu, která používá knihovnu CoralReef pro čtení hlaviček paketů. Tento software pak může pracovat s jakýmikoliv daty, které používá CoralReef. Program je funkční, stabilní a hojně využíván po celém světě, což dokazuje živá emailová konference NeTraMetu. NeTraMet je založen na RTFM architektuře. 6

Realtime Traffic Flow Measurement (RTFM) Architektura Zobecněná pravidla pro měření datových toků, která byla vytvořena v Internet Engineering Task Force (IETF) okolo roku 1991. Tato architektura je popsaná v kolekci několika RFC 2721, 2722, 2723, 2724 a popisuje distribuované rozložení síťových měřících jednotek, které zkoumají jednotlivé datové toky a vytváří své vlastní tabulky těchto naměřených dat. NetTraMet je SNMP agent, který implementuje tyto vlastnosti. Kdokoliv pak (kdo má na to právo samozřejmě), může interaktivně komunikovat s měřící sondou. RTFM definuje sadu asi 40 vlastností, které mohou být použity k popsání paketu. Nejdůležitějšími jsou vlastnosti adresy, které specifikují adresu na síťové úrovni. Například pro IP pakety je to zdrojová a cílová adresa. RTFM sonda se konfiguruje pravidly, která jsou zadána ve speciálním jazyku. Skitter Skitter je nástroj pro aktivní testování sítě, který analyzuje topologii a výkonnost jednotlivých částí i rozsáhlé počítačové sítě. Mezi jinými měří cestu IP paketů, průměrné doby přenosu dat, změny ve směrovacích tabulkách, zobrazení stavu síťových linek. Skitter tyto hodnoty získává pouze pravidelným odesíláním hromadných ICMP zpráv, na které měřené stanice odpovídají. Pokud některá organizace nechce, aby se dostávaly do její sítě ICMP pakety ze Skitteru, mohou na emailu skitter-configs@caida.org požádat o vyřazení svých podsítí z monitorování. Perf Perf je balík nástrojů pro monitorování výkonnosti sítě. Využívá ICMP zprávy, které zasílá v náhodných intervalech na stanice, které jsou uvedeny v konfiguraci jako monitorované. Výstup je opět přes CGI rozhraní zobrazován na www stránkách. Distribuce je určena jen pro architektury Sparc, Solaris a Digital Unix. Autorem balíku je Bruce Morgan. NFA NFA je vývojové programovací prostředí organizace PARNet. Jejich systém pracuje s NetFlow exporty verze jedna a pět. Tento nástroj v pravidelných intervalech analyzuje informace, které zpracoval blok NNstat nebo jiný NetFlow software. Každých 5 minut jsou zobrazovány statistické výstupy o propustnosti sítí, počtu přerušených spojení, zdrojových podsítí a používaných portů. Pro zobrazování statistických dat jsou v balíku dva CGI programy, které vytváří přehledné tabulky, zobrazitelné z webovského prohlížeče. Distribuce je určena pro architektury Intel 386, Sparc, Solaris nebo pro Digital Unix. 7

NetFlow Accounting Project NetFlow systém, který používá také organizace PARNet. Skládá se ze čtyř komponent. 1. Cisco NetFlow software, který je nainstalován na centrálním směrovači. 2. NFD (NetFlow Daemon), je to tzv. collector, čte NetFlow exporty a zapisuje je jako nezpracovaná data přímo na disk. 3. NFAD (NetFlow Accountancy Daemon). Tento blok analyzuje uložená data na disku a vytváří jednotlivá hlášení a statistiky. Celkové výsledky jsou uchovány po dobu několika měsíců. Nezpracovaná data zabírají okolo 2100 MB, zpracovaná pak 1050 MB, celkové výsledky méně jak 1 MB a statistická data okolo 4 MB. Z toho vyplývá, že pro měření je nutnost mít disk o přibližné kapacitě 4 GB. 4. Sada programů, které zobrazují výsledky NFAD na www stránky. Tyto programy musí běžet na serveru, kde je spuštěn i NFAD. 2.3 Směrovací techniky založené na technologii přepínání Přepínání se skládá z bloku načtení paketu na vstupním rozhraní, zjištění, jak dále poslat paket 1, a z bloku odeslání paketu na výstupní rozhraní. Rychlost s jakou směrovač provádí tyto úkoly je nejdůležitější složkou pro měření výkonnosti celé sítě. Zvláště na rychlých páteřních linkách je důležitá rychlost přepínání paketů. Pro přepínání paketů na 3. vrstvě ISO modelu existuje mnoho metod. Kromě klasické metody přepínání se často v zařízeních Cisco používají i další nové technologie NetFlow přepínání, Cisco Express Forwarding (CEF) a přepínání na základě značek (tagů). 2.3.1 Klasické metody pro přepínání paketů na třetí vrstvě Proces vlastního přepínání je nejpomalejší metoda v celé řadě operací, které směrovač zajišťuje. Když je paket přijat na vstupním rozhraní, systémový procesor je na čas pozastaven (je vyvoláno přerušení). Tento čas je potřebný pro okopírování paketu z vyrovnávací paměti rozhraní do systémové paměti. Procesor pak vyhledá cílovou cestu ve směrovací tabulce a na jejím základě zjistí výstupní rozhraní, do něhož má paket odeslat. Paket je přepsán správnou hlavičkou pro korektní výstupní zařízení a je vyslán na rozhraní. Záznam o hlavičce pro cílovou síť je uložen ve vyrovnávací paměti pro urychlení přepínání, takže pro další příchozí pakety se stejnou cílovou adresou se již 1 záleží na směrovací technologii, QoS a bezpečnostních hlediscích 8

nemusí zjišťovat nová hlavička. Rychlé přepínání je standardně povoleno pro většinu protokolů, ale v některých případech by mělo být zakázané, například pokud je připojen k síti server paralelní linkou. Směrovač totiž zjišťuje cestu jen při příchodu prvého paketu, pokud existuje paralelní cesta, tak se o ní nikdy nedoví. Autonomní přepínání využívá samostatné vyrovnávací paměti, které jsou umístěny přímo na vstupních rozhraních. Přepínání pak probíhá zcela nezávisle, bez nutnosti přerušovat běh systémového procesoru. Optimum switching je podobné jako rychlé přepínání, ale je rychlejší, protože využívá rozšířený algoritmus ukládání a vyhledávání ve vyrovnávací paměti. Optimum switching je možné použít na směrovačích vybavených Route/Switch procesorem (RSP). 2.3.2 Cisco Express Forwarding CEF je patentovaná technologie společnosti Cisco pro velmi rychlé přepínání paketů mezi velkými páteřními sítěmi a Internetem. Algoritmus CEF využívá tzv. Forwarding Information Base (FIB). Používání FIB je mnohem méně náročné na procesor než jiné metody pracující na přepínání paketů na třetí vrstvě. FIB tabulky obsahují směrovací informace pro všechny směry. CEF je vyvinut pro Web aplikace a jiné interaktivní aplikace, které jsou charakteristické krátkým trváním relace na více cílových adres. Využití algoritmu CEF je zvlášť důležité pro sítě, kde nejsou instalovány vyrovnávací (cache) servery ve vnitřní síti. Bližší informace lze nalézt na www stránkách společnosti Cisco. 2.3.3 Tag Switching Tag switching mělo mírně odlišné cíle než jiné přepínací metody. Přepínání na základě značek (tagů) je optimální v sítích, které jsou tvořeny několika směrovači a které podporují tuto metodu. Tag switching je firemní Cisco implementací IETF standardu pro multiprotocol label switching (MPLS). Hlavní myšlenkou tohoto algoritmu je označení prvního paketu. Další pakety pak mohou být (na základě značky) urychleně odeslány na cílovou stanici. Značení paketů minimalizuje zátěž procesoru a značně zmenšuje zpoždění dat. S využitím značek se dá velmi dobře implementovat rozložení zátěže na paralelní cesty, QoS a další. Informace o značce je vložena mezi hlavičky druhé a třetí vrstvy, nebo jako část hlavičky třetí vrstvy (pokud to protokol třetí vrstvy dovoluje). V některých realizacích druhé vrstvy (jako ATM) se může značka uložit přímo v hlavičce druhé vrstvy. Síť, která používá směrování na základě značkování, se skládá ze tří hlavních součástí: 9

1. Hraniční Tag směrovače (Tag edge routers): jsou umístěny na hranicích této přepínané sítě a jejich úlohou je označkovat příchozí pakety. 2. Tag Přepínače (Tag switches): směrovače, které podporují algoritmus přepínání podle značek. Mohou podporovat i klasické metody přepínání na základě druhé či třetí vrstvy. 3. Protokol distribuce značek (Tag Distribution Protocol - TDB): distribuuje informace o značkách mezi zařízeními, které jsou v této síti. Hraniční směrovače používají směrovací tabulky vygenerované standardním směrovacím protokolem k přiřazení a k distribuci informací o značkách. 2.3.4 NetFlow Switching NetFlow switching je relativně nová technologie, která je navržená pro prostředí, kde je požadováno, aby na pakety byla aplikována bezpečnostní pravidla, aby byla zaručená určitá kvalita služeb (QoS) a účtování (traffic accounting). Příkladem může být hraniční směrovač mezi vnitřní sítí a Internetem. NetFlow přepínání identifikuje síťový provoz mezi jednotlivými uzly a pak rychle přepíná pakety jednotlivých datových toků. To dovoluje správcům sítě získávat informace o datovém toku a využití sítě, čehož bývá využíváno pro platby za služby a plánování správného rozložení zátěže sítě. Data se mohou analyzovat bez zpomalování procesu přepínání paketů. Routovací tabulka Přístupový seznam Priorita front Účtovací data První paket Přepínání Kontrolní blok Fronta Účtování NetFlow cache Další pakety NetFlow přepínání NetFlow statistika NetFlow Exporty UDP pakety Obrázek 2.2: Princip NetFlow přepínání. 10

Popis funkce NetFlow přepínání je zřejmý z obrázku 2.2. První paket datového spojení projde celou řadou bloků. Tyto bloky jsou náročné na procesorový čas i na velikost paměti. Po průchodu paketu těmito bloky přepínač vygeneruje jednoznačný identifikační popis datového toku. Tato značka se poté uloží do tzv. NetFlow Cache. Specifikaci toku tvoří jen páry zdrojová/cílová IP adresa a zdrojový/cílový port. Další příchozí paket výše popsaného datového toku již neprochází uvedenými bloky, protože existuje jeho popis uložený v cache paměti. Přepínač ho na základě tohoto popisu rovnou odešle na příslušné rozhraní (případně zahodí). Tedy rozhodnutí, co se má s paketem stát, se děje už jen na základě popisu uloženého v bloku NetFlow Cache. Pojem NetFlow Switching se používá při jakémkoliv přepínání, které obsahuje účtovací mechanizmy, které umožňují správcům sítě testovat síťový provoz. 2.4 NetFlow Export V závislosti na tomto přepínání (založeném na technologii NetFlow a na požadavcích správců sítě) byla ve směrovačích implementována funkce pro export informací o jednotlivých datových tocích. Tyto exporty dat jsou nazývány NetFlow Data Export (dále budeme používat pojem NetFlow). NetFlow Data Export používá stejnou tabulku jako přepínač, kterou v pravidelných intervalech 2 posílá bezestavovým UDP protokolem na správcovské PC nebo na monitorovací stanici. Tyto exporty tvoří ohromné množství dat, zvláště na rychlých ATM sítích 3. To samozřejmě s sebou přináší mnoho problémů, mezi nimiž často bývá i to, že monitorovací stanice je připojena standardní 10Mbit/s linkou. Řešením je předzpracování dat na jiném počítači, který je připojen na rychlé lince, pokud možno na stejném segmentu, jako je přepínač (směrovač). 2.4.1 Použití NetFlow Exportu 1. Monitorování sítě (Network Monitoring) - umožňuje monitorování sítě téměř v reálném čase. Techniky založené na analýze NetFlow Exportů se používají k přehlednému zobrazování datových toků procházejících jednotlivými směrovači. Poskytují aktivní detekci problémů na síti a jejich odstraňování. 2. Monitorování a analýza aplikací (Application Monitoring and Profiling) - Detailní statistika používání aplikací v časových úsecích. Toho se dá využít k plánování a navržení správné topologie sítě. Například umístění a nastavení Web serveru. 2 po zaplnění cache ihned 3 nemluvě o gigabitovém Ethernetu 11

3. Monitorováni a analýza uživatelů (User Monitoring and Profiling) - Detailní statistika aktivit jednotlivých uživatelů na síti. Statistika je výhodná pro efektivní plánování rozložení zatížení, umístění cache serverů apod. Také je užitečná pro detekci a řešení potenciálních bezpečnostních problémů. 4. Účtování/Platby (Accounting/Billing) - Informace o datovém toku v sobě zahrnuje informaci o zdrojovém a cílovém bodě spojení (IP adresy), počtu přenesených paketů a bytů, čase, použitých portech, typu služby. To je vhodné pro podrobné účtování mezi jednotlivými poskytovateli připojení. Poskytovatelé tyto statistiky používají k proplacení svých služeb, a to ve většině případů na základě přeneseného objemu dat. 5. Plánování a analýza sítě (Network Planning and Analysis) - NetFlow Exporty se dají použít pro optimalizaci strategického plánování sítě (například kdo s kým komunikuje, plánování rozšiřování páteřních linek a bezpečnostních pravidel). Hlavním cílem je minimalizace celkové ceny síťových operací při maximalizaci výkonu sítě, kapacity a dostupnosti. Příkladem utility pro plánovaní může být program NetSys. 6. Ukládání dat (NetFlow Data Warehousing) - NetFlow datové exporty mohou být uloženy k pozdější analýze, v níž se dá rekonstruovat veškerý síťový provoz. Tyto služby jsou často využívány pro generovaní statistik a grafů vytíženosti jednotlivých linek. Zjišťují, které služby používají uživatelé vnitřních sítí a které uživatelé z vnějšího světa. Zvláště jsou tyto informace cenné pro poskytovatele připojení (ISP). Analýza NetFlow exportů v neposlední řadě přináší informace typu kdo, co, kde, jak dlouho a s kým komunikoval. 2.4.2 Verze a formát NetFlow Exportu V současné době existují čtyři verze NetFlow Exportů. První verze se nyní téměř nepoužívá, taktéž i verze 7. Nejpoužívanějšími NetFlow verzemi jsou verze 5 a 8, přičemž verze 8 už obsahuje agregované informace. Agregaci provádí směrovač a monitorovací stanice pak už přijímá data jen ve formě matic, například matice používaných portů apod. Tedy agregace na straně směrovače v sobě nese určitou ztrátu informace, ale je méně náročná na přenosové linky co do objemu přenášených dat (může spolehlivě fungovat i na gigabitových přenosových linkách). U NetFlow verze 5 tomu tak není, informace jsou minimálně agregovány, tedy zatěžují linky a pro velmi rychlé páteřní linky nejsou příliš vhodné. V navrženém programu je podpora NetFlow verzí 1,5 a 7. Z použitých verzí pak plyne nasazení programu pro středně velké sítě s maximálním tokem dat do 1 Gb/sec z jednoho směrovače. Detailní popis formátu NetFlow exportů je uveden v příloze. 12

3 Bezpečnost počítačové sítě Každý den přibývá mnoho nových a nových hackerů, kteří používají nové důmyslné nástroje. Z tohoto důvodu je nutné chránit vnitřní sítě proti napadení, jak zvenčí, tak i ze strany vnitřní. V dnešní době existuje mnoho typů útoků. Proti některým se lze úspěšně bránit, proti některým však neexistují spolehlivé nástroje, pro zabránění útoku. Protože kapitola o bezpečnosti sítě by mohla být rozsahem náplní samostatné diplomové práce, zaměříme se v popisu bezpečnostních rizik jen na vybrané okruhy. V následujících odstavcích heslovitě popíšeme některé typy možných útoků na síť. Pro detailní informace o možných incidentech odkazuji na literaturu. V praxi se dá setkat s těmito typy útoků: Sniffers - odposlech síťového provozu, aktivní útoky, IP Spoofing - obtížně zjistitelné, Hijacking ukradení již navázaného spojení mezi dvěma stanicemi, Routing Attacks - podvržené pakety provádí změny ve směrovacích tabulkách, DoS Attacks - útoky typu odepření služby, chyby typu přetečení vyrovnávací paměti buffer overflow, ostatní. 3.1 Útoky typu odepření služby (Denial Of Service Attacks) Útočník se nedostane přímo do systému, ale odepře přístup ostatním k cílové stanici. Obrana proti takovým to útokům je velmi obtížná. Pokud cílové stanici trvá déle zpracování přijatých dat, než doba po jakou se šíří v síti, tak pro ni existuje i možnost, že podlehne případnému útoku typu odepření služby. Některé útoky typu odepření služby: záplava SYN paketů Cílová stanice je bombardována požadavky na otevření TCP spojení, které mají jako zdrojovou adresu uvedenou nějakou neexistující adresu. Spojení se samozřejmě nemůže navázat a po krátké době dojde k zaplnění fronty spojení čekajících na navázání komunikace. Oprávnění uživatelé, pak nemohou navázat spojení s cílovou stanicí, protože ta má již plnou frontu požadavků na spojení. Pro většinu systémů existuje řešení tohoto problému, a to buď náhodné rušení některých spojení, nebo snížení času, po kterém se neuzavřené spojení samo zruší. V praxi se ovšem používá spíše první varianta. 13

Smurf útoky Tento typ útoku se dost rozšířil po celém světě. Existuje ve dvou variantách. 1. Pracuje na principu odeslání podvržené ICMP zprávy echo request na stanici, kterou útočník chce napadnout. V této podvržené zprávě je však místo zdrojové IP adresy útočníka, uvedena broadcastová adresa sítě třídy B nebo C. Po přijmutí této zprávy, napadená stanice odpoví na tuto broadcastovou adresu a odešle ji do domény určené útočníkem. Doména (nebo síť) je označována jako zesilovač. V této doméně na příchozí ICMP zprávu odpoví všechny stanice a každá odešle svoji odpověď napadené stanici. Ta je zavalena množstvím těchto zpráv (mohou jich být i stovky) přicházejících od každé stanice v síti zesilovačů. V této době již útočník posílá další smrtící pakety. Po určité době již stanice neunese nápor a nemůže již s nikým komunikovat, protože celá linka je nasycena ICMP pakety. Obrázek 3.1: Princip útoku typu Smurf. 2. Pracuje na podobném principu jako varianta prvá s tím rozdílem, že útočník v odesílané ICMP zprávě změní zdrojovou IP adresu, kterou nastaví na adresu napadené stanice a cílovou adresu nastaví na broadcastovou adresu nějaké středně velké sítě. Dále je princip podobný jako v prvé variantě. Firewally jen těžko mohou pomoci cílové stanici, protože linka může být nasycená již před firewallem. 14

Teardrop útoky Útočník odesílá fragmentované pakety, které se překrývají svými délkami, na cílovou stanici. Cílová stanice nedokáže spravovat překrývající se kusy dat a přestane reagovat na vnější podněty. Ping Of Death Útočník odešle velmi dlouhý paket, který je rozdělen na velmi malé fragmenty. Cílová stanice pak opět přestane reagovat na jakékoliv požadavky. Land útoky Útočník odešle paket, kde zdrojová a cílová adresa je adresa cílové stanice a zdrojový a cílový port je nastaven na stejné číslo. Cílová stanice si myslí, že jde o vytvoření socketu, a při pokusu o jeho vytvoření dojde ke kolapsu celého systému. Proto tomuto útoku se dá bránit anti-spoofovacím filtrem. V posledních dvou letech se rozšířily hromadné DoS útoky. Těmto hromadným napadením sítě se říká distribuované útoky typu odepření služby (DDoS - Distributed Denial of Service). Tyto útoky využívají již výše uvedených metod, ale provozují je z více stanic najednou. Jde o velmi nebezpečné útoky, kterým v minulosti podlehlo mnoho známých serverů. Uvedený obrázek 3-2 ilustruje použití distribuovaného útoku. Obrázek 3.2: Princip DDoS útoku. 15

3.2 Používané DDoS nástroje Trin00 přenositelný na systémy Solaris, Linux a Windows, používané porty TCP 27665; UDP 27444 a 31335, metody napadení UDP a SYN flood. Tribe Flood Network (TFN) - dnes se používá spíše nová verze TFN2K. Stacheldraht přenositelný na systémy Solaris a Linux, používané porty TCP 16660, 65000 ICMP echo reply, metody napadení smurf, ICMP, SYN a UDP flood. Shaft přenositelný na systém Solaris a Linux, používané porty TCP 20432; UDP 18753 a 20433, metody napadení ICMP, SYN a UDP flood. TFN2K přenositelný na systémy Solaris, Linux a Windows, používané porty kombinace TCP, UDP, ICMP echo reply, šifrovaná komunikace CAST-256, metody napadení smurf, ICMP, SYN, UDP a TARGA. MStream používané porty TCP 6723, 15104 a 12754; UDP 7983, 10498, 9325 a 6838, metody napadení ACK, SYN+ACK flood, zatím obsahuje mnoho chyb. 16

4 Popis programových prostředků 4.1 Perl Perl je interpretovaný programovací jazyk, který se v současné době těší značné oblibě. Přestože vůči němu lze mít z teoretického hlediska vážné námitky, je to jazyk zajímavý a mimořádně praktický. Dokáže totiž snadno a rychle vyřešit leckteré i dost složité problémy. Autorem jazyka je Larry Wall. Vytvořil jej původně pro svou vlastní potřebu, když jej neuspokojovaly dostupné nástroje pro práci s texty. Pak se rozhodl dát jej k dispozici veřejnosti a nestačil se divit, jaký zájem vyvolal. Kladná odezva okolí vedla k dalšímu vývoji jazyka a jeho postupnému obohacování. Jednou z nejužitečnějších věcí v Perlu jsou regulární výrazy. Regulární výrazy jsou silným nástrojem pro práci s textovými informacemi a jsou velmi využívány v operačních systémech typu Unix. Zatím se však používaly jen ve speciálních jednoúčelových nástrojích, jako jsou awk, sed, grep a další. Perl je spojuje s běžnými konstrukcemi programovacích jazyků a dává vám do rukou velice pružný a výkonný nástroj. Dalším silným nástrojem Perlu jsou asociativní pole (hash), která řeší problém vyhledávání. Ta velmi snadno nahradí stromy, spojové seznamy a jiné datové struktury. Další výhodou je velká podobnost s jazykem C. Z pohledu teorie programovacích jazyků je Perl naprosto nepřijatelný. Proměnné se nemusí deklarovat, není možnost si definovat vlastní datové typy. Syntaxe je velmi proměnlivá a celou řadu konstrukcí lze zapisovat několika různými způsoby. Chování většiny prvků závisí na kontextu, ve kterém se použije. Na druhou stranu je však mimořádně praktický a efektivní. Perl je interpretovaný jazyk, to znamená, že program se nijak nepřekládá a vykonává se přímo ze zdrojového kódu. Takový přístup má výhodu ve své jednoduchosti a snadné modifikovatelnosti programů. Možnou nevýhodou však je, že programy nejsou soběstačné. Aby je bylo možno spustit, je nutno mít nainstalován interpret Perlu. Interpret Perlu je distribuován k volnému použití. Díky rostoucí popularitě Perlu obsahuje stále více a více operačních systémů tento interpret v základní instalaci. Obecně se traduje, že interpretované jazyky jsou pomalé. Perl má (jako většina moderních interpretovaných jazyků) fázi předkompilace, kdy se vstupní textový tvar programu převede do binárního mezikódu, který se pak provádí. Tento přístup má dvě výhody. V úvodu se zpracuje celý program a budou tudíž odhaleny syntaktické chyby i v těch částech, k jejichž vykonání vůbec nedojde. Druhou předností je, že program pak běží mnohem rychleji (například v regulárních výrazech je Perl rychlejší než grep, nebo awk). Jediné, kde je tedy pomalejší, je úvodní předkompilace a v běhu nejsou zásadní rozdíly mezi interpretovanými a kompilovanými jazyky. Současná standardní distribuce Perlu již obsahuje i překladač pro 17

kompilaci perlovských programů do binární podoby. Perl pak vygeneruje program v obvyklé binární formě, která je soběstačná a ke svému spuštění již nevyžaduje interpret. Funguje tak, že převede program do výše zmiňovaného binárního mezikódu a přibalí k němu vše, co je potřeba k jeho provedení. Tyto prováděcí knihovny jsou dosti objemné (řádově 0.5 MB), což se projeví zejména u jednoduchých programů. 4.2 PHP V poslední době můžeme na Internetu sledovat obrovskou změnu v druhu poskytovaných informací. Ještě nedávno byla většina informací na Webu statických, byly zde dostupné pouze obyčejné dokumenty provázané hypertextovými odkazy. Tento přístup je však v dnešní dynamické době zastaralý. Uživatelé Webu vyžadují stránky, které jim poskytují interaktivní přístup k informacím všeho druhu. Pro tvorbu takovýchto stránek je přímo optimální prostředí skriptovacího jazyka PHP. PHP umožňuje vývoj různorodého druhu aplikací, počínaje jednoduchým počítadlem přístupů a konče tvorbou podnikového informačního systému v prostředí Intranetu či Extranetu. Možnosti PHP ještě umocňuje důsledná integrace s mnoha databázovými systémy. Bez systému jako PHP by dnes nemohly pracovat virtuální obchodní domy, obchodní rejstřík na Internetu, rezervační systémy nebo třeba prohledávání katalogu počítačových komponent či hudebních nahrávek. Velká výhoda PHP spočívá v jeho nezávislosti na používaných platformách. Výsledkem běhu PHP skriptu je obyčejný HTML dokument, který umí zobrazit každý prohlížeč. Odpadají tedy problémy s kompatibilitou, které přináší Java a JavaScript. PHP je nezávislé i na platformě serveru, může běžet pod libovolným webovským serverem pracujícím v operačním systému Windows nebo Unix. Jedním z důvodu úspěchů PHP je jeho velice rychlý vývoj a přidávání dalších knihoven s užitečnými funkcemi. To je možné jen díky tomu, že je PHP vyvíjeno na bázi Open Source Software, kdy jsou zdrojové texty celého systému k dispozici všem vývojářům. Mezi poslední novinky patří zejména podpora generování PDF a práce s XML dokumenty. Práci s XML zajišťuje parser Expat, který je například i součástí nové verze Netscape Navigatoru. Největší novinkou ve světě PHP je nové jádro Zend, které pochází z dílny dvou vývojářů PHP. Testy ukazují, že Zend provádí skripty několikanásobnou rychlostí oproti starší verzi PHP. Díky novému a lepšímu správci paměti klesly i paměťové nároky. Zend přináší i mnoho dalších užitečných novinek, mezi něž patří i to, že je možno skripty kompilovat do binární podoby, která je však nezávislá na platformě. Zkompilované skripty jsou rychlejší a zamezí se 18

zkoumání zdrojových textů skriptů. Tuto vlastnost uvítají především firmy, které se zabývají vývojem a prodejem komerčních webovských aplikací. Nová modulární struktura Zendu umožňuje snadné vytvoření dalších důležitých nástrojů, jakými jsou debugger a profiler. Zend je stejně jako celé PHP šířen zcela zdarma. Některé jeho části jsou však šířeny pouze komerčně. Zend je nyní součástí nejnovější verze PHP 4.0. Součástí PHP 4.0 je i ISAPI modul, který umožní rychlý běh skriptů na Windows NT. O tom, že PHP je velice kvalitní nástroj pro tvorbu dynamicky generovaných stránek snad všechny přesvědčí více jak 200 000 serverů pracujících v kooperaci s PHP 4.3 MySQL databáze Databáze je ve své podstatě uspořádaná struktura dat. To může být cokoliv, od jednoduchého nákupního lístku, obrazové galerie, až po nepřeberné množství informací v podnikové síti. Databáze by kromě standardního čtení a zapisování dat měla obsahovat kvalitní správu dat. Počítače jsou velmi dobré pro zpracování množství dat, kde hlavní úlohu hraje správa databáze. Dříve se data ukládala do jednoho velkého bloku, což sebou přinášelo mnoho problémů. Proto vznikly relační SQL databáze, které ukládají data v samostatných tabulkách. Databáze pak poskytují klientům větší rychlost a pružnost údržby. Zkratka SQL pochází z anglického Structured Query Language (strukturovaný dotazovací jazyk). V dnešní době existuje spousta SQL databází. Mým cílem je, aby NetFlow Monitor kromě své výkonnosti byl celý šířen jako volný software bez žádných poplatků za jeho používání. Proto musí být i všechny jeho části šířeny jako volný software. V tomto projektu bylo důležité rozhodnut mezi použitím vlastní databáze nebo použitím již funkčního a propracovaného databázového systému. Výsledkem bylo použití již hotové komponenty, která již obsahuje propracované algoritmy pro vyhledávání a třídění vybraných položek. Na výběr bylo několik volně dostupných systémů. Například InterBase, CQL++, PostgreSQL, MySQL, BeagleSQL, GNU SQL a GigaBASE. Pro implementaci NetFlow Monitoru bylo nejvýhodnější použití databáze MySQL. Databázový systém MySQL, vyniká jak svojí nedostižnou rychlostí, výkonností a množstvím podporovaných aplikačních rozhraní, tak i snadnou přenositelností na jiné typy operačních systémů. Nevýhodou MySQL je, že neobsahuje některé vlastnosti, které by měl dobrý databázový systém mít, například chybí podpora unionů, triggerů apod. Pro srovnání výkonnosti s jinými databázovými prostředky lze doporučit shlédnout tabulky, které jsou na webovských stránkách www.mysql.com 19

MySQL je vlastně aplikací typu klient/server, která se skládá z více komponent, které mohou být tvořeny různými klientskými programy, administrativními nástroji a různými programovacími rozhraními. MySQL databáze je, jak bylo výše uvedeno, volně dostupný software, který je distribuován pod licencí GPL (GNU General Public License). 4.4 Knihovna GD GD je grafická knihovna, která je určená pro rychlou tvorbu obrázků. Pro vytvoření obrázků jsou v knihovně vestavěné základní funkce, které umožňují kreslit linky, kružnice, obdélníky, vkládat text a jiné obrázky v plném barevném rozlišení (truecolor). V nejnovější verzi je podpora pro grafické formáty PNG a JPEG (formát GIF není z licenčních podmínek podporován). Oba formáty se používají pro zobrazování obrázků na Internetu a proto je knihovna často používána ve spolupráci s programy, které generují grafické výstupy na www stránky. Pro přístup k GD knihovně existuje mnoho programových rozhraní, jako je například Perl, TCL, Pascal, Haskell, REXX, PHP a mnoho dalších. GD knihovna je zcela zdarma i pro komerční použití. 20

5 Návrh architektury NetFlow analyzátoru Navržený distribuovaný systém pro sledování NetFlow exportů ze směrovačů Cisco se skládá z několika navzájem propojených bloků: NetFlow Redirector - přesměruje pakety s exportem na jiné cílové stanice (výhodné pro zálohování či paralelní zpracování dat). NetFlow Collector - zpracuje přijatý NetFlow export, rozšíří ho o další informace a odešle databázi. NetFlow Database - hlavním účelem je vyhodnocování toku dat v realném čase (detekce různých útoků, kontrola stavu tabulek,...). NetFlow Web - kolekce php scriptů pro vlastní přehledné zobrazování jednotlivých statistik, zobrazování událostí apod. Obrázek 5.1: Návrh systému pro analýzu NetFlow Exportů. 21

5.1 NetFlow Redirector NetFlow Redirector o malý program napsaný v jazyce C, který přijímá UDP pakety na zadaném portu a přeposílá je na několik různých cílů. Program má i mnoho dalších užitečných nastavení, jako je například ponechání zdrojové adresy, ze které byl paket odeslán, zpožďování paketů apod. Autory programu jsou David Harmelin a Simon Leinen. Tento program je šířen pod GNU/GPL licencí. Je tedy zdarma a může se jakýmkoliv způsobem kopírovat a distribuovat. Nové verze programu jsou na webovské adrese: http://www.switch.ch/tf-tant/floma/sw/samplicator/. 5.2 NetFlow Collector 5.2.1 Popis programu Hlavní náplní tohoto bloku (programu) je čtení NetFlow exportů, jejich zpracování a uložení do databáze. Blok je tvořen dvěma samostatnými procesy. První proces se stará o vlastní příjem UDP paketu, zjištění typu použité služby a jeho uložení do sdílené paměti. NetFlow exporty mohou být přijímány z více směrovačů nebo redirectorů. V aktuální verzi se dá zvolit, buď příjem dat od kohokoliv, nebo jen z jedné konkrétní adresy. Nelze tedy zatím definovat seznam několika adres, od kterých lze přijmout tyto exporty nebo seznam stanic od kterých je zakázán příjem exportů. Přijímaný UDP paket musí napřed projít procedurou, která zjistí, o jakou verzi NetFlow exportu se jedná (nyní jsou podporovány verze 1,5 a 7, kde standardní verzí je NetFlow verze 5). Celý systém je optimalizovaný spíše pro verzi 5, která je v dnešní době pravděpodobně nejrozšířenější. Často používaná je i verze 8, ale ta již obsahuje agregované informace o jednotlivých tocích, což však bohužel představuje určitou ztrátu informace. Formát dat verzí 1 a 5 je v příloze. Z příchozího paketu se přečte hlavička, ve které je uložena verze NetFlow Exportu a podle této verze jsou z paketu vybrány jednotlivé záznamy. Pro různé verze může být i odlišný maximální počet záznamů v paketu. Kromě toho různé verze obsahují i rozlišné informace o paketech procházejících směrovačem. Proto je v tomto projektu navržen jednotný formát, do kterého jsou ukládány všechny dostupné informace z té či oné použité verze a zbývající informace jsou doplněny prázdnými hodnotami. Záznamy jsou dále podstupovány některém testům, které je rozšiřují o další cenné údaje. Například je k záznamu přidána informace o adrese, ze které byl přijat (což v exportu přímo uloženo není /kromě exportu verze 7/) a o verzi NetFlow Exportu (ta je uložena jen v hlavičce a ne v každém záznamu). Následujícím krokem ve zpracování je detekce spojení pracující v pasivním módu přenosu 22

dat (například FTP spojení pracující v pasivním módu). Bližší informace viz dále. Po přidání rozšiřujících informací jsou jednotlivé záznamy uloženy do sdílené paměti. Sdílená paměť je realizována jako kruhový buffer. V případě zaplnění sdílené paměti proces čeká na její uvolnění. Samozřejmě, že v této době nemohou být přijímány žádné nové příchozí NetFlow exporty a proto je nutné nastavit parametry celého systému tak, aby k zaplnění sdílené paměti pokud možno nedocházelo. Druhý proces NetFlow Collectoru se stará o odesílání dat do databáze. Po spuštění naváže spojení z databází. V případě neúspěchu celý program končí s výpisem informace o této chybě. Pokud proběhlo správné prvotní navázání komunikace s databází, může program přejít k nekonečné smyčce přijímání dat ze sdílené paměti a jejich odeslání do databáze. Celý program je napsán v jazyce Perl s databázovým rozhraním pro přístup k databázi MySQL. 5.2.2 Detekce spojení v pasivním módu Některé aplikace mění během spojení komunikační porty, přes které přenáší data. Proto je vhodné také tuto informaci detekovat a zaznamenat. Příkladem takové aplikace může být datový FTP přenos v pasivním módu. Z tohoto důvodu je v prvém procesu použita fronta aktivních TCP spojení. Ve frontě jsou uloženy informace o zdrojové a cílové adrese, použitém zdrojovém a cílovém portu, odhadovaném čísle služby a době posledního přijatého paketu, náležející tomuto spojení. Nemá smysl ukládat informace o jiných protokolech než o spojově orientovaných, jako je TCP spojení. Každý přijatý záznam TCP spojení je podroben testu na použitou službu. Test se provádí tak, že jsou klíčové informace z přijatého paketu porovnány z údaji v tabulce, a pokud se shodují s některou položkou, je testovaný záznam doplněn informací o použité službě, která je uložena v tabulce. Jestliže se tato informace neshoduje s žádnou položkou v tabulce, je vytvořena nová položka, která popisuje tento záznam. Protože vyhledání položky v tabulce může být časově náročnější operace, zejména při větším počtu aktivních spojení, je informace o tomto spojení uložena jen na omezenou maximální dobu. Tato doba je standardně 5 minut. Pokud nepřijde do této doby žádný další paket daného spojení, musí se program postarat o odstranění této informace z tabulky. Fronta aktivních spojeni je také omezena maximálním počtem položek. V programu je primárně nastavená maximální délka fronty na 15.000 aktivních spojení. Tento postup je obdobný funkci v NetFlow směrovače, který provádí podobné úkony. 23

5.3 NetFlow Database 5.3.1 Popis programu Hlavní náplní tohoto bloku (programu) je kontrola datového toku v reálném čase s vyhodnocováním případných bezpečnostních incidentů a udržování celistvosti tabulek. Program je opět rozdělen na běh dvou nezávislých procesů. Prvý proces se stará o ukládání dat do hlavní tabulky a bezpečnostní testy, druhý pak o vlastní test počtu řádků v hlavní tabulce a rušení již starých řádků. Data odeslaná programem NetFlow Collector jsou ukládána do tabulky income. Jednou za časovou periodu program NetFlow Database uzamkne tabulku income pro zápis, a přemístí z ní veškerá data do pracovní tabulky wrk. Obě dvě tabulky income i wrk jsou takzvané heap tabulky, to znamená, že veškerý obsah tabulek je uložen jen v paměti a ne na disku. Při výpadku napájení ztratí programy informace o datech, které byly uloženy v těchto tabulkách. To však není zas až tak podstatné, protože jde o ztrátu informace o řádově několika tisících paketech ve srovnání s hlavní databází, ve které jsou uloženy až stovky milionů paketů. Po přemístění dat do pracovní tabulky je tabulka income opět přístupna pro zápis. Na tuto krátkou dobu přesunu dat nemůže program NetFlow Collector zapisovat do databáze. Nyní přichází fáze různých testů, které jsou blíže popsány v následujícím odstavci. Výsledky bezpečnostních testů jsou ukládány do tabulky event. Každý z testů obsahuje na konci svého zpracování volání speciální funkce pro agregaci již starších událostí stejného typu, tato agregace se nazývá korelace událostí. Příkladem může být ICMP útok, který trvá po dobu 20 minut. Kdyby v podprogramu pro detekci ICMP útoku nebyla tato korelace událostí, bylo by v tabulce událostí několik stovek řádků informujících o tomto incidentu. Proto agregujeme data stejného typu a výsledkem je, že v tabulce událostí je pak záznam typu útok, od kdy do kdy trval a další potřebná data popisující útok. Po kroku testu bezpečnostních incidentů se všechny řádky s informací o datovém toku přemístí do hlavní tabulky nf. Druhou částí programu NetFlow Database je proces kontroly tabulek, který periodicky testuje počet řádků v hlavní tabulce, a pokud překročí nastavený limit (implicitně 50 milionů řádků) zruší nejstarší řádky (implicitně 10 tisíc řádků). Dalším úkolem tohoto procesu je kontrolovat i ostatní tabulky, jako je například tabulka event, u které maže řádky, které mají nastaven příznak pro smazání. To však provádí za mnohem delší periodu, než je kontrola stavu hlavní tabulky, která má nejvyšší prioritu. 24

5.3.2 Implementace bezpečnostních modulů ICMP Count Flood Detekce přenesení velkého kvanta ICMP zpráv. Pokud překročí počet ICMP paketů určitou úroveň, například 2000 paketů za minutu, je vytvořena v tabulce událostí nová řádka nebo pokud informace o tomto útoku již existuje je aktualizován záznam o délce trvání útoku. ICMP Size Flood Detekce přenesení velkého kvanta ICMP zpráv. Tím je myšleno, co do celkového součtu délek všech paketů. Pokud opět překročí určitou úroveň, například 200.000 bytů za minutu, je tato informace zaznamenána. ICMP Size Flood není tak častý jako je ICMP Count Flood. Smurf Attack Bližší informace o tomto útoku jsou v kapitole o bezpečnosti sítě. Stoprocentní detekce tohoto útoku je téměř nemožná, protože nutným předpokladem je zjištění, jestli některé pakety neobsahují jako zdrojovou adresu broadcastovou adresu. V tom je právě problém, protože v NetFlow Exportech lze těžko určit, která adresa je broadcastová a která ne. Příkladem může být adresa 147.228.255.191, která může být broadcastová, záleží na masce sítě, která se dá jen odhadnout. V tomto testu přepokládáme, že pokud adresa obsahuje nastavené bity u posledních dvou bytů adresy, jedná se o broadcastovou adresu. Port Scanner Port scanner slouží k testování otevřených portů na cílové stanici, které útočník může použít pro napadení stanice. Port scanner tedy není klasickým typem útoku, protože přímo nezpůsobuje žádné ublížení stanici, ale jedná se o prostředníka, který umožní její případné pozdější napadení. V dnešní době existuje mnoho scannerů portů s různými sofistikovanými metodami detekce otevřených portů s pokud možno neprozrazením této události cílové stanici. Test provádím tak, že pokud útočník se pokouší v určité časovém kvantu navázat spojení na porty 1-1024 a překročí určitou hranici, je vyhodnocen jeho čin jako pokus o napadení. Druhou částí je pak test na pokusy o navázání spojení na vysoké čísla portů (tam je hranice pro signalizaci útoku o něco vyšší než pro test portů s nízkým číslem). I v tomto případě se jedná o určitou techniku detekce, kdy na některé metody scanování portů nebude program signalizovat žádné varování. 25

UDP Count Flood Je to obdobný typ útoku jako je ICMP Count Flood. Útočník posílá velké množství UDP paketů na cílovou stanici. Po překročení určité hranice je opět zaznamenán záznam o možném útoku. SYN attack SYN útoky jsou charakterizovány velkým počtem žádostí o vytvoření TCP spojení. Vytvoření TCP spojení se skládá ze 3 kroků, ale při tomto útoku útočník posílá paket jen z prvého kroku. Napadená stanice musí alokovat pro tento paket prostředky, které jí po krátké době dojdou, a jiné stanice tak nemohou s napadenou stanicí vytvářet nová spojení. To znamená, že sice stanice je naprosto funkční, pouze se na ni nikdo z vnějšího světa nedostane. Nastavení hranice, kdy se jedná o SYN útok je velmi obtížné, protože na některé stanice je vytvářeno mnoho spojení na jiné nikoliv. V programu je standardně nastavená mez max. 600 nových spojení za minutu. Pro zjištění informace o navazování TCP spojení se kontrolují takzvané příznaky TCP spojení (TCP flags). Testovat tyto TCP příznaky je velmi obtížné (spíše nemožné), protože směrovače je v Neflow Exportech z nutnosti úspory místa agregují tzv. OR'ed TCP flags. Nový modul NetFlow exportu, který je vyvíjen na Univerzitě Karlově (MFF), do jádra Linuxu už bude mít možnost nastavení, jestli má směrovač provádět logický součet těchto flagů. V případě 100% testování TCP příznaků bude volba logického součtu příznaků zakázána. SYN + FIN attack Nejedná se přímo o útok spíš o metodu testování portů či dostupnosti jednotlivých stanic, u kterých se nezaznamenávají pokusy o navázání spojení, protože je nastaven i příznak FIN, spojení není vytvořeno. 5.4 Návrh databázového modelu 5.4.1 E-R Model Pro správné navržení E-R modelu jsem bral v potaz několik hledisek, a to jak snadnost programové realizace, tak i jednoduchou práci a údržbu celého systému. Celá databáze obsahuje několik různých tabulek, kde každá má svůj specifický význam. Data tabulek jsou uložena buď v paměti ( heap tabulky), nebo na disku ( MYISAM tabulky). Detailní popis rozdílů mezi typy tabulek tvoří obsáhlá dokumentace databázového systému MySQL (viz literatura a odkazy na MySQL dokumentaci). 26

Obrázek 5.2: E-R model. Obrázek není klasickým zobrazením E-R modelu, ale výstižně zobrazuje přenos dat mezi jednotlivými tabulkami. 5.4.2 Definice tabulek Tabulka income heap tabulka pro příjem dat z programu NetFlow Collector. V této tabulce jsou následující položky: mt - čas vzniku NetFlow 4, nt - čas v nanosekundách, rt - IP adresa směrovače, který odeslal NetFlow, sip, dip - zdrojová/cílová IP adresa, nh IP adresa dalšího směrovače, sin, sou - zdrojové/cílové rozhraní přes, které procházel daný tok, pck - počet přenesených paketů, bytes - počet přenesených bytů, sp, dp - zdrojový/cílový port, flags - příznaky TCP spojení, proto - použitý protokol 1=ICMP, 6=TCP, 17=UDP, tos - Typ služby (Type Of Service), sas, das - zdrojová/cílová adresa AS, srv - odhadovaný typ použité služby, sm, dm - délka zdrojové/cílové síťové masky, ver - verze NetFlow exportu. 4 měřeno v počtech sekund od roku 1970 27