OpenWrt - Obsługa WPS (Wi-Fi Protected Setup)
łatwa i szybka autoryzacja klientów Wi-Fi
Ostatnia zmiana: 2013-11-26 18:43

1. Instalacja
2. Konfiguracja
3. Uwagi


WPS jest standardem umożliwiającym łatwe i szybkie połączenie do sieci bezprzewodowej. Wyróżnia się cztery metody (z czego dwie są wymagane do implementacji) uzyskania połączenia:
- wprowadzenie kodu PIN
- PBC, poprzez naciskanie przycisków na routerze i karcie sieciowej
oraz opcjonalnie
- NFC, wykorzystując specjalnie układy do komunikacji bezprzewodowej lub tagi RFID
- USB, przenosząc odpowiednie kody na pendrive.

Więcej informacji można znaleźć w Wikipedii. Należy też pamiętać o możliwych słabościach i atakach tego mechanizmu, który został niedawno wykryty.

O ile wprowadzanie kodu pin technicznie niczym nie różni się od po prostu podania hasła do sieci Wi-Fi, o tyle metoda z przyciskami, PBC (Push-button Configuration) jest już ciekawa bo nie trzeba tych haseł pamiętać. W praktyce oznacza to, że jeżeli chcemy uzyskać połączenie należy nacisnąć przycisk oznaczony WPS na karcie WiFi, odpowiedni przycisk na routerze i po chwili połączenie zostanie automatycznie zestawione. Bardzo proste, chociaż wymaga fizycznego dostępu do routera.

Większość routerów ma taki przycisk dostępny - nazwany WPS, QSS czy w inny sposób zależny od producenta sprzętu. W OpenWrt można uruchomić bezproblemowo tą metodę autoryzacji.
Instalacja
Wymagana jest pełna wersja programu wpad oraz dodatkowy pakiet hostpad-utils. W systemie może być już zainstalowana uproszczona wersja wpad-mini, która nie wspiera tej metody konfiguracji, należy więc ją odinstalować i zainstalować w/w pakiet (o ile jeszcze nie ma go systemie)

    # opkg remove wpad-mini
    # opkg update
    # opkg install wpad

a potem koniecznie wymagany hostapd-utils

    # opkg install hostapd-utils

Konfiguracja
Najważniejsza sprawa to włączenie tej metody konfiguracji w pliku /etc/config/wireless. Wykonuje się to ustawiając odpowiednią opcję

    # uci set wireless.@wifi-iface[0].wps_pushbutton=1
    # uci commit wireless
    # wifi

Jeżeli używamy wydania Attitude Adjustment lub trunk to pozostałe elementy są już gotowe. Jeżeli używamy Backfire, należy jeszcze wskazać przycisk który będzie do tego używany. Do modyfikacji jest plik /etc/hotplug.d/button/50-wps. W większości przypadków dostępny jest osobny przycisk WPS, który w Backfire widoczny jest pod nazwą BTN_1 (aby sprawdzić jak się nazywają inne patrz poradnik o przyciskach). Zmianę można wykonać poleceniem (tylko dla Backfire!):

    # sed -i -e  's/wps/BTN_1/' /etc/hotplug.d/button/50-wps

Teraz wystarczy nacisnąć przycisk wps na karcie sieciowej, przycisk wps czy qss na routerze i połączenie powinno zostać automatycznie zestawione.
Uwagi
- moje obrazy zawierają kod obsługujący przycisk WPS (włączenie/wyłączenie wifi). Przed wykorzystaniem go należy więc usunąć lub odpowiednio zmodyfikować jego obsługę (w pliku /etc/config/system)
- pakiet hostapd-utils (a właściwie zawarty w nim program hostpad_cli) musi zawierać obsługę metody wps_pbc. Jest ona dodawana tylko jeżeli kompilujemy wersję wpad-full; jeżeli jednocześnie zostanie skompilowany pakiet wpad-mini, w/w metoda nie zostanie dodana. Aby się upewnić czy używamy właściwej wersji pakietu można wydać polecenie:

    # hostapd_cli -h

powinny znaleźć się tam linie, m.in:

    wps_pin <uuid> <pin> [timeout] [addr]  add WPS Enrollee PIN
    wps_check_pin <PIN>  verify PIN checksum
    wps_pbc              indicate button pushed to initiate PBC
    wps_ap_pin <cmd> [params..]  enable/disable AP PIN