IP filtr a detektor útoků

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

Instalace. Samotný firewall již je s největší pravděpodobností nainstalovaný Zjistíme dle parametru při použití. aptitude search iptables

Firewall, mac filtering, address filtering, port forwarding, dmz. Ondřej Vojtíšek, Jakub Niedermertl

Osobní firewall s iptables

PB169 Operační systémy a sítě

FIREWALL - IPTABLES. 1. Co je to firewall 2. IPTABLES 3. Manuálové stránky 4. Nastavení směrovače 5. Příklady. 1. Co je to firewall?

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

metodický list č. 1 Internet protokol, návaznost na nižší vrstvy, směrování

Firewal ing v Linuxe

Zabezpečení v síti IP

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

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

Zjednodusene zaklady prace s IPTABLES Jiri Kubina jiri.kubina@osu.cz Ver. 1.1 zari 2006

Operační systémy 2. Firewally, NFS Přednáška číslo 7b

Téma 11: Firewall v CentOS. Nastavení firewallu

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

Y36SPS Bezpečnostní architektura PS

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.

Y36SPS Bezpečnostní architektura PS

Analýza protokolů rodiny TCP/IP, NAT

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

4. Síťová vrstva. Síťová vrstva. Počítačové sítě I. 1 (6) KST/IPS1. Studijní cíl. Představíme si funkci síťové vrstvy a jednotlivé protokoly.

Internet protokol, IP adresy, návaznost IP na nižší vrstvy

Identifikátor materiálu: ICT-3-03

Hot Standby Router Protocol (zajištění vysoké spolehlivosti výchozí brány)

ANALÝZA TCP/IP 2 ANALÝZA PROTOKOLŮ DHCP, ARP, ICMP A DNS

ZÁKLADNÍ ANALÝZA SÍTÍ TCP/IP

JAK ČÍST TUTO PREZENTACI

Access Control Lists (ACL)

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

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

Bezpečnost sítí, Firewally, Wifi. Ing. Pavel Píše

Y36PSI Protokolová rodina TCP/IP

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

3.17 Využívané síťové protokoly

Studentská unie ČVUT v Praze, klub Silicon Hill. 22. února Ondřej Caletka (SU ČVUT) IPv6 nové (ne)bezpečí? 22.

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

Site - Zapich. Varianta 1

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

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

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

Inovace výuky prostřednictvím ICT v SPŠ Zlín, CZ.1.07/1.5.00/ Vzdělávání v informačních a komunikačních technologií

1. Směrovače směrového protokolu směrovací tabulku 1.1 TTL

Propojování sítí,, aktivní prvky a jejich principy

Téma bakalářských a diplomových prací 2014/2015 řešených při

Počítačové sítě I LS 2004/2005 Návrh a konstrukce sítě zadání

X36PKO Úvod Protokolová rodina TCP/IP

VPN - Virtual private networks

Obsah PODĚKOVÁNÍ...11

Počítačové sítě Systém pro přenos souborů protokol FTP

Počítačové sítě II. 15. Internet protokol verze 6 Miroslav Spousta, 2006

Inovace bakalářského studijního oboru Aplikovaná chemie

POČÍTAČOVÉ SÍTĚ Metodický list č. 1

KLASICKÝ MAN-IN-THE-MIDDLE

Inovace bakalářského studijního oboru Aplikovaná chemie

Analýza aplikačních protokolů

Počítačové sítě Transportní vrstva. Transportní vrstva

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í

6. Transportní vrstva

TÉMATICKÝ OKRUH Počítače, sítě a operační systémy

CCNA I. 3. Connecting to the Network. CCNA I.: 3. Connecting to the network

Úvod do analýzy. Ústav informatiky, FPF SU Opava Poslední aktualizace: 8. prosince 2013

Protokol TELNET. Schéma funkčních modulů komunikace protokolem TELNET. Telnet klient. login shell. Telnet server TCP/IP.

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

GRE tunel APLIKA ˇ CNÍ P ˇ RÍRU ˇ CKA

Konfigurace DHCP serveru a překladu adres na směrovačích Cisco

Konfigurace síťových stanic

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

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

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

Relační vrstva SMB-Síťový komunikační protokol aplikační vrstvy, který slouží ke sdílenému přístupu k souborům, tiskárnám, sériovým portům.

Vlastnosti podporované transportním protokolem TCP:

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

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

Zásobník protokolů TCP/IP

Fakulta elektrotechniky a informatiky Vysoká škola báňská - Technická univerzita Ostrava. Cvičení 5 POČÍTAČOVÁ OBRANA A ÚTOK - POU

Y36PSI QoS Jiří Smítka. Jan Kubr - 8_rizeni_toku Jan Kubr 1/23

Obsah. Úvod 13. Věnování 11 Poděkování 11

POLICEJNÍ AKADEMIE ČESKÉ REPUBLIKY FAKULTA BEZPEČNOSTNÍHO MANAGEMENTU. DMZ z pohledu akademické sféry

Počítačové sítě II. 12. IP: pomocné protokoly (ICMP, ARP, DHCP) Miroslav Spousta,

MODELY POČÍTAČOVÝCH SÍTÍ

Architektura TCP/IP je v současnosti

Inovace výuky prostřednictvím šablon pro SŠ

Možnosti IPv6 NAT. Lukáš Krupčík, Martin Hruška KRU0052, HRU0079. Konfigurace... 3 Statické NAT-PT Ověření zapojení... 7

12. Bezpečnost počítačových sítí

Útoky DoS a DDoS. Přehled napadení. Projektování distribuovaných systémů Ing. Jiří ledvina, CSc. Lokální útoky. Vzdálené útoky

Semestrální projekt do předmětu SPS

Průmyslový Ethernet. Martin Löw

Standardizace Internetu (1)

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

Použití programu WinProxy

Počítačové sítě. Miloš Hrdý. 21. října 2007

Telekomunikační sítě Protokolové modely

Ověření možností generování provozu na platformě MikroTik + srovnání s Cisco a Open Source řešeními

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

Počítačové sítě. Počítačová síť. VYT Počítačové sítě

Inovace bakalářského studijního oboru Aplikovaná chemie

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

Síťová vrstva. RNDr. Ing. Vladimir Smotlacha, Ph.D.

íta ové sít TCP/IP Protocol Family de facto Request for Comments

Transkript:

České vysoké učení technické v Praze Fakulta elektrotechnická Bakalářská práce IP filtr a detektor útoků Petr Milanov Vedoucí práce: doc. Ing. Jan Janeček, CSc. Studijní program: Elektrotechnika a informatika strukturovaný bakalářský Obor: Výpočetní technika červen 2006

- ii -

Poděkování Mé poděkování patří panu doc. Ing. Janu Janečkovi, CSc. za jeho čas a rady, které mi po dobu řešení této práce věnoval. - iii -

- iv -

Prohlášení Prohlašuji, že jsem svou bakalářskou práci vypracoval samostatně a použil jsem pouze podklady uvedené v přiloženém seznamu. Nemám závažný důvod proti užití tohoto školního díla ve smyslu 60 Zákona č. 121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o změně některých zákonů (autorský zákon). V Mnichově Hradišti dne 26. června 2006 Petr Milanov - v -

- vi -

Abstract The aim of this work is designing a new packet filtering and intrusion detection system. Firstly, there is a description of the function of firewall and its basics types. It is followed by the description of some methods, which are used for attacking the end-station connected to the network or the network itself. Furthermore, it is focused on some of the packet filtering systems that are already in use. Finally, it describes the proposal of a new system. Abstrakt Cílem této práce je návrh systému filtrace síťového provozu a detekce útoků. Nejprve je popsána činnost firewallu a jeho základní typy. Následuje popis některých metod používaných k napadení koncové stanice zapojené v síti či sítě samotné. Dále jsou uvedeny příklady již existujících systémů síťové filtrace a jejich popis. Nakonec práce popisuje návrh systému nového. - vii -

- viii -

