netzwerk-simulation mit virtual network user mode linux ...vnuml/docs/icmp/icmpgroup.pdf · damit...

45
Netzwerk-Simulation mit Virtual Network User Mode Linux - VNUML Internet Message Control Protocol - ICMP - Projekt-Praktikum Sommersemester 2005 Nadia Ettaous Andrew Kiprop ....................... Betreuer: Prof. Dr. Ch. Steigner Dipl.-Inf. Harald Dickel ....................... 31. August 2005 1

Upload: hadieu

Post on 07-Feb-2018

222 views

Category:

Documents


0 download

TRANSCRIPT

Netzwerk-Simulation mit Virtual NetworkUser Mode Linux - VNUML

Internet Message Control Protocol- ICMP -

Projekt-Praktikum

Sommersemester 2005

Nadia EttaousAndrew Kiprop.......................

Betreuer:Prof. Dr. Ch. SteignerDipl.-Inf. Harald Dickel

.......................

31. August 2005

1

Inhaltsverzeichnis

1 Einleitung 41.1 ICMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.1.1 Ping . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.1.2 Traceroute . . . . . . . . . . . . . . . . . . . . . . . . . 61.1.3 Netstat . . . . . . . . . . . . . . . . . . . . . . . . . . 71.1.4 Route . . . . . . . . . . . . . . . . . . . . . . . . . . . 71.1.5 Ifconfig . . . . . . . . . . . . . . . . . . . . . . . . . . . 81.1.6 Tcpdump . . . . . . . . . . . . . . . . . . . . . . . . . 91.1.7 Arp . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2 Beispielnetze 132.1 Dateiaufbau . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.2 Beispielnetz 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.3 Beispielnetz 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . 162.4 Beispielnetz 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

3 ICMP Nachrichtentypen 183.1 Echo Request - Echo Reply . . . . . . . . . . . . . . . . . . . 193.2 Destination Unreachable . . . . . . . . . . . . . . . . . . . . . 213.3 Time Exceeded . . . . . . . . . . . . . . . . . . . . . . . . . . 223.4 Redirect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223.5 Source Quench . . . . . . . . . . . . . . . . . . . . . . . . . . 243.6 Parameter Problem . . . . . . . . . . . . . . . . . . . . . . . . 243.7 Information Request-Reply . . . . . . . . . . . . . . . . . . . . 253.8 Address Mask Request-Reply . . . . . . . . . . . . . . . . . . 25

4 Ethereal 25

5 Schlusswort 295.1 ICMP Nachteile . . . . . . . . . . . . . . . . . . . . . . . . . . 29

6 Anhang 316.1 ICMP Tabelle . . . . . . . . . . . . . . . . . . . . . . . . . . . 316.2 XML-Syntax des Beispiel-Szenarios . . . . . . . . . . . . . . . 32

6.2.1 Syntax des Beispielnetzes 1 . . . . . . . . . . . . . . . 326.2.2 Syntax des Beispielnetzes 2 . . . . . . . . . . . . . . . 336.2.3 Syntax des Beispielnetzes 3 . . . . . . . . . . . . . . . 346.2.4 Syntax des Beispielnetzes 4 . . . . . . . . . . . . . . . 356.2.5 Syntax des Beispielnetzes 5 . . . . . . . . . . . . . . . 37

6.3 Aufgaben und Losungen . . . . . . . . . . . . . . . . . . . . . 39

2

6.3.1 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . 396.3.2 Losungen . . . . . . . . . . . . . . . . . . . . . . . . . 42

3

1 Einleitung

In diesem Projekt-Praktikum wurde das Simulationspaket VNUML getestet.IcmpGroup beschaftigte sich mit dem Einsatz des Internet Control MessageProtocols (ICMP) in der VNUML Umgebung.Fur die kommenden Anwendungen wurde das Netz beispielnetz.xml benutzt.Die dazu gehorige XML-Datei finden Sie unter dem Kapitel Anhang 6.

Abbildung 1: Beispielnetz 1

1.1 ICMP

Das Internet Control Message Protocol (ICMP) benutzt wie TCP und UDPdas Internet Protocol IP, ist also ein Teil der Internet-Protokoll-Familie. Esdient in Netzwerken zum Austausch von Fehler- und Informationsmeldun-gen. Obwohl ICMP eine Ebene uber IP angeordnet ist, ist es in IP integriert.

Es wird von jedem Router und PC erwartet, ICM-Protokoll zu sprechen. Die

4

meisten ICMP- Pakete enthalten Diagnose-Informationen, sie werden vomRouter zur Quelle (engl. source) zuruckgeschickt, wenn der Router Paketeverwirft, z.B. weil das Ziel (engl. destination) nicht erreichbar ist, die TTL(Time-to-live) abgelaufen ist, usw. Es gilt der Grundsatz, dass ein ICMP-Paket niemals ein anderes ICMP-Paket auslost, d.h. die Tatsache, dass einICMP Paket nicht zugestellt werden konnte wird nicht durch ein Weiteressignalisiert. Eine Ausnahme zu diesem Grundsatz bildet die Echo-Funktion.Echo-ICMP-Pakete werden z.B. durch das Programm Ping verschickt.ICMP-Nachrichten werden beim Versand im Datenteil von IP-Datagrammeneingekapselt. Dabei sind im IP-Header der Servicetyp immer 0 und die Pro-tokollnummer immer 1.Der Aufbau einer ICMP-Nachricht lasst sich wie folgt darstellen:

Abbildung 2: Aufbau einer ICMP-Nachricht

In den nachsten Kapiteln werden anhand eines Beispielnetzes verschiedeneTools unter vnuml getestet und dokumentiert.

1.1.1 Ping

Ping ist ein Computerprogramm, mit dem uberpruft werden kann, ob ein be-stimmter Host in einem IP-Netzwerk erreichbar ist. Entwickelt wurde Pingursprunglich Ende 1983 von Mike Muus.

FunktionsweisePing (in Anlehnung an das Gerausch eines Sonars) sendet ein ICMP-Echo-

Request-Paket an die Zieladresse des zu uberprufenden Hosts. Der Empfangermuss, insofern er das Protokoll unterstutzt, laut Protokollspezifikation eineAntwort zurucksenden: ICMP Echo-Reply. Ist der Zielrechner nicht erreich-bar, antwortet der Router: Network unreachable (Netzwerk nicht erreichbar)oder Host unreachable (Gegenstelle nicht erreichbar).Aus einer fehlenden Antwort kann man allerdings nicht eindeutig daraufschließen, dass die Gegenstelle nicht erreichbar ist. Manche Hosts sind namlichso konfiguriert, dass sie ICMP-Pakete ignorieren und verwerfen.

5

Ubergibt man dem ping-Kommando einen Hostnamen anstatt einer IP-Adresse,lasst das Programm diesen durch das Betriebssystem auflosen. Bei fehler-haften Konfigurationen (hosts-Datei, lmhosts-Datei, WINS, DNS) kann derName nicht aufgelost werden, worauf das Programm eine Fehlermeldung aus-gibt.Einige Parameter sind bei Ping einstellbar. Zum Beispiel bestimmt die Wie-derholrate, wie haufig ein Paket gesendet wird. Die Paketgrosse bestimmt dieGrosse des ICMP-Echo-Request-Pakets.Beispielhost1:∼# ping 10.0.1.2

PING 10.0.1.2 (10.0.1.2) 56(84) bytes of data.

64 bytes from 10.0.1.2: icmp seq=1 ttl=63 time=483 ms

64 bytes from 10.0.1.2: icmp seq=2 ttl=63 time=63.0 ms

64 bytes from 10.0.1.2: icmp seq=3 ttl=63 time=1.91 ms

64 bytes from 10.0.1.2: icmp seq=4 ttl=63 time=1.84 ms

64 bytes from 10.0.1.2: icmp seq=5 ttl=63 time=1.91 ms

:

Es werden Datenpakete an den Rechner Host2 (10.0.1.2) gesandt. Vom Pro-gram wird die Zeit gemessen, bis die Antwort des Hosts eintrifft. Die Zeitan-gabe sagt aus, wie lange es dauert, bis ein Datenpaket zum Host und wiederzuruck braucht. Man kann daran grob erkennen, ob die Gegenstelle funktio-niert und mit welcher Verzogerung bei einer Verbindung zu rechnen ist. DieAngabe TimeToLive ist dazu da, um grob nachvollziehen zu konnen, uberwie viele Router der Ping-Befehl gelaufen ist.

1.1.2 Traceroute

