Hallo Zusammen,
Ich begrüße Euch ganz Herzlich zu meiner ersten Dokumentation.
Heute möchte ich Euch ein Netzwerkprotokoll näher bringen der in der heutigen Welt nicht mehr weg zu denken ist. Der Name dieses Wunderwerks ist DHCP.
DHCP (Dynamic Host Configuration Protocol)
Das DHCP Protokoll ermöglicht mit Hilfe eines entsprechenden Servers die dynamische Zuweisung einer IP-Adresse und weiterer Konfigurationsparameter an Computern in einem Netzwerk (z. B. Internet oder LAN). Dies hat den Vorteil das die IP Dynamisch bei hochfahren des Clients vom sogenannten DHCP-Server zugewiesen wird. Das Dynamic Host Configuration Protocol wurde definiert im RFC 2131 und bekam von der Internet Assigned Numbers Authority (IANA) die UDP-Ports 67 und 68 zugewiesen. Das bedeutet das der Client und der Server über diese zwei Ports miteinander kommunizieren. Das DHCP Protokoll ist eine Erweiterung des BOOTP-Protokolls. Das BOOTP-Protokoll konnte auch die IP dynamisch zuweisen, aber das DHCP konnte weitaus mehr Konfiguration übergeben. Beim Start des Clients fragt dieser über einen Broadcast im gesamten Netzwerk nach (s)einer IP-Adresse. Als Antwort auf seinen Broadcast erhält er folgende Informationen:
• IP-Adresse
• Lease-Time
• Default-Route
• Netzmaske
• DNS-Server-Adressen
• WINS-Server
• Broadcast-Adresse
• IP-Varialen
• weitere Parameter
Von den obengenannten Parametern ist aber nur die Übermittlung der IP-Adresse und der Lease-Time, so etwas wie die Haltbarkeit der IP-Adresse, zwingend notwendig. Alle anderen Parameter sind optional.
So jetzt betrachten wir mal den Ablauf (Adressvergabe) genauer an.
Adressvergabe
Stell dir vor du sitzt jetzt im Computerraum der Schule oder in einem anderen Netzwerk und machst den blöden Rechner an. Was passiert jetzt??? Wie läuft die Adressvergabe zur statten???
Die Kommunikation zwischen den Client und Server läuft mittels über UDP. Das heißt über die Ports 67 und 68. Der Server kommuniziert über den Port 67 und der Client über Port 68.
Beim Booten des Clients sendet er eine DHCPDISCOVER-Nachricht via Broadcast an den Server und fragt nach seiner Config. Als Quelle gibt der Client seine Mac-Adresse. Eine IP besitzt er ja noch nicht. Der Server antwortet mit einer DHCPOFFER-Nachricht und schlägt den Client eine IP vor. Wenn der Client das Angebot des Servers annimmt schickt er eine DHCPREQUEST-Nachricht an den Server. Jetzt antwortet der Server mit einer DHCPPACK-Nachricht und bestätigt seine Config. Nach dem Absenden dieser Nachricht besitzt der Client endlich eine IP. Schlägt das aber fehl, weil der Client erkennt , das diese IP die ihm Angeboten wurde schon im Netzwerk vergeben ist, sendet er eine DHCPDECLINE-Nachricht und das ganze beginnt wieder von Neu an. Jetzt sperrt aber der Server die IP für die Interne Vergebung.
Zusammen mit seiner IP-Adresse erhält der Client in der DHCPACK-Nachricht auch eine Lease-Time mitgeteilt, welche ihm sagt, wie lange die IP-Adresse für ihn reserviert oder Gültig ist (So wie in der Bibliothek wenn du Bücher ausleihst) Der RFC Standart sieht aber vor, das der Client nach der Hälfte der Lease-Time einen erneuten DHCPREQUEST sendet und so dem Server mitteilt, dass er weiterhin die für ihn reservierte IP-Adresse behalten will. Nach Erhalt dieser Nachricht sendet der Server eine identische DHCPACK-Nachricht an den Client zurück, in der die neue Lease-Time mitgeteilt wird (So wenn du ein Buch in einer Bibliothek verlängerst). Nun ist die IP-Adresse verlängert und der DCHP-Refresh ist komplett.
Und wenn die Zeit gekommen ist den Rechner herunterzufahren gibst es zwei Möglichkeiten für den Client. Er schickt eine DHCPRELEASE-Nachricht an den Server und teilt ihn mit das er diese IP nicht behalten will und es freigibt. Eine andere Möglichkeit ist das der Client seine IP über den Roboot hinweg „merken“ kann, weil sein Lease-Time noch nicht Abgelaufen ist oder er besitzt eine Feste IP. Dies hat den Vorteil wenn der Rechner erneut hochgefahren wird entfallen die ersten schritte des DHCP-Protokoll und man hat direkt seine IP.
Hier eine Abbildung um das Protokoll zu verbildlichen:
Wie kommunizieren DHCP und DNS miteinanderer:
Wie sieht eigentlich die Kommunikation zwischen DHCP und DNS aus. Einige DHCP-Server können mit dem DNS zusammenarbeiten, indem sie IP-Adresse, Rechnernamen und "lease time" an den DNS-Server weiterleiten. Im Normalfall kommuniziert ja der Client direkt an den DNS Server.
Wie sieht es mit der Sicherheit aus:
Wie ihr alle schon wisst basiert DHCP auf UDP und ist somit sehr leicht zu manipulierbar. Es wäre möglich alle Adressen eines DHCP-Servers zu reservieren und anschließend selbst als DHCP Server auftreten. Das nennt man in der Hackerwelt Spoofing. Wenn man das geschafft hat könnte man falsche Daten an den Clients weiterreichen.
Ein sehr großes Problem ist die Verwendung von SSH. SSH-Clients merken sich bei jeder Verbindung den Namen und die IP. Wenn man jetzt zb. die IP ändert wertet SSH dies als Angriff.
Ich Hoffe Euch hat die Dokumentation gefallen. Ich würde mich freuen wenn Ihr mir ein Feedback geben könntet. Lob oder Kritik, beides sind erwünscht.
Wenn Inhaltlich was nicht Richtig ist, bitte auch Posten und das Richtige hinschreiben.
Bitte um Entschuldigung für alle Rechtschreibfehler.
B
PS: Es werden noch weitere Dokumentation folgen, wenn Euch das hier gefällt.
Mfg
Singh