Obsah 1. Úvod 1 Filtrování síťového provozu... 2 Paketový filtr... 3 Aplikační brána (application gateway)... 4 Stavový paketový filtr... 4 Stavový paketový filtr s kontrolou protokolů a IDS... 6 2. Metody útoků na koncovou stanici či lokální síť 8 ARP spoofing... 8 Denial-of-service attack... 10 Útoky, které využívají chyb v implementaci TCP/IP... 10 Ping of Death... 10 Teardrop attack... 11 Útoky, které využívají nedokonalostí a nedostatků ve specifikaci TCP/IP... 11 SYN attack... 11 Land attack... 12 Útoky hrubou silou... 13 Smurf útok... 13 UDP Flood... 13 Distributed Denial-of-Service attack (DDoS)... 13 Distributed reflected denial of service... 14 3. Popis již existujících systémů používaných k filtraci síťového provozu 15 Netfilter a IP Tables... 15 IP Tables... 17 Pravidla používaná pro filtraci síťového provozu... 20 Statická (bezestavová) filtrace... 20 Stavová (dynamická) filtrace... 20 Použití IP Tables... 23 Tabulky a řetězce pravidel... 23 Základní akce podporované systémem... 24 IP část pravidla... 24 Rozšíření pravidel (extensions)... 25 IPFW... 29 Sada pravidel IPFW... 30 Syntaxe pravidel IPFW... 31 Konfigurace IPFW... 31 IPF (ipfilter)... 33 4. Návrh systému síťové filtrace 36 Systém odchytávání paketů... 36 Pravidla... 37 Základní způsob činnosti systému... 45 Formát paketu a příklad datové struktury vhodné pro jeho uložení... 46 Shrnutí činnosti systému... 49 - ix -

5. Závěr 50 Seznam literatury a zdrojů 51 Příloha 53 A) Příkazy, specifikace pravidel a rozšíření iptables... 53 B) Obsah přiloženého CD... 58 - x -

Seznam obrázků Obr. 1 Umístění paketového filtru (stavový i bezestavový) 3 Obr. 2 Umístění aplikačního filtru (příklad pro Telnet relaci) 4 Obr. 3 Znázornění oblasti činnosti jednotlivých kategorií firewallů (vztaženo k TCP/IP modelu) 5 Obr. 4 Znázornění oblasti činnosti jednotlivých kategorií firewallů (vztaženo k typickým parametrům) 6 Obr. 5 Ukázka Ethernetového rámce (Ethernet type II) 8 Obr. 6 Schéma odposlechu komunikace mezi dvěma stanicemi v síti Ethernet 9 Obr. 7 Navázání TCP spojení (three-way handshake) 11 Obr. 8 Zneužití procesu navázání TCP spojení při DoS typu SYN attack (SYN flood) 12 Obr. 9 Ukázka DDoS útoku (ICMP flood) 14 Obr. 10 Cesta paketu TCP/IP stackem 16 Obr. 11 Cesta paketu filtrovacím kódem implementace ipchains 18 Obr. 12 Cesta paketu filtrovacím kódem implementace iptables 18 Obr. 13 Cesta paketu filtrovacím kódem implementace iptables 19 Obr. 14 Znázornění způsobu vyhodnocování pravidel při využití stavové filtrace 22 Obr. 15 Rozhodovací strom, kterým prochází pakety při využití stavové filtrace 22 Obr. 16 Průběh vyhodnocování pravidel (příklad obrany před SYN flood) 23 Obr. 17 Struktura systému IPFW 30 Obr. 18 Průchod paketu systémem IPF 34 Obr. 19 Schéma systému odchytávání paketů (dvě kotvy pro zachytávání procházejících paketů FILTER_IN a FILTER_OUT) 36 Obr. 20 Umístění paketového filtru (firewallu) v systému 37 Obr. 21 Příklad rozhodovacího stromu 38 Obr. 22 Rozhodovacího stromu 41 Obr. 23 Struktura paketu (obecně a konkrétněji pro Ethernet a protokoly TCP/IP) 46 Obr. 24 IP hlavička 47 Obr. 25 TCP hlavička 47 Obr. 26 UDP hlavička 47 Obr. 27 Ethernetová hlavička (Ethernet 2 DIX) 48 - xi -

- xii -

1. Úvod První myšlenky o vybudování počítačové sítě se objevily již na počátku šedesátých let dvacátého století v USA. Tehdy, v době studené války, se mělo jednat o síť propojující nejdůležitější vojenské, vládní a akademické počítače, schopnou přežít i jaderný útok. Tyto myšlenky začaly být postupně realizovány na konci šedesátých let. Na podzim roku 1969 byly zprovozněny první čtyři uzly sítě ARPANET (všechny čtyři uzly byly umístěny na amerických univerzitách). V roce 1971 se velikost sítě ARPANET rozrostla na 15 uzlů, v roce 1972 bylo propojeno již 37 počítačů. K prvnímu rozšíření sítě za hranice amerického kontinentu došlo roku 1973, kdy byla připojena University College of London a Royal Radar Establishment. V roce 1974 byla zveřejněna první specifikace protokolů TCP/IP, k nimž se oficiálně přešlo v roce 1983. Období mezi lety 1983 a 1992 přineslo prudký rozvoj Internetu (z přibližně tisíce počítačů v roce 1983 na více než milion počítačů v roce 1992). Na začátku tohoto období se přenosové kapacity páteřních sítí pohybovaly na rychlostech okolo 56 kbit/s, ke konci pak dosahovaly rychlostí kolem 50 Mbit/s. Začátek devadesátých let přinesl první hypertextový dokument, čímž byl položen základ dnes nejpoužívanější služby Internetu. Prudký nárůst obliby WWW se datuje k září 1993, kdy byla uvedena první funkční verze velmi populárního prohlížeče NCSA Mosaic. Vstup komerčních organizací roku 1993 se stal definitivním zlomovým momentem v rozšíření Internetu. Počet uživatelů Internetu každým rokem mnohonásobně rostl, až se Internet stal, prakticky po celém světě, každodenní součástí života. Celosvětový rozvoj Internetu však přináší i problémy. Jednak to jsou problémy související s vysokou zátěží sítě, jednak dále problémy bezpečnostní. Z původně malé akademické sítě se totiž stala celosvětová síť, ke které mají přístup úplně všichni. Pod pojmem počítačová bezpečnost lze chápat různé věci. Dá se však říci, že počítač je bezpečný, jestliže se můžeme spolehnout na chování počítače samotného a chování softwaru na něm provozovaného. Například můžeme požadovat to, že data do počítače vložená zůstanou uchována beze změn po celou požadovanou dobu. Dále může být vyžadováno, že tato data nebudou čtena nepovolanými uživateli. Systému, který zajistí, že naše požadavky budou splněny, můžeme tzv. důvěřovat. K zajištění bezpečnosti počítačové sítě (popř. bezpečnosti koncové stanice) se může použít tzv. firewall. Firewall umožňuje kontrolovat a řídit síťový provoz (množství a typ) mezi - 1 -