Traceroute ist ein Diagnose-Werkzeug, mit dem ermittelt werden kann, wel-che Router (Zwischensysteme) ein Datenpaket uber ein IP-Netz passiert, bises bei einem bestimmten Host ankommt. Traceroute arbeitet ublicherweisemit dem ICMP-Teil der IP-Spezifikation, uber das Ruckmeldungen gegebenwerden. Dabei werden TCP-, UDP- oder ICMP-Pakete mit einem verander-ten und jeweils um 1 erhohten Time-to-live (TTL) Wert, beginnend mit 1,gesendet. Ein Router im Netz, der ein Paket mit TTL=1 empfangt, dekre-mentiert die TTL, verwirft dieses und sendet die ICMP-Antwort Typ 11:”Time-to-live exceeded”und Code 0: ”Time to life exceeded in transit”anden Absender mit seiner Adresse zuruck. Die Summe der so gesammeltenAdressen kennzeichnet dann den Weg durch das Netz.Die Anzeige von traceroute zeigt nicht immer den tatsachlichen Weg, dendie Datenpakete nehmen. Es wird beeinflusst von Firewalls, fehlerhaften Im-

6

plementierungen des IP-Stacks, Network Address Translation, Routing undanderen Faktoren.Beispielhost1:∼# traceroute 10.0.1.2

traceroute to 10.0.1.2 (10.0.1.2), 30 hops max, 38 byte packets

1 10.0.0.2 (10.0.0.2) 76.389 ms 1.900 ms 2.203 ms

2 10.0.1.2 (10.0.1.2) 9.530 ms 3.131 ms 2.941 ms

:

1.1.3 Netstat

Anzeige der Netzverbindungen Netstat zeigt Protokollstatistiken und aktu-elle Rechnernetz-Verbindungen an. Damit kann man erkennen zu welchenRechnern direkte Verbindungen bestehen. Unter Umstanden kann man sodie IP-Adresse der Gesprachspartner in Instant-Messaging-Programmen er-kennen. Man kann damit aber auch herausfinden ob man mit einem Trojanerinfiziert ist.Netstat ist ein Kommandozeilen-Programm, das bedeutet, dass es keine einengraphische Oberflache besitzt, sondern in einer sogenannten Shell (CLI) lauft.Beispielhost1:∼# netstatActive Internet connections (w/o servers)Proto Recv-Q Send-Q Local Address Foreign Address Statetcp6 0 0 ::ffff:192.168.1.14:ssh ::ffff:192.168.1.1:1256 ESTABLISHEDActive UNIX domain sockets (w/o servers)Proto RefCnt Flags Type State I-Node Pathunix 5 [ ] DGRAM 1245 /dev/logunix 2 [ ] DGRAM 1360unix 2 [ ] DGRAM 1328unix 2 [ ] DGRAM 1257

1.1.4 Route

Bestimmte Netzwerkhardware, wie z.B. ein Router oder eine Netzwerkkarte, be-einhalten eine Art ”Adress-Tabelle”-Routingtabelle (engl. Routing-Table)- welchezur Wegfindung beim Routing eingesetzt wird. Um die Routingtabelle einzusehen,benutzt man den Befehl route.Beispielhost1:∼# routeKernel IP routing tableDestination Gateway Genmask Flags Metric Ref Use Iface

7

192.168.1.144 * 255.255.255.252 U 0 0 0 eth010.0.0.0 * 255.255.255.0 U 0 0 0 eth110.0.1.0 10.0.0.2 255.255.255.0 UG 0 0 0 eth1

1.1.5 Ifconfig

ifconfig (BSD): Netzwerkschnittstellenkonfiguration.

Beispiel

host1:∼# ifconfig

eth0 Link encap:Ethernet HWaddr FE:FD:00:00:01:01inet addr:192.168.1.146 Bcast:192.168.1.255 Mask:255.255.255.252inet6 addr: fe80::fcfd:ff:fe00:101/64 Scope:LinkUP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:410 errors:0 dropped:0 overruns:0 frame:0TX packets:275 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:30221 (29.5 KiB) TX bytes:37458 (36.5 KiB)Interrupt:5

eth1 Link encap:Ethernet HWaddr FE:FD:00:00:01:01inet addr:10.0.0.1 Bcast:10.255.255.255 Mask:255.255.255.0inet6 addr: fe80::fcfd:ff:fe00:101/64 Scope:LinkUP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1RX packets:32 errors:0 dropped:0 overruns:0 frame:0TX packets:35 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:2368 (2.3 KiB) TX bytes:2818 (2.7 KiB)Interrupt:5

lo Link encap:Local Loopbackinet addr:127.0.0.1 Mask:255.0.0.0inet6 addr: ::1/128 Scope:HostUP LOOPBACK RUNNING MTU:16436 Metric:1RX packets:8 errors:0 dropped:0 overruns:0 frame:0TX packets:8 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0RX bytes:560 (560.0 b) TX bytes:560 (560.0 b)

8

1.1.6 Tcpdump

Anzeige von Netzwerkpacketen(Netzwerk-Sniffer).

Anwendungen

tcpdump -c anzahlDieser Befehl zeigt je nach ”anzahl”an wieviel Paketverkehr ausgefuhrt wird, an-sonsten wurde es endlos weiter gehen.Beispielhost1:∼# tcpdump -c 215:12:24.939048 IP 192.168.1.146.ssh > 192.168.1.145.1493:P 427121028:427121140(112)ack 2241214261 win 2664 <nop,nop,timestamp 17736 2957061314>15:12:25.008014 IP 192.168.1.145.1493 > 192.168.1.146.ssh: .ack 112 win 18848 <nop,nop,timestamp 2957061575 17736>2 packets captured8 packets received by filter0 packets dropped by kernel

tcpdump -F fileDieser Befehl benutzt die Datei als Input fur die Filter expression.

tcpdump -C filesizeDieser Befehl kontrolliert ob die zu speichernde Datei eventuell grosser ist als file-size, sollte dies so sein, dann sollte die aktuelle Datei geschlossen werden und eineneue geoffnet werden.Beispielhost1:∼# tcpdump -C 10 -c 215:14:41.908222 IP 192.168.1.146.ssh > 192.168.1.145.1493:P 427481172:427481284(112)ack 2241217573 win 2664 <nop,nop,timestamp 31483 2957198335>15:14:41.948872 IP 192.168.1.145.1493 > 192.168.1.146.ssh:ack 112 win 32767 <nop,nop,timestamp 2957198564 31483>2 packets captured8 packets received by filter0 packets dropped by kernel

tcpdump -i interfaceDieser Befehl beobachtet nur die Schnittstelle ”Interface”.Beispielhost1:∼# tcpdump -i eth0 -c 215:15:36.772540 IP 192.168.1.146.ssh > 192.168.1.145.1493:P 427482916:427483028(112)

9

ack 2241218389 win 2664 <nop,nop,timestamp 36976 2957253235>15:15:36.814261 IP 192.168.1.145.1493 > 192.168.1.146.ssh: .ack 112 win 32767 <nop,nop,timestamp 2957253437 36976>2 packets captured8 packets received by filter0 packets dropped by kernel

tcpdump -m moduleDamit werden MIB Module zu jeder Zeit ins tcpdump geladen.Beispielhost1:∼# tcpdump -m icmp -c 215:16:24.342569 IP 192.168.1.146.ssh > 192.168.1.145.1493:P 427485140:427485252(112)ack 2241219589 win 2664 <nop,nop,timestamp 41738 2957300915>15:16:24.383267 IP 192.168.1.145.1493 > 192.168.1.146.ssh: .ack 112 win 32767 <nop,nop,timestamp 2957301015 41738>2 packets captured8 packets received by filter0 packets dropped by kernel

tcpdump -r fileHier wird eine Datei aus einer Netzwerk-Schnittstelle ausgelesen.

tcpdump -s snaplen/zahlBeispielhost1:∼# tcpdump -s 2 -c 215:17:34.647659 [|ether]15:17:34.655480 [|ether]2 packets captured8 packets received by filter0 packets dropped by kernel

tcpdump -T typeEs wird nach einem Pakettyp spezifiziert, zum Beispiel rtp, rpc, oder snmp.Beispielhost1:∼# tcpdump -T rtp -c 215:18:59.756528 IP 192.168.1.146.ssh > 192.168.1.145.1493:P 427489860:427489972(112)ack 2241222469 win 2664 <nop,nop,timestamp 57289 2957456248>15:18:59.798882 IP 192.168.1.145.1493 > 192.168.1.146.ssh: .ack 112 win 32767 <nop,nop,timestamp 2957456452 57289>2 packets captured8 packets received by filter

10

0 packets dropped by kernel

tcpdump -w fileDieser Befehl speichert die Paket-Dateiein in einer Datei zur spateren Analyse./home/projekt/IcmpGroup

