Verlässliche Verteilte Systeme 1 Angewandte IT-Robustheit und IT-Sicherheit Vorlesung im Wintersemester 2004/2005 Dipl.­Inform. Martin Mink Lehr­ und Forschungsgebiet Informatik 4 Crashkurs TCP/IP­Netzwerke (basierend auf der Vorlesung „Datenkommunikation“ WS03/04) Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke 1 Übersicht ● Kurze Geschichte des Internet ● TCP/IP – Internet Protocol (IP) – Transmission Control Protocol (TCP) – User Datagram Protocol (UDP) ● Werbung ● Netzwerk­Sniffen Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke 2 ARPANET – Vorläufer des Internet XDS 940 Stanford Research Institute (SRI) ARPANET (Dezember 1969) IMP IBM 360/75 DEC PDP­10 IMP IMP University of California Santa Barbara (UCSB) Finanzierung durch ARPA (Advanced Research Project Agency, mit militärischen Interessen) University of Utah IMP XDS 1­7 California University of California Los Angeles (UCLA) Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke 3 Entwicklung des Internets • derzeit sind etwas 200 Millionen Hosts an das Internet angeschlossen Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke 4 TCP/IP und das OSIReferenzmodell Anwendungsebene (Application Layer) Anwendungsebene Darstellungsebene (Presentation Layer) Sitzungsebene (Session Layer) Transportebene (Transport Layer) Transportebene (TCP/UDP) Netzwerkebene (Network Layer) Internetebene (IP) Sicherungsebene (Data Link Layer) Bitebene (Physical Layer) ISO/OSI Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke Host­to­Network­Ebene TCP/IP 5 Die TCP/IP Protocol Suite HTTP Protokolle Telnet SMTP DNS Ethernet ICMP Token Ring Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke SNMP TFTP IP ARP Token Bus Application Layer Transport Layer UDP TCP IGMP Netze FTP RAR P Wireless LAN Internet Layer Host­to­network Layer 6 IP-Paket 32 Bits (4 Bytes) Versi on IHL Type of Service Identification Time to Live Protocol Total Length DM FF Fragment Offset Header Checksum IP Header, normalerweise 20 Bytes Source Address Destination Address Options (variable, 0­40 Byte) DATA (variable) Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke Paddin g Header Data 7 Der IP-Header (Auswahl) • Version: IP­Versionsnummer (mehrere IP­Versionen gleichzeitig einsetzbar) • Type of Service: wird von Routern ignoriert • Total Length: Länge des gesamten Datagramms (in Byte, ≤ 216­1 = 65535 Bytes) • Time­to­Live (TTL): Lebenszeit von Datagrammen begrenzen auf maximal 255 Hops (verhindert endloses Kreisen von Paketen im Netz). Der Zähler wird bei jedem Hop verringert, bei 0 wird das Datagramm verworfen. • DF: Don't Fragment: Paket soll nicht fragmentiert werden (kann dann evtl. nicht jeden möglichen Weg im Netz nehmen). • MF: More Fragments. "1" ­ es folgen weitere Fragmente. "0" ­ letztes Fragment eines Datagramms) • Fragment Offset: Folgenummern der Fragmente eines Datagramms. • Protocol: welches Transportprotokoll wird im Datenteil verwendet (UDP, TCP, ...)? • Header Checksum: Muss bei jedem Hop neu berechnet werden (da sich TTL ändert) • Source Address / Destination Address: Netz­ und Hostnummern von sendendem und empfangenden Rechner. Diese Information benutzen die Router zur Wegebestimmung. Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke 8 IP-Adressierung • Eindeutige IP­Adresse für jeden Host und für jeden Router. • IP­Adressen sind 32 Bit lang und werden im Source Address­ sowie im Destination Address­ Bereich von IP­Paketen verwendet. • Die IP­Adresse ist hierarchisch strukturiert und netzbezogen, d.h. Maschinen mit Anschluss an mehrere Netze haben mehrere IP­Adressen. • Struktur der Adresse: Netzwerk­Adresse für physikalisches Netz (z.B. 137.226.0.0) und Rechner­Adresse für einen Host (z.B. 137.226.12.221) 32 Bits 126 Netze 224 Hosts adressierbar (ab 1.0.0.0) Class A 0 Network B 10 C 110 D 1110 Multicast­Adresse E 1111 Für künftige Nutzung reserviert 16383 Netze 216 Hosts (ab 128.0.0.0) Host Network Host Network Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke Host 2097151 Netze (LANs) 256 Hosts (ab 192.0.0.0) 9 IP-Subnetze Problem: Class C­Netze sind sehr klein, Class B­Netze oft aber schon wieder zu groß. Daher gibt es die Möglichkeit, ein durch die IP­Adresse identifiziertes Netz in sogenannte Subnetze zu zerlegen. Beispiele für Subnetze: Subnetz­Maske 255.255.255.0 Ethernet A 128.10.1.0 Rest des Aller Verkehr für 128.10.0.0 128.10.1.3 Router 128.10.1.8 Ethernet A Host 128.10.1.70 Ethernet A Host 128.10.1.26 Ethernet A Host 128.10.2.1 Internet Ethernet B 128.10.2.0 128.10.2.3 Ethernet B Host Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke 128.10.2.133 128.10.2.18 Ethernet B Host Ethernet B Host 10 IP-Subnetze ● mit einer IP­Netzwerk­Adresse können mehrere physikalische Netze adressiert werden ● einige Bits der Rechner­Adresse werden als Netzwerk­ID genutzt ● eine Subnetz­Maske identifiziert die „missbrauchten“ Bits Class B­ Adresse Subnetz­ Maske Network 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 10 ● ● Host Network Subnet Host alle Hosts eines Netzes sollten die gleiche Subnetz­Maske haben Router können durch Kombination einer IP­Adresse und einer Subnetz­ Maske ermitteln, in welches Teilnetz ein Paket geschickt werden muss. Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke 11 Classless Inter-Domain Routing Problem: starre Klasseneinteilung Abhilfe: Classless Inter­Domain Routing (CIDR) Trennung von starrer Klasseneinteilung durch Ersetzen der festen Klassen durch Netzwerk­ Präfixe variabler Länge • Beispiel: 137.250.3/17: Die ersten 17 Bit der IP­Adresse werden für die Netzwerk­ Identifikation verwendet • Einsatz in Verbindung mit Routing: Backbone­Router, z.B. an Transatlantik­Link, betrachtet z.B. nur die ersten 13 Bit; dadurch kleine Routing­Tabellen, wenig Rechenaufwand • Router eines ISP betrachtet z.B. nur die ersten 15 Bit • Router in Firmennetz betrachtet z.B. nur die ersten 25 Bit Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke 12 NAT – Network Address Translation • Nur Router, die an die Außenwelt angeschlossen sind, benötigen eine globale Adresse • Vergabe einer einzigen (oder einiger weniger) IP­Adressen an eine Firma • Intern verwendet jeder Rechner eine eigene IP­Adresse. Dazu sind ' private' Adressbereiche reserviert worden, die jeder innerhalb seiner eigenen Netze verwenden darf und die nie im Internet geroutet werden: 10.255.255.255 • 10.0.0.0 ­ 172.31.255.255 • 172.16.0.0 ­ ­ 192.168.255.255 • 192.168.0.0 • Bei Verlassen des eigenen Netzes findet eine Adressumsetzung statt • Problem: wie kann die Rückübersetzung in die interne IP­Adresse stattfinden? Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke 13 NAT – Network Address Translation Protokoll Port (lokal) IP (lokal) Port (global) IP (global) IP (Ziel) Port (Ziel) TCP 1066 10.0.0.1 1066 198.60.42.12 137.226.12.221 21 TCP 1500 10.5.3.7 1500 198.60.42.12 207.17.4.21 Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke 14 IP Version 6 • Dramatisch anwachsender Bedarf für neue IP­Adressen • keine Unterstützung von Mobilität, Sicherheitsmechanismen, Echtzeitanwendungen • Verbesserungend durch Ipv6 – 128­Bit­Adressen (8 Gruppen zu je 4 Hexadezimal­Zahlen) – Anycast Address: Erreiche irgendeinen von mehreren – Authentifizierung und Privacy – Einfacher Header: keine Optionen, Protocol, Fragmentierung, Checksum Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke 15 IPv6 Header • Version: IP Version Nummer. • Priority: 4 Bit für Priorität. 1 ­ News, 4 ­ FTP, 6 ­ Telnet, 8 bis 15 ­ Echtzeitverkehr. • FlowLabel: virtuelle Verbindung mit bestimmten Merkmalen/Anforderungen • PayloadLen: Paketlänge nach dem 40­Byte­ Header • NextHeader: 8­Bit­Selektor. Gibt den Typ des folgenden Erweiterungs­Headers an (oder den Transport­Header) • HopLimit: Wird bei jedem Knoten dekrementiert. Bei Null wird das Paket verworfen • SourceAddress: Die Adresse des ursprünglichen Senders des Pakets • DestinationAddress: Die Adresse des Empfängers (nicht unbedingt das endgültige Ziel, wenn es einen Optional Routing Header gibt) Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke 1 4 8 Version (4) Priority (4) PayloadLen (16) 16 24 32 FlowLabel (24) NextHeader (8) HopLimit (8) SourceAddress (128) DestinationAddress (128) NextHeader/Data Das Präfix einer Adresse charakterisiert geographische Bereiche, Provider, lokale interne Bereiche, ... 16 Routing • wichtigste Funktionalität auf Schicht 3 • Jeder Router führt eine Tabelle, die angibt, welche Ausgangsleitung für ein bestimmtes Ziel gewählt werden muss. 1 Nach Ziel ... Über Leitung ... 2 3 A B C D 2 1 2 3 • Die Routingtabellen können statisch vorgegeben sein; besser ist es jedoch, sie ständig an die aktuelle Netzsituation anzupassen. • Bei verbindungsloser Kommunikation muss das Routing für jedes Paket durchgeführt werden. Dabei kann die Wegwahl von Paket zu Paket anders ausfallen. • Bei virtuellen Verbindungen wird nur einmal geroutet, dafür sind die Routing­Tabellen umfangreicher Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke 17 Routing (2) Aufgabe: „günstigsten“ Weg vom Sender zum Empfänger bestimmen • kurze Antwortzeit • hoher Durchsatz • Vermeidung lokaler Überlastsituationen • Sicherheitsanforderungen • kürzester Weg • immer Konflikt zwischen Fairness und Optimum Routingtabellen in den einzelnen Knoten • eindimensional — Entscheidung hängt nur vom Zielknoten ab • zweidimensional — Entscheidung hängt vom Sende­und Zielknoten ab S E A L C/B Sender C Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke A/B B Empfänger 18 Routing (3) Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke 19 ICMP - Internet Control Message Protocol Steuerprotokoll der Ebene 3 für Fehler­ und Kontrollnachrichten. Type/Code gibt die Art der Nachricht an, z.B.: 0 3 4 11 12 15/16 30 Destination unreachable (Paket kann nicht zugestellt werden) Echo Request/Reply (Zustandsabfrage, z.B. beim ping) Source Quench (Choke­Paket, Bitte um Reduktion der Datenrate) Time exceeded for Datagram (TTL hat 0 erreicht, das Paket wird verworfen) Parameter Problem on Datagram (Ein Header­Feld ist falsch ausgefüllt) Information Request/Reply Traceroute (Der Netzwerkpfad wird nachverfolgt) Host Router ICMP Reply ICMP Request Host ICMP Message ICMP Request: Zustandsabfrage ICMP Reply: Antwort darauf ICMP Message: Übermittlung von Zustandsinformationen und Kontrollnachrichten Router Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke 20 TCP und UDP - Die Transportschicht verbindungsorientiert HTTP FTP Telnet verbindungslos SMTP DNS Ethernet ICMP TFTP IP Token Ring ARP Token Bus Application Layer Transport Layer UDP TCP IGMP SNMP RAR P Wireless LAN Internet Layer Host­to­network Layer TCP (Transmission Control Protocol): Zuverlässig, verbindungsorientiert. UDP (User Datagram Protocol): „best effort“, verbindungslos. Stellen eine Kommunikation zwischen Anwendungsprozessen bereit. Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke 21 Eigenschaften von TCP • • • • Verbindungsorientiert und zuverlässig (fehlerfrei, reihenfolgetreu, ohne Duplikate) Fehlerbehandlung, Quittierung, Flusskontrolle (Sliding­Window­Verfahren) Segmentierung (max. Segmentgröße 64 KByte) Adressierung der Applikation über Portnummern (16­Bit­Adresse) Routing Information Virtual Terminal World Wide Web File Transfer Electronic Mail FTP telnet SMTP http BGP 255 20 / 21 23 25 80 179 well­known (TCP) Ports Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke RFC 1700 22 Der TCP-Header Bit Position 0 8 16 Source Port • 20 Byte Header 31 Destination Port Sequence Number • zzgl. Optionen • dann folgen bis zu 65.495 Datenbytes 24 Acknowledgement Number HL Res. 6 Flags Window Size Checksum Urgent Pointer Padding Options Data Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke 23 Der TCP-Header (Auswahl) • Source­ und Destination­Port: Port­Nummer von Sender bzw. Empfänger • Sequence Number/Acknowledgement Number: Segmente haben eine eigene 32 Bit Sequenz­ und Bestätigungsnummer für den Fenstermechanismus zur Flusskontrolle (Sliding Window). • Die Bestätigungsnummer gibt das nächste erwartete Byte an! • HL: Wie bei IP verfügt auch der TCP­Header über eine Angabe seiner Länge. Die Angabe erfolgt in 32­Bit­Worten. • Window Size: Größe des Pufferspeichers für die Verbindung. Zeigt an, wie viele Dateneinheiten der Empfänger gleichzeitig speichern kann. Hierdurch wird das Fenster der Flusskontrolle angepasst. • Flags (u.a.): • ACK: Bestätigungsfeld, für den Fall, dass eine Quittung mitgesendet wird. • SYN: auf 1 gesetzt beim Aufbau einer Verbindung • FIN: auf 1 gesetzt beim Abbau einer Verbindung Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke 24 TCP: 3-Wege-Handshake Client Server SYN, SEQ=x , ACK=x+1 SYN, SEQ=y ACK=y+1, SE Q=x+1 • Der Server wartet mittels LISTEN und ACCEPT auf eingehende Verbindungswünsche. • Der Client startet unter Angabe von IP­Adresse, Portnummer und maximal akzeptabler Segment­ Größe eine CONNECT­Operation. • CONNECT sendet ein SYN. • Ist der Destination Port der CONNECT­Anfrage identisch zu der Port­Nummer, auf der der Server wartet, wird die Verbindung akzeptiert, andernfalls mit RST abgelehnt. • Der Server schickt seinerseits das SYN zum Client und bestätigt zugleich den Erhalt des ersten SYN­ Segments. • Der Client schickt eine Bestätigung des SYN­ Segments des Servers. Damit ist die Verbindung aufgebaut. Three­Way­Handshake Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke 25 Flusskontrolle – Sliding Window Initial window • Sender sendet entsprechend der Fenstergröße (Bytes) • Fenster wird um n Bytes versetzt, sobald ein ACK für n Bytes eingetroffen ist • Ausnahme: Dringende Daten (URGENT­Flag) werden sofort gesendet 1 2 3 4 5 6 7 8 9 10 9 10 Segment 1, 2 und 3 acknowledged • Besonderheit: die Fenstergröße kann während der Übertragungsphase geändert werden Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke Window slides 1 2 3 4 5 6 7 8 26 TCP-Überlastalgorithmus Congestion Avoidance, Herantasten an die maximale Kapazität Überlast vermutet, reduziere den Datenverkehr Gehe vorsichtiger an den nächsten Versuch heran Slow Start, Schnelle Ausnutzung der freien Kapazität Beginne mit einem Segment Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke 27 Das User Datagram Protocol (UDP) Prinzip: „ Keep it simple!“ • 8 Byte Header • Wie IP: verbindungslos und unzuverlässig • geringe Zuverlässigkeit, aber schneller Austausch von Informationen • keine Bestätigung der Pakete auf der UDP­Schicht, fehlerhafte Pakete werden schlicht und einfach verworfen. Weiterhin sind Duplikation, Reihenfolgevertauschung, Paketverlust möglich. • die Checksumme bietet die einzige Möglichkeit, die Pakete auf Übertragungsfehler zu testen • Möglich: ACKs und Neuübertragungen werden von der Anwendung selbst übernommen. • Nutzung für Multicast (nicht möglich bei TCP) Warum überhaupt UDP? Erst die Hinzunahme eines Ports zu einer Netzwerkadresse kennzeichnet eine Kommunikation eindeutig. Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke 28 UDP-Header Bit Positon 0 8 16 24 Source Port Destination Port Message Length Checksum 31 Data • • • • Adressierung der Applikationen über Portnummern Message­Length gibt die Gesamtlänge (Header + Daten) in 32 Bit Worten an Checksum (optional!) – IP hat keine Checksumme für den Datenteil, daher kann sie hier eine sinnvolle Ergänzung sein. Ablauf der Berechnung wie bei TCP Daten werden bei Bedarf auf eine gerade Bytezahl aufgefüllt (da Message Length in 32 Bit Worten angegeben wird) Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke 29 PenTesting Praktikum ● Planspiel professionelles Penetration­Testing ● Kundenaquise ist erfolgt, wir machen: – Vertragsgestaltung – PenTest – Bericht – Paper ● Ab Januar 2005 bis ca. Ende April ● Hoher Zeitaufwand ● Bewerbungen bitte per Email an dornseif@informatik, Subject „PenTest“, Deadline: 16.12., 10 Uhr – Angabe von vorhandener Erfahrung Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke 30 Netzwerk-Sniffen ● Daten vom Netzwerk lesen ist nicht schwer – ● schlecht für unverschlüsselte Daten (z.B. Passwörter) Tools – tcpdump (klassisch) – (t)etherreal (neu) – dsniff (Kollektion von Tools) Verlässliche Verteilte Systeme 1 – TCP/IP-Netzwerke 31