Netzwerkgrundlagen für die Systemanalyse

Aus LinuxUser 03/2007

Netzwerkgrundlagen für die Systemanalyse

Komplexe Architektur

Solide Kenntnisse und die passenden Werkzeuge helfen bei der optimalen Konfiguration und der professionellen Diagnose Ihres Netzwerks.

Um ein Netzwerk einrichten, hilft es, wenn Sie sich zu allererst einige Grundlagen zum Aufbau und zur Funktionsweise eines solchen aneignen. Mit diesem Grundwissen richten Sie dann Hardware und Software im günstigen Fall in nur vier Schritten optimal ein.

Aufbau des Netzwerks

Ein Netzwerk nach dem weit verbreiteten TCP/IP-Modell, das die Basis des heutigen Internet bildet, teilt sich in vier Schichten auf (siehe Abbildung 1) [1]. Dieses Modell hat sich in der Praxis gegenüber dem komplexeren OSI-Schichten-Modell durchgesetzt [2]. Manche Texte verwenden den Begriff OSI-Schichten oder Layer jedoch synonym.

Abbildung 1: Das TCP/IP-Modell gliedert sich in vier Schichten, die aufeinander aufbauen.

Abbildung 1: Das TCP/IP-Modell gliedert sich in vier Schichten, die aufeinander aufbauen.

Netzwerkprogramme senden und empfangen nur Nutzdaten. Die darunterliegenden Schichten verkapseln diese und fügen jeweils eigene Steuerinformationen hinzu. Die Software, die das ganze implementiert, besteht aus einem TCP/IP-Protokollstapel (TCP/IP-Stack) und den Treibern für die eingesetzte Hardware.

Schicht für Schicht

Ethernet– und WLAN-Karten stellen auf der untersten Schicht den Zugang zum Netz bereit. Jedes Gerät verfügt über eine MAC-Adresse, eine 48-Bit-Zahl, die für jede Netzwerkhardware weltweit eindeutig ist. Die darüber liegende Vermittlungsschicht sorgt für die paketbasierte Kommunikation nach dem IP-Protokoll. Erst hier kommt die IP-Adresse ins Spiel (siehe Kasten “IP-Adressen und Netzwerk-Masken”). Das ARP-Protokoll vermittelt zwischen den hardwarenahen MAC-Adressen und den IP-Adressen.

IP-Adressen und Netzwerk-Masken

IP-Adressen teilen sich in einen Netzwerk- und in einen Host-Teil auf. Die Netzwerkmaske bestimmt, welcher Teil der 32-Bit großen IP-Adresse zum Netzwerk- und welcher zum Host-Teil gehört (siehe Abbildung 7). Die erste IP-Adresse eines Netzwerkbereiches ist die Netzwerkadresse, die letzte die Broadcast-Adresse. Auf letztere antworten, soweit nicht anders eingestellt, alle Geräte im gleichen Segment.

Abbildung 7: Eine Netzwerkmaske teilt eine IP-Addresse in einen Netz- und einen Host-Anteil auf.

Abbildung 7: Eine Netzwerkmaske teilt eine IP-Addresse in einen Netz- und einen Host-Anteil auf.

Der RFC 1918-Standard weist bestimmte Netzwerkbereiche für lokale, private Netzwerke zu:

  • 10.0.0.0/8
  • 172.16.0.0/12
  • 192.168.0.0/16
  • 169.254.0.0/16

IP-Adressen in diesen Bereichen vergibt die IANA nicht für öffentlich erreichbare Netzwerke. Der letzte IP-Adressraum ist zum konfigurationsfreien Vernetzen von Geräten in lokalen Netzen bestimmt. Das sogenannte Automatic Private IP Addressing, auch bekannt als Zeroconf, verwendet diese IP-Adressen, um für einen Computer automatisch eine Adresse zu wählen. Das Netz 127.0.0.0/8 ist für den lokalen Host reserviert, der üblicherweise die IP-Adresse 127.0.0.1 hat.