interní (např. podnikovou) a externí (veřejnou) sítí, popřípadě provoz mezi koncovou stanicí a ostatními stanicemi zapojenými v síti (připojené ať už k vnitřní nebo k vnější síti). Nejčastějším požadavkem bezpečnosti je zamezení síťového přístupu ke stanici nepovolaným osobám či regulace provozu určitých komunikačních protokolů. Filtrování síťového provozu K filtrování síťového provozu se používá tzv. firewall (síťový filtr). Firewall může být realizován softwarově (firewall code) nebo hardwarově (firewall machine). Jeho funkcí je aplikování bezpečnostní politiky na každý požadavek jím procházející. Jinými slovy zajišťuje bezpečnost koncové stanice v síti či odděluje jednu síť od druhé pomocí uplatňování stanovených bezpečnostních pravidel. Nejvíce se používá k oddělení lokální počítačové sítě (LAN) od Internetu a k zajištění bezpečnosti terminálové stanice. Funkce firewallu (resp. systému pracujícího se síťovou komunikací) lze využít v následujících oblastech: ochrana aplikací, služeb a stanic v rámci lokální sítě (LAN) před nevyžádaným provozem přicházejícím z veřejného Internetu omezení či zakázání přístupu stanic lokální sítě ke službám veřejného Internetu zajištění překladu síťových adres (NAT/NAPT) vyvažování zátěže (řízení toku dat jednotlivých aplikací či uživatelů, tzv. traffic shaping) Bezpečnostní politika aplikovaná firewallem je stanovena sadou pravidel. Způsob vytváření pravidel (řazení pravidel do seznamu) je závislý na implicitním naložení s procházejícími pakety (požadavky). První možností je implicitní zakázaní všech požadavků, které neodpovídají žádnému stanovenému pravidlu. Firewally používající tuto metodu se označují anglickým termínem inclusive firewalls. Druhý způsob naložení s požadavky (anglicky exclusive firewalls) je opakem prvního, a tudíž implicitně povoluje všechny nespecifikované požadavky. Pokud je pro daný požadavek, ať již u první nebo druhé metody, nalezeno pravidlo bezpečností politiky, je s ním naloženo předepsaným způsobem. Pravidlo může předepisovat povolení nebo zahození takovéhoto požadavku (paketu) či nějakou úplně jinou akci (například překlad síťové adresy nebo pouhé logování). Implicitní zákaz jinak neurčených požadavků je jistě bezpečnější metodou, avšak v určitých případech je nemožné dopředu stanovit (a povolit) všechny služby používané v rámci sítě. - 2 -

Bezpečnost terminálové stanice nebo sítě může být ještě zvýšena stavovým (dynamickým, stateful) aplikováním bezpečnostních pravidel. Pravidla mohou být přidávána, odebírána či upravována za chodu firewallu. Stavová paketová filtrace představuje již základní systém ochrany, kdy si firewall pamatuje stav spojení, například zda-li bylo spojení otevřeno z vnitřní sítě, a na základě tohoto umožní i opačně navázané spojení. Dále lze například stanovit limit na počet otevřených spojení, počet přenesených bytů a jiných dynamicky se měnících parametrů a na jejich základě upravovat bezpečnostní opatření. Podle způsobu činnosti se firewally dají rozdělit do několika kategorií. Jsou jimi paketové filtry, aplikační brány, stavové paketové filtry a stavové paketové filtry s kontrolou protokolů a IDS (Intrusion Detection Systém; systémy detekce útoků). Paketový filtr Nejstarším a nejjednodušším typem je paketový filtr (také nazývaný packet filtering router), který funguje nejčastěji v rámci třetí a čtvrté vrstvy OSI modelu. Na základě nastavených pravidel povoluje nebo zakazuje průchod paketů mezi dvěma síťovými rozhraními či mezi síťovým rozhraním a rozhraním síťových protokolů v jádře operačního systému (nejčastěji TCP/IP protocol stack). Výhodou tohoto typu firewallu, která je dána způsobem činnosti filtru a jednoduchostí používaných pravidel, je vysoká rychlost zpracování. Naopak nevýhodou je nízká úroveň kontroly procházejících paketů (spojení) a nemožnost autentizace na úrovni jiné než jen podle parametrů směrovaného protokolu (IP, IPX, AppleTalk, ) či parametrů protokolů transportní vrstvy (TCP, UDP, SCTP). Umístění paketového filtru v systému znázorňuje obr. 1. Příkladem paketového filtru mohou být tzv. ACL (Access Control List), používané směrovači (routery) společnosti Cisco Systems. Obr. 1 Umístění paketového filtru (stavový i bezestavový) - 3 -

Aplikační brána (application gateway) Dalším používaným typem firewallu je aplikační brána, které se říká také proxy firewall. Na rozdíl od paketových filtrů slouží aplikační brána k oddělení sítí, mezi které je postavena a funguje již i na vyšších vrstvách OSI modelu (na aplikační vrstvě). Veškerá komunikace přes bránu probíhá formou dvou spojení první je mezi iniciátorem a aplikační bránou (proxy), druhé mezi bránou a cílem. Tímto zastupováním iniciátora spojení bránou dochází automaticky k překladu síťových adres (NAT) zdrojová adresa paketů vyslaných iniciátorem je nahrazena adresou brány a v opačném směru je tomu naopak, tj. adresa brány (v tomto případě se jedná o cílovou adresu) je nahrazena adresou iniciátora. Výhodou aplikační brány je možnost výrazně vyšší kontroly než při použití pouze paketového filtru. Na aplikační vrstvě totiž lze kontrolovat i obsah (data) procházející paketů (zejména u dobře známých komunikačních protokolů). Dále aplikační brána umožňuje autentizaci na úrovni uživatelů. Nevýhodou hlubší analýzy obsahu procházejících paketů je vyšší zpoždění (latence), ke kterému dochází při zpracování bránou. Dále v důsledku její činnosti dochází ke ztrátě přímého spojení mezi komunikujícími uzly (iniciátorem a skutečným cílem). Tato skutečnost může v některých situacích vést k nutnosti speciální úpravy používané síťové aplikace. Uživatelé přistupují ke službám prostřednictvím těchto proxy serverů transparentně, popř. pomocí upravených klientů. Představitelem tohoto typu firewallu je například Gauntlet společnosti TIS, později zakoupený společností NAI. Obr. 2 Umístění aplikačního filtru (příklad pro Telnet relaci) Stavový paketový filtr Tento typ firewallu provádí kontrolu stejně jako základní (obyčejný) paketový filtr, navíc však přidává možnost stavové filtrace. Společně s definovanými (statickými) pravidly si udržuje informace o stavu spojení (např. směr navázání spojení, doba spojení, apod.). Dále si firewall dynamicky udržuje hodnoty nejrůznějších pomocných čítačů (například celkový počet navázaných spojení). Platnost pravidla může být ovlivněna i aktuálním časem či dnem v týdnu. Všechny tyto informace pak mohou být během rozhodovacího procesu použity. Výhodou udržovaní informací o stavu spojení je urychlení rychlosti zpracování. Pokud procházející paket patří k již známému spojení, může být o jeho osudu rozhodnuto ihned, tj. - 4 -

bez nutnosti jeho testování proti seznamu pravidel. Další výhodou je snazší možnost tvorby pravidel. V pravidlech lze uvádět pouze směr navázání spojení a firewall bude samostatně schopen povolit i odpovědní pakety a u známých protokolů i otevření nového komunikačního kanálu (nového spojení). Příkladem využití této schopnosti může být tvorba pravidel pro protokol FTP (File Transfer Protocol). Protože se jedná o známý protokol, stačí nastavit pravidlo povolující klientovi připojení na server pomocí FTP. Firewall sám povolí navázání řídícího spojení z klienta na port 21 serveru, odpovědi serveru klientovi (na jeho použitý port) a při požadavku na přenos dat pak povolí i otevření a provoz nového spojení (z portu 20 serveru na klientův port). Velkým vylepšením je i možnost vytváření tzv. virtuálního stavu spojení pro bezestavové protokoly (jako např. UDP a ICMP). Stavové paketové filtry tedy poskytují poměrně vysokou úroveň bezpečnosti při zachování vysoké rychlosti jejich činnosti. Jejich konfigurace je ve srovnání s aplikačními branami mnohonásobně snazší. Nevýhodou je ale obecně nižší bezpečnost, než kterou poskytují aplikační brány. Do této kategorie firewallů patří například iptables (Linux) a ipfw (BSD). Obr. 3 a 4 znázorňují oblasti, ve kterých firewally jednotlivých kategorií pracují. První je vztažen zhruba k vrstvám TCP/IP síťového modelu, druhý mapuje činnost na typické parametry. Obr. 3 Znázornění oblasti činnosti jednotlivých kategorií firewallů (vztaženo k TCP/IP modelu) - 5 -

