WLAN mit WPA PSK TKIP oder WPA PSK AES

Logo MadwifiIch gehe bei meiner Beschreibung davon aus, dass die WLAN Verbindung bereits mit WEP funktioniert und betrachte nicht die Grundsäzlichkeiten für den Einsatz und die Konfiguration des Kernelmodules ndiswrapper.

Die Beschreibung geht auf die Verwendung von WPA PSK TKIP und WPA PSK AES ein.

Zunäst prüfen ob wpa_supplicant installiert ist - sollte gegenwätig bei den meisten Distributionen standardmäßig bereits installiert sein.

which wpa_supplicant

Als Ergebnis sollte angezeigt werden, dass wpa_supplicant in einem der bin-Verzeichnisse installiert ist. Z. Bsp.:

/usr/sbin/wpa_supplicant

Wenn nicht dann muß dieses Paket installiert werden. Danach sollte es eine wpa_supplicant-Readme geben, in der es zur Verwendung von wpa_supplicant viele grundlegende und wichtige Informationen gibt:

locate wpa_supplicant

Anmerkung: Vor dem locate ein updatedb nicht vergessen.

Wenn sich wpa_supplicant auf dem Rechner befindet koennte die Ausgabe von locate wpa_supplicant etwa so aussehen:

/usr/doc/wpa_supplicant-0.5.4
/usr/doc/wpa_supplicant-0.5.4/ChangeLog
/usr/doc/wpa_supplicant-0.5.4/COPYING
/usr/doc/wpa_supplicant-0.5.4/README
/usr/doc/wpa_supplicant-0.5.4/README-Windows.txt
/usr/sbin/wpa_supplicant

Mit locate wpa_supplicant kann man gleich auch feststellen, ob die Konfigurationsdatei von wpa_supplicant existiert - /etc/wpa_supplicant. Sollte sie nicht existieren wird sie mit

touch /etc/wpa_supplicant.conf

einfach angelegt.
Sollte eine Datei wpa_supplicant.conf.sample existieren ist es nicht ratsam, diese in wpa_supplicant.conf umzubenennen. Man hätte in diesem Fall sehr viel Beispielcode in dieser Datei und müsste ihn auskommentieren. Eine neue wpa_supplicant.conf ist am Ende wesentlich übersichtlicher.

Passphrase erzeugen

wpa_passphrase YourESSID diegeheimePassphrase

ergibt als Beispiel

network={
ssid="myessid"
#psk="meinegeheimepassphrase"
psk=6f115e30ef7e7eb6c253033709e8864e43894e3df2159f00b99150d69113439a
}

Dies wird in die wpa_supplicant.conf übernommen. Die Länge der Passphrase, der WPA-Key, muss eine Länge von 8-63 Zeichen haben und sollte, aus Bequemlichkeit etwa, nicht zu kurz gewählt werden.

Konfiguration von wpa_supplicant

Dazu wird die Datei /etc/wpa_supplicant.conf bearbeitet. Im Falle einer leeren, weil neu erstellten, wpa_supplicant.conf trägt man folgenden Code ein:

# /etc/wpa_supplicant.conf
#
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
eapol_version=1
ap_scan=1
fast_reauth=1
#
# WPA-PSK
network={
scan_ssid=1
proto=WPA
key_mgmt=WPA-PSK
pairwise=CCMP TKIP
group=CCMP TKIP WEP104 WEP40
ssid="myessid"
#psk="meinegeheimepassphrase"
psk=6f115e30ef7e7eb6c253033709e8864e43894e3df2159f00b99150d69113439a
priority=2
}

Die Einträge CCMP TKIP in den beiden Zeilen pairwise und group ermöglicht die Verwendung von WPA PSK TKIP oder WPA PSK AES. Also je nach dem, wie man sich entscheidet und den Accesspoint konfiguriert hat.

Die Datei wpa_supplicant.conf sollte noch einschränkende Zugriffsrechte bekommen:

chmod 600 /etc/wpa_supplicant.conf

Wer grundsätzlich vor der Frage steht, ob er WPA PSK TKIP oder WPA PSK AES verwenden soll dem ist zu raten, WPA PSK AES in Abhängigkeit von den Fähigkeiten des Accesspoint zu verwenden. WPA PSK AES ist die derzeit sicherere Variante.

