Počítačová bezpečnost 4. Bezpečnost v TCP/IP © Milan Keršlágerhttp:// Obsah: ● IP adresa, IP datagram, ARP, UDP, TCP, směrování ● hub, switch, VLAN, VPN, IPsec, SSL, SSH ● firewall (nestavový, stavový), proxy, port knocking
Linková vrstva ● nejčastěji Ethernet ● ethernetový rámec (rozumí mu síťová karta) – hlavička + data (délka 64 až 1518 oktetů) PDSTSRCFTdataCRC P Preamble ( )8 oktetů DST Destination Address6 oktetů SRCSource Address6 oktetů FTFrame Type*2 oktety dataFrame Data oktetů CRCCyclic Redundancy Check4 oktety
Ethernetový rámec ● jediné, čemu rozumí ethernetová karta ● linková vrstva modelu ISO/OSI, formát podle: – IEEE 802.2, IEEE 802.3, Ethernet SNAP – Ethernet II – průmyslový standard, běžně používán ● hlavička + přepravovaná data – 14 + (48 až 1500) + 4 oktety ● protokoly vyšších vrstev v datové části ● síťová karta zachytává vše – pokud je určeno pro ni, vyvolá přerušení → ovladač ● pozná se podle cílové MAC adresy, případně linkový broadcast – jinak ignoruje (výjimkou je promiskuitní režim)
MAC adresa ● Media Access Control ● identifikace na linkové vrstvě ● MAC u Ethernetu je dlouhá 6 oktetů: – 3 oktety výrobce + 3 oktety číslo karty ● síťová karta se orientuje jen podle MAC ● nastaveno výrobcem – typicky lze softwarově změnit ● na jednom segmentu sítě nesmí být dvě stejné – záměrně využíváno při odposlouchávání – u WiFi pro překonání ochrany
Lokální broadcast ● cílová MAC na FF:FF:FF:FF:FF:FF ● slyší všichni na stejném segmentu ● hub, switch nebo bridge není překážkou ● nepřekročí však router ● použití: – pro ARP – oznamování služeb (jména stanic pro Win) – multicastové vysílání
Switch ● aktivní prvek (koncentrátor) ● pracuje na linkové vrstvě (L2) ● sleduje MAC adresy připojené k portům – buduje tabulku ● přijatý rámec posílá jen na příslušný port – nemá-li cíl v tabulce, tak na všechny porty ● všichni neslyší vše (na rozdíl od hubu) ● při přeplněn tabulky se chová jako HUB ● routerswitch ● kombinace switche a routeru (L2 + L3)
Internet Protokol – IP ● základ rodiny TCP/IP, základem IP adresa ● datagramová služba, doručení bez záruk – hlavička + data (min. délka 60 oktetů) ● dnes IPv4 – jedinečná adresa (4 oktety), různých IP adres je málo – zápis desítkově po oktetech, odděleno tečkou – ● nastupuje IPv6 – adresa 128 bitů (16 oktetů) → každý atom ve vesmíru – zápis hexadecimálně, oddělení dvojtečkami – 2001:718:1c01:16::aa
IP datagram
Maska sítě ● bitové vyjádření IP podsítě ● podsíťě jsou navzájem odděleny routery – jedničky označují část IP adresy s číslem sítě – nuly vyjadřují část IP adresy s číslem počítače – zápis jako IP adresa nebo počet jedniček zleva – např: nebo též zápis IP.IP.IP.IP/24 ● číslo sítě = IP adresa AND maska sítě ● přidává se jako vlastnost: – síťového rozhraní – záznamu v routovací tabulce
Rezervované IP adresy ● určeno pro speciální účely (IANA: RFC 3330) ● typicky filtrováno na firewallu („martian packet“) ● privátní sítě: – /8, /8, /12, /16 ● další použití – /8 (loopback), /32 (broadcast) – /8 (rezervováno), /4 (rezervováno) – /16 (autokonfigurace), /4 (multicast)
IP broadcast ● ● lokální broadcast (pro danou podsíť) ● odesláno na MAC adresu FF:FF:FF:FF:FF:FF ● nepřekročí hranici segmentu, tj. neprojde routerem ● IP adresa se samými 1 na místě čísla počítače ● síťový broadcast (pro danou podsíť) ● může cestovat na velkou vzdálenost – odesílatel typicky netuší, jaká je maska v cíli – ale může to vyzkoušet → broadcast storm – typicky filtrováno na routerech (s firewallem)
Omezení v TCP/IP stacku ● některé operace považovány za nebezpečné ● může je dělat jen správce počítače (root, admin) ● raw socket – umožňuje vyslat jakkoliv formátovaný datagram – typicky jen root – 2004 Windows: tiché a nerevezibilní odstranění raw s. ● připojení na nízký port – vyhrazeno pro rezervované služby ● /etc/services ● %SystemRoot%\system32\drivers\etc\services – vydává IANA („weel-known port numbers“)
ARP ● Address Resolution Protocol ● překlad IP → MAC adresa ● víme cílovou IP adresu, ale nevíme cílovou MAC – počítač vyšle lokální broadcast (slyší všichni): – „kdo má IP adresu “? – všichni slyší a zapíší si naši MAC do ARP tabulky – majitel IP adresy odpoví přímo tazateli – tazatel si zapíše do ARP tabulky záznam s IP a MAC ● záznam v tabulce je časově omezen (minuty) – tazatel pak může vytvořit rámec a odeslat ho ● není nijak zabezpečeno
ARP spoofing ● podvržení záznamů do ARP cache ● rozesílání falešných odpovědí ● zneužití expirace cache ● lze řešit statickou tabulkou nebo pomocí SW ● útočník se vydává za cíl ● „stahuje na sebe“ veškerý provoz ● ochrana pomocí switche s managmentem – ARP datagramy kontrolovány – cestu otevírá DHCP při konfiguraci klienta
IP spoofing ● útočník se vydává za někoho jiného ● datagram má falešnou zpáteční adresu ● útok na služby chráněné podle IP klienta – rhost, rsh (historické, nahrazeny pomocí SSH) – RPC (sdílení souborů – SMB, NFS) – dnes obtížně využitelné (ochrana je na vyšší vrstvě) ● běžně pro DoS (Denial of Service) – odepření služby – útočník nedostane odpověď – lze eliminovat kontrolou IP adres odesílatelů u providerů ● z výkonových důvodů se to však typicky nedělá
ICMP ● Internet Control Message Protocol ● povinná součást implementace TCP/IP ● služební protokol ● zapouzdřeno v IP datagramu ● oznamuje stavy sítě, chyby, k testování,... – nese v sobě typ a kód (dvě čísla) – ping: výzva 8,0 a odpověď 0,0 – network/host unreachable, ICMP redirect,... ● ICMPv4 a ICMPv6
ICMP spoofing ● zneužití řídícího protokolu ● lze zpomalit probíhající TCP spojení – source quenching (zpomalení) – packet too large (fragmentace přes snížení MTU) ● blokování spojení – destination unreachable ● u systémů dnes běžná blokace ICMP – rate limit na ping – blokování ping, traceroute – „záplata“ na vadné implementace
UDP ● User Datagram Protocol ● datagramová služba ● systém otázka-odpověď (malá režie) ● zapouzdřeno v IP datagramu ● bez záruky (neřeší ztrátu apod.) – musí si ohlídat sama aplikace (typicky časovačem) ● nedojde-li odpověď do limitu, zeptám se znovu ● nedojde-li víckrát, ohlásím chybu – použito pro DNS, VoIP, NFS v LAN atp. ● ve VoIP znamená ztráta datagramu díky rozložení informace do více datagramů snížení kvality, při větších ztrátách pak výpadek
UDP spoofing ● injektáž falešných UDP datagramů ● cílem je ošálení cíle útoku – vydáváme se za někoho, získáme informace – podsouváme odpovědi, uvedeme cíl v omyl ● UDP je bezstavový protokol ● nepoužívají se žádné identifikátory ● spoofing je velmi jednoduchý ● stavový charakter se řeší až na aplikační úrovni – např. identifikace otázky na DNS server – odpověď musí obsahovat stejný identifikátor
TCP ● Transmition Control Protocol ● proud bitů bez struktury – duplexní spojení ● data lze přenášet zároveň oběma směry – stavový protokol ● obě strany si pamatují stav, v jakém se nacházejí ● se zárukou – řeší ztrátu, duplicitu i pořadí – vyžaduje extra režii ● vhodný pro přenos dat (obrázky, dokumenty) – protokoly FTP, SMTP, HTTP,...
TCP spoofing ● TCP je stavový protokol ● oba konce používají sekvenční čísla – pokud jsou náhodně generována, je to obtížné – chyby ve starších verzích Windows (95, NT) – Linux a BSD mají kvalitní implementaci ● při odposlouchávání je to jednodušší – sekvenční čísla se zvyšují o 1 – problémy s dalšími položkami (potvrzení přijatých dat) – to vše snižuje pravděpodobnost úspěchu ● využívání narozeninového útoku – útočníkovi stačí rozumná pravděpodobnost
Síťový port ● jednoznačná identifikace síťového spojení ● umožňuje identifikovat aplikace ● každé spojení má jinou čtveřici hodnot ● ten, kdo navazuje, si zdrojový port zvolí – port je zablokován do uvolnění pro další použití ● čtveřice hodnot ● zdrojová IP adresa, zdrojový port ● cílová adresa, cílový port
Navázání TCP spojení ● trojcestný handashake ● A iniciuje spojení zasláním datagramu B se SYN ● B odpoví ACK + SYN, pak již jen ACK ● typický útok: SYN flood (zahlcený SYN datagramy) AB Syn seg=x Syn seg=y Ack=x+1 Ack=y+1
SYN flood ● zahlcení cíle útoku ● útočník otevírá velký počet spojení ● cíl útoku vyčerpá svoje systémové zdroje ● vzniká DoS (nelze alokovat pro reálná spojení) ● řeší SYN cookies – server neregistruje spojení hned při příjmu SYN – sekvenci určí podle specifické funkce ● sekvenční číslo obsahuje sušenku, expiraci, MSS – po potvrzení ACK přijde sekvence + 1 – odečte 1 a ověří sušenku, platnou expiraci, velikost MSS
Ukončení TCP spojení ● založeno na polovičním uzavření (half-close) ● jedna strana dá najevo, že si přeje ukončit spojení (FIN), ale dále přijímá ● protějšek dokončí přenos a potvrdí ukončení ● lze i okamžité ukončení ● jedna strana pošle RST ● obě strany okamžitě skončí
TCP reset attack ● zavírání otevřených spojení ● nutnost odposlechu ● zfalšování → ukončení komunikace ● lze blokovat nežádoucí provoz – udělal to provider Comcast (proti P-t-P), FCC zakročila – Snort to dělá záměrně ● rušení podezřelých spojení ● Network Intrusion Detection
Zahazování paketů ● simulace přetížení přenosové trasy ● TCP reaguje snížením rychlosti – dle RFC implementovány autoregulační mechanismy – rychlý pokles a návrat k hodnotě ještě beze ztrát – některé implementace mohou být agresivnější ● využívá se pro regulaci uživatelů – bez regulace má každé TCP spojení zhruba stejně – kdo naváže více spojení, má víc z přenosového pásma – používají se priority (v datagramu nebo podle portu) – k síťovému rozhraní jsou připojeny fronty (+předbíhání)
Směrování ● „routing“ sdružuje IP adresy do podsítí ● cílem je zjednodušení routovací tabulky ● statický – pevně nastaven správcem sítě (počítače) – vhodný pro malé sítě ● dynamický (RIP, BGP, OSPF,...) – adaptuje se na aktuální situaci ● v případě výpadků, rozkládání zátěže je problém – vytváření autonomních systémů ● každý provider zodpovědný za svoje podsítě – automatická propagace nových podsítí ● Čína na sebe přesměrovala provoz serverů USA
Útoky na směrování ● podvržení záznamu do routovací tabulky ● selhání je pro větší sítě nebezpečné ● starší protokoly bez zabezpečení – může snadno způsobit totální rozklad sítě ● ICMP redirect – dnes se typicky ignoruje – dříve umožňoval stanici přidat další záznam ● stanice pošle špatně, router přepošle do správného cíle ● způsobuje duplikaci síťového provozu (snížení propustnosti)
Firewall ● „ohnivá stěna“ ● cílem filtrovat nežádoucí provoz ● na linkové vrstvě (MAC adresy) – nepraktické ● na síťové vrstvě – klasické nasazení, zvlášť pro IPv4 a IPv6 – filtruji provoz: ● směrem dovnitř, směrem ven, forwardovaný provoz (router) – podle implementace: ● nestavový firewall a stavový firewall ● součást TCP/IP stacku nebo aplikační (specializovaný program)
Nestavový firewall ● nemá vnitřní stavy ● nic si nepamatuje ● každý datagram posuzován zvlášť ● jednoduchá implementace ● nevhodné pro spojovou službu (TCP) – nedokáže odfiltrovat datagramy, které do proudu nepatří
Stavový firewall ● pracuje s vnitřními stavy ● pamatuje si svoji předchozí činnost ● datagramy posuzovány v kontextu – složitější implementace ● vhodné pro TCP – u spojení rozpoznáme otevření, přenost dat a uzavření ● používá se i pro UDP – u DNS je stavem otázka → odpověď ● obtížně se dělá analýza přenášených dat – na to je potřeba proxy (aplikační brána) – antivirová kontrola, detekce malware, únik dat