Möchte ein Host mit einem anderen kommunizieren, sendet er zunächst eine Rundfrage, welcher Rechner die gewünschte IP-Adresse hat. Fühlt sich ein anderer Host im gleichen Netzwerksegment angesprochen, antwortet er mit seiner MAC-Adresse. Beide Hosts merken sich die die jeweils andere Adresse für eine Weile, um sinnlose Nachfragen zu vermeiden.

Den Transport von Nutzdaten übernehmen das verbindungsorientierte TCP-Protokoll und das verbindungslose UDP-Protokoll. Das TCP-Protokoll stellt sicher, dass alle Datenpakete des Senders in der richtigen Reihenfolge beim Empfänger ankommen. Es bildet Prüfsummen über Segmente und sendet beschädigte Pakete neu, bis alle Daten übertragen sind. Das UDP-Protokoll überlässt diese Aufgabe dem jeweiligen Programm.

Die beiden Protokolle der Transportschicht TCP und UDP arbeiten Port-basiert (siehe Abbildung 2). Jedes Paket hat eine Quell- und Ziel-IP-Adresse, die jeweiligen Quell- und Ziel-Host bestimmt, und einen Quell- und einen Ziel-Port, die den jeweiligen Server-Dienst oder Client bestimmt. Für die meisten Dienste hat die IANA Standard-Ports zwischen 0 und 1023 festgelegt. Clients belegen für Verbindungen hingegen dynamisch Ports ab 1024 bis 65535.

Abbildung 2: Webbrowser und Webserver kommunizieren mit Hilfe von IP-Adressen und Ports miteinander.

Abbildung 2: Webbrowser und Webserver kommunizieren mit Hilfe von IP-Adressen und Ports miteinander.

Das verbindungsorientierte ICMP-Protokoll überträgt Fehlermeldungen, zum Beispiel, wenn ein Dienst nicht läuft oder ein bestimmter Host oder Router nicht antwortet. Ein häufiges Einsatzgebiet stellt das Pingen eines Hosts dar, um dessen Erreichbarkeit zu prüfen [5].

Anwendungsprotokolle wie HTTP, SMTP, IMAP und SSH, denen es auf das korrekte Übertragen aller Pakete ankommt, setzen in der Regel auf TCP auf. Protokolle wie NTP oder zum Teil auch DNS verwenden UDP, da sie den Verlust einzelner Datenpakete verkraften, beziehungsweise sich selbst darum kümmern, verlorengegangene Pakete erneut zu senden.

Pakete weiterleiten

Grundwissen über das Schichtenmodell hilft beim Verständnis, wie Netzwerkhardware arbeitet. Während einfache Switches auf der Zugangsebene des TCP/IP-Modells (OSI-Schicht 2) mehrere Geräte zu einem Segment zusammenfassen, verbinden Router mehrere unterschiedliche Netzwerksegmente, in dem Sie auf der Internet-Ebene (OSI-Schicht 3) IP-Pakete weiterleiten (siehe Abbildung 3).

ARP-Anfragen funktionieren nur innerhalb eines Netzwerksegments, da das Internet ansonsten mit nichts anderem mehr beschäftigt wäre. Daher ersetzt der Router die Absender-MAC-Adresse eines weiterzuleitenden IP-Pakets durch die MAC-Adresse des Gerätes, über den er es weiterleitet.

Abbildung 3: Router leiten auf der Internet-Ebene einzelne Pakete zwischen unterschiedlichen Netzwerksegmenten weiter.

Abbildung 3: Router leiten auf der Internet-Ebene einzelne Pakete zwischen unterschiedlichen Netzwerksegmenten weiter.

Router entscheiden anhand einer Routing-Tabelle. Diese enthält mehrere Routen, die anhand der Ziel-IP-Adresse eines Pakets angeben, wohin es weiterzuleiten ist (Abbildung 4).

Abbildung 4: Beispiel für statisches Routing zwischen zwei internen Netzen und dem Internet.

Abbildung 4: Beispiel für statisches Routing zwischen zwei internen Netzen und dem Internet.