WPA PSK testen

Nun steht einem ersten Test nichts mehr im Weg. Dafür muss die WLAN-Karte netzwerkmäßig noch nicht konfiguriert sein.

Mit ndiswrapper:

wpa_supplicant -dd -K -t -i wlan0 -D wext -c /etc/wpa_supplicant.conf

Mit madwifi:

wpa_supplicant -dd -K -t -i ath0 -D wext -c /etc/wpa_supplicant.conf

Mit der Option dd wird der erweiterte Debugmodus initiiert. Man erhält damit eine recht umfangreiche Ausgabe. Wenn Alles in Ordnung ist muss irendwo zum Ende hin eine Information in dieser Art auftauchen:

1159628579.974468: State: COMPLETED -> GROUP_HANDSHAKE
1159628579.974477: CTRL-EVENT-CONNECTED - Connection to 00:34:d2:92:41:b5 completed (auth) [id=0 id_str=]
...
...
...
1159628591.655545: wpa_driver_wext_set_wpa
1159628591.655712: wpa_driver_wext_set_drop_unencrypted
1159628591.655746: wpa_driver_wext_set_countermeasures
1159628591.655753: No keys have been configured - skip key clearing
1159628591.655779: WEXT: Operstate: linkmode=0, operstate=6
1159628591.665590: Cancelling scan request

Die entscheidende positive Ausgabe ist die Information
State: COMPLETED -> GROUP_HANDSHAKE

Gibt es eine derartige Ausgabe nicht ist etwas schiefgelaufen. Man sollte alle Konfigurationen (auch am Accesspoint) erneut prüfen.

Wenn man nun ein

iwconfig wlan0

(oder iwconfig ath0) ausführt wird man bei der Information zum Security mode sehen, dass dieser auf restricted gesetzt ist. Bei der Verwendung mit WEP steht der Security mode auf open.

irritieren lassen. Nach der Angabe Man darf sich bei aktivem WPA PSK nicht von den Ausgaben von iwconfig Secutity mode: restricted stimmen die angezeigten Informationen nicht mehr. Hat man von WEP auf WPA umgeschalten steht beispielsweise als Info noch der WEP-Key in der Anzeige. Man könnte es auch so betrachten:
Mit iwconfig werden alle Parameter der WLAN Karte konfiguriert - aber außer den Parametern für WPA. An der Stelle Security mode wird sozusagen nach wpa_supplicant verzweigt.

Hat der Start von wpa_supplicant fehlerfrei funktioniert, muss man wpa_supplicant erneut und ohne die Aktivierung des Debugmodus neu starten, um ständig mit WPA PSK zu arbeiten.

Der Aufruf sieht so aus:

wpa_supplicant -Bw -i wlan0 -D wext -c /etc/wpa_supplicant.conf

Das Argument B startet den Prozess im Hintergrund und das Argument w lässt warten, bis das Device hinzugefügt/aktiviert ist.

Infos zur Verwendung von wpa_supplicant ergibt ein:

wpa_supplicant --help

Um nun wpa_supplicant NICHT im Debugmodus zu starten, wird der laufende Prozess (mit Parameter -dd) in der Konsole einfach mit

Ctrl C

beendet.

Anmerkung: Sollte man vor dem WPA Experiment sein WLAN bereits mit WEP am laufen gehabt haben, muss man sicherlich das Netzwerk bzw. die WLAN Karte mit der bisherigen Konfiguration (ohne WPA) erneut starten - um nach dem Deaktivieren (Ctrl C) mit der bisherigen Konfiguration (WEP) arbeiten zu können.

Bei ZenWalk wäre dies so:

/etc/rc.d/rc.inet1 wlan0_start

Sollte danach noch keine Verbindung bestehen kurz mit iwconfig wlan0 prüfen, auf welchen Modus Security mode steht. Ist es restricted dann erneut wlan0 starten, da noch nicht auf WEP (Security mode: open) umgeschalten wurde:

/etc/rc.d/rc.inet1 wlan0_stop
/etc/rc.d/rc.inet1 wlan0_start

Bei den Distributionen SimplyMEPIS oder F/K/ X/Ubuntu wäre dies so:

/etc/init.d/network stop
/etc/init.d/network start

