Hlavní navigace

Wpa_supplicant a hostapd: konfigurace

17. 10. 2008
Doba čtení: 5 minut

Sdílet

V diskusi v minulém článku vznikla poptávka po návodu na nastavení WiFi AP a klientů v Linuxu. K těmto činnostem se používají nástroje wpa_supplicant a hostapd. Ukážeme si jak oba nástroje nastavit tak, aby spolu spolupracovaly. Wpa_supplicant sebou přináší i jiné výhody než jen připojení k WPA sítím.

Princip fungování různých druhů zabezpečení sítě jsem rozebíral v článku o crackování WEP sítí. Pokud si chceme podobné praktiky vyzkoušet doma, budeme potřebovat jedno APčko, alespoň jednoho klienta a jeden stroj pro samotné nabourání do sítě. Proto bych následující článek rád věnoval nástrojům wpa_supplicant a hostapd, které slouží ke konfiguraci zabezpečení WiFi sítí na Linuxu.

Než začneme s konfigurací, potřebujeme nainstalovat balíčky hostapd a wpa_supplicant. Použití je často závislé na distribuci. V Gentoo se nastavuje wpa_supplicant v /etc/conf.d/net, resp. jen to, že se má použít. Jiné distribuce se zase o spuštění nestarají a všechno nechávají na uživateli. Mohou existovat i distribuce s init skriptem. Každopádně se wpa_supplicant dá spustit i z příkazové řádky a vytvořit si tak vlastní init skript není problém. Je to použitelné řešení i pro případy, kdy si uživatel musí napsat init skript sám.

wpa_supplicant -D <ovladač> -i <interface> -c /etc/wpa_supplicant/wpa_supplicant.conf 

Jako ovladač můžeme uvést hostap, hermes, madwifi, atmel, wext (standardní rozhraní linuxu), ndiswrapper, broadcom, ipw, wired, bsd a ndis.

wpa_supplicant

Pokud se potřebujeme připojit do sítě zabezpečení některou z forem WPA/WPA2/WEP nebo třeba i bez zabezpečení, použijeme právě nástroj wpa_supplicant. Podporuje různé formy WPA-EAP, správu klíčů CCMP, TKIP i WEP, RADIUS servery apod.

Existují i další nástroje pro správu WiFi spojení včetně klasického wireless-tools. Wpa_supplicant běží jako daemon na pozadí a v konfiguračním souboru má seznam se sítěmi a informacemi o připojení. Daemon pak scanuje sám sítě a připojuje se k nejsilnější a uživatel o něm prakticky neví. Dá se ovládat utilitou wpa_cli a nemusí se prakticky vypínat/zapínat. Dá se použít jak na domácím PC/notebooku tak také na routerech.

I když je wpa_supplicant spolehlivý, není ideální pro běžné uživatele. Distribuce jako je Ubuntu a podobné řeší připojení ke všem sítím přes NetworkManager, kde se vše jednoduše nakliká. Další možností je použít xsupplicant z balíku Open1X, ale s ním zatím nemám žádné zkušenosti, takže se mu budu věnovat v jednom z dalších článků, pokud bude zájem.

Konfigurace není nic složitého a spočívá v nastavení několika málo hodnot o připojení. Začneme složitějším nastavením univerzitní sítě eduroam. Pro přístup do této sítě je potřeba certifikát, jméno a heslo.

WPA-EAP

ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=wheel

network={
    ssid="eduroam"                # ESSID sítě
    key_mgmt=WPA-EAP              # Správa klíčů
    eap=PEAP                      # Autentifikační protokol
    pairwise=TKIP                 # Použít TKIP protokol
    proto=WPA                     # Použít WPA
    identity="xxxxxx@upce.cz"     # Uživatel
    password="xxxxxx"             # Heslo
    ca_cert="/path/to/cesnet.crt" # Cesta k certifikát
    phase1="peaplabel=0"          # Použit starý peap label
    phase2="auth=MSCHAPV2"        # Použit MSCHAPV2
    priority=5                    # Priorita
} 

WPA-PSK

První dva řádky určují, kde má být vytvořen adresář pro ovládání spuštěného daemona. Také si můžeme určit, která skupina uživatelů bude mít právo s daemonem manipulovat.

Bloků „network={ […] }“ můžeme mít kolik chceme a označují jednotlivé sítě. Každá ze sítí má svoje specifika v nastavení. Enterprise řešení bude nastavené jinak než domácí. Eduroam má blíže právě k těm enterprise řešením.

network={
    ssid="MOJESITSWPAPSK"
    scan_ssid=1
    priority=5
    key_mgmt=WPA-PSK
    psk="klíč"
} 

Jednodušší je připojit se do domácí sítě. Stačí vyplnit pouze essid, klíč a že se jedná o WPA-PSK. Pokud má síť DHCP, tak je nastavení a připojení otázkou pár vteřin.