tcpdump -E algo:secretBeispielhost1:∼# tcpdump -E icmp -c 215:20:04.875562 IP 192.168.1.146.ssh > 192.168.1.145.1493:P 427492228:427492340(112)ack 2241223909 win 2664 <nop,nop,timestamp 63806 2957521369>15:20:04.916973 IP 192.168.1.145.1493 > 192.168.1.146.ssh: .ack 112 win 32767 <nop,nop,timestamp 2957521581 63806>2 packets captured8 packets received by filter0 packets dropped by kernel

Speichern

tcpdump -i interface > DateinameBei der ”parallelen” Uberwachung von Host1 an der Schnittstelle eth0, ”Bsp. ping10.0.0.2”, kann man diese als Textdatei speichern, oder als dumpfile *.dmp. DasSpeichern muss vom Host aus erledigt werden. Dabei kann man den Verlauf nichtdirekt einsehen, sondern erst in der gespeicherten Datei. Diese Datei befindet sichin dem aktuell benutzten Ordner, in unserem Fall: /home/projekt/IcmpGroup.Beispielbecks:/home/projekt/IcmpGroup# tcpdump -i Host1-eth0 > probeprotocol decode listening on R1-eth0, link-type EN10MB (Ethernet), capturesize 96 bytes 40 packets captured 40 packets received by filter 0 packetsdropped by kernel

Filtern

tcpdump ’packet-type’Damit werden nur Pakete beobachtet die in packet-type angeben werden. Paralleldazu sollte in einem anderen Terminal eine virtuelle Maschine angepingt werden.In diesem Beispiel befinden sich beide Terminals in Host1.Beispielhost1:∼# tcpdump -i eth1 ’icmp’ -c 215:31:32.211758 IP Host1 > 10.0.0.2: icmp 64: echo request seq 715:31:32.212657 IP 10.0.0.2 > Host1: icmp 64: echo reply seq 7

11

2 packets captured2 packets received by filter0 packets dropped by kernel

ProtoMit diesem Befehl filtert man bestimmte Paketarten. Parallel muss ein virtuellerRechner angepingt werden. Man kann aber auch die Option ’icmp’ benutzen, an-statt proto.’icmp’ zeigt nur den Paketverkehr von icmp-Paketen an.Beispielhost1:∼# tcpdump -i eth1 ’icmp’ -c 215:32:55.162320 IP Host1 > 10.0.0.2: icmp 64: echo request seq 8915:32:55.163392 IP 10.0.0.2 > Host1: icmp 64: echo reply seq 892 packets captured2 packets received by filter0 packets dropped by kernel

DestinationHier wird wieder parallel ein virtueller Rechner angepingt werden. Als ip kannman nur die des pingenden Rechners und die des anzupingenden Rechners ange-ben. Diese Ausfuhrung gibt request an.tcpdump dst host ipBeispielhost1:∼# tcpdump -i eth1 dst 10.0.0.215:36:08.620698 IP Host1 > 10.0.0.2: icmp 64: echo request seq 28015:36:09.639860 IP Host1 > 10.0.0.2: icmp 64: echo request seq 281

SourceDieser Befehl gibt reply an und parallel muss ein virtueller Rechner angepingt wer-den. Als ip kann man nur die des pingenden Rechners und die des anzupingendenRechners angeben.tcpdump src host ipBeispielhost1:∼# tcpdump -i eth1 src 10.0.0.215:35:30.131865 IP 10.0.0.2 > Host1: icmp 64: echo reply seq 24215:35:31.147516 IP 10.0.0.2 > Host1: icmp 64: echo reply seq 243

HostEin virtueller Rechner wird parallel angepingt. Als ip kann man nur die des pingen-den Rechners und die des anzupingenden Rechners angeben. Es werden nursourceund destination field der Pakete gefieltert.tcpdump host ipBeispielhost1:∼# tcpdump -i eth1 host 10.0.0.1 -c 2

12

15:46:35.987363 IP Host1 > 10.0.0.2: icmp 64: echo request seq 89915:46:35.988250 IP 10.0.0.2 > Host1: icmp 64: echo reply seq 899

Falls eine Datei im Dateisystem einer VM gespeichert wurde, durfte das Auslesenvon dort aus schwierig sein. Deshalb soll die Datei in einem eigenem Verzeichniskopiert werden. Dies geht folgendermassen:

• Wechsle von VM auf Host (mit ’exit’)host1:∼# exit logoutConnection to Host1 closed.

• Vom Host aus, auf VM zugreifen (mit deren PIN) und Datei auf einem be-liebigen Ziel kopieren: nitrogen:/home/projekt# scpHost1:tee /home/projekt/IcmpGroup/ Password:tee 100

• Danach ist die Datei dann im eigenen Verzeichnis (hier:./IcmpGroup/)

1.1.7 Arp

ARP (Address Resolution Protocol) ist ein Netzwerkprotokoll, das die Zuordnungvon Internetadressen zu Hardwareadressen moglich macht. Obwohl es nicht aufEthernet- und IP-Protokolle beschrankt ist, wird es fast ausschließlich im Zusam-menhang mit IP-Adressierung auf Ethernet-Netzen verwendet. ARP gehort zurInternetschicht der TCP/IP-Protokollfamilie.Beispiel

host1:∼# arpAddress HWtype HWaddress Flags Mask Iface192.168.1.145 ether 00:FF:A7:F0:E7:04 C eth0

2 Beispielnetze

Nachdem einige Moglichkeiten zum Testen und uberprufen des Datenverkehrs vor-gestellt wurden, wird nun eine Einfuhrung in das Erstellen von Netzen mit Hilfevon XML beschrieben.

Die Nachrichtenbeispiele und Ausgaben wurden mit VNUML getestet und festge-halten. Inbesondere wird hier das Netzbeispiel-Szenario eingesetzt, dessen XML-Syntax im Anhang vor zu finden ist.

13

2.1 Dateiaufbau

Eine VNUML-Datei beginnt mit der Angabe der verwendeten XML-Version unddem Ort der VNUML-DTD-Datei, die die VNUML-Sprache definiert (<!DOCTYPE>-Tag). Die Spezifikation der Simulation muss mit einem <vnuml>-Tag beginnenund mit dem schließenden </vnuml>-Tag enden. Zwischen diesen beiden Tagskonnen vier weitere Tags (<global>, <net>, <vm> und <host>) zum Definie-ren der Netzwerke und Rechner gesetzt werden. Der Rahmen einer VNUML-Dateisieht so aus:

<?xml version="1.0"encoding="UTF-8">

<!DOCTYPE vnuml SYSTEM "usr/local/share/xml/vnuml/vnuml.dtd">

<vnuml>

<global>

...

</global>

...

</vnuml>

globalDie ”global”-Definitionen betreffen das gesamte Szenario und gelten somitfur alle Rechner des virtuellen Netzwerks. Mit dem Tag <version> wird dieVersion der VNUML-DTD-Datei nur einmal angegeben.

netDas Einfuhren eines virtuellen Netzwerks geschieht mit dem Tag <net>. In-nerhalb dieses Tags muss ein eindeutiger Name (name=...) gesetzt werden.Zusatzlich sind uber das Attributtype zwei Netzwerke moglich.

• virtual bridge (Der Einsatz einer virtuellen Bridge zum Verbindender virtuellen Rechner, die mit dem Netz verbunden sind. Hier sindroot-Rechte notig.)

• uml switch (Zum Verbinden der virtuellen Rechner des Netzes er-zeugt. Es sind keine root-Rechte notig.)

vmVirtuelle Rechner werden mit Hilfe des <vm>-Tags realisiert. Innerhalbdieses Tags werden weitere Tags zur Beschreibung der virtuellen Rechnerbenotigt.

• filesystem Gibt den Ort der Datei an.

• mem Gibt die Grosse des Arbeitsspeichers an.

14

• if Hier werden Netzwerk-Schnittstellen auf dem virtuellen Rechner an-gelegt.

• route Ermoglicht das Konfigurieren von statischen Routen.

• forwarding Ermoglicht das Weiterreichen von IP-Paketen.

hostDer <hostif>-Tag ist ahnlich zum <if>-Tag. Dieser Tag dient zum Defi-nieren einer Verbindung zwischen einer Schnittstelle und einem Netz. DieSchnittstelle fur die neue virtuelle Verbindung wird auf dem Host automa-tisch erzeugt und hat stets den Namen des virtuellen Netzwerks, mit dem sieverbunden ist.In den folgenden Unterkapiteln werden verschiedene Netze veranschaulichtund deren XML-Dateien im Anhang prasentiert.

2.2 Beispielnetz 1

Abbildung 3: Beispielnetz 1

15