In der Regel kennt jeder Router nur die nächste Station des Weges für ein Paket. Es hüpft also von einer Station zur nächsten seinem Ziel entgegen, oder in der Fachsprache: Es macht einen Hop. Ein Linux-System arbeitet nur dann als Router, wenn das Sie das Weiterleiten von Paketen (Forwarding) aktivieren.

Schnittstellen-Routen geben an, welches Netzwerk über welche Schnittstelle zu erreichen ist. Typische Schnittstellen unter Linux sind eth0 für die erste Ethernet-Karte, ppp0 für eine PPP-Verbindung oder lo für die Kommunikation auf dem lokalen Host (Loopback-Schnittstelle). Eine Route über ein Gateway gibt als Ziel hingegen einen anderen Host an. Der Router wählt dabei immer die speziellste Route, die auf die Zieladresse eines Paketes passt. So haben die Routen für 192.168.1.0/24 und 10.1.1.0/24 Vorrang vor der Standardroute default oder 0.0.0.0/0.

Der Router verringert den TTL-Zähler eines IP-Paketes, wenn er es weiterleitet, um der Wert 1. Sinkt der Zähler auf Null, sendet er die entsprechende ICMP-Fehlernachricht. Mit dieser Technik vermeiden es Router, unzustellbare Pakete unendlich lange weiterzuleiten.

Ein typisches Setup für zu Hause besteht aus zwei Routen: Eine Route leitet alle Pakete an das lokale Netzwerk über die Schnittstelle weiter. Eine allgemeine Standard-Route leitet alle anderen Pakete über ein Gateway weiter, welches das LAN an ein anderes LAN oder WAN anbindet. Als Gateway arbeitet heutzutage bei Privatpersonen oft ein DSL-Router oder eine Kombination aus DSL-Modem und Switch.

Doch was passiert mit den IP-Paketen, die eine IP-Adresse aus dem lokalen Netz als Absender haben? Internet-Router leiten diese nicht weiter. Daher ersetzt der lokale Router die Quelladresse jedes Pakets durch seine eigene Internet-Adresse (Abbildung 5). Den Quell-Port ersetzt er durch einen eigenen, dynamisch belegten Port. So schickt er das Paket weiter und merkt sich Quelladresse, Quell-Port und den neuen eigenen Port. Kommt an diesem ein Paket an, übersetzt der Router die Zieladresse und den Ziel-Port und gibt es an den lokalen Host weiter. Dieses Verfahren, genannt Masquerading, ist eine spezielle NAT-Variante.

Abbildung 5: Masquerading erlaubt Hosts aus lokalen Netzwerken mit der öffentlichen IP-Adresse des Routers mit dem Internet zu kommunizieren.

Abbildung 5: Masquerading erlaubt Hosts aus lokalen Netzwerken mit der öffentlichen IP-Adresse des Routers mit dem Internet zu kommunizieren.

Linux bietet weitere Möglichkeiten: So verwenden Sie mehrere Routing-Tabellen, um zum Beispiel bei mehreren DSL-Zugängen je nach Quell-IP-Adresse eines Pakets ein anderes Standard-Gateway anzusprechen [4]. Traffic Shaping hingegen erlaubt zum Beispiel, eine SSH-Sitzung gegenüber Filesharing-Verbindungen zu priorisieren [4][5][6]. Virtuelle Netzwerke, kurz VLANs, sparen Hardware ein und erlauben eine flexiblere Konfiguration als physikalische Netze [7].

Ein funktionierendes Netzwerk setzt voraus, dass Sie die IP-Adresse und die Netzwerkmaske der Schnittstelle konfigurieren und die Routen und Adresse DNS-Server eintragen. Dank DHCP funktioniert das mit Hilfe eines Servers, der den Clients die benötigten Angaben zuweist, heute in vielen Fällen automatisch.

Und die Sicherheit?

Einige vergleichsweise einfache Maßnahmen erhöhen die Sicherheit Ihres Netzwerkes ganz erheblich: Verwenden Sie aktuelle Software, spielen Sie Sicherheitspatches ein, und informieren Sie sich über Sicherheitslücken. Mailinglisten wie Buqtraq geben allgemein über aktuelle Probleme Auskunft [8]. Gängige Distributionen informieren in sogenannten Security Advisories über Sicherheitslücken in den Paketen der Distribution [9][10][11].