WEP

network={
    ssid="MOJESITSWEP"
    scan_ssid=1
    priority=5
    key_mgmt=NONE
    wep_key0=<klíč>
    wep_tx_keyidx=0
} 

Nastavení WEP je malinko delší než WPA, především proto, že musíme wpa_supplicantu říct, že se nemá snažit o něco složitějšího.

Bez šifrování

network={
    ssid="BEZSIFROVANI"
    scan_ssid=1
    priority=5
    key_mgmt=NONE
} 

wpa_cli

Pokud už daemon běží, tak je možné jeho chování ovlivňovat přes utilitku wpa_cli. Začneme tím, že spustíme program jedním z následujících způsobů:

wpa_cli -p /var/run/wpa_tresnovec9/
a pokud se nepřipojí
wpa_cli -p /cesta/k/ovladacímu/adresáři 

Hned poté můžeme napsat „help“ a objeví se možnost, které můžeme použít. Pro běžnou práci budou důležité tyto:

status         vypíše informace o síti, ke které jsme připojeni
level          změní debug level
reconfigure    pokud se změní konfigurace, tato volba ji načte
reassociate    znovu se asociuje s APčkem
disconnect     odpojí se od APčka
quit           ukončí spojení s daemonem 

Wpa_cli také vypisuje co se aktuálně s interfacem děje. Jestli zrovna změnil klíč, jestli se odpojil, připojit atd.

hostapd

Zatímco nastavení klientského počítače je jednoduché, konfigurace AP pomocí hostapd vyžaduje mnohem více hodnot a není to záležitost na chvilku. Nastavení se liší ovladač od ovladače. Například o vytvoření master interfacu (APčka) u Atheros karet s ovladačem s madwifi si musí administrátor vytvořit sám před spuštěním hostapd. Podpora karet bohužel není nejlepší a tak AP můžeme vytvořit pouze s normální ethernet síťovkou, Atheros kartami, a ovladači hostap a prism54.

Co je to hostapd

Spojení pomocí WPA se drží v Linuxu v userspace. To znamená, že hostapd je daemon, který se stará o výměnu klíčů. Wpa_supplicant komunikuje s hostapd a navzájem si klíče výměňují přičemž hostapd rozhodne o tom, kdo se může připojit a kdo ne.

Nastavení WPA

interface=ath0                     # interface na které má běžet AP
bridge=wifi0                       # wifiX v případě Atheros karet, jinak není potřeba
driver=madwifi                     # ovladač, který se má použíz
debug=0                            # zapnutí/vypnutí debugovacích informací
ctrl_interface=/var/run/hostapd    # soubor/socket pro ovládání daemona
ctrl_interface_group=wheel         # skupina, která má mít právo ovládat daemona
ssid=WPASIT                        # essid sítě
hw_mode=g                          # wifi mód (a/b/g)
channel=6                          # kanál
beacon_int=100                     # jak často se mají posílat beacony
max_num_sta=255                    # maximální počet stanic
rts_threshold=2347                 # hodnota RTS (žádost o vysílání)
fragm_threshold=2346               # omezení velikosti paketů
auth_algs=3                        # autentifikační algoritmus
wpa=1                              # verze WPA protokolu
wpa_passphrase=XXXXX               # klíč
wpa_key_mgmt=WPA-PSK               # způsob zabezpečení
wpa_pairwise=TKIP CCMP             # možnosti správy klíčů
wpa_group_rekey=300                # obnovení klíče v sekundách 

Toto je obsah souboru /etc/hostapd.conf. Možnosti jeho konfigurace jsou doslova obrovské a dokáže vytvořit jak jednoduchou síť, tak enterprise řešení. V konfiguračním souboru výše popis vytvoření domácí sítě s WPA-PSK. Pokročilejším konfiguracím se budeme věnovat v jednom z příštích dílů.

hostapd_cli

Pro ovládání daemona hostapd také existuje aplikace, ale její možnosti jsou menší než v případě wpa_supplicantu. Nám se budou hodit následující:

all_sta       vypíše připojené klienty
sta <adresa>  vypíše informace o jedné připojené klienty
level         nastaví debug level
quit          ukončení spojení v hostapd 

Závěr

Tento článek se bude hodit hlavně uživatelům, kteří by si doma rádi postavili multifunkční router jehož jedna funkce bude sdílení sítě přes WiFi spojení s dostatečným zabezpečením. Wpa_supplicant má na druhou stranu široké možnosti a práci s WiFi dělá na notebooku, který se často pohybuje velmi pohodlnou.

Odkazy

Byl pro vás článek přínosný?

Autor článku

Adam Štrauch je redaktorem serveru Root.cz a svobodný software nasazuje jak na desktopech tak i na routerech a serverech. Ve svém volném čase se stará o komunitní síť, ve které je již přes 100 členů.