VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

Similar documents
Spájanie tabuliek. Jaroslav Porubän, Miroslav Biňas, Milan Nosáľ (c)

Copyright 2016 by Martin Krug. All rights reserved.

Anycast. Ľubor Jurena CEO Michal Kolárik System Administrator

TP-LINK 150Mbps Wireless AP/Client Router Model TL-WR743ND Rýchly inštalačný sprievodca

BGP - duálne prepojenie AS. (primary + backup spoj), s IBGP, cez virtuální L2 linky

Aplikačný dizajn manuál

Rýchlosť Mbit/s (download/upload) 15 Mbit / 1 Mbit. 50 Mbit / 8 Mbit. 80 Mbit / 10 Mbit. 10 Mbit / 1 Mbit. 12 Mbit / 2 Mbit.

Registrácia účtu Hik-Connect

kucharka exportu pro 9FFFIMU

Manuál k programu FileZilla

Obsah. SOA REST REST princípy REST výhody prest. Otázky

Ochrana proti DDoS za použitia open-source software. Katarína Ďurechová

Databázové systémy. SQL Window functions

Mesačná kontrolná správa

OMEZENÍ PROVOZU PEER-TO-PEER SÍTÍ

Mesačná kontrolná správa

Recipient Configuration. Štefan Pataky MCP, MCTS, MCITP

Riešenia a technológie pre jednotnú správu používateľov

Crestron Mercury. Univerzálny Videokonferenčný a Kolaboračný systém

D.Signer prostriedok pre vytváranie zaručeného elektronického podpisu. Inštalačná príručka

JAVA. Sieťové programovanie

Kategória školenia Školenia Cisco obsahuje kurzy:

Počítačová sieť. počítačová sieť. Internet World Wide Web. distribuovaný systém middleware. KIS, M.Oravec, KTL FEI STU

Databázy (1) Prednáška 11. Alexander Šimko

Nové komunikačné trendy v dátových centrách

REPORT DESIGNER 1 VYTVORENIE A ÚPRAVA FORMULÁRA. úprava formulárov v Money S4 / Money S Vytvorenie formulára

VYLEPŠOVANIE KONCEPTU TRIEDY

REPREZENTACE OBSAHU SÍŤOVÉHO PROVOZU V XML

Textový formát na zasielanie údajov podľa 27 ods. 2 písm. f) zákona

Spôsoby zistenia ID KEP

Komunikačné protokoly

Kamera. Sieťová klenbová kamera. Rýchla používateľská príručka---po slovensky. Táto rýchla príručka sa vzťahuje na: DS-2CD2112-(I),

Problém Big Data a ako ho riešiť pomocou NoSQL. Ján Zázrivec Softec

Novinky vo Windows Azure & Scenáre. Ľubomír Goryl Solution Professional Microsoft Slovakia, s.r.o

Detekcia antivírusových aplikácií na zariadeniach v počítačovej sieti

Testovanie bieleho šumu

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ

VLSM a CIDR. CCNA2 Kapitola Cisco Systems, Inc. All rights reserved. Cisco Public 1

Vzory, rámce a webové aplikácie

Počítačové siete Bezpečnosť

1 Komplexný príklad využitia OOP

INTERNET. História internetu

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

1. ELASTIX inštalácia 2 2. Elastix konfigurácia Nastavenie užívateľských kont Pridanie nových užívateľských kont 10 2.

Internet. Princípy Internetu

Desatinné čísla #1a. Decimal numbers #1b. How much larger is 21,8 than 1,8? Desatinné čísla #2a. Decimal numbers #2b. 14 divided by 0,5 equals...

Poradové a agregačné window funkcie. ROLLUP a CUBE

Smerovacie algoritmy OSPF a BGP. OSPF (Open Shortest Path First) BGP (Border Gateway Protocol)

Ochrana koncových staníc pomocou Cisco Security Agent 6.0. Ľubomír Varga.

Ako funguje Internet? RNDr. Gabriela Kovesiová

Obrázok 1 UTP kabeláž a koncovka RJ 45

Poč í tač ové siété a Intérnét. Ing. Štefan Korečko, PhD.

Constraint satisfaction problems (problémy s obmedzujúcimi podmienkami)

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

Obsah. Úvod Časť 1 Prehľad produktu Funkcie Špecifikácia Časť 2 Inštalácia hardvéru - 6 -

Sieťové prepínače. Pavol Sokol / /

5.1 KOMPONENTY SIETE A ICH FUNKCIA V SIETI

Komunikačné protokoly. Základné komunikačné protokoly. NetBEUI. Mgr. Ján Guniš, PF UPJŠ, Košice

Komunikačné protokoly 2005 KP 2005 #3 - IP v02.doc

AR6181-MX, AR6182-MX Čítačky MIFARE kariet

On-line pomocník. Vitajte v LTE CPE! On-line pomocník. Huawei patentované a dôverné Autorské práva Huawei Technologies Co., Ltd

Obsah. Úvod Časť 1 Prehľad produktu Funkcie Špecifikácia Časť 2 Inštalácia hardvéru...

Štruktúra údajov pre kontajner XML údajov 1. Dátové prvky pre kontajner XML údajov

Komunikačné protokoly 2004 KP 2004 #3 - IP v03.doc

SAP HANA PLATFORM FAKULTA INFORMAČNÍCH TECHNOLOGIÍ BRNO UNIVERSITY OF TECHNOLOGY FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INFORMATION SYSTEMS

VNÍMANIE KONTEXTU PRE MOBILNÉ TELEFÓNY CONTEXT AWARENESS FOR MOBILE PHONES

KOMUNIKAČNÉ A INFORMAČNÉ SIETE

LL LED svietidlá na osvetlenie športovísk. MMXIII-X LEADER LIGHT s.r.o. Všetky práva vyhradené. Uvedené dáta podliehajú zmenám.

Košice. Riešenia pre malé a stredné podniky

Tomáš Lőrincz. Štatistické vyhodnotenie komunikácie v počítačovej sieti