Dieses einfache Netz enthalt zwei Hosts und einen Router. Host1 ist an net0und Host2 an net1 angeschlossen. Alle Routen sind statisch vordefiniert.

2.3 Beispielnetz 2

Abbildung 4: Beispielnetz 2

Dieses Netz besteht aus ebenfalls zwei Host. Jedoch hat dieses Netz nocheinen zusatzlichen Router, der hier als default-Router dient. Die Besonder-heit dieses Routers ist, dass dieser die Aufgabe der Weiterleitung hat. Sollteein Rechner einen anderen an pingen wollen, so gelangen die Daten erst anden default-Router und werden von diesem dann an das gewunschte Ziel wei-tergeleitet.

An diesem Netz wurde noch etwas ausprobiert dass in der Einleitung nichtvorgefuhrt wurde.Angenommen man startet von Host1 und mochte 10.0.2.2 an pingen. An-hand des Netzes weiss man, dass es unsinnig ist wenn der Weg zum Ziel

16

erst uber den default-Router geht. Aber was passiert wenn man diesen pingdurchfuhrt?

-Ausgabe

host1:∼# ping 10.0.2.2 PING 10.0.2.2 (10.0.2.2) 56(84) bytes of

data. >From 10.0.1.3: icmp seq=1 Redirect Host(New nexthop: 10.0.1.2)

64 bytes from 10.0.2.2: icmp seq=1 ttl=64 time=11.2 ms >From 10.0.1.3:

icmp seq=2 Redirect Host(New nexthop: 10.0.1.2) 64 bytes from 10.0.2.2:

icmp seq=2 ttl=64 time=2.01 ms >From 10.0.1.3: icmp seq=3 Redirect

Host(New nexthop: 10.0.1.2) 64 bytes from 10.0.2.2: icmp seq=3 ttl=64

time=1.79 ms

Hier sieht man das in der Ausgabe eine Wieterleitung (redirect) statt ge-funden hat. Nachdem erkannt wurde dass der kurzeste Weg nicht uber dendefault-Router geht, sondern uber den nexthop mit der ip 10.0.1.2. Somitgelangen wir schneller zum Ziel 10.0.2.2.

17

2.4 Beispielnetz 3

Abbildung 5: Beispielnetz 3

Dieses Netz ist etwas grosser als die anderen beiden. Nun sind drei Router undfunf Netze vorhanden. Die Besonderheit an diesem Netz ist das Deklariereneines Host (ip 10.0.4.2).

3 ICMP Nachrichtentypen

ICMP ist zwar eine Ebene uber IP angeordnet aber in IP integriert. ICMP-Nachrichten werden beim Versand im Datenteil von IP-Datagrammen ein-gekapselt. Dabei sind im IP-Header der Servicetyp immer 0 und die Proto-kollnummer immer 1. Die wesentlichen Headers einer ICMP-Nachricht sinddas Typfeld oder type, die die Klasse der ICMP-Nachricht angibt und dasCodefeld odercode, die die Art der Nachricht spezifiziert. Beide sind jeweils 8Bit lang und legen zusammen die Funktionalitat der einzelnen ICMP-Pakete

18

fest. Die eigentlichen Informationen werden im Nachrichtenfeld (ICMP Da-ta) oder Daten festgehalten, die weitere Felder beinhalten konnen.Man kann die Nachrichtentypen in zwei teilen: Die Anfragetypen und Fehler-typen. Die Anfragen werden von einem Rechner (oder in VNUML von einervirtuellen Maschine) versendet. Kein Rechner oder VM ist jedoch verpflich-tet, ICMP-Nachrichten zu versenden, mit einer Ausnahme: jeder Rechneroder VM muss auf ein Echo Request immer mit einem Echo Reply ant-worten. (s.u.) Die Tabelle fasst alle Nachrichtentypen zusammen. Man liestdie Tabelle wie folgendes: empfangt ein Rechner eine Nachricht mit Typ=3und Code=2, so kann er bei Kenntnis dieser bestimmen, was die Fehler ver-ursacht hat, in diesem Fall dass der Absender das vorher angesprochenerProtokoll unbekannt war. Kennt dieser Rechner den Code nicht, so weiss ernur, dass der Absender aus irgendeinem Grund unerreichbar war. Wenn auchnoch der Typ unbekannt, ist somit die Nachricht nutzlos. Fur die folgendenAnwendungen wurde das Netzbeispiel 5 in der Abbildung 6 benutzt mit dazugehoriger XML-Datei:

3.1 Echo Request - Echo Reply

Die bekannteste Dienst, die auf ICMP basiert ist, ist ’ping’. Ping dient zumVersenden von Diagnose-Nachrichten. Es lost ein Echo Request aus, die zumanderen Rechner geleitet wird. Dieser muss auf der Anfrage mit einem Echo

Reply antworten. Sobald die Antwort beim ersten Rechner ankommt, erhaltder Benutzer eine entsprechende Ausgabe, die unten illustriert ist.Mit dieser ICMP-Nachricht kann eine Netzwerkverbindung getestet werden.Man kann zu jeder IP-Adresse eine Echo-Nachricht senden und der Empfangermuss den Inhalt dieser Nachricht dann in seiner Echo-reply-Nachricht zuruck-schicken. Dadurch wird festgestellt, ob ein bestimmter Rechner oder VM(genauer eine bestimmte IP-Adresse) erreichbar ist oder nicht. Auf Benut-zerebene nutzt das Programm ping genau diesen ICMP-Dienst. Das ICMP-Typfeld hat bei diesen Nachrichten den Wert 8 fur echo-Anforderungen und0 fur echo-Antwort-Nachrichten. Host1 schickt eine Anfrage an Host2, derwiederum eine Antwort zuruckschickt.

host1:∼# ping 10.0.2.1

PING 10.0.2.1 (10.0.2.1) 56(84) bytes of data.

64 bytes from 10.0.2.1: icmp seq=1 ttl=63 time=1.77 ms

64 bytes from 10.0.2.1: icmp seq=2 ttl=63 time=1.70 ms

64 bytes from 10.0.2.1: icmp seq=3 ttl=63 time=1.70 ms

19

Abbildung 6: Beispielnetz 4

Mit tcpdump konnen auch Nachrichtentypen getestet und gefiltert werdenwie folgendes: tcpdump -i [Schnittstelle] icmp[icmptype] [!= | == |

<= | >=] icmp-[Icmp Typ].

Beispiele:icmp[icmptype] != icmp-echoreply

icmp[icmptype] == icmp-icmp-echo

icmp[icmptype] <= icmp-timxceed

Nach Echo Reply filtern.

host1:∼# tcpdump -i eth1 icmp[icmptype] != icmp-echo

:

09:23:24.864831 IP 10.0.2.1 > host1: icmp 64: echo reply seq 8

20

09:23:25.823965 IP 10.0.2.1 > host1: icmp 64: echo reply seq 9

:

Oder nach Echo Request filtern.

host1:∼# tcpdump -i eth1 icmp[icmptype] != icmp-echoreply

:

09:25:30 IP host1 > 10.0.2.1: icmp 64: echo request seq 1

09:25:31 IP host1 > 10.0.2.1: icmp 64: echo request seq 2

:

3.2 Destination Unreachable

Eine Destination-Unreachable-Nachricht wird verschickt, wenn ein Paket nichtzustellbar ist, weil der Empfanger nicht erreichbar ist. Diese kann durch ver-schiedene Ursachen sein z.B. dass der Empfanger gar nicht existiert, keinpassendes Protokoll geladen ist oder einfach das Routing nicht vollstandigwar. Ein Ziel kann z.B. ein anderes Netz, Host, Port oder Protokoll sein.Wenn ein Netz (Typ=3 und Code=0) nicht erreichbar ist, folgt die Angabevon !N die RTT-Ausgabe. In unserem Beispiel existiert das Netz 10.0.4.0nicht, und wird entsprechend als unerreichbar gemeldet.

host1:∼# traceroute 10.0.4.1

traceroute to 10.0.4.1 (10.0.4.1), 30 hops max, 38 byte packets

1 10.0.0.2 (10.0.0.2) 49.681 ms 5.262 ms 1.940 ms

2 10.0.1.2 (10.0.1.2) 3.036 ms !N 4.168 ms !N 3.772 ms !N

:

Wenn ein Host (Typ=3 und Code=1) nicht erreichbar ist, folgt die Angabevon !H die RTT-Ausgabe. Im Beispeil ist weder ein Host noch ein Routermit der Adresse 10.0.0.3 vorhanden.

host1:∼# traceroute 10.0.0.3

traceroute to 10.0.0.3 (10.0.0.3), 30 hops max, 38 byte packets

1 host1 (10.0.0.1) 3025.969 ms !H 2968.461 ms !H 3003.922 ms !H