Obr. 4 Znázornění oblasti činnosti jednotlivých kategorií firewallů (vztaženo k typickým parametrům) Stavový paketový filtr s kontrolou protokolů a IDS Moderní stavové paketové filtry jsou rozšířeny o další funkce, které zajišťují ještě vyšší míru bezpečnosti. Kromě informací a stavu spojení a schopnosti dynamického otevírání portů implementují tzv. Deep Inspection či Application Intelligence (jedná se o marketingové pojmy různých společností). Tyto firewally jsou schopny kontrolovat procházející spojení až na úroveň korektnosti procházejících dat známých protokolů i aplikací. Příkladem této činnosti může být kontrola spojení HTTP protokolu. Firewall při analýze paketů tohoto spojení například může zjistit, že se nejedná o požadavek na WWW server, ale dochází k tunelování jiného protokolu. Toto často využívají klienti P2P sítí (ICQ, gnutella, napster, apod.), které tímto skrývají svou pravou identitu například z důvodu nastavené FUP (Fair User Policy) nebo jejich úplného blokování. Dále se při analýze paketu může zjistit, že například data v hlavičce e-mailu nesplňují požadavky RFC apod. Na základě těchto poznatků se může provést příslušná akce, kterou je většinou blokace takovéhoto spojení (zahazování paketů náležících spojení). Dále se do těchto systémů integrují tzv. in-line IDS (Intrusion Detection Systems systémy detekce útoků). Tyto systémy pracují podobně jako antiviry a pomocí databáze signatur a heuristické analýzy jsou schopny odhalit vzorce útoků i ve zdánlivě nesouvisejících pokusech o spojení, např. skenování adresního rozsahu, rozsahu portů, známé signatury útoků uvnitř povolených spojení apod. Výhodou firewallů této kategorie je zajištění vysoké úrovně bezpečnosti při relativně snadné konfiguraci. Na druhé straně hlubší analýza procházejících paketů způsobuje významné - 6 -

zpomalení (zhruba o třetinu až polovinu) proti stavovým paketovým filtrům. Oproti aplikačním branám je ale rychlost činnosti stále poměrně vysoká. Další nevýhoda spočívá v komplexitě celého systému. Základním pravidlem bezpečnosti je totiž udržovat bezpečnostní systémy co nejjednodušší a nejmenší. Tyto typy firewallů integrují obrovské množství funkcionality a zvyšují tak pravděpodobnost, že v některé části jejich kódu bude zneužitelná chyba, která povede ke kompromitování celého systému. Představitelem této kategorie je například Check Point FireWall-1. Podobná funkcionalita je k dispozici ve formě experimentálních modulů také pro iptables v linuxovém jádře. - 7 -