Konfigurieren Sie Ihre Rechner nach dem KISS-Prinzip: Bieten Sie beispielsweise nur die für den Betrieb des Servers erforderlichen Dienste an. Erlauben Sie für ausschließlich lokal verwendete Dienste auch nur Anfragen aus dem lokalen Netz. Setzen Sie zum Beispiel auf Ihrem Notebook einen Webserver ein, um HTML-Seiten zu testen, so konfigurieren Sie diesen so, dass er nur auf Anfragen über die Loopback-Schnittstelle reagiert.

Ein Netzwerk ist nur so sicher, wie das unsicherste Passwort, das darin zum Einsatz kommt. Verwenden Sie daher nur Passwörter mit ausreichender Länge und genügend Vielfalt in Bezug auf Groß- und Kleinbuchstaben und Sonderzeichen. Benutzen Sie zudem nur Dienste, die die Login-Informationen verschlüsselt übertragen. Das sicherste Passwort nützt nicht viel, wenn der Client es wie bei Telnet oder FTP im Klartext überträgt. Sie gewinnen noch mehr Sicherheit, wenn Sie Passwörter durch ein Public-Key-Verfahren ersetzen.

Pakete filtern

Erst, wenn diese Hausaufgaben erledigt sind, ergibt es Sinn, den Einsatz einer Firewall zu erwägen. Eine solche vermittelt zwischen einem sicheren und einem unsicheren Netz. Sie schützt das sichere Netz so gut wie möglich, während sie den Zugang zum unsicheren Netz – oft das Internet – ermöglicht. Dazu sortiert der Paketfilter die unerwünschte Pakete aus. Statt eines Netzwerkes schützen Firewalls auch einzelne Hosts, zum Beispiel ein Notebook, das oft auf Reisen geht.

Linux verfügt mit Iptables einen leistungsfähigen Paketfilter, mit dem Sie leicht eine Firewall aufsetzen [12]. Das modulare Iptables verwendet Einstiegspunkte in Kernel-Routinen (Hooks), die Netfilter bereitstellt.

Wie der Name schon sagt, basiert Iptables auf Tabellen mit Regeln zum Bearbeiten von Paketen (Abbildung 6). Eine Regel bestimmt, was mit Paketen geschieht. Die Tabelle filter enthält beispielsweise Regeln zum Filtern von Daten. In nat finden sich Regeln, um Adressen und Ports von Paketen zu manipulieren. Regeln zum Verändern von Paketen landen in der Tabelle mangle. Eigene Tabellen fassen bestimmte Regeln in einer Art Unterprogramm zusammen.

Abbildung 6: Iptables bietet durch seinen Aufbau die Möglichkeit einer flexiblen Konfiguration.

Abbildung 6: Iptables bietet durch seinen Aufbau die Möglichkeit einer flexiblen Konfiguration.

Je nach Tabelle gibt es vorgegebene Regelketten (Chains), die bestimmen, welche Regel zum Einsatz kommt. Die Regelkette INPUT behandelt eingehende Pakete an lokale Prozesse, OUTPUT kümmert sich um solche von lokalen Prozessen nach außen. Das Weiterleiten von Paketen regelt die Kette FORWARD. Vor dem Routing nimmt unter Umständen PREROUTING Einfluss auf die Pakete, und POSTROUTING ist die letzte Eingriffsmöglichkeit, bevor diese auf die Reise gehen.

Oft zum Einsatz kommen die Regelketten INPUT und OUTPUT sowie bei Routern auch FORWARD in der Tabelle filter. Für jede Regelkette existiert in jeder Tabelle eine Standardrichtlinie (Policy), die festlegt, was mit Paketen passiert, auf die keine spezielle Regel passt. Sie gibt als Ziel ACCEPT für das Akzeptieren oder DROP für das Verwerfen von Paketen an.