Sollte bei statischer IP-Zuweisung (kein DHCP) das Netzwerk nicht starten dann mit ifconfig prüfen wlan0 bzw. ath0 eine IP zugewiesen ist. Wenn keine IP zugewiesen ist dann einfach die vorgesehene IP mit

ifconfig wlan0 <vorgesehene IP>

bzw.

ifconfig ath0 <vorgesehene IP>

die IP erneut zuweisen und das Netwerk nochmals starten.

WPA PSK Konfiguration speichern

Um beim Systemstart mit der WPA Konfiguration starten zu können muss noch ein dauerhafter Eintrag in den Konfigurationsdateien des Netzwerk erfolgen, um diese dauerhaft zu speichern.

Im Falle der Distributionen mit der Konfigurationsdatei /etc/network/interfaces , beispielsweise SimplyMEPIS oder F/K/ X/Ubuntu, kann dies so aussehen. Dateicode:

#/etc/network/interfaces
#
auto lo
iface lo inet loopback
#
auto wlan0
iface wlan0 inet dhcp
post-up wpa_supplicant -Bw -i wlan0 -D wext -c /etc/wpa_supplicant.conf
post-down killall wpa_supplicant
post-down rm -r /var/run/wpa_supplicant/

Wenn kein DHCP verwendet wird dann die Zeile "iface wlan0 inet dhcp" mit einigen Zeilen, welche die vorgesehene IP und weiteren notwendige Parameter enthält tauschen:

iface wlan0 inet static
address 192.168.1.160
netmask 255.255.255.0
broadcast 192.168.1.255
gateway 192.168.1.1

Die in diesem Beispiel verwendeten Parameter sind logischer Weise der eigenen Konfiguration anzupassen.

Im Falle der Distributionen mit der Konfigurationsdatei /etc/rc.d/rc.inet1.conf, beispielsweise ZenWalk, kann dies so aussehen. Dateicode:

# /etc/rc.d/rc.inet1.conf
#
IFNAME[4]="wlan0"
IPADDR[4]="192.168.1.111"
NETMASK[4]="255.255.255.0"
USE_DHCP[4]="no"
WLAN_MODE[4]="Managed"
WLAN_RATE[4]="54M"
WLAN_WPACONF[4]="/etc/wpa_supplicant.conf"
##WLAN_IWPRIV[4]="AuthMode=WPAPSK EncrypType=AES WPAPSK=6f115e30ef7e7eb6c253033709e8864e43894e3df2159f00b99150d69113439a TxRate=0"
WLAN_WPA[4]="wpa_supplicant"
WLAN_WPADRIVER[4]="wext"

Achtung: Den Parameter WLAN_IWPRIV[x] nicht angeben! In der Logdatei /var/log/messages kann sonst die Passphrase gelesen werden!
Die Angabe dieses Parameters macht auch keinen Sinn, da die damit verbundenen Konfigurationsparameter über die wpa_supplicant-Konfigurationsdatei durch den Parameter WLAN_WPACONF[x] eingelesen werden.

Anmerkung:

Die Verwendung des Parameters WLAN_RATE kann mit dem ndiswrapper und WPA Probleme verursachen. In dmesg taucht in diesem Falle folgende Meldung auf:

ndiswrapper (iw_set_bitrate:508): setting bit rate failed (C00000BB)

Offenbar kann trotz dieser Fehlermeldung die WLAN-Karte beim Systemstart korrekt initialisiert werden. Bei Verwendung von ifplugd konnte ich beobachten, dass beim Umschalten von eth0 zu wlan0 die WLAN-Karte nicht immer korrekt initialisiert wird und keine authorisierte Verbindung zum Accesspoint erfolgt. Meine Vermutung geht in Richtung inkompatibler Broadcomtreiber für ndiswrapper und/oder zu alte Version des ndiswrapper.

Links

Wi-Fi Protected Access (WPA) - Wikipedia
madwifi UserDocs
NdisWrapper
ifplugd
ein Notebook mit 2 Netzwerkkarten (LAN + WLAN)

quickswitch
Roaming with your Linux laptop: Using QuickSwitch

Ergänzende Artikel zum Thema auf dieser Website:

ZenWalk - madwifi Paket erstellen, madwifi installieren und konfigurieren

Powered by Drupal. Created with ZenWalk.