2. Metody útoků na koncovou stanici či lokální síť Mezi metody používané síťovými útočníky k napadení jedné stanice či celé počítačové sítě patří ARP spoofing a útoky odepření služby (denial-of-service, DoS). Následující odstavce vysvětlují a udávají příklady použití těchto dvou metod útoků. ARP spoofing Jednou z metod používanou útočníky k převzetí kontroly nad síťovou komunikací nějaké stanice v lokální síti je ARP spoofing (zvaný též ARP poisoning). Tato metoda se využívá k útokům v sítích postavených na technologii Ethernet. V síti Ethernet se pro správnou adresaci zpráv komunikujících stanic používají tzv. MAC adresy (Media Access Control address). Tyto adresy mají 48 bitů a jsou umístěné na daném místě Ethernetové hlavičky (zapouzdření na linkové vrstvě). Příklad Ethernetového rámce ukazuje následující obrázek: Obr. 5 Ukázka Ethernetového rámce (Ethernet type II) (zdroj: http://en.wikipedia.org/wiki/ethernet) K adresaci zpráv komunikujících stanic v rámci sítě postavené na protokolech TCP/IP se používají IP adresy. Proto pro zajištění síťové komunikace mezi dvěma stanicemi používajícími síťové protokoly rodiny TCP/IP a sídlícími v síti založené na technologii Ethernet je nutné znát mapování IP adresy na MAC adresu. Toto mapování může být nastaveno administrátorem sítě staticky, tj. staticky se udržuje překladová tabulka IP adresy na MAC adresu, nebo se toto párování zjišťuje dynamicky pomocí protokolu ARP (Address Resolution Protocol). Staticky udržovaná překladová tabulka IP-MAC není náchylná k útokům založených na ARP spoofingu, ale její vytvoření a údržba je ve větších sítích velmi náročná. Takovéhoto řešení je navíc nereálné v sítích s měnícím se počtem stanic, kde se IP adresy přidělují dynamicky například pomocí DHCP protokolu. - 8 -

ARP spoofing se nejčastěji používá k převzetí (odposlechu) síťové komunikace (man-in-themiddle attack). Dále může být použit k DoS (Denial of Service) útokům. Jeho podstata spočívá v úmyslném podvržení nesprávné MAC adresy k IP adrese při vytváření (údržbě) mapovací tabulky. Útok je založen na používání tzv. gratuitous ARP paketů ( bezdůvodných ARP paketů). Jedná se o pakety, kterými stanice oznamuje vazbu mezi IP a MAC adresou (ARP Reply), aniž by obdržela požadavek na vyslání takové informace (ARP Request). Stanice většinou gratuitous ARP přijme a informace z něj si zapíše do ARP cache a používá je (mezi různými OS existují drobné rozdíly). Útočník může například pomocí gratuitous ARP podstrčit stanicím svou MAC adresu místo MAC adresy síťové brány. Stanice pak posílají data do jiných sítí přes počítač útočníka, který je odposlouchává. Počítač útočníka pak funguje jako směrovač rámců, kdy odposlouchávané rámce přeposílá bráně. Takto může být odposlechnuto například uživatelovo heslo. Schéma takovéto komunikace ukazuje následující obrázek: Obr. 6 Schéma odposlechu komunikace mezi dvěma stanicemi v síti Ethernet Pokud by útočník dále nepřeposílal rámce skutečnému cíli, popř. by podvrhnul neexistující MAC adresu či MAC adresu jiné stanice, vedl by takovýto útok k odepření služby (DoS) legitimnímu uživateli napadené stanice. Obranu proti ARP spoofingu mohou poskytovat samotná zařízení zajišťující síťovou komunikaci přepínače (switch). Jedná se o tzv. Dynamic ARP Inspection (DAI), kdy přepínač pro každý ARP paket zjišťuje, zda údaje v něm obsažené (IP a MAC adresa) odpovídají skutečnosti. Jinou možností je statické mapování IP na MAC adresu pro klíčové hosty (například bránu). Dále je možné zvýšit bezpečnost udržováním vlastní ARP cache firewallem. Záznam v této paměti IP-MAC parů by byl použit pro porovnání s údaji v příchozí ARP odpovědi. Případná neshoda těchto údajů by vyvolala provedení definované akce (upozornění na možné narušení bezpečnosti či zahození takovéto potenciálně podvržené ARP odpovědi). - 9 -

Denial-of-service attack Denial-of-service (DoS; odepření služby ) attack je typ útoku na počítačovou stanici připojenou do sítě či na síť samotnou, jehož cílem je zamezení používaní služeb takto napadené stanice či ztráta dostupnosti celé sítě řádnými uživateli. Tyto problémy jsou většinou způsobeny nadměrným přetěžováním napadené stanice (přetěžování výpočetních a paměťových zdrojů) nebo celé sítě (nadměrné zatěžování dostupné šířky pásma). DoS útoky mohou být spáchány více způsoby. Základní metody udává následující přehled: vyplýtvání výpočetních zdrojů (čas CPU, diskový prostor, šířka přenosového pásma) narušení konfigurace (například směrovacích informací) vyřazení z provozu určité síťové komponenty V některých případech nemusí být primárním cílem DoS útoku zhavarování napadeného systému, ale DoS útok je použit hackerem pouze jako doplňková akce sloužící například k zametení stop, restartování vzdáleného počítače apod. Podle způsobu provedení lze DoS útoky obecně rozdělit do tří skupin: útoky, využívající chyb v implementaci TCP/IP (Ping of Death, Teardrops Attacks) útoky využívající nedokonalostí a nedostatků ve specifikaci TCP/IP (SYN attack, Land attack) útoky hrubou silou (Smurf attack) Útoky, které využívají chyb v implementaci TCP/IP Ping of Death Příkaz (utilita) ping se běžně používá pro zjištění toho, zda vzdálený systém pracuje. Hacker použije příkaz ping pro vytvoření IP paketu, který je větší než maximum povolené ve specifikaci IP protokolu (65 536 bajtů). Tento abnormálně velký paket je pak poslán do cizí sítě, čímž může způsobit havárii, zamrznutí nebo restart celého systému. Tento útok je poměrně starý a všichni výrobci operačních systémů poskytují opravy, záplaty, které si s tímto typem útoku poradí. - 10 -

Teardrop attack Teardrop attack je novější typ útoku, který využívá slabosti při opětovném sestavování fragmentů IP paketu. Během své cesty po síti může být IP datagram rozdělen na menší části. Každá část vypadá jako původní IP paket až na to, že obsahuje položku offset, která udává pozici fragmentu vůči původnímu paketu (například udává, že daný fragment nese bajty 600 až 800 původního IP paketu). Teardrop program vytváří sérii IP fragmentů s překrývajícími se položkami offsetů. V důsledku toho pak během opětovného sestavování fragmentů na cílovém počítači některé systémy zhavarují, zamrznou nebo se restartují. Útoky, které využívají nedokonalostí a nedostatků ve specifikaci TCP/IP SYN attack Tento útok využívá způsobu, kterým se pomocí protokolu TCP navazuje spojení. Proces navazování spojení se označuje jako tzv. "třífázový handshake" (three-way handshake). Aplikace, jež požaduje navázání spojení (inicializuje session) posílá příjemci synchronizační paket SYN. Příjemce posílá zpátky potvrzovací paket SYN-ACK, na který iniciátor odpovídá potvrzovacím paketem ACK. Po takovémto navázání komunikace jsou aplikace připraveny posílat a přijímat data. Uvedený postup navázání spojení a možnosti zneužití tohoto procesu znázorňují následující obrázky: Obr. 7 Navázání TCP spojení (three-way handshake) (zdroj: http://bob.marlboro.edu/~msie/2004/it/graphics/handshake.png) - 11 -

Obr. 8 Zneužití procesu navázání TCP spojení při DoS typu SYN attack (SYN flood) (zdroj: http://www.texascollaborative.org/smithmodule01/images/syn-flood.jpg) Při SYN útoku zaplavuje hacker cílový systém sérií TCP SYN paketů. Každý paket způsobuje to, že cílový systém pošle odpověď SYN ACK. Zatímco cílový systém čeká na ACK, které následuje za SYN-ACK, zařadí všechny nevyřízené SYN-ACK odpovědi do fronty (tzv. backlog queue). Tato fronta má omezenou délku, obvykle docela malou. Jakmile je fronta plná, systém začne ignorovat všechny příchozí SYN požadavky. Pakety SYN-ACK jsou vyřazeny z fronty pouze tehdy, když přijde zpět ACK nebo když interní časovač (který je nastaven na relativně dlouhé intervaly) ukončí celý proces navazování komunikace. Celý útok je vylepšen tím, že v záhlaví příchozích SYN paketů je uvedena špatná nebo neplatná IP adresa. Všechny odpovědi SYN-ACK jsou posílány na tuto adresu, což zaručuje, že odpověď na SYN-ACK nikdy zpátky nepřijde. Tak se vytvoří fronta objednávek, která je vždycky plná, což téměř znemožní legitimním TCP SYN požadavkům dostat se do systému. Land attack Jednoduchý hybrid SYN útoku - hackeři zaplaví síť SYN pakety do sítě s předstíranou (zfalšovanou) zdrojovou IP adresou. Většina výrobců OS poskytuje opravy řešící tento problém. Jiným způsobem, jak ochránit síť před Land útokem je mít firewall, který odfiltruje všechny příchozí pakety s neplatnými IP adresami. Například pakety, které přicházejí do systému se zdrojovou IP adresou, která je identifikuje jako generované z interního systému, jsou zřejmě špatné. Filtrování takovýchto paketů výrazně neutralizuje vystavení sítě tomuto typu útoku. - 12 -

Útoky hrubou silou Smurf útok Jedná se o útok hrubou silou zaměřený na vlastnost v IP specifikaci, která je známá jako všeobecné adresování (direct broadcast addressing). Hacker zaplaví router speciálními pakety tzv. pingy. Poněvadž cílové IP adresy každého paketu jsou broadcast adresou této sítě, router bude šířit tyto pingy všem počítačům sítě. Pokud je k síti připojeno mnoho stanic, dojde k velkému nárůstu zatížení sítě. Celý útok se dá znásobit ještě tím, že hacker zfalšuje zdrojovou IP adresu pingů a odpovědi na tyto pingy mohou zahltit síť, odkud pochází předstíraná zdrojová adresa. Napadená síť se pak stane pouze prostředníkem útoku. Obrana proti tomuto druhu útoku spočívá v tom, že se buď vypne (zakáže) broadcast adresování (za předpokladu, že to router dovoluje), nebo se mohou filtrovat pingy pomocí firewallu (či Access Control Listu) a tím omezit provoz ICMP echo paketů na malé procento z celkového provozu sítě. UDP Flood Při tomto typu útoku hacker spustí službu, která generuje sérii znaků pro každý přijatý paket. Dále využije UDP echo službu jiného systému, která také odpovídá na jakýkoliv přijatý znak a která vygenerované pakety přeposílá. Výsledkem je nonstop proud nesmyslných dat mezi dvěma systémy. Zabránit této UDP záplavě lze buď zakázáním všech UDP služeb na každém uzlu sítě nebo aktivováním firewallu, který odfiltruje všechny příchozí požadavky UDP služeb. Poněvadž UDP služby jsou navrženy pro interní diagnostikování, měl by stačit zákaz přístupu UDP služeb z vnějších sítí (Internetu). Úplný zákaz veškerého UDP provozu by mohl vést k odmítnutí i některých legitimních aplikací (například RealAudio), které používají UDP jako svůj transportní mechanismus. Distributed Denial-of-Service attack (DDoS) DDoD označuje distribuovanou variantu útoku odepření služby (DoS). Útok není veden pouze z jednoho počítače, jako u klasické varianty DoS, ale současně z více počítačů. Praktická realizace takovéhoto útoku nespočívá v tom, že by najednou útočilo více hackerů (každý ze své stanice). Ostatní útočící počítače jsou pod kontrolou (vzdáleně) jedné centrály, která útok vede. Takto ovládané počítače jsou označovány jako tzv. zoombie, protože na nich běží speciální programy (trojské koně), které umožňují jejich vzdálené ovládání. Tyto speciální programy běží na pozadí a bez vědomí řádného uživatele. Dá se tedy říci, že obětí tohoto útoku je nejen hromadně napadený systém, ale i předtím napadené a k útoku zneužité systémy. - 13 -

Ukázku jednoho z DDoS útoků ilustruje následující obrázek: Obr. 9 Ukázka DDoS útoku (ICMP flood) (zdroj: http://www.microsoft.com/mspress/books/sampchap/6429/0-7356-1877-4.gif) Distributed reflected denial of service Distributed reflected denial of service je typem DDoS útoků, který spočívá v odesílání falešných (upravených) požadavků určitého typu. Odpovědi na tyto požadavky následně způsobí zaplavení napadené sítě obrovským množstvím paketů. Příkladem může být útok, který spočívá v odeslání velkého množství DNS požadavků se zfalšovanou zdrojovou IP adresou více DNS serverům. Následné odpovědi jsou DNS servery posílány na podvrženou zdrojovou IP adresu a způsobí tak zahlcení napadené sítě. Toto zahlcení může způsobit kolaps napadeného systému (zahlcení sítě tj. vyčerpání dostupné šířky pásma, pád služby poskytované serverem či restartování tohoto serveru) a s tím spojenou nemožnost poskytovaní služeb legitimním uživatelům. - 14 -

3. Popis již existujících systémů používaných k filtraci síťového provozu Různé operační systémy poskytují odlišné nástroje pro filtraci síťového provozu, překlad síťových adres (NAT) a manipulaci s pakety. OS Linux od verze jádra 2.4 poskytuje ve svém jádře subsystém netfilter/iptables. Systémy založené na BSD používají většinou ipfilter (ipf), který může být součástí jádra nebo zaváděn jako modul. Systém FreeBSD poskytuje kromě ipf také ipfirewall (ipfw), který je, podobně jako ipf, součástí jádra nebo může být zaváděn jako modul. Netfilter a IP Tables S příchodem kernelu 2.4 došlo k uvedení nového nástroje pro správu filtrování paketů programu iptables. Tento program nahradil dřívější nástroj ipchains. Program ipchains sice velmi zlepšil správu a efektivitu filtrování paketů, ale způsob jeho činnosti byl zbytečně složitý (zejména při překladu síťových adres NAT) a jeho případné rozšíření o nové funkce bylo rovněž náročné. Funkce jako filtrování paketů, maškaráda a transparentní proxy byla nejen spravována jedním nástrojem, ale byla rovněž spojena i na úrovni implementace, což zvyšovalo možnost zavedení nechtěných chyb do filtrovacích pravidel při současném použití filtrování paketů a maškarády. Oddělení těchto funkcí v jádrech 2.4 a vyšších má za následek jednodušší používání nástroje iptables, vytvářená pravidla jsou průhlednější a méně náchylná k zavlečení nechtěných chyb při konfiguraci firewallu. Významnou změnou je rovněž možnost snadného rozšíření všech těchto nástrojů bez nutnosti následné rekompilace. Toto je zajištěno použitím sdílených knihoven. NAT, maškaráda, port forwarding a reverse NAT (load sharing) jsou spravovány pomocí nástroje ipnatctl. Oproti ipchains doznala architektura značných změn. Jejím základem je balík netfilter framework, který je součástí jádra. Pro cestu paketu TCP/IP stackem je definováno celkem pět bodů (kotviček, anglicky hook), ve kterých se mohou moduly jádra přihlásit k jeho odběru a stanovit, zda paket postoupí dál či zda bude zlikvidován. V každém bodě může být přihlášeno libovolné množství modulů a pakety, které nebyly dosud zlikvidovány, jsou předány postupně všem. Cestu paketu znázorňuje následující obrázek: - 15 -

Obr. 10 Cesta paketu TCP/IP stackem (zdroj: www.linux.cz) Celý systém filtrace paketů (netfilter framework) v Linuxu 2.4.x a 2.6.x vytváří převážně: netfilter, ip_tables, connection tracking (ip_conntrack, nf_conntrack) a subsystém zajišťující překlad síťových adres (NAT). Hlavní znaky systému filtrace paketů: bezestavové (statické, stateless) filtrování paketů (IPv4 a IPv6) stavové (dynamické, stateful) filtrování paketů (IPv4) všechny typy překladu síťových adres (NAT/NAPT) flexibilní a rozšířitelný návrh systému mnohovrstevné API velké množství pluginů" a rozšiřujících modulů Hlavní funkce systému filtrace paketů: provoz internetových firewallů založených na statické a dynamické filtraci použití NAT a maškarády za účelem sdílení připojení k internetu při nedostatečném počtu veřejných IP adres - 16 -

použití NAT k implementaci transparentní proxy podpora systémů tc a iproute2 pro vytvoření důmyslné QoS umožnění další manipulace s pakety (změna TOS/DSCP/ECN bitů v hlavičce IP rámce, atd.) IP Tables iptables je uživatelský konzolový program používaný ke konfiguraci filtrovacích pravidel protokolu IPv4 v operačním systému Linux 2.4.x a 2.6.x. Je rovněž používán pro konfiguraci překladu síťových adres (NAT). Součástí balíku je i modul ip6tables zajišťující podporu protokolu IPv6. Hlavní znaky iptables: uchování seznamu pravidel pro filtraci paketů umožnění přidání, odebrání a změny pravidel údržba čítačů přidružených k dílčím pravidlům Vlastní filtr paketů je implementován sadou modulů jádra, které je nutno zavést před vlastním vytvářením filtrovacích pravidel. Výhodou rozčlenění na více modulů různého druhu je možnost zavést pouze ty, které jsou potřebné. Dále je možné samotné iptables pomocí nových modulů rozšířit o nové funkce. Jako moduly lze přidávat cíle (oproti ipchains zde nejsou pouze základní cíle DENY, REJECT, ACCEPT a uživatelem vytvořené řetězce, ale lze přidávat libovolné další) a filtrovací pravidla. Aby tyto moduly byly spravovatelné pomocí nástroje iptables, je i tento nástroj navržen jako rozšiřitelný, a to pomocí dynamických knihoven. Každý netriviální modul, který vyžaduje předat nějaké parametry, má svůj doplněk v dynamické knihovně pro iptables. Vše je navrženo tak, aby implementace byla co nejjednodušší, a vše je kvalitně zdokumentováno. Cesta paketu filtrovacím kódem se liší od ipchains a poskytuje větší nezávislost na interfejsech. Klíčový rozdíl spočívá v odstranění funkce maškarády z jádra kódu a změně v umístění vstupního a výstupního řetězce. - 17 -

V předchozí implementaci (ipchains) byl vstupní řetězec (input chain) shodný pro všechny pakety bez ohledu na to, zda se jednalo o paket určený pro lokálního hosta či o paket směrovaný dále ke svému cíli. Podobně, výstupní řetězec (output chain) byl stejný pro všechny odchozí datagramy, tj. bez ohledu na to, zda byly generovány lokálním hostem či tímto hostem pouze dále směrovány. Cestu paketu filtrovacím kódem v této implementaci je možné znázornit následujícím obrázkem: Obr. 11 Cesta paketu filtrovacím kódem implementace ipchains (zdroj: www.faqs.org) V nové implementaci pomocí iptables je vstupní řetězec (input chain) určen pouze pro pakety cílené pro lokální stanici a forwardovací řetězec (forward chain) je určen pouze pro pakety směrované ke svému cíli (k jiné stanici). Výstupní řetězec (output chain) je určen pouze pro pakety generované lokálním hostem (stanicí). Cestu paketu filtrovacím kódem lze opět znázornit pomocí následujících dvou obrázků: Obr. 12 Cesta paketu filtrovacím kódem implementace iptables (zdroj: www.faqs.org) - 18 -

Obr. 13 Cesta paketu filtrovacím kódem implementace iptables (zdroj: www.linux.cz) Řetězec INPUT odpovídá bodu NF_IP_LOCAL_IN z obrázku 10 (cesta paketu TCP/IP stackem), řetězec FORWARD bodu NF_IP_FORWARD a řetězec OUTPUT bodu NF_IP_LOCAL_OUT. Výhodou oproti předchozím implementacím je, že paket procházející řetězcem FORWARD, ve kterém se v běžných případech bude odehrávat většina filtrování, ví, jak o vstupním, tak o výstupním rozhraní, neboť již bylo rozhodnuto o jeho směrování. iptables umožňují při konstrukci filtrovacího slova zohlednit stav socketu, ke kterému procházející paket patří tzv. stavové filtrování. Rozlišují se následující čtyři stavy: NEW jde o paket, který vytváří nový socket ESTABLISHED paket přiřaditelný k nějakému již probíhajícímu spojení RELATED paket, který se vztahuje k nějakému probíhajícímu spojení, ale není jeho součástí (např. ICMP zpráva o chybě) INVALID paket nepřiřaditelný k žádnému spojení, tyto pakety by měly být likvidovány iptables rovněž umožňují rozlišovat jednotlivé flagy v TCP hlavičce a podle nich pakety filtrovat. Dále lze filtrovat na základě TCP options nebo MAC adresy. Pomocí pravidla limit, které lze použít například k omezení logování v některém řetězci, lze nastavit maximální počet shod za sekundu a omezit tak přeplňování logu v řetězci, u kterého se očekává velký počet shod. - 19 -

Pravidla používaná pro filtraci síťového provozu Statická (bezestavová) filtrace Základním typem filtrace síťového provozu je statická filtrace. Řízení síťového provozu se děje na základě uživatelem specifikovaných pravidel. Každé pravidlo definuje hodnoty parametrů hlaviček podporovaných síťových protokolů (typicky protokol, zdrojovou a cílovou IP adresu, zdrojový a cílový port) a akci, která má být v případě aplikování pravidla provedena. Mezi nejčastější akce patří: povolení nebo zahození (zákaz) paketu překlad síťových adres (NAT popř. NAPT) logování Obecně se však může provádět i jakákoliv jiná akce. Vyskytnout se může i pravidlo s prázdnou (nedefinovanou) akcí. Toto má význam například tehdy, potřebujeme-li zjišťovat počet paketů (resp. počet bytů) vyhovujících danému pravidlu. Ke každému pravidlu je totiž přidružen čítač (uplatnění pravidla, celkového počtu bytů paketů vyhovujících danému pravidlu), který je při použití pravidla automaticky navyšován. Tímto způsobem můžeme například vytvořit statistiku provozu jednotlivých protokolů (TCP, UDP, SCTP, ). Stavová (dynamická) filtrace Více možností filtrování (řízení) síťového provozu přináší stavová filtrace. Jak již z názvu vyplývá, rozhodnutí o aplikování daného pravidla na paket závisí nejen na hodnotách parametrů záhlaví, ale i na určitém (aktuálním) stavu. Tímto stavem může být například počet již prošlých paketů daného typu, aktuální zátěž stanice pakety, počet otevřených spojení, aktuální čas a další. Samozřejmě se na rozhodnutí o použití pravidla může podílet více faktorů najednou. Využitím stavové filtrace se můžou pravidla (bezpečnostní politika) měnit za provozu a chování firewallu se může přizpůsobovat aktuální situaci. Příkladem použití může být vytvoření nového pravidla zakazující určitý datový provoz při překročení mezní hodnoty toku. Toto pravidlo může mít pouze dočasnou platnost a po opadnutí síťového provozu (uvolnění dostupné šířky pásma) je zrušeno. Stavové filtrace se dá využít k obraně před možnými DoS útoky. Například při SYN flood útoku je možné po překročení určité hodnoty současně otevřených spojení zakázat jakýkoliv další pokus o navázání TCP spojení (otevření TCP session). Přitom tato hodnota může být - 20 -

sledována jak absolutně (maximální počet současných TCP spojení), tak i relativně (počet nově otevřených TCP spojení za určitý časový interval). Pravidla definující chování systému jsou sdružena do seznamu (tabulky), přičemž pořadí jednotlivých záznamů je významné. Při definování politiky se často definují pravidla pro určitou skupinu paketů s nějakou společnou vlastností (například se zdrojovou adresou patřící do stejné sítě). Pokud má toto pravidlo platit pro všechny takovéto pakety kromě například jedné výjimky, přidá se do seznamu před pravidlo skupiny pravidlo nové, definující jiné naložení s tímto výjimečným paketem. Vzhledem k sekvenčnímu vyhodnocování pravidel by opačné pořadí nevedlo k očekávanému výsledku. Příklad na sekvenční zpracování pravidel: iptables -A INPUT -s 192.168.0.1 -j ACCEPT iptables -A INPUT -s 192.168.0.0/24 -j DROP povolí příchozí TCP pakety se zdrojovou adresou 192.168.0.1 zakáže ostatní příchozí TCP pakety se zdrojovou adresou ze sítě 192.168.0.0/24 iptables -A INPUT -s 192.168.0.0/24 -j DROP iptables -A INPUT -s 192.168.0.1 -j ACCEPT zakáže všechny příchozí TCP pakety se zdrojovou adresou ze sítě 192.168.0.0/24 ALE povolení stanice 192.168.0.1 se již neprojeví Sekvenční průchod pravidly může být ovlivněn (změněn) použitím stavové filtrace. Použití pravidla se může například vztahovat pouze k určitému časovému intervalu během dne. Jiný případ může určovat uplatnění pravidla až při překročení sledované hodnoty (např. překročení mezní hodnoty počtu prošlých paketů s danou zdrojovou adresou). Nasazení stavové filtrace tak může na základě aktuálního stavu měnit průchod pravidly. Sekvenční vyhodnocování pravidel může být samozřejmě ovlivněno i statickými parametry. Podmínkovou větvení je třeba typ protokolu (TCP/UPD) nebo určitý rozsah portů. Pravidla pak vytvářejí jakousi stromovou strukturu. Příklad využití stavové filtrace: iptables -A INPUT -m time --timestart 8:00 --timestop 18:00 --days Mon,Tue,Wed,Thu,Fri -j ACCEPT iptables -P INPUT DROP povolení paketů v pracovní dny od 08:00 do 18:00 (implicitně se pakety zahazují) - 21 -

Tímto vlastně vytvoříme jeden uzel v rozhodovacím stromě pravidel. Obr. 14 Znázornění způsobu vyhodnocování pravidel při využití stavové filtrace V obecném případě však akcí nemusí být pouze povolení (ACCEPT) či zákaz (DROP), ale i uživatelem definovaný řetězec (chain). V tomto novém řetězci může být paket, ještě před provedením závěrečné akce, podroben dalšímu zkoumání. Výsledkem může samozřejmě být i odeslání paketu do dalšího řetězce. Tímto může vzniknout jakýsi rozhodovací strom, kterým paket při vyhodnocování pravidel prochází. Obr. 15 Rozhodovací strom, kterým prochází pakety při využití stavové filtrace Stavovou filtraci lze také využít k ochraně před DoS útoky. Můžeme vytvořit pravidlo, které během určitého časového intervalu povolí pouze specifikovaný počet nějakých paketů. Tímto je například možné omezit průchodnost TCP paketů otevírajících nové spojení (majících nastaven příznak SYN; ochrana před SYN flood) nebo třeba tok ICMP protokolu. Příklad nastavení pravidel pro ochranu před SYN flood (regulaci TCP SYN provozu): iptables -N syn-flood iptables -A syn-flood -m limit --limit 20/s --limit-burst 5 -j RETURN iptables -A syn-flood -j DROP vytvoření nového řetězce syn-flood v řetězci syn-flood je stanoveno pravidlo propouštějící pouze 4 pakety za sekundu; akce pravidla stanovuje pouze návrat z tohoto řetězce (paket je pak dále testován na shodu s pravidly z hierarchicky nadřazeného řetězce) ostatní pakety jsou zahozeny - 22 -

iptables -A INPUT -p tcp --syn -j syn-flood do filtrovacího řetězce INPUT pak přidáme pravidlo, které zajistí shodu s TCP pakety s nastaveným příznakem SYN a jehož akcí je odeslání paketu do řetězce syn-flood k dalšímu zpracování Průběh vyhodnocování pravidel ukazuje následující obrázek: Obr. 16 Průběh vyhodnocování pravidel (příklad obrany před SYN flood) Použití IP Tables Předtím než je možné použít příkaz iptables, musí být do jádra zaveden modul netfilter. Nejjednodušší je použít příkaz modprobe: modprobe ip_tables Obecný formát příkazu iptables: iptables command rule-specification extensions Tabulky a řetězce pravidel Systém iptables sdružuje pravidla do řetězců (chains) a řetězce do tabulek (tables). Definuje tři základní tabulky FILTER, NAT a MANGLE. Tabulka FILTER uchováná řetězce s pravidly definujícími bezpečnostní politiku. Tabulka NAT je určena pro řetězce s pravidly překladu síťových adres (SNAT, DNAT, maškaráda, forwardování portů). Vstupní řetězec (INPUT) a forwardovací řetězec (FORWARD) jsou přístupné pro tabulku FILTER, řetězce - 23 -

PREROUTING a POSTROUTING jsou přístupné pro tabulku NAT, řetězec OUTPUT je přístupný pro obě tabulky. Tabulka MANGLE uchovává řetězce pravidel sloužících pro úpravy hlavičky paketů, manipulace s TTL, ToS, příznaků (flags), apod. Základní akce podporované systémem -A, --append -D, --delete -R, --replace -I, --insert -L, --list -F, --flush -N, --new-chain - Přidání nového pravidla na konec řetězce - Smaže pravidlo (parametrem je buď celý tvar pravidla nebo jeho číslo) - Nahradí číslo pravidla jiným pravidlem - Vložení nového pravidla na začátek řetězce - Vypsání všech pravidel v řetězci. Pokud není zadán řetězec, vypíšou se všechny řetězce + jejich pravidla - Vyprázdní všechna pravidla v řetězci - Vytvoří nový řetěz pravidel -X, --delete-chain - Smaže vytvořený řetěz pravidel (výchozí smazat nejde) -P, --policy - Výchozí politika řetězce -E, --rename-chain - Přejmenování vytvořeného řetězce pravidel IP část pravidla Pomocí přepínače p (--protocol) se definuje protokol, pro který pravidlo platí. Pokud se neuvede žádný, použije se implicitně IP (tj. pravidlo platí vlastně pro všechny protokoly z rodiny TCP/IP). Zdrojová IP adresa se určí pomocí přepínače s (--src, --source), cílová pomocí d (-dst, -- destination). Maska může být uvedena hned za adresou oddělovačem je / (lomítko). Formát masky může být tradiční (např. 255.255.255.0) nebo novější prefixový (např. /24). Pokud je za přepínačem! (vykřičník), je jeho význam negován. Akce, která se provede pokud paket vyhoví pravidlu, je určena pomocí přepínače j. Základními akcemi jsou ACCEPT (povolení paketu) a DROP (zahození paketu). Akce však může být i jiná například odeslání paketu do jiného řetězce za účelem dalšího zpracování. Dále je vhodné mít možnost specifikovat rozhraní (interface), na kterém byl paket přijat resp. na kterém rozhraní bude odeslán. Toho je dosaženo pomocí přepínače i resp. o. - 24 -

Příklad dostupných voleb: -p [!] protocol -s [!] address[/mask] -d [!] address[/mask] -j target -i [!] interface-name -o [!] interface-name Příklad pravidel: iptables -A INPUT -s 192.168.0.1 -j ACCEPT povolí příchozí pakety se zdrojovou adresou 192.168.0.1 iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT povolí příchozí pakety se zdrojovou adresou náležící síti 192.168.1.0/24 iptables -A INPUT -s! 192.168.0.1 -j ACCEPT povolí příchozí pakety se zdrojovou adresou jinou než 192.168.0.1 iptables -A INPUT -i eth0 -s! 192.168.0.1 -j DROP zakáže příchozí pakety z rozhraní eth0, které mají zdrojovou adresou jinou než 192.168.0.1 Rozšíření pravidel (extensions) Pro protokoly transportní vrstvy je velmi žádoucí mít možnost určit porty (zdrojový a cílový, popř. rozsahy portů) a další parametry hlavičky (příznaky jako např. SYN). I pro ostatní protokoly je vhodné mít možnost specifikace určitých parametrů hlavičky (pro ICMP protokol např. typ zprávy). Každý protokol může mít své vlastní rozšíření výběr se provádí pomocí přepínače m. Rozšíření daného protokolu jsou dostupná i po výběru daného protokolu přepínačem p. Například rozšíření protokolu TCP jsou dostupná buď pomocí -m tcp nebo -p tcp. Rozšíření pro TCP (-m tcp nebo -p tcp): 1) specifikace portů - sport [!] [port[:port]] - dport [!] [port[:port]] určení zdrojového portu (popř. rozsahu) určení cílového portu (popř. rozsahu) 2) příznaky (flags) - tcp-flags [!] mask comp mask seznam symbolických jmen příznaků (SYN, ACK, FIN, RST, ), které mají být zkoumány při testování shody s pravidlem; oddělovačem jednotlivých jmen je čárka - 25 -

[!] - syn comp seznam symbolických jmen příznaků, které musí mít zkoumaný paket nastaveny, aby se shodoval s pravidlem; oddělovačem jednotlivých jmen je čárka zkratka pro jednu z variant --tcp-flags jedná se o pakety otevírající TCP spojení Pozn. Pro význam jednotlivých příznaků viz. RFC-793. Rozšíření pro UDP (-m udp nebo -p udp): Toto rozšíření umožňuje specifikovat porty (popř. jejich rozsahy). Syntaxe a význam je stejný jako pro protokol TCP. - sport [!] [port[:port]] určení zdrojového portu (popř. rozsahu) - dport [!] [port[:port]] určení cílového portu (popř. rozsahu) Rozšíření pro ICMP (-m icmp nebo -p icmp): --icmp-type [!] typename učení typu ICMP zprávy; dostupné typy jsou echo-request, echoreply, source-quench, time-exceeded, destination-unreachable, network-unreachable, host-unreachable, protocol-unreachable, a port-unreachable důležité jsou zejména echo-request a echo-reply ping V některých situacích může být vhodné určovat (kontrolovat) i parametry linkové vrstvy. Nejčastěji používanou technologií na této vrstvě je Ethernet, proto je poskytováno rozšíření MAC umožňující přístup k adresám Ethernetu (tzv. MAC adresám). Rozšíření pro Ethernet (-m mac): --mac-source [!] address umožňuje určit zdrojovou MAC adresu (Ethernetovou adresu); využití má význam pouze pro pravidla řetězce INPUT nebo FORWARD, protože námi budou odeslány všechny pakety, které projdou řetězcem OUTPUT - 26 -

Příklady použití rozšíření: iptables -A INPUT -p tcp --dport 50:55 -j ACCEPT povolí TCP pakety s hodnotami cílového portu v intervalu <50; 55> iptables -A INPUT -p tcp --syn -j DROP zakáže TCP pakety otevírající spojení iptables -A INPUT -p icmp --icmp-type echo-request -j DROP zakáže ICMP echo request (ping) Další příklady použití iptables: filtrace (převzato z www.faqs.org): Přepokládejme síť s IP adresou 172.16.1.0 a s maskou 255.255.255.0 (/24). Chceme povolit uživatelům naší sítě přístup k WWW serverům na Internetu, ale všechen ostatní provoz zakázat. Možné řešení pomocí iptables: # modprobe ip_tables # iptables -F FORWARD # iptables -P FORWARD DROP # iptables -A FORWARD -m tcp -p tcp -s 0/0 --sport 80 -d 172.16.1.0/24 / --syn -j DROP # iptables -A FORWARD -m tcp -p tcp -s 172.16.1.0/24 --sport / 80 -d 0/0 -j ACCEPT # iptables -A FORWARD -m tcp -p tcp -d 172.16.1.0/24 --dport 80 -s 0/0 -j / ACCEPT Poznámky k příkladu: Prvním příkazem zavedeme modul netfilter. Druhým příkazem (-F) vymažeme všechna dosavadní pravidla pro řetězec FORWARD. Třetí příkaz (-P) stanoví defaultní zacházení s pakety. Čtvrtý příkaz: -A připojení pravidla na konec uvedeného řetězce (zde FORWARD) - m specifikace jména rozšíření (tcp) - p určení protokolu (tcp) -s zdrojová adresa/prefix (0/0 - jakákoli) -sport zdrojový port (80) -d cílová adresa/prefix (172.16.1.0/24) --syn specifikace příznaku -j určení akce, která se má provést v případě shody s pravidlem (zde DROP) Pátý a šestý příkaz obdobný čtvrtému -dport cílový port - 27 -