Dabei existieren zwei grundsätzliche Möglichkeiten, einen Paketfilter aufzubauen: Entweder Sie verbieten alles, was nicht ausdrücklich erlaubt ist, oder Sie erlauben alles, was nicht ausdrücklich verboten ist. Bequemer mag die zweite Möglichkeit erscheinen, sicherer ist die erste.

Jede Regel enthält zwei Teile: Der erste Teil bestimmt, auf welche Pakete die Regel zutrifft. Kriterien zur Auswahl von Paketen sind unter anderem: Quell-IP-Adresse, Ziel-IP-Adresse, Quell-Port, Ziel-Port, Schnittstelle von Quelle oder Ziel. Der zweite Teil gibt an, wie der Filter mit diesen Paketen verfährt.

Neben den eingebauten Zielen ACCEPT und DROP existiert ein weiteres eingebautes Ziel namens REJECT. Bei DROP verwirft Iptables das Paket, ohne den Absender zu informieren. Bei REJECT sendet es den ICMP-Fehler Port unreachable zurück. Bei REJECT meldet der anfragende Client sofort eine abgelehnte Verbindung (Connection refused), während er bei DROP auf die Antwort wartet und nach einem Zeitlimit abbricht.

Das Ziel MASQUERADE schreibt IP-Adresse und Port eines Pakets um, und das Ziel LOG schreibt den Zugriff in eine Protokolldatei. Je nach Ziel beendet Iptables das Abarbeiten der Regelkette (ACCEPT, DROP, REJECT, MASQUERADE) oder setzt es fort (LOG).

Häufig stellt sich die Aufgabe, IP-Pakete ausgehender Verbindungen weiterzuleiten, IP-Pakete eingehender Verbindungen jedoch zu blockieren. Da die Antwortpakete ausgehender Verbindungen jedoch auf einem beliebigen Port zwischen 1024 und 65535 ankommen, gehört es zu den Aufgaben, Pakete an diese Ports zu akzeptieren, auch wenn ein eingehendes Paket gar kein solches Antwortpaket ist. Dadurch gestalten sich einerseits die Regeln komplizierter als nötig, andererseits öffnen sich mehr Löcher als nötig.

Hier kommt der Connection Tracker von Iptables ins Spiel. Er liest den Datenstrom mit und merkt sich, welche Verbindungen der Benutzer oder das System aufbauen. Dieser Mechanismus erlaubt wiederum eine Regel, die wie folgt lautet: Akzeptiere alle eingehenden Pakete, bei denen es sich um Antworten auf ausgehende Verbindungen handelt. Der Connection Tracker arbeitet schnell, da er sich nur das erste Paket einer Verbindung anzusehen braucht. 

Glossar

TCP/IP

Transmission Control Protocol/Internet Protocol. Protokoll-Familie, auf der die Kommunikation in vielen Netzen basiert.

OSI

Siebenschichtiges Modell für die Netzwerkkommunikation. Standardisiert von der International Standards Organisation (ISO).

Ethernet

Kabelgebundene Netzwerktechnologie für lokale Netze (LANs). Weitgehend in IEEE 802.3 standardisiert.

WLAN

Wireless LAN. Netzwerktechnik für Funknetze. Standardisiert durch IEEE 802.11, basiert auf Ethernet.

MAC-Adresse

Weltweit eindeutige Adresse für eine Netzwerkhardware nach dem Ethernet-Standard (Karten für kabelgebundenes Ethernet, WLAN-Adapter, Bluetooth-Adapter). Eine 48-Bit-Zahl, üblicherweise in Hexadezimalschreibweise geschrieben, zum Beispiel: 00:02:8A:4F:58:42.

IP-Adresse

Nummer zum Adressieren von Geräten in einem IP-Netzwerk. Bei IPv4 32 Bit unterteilt in vier Gruppen zu je 8 Bit, in üblicher Dezimalschreibweise zum Beispiel: 192.168.1.1.

ARP

Address Resolution Protocol. Protokoll, um eine Netzwerkaddresse einer Hardwareadresse zuzuordnen.

Port

Adresszusatz in Form einer Nummer zwischen 0 und 65535, die dazu dient, Pakete den richtigen Diensten oder Clients zuzuordnen.

IANA

