Datum: 2006-10-09 Skribent: Andreas Boström Föreläsare: Roland Elverljung 2D1395, Datasäkerhet GF3 Paketfiltrering Den här föreläsningen behandlar paketfiltrering samt en kort översikt över TCP ( Transmission Control Protocol) och IP (Internet Protocol). Ett paket är helt enkelt en klump med data som sänds mellan datorer. Storleken på paketen går från 512 bytes till ett teoretiskt max på 65535 bytes. Ett paket består av tre delar: header som markerar paketets början, payload som innehåller själva datat och trailer som markerar slutet på paketet. I denna föreläsning utgås det ifrån att IP-standarden är IPv4 (32-bitars adresser). Det finns även en relativt ny standard som heter IPv6, med 128-bitars adresser. 1 TCP/IP TCP/IP är ett kommunikationsprotokoll som används då två datorer ska koppla upp sig mot varandra tex. via internet. För att hitta varandra så behöver båda datorena en IP-adress, IP-adressen består av 32 bitar, alltså 4 bytes. En IP-address skrivs normalt med punkter som avskiljare mellan varje byte, t.ex. 192.168.0.32. Varje dator som ska kommunicera behöver även öppna en port som trafiken kan färdas genom. Det finns totalt 65536 portar och vilka portar man vill öppna kan man för det mesta bestämma själv. Dock så finns det några fördefinierade portar som t.ex. 80 (http), 21 (ftp) och 25 (smtp). Dessa portar är oftast reserverade för standardtjänster och har oftast de lägre numrena. En dator kan ha flera tjänster, den kan bl.a. vara webserver, mailserver eller ftpserver. För varje sådan tjänst som ska kommunicera utåt så måste tjänsten också tilldelas en eller flera portar. Om man vill specifiera port så skriver man portnumret efter IP-adressen med : som avskiljare, t.ex. 192.168.0.32:1223. 1.1 Handskakning Då en dator önskar kommunicera med en annan kan man se det som att de vill sätta upp en slang mellan sig. För att upprätta en uppkoppling använder TCP s.k. handskakningar. Scheman för handskakningarna visas i figur 1 och 2. Datorn som börjar skickar en SYN, vilket betyder hej, jag vill prata med dig. Den andra datorn skickar då tillbaka en ACK (acknowledge), om den godkänner detta. Dessutom skickar den själv en SYN, och när den första datorn skickar en ACK kan själva utbytet av data inledas. Den som först vill avsluta kommunikationen börjar genom att skicka en FIN (final). Den andra datorn svarar med FIN följt av en ACK. När den första svarar med ACK upphör anslutningen. 1
2 2D1395 Datasäkerhet HT 2006 Figur 1: Handskakning - Start 2 Resursallokering Figur 2: Handskakning - Slut Då två datorer vill kommunicera med varandra allokeras resurser för både host och server.
GF3 Paketfiltrering 3 host server IP-source IP-dest port port sändbuffert mottagarbuffert flaggor timers löpnummer-source löpnummer-dest options En kopia av denna finns dessutom i den andra datorn. Storleken är minst 20 bytes, 40 med options. En enkel attack man kan göra är att allokera för mycket så att man fyller upp servers resurser, t.ex. genom denial of service (DoS). 3 IP-paket Men vad är det som skickas fram och tillbaka? Jo, det är paketen. IP är nätverksprotokollet som har hand om routing, d.v.s. hur man når från en nod i nätverket till en annan. Början av varje paket kallas för headern. Resten kallas för kroppen (body), där datat finns. Varje varje IP-paket börjar med en header på minst 20 bytes som visas i figur 3. Figur 3: IP-header VER talar om vilken IP-version som används, vanligen IPv4. HLEN talar om
4 2D1395 Datasäkerhet HT 2006 hur lång headern är medan Total length beskriver hur stort hela paketet är (minst 20 bytes och högst 65535 bytes). Identification används primärt för att unikt identifiera fragment av ett paket. Om ett paket är för stort måste det delas upp i flera delar, detta kallas för fragmentering. Flags identifierar eller kontrollerar fragment. Fragmentation offset används för att bestämma platsen för ett speciellt fragment i det originala IP-paketet. Time to live (TTL) är en räknare som begränsar ett pakets livslängd för att undvika oändliga loopar. En router som tar emot ett paket med TTL > 1 skickar det vidare, annars så vidarebefordas det inte. Protocol berättar vilket protokoll som används i data-delen av paketet. Header checksum används för att undersöka om det finns fel i headern. 4 Lager: TCP/IP-stacken The OSI model divides the functions of a protocol into a series of layers. Each layer has the property that it only uses the functions of the layer below, and only exports functionality to the layer above. OSI (Open Systems Interconnection Reference Model) är en abstrakt modell för kommunikation och nätverksprotokolldesign i vilken de olika protokollen är indelade i en serie av lager. Protokollen finns i ett eller flera lager, och det översta lagret är på applikationsnivå medan det understa på den fysiska och elektriska nivån. De lager man kan påverka främst med paketfiltrering är 3 och 4 där IP och TCP finns. Lager 2 innehåller MAC-adresser (Media Access Control) som sköter kommunikation på lokal nivå, medan IP på lager 3 har hela internet som sitt spelrum. OSI-modellen visas i figur 4. Då information skickas packas även paket inuti paket och i sin tur i ett annat paket. Detta kallas för paketinkapsling. Data från ett protokoll i det övre lagren inkluderas i ett protokoll i det undre lagren. Denna metod används för att låta olika lager lägga till egenskaper och/eller funktionalitet. Exempelvis (se figur 5) så händer följande när ett paket skickas med TCP: En mängd data från avsändaren kapslas in till ett TCP-paket, som i sin tur kapslas in till ett IP-paket som i sin tur skickas över ett datalänklager (t.ex. ethernet). Ethernet ansvarar över den fysiska transporten av data, IP lägger till adress till en specifik dator och TCP lägger till adress till en applikation (alltså porten). 5 ICMP ICMP - Internet Control Message Protocol är ett signalerande protokoll för IPv4 som rapporterar IP-problem tillbaka till sändaren. Den anses vara en del av IP, men använder IP för överföringar. Det finns fråge-icmp, och error-icmp. Fråge-ICMP används för kontroller. Exempel på sådana är Echo (Ping), som används för att kolla om en dator är uppe och fungerar; och Timestamp (numera NTP - Network Time Protocol). Error-ICMP skickas när ett fel i IP upptäcks. Den skickas inte för error i ICMP eller för fragment, och exempel på error-icmp är dest unreachable, time exceeded och Redirect. Ett program som används mycket är Traceroute, ett nätverksverktyg i Linux som spårar den väg paket tar i ett nätverk. I Windows heter motsvarigheten Tracert. Traceroute bygger på att successivt öka TTL, ett 8-bitars värde i IP-protokollet. Först tillverkas paket med TTL = 1 och skickas mot den första noden i nätverket.
GF3 Paketfiltrering 5 Figur 4: OSI När paketet kommer fram minskas TTL med 1, men nu blir TTL = 0. Då kastas paketet och error-icmp:et time exceeded skickas tillbaka till källan. Då skickas paket med TTL = 2, men då blir det den andra noden som skickar time exceeded. Denna prodecur upprepas tills målet har nåtts. 6 TCP TCP är ett förbindelseorienterat dataöverföringsprotokoll som används för huvuddelen av all kommunikation över Internet. TCP tillhandahåller en pålitlig dataström mellan två datorer som är full duplex, vilket betyder att strömmen kan gå åt båda hållen samtidigt; och används för exempelvis http, ftp och e-post. Dock så lämpar sig TCP mindre bra i t.ex. nätverksspel p.g.a. av dess felkorrigerande egenskaper som kan orsaka oönskade fördröjningar. Istället används ofta transportprotokollet UDP. TCP använder sig av det underliggande IP, och när TCP skickar data så delas det upp i segment, och varje skickas i ett eget IP-paket. Om fältet Protocol i IP-paketet visar 6 är det ett TCP-paket, UDP är nummer 17. En TCP-header kommer då att följa IP-headern och den är också minst 20 bytes lång. De viktigaste fälten är source port och destination port. Sequence- och acknowledgementfälten används för att hålla paketen i rätt ordning och berätta för den
6 2D1395 Datasäkerhet HT 2006 Figur 5: Paketinkapsling Figur 6: TCP-header
GF3 Paketfiltrering 7 andra änden om vad som tagits emot. Det finns också några flaggor som kan sättas på och av, nämligen: URG - urgent pointer (sätts på när sändaren vill att mottagaren ska läsa data på en gång och paketen kan komma i oordning). ACK - acknowledgment (se avsnitt 1.1). PSH - push (sändaren ska omedelbart skicka data vidare till applikationen och buffers ska tömmas). RST - reset (stäng ner förbindelsen och börja om från början). SYN - synchronize (synkronisera sekvensnummer för att inleda förbindelse, se avsnitt 1.1). FIN - finished (se avsnitt 1.1). Dessa flaggor kan utnyttjas av en presumtiv angripare. Till exempel kan någon fejka avsändaradress och skicka reset. Det kan även vara så att alla flaggor är satta, detta kallas för ett Christmas Tree och är en speciell attack. 7 Paketfiltering och brandväggar En säkerhetsmedveten internetanvändare nyttjar med fördel en brandvägg. En brandvägg är ett säkerhetsredskap som kan vara både hårdvaru- och mjukvarubaserat och släpper bara igenom den datatrafik som har fått tillstånd. All annan trafik blockeras. Detta sker genom begränsning av portar. Brandväggens främsta uppgift är att kontrollera trafik mellan datornätverk som har olika zoner av pålitlighet. Internet, exempelvis, är en zon med en låg nivå av pålitlighet; medan ett internt nätverk har en hög nivå av pålitlighet (åtminstone borde det vara så). Första generationens brandvägg är helt enkelt en paketfiltrerare. En sådan fungerar som så att alla paket som kommer in undersöks. Ett paket släpps igenom om avsändarens IP-adress är godkänd av brandväggen, om mottagarens IP-adress stämmer, om porten är godkänd och om protokollet (TCP eller UDP) är godkänd. 7.1 Typer De grundläggande tre typerna av brandväggar beror på 1. Om kommunikationen görs mellan en ensam nod och nätverket eller mellan två eller flera nätverk. 2. Om kommunikationen uppsnappas i nätverkslagret eller i applikationslagret. 3. Om brandväggen håller reda på tillståndet hos nätverksupppkopplingarna. Brandväggarna enligt typ 1 kan delas in i: Personliga brandväggar, mjukvaruapplikationer som filterar trafik som kommer till eller skickas från en dator. Exempel: Norman Personal Firewall. Nätverksbrandväggar, filtrerar all trafik till och från ett helt nätverk. Brandväggarna enligt typ 2 kan delas in i:
8 2D1395 Datasäkerhet HT 2006 Nätverkslagerbrandväggar, en paketfiltrerare. Exempel: iptables. Applikationslagerbrandväggar, gör ingen routing utan använder proxyservrar (datorer som erbjuder nätverkstjänster möjligheten att låta klienter upprätta indirekta uppkopplingar till andra nätverkstjänster) istället. Exempel: TCP Wrappers. Applikationsbrandväggar, som begränsar programs åtkomst till enheter i operativsystemet. Brandväggarna enligt typ 3 kan delas in i: Brandväggar med tillstånd (stateful), håller koll på tillståndet hos nätverksuppkopplingar (som TCP-strömmar). Sådana brandväggar kan skilja mellan specifika paket för olika typer av uppkopplingar och minns signifikanta attribut hos varje uppkoppling från början till slut. Dessa attribut är själva tillståndet. Brandväggar utan tillstånd (stateless), behandlar varje paket som det vore ensamt. Sådana brandväggar kan omöjligt veta om paketet i fråga är en del av en existerande uppkoppling, om det försöker upprätta en ny uppkoppling eller bara är på vift. 8 IP-filtreringstermer Drop/Deny - när ett paket droppas eller nekas så raderas det och inget meddelande skickas till avsändaren om detta har hänt. Reject - nästan samma som Drop/Deny med den skillnaden att svar skickas till avsändaren. Här finns risk för en attack - man kan försöka fylla internetlina med onödig information. State - ett speciellt tillstånd hos ett paket i förhållande till en paketström. T.ex. om SYN skickas är tillståndet väntar på ACK. Det finns brandväggar med tillstånd (stateful) som kräver ACK före SYN/ACK. Rule - mängd av en matchning eller flera med ett mål. Chain - innehåller en mängd av regler som används på paketen. Target - om en regel har matchat så berättar target om vad som ska göras med paketet - skickas vidare. Accept - godkänna paketet och släppa den igenom brandväggen. Policy - vad som ska göras om ingen regel kunde användas. 9 Källor Från 2D1392 Protocols and Principles of the Internet: http://www.nada.kth.se/kurser/kth/2d1392/05/lectures/introduction.pdf http://www.nada.kth.se/kurser/kth/2d1392/05/lectures/lecture_2.pdf http://www.nada.kth.se/kurser/kth/2d1392/05/lectures/lecture_3.pdf http://www.nada.kth.se/kurser/kth/2d1392/05/lectures/lecture_4.pdf
GF3 Paketfiltrering 9 Iptables tutorial: http://iptables-tutorial.frozentux.net/iptables-tutorial.html Wikipedia: http://www.wikipedia.org