Wireless LAN endet nicht an der Grundstücksgrenze, und gerade in Städten finden sich immer wieder unerwünschte Zaungäste. Wir zeigen Ihnen, wie Sie es Angreifern möglichst schwer machen, in Ihr drahtloses Netz einzudringen.
Die Reichweite eines drahtlosen Netzwerks wird meist größer gewählt, als es unbedingt erforderlich ist: Von allen Räumen soll eine möglichst gute Verbindung zum Access Point oder Server bestehen – und man bestrahlt bei der Gelegenheit noch angrenzende Wohnungen oder gar Häuser mit. Für Cracker ist das ein gefundenes Fressen, statt einzubrechen und ein Ethernet-Kabel an einer unbeaufsichtigten Dose im Haus zu befestigen, braucht man nur noch eine WLAN-Karte und hält sich unauffällig im Treppenhaus oder auf dem Nachbargrundstück auf.
Auch ohne kriminelle Energie stellen WLANs einen verwundbaren Punkt dar. Wird etwa ein Wireless Access Router für ISDN oder DSL in der Standard-Konfiguration betrieben, akzeptiert er möglicherweise die WLAN-Karte des Nachbarn – die Rechnung für den Fremd-Surfer kommt erst am Ende des Monats. Weitere Fremdgänger sind Drucker mit WLAN-Anschluss, die je nach Betriebssystem automatisch auf den fremden Desktops eingebunden werden – schnell verirrt sich ein großes Dokument auf den nachbarlichen Tintenstrahler.
Netzwerk-Namen setzen
Der erste Schritt ist, dem Netz einen eigenen und möglichst eindeutigen Namen, genannt SSID oder ESSID, zu geben. Geeignet sind etwa die eigene Telefonnummer, der Nachname oder der eigene Benutzername, die Voreinstellung any sollte man auf keinen Fall verwenden. Die (E)SSID wird bei jedem Datenpaket übertragen und dient der Unterscheidung mehrerer WLANs auf dem gleichen Kanal. Sie schützt wenn überhaupt vor einer versehentlichen Netz-Verknüpfung, jedoch nicht vor Angriffen – der Cracker braucht seiner eigenen WLAN-Karte lediglich Ihre (E)SSID zu geben, und schon wird er als Netzwerk-Teilnehmer akzeptiert.
WEP-Verschlüsselung
Die Datensicherheit und -Vertraulichkeit soll die WEP-Verschlüsselung sicher stellen. Faktisch alle aktuellen WLAN-Geräte beherrschen Schlüssel-Längen von 40 Bit (manchmal fälschlich mit 64 Bit angegeben) und 128 Bit (in Wirklichkeit 104 Bit) und verschlüsseln den Datenstrom Hersteller-unabhängig nach dem gleichen Verfahren. Es handelt sich dabei um eine symmetrische Verschlüsselung, alle Teilnehmer eines Netzwerks verwenden den gleichen Schlüssel für Ver- und Entschlüsselung. WEP ist die erste Hürde für einen Angreifer, ohne den korrekten Schlüssel kann er den Datenstrom weder abhören noch in das Netzwerk eindringen. In der Praxis taugt WEP aber nicht all zu viel: 40-Bit-Schlüssel sind mit entsprechenden Cracker-Werkzeugen binnen zwei Minuten durch reines Belauschen zu errechnen, und selbst bei den 104-Bit-Schlüsseln dauert es nur zwischen ein paar Stunden und einer Woche, bis der Angreifer eindringen kann. Dennoch sollte WEP auf allen Geräten mit der höchst möglichen Schlüssellänge eingesetzt werden, eine kleine Hürde ist immer noch besser als gar kein Schutz.
WEP-Schlüssel erzeugen
Die Eingabe von ESSID und 104-Bit-Schlüssel erfolgt in den meisten Fällen über das Web-Frontend des Access Routers. Die meisten Geräte bezeichnen ihn fälschlich als 128-Bit-Schlüssel. Die 13 Bytes des Schlüssels werden stets hexadezimal eingegeben; von Gerät zu Gerät unterschiedlich ist die Trennung der einzelnen Bytes, manchmal werden Doppelpunkte verwendet, dann wieder Leerzeichen, einzelne Eingabefelder oder gar keine Trennzeichen.
Für den Schlüssel werden 13 zufällige Bytes in hexadezimaler Schreibweise benötigt. Sehr bequem generiert man einen Schlüssel mit dem folgenden Befehl:
~# head /dev/urandom | hexdump -n 13 -e '13/1 "%02x " "\n"' 7a d7 93 87 ea 2f 0c 24 64 4a 9a 3b 82
Adress-Kontrolle
Einige Access Points bieten die Möglichkeit, eine Access Control List (ACL) einzurichten. In der ACL sind die Hardware- oder auch MAC-Adressen aller Geräte aufgeführt, die sich ins Netzwerk einbuchen dürfen, manchmal lässt sich auch die IP-Adresse des Geräts über die ACL einstellen. Die Hardware-Adresse ist für jedes Netzwerk- und WLAN-Gerät einmalig, wird vom Hersteller im Gerät fest eingetragen und lässt sich später nicht mehr ändern. Ausnahmen gibt es aber leider auch, bei einigen älteren WLAN-Karten ist die Hardware-Adresse frei einstellbar. Access Control Lists eignen sich also wiederum nur als weitere Zugangshürde.
Verschlüsselter Tunnel
Deutlich mehr Schutz vor Angreifern bietet ein verschlüsselter Tunnel, der zusätzlich zu WEP-128 und ACL eingesetzt wird. Ein sehr einfach zu konfigurierendes Tunnel-Programm ist OpenVPN von [1], das derzeit nur Debian beiliegt. Für Red Hat 7.2 und 7.3 gibt es immerhin RPM-Pakete, bei allen anderen Distributionen müssen die Quellen von Hand übersetzt werden. Auch Windows-Rechner und WLAN-Drucker bleiben außen vor. Bei [2] ist beschrieben, wie Sie OpenVPN übersetzen, den Artikel finden Sie zudem auf der Heft-CD.
In der einfachsten Variante arbeitet OpenVPN genau wie WEP mit einem gemeinsamen Schlüssel für beide Tunnel-Enden, dem so genannten shared secret. Dazu wird einmal ein Schlüssel, hier geheimer.key, erzeugt:
openvpn --genkey --secret /etc/geheimer.key
Der geheime Schüssel darf jeweils nur den beiden zu verbindenden Rechnern bekannt und nur für Root lesbar sein (chmod 600 /etc/geheimer.key). Bei mehr als zwei benötigen Sie für jeden weiteren Rechner wiederum einen geheimen Schlüssel. Praktischerweise ist dann der Rechner mit dem Internet-Zugang der zentrale Sammelpunkt aller Tunnel-Enden. Die Übertragung des geheimen Schlüssels zu den entfernten Rechnern sollte sicher erfolgen, also per scp oder Diskette.
Netzwerk planen
Jedes Tunnel-Ende bekommt eine eigene IP, die sich von der IP-Adresse der WLAN-Karte unterscheidet und sogar in einem anderen Segment liegt. Verwenden Sie etwa für die WLAN-Karten den IP-Bereich 192.168.1.1 bis 192.168.1.254 (also das Segment 192.168.1.0/24), sollten die Tunnel den IP-Bereich 192.168.2.1 bis 192.168.2.254 (also Segment 192.168.2.0/24) bekommen. Damit wird der Datenverkehr der WLAN-Karten von dem Datenverkehr über die Tunnel getrennt. Um die Zuordnung der Tunnel-Enden zum Tunnel zu erleichtern, sollten Sie den beiden Enden eines Tunnels zwei aufeinander folgende IPs geben und zwischen zwei Tunneln zum Beispiel einen Abstand von 10 einhalten.
Das Beispiel in Abbildung 2 soll die Einrichtung von vier über WLAN verbundenen Rechnern und einem WLAN-Drucker verdeutlichen. Der erste Rechner mit Internet-Zugang dient uns dabei als Server. Rechner 2 und drei sollen unter Linux mittels verschlüsseltem Tunnel arbeiten, Rechner 4 ist eine Windows-Maschine und muss daher genauso unverschlüsselt arbeiten wie der WLAN-Drucker.
Alle Rechner erhalten eine IP aus dem Segment 192.168.1.0/24, Rechner 1 bekommt die 192.168.1.1 und Rechner 2 bis vier entsprechend 192.168.1.2 bis 192.168.1.4. Gemeinsam genutzte Komponenten wie der Access Pointund der WLAN-Drucker erhalten traditionell IP-Adressen am oberen Ende des Segments, hier 192.168.1.254 für den AP und 192.168.1.250 für den Drucker. Rechner 1 benötigt übrigens keine WLAN-Karte, er wird per Ethernet-Kabel mit dem Access Point verbunden.
Tunnel graben
Für den Aufbau von zwei Tunneln, zwischen Rechner 1 und zwei sowie zwischen eins und drei, muss OpenVPN zwei mal auf unterschiedlich Ports laufen – am Besten auch mit verschiedenen Schlüsseln. Die nachfolgenden Befehle aktivieren den Tunnel auf Rechner 1 und schalten das Routing ein:
modprobe tun openvpn --daemon --dev tun0 --remote 192.168.1.2 --port 5000 --ifconfig 192.168.2.21 192.168.2.20 --secret /etc/tunnel0.key openvpn --daemon --dev tun1 --remote 192.168.1.3 --port 5001 --ifconfig 192.168.2.31 192.168.2.30 --secret /etc/tunnel1.key echo "1" > /proc/sys/net/ipv4/ip_forward
Eventuelle Fehlermeldungen finden Sie in den Dateien /var/log/messages und (wenn vorhanden) /var/log/syslog; bei Problemen kann es durchaus helfen, die Option --daemon weg zu lassen, dann läuft OpenVPN im Vordergrund und zeigt die Status- und Fehlermeldungen direkt an. Auf Rechner 2 benötigen wir nur einen Tunnel:
modprobe tun openvpn --daemon --dev tun0 --remote 192.168.1.1 --port 5000 --ifconfig 192.168.2.20 192.168.2.21 --secret /etc/tunnel0.key
Die Benennung der Tunnel-Devices ist auf Rechner 3 etwas verwirrend: Der zugehörige Tunnel auf Rechner 1 heißt tun1, weil es sich um den zweiten Tunnel handelt. Auf Rechner 3 gibt es jedoch nur einen Tunnel, den zu Rechner 1, entsprechend heißt das Tunnel-Device auf Rechner 3 tun0:
modprobe tun openvpn --daemon --dev tun0 --remote 192.168.1.1 --port 5001 --ifconfig 192.168.2.30 192.168.2.31 --secret /etc/tunnel1.key
Auf dem richtigen Pfad
Es bleibt noch das Routing von Rechner 2 und drei anzupassen: Alle Daten sollen über den Tunnel verschickt werden, entsprechend läuft die Default-Route auf beiden Rechnern über 192.168.2.21 respektive 192.168.2.31. Zudem soll verhindert werden, dass Rechner 2 und drei direkten Kontakt zu Rechner 4 und dem Drucker aufnehmen, auch hier soll zumindest ein Teil des Wegs über den Tunnel laufen. Folgende Befehle korrigieren das Routing auf Rechner 2:
route del default route add default gw 192.168.2.21 route add 192.168.1.4 gw 192.168.2.21 route add 192.168.1.250 gw 192.168.2.21
Bei Rechner 3 sind die Eingaben fast identisch, lediglich das Gateway 192.168.2.21 muss gegen 192.168.2.31 ausgetauscht werden.
Firewall
Abschließend müssen wir noch eine Firewall auf Rechner 2 und drei einrichten, die das Versenden unverschlüsselter Daten über die WLAN-Karte, hier im Beispiel das Gerät wlan0, unterbindet. Einzig die Ports 5000 respektive 5001 bleiben für UDP offen, damit der Tunnel noch funktioniert, alles andere wird rigoros geblockt. Am einfachsten lassen sich die Firewall-Regeln auf der Kommandozeile setzen, hier das Beispiel für Rechner 2:
iptables -A INPUT -i tun0 -j ACCEPT iptables -A OUTPUT -o tun0 -j ACCEPT iptables -A INPUT -i wlan0 -p udp --dport 5000 -j ACCEPT iptables -A INPUT -i wlan0 -j DROP iptables -A OUTPUT -o wlan0 -p udp --dport 5000 -j ACCEPT iptables -A OUTPUT -o wlan0 -j DROP iptables -A FORWARD -i wlan0 -j DROP
Bei Rechner 3 ändert sich lediglich der Parameter --dport 5000 in --dport 5001. Schlussendlich muss auf Rechner 1 noch Masquerading angeschaltet werden, damit Rechner 2 und drei Kontakt zur Außenwelt bekommen:
iptables -A FORWARD -i tun0 -j ACCEPT iptables -A FORWARD -i tun1 -j ACCEPT iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Missbrauch möglich
Die Schwachstellen unserer Beispiel-Vernetzung sind Drucker und Windows-Rechner: Sie kommunizieren nur mit WEP-Verschlüsselung, können also vergleichsweise leicht belauscht werden. Beim Drucker sind die Risiken überschaubar, leere Tintenpatronen und abgehörte Briefe gehören schon zu den extremen Missbräuchen. Deutlich problematischer ist der Windows-Rechner, wenn er Zugang zum Internet bekommen soll: Ein erfolgreicher Angreifer könnte Internet-Verbindungen aufbauen und zudem alle Dienste des Servers nutzen, die dem Windows-Rechner angeboten werden. Die Lösung ist ein IP-Sec- oder CIPE-basierter Tunnel, der auch unter Windows eingesetzt werden kann. Die Konfiguration von IP-Sec ist allerdings alles andere als leicht, kein Vergleich zum hier vorgestellten OpenVPN.
Glossar
-
SSID
-
(Extended) Service Set ID, die Kennung oder der Name eines drahtlosen Netzes, auch ESSID genannt.
-
WEP
-
Wired Equivalent Privacy, bedeutet so viel wie “Draht-ähnliche Vertraulichkeit”. Das Verschlüsselungsverfahren sollte eine ähnliche Datensicherheit und -Vertraulichkeit garantieren wie eine herkömmliche Ethernet-Verkabelung. WEP ist jedoch sehr anfällig für Angriffe, Schlüssellängen von 40 Bit respektive 104 Bit sind für einen versierten Cracker kein nennenswertes Hindernis.
-
ACL
-
Access Control List, enthält die Hardware-Adressen (MAC-Adressen) aller zugangsberechtigten WLAN-Geräte. Die Hardware-Adressen werden vom jeweiligen Gerätehersteller fest eingetragen und lassen sich normalerweise nicht verändern.
-
Access Point
-
Zentraler Knoten eines drahtlosen Netzes, auch “Managed Infrastructure” genannt. Alle WLAN-Teilnehmer senden ihre Daten an den Access Point, der sie dann an den tatsächlichen Empfänger weiter leitet (Stern-Verteilung). Heutige APs haben meist einen zusätzlichen Ethernet-Anschluss und verbinden darüber drahtgebundene mit drahtlosen Netzen.
Infos
[1] OpenVPN: http://openvpn.sourceforge.net
[2] Achim Leitner, Mirko Dölle, Oliver Kluge: “Geschützter Tunnel”, LinuxUser 10/2002, Seite 30, sowie auf der Heft-CD unter LinuxUser/030-tunnel