Internet Assigned Numbers Authority. Organisation, die unter anderen die Vergabe von IP-Adressen, Top-Level-Domains und Standard-Ports regelt.

HTTP

Hypertext Transport Protocol. Protokoll, um Daten über ein Netzwerk zu transportieren. Hauptsächlich fürs WWW eingesetzt.

SMTP

Simple Mail Transfer Protocol. Gängige Technik zum Versand von E-Mails.

POP3

Post Office Protocol 3. Protokoll, mit dem ein E-Mail-Client Mails von einem E-Mail-Server abholt.

IMAP

Internet Message Access Protocol. Protokoll für den Zugriff und zum Verwalten von Mails auf einem entfernten Server.

SSH

Secure Shell. Verschlüsselter Kommunikationskanal für Shell-Sitzungen auf entfernten Computern. Eignet sich auch zum Übertragen von Dateien.

DNS

Domain Name System. System und Protokoll, um Rechnernamen IP-Adressen und umgekehrt zuzuordnen. Beispiel: Der Server www.linux-user.de hat die IP-Adresse 87.106.38.241.

NTP

Network Time Protocol. Ermöglicht die Zeitsynchronisation über ein Netzwerk.

TTL

Time-to-live. Lebenszeit eines Paketes. Gibt die maximale Anzahl der Hops an, die ein Paket machen darf.

WAN

Wide Area Network. Ein weiträumiges Netzwerk, das sich über einen großen geographischen Bereich erstreckt.

NAT

Network Address Translation. Ein Verfahren, um eine IP-Adresse durch eine andere zu ersetzen.

VLANs

Virtual Local Area Netwerk. Ein VLAN ist ein virtuelles lokales Netzwerk innerhalb eines physischen lokalen Netzwerks. Linux unterstützt die Implementation, die der IEEE-Standard 802.1q definiert.

DHCP

Dynamic Host Configuration Protocol. Protokoll zur dynamischen Konfiguration von Hosts.

KISS

Keep It Small and Simple. Prinzip, stets die einfachste mögliche Lösung für ein Problem zu wählen.

Telnet

Dienst und Programm zur zeichenbasierten Kommunikation in beide Richtungen, zum Beispiel für Shell-Sitzungen.

FTP

File Transfer Protocol. Protokoll zum Übertragen von Dateien.

Public-Key-Verfahren

Verschlüsselungsverfahren, das anstatt eines Passworts mit einem zweigeteilten Schlüssel arbeitet. Der private Schlüssel dient zum Entschlüsseln, der öffentliche zum Verschlüsseln.

Infos

[1] Wikipedia-Artikel zu TCP/IP: http://de.wikipedia.org/wiki/TCPIP und http://de.wikipedia.org/wiki/TCP/IP-Referenzmodell

[2] Wikipedia-Artikel zum OSI-Schichten-Modell: http://de.wikipedia.org/wiki/OSI-Modell

[3] Wikipedia-Artikel zum Masquerading: http://de.wikipedia.org/wiki/Masquerading

[4] Linux Advanced Routing and Traffic Control: http://www.lartc.org

[5] Routing: Jörg Fritsch, “Verkehrsplanung”, Linux-Magazin Sonderheft 03/2006, S. 64

[6] Ralf Spenneberg, “Übersichtliche Verkehrsregelung”, Linux-Magazin 02/2005: http://www.linux-magazin.de/Artikel/ausgabe/2005/02/tcng/tcng.html

[7] Virtuelle LANs: Chris Hübsch, “Patchen ohne Kabel”, Linux Magazin 11/2006, S. 56 http://www.linux-magazin.de/Artikel/ausgabe/2006/11

[8] Buqtraq bei SecurityFocus: http://www.securityfocus.com

[9] Debian-Sicherheitsmeldungen: http://www.debian.org/security/

[10] Ubuntu-Sicherheitsmeldungen: http://www.ubuntu.com/usn

[11] Suse-Sicherheitsmeldungen: http://lists.suse.com/archive/suse-security-announce/

[12] Netfilter/Iptables: http://www.netfilter.org

LinuxUser 03/2007 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben