16.10.2006 | Autor / Redakteur: Michael J. Martin / Andreas Donner
Der Dynamic Host Configuration Protocol Dienst (DHCP) eines drahtlosen Netzwerks kann nicht nur über das IOS implementiert sondern – mit ein wenig Know-how – auch auf Linux-Basis realisiert werden.
Wenn ein DHCP-Dienst in ein drahtloses Netzwerk implementiert werden soll, kann zwischen dem DHCP-Dienst des Cisco IOS und dem DHCP des Internet Systems Consortiums (ISC), das auf einem Linux Server laufen kann, gewählt werden. Grundlage für die hier diskutierte Implementierung ist das abgebildete Netzdiagramm. Zwei Schlüsselmerkmale dieser Implementierung sind:
Das erste Merkmal verlangt, dass – ausgehend davon, dass der Kernel des Servers 802.1q unterstützt – eine 802.1q-Vernetzung auf dem Linux Server eingerichtet wird. Damit muss der Switch Port des Servers so konfiguriert werden, dass er 802.1q-Trunking und die Server-Schnittstelle VLANs unterstützt. Der Switch-Teil kann leicht umgesetzt werden. Zuerst muss das Trunk Encapsulation Protocol des Ports gesetzt werden. Sobald dies erledigt ist, kann der Port zu einem Trunk-Port gemacht werden und die entsprechenden VLANs können definiert werden:
Wenn keine VLANs eingerichtet werden, wird der Switch den gesamten potentiellen Verkehr aller auf dem Switch konfigurierten VLANs über den Port senden. Das ist nicht unbedingt falsch, aber es ist besser zu definieren, welcher Daten über den Port ausgetauscht werden sollen, anstatt diese Entscheidung dem Uplink-Gerät zu überlassen. Damit lautet die finale Port-Konfiguration wie folgt:
Jetzt muss der Server konfiguriert werden. Red Hat unterstützt 802.1q nicht standardmäßig. Am schnellsten kann die VLAN-Schnittstellen aktiviert werden, indem der Bootstrap Network Process /etc/rc3.d/S10network deaktiviert wird. Dies geschieht durch Umbenennen der /etc/rc3.d/S10network Bootstrap-Datei in /etc/rc3.d/s10network umbenennt. Damit kann dann ein individuelles Network-Bootstrap-Skript wie in folgendem Beispiel erzeugt werden:
Nachdem das Netzwerk des Servers ausgeschaltet ist, kann nun geklärt werden, ob der Cisco oder der ISC DHCP benutzt werden soll. Die Cisco Implementierung ist ideal für die meisten Standard DHCP-Umgebungen geeignet, die nur die Basis-Optionen beim Client erfordern:
Alle oben genannten Optionen werden heute praktisch von jeder verfügbaren DHCP-Client-Implementierung erkannt und sind völlig ausreichend, um einen Windows, Mac OS X oder Unix/Linux-basierten Arbeitsplatzrechner ins Netzwerk zu integrieren. Nichtsdestotrotz sind aber im aktuellen IANA (Internet Assigned Numbern Authority) DHCP Parameters Document über 100 DHCP–Client-Optionen definiert. Die Cisco DHCP-Implementierung unterstützt 12 von ihnen. Sollen DHCP-Optionen jenseits dieser Basis (wie Web Proxy Auto Discovery oder Static Route Distribution) unterstützt werden, dann muss die Entscheidung auf den ISC DHCP-Client fallen.
Der ISC DHCP-Dienst ist kostenlos auf der ISC-Website verfügbar. (ISC ist auch für den BIND Domain Name Service daemon verantwortlich). Die ISC Implementierung wird von den meisten Entwicklern als Referenz-DHCP-Distribution angesehen, da viele Entwickler Mitglied der DHCP-Standardisierungsgruppe sind, und ist Teil von vielen Unix-/Linux-Distributionen. Der ISC DHCP-Dienst läuft als Root-Dienst. Dies schafft eine potentielle Sicherheitslücke, sollte eine DHCP-Schwachstelle entdeckt werden. Die einzige Möglichkeit dieses Risiko zu reduzieren besteht darin, den DHCP in einem r-„Zelle“ laufen zu lassen. Dies erfordert die Einrichtung einer Verzeichnisbaum-“Zelle“, in der alle zur Ausführung des Dienstes nötigen Konfigurationen, Protokolle, Bibliotheken und Datenbankdateien sowie ausführbaren Programmen getrennt vom Rest des Systems untergebracht sind. Allerdings unterstützt ISC DHCP die chroot Option nicht von Haus aus.
Glücklicherweise hat jedoch der Programmierer Ari Edelkind den Code-Patch „Paranoia“ geschrieben, der das Ausführen eines ISC DHCP in einer chroot Zelle ermöglicht. Um mit dem Build-Prozess zu beginnen zu können, muss unter Zuhilfenahme von wget zuerst die Patch-Datei herunterladen werden. Dies kann aus dem Stammverzeichnis oder innerhalb eines Build-Verzeichnisses erledigt werden, das mithilfe folgender Skripts erstellt wird:
Die aktuelle Version des ISC DHCP ist 3.0.3. Der „Paranoia“-Patch wurde vom Autor auf ISC DHCP-Versionen bis 3.0.1.rc4 getestet. Dabei wurden einige Sicherheitslücken in den ISC DHCP Versionen 3.0p1, 3.0.1rc8 und 3.0.1rc12 sowie 3.0.1rc13 entdeckt. Außerdem arbeitet der Patch nicht auf den ISC DHCP-Versionen 3.0.1.rc14 und höher. Um eine sichere Version des ISC DHCP Codes zu verwenden, mit der der Einsatz des chroot möglich wird, muss daher also die Version R3.0.1 rc11 eingesetzt werden. Genau wie das Patchfile kann der Code mit Hilfe von wget heruntergeladen werden:
Anwenden des Patches auf dhcpd.c. (Bei Problemen wird die Patch-Anwendung Fehler melden; bei fehlerfreiem Durchlauf beendet sich das Programm mit einer Bestätigungsmeldung:
Nach dem erfolgreichen Ausführen der Patch-Datei wird der „configure“-Befehl mit den gepatchten Flags im Root-Verzeichnis des Quellverzeichnisses ausgeführt:
Sobald der Code erstellt ist, stehen zwei Optionen zur Verfügung. Einerseits kann „make install“ ausgeführt werden, um die Binaries, die Man-Seite und die Konfigurationsdateien in das Standard-Installationsverzeichnis zu verschieben, andererseits können die Dateien aber auch ins work.linux-2.2 Verzeichnis gezogen werden:
Anschließend können die Server- und Man-Page-Dateien manuell dorthin installieren werden, wo es am sinnvollsten erscheint (zum Beispiel in die chroot Zelle, die hier im Anschluss erstellt wird). Als Erstes werden der Benutzer und die Gruppe erstellt, die den Dhcpd-Dienst ausführen sollen:
Dann werden die Verzeichnisse erzeugt:
Jetzt müssen einige Sonderdateien erstellt und die Bibliotheken kopiert werden, die daemon braucht, um zu laufen. Zuerst die Device-Dateien:
Jetzt kopiert man die /etc/localtime Datei nach /usr/Einwohner/dhcpd/etc., damit syslog-Nachrichten den korrekten Zeitstempel erhalten.
Sobald die Device-Dateien vollständig sind, muss festgelegt werden, welche Bibliotheken gebraucht werden. Diese sind dann in den chroot-Verzeichnisbaum kopiert werden:
Jetzt kann daemon installiert und die dhcpd.leases-Datei erstellt werden:
Jetzt sind alle Dateien an Ort und Stelle und abschließend müssen nur noch die Benutzer- und Gruppen-Berechtigungen eingerichtet werden:
Nachdem daemon installiert und die chroot-„Zelle“ erstellt ist, muss der Service gestartet und auf „run“ gesetzt werden, wenn das System bootet.
Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 2000226)