Základná(umelecká(škola(Jána(Albrechta Topoľčianska(15

Databázy (1) Prednáška 08. Alexander Šimko

Peer-to-Peer Internet Applications: A Review

OLYMP na MS SQL OBSAH 1 AKO POSTUPOVAŤ. 2 INŠTALÁCIA Microsoft SQL Servera 2008 R2 3 PREVOD DATABÁZY OLYMPU NA SQL

TOPOLOGIE SÍTÍ A JEJICH MONITOROVÁNÍ

Doručovanie multimedialného obsahu (Nástroje, metódy a riešenia) František Jakab November 2008

Počítačové siete I. Poznámky z cvičení

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

ZADÁNÍ BAKALÁŘSKÉ PRÁCE

}w!"#$%&'()+,-./012345<ya

Linux. Sirindhorn International Institute of Technology Thammasat University. Linux. Firewalls with iptables. Concepts. Examples

Žilinská univerzita v Žiline. Generátor paketov. Elektrotechnická fakulta Katedra telekomunikácií. Diplomová práca

NÁSTROJ PRO SLEDOVÁNÍ RTP STREAMŮ

BEZPEČNOSTNÍ RIZIKA SOUČASNÝCH SMĚROVAČŮ

ZADANIE SEMESTRÁLNEHO PROJEKTU

SIP v malých telekomunikačných systémoch. Convergence. A matter of lifestyle.

SMARTPHONE FAKULTA INFORMAČNÍCH TECHNOLOGIÍ BRNO UNIVERSITY OF TECHNOLOGY FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF COMPUTER SYSTEMS

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ

2. prednáška ( ) Aplikačná vrstva. ÚINF/PSE1/03 Počítačové siete 1

KONSTRUKCI HLÍDACÍCH OBVODŮ

Programovanie v jazyku Python. Michal Kvasnica

Identification of network users by profiling their behavior. Bc. David Kubeša

TECHNICKÁ UNIVERZITA V KOŠICIACH. Multimediálna elektronická učebnica v programe Toolbook - Prenos hlasu v IP sieťach DIPLOMOVÁ PRÁCA

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ

AUTOMATED GENERATION OF PROCESSING ELEMENTS FOR FPGA

Go networking. Peter Borovanský, KAI, I-18, borovan(a)ii.fmph.uniba.sk

UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY VÝUKOVÁ WEBOVÁ APLIKÁCIA NA PROGRAMOVANIE GPU.

VIRTUALIZÁCIA DÁTOVÝCH ÚLOŽÍSK. Karol Schütz, S&T Slovakia

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

Jazyk SQL. Jaroslav Porubän, Miroslav Biňas, Milan Nosáľ (c)

Transcription:

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMAČNÍCH TECHNOLOGIÍ ÚSTAV POČÍTAČOVÝCH SYSTÉMŮ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF COMPUTER SYSTEMS BLOKOVÁNÍ P2P SÍTÍ BAKALÁŘSKÁ PRÁCE BACHELOR'S THESIS AUTOR PRÁCE AUTHOR PATRIK ŠVAJDA BRNO 2010

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMAČNÍCH TECHNOLOGIÍ ÚSTAV POČÍTAČOVÝCH SYSTÉMŮ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF COMPUTER SYSTEMS BLOKOVÁNÍ P2P SÍTÍ P2P NETWORKS BLOCKING BAKALÁŘSKÁ PRÁCE BACHELOR'S THESIS AUTOR PRÁCE AUTHOR VEDOUCÍ PRÁCE SUPERVISOR PATRIK ŠVAJDA ING. JIŘÍ TOBOLA BRNO 2010

Abstrakt Tato bakalářská práce se zabývá filtrováním P2P sítí určených k výměně dat. Popisuje vrstvy ISO/OSI modelu, na kterých je možné tyto sítě blokovat. Popisuje nástroje detekující P2P sítě na základě datové části paketu určeného pro operační systémy Linux. Testování dokazuje úspěšnost blokování L7-filtrem a IPP2P filtrem. Abstract This bachelor's thesis deals with filtering P2P networks intend for changing data. My work describes layers of ISO/OSI model, which is able to blocking these networks. For Linux describes tools of detecting P2P networks with the aid of data part of packet. Testing proves success of blocking by L7- filter and IPP2P filter. Klíčová slova P2P, peer to peer, iptables, l7-filter, IPP2P, Linux, síťový most, blokování, propustnost Keywords P2P, peer to peer, iptables, L7-filter, IPP2P, Linux, network bridge, blocking, throughput Citace Patrik Švajda: Blokovanie P2P sietí, bakalářská práce, Brno, FIT VUT v Brně, 2010

Blokovanie P2P sietí Prohlášení Prohlašuji, že jsem tuto bakalářskou práci vypracoval samostatně pod vedením Ing. Jiřího Toboly. Uvedl jsem všechny literární prameny a publikace, ze kterých jsem čerpal. Patrik Švajda 18.5.2010 Poděkování Ďakujem vedúcemu práce Ing. Jiřímu Tobolovi za trpezlivosť a rady pri písaní práce a ďakujem firme Itaxnet s.r.o. za možnosť odskúšania filtra v reálnej prevádzke. Patrik Švajda, 2010 Tato práce vznikla jako školní dílo na Vysokém učení technickém v Brně, Fakultě informačních technologií. Práce je chráněna autorským zákonem a její užití bez udělení oprávnění autorem je nezákonné, s výjimkou zákonem definovaných případů.

Obsah Obsah...1 1 Úvod...2 2 Peer to peer...3 2.1 Napster...4 2.2 BitTorrent...5 2.3 Direct Connect...5 2.4 Gnutella...6 2.5 FastTrack...6 3 Návrh riešenia...7 3.1 ISO/OSI model...7 3.2 Spôsoby blokovania...8 3.2.1 Sieťová vrstva...8 3.2.2 Transportná vrstva...8 3.2.3 Aplikačná vrstva...9 3.3 Iptables/Netfilter...11 3.4 L7-filter...13 3.5 IPP2P...15 4 Implementácia...15 5 Testy...18 5.1 Test v reálnej prevádzke...18 5.2 Test úspešnosti blokovania...22 5.3 Test priepustnosti...23 6 Záver...24 Literatúra...25 Zoznam príloh...28 1

1 Úvod Peer to peer (ďalej P2P) siete sa stali za posledné roky vládcom vo svete zdieľania legálneho ale najmä nelegálneho obsahu, filmov, mp3 súborov a iného materiálu. Doslovný preklad peer to peer znamená rovný s rovným, takže každý počítač pripojený do tejto siete plní aj úlohu servera aj klienta. Najznámejšie šírenie dát cez P2P je cez BitTorrent, Direct Connect, FastTrack a Gnutellu. Medzi P2P programy ale patrí aj telefonovanie cez Skype, preposielanie streamu internetového televízneho príjmu a podobne. Najmä pre lokálnych poskytovateľov internetu či už cez bezdrôtové pripojenie alebo menších káblových poskytovateľov je P2P traffic problém, kvôli ktorému klesá kvalita poskytovania dátových služieb. P2P traffic využíva niekedy viac ako polovicu prenosového pásma linky a u bezdrôtových Wifi poskytovateľov v 2,4GHz a 5GHz pásmách to znamená vyťaženie prístupových bodov a spomaľovanie férovejších klientov, ktorí potrebujú lepšiu odozvu napríklad kvôli telefonovaniu alebo hrám po sieti. Väčšina P2P programov pri svojom fungovaní stiahnuté súbory odosiela naspäť iným klientom do internetu, pri tom využije prenosové pásmo von do internetu (upload) a spotrebuje veľa spojení. Tieto spojenia dokážu prístupové Wifi body úplne zahltiť. Takýto poskytovatelia sa snažia P2P traffic obmedziť, úplne zakázať, alebo mu dať nižšiu prioritu ako dôležitejšiemu http, voip či iptv trafficu. Podľa platných zákonov nemusia poskytovatelia P2P siete blokovať, ale na miestach ako sú školy a verejne prístupné miesta (hotspoty) je blokovanie potrebné. V tejto práci sa budem venovať blokovaniu P2P trafficu pomocou známych voľne šíriteľných nástrojov určených do systému Linux. V kapitole 2 bude nasledovať vysvetlenie princípu fungovania a rozdelenie P2P sietí. Popíšeme si najznámejšie P2P protokoly, spomenutých bude aj niekoľko najznámejších softvérov učených na výmenu dát. Kapitola 3 obsahuje návrh riešenia blokovania na vrstvách sieťového modelu, výhody a nevýhody. Podrobne rozoberieme možnosti blokovania na najvrchnejšej siedmej vrstve OSI modelu. V kapitole 4 popisujeme implementáciu, pre ktorú sme sa rozhodli. Kapitola 5 obsahuje niekoľko testov na otestovanie priepustnosti, otestovanie v reálnej prevádzke u regionálneho poskytovateľa internetu a obsahuje testy úspešnosti použitých nástrojov. V závere práce nasleduje zhrnutie výsledkov a popis možného vylepšenia blokovania P2P sietí. 2

2 Peer to peer P2P je internetová sieť pozostávajúca z niekoľkých rovnocenných uzlov. Klienti pripojení do siete sú peery, ktorí používajú rovnaký sieťový protokol, najčastejšie i rovnakú či podobnú aplikáciu. V niektorých prípadoch určité P2P siete používajú jeden alebo viac synchronizačných a indexovacích serverov. Ak sa jedná o P2P siete určené na zdieľanie digitálneho obsahu, každý peer tvorí úložný priestor, poskytuje svoj výkon a má mnoho iných funkcií potrebných na fungovanie siete. Na vyhľadanie a stiahnutie dát mu slúži terminál. Keďže peer dokáže sťahovať a zároveň slúži aj ako dátové úložište, plní naraz úlohy klienta a servera. Úlohu jedného napríklad http servera, s tým aj prenosové pásmo a systémové prostriedky by si v P2P sieti rozdelili niekoľkí peery a tým by vznikla obrovská prenosová rýchlosť a kapacita diskov. Rozdelenie P2P siete: Neštrukturovaná topológia uzlov nieje dopredu definovaná centralizovaná (Napster) distribuovaná /decentralizovaná (Gnutella) hybridná (Kazaa) iná (BitTorrent) Štrukturovaná snažia sa o efektívne vyhľadávanie aj menej využívaných dát, rozdeliť si rovnomerne povinnosti medzi uzly, prispôsobujú sa odchodu a príchodu peera tým, že si prerozdelia povinnosti. DHT distribuovaná hašovacia tabuľka. Kľúč odkazuje na uzol v sieti. Najznámejšie algoritmy sú Tapestry, Chord, CAN a Pastry. Iná Zdieľanie súborov po sieti P2P znamená pre poskytovateľov internetu alebo pre správcov siete menších firiem či škôl niekoľko hrozieb. Môže prísť k vyťaženiu kapacity linky alebo k zavíreniu pripojeného počítača a následne celej siete. Keďže veľa firiem využíva ako svoje pripojenie do internetu služby typu ADSL, ktoré sú asymetrické a rýchlosť odosielania do internetu tvorí u nich iba osminu niekedy dvanástinu odosielacej rýchlosti, dochádza k vyťaženiu odosielacieho pásma. Na prvý pohľad nepodstatná záležitosť, avšak ak nejakému klientovi ostane rýchlosť odosielania 32kbit/s z celkovej neveľkej kapacity napríklad 1Mbit/s, môže prísť k 3

spomalenému odosielaniu mailov či veľkej odozve pri bežnom surfovaní. Niektorý menší poskytovatelia začínali s pripojením ADSL, avšak P2P siete boli ich nočnou morou. Obrázok 2.1 (prevzaté z [1]: Vyhľadávací proces v P2P sieti: (a) Napster (b) Gnutella (c) Kazaa (d) BitTorrent V nasledujúcich podkapitolách si popíšeme najznámejšie P2P služby určené na výmenu dát. 2.1 Napster Medzi prvé P2P služby patrila služba Napster[2]. Umožňovala zdielať MP3 súbory a preto bola po dvoch rokoch kvôli autorským zákonom zakázaná. Hlavnú entitu tvorí centrálny server, bez ktorého sieť nemohla fungovať. Týchto centrálnych serverov mala preto niekoľko, ktoré indexovali napríklad pripojených peerov aj so súbormi ktoré zdieľajú, odozvu k peerovi, IP adresu a rýchlosť k peerovi. Ak si nejaký peer dal vyhľadať súbor, centrálny server mu poslal výsledky, peer si vybral súbor napríklad podla lepšej rýchlosti alebo odozvy a nadviazal spojenie priamo medzi druhým peerom. Vyhľadávací proces je na obrázku 2.1(a). V súčastnosti služba pokračuje ako platená. 4

2.2 BitTorrent BitTorrent sieť patrí medzi najrýchlejšie P2P siete. Vznikla v roku 2001[3]. Pracuje na princípe malých súborov s veľkosťou niekoľko Kb, ktoré sa nazývajú torrenty. Obsahujú základné informácie o súboroch, ktoré chce užívateľ sťahovať, ich kontrolné súčty SHA1 a adresu na servere, na ktoré sa pripája. Tieto servere sa nazývajú trackery a zaznamenávajú pripojených klientov, prenesené dáta, IP adresy a pod. Užívateľ si torrent súbor stiahne najčastejšie na tomto trackery cez web rozhranie alebo cez iné vyhľadávače, ktoré si držia databázu týchto torrent súborov. Mnohé spoločnosti a open source projekty (Linuxové distribúcie) šíria dáta uverejnením torrentu na svojej stránke a tým šetrenia kapacity serverov. Samotný tracker teda nepodporuje vyhľadávanie súborov peerov. Na obrázku 2.1(d) je znázornená výmena dát BitTorrent protokolom. Programy µtorrent, BitTorrent, novšie verzie internetového prehliadača Opera a mnohé ďalšie dokážu sťahovať obsah súborov zaznamenaných v torrente od peerov, ktorí sú pripojení na tracker. Sťahovanie prebieha po fragmentoch dát od niekoľkých (až tisícky) užívateľov, ktorí majú už nejaké dáta stiahnuté. Týmto dosahuje vysokú rýchlosť ale aj veľa spojení do siete. Užívatelia, ktorí majú celé dáta z torrent súboru stiahnuté, sa nazývajú seederi, tí ktorý dáta sťahujú sa nazývajú leecheri. Mnoho trackerov je privátnych a pracujú na princípe ratia, to znamená, že požadujú od svojich užívateľov aby určité percento (20%-70%) stiahnutých dát odoslali (seedovali) inak im bude prístup na tracker obmedzený. Do tohto protokolu bola pridaná šifrovaná komunikácia, avšak nie ako spôsob bezpečného prenosu a ochrany súkromia ale ako spôsob vyhnúť sa detekcii na strane poskytovateľa internetu. 2.3 Direct Connect Vznikol v roku 1999[4]. Centrálny server pre Direct Connect sieť sa volá HUB. Samotný hub neobsahuje žiadne informácie o tom, aké dáta poskytujú peery. Pripojenie peera na HUB býva podmienené zdieľaním určitého množstva dát. Aby sa predišlo nazdielaním rovnakých súborov s iným názvom od jedného peera, používa sa tiger-tree-hašovaciu funkciu(tth[13]). Tým sa kontroluje aj integrita súborov. Ďalšou podmienkou na pripojenie klienta je otvorenie čo najviac slotov, cez ktoré si môžu iný klienti sťahovať súbory. Jeden sťahovaný súbor sa v starších verziách klientského softvéru dal sťahovať iba od jedného peera. Nové verzie DC klientov avšak majú možnosť sťahovať segmentovo. Protokol je jednoduchý, textový, bez šifrovania. Príklad 5

komunikácie je uvedený v kapitole 3.2.3. Medzi softvéry na pripojenie do siete DirectConnect patria: DC++, StrongDC++, LinuxDC++. Všetky klientské programy používajú na pripojenie k hubu port 411 a na pripojenie klientklient port 412 takže najjednoduchšie blokovanie tejto siete bolo blokovaním týchto portov u poskytovateľov. 2.4 Gnutella Gnutella sieť funguje od roku 2000. V roku 2005 bolo na ňu pripojených 1.81 milióna počítačov [1]. Zdrojové kódy sú volne dostupné na internete, to dovoľuje rôznym spoločnostiam vyvíjať klientské softvéry(bearshare, LimeWire, Morpheus). Pripojenie do siete Gnutella prebieha tak, že sa nový klient pripojí na jeden z verejných uzlov a ten rozošle správu o pripojení svojim susedom a tí zase ďalej. Na správu o pripojení každý peer odpovedá IP adresou, portom a zoznamom súborov, ktoré zdieľa. Rovnako ako Direct Connect používala na kontrolu integrity súboru kryptografickú hašovaciu funkciu TTH. Obrázok 2.1(b) znázorňuje vyhľadávací proces v sieti Gnutella, kde peer A svoju žiadosť zasiela všetkým svojim susedom(b,d), tí ju preposielajú ďalej ak hľadaný súbor nemajú. C hľadaný súbor má, zasiela správu naspäť cez návratové body(b) do A a ten kontaktuje C o prenos súboru. Ako vidieť prihlasovanie do siete a samotné vyhľadávanie menej populárnych súborov je veľmi zložité a pomalé, keďže. V sieti je veľká komunikačná réžia a malá spoľahlivosť. Tomuto sa snažila predísť sieť FastTrack ktorá je spomenutá nižšie. Jednoduché blokovanie tejto služby na strane poskytovateľa môže byť zablokovaním bežne používaných portov uvedených v tabuľke 3.1. 2.5 FastTrack FastTrack protokol a prvý klient Kazaa, ktorý sa používa dodnes, boli napísane estónskymi programátormi, ktorí neskôr vymysleli službu Skype[5]. V sieti FastTrack sú rýchle počítače s veľkou konektivitou do internetu usporiadané ako uzatvorené super uzly. Vyhľadávanie v sieti FastTrack je znázornené na obrázku 2.1(c). Pri hľadaní súbora sa peer pýta superuzla, ten ak nepozná odpoveď, pýta sa ďalej iba superuzlov a vracia odpoveď o umiestnení (peer B). 6

3 Návrh riešenia Obmedzenia P2P služieb u poskytovateľov môžu byť rôzne, najčastejšie iba obmedzením odchádzajúceho prenosového pásma na 1/4 až /1/8 z rýchlosti sťahovania, obmedzením spojení alebo rýchlosti či úplným blokovaním P2P. Pri obmedzovaní P2P treba tieto dáta oddeliť od iných a vynechať služby pracujúce ako P2P napr. Skype. V nasledujúcej kapitole si popíšeme tie vrstvy sieťového OSI modelu, na ktorých je možné blokovanie P2P. Spomenieme niektoré nástroje určené na detekciu a následné blokovanie a spôsob ich použitia. 3.1 ISO/OSI model Jedným zo spôsobov popisovania sieťovej architektúry sú vrstvové modely. V nich každá vrstva je potrebná pre vrstvu nižšiu, ktorej zaisťuje potrebné funkcie. Rovnaké vrstvy majú definované komunikačné pravidlá-komunikujú vrstvovými protokolmi. Najznámejšie vrstvové modely sú: OSI model uznaný ako referenčný, má 7 vrstiev(obrázok 3.1) TCP/IP model jednoduchý 4 vrstvový Obrázok 3.1: OSI referenčný model (prevzaté z [6]) 7

3.2 Spôsoby blokovania Blokovanie P2P komunikácie môže prebiehať na rôznych vrstvách OSI modelu. Spomenieme aj výhody a nevýhody blokovania na vymenovaných vrstvách. Najviac sa budeme venovať blokovaniu na najvrchnejšej aplikačnej vrstve ku ktorej si popíšeme aj dostupné nástroje. 3.2.1 Sieťová vrstva V počiatkoch P2P sietí bolo blokovanie P2P na sieťovej vrstve reálne, keďže existoval zoznam verejných HUBov, trackerov, uzlov a k tým boli známe IP adresy. Tieto IP adresy sa blokovali a tým sa poskytovatelia zbavili nežiadúceho P2P trafficu. Dnes je zostaviť taký zoznam nemožné keďže počet PC pripojených do internetu stúpol a mnoho P2P sietí sa stalo privátnymi. 3.2.2 Transportná vrstva Medzi prvé techniky blokovania P2P patrilo blokovanie komunikačných portov, keďže prvé P2P programy používali pevne zadané čísla portov. V tabuľke 3.1 sú uvedené najznámejšie aplikácie a aké čísla portov využívajú pri nainštalovaní klientskej aplikácie bez zásahu užívateľa. Neskôr tieto programy využívali čísla portov iných služieb, najmä porty 1-1024. Prehľad týchto portov je v [7] alebo pod systémami Unix a Linux v skrátenej verzii v súbore /etc/protocols. V P2P programe takto vieme nastaviť napríklad port 80 a tým sa blokovanie podľa čísla portu stáva nepoužiteľné. Čísla portov P2P sieť 411,412 Direct Connect 30301,6881-6999 BitTorrent 6346,6347 Gnutella 1214 FastTrack Tabuľka 3.1: Prehľad implicitných portov Jeden z programov zaznamenávajúci udalosti na transportnej vrstve je NetFlow[8] vyvinutý firmou Cisco. Zaznamenáva IP toky. Každý tok je definovaný zdrojovou a cieľovou IP adresou, číslom UDP alebo TCP portu respektíve ICMP správou, typom služby (ToS). NetFlow zaznamenáva ešte čas začiatku a konca prenosu, počet prenesených bajtov a paketov a okrem toho aj menej podstatné údaje ako verzia NetFlow a podobne. Tieto toky sú ukladané napríklad do databázy a na základe nich sa dá analyzovať sieťová prevádzka[9] a odhaliť napríklad aj šifrované 8

P2P prenosy. Analýza prebieha napríklad podla využívania čísla portu služby, veľkosti paketov, rýchlosti prenosu, časom medzi požiadavkami a podľa IP adries. Pri analýze môžu ale vznikať chybné detekcie zámenou protokolov čo sa nazýva false positives. Tento spôsob nám avšak stále nepomáha k blokovaniu P2P v reálnom čase. Obrázok 3.2: Princíp fungovania NetFlow(prevzaté z [8]) 3.2.3 Aplikačná vrstva Na aplikačnej vrstve spolu komunikujú sieťové aplikácie predpísanými správami(protokolom). V tabuľke 3.2 uvádzame najznámejší protokol HTTP. Požiadavka klienta Odpoveď servera GET /index.html HTTP/1.1 HTTP/1.1 200 OK Host: www.example.com Date: Mon, 03 May 2010 12:01:06 GMT Server: Apache/2.2.3 (Red Hat) Accept-Ranges: bytes Content-Length: 438 Connection: close Content-Type: text/html; charset=utf-8 Tabuľka 3.2: Príklad komunikácie http protokolom Ako vidieť na obrázku 4.2, na podobnom princípe pracuje aj mnoho P2P protokolov avšak celá komunikácia je omnoho zložitejšia. Ako príklad si uvedieme žiadosť na stiahnutie súboru v 9

sieti Direct Connect, ktorá je prevzatá z [10] kde možno nájsť podrobnejší popis či príklady iných žiadostí daného protokolu. D-downloader, U-uploader, H-HUB, D>H: $ConnectToMe <U's username> <D's IP and port> H>U: $ConnectToMe <U's username> <D's IP and port> U>D: Connection U>D: $MyNick <U's nick> $Lock <new lock with pk> D>U: $MyNick <D's nick> $Lock <pk> $Direction Upload <anumber> \ $Key <key for U's lock> U>D: $Direction Download <anumber> $Key <key for D's lock> D>U: $Get <filepath + filename in exact case> \ $<start at byte (1=beginning of file)> U>D: $FileLength <length of the requested file> D>U: $Send U>D: Data, in many chunks. D>U: $Send <- when 40906 bytes are sent, ask for more Ak by sme chceli nájsť takúto komunikáciou, stačilo by ak by sme v paketoch hľadali na začiatku riadku reťazec $MyNick. Samotný regulárny výraz bude uvedený v kapitole 3.4 a je o trochu zložitejší, keďže napríklad pri registrácii klienta nieje reťazec $MyNick používaný. Http vzorok IP hlavička TCP hlavička (port 80) GET /song.mp3 HTTP/1.1 User-Agent: Kazaa FastTrack vzorok Obrázok 3.3: Príklad podobnosti protokolov Medzi nástroje, ktoré takto vedia analyzovať priamo dáta a zistiť či ide o P2P alebo iný traffic patria najmä IPP2P a l7-filter, ktoré budú popísané vo zvláštnych kapitolách. Keďže analyzujú priamo pakety na základe regulárnych výrazov, potrebujú pri väčších pásmách a pri 10

zložitejších protokoloch viac prostriedkov hardvéru a viac systémového času na nájdenie zhody. Niesu distribučne obsiahnuté a ich zavedenie do systémov je komplikované. V dnešnej dobe všetky vyvíjané P2P programy vedia použiť šifrovanie, takže detektory pracujúce na najvrchnejšej vrstve za pomoci regulárnych výrazov sú bezmocné a pomôžu iba pri uprednostnení hlasového, http a iného dôležitého nešifrovaného trafficu pred iným obsahom. Problém môže i tak nastať, keď dáme nižšiu prioritu neznámemu obsahu alebo ho zablokujeme a medzi tým sa nachádzajú hry po sieti, rôzne hlasové aplikácie atď. 3.3 Iptables/Netfilter Iptables je sieťový nástroj[11] určený pre systémy Linux a Unix. Umožňuje systému pracovať so sieťovou prevádzkou, filtrovať vstupné dáta, nastaviť preklad sieťových adries(nat) atď. Používa sa ako firewall a u internetových poskytovateľov najmä na hlavných bránach do siete internet. Ako už z názvu programu vyplýva, iptables bude obsahovať tabuľky. Tie môžu obsahovať podmienky, ktorými sa porovnáva paket a ak vyhovuje podmienke, vykoná sa žiadaná operácia a paket nemusí ďalej pokračovať v prechádzaní tabuľky. Poznáme 3 základné tabuľky: filter pre filtrovacie pravidlá a je implicitná, to znamená, keď nieje uvedená v parametroch iptables žiadna tabuľka, použije sa táto. Pri základnom filtrovaní paketov potrebujeme poznať 3 smery: INPUT - vstup OUTPUT výstup FORWARD - paket prechádza systém(nemá nič spoločné s INPUT a OUTPUT) Smer FORWARD sa používa iba pri smerovačoch a podobných systémoch, keďže cez bežné užívateľské PC paket neprechádza. S každým z týchto smerov môžeme vykonať 3 základné akcie: pakety budeme zahadzovať-drop, budeme odmietať-reject alebo si budeme ponechávať- ACCEPT. nat slúži pre preklad adries. Obsahuje smery: PREROUTING - vstup paketov do systému. V prípade nat tabuľky sa nastavuje napríklad presmerovanie paketov na lokálnu IP. POSTROUTING - výstup paketov zo systému. V prípade nat tabuľky sa používa na maskovanie iných PC(NAT). 11

OUTPUT - možnosť riadiť pakety ešte pred opustením systému a pred tým, než ich zmení POSTROUTING. mangle určená pre označovanie paketov(markovanie) a pre zmeny hlavičky paketov ako napríklad TTL(time to live) alebo ToS. Obsahuje všetkých 5 smerov spomenutých vyššie. K tomu aby sme vedeli filtrovať presne určené pakety potrebujeme vždy pridať ďalší parameter, ktorý vykoná, že budeme zahadzovať iba konkrétne pakety. Implicitné nastavenie iptables politiky je pre všetky smery ACCEPT, lepšie(ale zložité) firewally menia túto politiku na DROP a povoľujú iba to, čo potrebujú vo vnútri siete alebo v systéme aby fungovalo.(napr. povolia iba TCP port 80 pre web server). Syntax programu iptables je uvedená nižšie, podrobnejší popis je uvedený v manuálových stránkach[14] programu. iptables [tabuľka] <operácia s tabuľkou> <param> <akcia/cesta> tabuľka - ak nieje uvedená, implicitne sa považuje za tabuľku filter. Inak sa uvádza za parametrom -t. Napr. -t mangle op.s tabuľkou Základné operácie sú: pridanie pravidla do tabuľky -A, zmazanie pravidla -D a pridanie na začiatok -I param ďalšie parametre iptables, ktoré popisujú vlastnosť/podmienku paketu. Ak táto podmienka nieje splnená, prechádza sa pri kontrole paketu na ďalší záznam v tabuľke. akcia/cesta ak je podmienka splnená, tento parameter označuje ďalší postup, ktorý sa s paketom vykoná(zahodí,zamaskuje za inú IP a pod.) Typické príklady použitia môžu byť nasledovné: iptables -A INPUT -p udp -s 10.10.10.10 -i eth0 -j DROP iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT V oboch prípadoch neuvádzame typ tabuľky parametrom -t, takže sa používa tabuľka filter. Prvý riadok znamená blokovanie protokolu (-p) UDP smerujúce z IP adresy (source -s) 10.10.10.10 na vstupné rozhranie (input -i) eth0. Keďže iptables je stavový firewall, druhý riadok sa používa najme ak je explicitne zakázaná politika vstupu paketov do systému, tak tento riadok povoľuje vstup nadviazaným(established) spojeniam. Parameter -m načítava moduly a môže mať 12

niekoľko doplňujúcich parametrov. V našom prípade načítame modul state, ktorý kontroluje stav paketu. Existuje mnoho modulov, ktoré sa dajú použiť na blokovanie P2P sietí. Najprimitívnejší z nich je modul string, ktorý hľadá v dátovej časti zhodu podľa jednoduchého reťazca. Zložitejší formát niekoľkých reťazcov(kvázi regulárnych výrazov) sa dá napísať v skripte, s ktorým pracuje iný modul ROPE. Oba niesu veľmi používané. String pretože môžu vznikať false positives a ROPE pre slabú podporu a preto, že používa vlastný skriptovací jazyk, ktorý by bolo treba naštudovať pred používaním. Ďalším modulom sa budeme venovať vo zvláštnych kapitolách 3.4 a 3.5. 3.4 L7-filter Je paketový klasifikátor pracujúci na najvrchnejšej aplikačnej vrstve OSI modelu. Určený je pre operačné systémy Linux ako rozšírenie k paketovému filteru iptables projektu Netfilter[11] o ktorom je písané v kapitole 3.3. Vznikol v roku 2003 najprv ako patch(dodatok) ku QoS systému jadier Linux a neskôr bol vydávaný pre Netfilter ako open source. Pomocou šablón, ktoré sú zverejnené na stránke projektu[12] dokáže detekovať všetky najpoužívanejšie protokoly aplikačnej vrstvy mimo toho i rôzne typy súborov a škodlivý kód. Šablóny obsahujú vzorku regulárneho výrazu paketu konkrétneho protokolu. Pri niektorých službách sú tieto regulárne výrazy natoľko zložité, že detekcia trvá až niekoľko desiatok sekúnd a nie vždy musí byť úspešná. Vydávané sú 2 verzie programu. Jedna sa zavádza priamo do jadra operačného systému a využíva jeho virtuálnu pamäť, druhá verzia sa spúšťa v užívateľskom priestore/userspace[15] systému. Userspace verzia nieje plne kompatibilná s novšími jadrami a je písaná v C++. Verzia používané ako modul jadra/kernelspace a modul iptables je písaná v programe C. V súčastnosti je l7-filter zabudovaný do niektorých systémov/firmvérov pracujúcich na Linuxovej báze (DD-WRT, Mikrotik[26]), ktoré sa využívajú v módoch bezdrôtového prístupového bodu alebo ako smerovač. Základné vlastnosti programu l7-filter sú: Patche pre Linux 2.4 a 2.6 podpora TCP, UDP, ICMP (iba Ipv4) zverejnených niekoľko vzorov regulárnych výrazov (FTP, HTTP, DirectConnect...) Použitie verzie určenej do jadra môže byť nasledovné. 13

iptables -A FORWARD -m layer7 l7proto bittorrent -j DROP Keďže tu L7-filter funguje ako rozšírenie iptables, je potreba ho načítať ako modul za parametrom -m. Za parametrom --l7proto nasleduje názov súboru bez prípony.pat, ktorý obsahuje regulárny výraz daného protokolu v našom prípade bittorrent. U userspace verzii treba presmerovať konkrétny sieťový tok do užívateľského prostredia príkazom iptables -A FORWARD -j QUEUE, ktorý presmeruje všetky pretekajúce dáta a následne treba spustiť preložený l7-filter -f konfiguracny_subor.conf, kde v konfiguračnom súbore sa nachádzajú názvy protokolov(regulárnych výrazov) uvedených bez prípony a za ním je uvedené číslo pod ktorým sa má paket označovať(markovať). Za pomoci iptables vieme takto označené pakety zahadzovať poprípade pomocou iných programov obmedzovať rýchlosť a podobne. V oboch verziách sú používané súbory obsahujúce regulárny výraz daného protokolu. Tento súbor musí byť uložený v priečinku /etc/l7-protocols/. V kernelspace verzii táto cesta môže byť uvedená za doplňujúcim parametrom --l7dir. Príklad takéhoto súboru je nasledovný. Komentáre boli zámerne vynechané. bittorrent ^(\x13bittorrent protocol azver\x01$ get /scrape\?info_hash=get /announce\?info_hash= get /client/bitcomet/ GET /data\?fid=) d1:ad2:id20: \x08'7p\)[rp] Na prvom riadku je názov protokolu, zhoduje sa s názvom súboru bez prípony, ďalej nasleduje regulárny výraz definujúci protokol. Keďže niektoré protokoly sú jednoduché a nedajú sa popísať zložitejšími regulárnymi výrazmi, dochádza k nesprávnemu priradeniu protokolov a následne na to aj na nesprávne obmedzovanie služieb. Ďalej si uvádzame pre vysvetlenie príklad jednoduchého protokolu Direct Connect. ^(\$mynick \$lock \$key ) Hľadá sa zhoda jedného z 3 reťazcov na začiatku riadku. Ak paket vyhovuje výrazu, považuje sa za daný protokol. 14

3.5 IPP2P Podobne ako l7-filter je IPP2P rozšírenie Netfilteru určené avšak iba na identifikáciu P2P dát. Od roku 2006 sa nevyvíja. IPP2P detekuje rovnako ako l7-filter pomocou vzorkov paketov, avšak bez zásahu do zdrojového kódu sa nedajú dopísať vlastné regulárne výrazy. Program je písaný v programovacom jazyku C. Výhoda programu by mala byť narozdiel od L7-filtera v rýchlosti a úspešnosti detekcie. V tabuľke 3.3 uvádzame prehľad parametrov pre niekoľko P2P protokolov, ktoré IPP2P podporuje. Spôsob použitia s iptables je nasledovný. iptables -A FORWARD -m ipp2p bit -j DROP Za parametrom -m ipp2p može nasledovať ľubovolný počet parametrov označujúcich P2P protokol. IPP2P filter je používaný v mnoho firmvéroch do zariadení, ktoré pracujú na Linuxovom jadre.(napr.tomato[15]). Protokol Parameter pre iptables edonkey, emule, Kademlia --edk FastTrack (program Kazaa) --kazaa Gnutella --gnu Direct Connect --dc BitTorrent --bit Ares --ares Tabuľka 3.3: Použitie parametrov IPP2P v iptables(najpoužívanejšie siete) 4 Implementácia Ako hardvér určený na blokovanie P2P som kvôli prenášaniu použil notebook Asus eee 4G s CPU Intel 900MHz 512MB RAM Integrovaná 100Mbit sieťová karta Externá USB 100Mbit sieťová karta Ako systém bola použitá distribúcia Debian GNU/Linux so základným systémom a ďalším nainštalovaným softvérom potrebným iba pre naše účeli. Používali sme verziu L7-filter a IPP2P 15

určené do jadra a do iptables ako modul. Od userspace verzii sme upustili kvôli tomu, že pakety musia byť presmerované z priestoru jadra a následne potom späť a môže vznikať meškanie paketov. Nevýhoda userspace verzii je aj v malej kompatibilite s niektorými novšími jadrami. Používaným filtrom pri inštalácii bolo treba zapnúť podporu v jadre, aktualizovať zdrojové kódy iptables a jadra a znovu ich prekompilovať. Inštalácia bola zdĺhavá, keďže bolo treba vyhľadať patche pre zdrojové kódy L7-filtra a IPP2P filtra keďže sa už nevyvíjajú a kompilácia so zdrojovými kódmi iptables a jadra bola neúspešná. Zámerne som si vybral aj neaktuálnu verziu iptables 1.4.3 ku ktorej bolo dostupných viac patchov. Na filtrovacom PC bolo použité jadro 2.6.26 iptables 1.4.3 l7-filter 2.22 ipp2p filter 0.8.2 ďalšie utility: bridge-utils konfigurácia sieťových rozhraní pod systémami Linux a Unix do módu bridge Na obrázku 4.1 je znázornené zapojenie filtrovacieho PC v sieti, ktoré má 2 sieťové rozhrania. Používané sieťové rozhrania filtrovacieho PC bolo potreba prepnúť do transparentného módu, aby zariadenie pripojené do rozhrania eth0 priamo videlo zariadenia pripojené do rozhrania eth1 a opačne. Táto funkcia sa volá sieťový most(bridge) pracujúca na spojovej vrstve ISO/OSI modelu. Typický príklad použitia takéhoto bridgu je pri prepájaní drôtovej a bezdrôtovej siete kde potrebujeme aby zariadenia vytvorili jednu väčšiu sieť. Sieťový most narozdiel od fyzického prepojenia siete dokáže napríklad za pomoci iptables filtrovať rôzne dáta a tým neprepustiť do druhého prepojeného segmentu určité pakety. V našom prípade sa budeme snažiť neprepúšťať do druhého segmentu pakety ktoré patria P2P sietiam určeným na výmenu dát. Náš skript iface vytvára v systéme nové rozhranie br0 ktoré predstavuje logický bridge a pridáva k nemu sieťové porty filtrovacieho PC. Softvérový bridge nemusí mať nastavenú žiadnu IP adresu, avšak my ju pre potrebu vzdialenej správy cez ssh nastavujeme. Počítače pripojené za filtrovacím PC ho nevidia a ani žiadnym nástrojom sa nedá bridge vystopovať. internet Filtrovacie PC Obrázok 4.1: Umiestnenie filtrovacieho PC v sieti 16

V kapitole 3.2.3 sme si uviedli príklad ako vyzerá sťahovanie súboru protokolom Direct Connect. Na začiatku sa vytvorí spojenie a po výmene niekoľkých reťazcov začne výmena dát. Ak by sme spustili filtrovanie P2P až pri výmene dát, stane sa to, že dáta nebudú blokované a prenesú sa úspešne, keďže kľúčové reťazce(vzorky) podľa ktorých detekujeme a následne blokujeme boli na začiatku spojenia. To nám môže prekážať ak by sme filtrovanie chceli spúšťať iba určitý časový interval. Vyriešiť nám takúto situáciu pomôže modul k iptables CONNMARK[17], ktorý označuje celé spojenia. Spojenia je možno prezerať v systéme v súbore /proc/net/ip_conntrack. Príklad záznamu sopojenia je uvedený nižšie. tcp 6 328080 ESTABLISHED src=10.10.3.16 dst=93.184.69.136 \ sport=1814 dport=80 packets=2 bytes=2566 [UNREPLIED] \ src=93.184.69.136 dst=87.244.203.2 sport=80 dport=1814 packets=0 \ bytes=0 mark=0 secmark=0 use=1 Keďže filtrovací počítač bez pravidiel v iptables pracuje transparentne, súbor ip_conntrack v ňom nemusíme nájsť. Zjednodušený príklad blokovania siete BitTorrent IPP2P filterom za použitia CONNMARK uvádzame nižšie. Celý formát blokovania niekoľkých P2P sietí je uvedený v skripte filter.sh. iptables -A PREROUTING -t mangle -j CONNMARK --restore-mark iptables -A PREROUTING -t mangle -m ipp2p --bit -j MARK \ --set-mark 3 iptables -A PREROUTING -t mangle -j CONNMARK save-mark Teraz môže nasledovať príkaz pre zahadzovanie paketov, ktorý môžeme pridávať či odoberať za potreby(napr, v najväčšej prevádzke). iptables -t mangle -A PREROUTING -m mark --mark 3 -j DROP Parameter restore-mark znamená, že ak paket patrí niektorému zo spojení, použije sa značka(mark), ktorá je implicitne 0. Ak paket spĺňa podmienky parametrov, označíme paket značkou 3. V tomto prípade sa označia pakety siete BitTorrent, ktoré bude kontrolovať modul IPP2P. Na tomto mieste môže nasledovať niekoľko porovnávaní paketov a značení. Každému typu spojenia môžeme prideliť inú značku. Potom parametrom save-mark modulu CONNMARK nasleduje uloženie značiek do conntrack tabuľky. Značka spojenia je určená iba na interné použitie v systéme, paket zo systému nevychádza nijako označený respektíve zmenený. 17

5 Testy Pokúsime sa otestovať, či nami vybraný hardvér a programové vybavenie bude postačovať k blokovaniu a ktorý z nástrojov určených na blokovanie bude úspešnejší pri blokovaní. K nasledujúcim testom bolo potrebné ďalšie programové vybavenie: Wireshark[18] interaktívny zachytávač sieťovej prevádzky a sieťový analyzátor. Zachytenú komunikáciu poprípade vybrané pakety vie uložiť do súboru pcap. Dokáže vyhľadávať v paketoch podľa rôznych podmienok. Na základe hĺbkovej analýzy paketov dokáže určiť mnoho protokolov. Tcpreplay[19] slúži na generovanie sieťovej komunikácie uloženej v súbore pcap. Program dokáže generovať pakety niekoľkokrát rýchlejšie ako boli zachytené to nám pomôže generovať rýchlejšiu komunikáciu na sieti a tým testovať úspešnosť blokovania P2P a pod. Htop[20] - interaktívny prehliadač procesov. Slúžil nám na sledovanie percentuálnej záťaže testovaného filtrovacieho PC. Rrdtool[21] nástroj určený na vytváranie grafov typicky záťaže siete, vyťaženie CPU a pod. Ak by sme sa rozhodli vytvárať v jednom rrd súbore hodinové, denné, týždenné a ročné grafy, po postupnom plnení súboru nebude dochádzať k zväčšeniu. Pri vytváraní tohto súbora sa alokuje potrebné miesto na počet záznamov, ktoré sú známe a tým dochádza k posúvaniu (rotovaniu) záznamov kde sa staré hodnoty vymažú z databázy poprípade sa z nich vytvára automaticky hodnota pre graf širšieho časového intervalu. Iptotal[22] skript ktorý pomocou rrdtool vytvára grafy priepustnosti sieťového rozhrania. Grafy sú dostupné cez webové rozhranie pomocou skriptov cgi. Tento skript bol použitý na bráne poskytovateľa v teste z kapitoly 5.1. 5.1 Test v reálnej prevádzke Filtrovacie zariadenie bolo zapojené do segmentu reálnej siete podobne ako to je na obrázku 4.1. V segmente sa nachádza niekoľko bezdrôtových prístupových bodov. Prevádzkovateľ mal 18

podmienku aby sme monitorovali aj odozvu k jednému z problémových bezdrôtových klientov. Priemerný dátový tok v mieste umiestnenia je podľa prevádzkovateľa okolo 20Mbit/s a v špičkách až 40Mbit/s. Pri zapojení filtra do siete sme spustili skript bez riadku, ktorý blokuje P2P protokoly, tým sme dosiahli označovanie spojení a zistili, či náš filter stíha prepúšťať prevádzku. Následne sme mohli pomocou príkazu iptables -L -v -t mangle zistiť, ktoré P2P protokoly boli najviac na sieti používané. Pomocou IPP2P sme značkovali spojenia pre BiTorrent, edonkey, Kazaa, Gnutellu, Direct Connect, AppleJuice, WinMX, SoulSeek a Ares. L7-filter nám značkoval iba najpoužívanejší BitTorrent, Direct Connect, Gnutellu a Freenet. Obrázok 5.1 znázorňuje podiel zachytených paketov, ktoré sme získali z výpisu iptables po siedmych hodinách od zapojenia do reálnej prevádzky. Protokoly, ktoré neboli zachytené boli v grafe vynechané. Ares SoulSeek WinMX Gnutella edonkey 0,23 k 0,08 k 0,25 k 7,00 k 61,00 k 0,07 k l7-filter IPP2P BitTorrent 966,00 k 5 655,00 0 1000 2000 3000 4000 5000 6000 Obrázok 5.1: Množstvo označených paketov protokolov v reálnej sieti za 7 hodín U IPP2P filtra sme použili aj protokoly, ktoré autor projektu veľmi nedoporučuje a nemal ich otestované. Ako vidieť na obrázku 5.1, IPP2P nám označil aj pakety dnes už skoro vôbec nepoužívaného protokolu WinMX alebo SoulSeek, ktoré mohli vzniknúť aj nesprávnym označením protokola. Pri vyťažení siete na 20Mbit/s( približne z toho 3Mbit/s tvorilo odosielanie) vyťaženie procesora na filtrovacom počítači dosahovalo v priemere 12% a využitie pamäte bolo 39MB zo 495MB. Blokovanie P2P sietí bolo spustené manuálne v čase 14:27h keď vzrastal počet pripojených PC a klienti začali využívať pásmo do internetu na 20Mbit/s. Vyťaženie CPU počas blokovania vzrástlo na 25%. Na smerovači prevádzkovateľa bol každú minútu automaticky spúšťaný skript 19

grafyrrd.sh, ktorý zaznamenával pomocou rrdtool počet aktuálnych spojení do siete internet a zaznamenával priemernú odozvu od bezdrôtového klienta. Po dokončení testu boli vygenerované pomocou skriptu grafpng.sh grafy na obrázku 5.2 a 5.4. Z obrázku 5.2 je vidieť, že i napriek blokovaniu P2P sietí narástol počet spojení o 2 tisíc. Rovnako stúpal aj dátový prenos, ktorý je vidieť na obrázku 5.3. Bolo to spôsobené pravdepodobne novými aktívnymi PC, ktorých počet pri spustení testu bol 120 a v čase nárastu spojení stúpol na 145. V čase 15:10h bolo filtrovanie prerušené odobratím riadku z iptables, avšak značkovanie spojení sme nechali ďalej prebiehať. V tomto čase sme mohli sledovať nárast spojení a toku v sieti. Spustenie blokovania Prerušenie blokovania Opätovné spustenie blokovania Obrázok 5.2: Nadviazané spojenia do siete internet Obrázok 5.3: Dátový tok Medzi 14:27 a 15:10 bolo detekovaných a zahodených spolu 66212 paketov. O 15:40 bolo do iptables pridané zvonu pravidlo na zahadzovanie všetkých omarkovaných P2P paketov ale v 20

grafoch to už nieje vidieť, keďže klienti neprejavovali takú veľkú aktivitu. Obrázok 5.4 dokazuje, že blokovanie P2P sietí by nepomohlo vyriešiť situáciu problémovej odozvy na bezdrôtových klientov. Obrázok 5.4: Graf odozvy od bezdrôtového klienta. Keďže blokovanie P2P sietí sme mali v pláne spustiť iba na niekoľko hodín, stačilo nám pomocou rrd vytvárať iba dvojhodinový graf so 120vzorkami, čo znamená, že bol použitý minútový interval. Skripty na aktualizáciu rrd súborov boli spúšťané automaticky v systémovom plánovači cron na smerovači s Linuxovým jadrom u prevádzkovateľa siete. Zaznamenávané pomocou rrd boli tiež straty paketov k bezdrôtovému klientovi, avšak po celý čas testovania sme u bezdrôtového klienta nezaznamenali žiadnu stratu paketov pomocou programu ping. Počas tohto testu som pri zapnutom blokovaní pustil na svojom klientskom PC zapojeného do lokálnej siete BitTorrent klient a snažil som sa sťahovať dáta. Klient sa avšak do siete nepripojil. Šifrovanie nebolo zapnuté. Pri prerušení blokovania P2P siete klient ihneď naviazal spojenia a začal sťahovať rýchlosťou asi 4Mbit/s. Pri opätovnom aktivovaní blokovania P2P sietí sa spojenia nadviazané P2P klientom do BitTorrent siete všetky nezatvorili. Z asi 20tich peerov ostali 2 spojenia aktívne a rýchlosť sťahovania pokračovala asi 30kbit/s. Toto bolo spôsobené tým, že vo svojom BitTorrent kliente som mal povolené príchodzie šifrované spojenie. Po zastavení sťahovania v aplikácii a znovuspustení sa torrent už nepripojil. 21

5.2 Test úspešnosti blokovania Prvý problém bol získať vzorky testovacích dát. Na klientské PC mimo filtrovacieho PC sme nainštalovali program Wireshark a niekoľko voľne dostupných P2P programov. Postupne sme spúšťali P2P programy a zachytávali prevádzku programom Wireshark. Vždy sme mali spustený naraz iba jeden program a ukladali ho do zvláštneho súboru(vzorka 2 viď tabuľka 5.1). Odchytené pakety nám stačilo generovať iba do jedného sieťového rozhrania filtrovacieho PC, druhé sme mali odpojené. Rýchlosť generovania paketov je uvádzaná v zátvorke. Zámerne sme testovali čo najvyššími rýchlosťami aby si boli testy v tabuľke 5.1 pre nami vybraný hardvér rovnocenné. Úspešnosť vzorky L7 filter Úspešnosť vzorky Úspešnosť vzorky IPP2P filter Úspešnosť vzorky P2P protokol 1* 2* 1* 2* BitTorrent 40% (60Mbit/s) 12% (85Mbit/s) 100% (60Mbit/s) 100% (80Mbit/s) Direct Connect 59% (60Mbit/s) 100% (90Mbit/s) 100% (60Mbit/s) 100% (90Mbit/s) Gnutella 46% (66Mbit/s) 20% (60Mbit/s) Náš vzorok vôbec nebol detekovaný Ares Náš vzorok vôbec nebol detekovaný 100% (84Mbit/s) 100% (77Mbit/s) Tabuľka 5.1: Percentuálna úspešnosť detekcie maximálna rýchlosť generovania * Vzorka 1 obsahovala iba jeden paket, ktorý vyhovoval vzoru daného protokolu. Paket bol vybraný zo sieťovej komunikácie zaznamenanej programom Wireshark(zo vzorky 2) na klientskom počítači pripojeného do internetu mimo filter. Tento paket bol spätne vygenerovaný cez filtrovací PC 50 tisíc krát s najväčšou možnou rýchlosťou. Rýchlosť záležala na veľkosti paketu. * Vzorka 2 obsahovala časový úsek sieťovej komunikácie na klientskom počítači pri ktorej bol spustený vždy iba jeden klientský program P2P služby. Ihneď po spustení programu Wireshark bol spustený P2P program a zaznamenávanie bolo vykonávané pokým P2P program nenadviazal spojenia. Vzorka bola vygenerovaná cez blokovacie PC niekoľkokrát(záležalo na veľkosti vzorku). Na začiatku testu sme si vybrali ako vstup pre generované pakety rozhrania externej sieťovej karty. O tejto sme sa domnievali, že bude asi menej výkonná a od nej budú záležať testovacie výkony. Pomocou iptables sme si vypisovali koľko paketov bolo zachytených modulom 22

testovaného filtera. Porovnávací modul L7-filtera pri generovaní vzorky 2 u protokola BitTorrent vyťažil CPU filtrovacieho PC až na hodnotu 100% a prestal reagovať po dobu generovania paketov. IPP2P filter si pri tej istej vzorke držal CPU na hodnote 27%. Rýchlosť generovaných paketov bola vždy v priemere 60000paketov/s. Pri generovaní vzorku do integrovanej sieťovej karty sa zlepšili hodnoty úspešnosti asi o 10%. Následne sme zistili, že všetky nami vygenerované pakety neprišli do systému filtra, čo mohlo byť spôsobené pomalým sieťovým adaptérom. Skúsili sme teda znižovať rýchlosť generovania na takú, aby bol vstup všetkých paketov do systému 100%. 5.3 Test priepustnosti Z testu reálnej prevádzky v kapitole 5.1 a z testov úspešnosti v kapitole 5.2 plynie, že reálna priepustnosť nášho filtrovacieho nástroja končí niekde medzi 20Mbit/s a 60Mbit/s. Generovali sme vzorok paketu, ktorý mal v teste úspešnosti najhorší výsledok (BitTorrent vzorka 2) a postupným zvyšovaním rýchlosti sme namerali výsledky zobrazená v grafe na obrázku 5.5. Z celkového množstva 364tisíc paketov sme na opačnom rozhraní merali počet doručených paketov. Generovaním paketov do integrovanej sieťovej karty nespôsobovala také zaťaženie procesora, avšak priepustnosť bola rovnaká. Filtrovanie P2P nebolo aktivované. Modrá krivka na obrázku 5.5 zobrazuje priepustnosť, keď sme v iptables iba označovali pakety protokolu BitTorrent, na zelenej krivke vidieť 100% úspešnosť, keď sa v iptables nenachádzal žiadny záznam.. Treba poznamenať, že skutočná priepustnosť filtra by záležala aj na využívaní prenosového pásma v opačnom smere. priepustnosť 100 % 90 % 80 % 70 % 60 % 50 % 40 % 30 % 20 % 10 % 0 % 20 25 30 40 50 60 70 80 Mbit/s Obrázok 5.5: Graf priepustnosti v jednom smere prepustené pakety bez filtrovania prepustené pakety s použitím L7-filtra 23

6 Záver V práci boli predstavené a použité voľne šíriteľné nástroje na blokovanie P2P sietí. Keďže sme nepoužili hardvér, ktorý je určený ako prvok počítačovej siete, mohli sme pozorovať ako mal problémy so vzorkami regulárnych výrazov L7-filtra, ktoré sú náročné na výkon CPU. Záťaž procesora vznikala aj kvôli používanej externej sieťovej karte. Z testov vyplýva, že každý nástroj má svoje pre a proti. IPP2P má menšie nároky na výkon systému a L7-filter dokázal detekovať viac paketov siete Gnutella, ktorá patrí ešte stále medzi najvyužívanejšie. Ideálne by bolo použitie oboch nástrojov súčasne, avšak netreba zabúdať na nároky L7-filtera. V testoch sme nenarazili na žiadny problém nesprávneho priradenia protokolu, avšak mohol sa vyskytnúť pri reálnej prevádzke. Zaujímavá situácia vznikla pri detekovaní siete Gnutella u IPP2P keď nedokázal zachytiť pravdepodobne novú verziu protokolu. Nevysvetliteľné ostáva, prečo nedokázal L7-filter zachytiť vzorku Ares klienta, keď podľa zdrojového kódu IPP2P je porovnávanie identické s regulárnym výrazom u L7-filtra. Naším filtrom by sme nepomohli vyriešiť problémy u lokálneho poskytovateľa internetu z testu v kapitole 5.1, ale možno by stačilo pre porovnanie spustiť blokovanie v dobe väčšieho zaťaženia siete, ale už za použitia výkonnejšieho hardvéru. Práca by mohla pokračovať testovaním verzie L7-filtera určenej do užívateľského priestoru, mohli by sme zlepšiť vzorky regulárnych výrazov a ideálny prínos pre mnoho sieťových špecialistov by bol vytvoriť samoinštalačný balík, keďže samotná inštalácia mi zabrala niekoľko dní. Pomohlo by vytvoriť patch pre nové verzie jadra systému a iptables. Vhodné by bolo zaznamenávať lokálne IP adresy, ktoré sa snažia pristupovať na P2P siete a boli zablokované. To by nám pomohlo vyriešiť problémy pri nesprávnom určení protokola(false positives). V budúcnosti by som si vybral lepší hardvér a použil sieťové karty, ktoré majú menšiu záťaž na procesor. Používatelia internetu sa budú snažiť vyhnúť detekcii a blokovaniu zapnutím šifrovania. Vyvinúť taký nástroj, ktorý to dokáže detekovať a blokovať v reálnom čase môže byť tiež pokračovaním tejto či podobnej práce. 24

Literatúra [1] Shen, X., Yu, H., Buford, J., Akon, M. : Handbook of Peer-to-Peer Networking. Springer, New York, 2009, ISBN 978-0-387-09750-3, s.117-124 [2] viac autorov, P2P Networks: Napster [online]. [citované 3.4.2010]. Dostupné z WWW: http://ntrg.cs.tcd.ie/undergrad/4ba2.02-03/p4.html [3] viac autorov, BitTorrent (protocol) [online]. 24.4.2010 [citované 26.4.2010]. Dostupné z WWW: http://en.wikipedia.org/wiki/bittorrent_(protocol) [4] viac autorov, Direct Connect [online]. 29.04.2010 [citované 1.5.2010]. Dostupné z WWW: http://en.wikipedia.org/wiki/direct_connect_(file_sharing) [5] FastTrack [online]. 25.4.2010 [citované 26.4.2010]. Dostupné z WWW: http://en.wikipedia.org/wiki/fasttrack [6] OSI model [online]. 31.3.2010 [citované 27.4.2010]. Dostupné z WWW: http://sk.wikipedia.org/wiki/osi_model [7] Port numbers [online]. 30.4.2010 [citované 1.5.2010]. Dostupné z WWW: http://www.iana.org/assignments/port-numbers [8] NetFlow [online]. 27.4.2010 [citované 1.5.2010]. Dostupné z WWW: http://en.wikipedia.org/wiki/netflow [9] Kim, Myung-Sup, Kang, Hun-Jeong a Hong, J. W.: Towards Peer-to-Peer Traffic Analysis Using Flows. Self-Managing Distributed Systems. Berlin : Springer, 2003 [10] Direct Connect Protocol Documentation [online]. 29.11.2003 [citované 2.5.2010]. Dostupné z WWW: http://www.teamfair.info/dc-protocol.htm [11] Netfilter/iptables projetct homepage [online]. [citované 27.4.2010]. Dostupné z WWW: 25

http://www.netfilter.org/ [12] L7-filter Classifier [online]. 7.12.2006 [citované 27.4.2010]. Dostupné z WWW: http://l7-filter.sourceforge.net/readme [13] Mendel, F., Rijmen, V.: Cryptanalysis of the Tiger Hash Function. Springer Berlin, Heidelberg, 2007, ISBN 978-3-540-76899-9, s. 536 550. [14] Man page of Iptables [online]. 3.7.2008 [citované 1.5.2010]. Dostupné z WWW: http://ipset.netfilter.org/iptables.man.html [15] Keller, A.: Kernel Space - User Space Interfaces[online]. Jul 2008, dostupné z WWW: http://people.ee.ethz.ch/~arkeller/linux/kernel_user_space_howto.html [16] Tomato Firmware [online]. Dostupné z WWW: http://www.polarcloud.com/tomato [17] Netfilter Connmark [online]. [citované 27.4.]. Dostupné z WWW: http://home.regit.org/?page_id=7 [18] Wireshark [online]. [citované 1.5.2010]. Dostupné z WWW: http://www.wireshark.org/ [19] Tcpreplay [online]. [citované 1.5.2010]. Dostupné z WWW: http://tcpreplay.synfin.net/ [20] Htop [online]. [citované 1.5.2010]. Dostupné z WWW: http://htop.sourceforge.net/ [21] Rrdtool [online]. 12.9.2009 [citované 1.5.2010]. Dostupné z WWW: http://oss.oetiker.ch/rrdtool/ [22] Iptotal [online]. [citované 1.5.2010]. Dostupné z WWW: 26

http://freshmeat.net/projects/iptotal/ [23] Kozák, M.: IPP2P kladivo na stahovače [online]. 25.7.2006, dostupné z WWW: http://www.linuxexpres.cz/praxe/ipp2p-kladivo-na-stahovace [24] Patch [online]. Dostupné z WWW: http://en.wikipedia.org/wiki/patch_(unix) [25] Sen, S., Spatscheck, O., Wang, D.: Accurate, Scalable InNetwork Identication of P2P Trafc Using Application Signatures [online]. Dostupné z WWW: http://www2.research.att.com/~sen/pub/sen_p2p_www04.pdf [26] Mikrotik Routers and Wireless [online]. Dostupné z WWW: http://www.mikrotik.com/ 27

Zoznam príloh Príloha 1. CD médium 28