:

Destination-Unreachable kann auch durch Abschaltung eines Hosts oderRouters provoziert werden. Host1 mochte zum Beispiel mit Host2kommunizieren. Dies passiert mithilfe von den beiden Router. Eine derSchnittstellen von Router2 kann man mit router2:∼# ifconfig [eth1 |

eth2] down abschalten. Der Ping-Befehl (oder auch traceroute) wird danndiese Nachricht zuruckgeben.

21

3.3 Time Exceeded

Wenn eine Nachricht sich so lange im Netz befunden hat, dass ’Time-To-Live’ (TTL) abgelaufen ist, dann wird eine Time-Exceeded-Nachricht ver-schickt. Das bedeutet, wenn das Time-to-Live-Feld in einem IP-DatagrammNull ist. Dabei hat das ICMP-Typ-Feld den Wert 11 und das Codefeld dieWerte 0 oder 1. Null bedeutet Time-to-Live abgelaufen, eins bedeutet, dassdie Reassemblierungszeit abgelaufen ist. Um diese Nachricht zu demonstrie-ren, wird versucht Kontakt mit einem (nicht-existierenden) Host 10.0.2.3aufzunehmen. Beide Router werden gefragt ob dieser Host ihr bekannt ist.Traceroute-Ausgabe sieht folgendermaßen aus:

host1:∼# traceroute 10.0.2.3traceroute to 10.0.2.3 (10.0.2.3), 30 hops max, 38 byte packets1 10.0.0.2 (10.0.0.2) 23.467 ms 2.139 ms 0.534 ms2 10.0.1.2 (10.0.1.2) 0.685 ms 1.076 ms 0.590 ms

3 10.0.1.2 (10.0.1.2) 3010.687 ms !H 3012.818 ms !H 3013.455 ms !H.

Entsprechende ungefilterte Tcpdump-Ausgabe:host1:∼# tcpdump -i eth1 ’icmp’:18:29:28.115243 IP 10.0.0.2 > host1: icmp 46: time exceeded in-transit18:29:28.137446 IP 10.0.1.2 > host1: icmp 75: net 138.4.2.10 unreachable18:29:28.142426 IP 10.0.1.2 > host1: icmp 75: net 138.4.2.10 unreachable18:29:33.088509 IP 10.0.1.2 > host1: icmp 75: net 138.4.2.10 unreachable18:29:33.089087 IP 10.0.1.2 > host1: icmp 75: net 138.4.2.10 unreachable18:29:38.098084 IP 10.0.1.2 > host1: icmp 75: net 138.4.2.10 unreachable18:29:38.098856 IP 10.0.0.2 > host1: icmp 46: time exceeded in-transit18:29:38.101195 IP 10.0.0.2 > host1: icmp 46: time exceeded in-transit18:29:38.102016 IP 10.0.1.2 > host1: icmp 46: time exceeded in-transit18:29:38.104582 IP 10.0.1.2 > host1: icmp 75: net 138.4.2.10 unreachable:

Durch Filterung kann man nur die gewunschte Nachricht auslesen.host1:∼# tcpdump -i eth1 ’icmp[icmptype] == icmp-timxceed’:18:50:10.803676 IP 10.0.0.2 > host1: icmp 46: time exceeded in-transit18:50:20.833712 IP 10.0.0.2 > host1: icmp 46: time exceeded in-transit18:50:10.804150 IP 10.0.1.2 > host1: icmp 46: time exceeded in-transit::

3.4 Redirect

Eine Redirect-Nachricht wird verschickt, wenn ein Router bemerkt, dass eseinen besseren Weg gibt als uber den in der Routing-Tabelle. Er schickt al-so eine Empfehlung zur Nachrichtenquelle, das sie weitere Nachrichten zum

22

gleichen Ziel, uber den angegebenen Gateway-Adresse zu routen. Im Netzbei-spiel in der Abbildung(7), host1 versucht host2 anzusprechen uber router2.Router2 aber kennt einen besseren Weg uber router1 nach host2 und teilthost1 dies mit. Danach lauft alle Nachrichten von host1 nach host2 uberrouter1.

host1:∼# ping 10.0.2.1

PING 10.0.2.1 (10.0.2.1) 56(84) bytes of data.

>From 10.0.1.3: icmp seq=1 Redirect Host(New nexthop: 10.0.1.2)

64 bytes from 10.0.2.1: icmp seq=1 ttl=63 time=49.6 ms

>From 10.0.1.3: icmp seq=2 Redirect Host(New nexthop: 10.0.1.2)

64 bytes from 10.0.2.1: icmp seq=2 ttl=63 time=3.61 ms

64 bytes from 10.0.2.1: icmp seq=3 ttl=63 time=1.80 ms

64 bytes from 10.0.2.1: icmp seq=4 ttl=63 time=1.68 ms

64 bytes from 10.0.2.1: icmp seq=5 ttl=63 time=1.81 ms

:

:

Entsprechende Tcpdump-Ausgabe:

host1:∼# tcpdump -i eth1 ’icmp’:19:43:31.530198 IP host1 > 10.0.2.1: icmp 64: echo request seq 119:43:31.626355 IP 10.0.1.3 > host1: icmp 92: redirect 10.0.2.1 to host10.0.1.219:43:31.626381 IP 10.0.1.3 > host1: icmp 75: net 138.4.2.10 unreachable19:43:31.676186 IP 10.0.2.1 > host1: icmp 64: echo reply seq 119:43:32.535229 IP host1 > 10.0.2.1: icmp 64: echo request seq 219:43:32.535565 IP 10.0.1.3 > host1: icmp 92: redirect 10.0.2.1 to host10.0.1.219:43:32.537288 IP 10.0.2.1 > host1: icmp 64: echo reply seq 219:43:33.550059 IP host1 > 10.0.2.1: icmp 64: echo request seq 319:43:33.550572 IP 10.0.2.1 > host1: icmp 64: echo reply seq 3::

Die folgende 5 Nachrichtentypen wurden im Rahmen des Projektpraktikumsnicht getestet. Sie werden trotzdem zur Vollstandigkeit kurz erwahnt. Einigesind veraltet zum Beispiel Source Quench und Information Request/Reply

und werden in der gegenwartigen Programentwiklung nicht immer beruck-sichtigt.Die Timestamp Request - und Timestamp Reply-Nachrichten ermoglichendie Zeitsynchronisation zweier Rechner. Dadurch konnen Verspatungen im

23

Abbildung 7: Redirect-Nachricht Beispielnetz 5

Datenverkehr erkannt werden. Timestamp Reply ermoglicht die Messungder Zeit, die ein Datagramm benotigt. Der Sender des Timestamp Requests

erhalt vom Empfanger ein Reply, in welchem Sendezeit und Empfangszeitsowie die Sendezeit des Timestamp Replys enthalten sind.

3.5 Source Quench

Hat ein Rechner Probleme, die ankommenden Pakete rechtzeitig zu verar-beiten (Uberlastung durch Sender oder Urpsrungshost), so sendet er eineSource Quench-Nachricht. Diese veranlaßt den Sender, die Rate seiner Pake-te zu vermindern. Der Sender kann danach die Ubertragungsrate erhohen biser wieder diese Nachricht empfangt. Der Sender (host oder Gateway) kannSource Quench schicken bereits vor das Erreichen des Limits, damit keineNachricht verworfen werden muss.

24

3.6 Parameter Problem

Es ist ein Problem beim Auswerten der Nachricht aufgetreten, das auf feh-lerhafte oder unbekannte Parameter im IP-Header zuruckzufuhren ist. DieUrsache fur diesen Fehler konnte ein falsch gesetztes Argument in den IP-Optionen sein.

3.7 Information Request-Reply

Dieser Nachrichtentyp ermoglicht es einem Host, seine Netz-Adresse zu er-fahren. Information Request(Informationsmeldung-Anforderung) mit derZieladresse 0.0.0.0 wird gesendet, was dem eigenen Netzwerk entspricht. Einbeliebiger Rechner, der die Anforderung empfangt, sendet nun eine Antwort(Information Reply) mit der richtigen Netzwerkandresse als Sendeadresse.Dieses Verfahren wird als veraltet betrachtet und sollte nicht mehr verwendetwerden.

3.8 Address Mask Request-Reply

Die Adressfeld-Format Nachrichten dienen dazu, die Subnetzmaske einesNetzwerkes herauszufinden. Ein Rechner sendet dazu eine Address Mask

Request(Adressfeld-Format Anforderung) an den Router, und bekommt vondiesem eine Antwort (Address Mask Reply), in der der Router dem Rechnerim Feld ”Adress Mask” die Subnetzmaske mitteilt.

4 Ethereal

Ethereal ist eine Software zur Analyse von Netzwerkprotokollen. Sie wurdeunter der General Public License als Open-Source-Software entwickelt.Das Werkzeug stellt nach dem Protokollieren des Datenverkehrs einer Netz-werkschnittstelle (zum Beispiel Ethernet-Netzwerkkarte) die Daten in Formeinzelner Pakete dar. Dabei werden die hexadezimal codierten Daten uber-sichtlich und fur den Menschen nachvollziehbar analysiert. So konnen zumBeispiel auch ICMP-Nachrichten analysiert werden. Ethereal ist fur fast allegangige Betriebsysteme frei verfugbar. Allerdings ist auf (Suse) Linux einigeszu beachten, wie die Erklarungen unten darstellen.Wer als Root auf seinem User-Desktop eine grafische Anwendung (dazugehort Ethereal) starten mochte, konnte statt einem neuen Fenster ledig-lich einen Hinweis der folgenden Art erhalten. (’nitrogen’ ware Name desRechners):

25

Error: Can’t open display: :0.0.

Xlib: connection to ":0.0" refused by server

Xlib: Client is not authorized to connect to Server

oder:nitrogen:/home/projekt/IcmpGroup # ethereal

Xlib: connection to ":0.0" refused by server

Xlib: No protocol specified

(ethereal:5965): Gtk-WARNING **: cannot open display:

Diese Fehlermeldung wird von der Zugriffskontrolle des X-Window Systemsausgelost. Die Kontrolle gestattet nur den Usern das Darstellen von Fenstern,die vom Eigentumer des Desktops hierzu autorisiert worden sind.Autorisation kann durch das Tool xhost erfolgen: So gibt ein xhost +localhost

(vom Eigner des X-Servers getippt) den X-Server frei. Es gilt jedoch fur dieVerwendung von xhost:Der X-Server wird allgemein fur alle geoffnet, und nicht nur fur den gewunsch-ten User. Ist der X-Server offen, sollte man alleine am Rechner sitzen, un-vernetzt sein, und nicht ins Internet gehen. Diese Sicherheitsgefahr wird nurdann gebannt, wenn man explizit den X-Server wieder sperrt. Dies erfolgtdurch xhost -localhost oder Neustart des X-Window Systems erledigt.Um unproblematisch gezielt die Benutzung des X-Window freizugeben kannman das Tool xauth einsetzen. Dieses gestattet einem einzigen User den Zu-griff auf den X-Server, der auch jederzeit wieder ausgesperrt werden kann.Der Einsatz erfolgt in der Art:Der Besitzer eines Desktops erhalt mit diesem die Datei∼/.Xauthority; Diesebeinhaltet einen oder mehrere ”Schlussel”, mittels derer der X-Server kontak-tiert werden kann. Ubergibt dieser User nun einen dieser Schlussel an einenanderen User, so kann dieser sie seiner ∼/.Xauthority hinzufugen, und somitebenfalls auf den X-Server zugreifen.Zwei Beispiele, um Rechte zu vergeben: (als ’user’ am Rechner ’nitrogen’).

1.projekt@nitrogen:∼> xauth extract schluessel $DISPLAYprojekt@nitrogen:∼> su -

Password:

nitrogen:∼# xauth merge /home/jo/schluessel

xauth: creating new authority file /root/.Xauthority

xauth: (argv):1: merge: unable to open file /home/jo/schluessel

nitrogen:∼# xauth merge /home/projekt/schluessel

xauth: creating new authority file /root/.Xauthority

26

nitrogen:∼# DISPLAY=:0.0; export DISPLAY

nitrogen:∼# ethereal

Starting ethereal...

2.Noch einfacher ist es beim Fremdzugriff als ’root’: Dieser kann einfach die∼/.Xauthority des betreffenden Users uber die Variable $XAUTHORITYmitverwenden. Dafur reicht ein einziger Befehl:nitrogen:∼# XAUTHORITY=/home/user/.Xauthority; export XAUTHORITY

Diese regelt die komplette Zugriffskontrolle, ist gleichzeitig weniger umstand-lich.Angenommen Ethereal lauft endlich. Zuerst muss die zu beobachtender Schnitt-stelle eingestellt werden. Die Abbildung 8 unten zeigt diesen Vorgang. Dabei

Abbildung 8: Ethereal Schnittstellen-Einstellung

erscheint eine Liste aller verfugbaren Schnittstellen in der Abbildung 9. Dar-aus kann man dan die gewunschte wahlen und vorbereiten (Art der Beob-achtung, Zeitintervalle, u.s.w.).

27

Abbildung 9: Liste der verfugbaren Schnittstellen

Die Abbildung 10 stellt das Abfangen der Nachrichten in einer Schnitt-stelle. Wie oben erwahnt, Ethereal zeichnet alle mogliche Protokollarten, diezur Ubersichtlichkeit gefiltert werden mussen. In diesem Fall wurden nur dieICMP Echo Request/Reply ausgeben. Ahnlich wie Tcpdump werden die Sen-dezeit, Quell- und Destinationsadressen sowie Protokoll ausgegeben. Fernerhat man die Moglichkeit noch detaillierte Informationen uber die ubertrage-ne Pakete zu erfahren. Dazu gehoren zum Beispiel die Grosse der Rahmendie MAC-Adressen. Durch ’Live-Update’ Einstellung konnen die Nachrichtenauch in ’Echtzeit’ herausgelesen werden (Je nach eingestellte Zeitintervalle).

Daruber hinaus konnen auch graphische Beobachtungen durchgefuhrt wer-den. Statt alpha-numerische Daten konnen mehrfarbige Graphen generiertwerden. Sie werden auch je nach Zeitintervall durchgehend ausgegeben.

28

Abbildung 10: Ethereal Snapshot

5 Schlusswort

5.1 ICMP Nachteile

ICMP Protokoll hat jedoch einige Schwachpunkte, die mißbraucht werdenkonnen. Ein Angriff kann z.B. durch das Versenden von kunstlich falscheFehlermeldungen.

• Denial-of-Service AngriffDurch standigen Empfang von ICMP-Nachrichten Time-Exceeded, Re-direct und Destination Unreachable kann es zum Dienstausfall auf derangegriffenen Maschine kommen.

29

• Ping-to-DeathDieser Angriff fuhrt ebenfalls zu Denial-of-Service. Ein Angreifer sendetICMP-Pakete mit riesiger Nutzdategroße. Dieser werden fragmentiertzum Zielsystem ubertragen und dort wieder zusammengesetzt. DurchInklusion des Ping-Headers uberschreitet das IP-Paket die maximalzulassige Große. Bei IP-Implementierungen, die solchen Uberlauf nichtabfangen konnen, kommt es zum Systemabsturz.

• RedirectMit ICMP-Redirect-Meldungen kann ein Angreifer Zutritt zum Systemerlangen. Durch Versenden von Redirect-Meldungen kann ein Angreiferden gesamten Datenverkehr eines Netzes uber seinen Rechner laufenlassen.

• ICMP-Dienste Echo - Echo ReplyDurch die ICMP-Dienste Echo und Echo Reply kann sich ein Angreifernutzliche Informationen uber ein Netzwerk verschaffen (z.b. Anzahl derMaschinen, welche IP-Adressen gibt es). Dieses Wissen kann dann furweitere Angriffe verwendet werden.

30

6 Anhang

6.1 ICMP Tabelle

Abbildung 11: ICMP Tabelle

31

6.2 XML-Syntax des Beispiel-Szenarios

6.2.1 Syntax des Beispielnetzes 1

Dieses Netz wurde bei der Darstellung der einzelnen Tools in Kapitel 1 ver-wendet.<!DOCTYPE vnuml SYSTEM "/usr/local/share/xml/vnuml/vnuml.dtd"><vnuml><global>

<version>1.5</version><simulation name>beispielnetz</simulation name>

<ssh key version="2">/root/.ssh/id rsa.pub</ssh key><automac/><ip offset>100</ip offset><host mapping/>

</global><net name="net0"/><net name="net1"/><vm name="Host1">

<filesystem type="cow">/usr/local/share/vnuml/filesystems/root fs tutorial</filesystem><mem>50M</mem><if id="1"net="net0">

<ipv4>10.0.0.1</ipv4></if><route type="inet"gw="10.0.0.2">10.0.1.0/24</route>

</vm><vm name="Router">

<filesystemtype="cow">/usr/local/share/vnuml/filesystems/root fs tutorial</filesystem>

<if id="1"net="net0"><ipv4>10.0.0.2</ipv4>

</if><if id="2"net="net1"><ipv4>10.0.1.1</ipv4>

</if><forwarding type="ip"/>

