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.