Łatwa i szybka autoryzacja klientów Wi-Fi
Ostatnia zmiana: 2018-02-10 13:20

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 atakach i słabościach tego mechanizmu.

O ile wprowadzanie kodu pin technicznie niczym nie różni się od 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 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 hostapd-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 hostapd-utils

Konfiguracja

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


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

Jeżeli router posiada przycisk rozpoznawany przez OpenWrt jako WPS, to jest to cała konfiguracja. Teraz wystarczy nacisnąć przycisk wps na karcie sieciowej, przycisk wps czy qss na routerze i połączenie powinno zostać automatycznie zestawione. Router domyślnie nie sygnalizuje aktywności WPS żadną diodą.

Jeżeli nie mamy przycisku WPS lub chcemy uzyskać to pod innym przyciskiem, np. "reset", należy:
- usunąć - jeżeli istnieje - skrypt /etc/rc.button/reset
- zmienić nazwę wps wewnątrz tego skryptu /etc/rc.button/wps na "reset"
- zmienić nazwę skryptu /etc/rc.button/wps na /etc/rc.button/reset
Jeżeli chcemy użyć innego przcisku to należy jego nazwę podstawić zamiast "reset". Nazwy przycisków można odszukać korzystając z tego poradnika.

WPS ma także swoje wymagania które należy spełnić:
- sieć nie może być ukryta (hidden 0)
- sieć musi mieć szyfrowanie psk2 (WPA2 CCMP)
- najlepiej ustawić opcje wps_pushbutton na wszystkich interfejsach radiowych
- przed instalacją należy upewnić się, że nie ma innego skryptu podpiętego pod przycisk WPS - w katalogu /etc/rc.button lub /etc/hotplug.d/button

Uwagi

Pakiet hostapd-utils (a właściwie zawarty w nim program hostapd_cli) musi zawierać obsługę metody wps_pbc. 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_cancel cancel the pending WPS operation
    wps_ap_pin <cmd> [params..] enable/disable AP PIN
    wps_config <SSID> <auth> <encr> <key> configure AP
    wps_get_status show current WPS status

Stan WPS można sprawdzić poleceniem wps_get_status:


    # hostapd_cli -i wlan0 wps_get_status
    PBC Status: Disabled
    Last WPS result: None
    # hostapd_cli -i wlan0 wps_get_status
    PBC Status: Active
    Last WPS result: None
    # hostapd_cli -i wlan0 wps_get_status
    PBC Status: Timed-out
    Last WPS result: None
    # hostapd_cli -i wlan0 wps_get_status
    PBC Status: Disabled
    Last WPS result: Success
    Peer Address: 80:96:ca:xx:xx:xx