</vm><vm name="Host2">

<filesystemtype="cow">/usr/local/share/vnuml/filesystems/root fs tutorial</filesystem>

<if id="1"net="net1"><ipv4>10.0.1.2</ipv4>

</if><route type="inet"gw="10.0.1.1">10.0.0.0/24</route>

</vm></vnuml>

32

6.2.2 Syntax des Beispielnetzes 2

<!DOCTYPE vnuml SYSTEM "/usr/local/share/xml/vnuml/vnuml.dtd"><vnuml><global>

<version>1.5</version><simulation name>beispielnetz2</simulation name>

<ssh key version="2">/root/.ssh/id rsa.pub</ssh key><automac/><ip offset>100</ip offset><host mapping/>

</global><net name="net1"/><net name="net2"/><vm name="Host1">

<filesystem type="cow">/usr/local/share/vnuml/filesystems/root fs tutorial</filesystem><mem>50M</mem><if id="1"net="net1">

<ipv4>10.0.1.1</ipv4></if><route type="inet"gw="10.0.1.3">default</route><forwarding type="ip"/>

</vm><vm name="Router1">

<filesystemtype="cow">/usr/local/share/vnuml/filesystems/root fs tutorial</filesystem>

<if id="1"net="net1"><ipv4>10.0.1.2</ipv4>

</if><if id="2"net="net2"><ipv4>10.0.2.2</ipv4>

</if><forwarding type="ip"/>

</vm><vm name="Router2">

<filesystemtype="cow">/usr/local/share/vnuml/filesystems/root fs tutorial</filesystem>

<if id="1"net="net1"><ipv4>10.0.1.3</ipv4>

</if><route type="inet"gw="10.0.1.2">10.0.2.0/24</route><forwarding type="ip"/>

</vm><vm name="Host2">

<filesystemtype="cow">/usr/local/share/vnuml/filesystems/root fs tutorial</filesystem>

<if id="1"net="net2"><ipv4>10.0.1.2</ipv4>

</if>

33

<route type="inet"gw="10.0.2.2">default</route><forwarding type="ip"/>

</vm></vnuml>

6.2.3 Syntax des Beispielnetzes 3

<!DOCTYPE vnuml SYSTEM "/usr/local/share/xml/vnuml/vnuml.dtd"><vnuml><global>

<version>1.5</version><simulation name>beispielnetz3</simulation name>

<ssh key version="2">/root/.ssh/id rsa.pub</ssh key><automac/><ip offset>100</ip offset><host mapping/>

</global><net name="net0"/><net name="net1"/><net name="net2"/><net name="net3"/><net name="net4"/><vm name="Host1">

<filesystem type="cow">/usr/local/share/vnuml/filesystems/root fs tutorial</filesystem><mem>50M</mem><if id="1"net="net0">

<ipv4>10.0.0.1</ipv4></if>

<route type="inet"gw="10.0.0.2">10.0.1.0/24</route><route type="inet"gw="10.0.0.2">10.0.2.0/24</route><route type="inet"gw="10.0.0.2">10.0.3.0/24</route>

</vm><vm name="Router1">

<filesystemtype="cow">/usr/local/share/vnuml/filesystems/root fs tutorial</filesystem>

<if id="1"net="net0"><ipv4>10.0.0.2</ipv4>

</if><if id="2"net="net1"><ipv4>10.0.1.1</ipv4>

</if><route type="inet"gw="10.0.1.2">10.0.2.0/24</route><route type="inet"gw="10.0.1.2">10.0.3.0/24</route>

<forwarding type="ip"/></vm><vm name="Router2">

<filesystem

34

type="cow">/usr/local/share/vnuml/filesystems/root fs tutorial</filesystem><if id="1"net="net1">

<ipv4>10.0.1.2</ipv4></if><if id="2"net="net2">

<ipv4>10.0.2.1</ipv4></if><if id="3"net="net3">

<ipv4>10.0.3.2</ipv4></if><route type="inet"gw="10.0.1.1">10.0.0.0/24</route><forwarding type="ip"/>

</vm><vm name="Router3">

<filesystemtype="cow">/usr/local/share/vnuml/filesystems/root fs tutorial</filesystem>

<if id="1"net="net2"><ipv4>10.0.2.2</ipv4>

</if><if id="2"net="net3">

<ipv4>10.0.3.1</ipv4></if><if id="3"net="net4">

<ipv4>10.0.4.1</ipv4></if><route type="inet"gw="10.0.2.2">10.0.1.0/24</route><route type="inet"gw="10.0.2.2">10.0.3.0/24</route><route type="inet"gw="10.0.2.2">10.0.0.0/24</route><forwarding type="ip"/>

</vm><host>

<hostif net="net4"><ipv4>10.0.4.2</ipv4>

</hostif><route type="inet"gw="10.0.4.1">10.0.0.0/24</route><route type="inet"gw="10.0.4.1">10.0.1.0/24</route><route type="inet"gw="10.0.4.1">10.0.2.0/24</route><route type="inet"gw="10.0.4.1">10.0.3.0/24</route>

</host></vnuml>

6.2.4 Syntax des Beispielnetzes 4

<?xml version="1.0"encoding="UTF-8"?><!DOCTYPE vnuml SYSTEM "/usr/local/share/xml/vnuml/vnuml.dtd">

<vnuml><global><version>1.5</version>

35

<simulation name>beispiel2</simulation name><ssh key version="2">/root/.ssh/id rsa.pub</ssh key><automac/><ip offset>100</ip offset><host mapping/>

</global><net name=" Net0" mode=" uml switch"/><net name=" Net1" mode=" uml switch"/><net name=" Net2" mode=" uml switch"/><net name=" Net3" mode=" uml switch"/>

<vm name=" host1"><filesystem type="cow">/usr/local/share/vnuml/filesystems/root fs tutorial</filesystem><mem>50M</mem><if id="1"net="Net0"><ipv4>10.0.0.1</ipv4></if>

<route type="inet"gw="10.0.0.2">default</route></vm><vm name="router1"><filesystem type="cow">/usr/local/share/vnuml/filesystems/root fs tutorial</filesystem>

<if id="1"net="Net0"><ipv4>10.0.0.2</ipv4></if><if id="2"net="Net1"><ipv4>10.0.1.1</ipv4></if>

<route type="inet"gw="10.0.1.2">default</route><forwarding type="ip"/></vm><vm name="router2"><filesystem type="cow">/usr/local/share/vnuml/filesystems/root fs tutorial</filesystem>

<if id="1"net="Net1"><ipv4>10.0.1.2</ipv4></if><if id="2"net="Net2"><ipv4>10.0.2.2</ipv4></if><if id="3"net="Net3"><ipv4>10.0.3.2</ipv4></if>

<route type="inet"gw="10.0.1.1">10.0.0.0/24</route><forwarding type="ip"/></vm><vm name="host2"><filesystem type="cow">/usr/local/share/vnuml/filesystems/root fs tutorial</filesystem>

<if id="1"net="Net2"><ipv4>10.0.2.1</ipv4></if>

<route type="inet"gw="10.0.2.2">default</route>

36

</vm><vm name="host3"><filesystem type=cow�/usr/local/share/vnuml/filesystems/root fs tutorial</filesystem>

<if id="1"net="Net3"><ipv4>10.0.3.1</ipv4></if>

<route type="inet"gw="10.0.3.2">default</route></vm></vnuml>

6.2.5 Syntax des Beispielnetzes 5

<?xml version="1.0"encoding="UTF-8"?><!DOCTYPE vnuml SYSTEM "/usr/local/share/xml/vnuml/vnuml.dtd">

<vnuml><global><version>1.5</version><simulation name>beispiel3-redirect</simulation name>

<ssh key version="2">/root/.ssh/id rsa.pub</ssh key><automac/><ip offset>100</ip offset><host mapping/>

</global><net name=" Netz1" mode=" uml switch"/><net name=" Netz2" mode=" uml switch"/><net name=" Netz3" mode=" uml switch"/>

<vm name=" host1"><filesystem type="cow">/usr/local/share/vnuml/filesystems/root fs tutorial</filesystem>

<mem>50M</mem><if id="1"net="Netz1"><ipv4>10.0.1.1</ipv4></if>

<route type="inet"gw="10.0.1.3">default</route></vm><vm name="router1"><filesystem type="cow">/usr/local/share/vnuml/filesystems/root fs tutorial</filesystem>

<if id="1"net="Netz1"><ipv4>10.0.1.2</ipv4></if><if id="2"net="Netz2"><ipv4>10.0.2.2</ipv4></if>

<forwarding type="ip"/></vm><vm name="host2"><filesystem type="cow">/usr/local/share/vnuml/filesystems/root fs tutorial</filesystem>

<if id="1"net="Netz1"><ipv4>10.0.1.3</ipv4></if>

37

<if id="2"net="Netz3"><ipv4>10.0.3.1</ipv4></if>

<route type="inet"gw="10.0.1.2">10.0.2.0/24</route><route type="inet"gw="10.0.3.1">0.0.0.0/16</route><forwarding type="ip"/></vm><vm name="host3"><filesystem type="cow">/usr/local/share/vnuml/filesystems/root fs tutorial</filesystem>

<if id="1"net=Netz2"><ipv4>10.0.2.1</ipv4></if>

<route type="inet"gw="10.0.2.2">default</route></vm></vnuml>

38

6.3 Aufgaben und Losungen

Nun sind Sie an der Reihe. Nachdem Sie hoffentlich alles gut verstanden ha-ben, durfen Sie noch zum Abschluss ein paar Aufgaben losen.

6.3.1 Aufgaben

Aufgabe 1:

Konfigurieren Sie ein Netz, das aus drei Routern,zwei Hosts und drei Netzenbesteht.

39

Aufgabe 2:

Konfigurieren Sie wieder ein Netz, das aus drei Routern,zwei Hosts und dreiNetzen besteht. Aber diesmal soll ein default-router eingebaut werden.

Aufgabe 3:

Dies ist eine Fehlerdatei. Versuchen sie, ohne testen, die Fehler in der Dateizu finden. Viel Erfolg!!<!DOCTYPE vnuml SYSTEM "/usr/local/share/xml/vnuml/vnuml.dtd"><vnuml><global>

<version>1.5</version><simulation name>bsp3</simulation name>

<ssh key version="2">/root/.ssh/id rsa.pub</ssh key><automac/><ip offset>100</ip offset><host mapping/>

40

</global><net name="net0"/><net name="net1"/><net name="net2"/><vm name="Host1">

<filesystem type="cow">/usr/local/share/vnuml/filesystems/root fs tutorial</filesystem><mem>50M</mem><if id="1"net="net0">

<ipv4>10.0.0.1</ipv4></if>

<route type="inet"gw="10.0.0.2">default</route><forwarding type="ip"/>

</vm><vm name="rech1">

<filesystemtype="cow">/usr/local/share/vnuml/filesystems/root fs tutorial</filesystem>

<if id="1"net="net0"><ipv4>10.0.0.2</ipv4>

</if><if id="2"net="net1"><ipv4>10.0.1.1</ipv4>

</if><route type="inet"gw="10.0.1.2">10.0.2.0/24</route><route type="inet"gw="10.0.1.2">10.0.3.0/24</route>

<forwarding type="ip"/></vm><vm name="rech2">

<filesystemtype="cow">/usr/local/share/vnuml/filesystems/root fs tutorial</filesystem>

<if id="1"net="net2"><ipv4>10.0.2.2</ipv4>

</if><if id="2"net="net1">

<ipv4>10.0.1.1</ipv4></if><route type="inet"gw="10.0.2.1">default</route><forwarding type="ip"/>

</vm><vm name="rech3">

<filesystemtype="cow">/usr/local/share/vnuml/filesystems/root fs tutorial</filesystem>

<if id="1"net="net0"><ipv4>10.0.0.3</ipv4>

</if><if id="2"net="net1">

<ipv4>10.0.1.2</ipv4></if><route type="inet"gw="10.0.1.1">default</route>

41

<forwarding type="ip"/></vm><vm name="Host2">

<filesystemtype="cow">/usr/local/share/vnuml/filesystems/root fs tutorial</filesystem>

<if id="1"net="net1"><ipv4>10.0.1.3</ipv4>

</if><route type="inet"gw="10.0.1.2">default</route><forwarding type="ip"/>

</vm></vnuml>

6.3.2 Losungen

Losung zu Aufgabe 1:<!DOCTYPE vnuml SYSTEM "/usr/local/share/xml/vnuml/vnuml.dtd">

<vnuml><global>

<version>1.5</version><simulation name>bsp1</simulation name>

<ssh key version="2">/root/.ssh/id rsa.pub</ssh key><automac/><ip offset>100</ip offset><host mapping/>

</global><net name="net0"/><net name="net1"/><net name="net2"/><vm name="host1">

<filesystem type="cow">/usr/local/share/vnuml/filesystems/root fs tutorial</filesystem><mem>50M</mem><if id="1"net="net0">

<ipv4>10.0.0.1</ipv4></if>

<route type="inet"gw="10.0.0.2">10.0.2.0/24</route><route type="inet"gw="10.0.0.3">10.0.1.0/24</route>

<forwarding type="ip"/></vm><vm name="router1">

<filesystemtype="cow">/usr/local/share/vnuml/filesystems/root fs tutorial</filesystem>

<if id="1"net="net0"><ipv4>10.0.0.2</ipv4>

</if><if id="2"net="net2"><ipv4>10.0.2.1</ipv4>

42

</if><route type="inet"gw="10.0.2.2">10.0.1.0/24</route>

<forwarding type="ip"/></vm><vm name="router2">

<filesystemtype="cow">/usr/local/share/vnuml/filesystems/root fs tutorial</filesystem>

<if id="1"net="net2"><ipv4>10.0.2.2</ipv4>

</if><if id="2"net="net1">

<ipv4>10.0.1.1</ipv4></if><route type="inet"gw="10.0.2.1">10.0.0.0/24</route><route type="inet"gw="10.0.1.3">10.0.1.0/24</route><forwarding type="ip"/>

</vm><vm name="router3">

<filesystemtype="cow">/usr/local/share/vnuml/filesystems/root fs tutorial</filesystem>

<if id="1"net="net0"><ipv4>10.0.0.3</ipv4>

</if><if id="2"net="net1">

<ipv4>10.0.1.2</ipv4></if><route type="inet"gw="10.0.0.2">10.0.2.0/24</route><forwarding type="ip"/>

</vm><vm name="host2">

<filesystemtype="cow">/usr/local/share/vnuml/filesystems/root fs tutorial</filesystem>

<if id="1"net="net1"><ipv4>10.0.1.3</ipv4>

</if><route type="inet"gw="10.0.1.2">10.0.0.0/24</route><forwarding type="ip"/>

</vm></vnuml>

Losung zu Aufgabe 2:<!DOCTYPE vnuml SYSTEM "/usr/local/share/xml/vnuml/vnuml.dtd">

<vnuml><global>

<version>1.5</version><simulation name>bsp2</simulation name>

<ssh key version="2">/root/.ssh/id rsa.pub</ssh key><automac/>

43

<ip offset>100</ip offset><host mapping/>

</global><net name="net0"/><net name="net1"/><net name="net2"/><vm name="host1">

<filesystem type="cow">/usr/local/share/vnuml/filesystems/root fs tutorial</filesystem><mem>50M</mem><if id="1"net="net0">

<ipv4>10.0.0.1</ipv4></if>

<route type="inet"gw="10.0.0.2">default</route><forwarding type="ip"/>

</vm><vm name="router1">

<filesystemtype="cow">/usr/local/share/vnuml/filesystems/root fs tutorial</filesystem>

<if id="1"net="net0"><ipv4>10.0.0.2</ipv4>

</if><if id="2"net="net2"><ipv4>10.0.2.1</ipv4>

</if><route type="inet"gw="10.0.2.2">10.0.1.0/24</route><route type="inet"gw="10.0.0.3">10.0.1.0/24</route>

<forwarding type="ip"/></vm><vm name="router2">

<filesystemtype="cow">/usr/local/share/vnuml/filesystems/root fs tutorial</filesystem>

<if id="1"net="net2"><ipv4>10.0.2.2</ipv4>

</if><if id="2"net="net1">

<ipv4>10.0.1.1</ipv4></if><route type="inet"gw="10.0.2.1">default</route><forwarding type="ip"/>

</vm><vm name="router3">

<filesystemtype="cow">/usr/local/share/vnuml/filesystems/root fs tutorial</filesystem>

<if id="1"net="net0"><ipv4>10.0.0.3</ipv4>

</if><if id="2"net="net1">

<ipv4>10.0.1.2</ipv4>

44

</if><route type="inet"gw="10.0.1.1">default</route><forwarding type="ip"/>

</vm><vm name="host2">

<filesystemtype="cow">/usr/local/share/vnuml/filesystems/root fs tutorial</filesystem>

<if id="1"net="net1"><ipv4>10.0.1.3</ipv4>

</if><route type="inet"gw="10.0.1.2">default</route><forwarding type="ip"/>

</vm></vnuml>

Losung zu Aufgabe 3:In der Datei ist id=2 net4 nicht vorhanden und eine Route in rech1 fehlt.

45