cs:uzivatel:sw:nix:wpa_supplicant

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Následující verze
Předchozí verze
cs:uzivatel:sw:nix:wpa_supplicant [2007/03/19 15:21]
127.0.0.1 upraveno mimo DokuWiki
cs:uzivatel:sw:nix:wpa_supplicant [2018/10/04 10:55] (aktuální)
caletka@cesnet.cz note -> wrap
Řádek 1: Řádek 1:
-====== Konfigurace WPA Supplicantu ​pro připojení k eduroamu ======+====== Konfigurace ​programu ​WPA Supplicant ​pro připojení k eduroamu ======
  
-[[http://hostap.epitest.fi/​wpa_supplicant/​|WPA Supplicant]] je program, který se v linuxu ​stará o podporu WPA zabezpečení ​wi-fi sítí. ​Na rozdíl od programu [[:​cs:​uzivatel:​sw:​nix:​xsupplicant|xsupplicant]] bývá standardní součástí distribucíkteré podporují WPA šifrování,​ a tak je zahrnut ​ve standardních spouštěcích skriptech wi-fi rozhraní.+[[http://w1.fi/​wpa_supplicant/​|WPA Supplicant]] je program, který se v Linuxu ​stará o podporu WPA zabezpečení ​Wi-Fi sítí. ​Pokud máte grafické rozhranípravděpodobně v něm máte NetworkManager který konfiguruje ''​wpa_supplicant''​ z grafického prostředí.
  
-===== Podporované chipsety ​=====+===== Konfigurační soubor ​=====
  
-Zda má wpa_supplicant zakompilovánu podporu pro váš chipset zjistíte tak, žprogram ​spustíte bez parametrů:+Jednotlivé bezdrátové sítě se definují v konfiguračním souboruobvykle ''/​etc/​wpa_supplicant/​wpa_supplicant.conf''​. Je jich možno definovat libovolně mnoho, ​program ​se připojí k té, která je dostupná a zároveň má největší prioritu. Základní definice sítě ''​eduroam''​ s nejběžnější konfigurací WPA2/​PEAP/​MSCHAPv2 vypadá takto
  
 <​code>​ <​code>​
-# wpa_supplicant +network={ 
-... +  ​ssid="​eduroam"​ 
-drivers: +  ​key_mgmt=WPA-EAP 
-  ​hostap ​Host AP driver (Intersil Prism2/​2.5/​3) +  ​eap=PEAP 
-  ​prism54 ​Prism54.org driver (Intersil Prism GT/​Duette/​Indigo) +  ​phase2="​auth=MSCHAPV2"​ 
-  ​atmel ATMEL AT76C5XXx (USB, PCMCIA) +  ​pairwise=CCMP 
-  ​wext Linux wireless extensions (generic) +  ​group=CCMP TKIP 
-  ​ndiswrapper ​Linux ndiswrapper +  ​ca_cert="/etc/​ssl/​example_CA.pem"​ 
-  ​ipw Intel ipw2100/2200 driver +  ​domain_match="​radius.example.org" 
-  ​wired wpa_supplicant wired Ethernet driver +  identity="​user@example.org" 
-...+  password="​CorrectHorseBatteryStaple"​ 
 +}
 </​code>​ </​code>​
  
-Pokud v seznamu nenajdete ovladač pro váš wifi adaptér, je možné, že adaptér podporuje generický ovladač //wext//. S tímto ovladačem pracují i nové ovladače pro čipy IPW.+==== Správné ověřování identity RADIUS serveru ====
  
-===== Konfigurační soubor =====+<WRAP center round important 60%> 
 +**Správné nastavení ověřování identity RADIUS serveru**, se kterým váš suplikant komunikuje, je **nezbytné pro ochranu vašeho hesla** i pro ochranu před únosem Wi-Fi provozu. Věnujte mu proto náležitou pozornost! Další informace naleznete na stránce [[cs:​uzivatel:​sw:​certifikaty]]. 
 +</​WRAP>​
  
-Jednotlivé bedrátové sítě, ke kterým se chceme připojit, se definují v konfiguračním souboru ''/​etc/​wpa_supplicant.conf''​. Je jich možno definovat libovolně mnoho, program se připojí k té, která je dostupná a zároveň má největší prioritu. Následující příklad ukazuje připojení k síti //eduroam// 802.1x s následným fallbackem lokální síť organizace (původně //​eduroam-simple//​ řešení založené na authentizaci pomocí web formuláře). 
  
-**Pozor:** Toto není úplný konfigurační soubor ​wpa_supplicant.confzde je pouze část, věnovaná eduroam sítím. Pro zprovoznění je tšinou ještě potřeba poladit alespoň globální parametr ​//ap_scan//.+K ověření identity autentizačního serveru je nutný certifikát certifikační autority, která vydala certifikát RADIUS serveru vaší organizace. Program ''​wpa_supplicant''​ pracuje pouze s certifikáty formátu PEMVe výše uvedeném příkladu konfigurace jde o soubor ''/​etc/​ssl/​example_CA.pem''​. Pokud organizace používá certifikáty veřejných autoritdůvěryhodné v operačním systémuje možné nastavit důru také volbou ''​ca_path'',​ směřující k adresáři obsahujícím veškeré důryhodné certifikáty (včetně symbolických odkazů vygenerovaných utilitou [[https://www.openssl.org/docs/man1.1.0/​apps/​c_rehash.html|c_rehash]]). Například takto:
  
 <​code>​ <​code>​
-network={ +  ca_path="/​etc/​ssl/​certs"​
-        priority=5 +
-        ssid="​eduroam"​ +
-        scan_ssid=1 +
-        key_mgmt=WPA-EAP +
-        eap=PEAP +
-        identity="​eduroam_jmeno@realm"​ +
-        password="​eduroam_heslo"​ +
-        ca_cert="/​etc/​ssl/​certs/​cesnet-ca.pem" +
-        altsubject_match="​DNS:​radius1.organizace.cz;​DNS:​radius2.organizace.cz"​ +
-        phase1="​peaplabel=0"​ +
-        phase2="​auth=MSCHAPV2"​ +
-+
-network={ +
-        ssid="​organizace"​ +
-        key_mgmt=NONE +
-        priority=4 +
-}+
 </​code>​ </​code>​
  
-K úspěšnému ​ipojení k 802.1x síti //eduroam// je nutný certifikát certifikační autority, která vydala certifikát ​RADIUS serveru ​vaší organizace. Většinou se jedná o [[http://www.cesnet.cz/​pki|CESNET CA]], kořenový ​certifikát ​je dostupný na stránce [[http://​www.cesnet.cz/​pki/​cs/​ch-CRT-CRL.html|zde]]. Program wpa_supplicant pracuje pouze s certifikáty formátu PEM. Některé organizace používají novou službu [[http://​www.cesnet.cz/​pki/​cs/​st-guide-gs.html|SureServer EDU]]jejíž kořenový certifikát od společnosti Global Sign už pravděpodobně máte na systému předinstalovaný,​ případně si jej můžete stáhnout [[https://​secure.globalsign.net/​cacert/​ct_root.pem|zde]].+Abyste měli jistotu, že se ipojujete, ​//a především že posíláte své heslo// pouze svému domácímu ​RADIUS serveru, je třeba nastavit také **kontrolu jména/jmen autentizačních serverů**Bez této konfigurace **bude akceptován jakýkoli ​certifikát** vydaný důvěryhodnou autoritoucož zejména v případě veřejných autorit znamená miliony certifikátů.
  
-Abyste měli jistotu, ​že se ipojujete, a edevším že posíláte své heslo vašemu domácímu RADIUS serveru, musíte uvést direktivu ​''​altsubject_match'' ​(**Pozor!** V řetězci se nesmí vyskytovat mezery)**Správné nastavení ověřování identity RADIUS serveru**, se kterým váš suplikant komunikujeje **nezbytné pro ochranu vašeho hesla**Věnujte tomu proto náležitou pozornost! Další informace nalezne ​na stránce "[[cs:uzivatel:​sw:​certifikaty]]"​.+Kontrolu je možné nastavit různými způsoby. Výšuvedený ​íklad ​edpokládá certifikát vystavený na jediné jméno ​''​radius.example.org''​. ​Pokud organizace používá víc autentizačních serverůkde se každý prokazuje certifikátem vystaveným na jiné jménoale sdílí společnou koncovku (například ''​r1.radius.example.org''​ a ''​r2.radius.example.org''​) je možné nastavit mírnější kontrolu ​na společnou koncovku, například:
  
-Provozuje-li vaše organizace víc než jeden RADIUS server, je pro správnou funkci nutné používat wpa_supplikant verze minimálně 0.5.6! Předchozí verze nezvládají ověřit více než jeden RADIUS server. wpa_supplikant musí být přeložen s OpenSSL nikoliv GNU TLS.+<​code>​ 
 +  domain_suffix_match="​radius.example.org" 
 +</​code>​
  
-===== Připojení ===== +Třetí možností je vyjmenovat přímo kompletní jména autentizačních serverů volbou ''​altsubject_match''​. Tato volba je vhodná v ípadě, kdy autentizační servery nesdílí společnou koncovku. Tento způsob nasazení není doporučován pro nové instalace, ale na spoustě institucí ​ežívá z historických důvodů. Kontrolu pak lze nastavit takto: (**Pozor!** V řetězci se nesmí vyskytovat mezery!)
- +
-Po uložení konfiguračního souboru můžeme zkusit ​ipojení přes rozhraní wlan0 s generickým ovladačem íkazem+
  
 <​code>​ <​code>​
- # wpa_supplicant -Dwext -iwlan0 -c/​etc/​wpa_supplicant.conf+  altsubject_match="​DNS:​radius1.example.org;​DNS:​radius2.example.org"​
 </​code>​ </​code>​
  
-Pokud autentifikace proběhla úspěšně, zbývá rozhraní přiřadit IP adresu pomocí DHCP klientanapř. takto:+==== Ukládání hesla ve formě hashe ==== 
 + 
 +Standardně se heslo ukládá do konfiguračního souboru v otevřené podobě. Při použítí nejběžnějšího protokolu MSCHAPv2 to však není nutnéneboť k ověření hesla se použije pouze jeho NTLM hashHash ve formátu vhodném pro vložení do konfiguračního souboru je možné získat například tímto jednořádkovým skriptem:
  
 <​code>​ <​code>​
- # dhcpcd wlan0+$ python -c '​import getpass,​hashlib;​ print("​password=hash:"​+hashlib.new("​md4",​getpass.getpass().encode("​utf-16le"​)).hexdigest())'​ 
 +Password: CorrectHorseBatteryStaple 
 +password=hash:​012c9edfb06b543233745c9aff836490
 </​code>​ </​code>​
  
-To je ovšem zapotřebí pouze pokud vaše distribuce nepodporuje wpa_supplicant ve svých spouštěcích skriptech. V opačném ​ípadě obvykle stačí upravit konfigurační soubor a spustit bezdrátovou síť spouštěcím skriptem distribucePrůběh asociace je možné sledovat na íkazovém řádku programem wpa_cli, nebo v grafickém režimu pomocí programu ​//wpa_gui//.+<WRAP center round tip 60%> 
 +Uložení hashe **nepředstavuje žádnou ochranu ​ed zneužitím hesla**Útočník, který se zmocní hashe jej můžímo použít k přihlášení (technika [[https://en.wikipedia.org/wiki/Pass_the_hash|pass the hash]])Jde tak spíše o ochranu před odcizením hesla letmým pohledem. 
 +</​WRAP>​
  
-===== Debian a jeho klony (*ubuntu) ​===== + 
-V testing verzi debianu je wpasupplicant balíček ve verzi 0.5.x, který je navázaný na ifupdown skripty (wpasupplicant neběží jako samostatný daemon). Parametry nastavení se očekávají v souboru /​etc/​network/​interfaces,​ kam stačí přidat:+===== Konfigurace sítě se sdíleným klíčem ​===== 
 + 
 +Do konfiguračního souboru také můžeme snadno uložit konfiguraci bezdrátových sítí zabezpečených jednoduchým sdíleným tajemstvím WPA. K vygenerování potřebného fragmentu konfigurace je možné využít utilitu ''​wpa_passphrase''​:
  
 <​code>​ <​code>​
-auto eth1 +$ wpa_passphrase HomeNetwork 
-iface eth1 inet dhcp +# reading passphrase from stdin 
-  ​wpa-conf /​etc/​wpa_supplicant/​wpa_supplicant.conf+CorrectHorseBatteryStaple 
 +network={ 
 +        ssid="​HomeNetwork"​ 
 +        #​psk="​CorrectHorseBatteryStaple"​ 
 +        psk=a14c6fb42d868ab1d1fb62373e6cc8d3bf0b3fa79e187d7226f1b22eaa784660 
 +}
 </​code>​ </​code>​
  
-kde eth1 je sítové rozhraní bezdrátového adaptéru a soubor /​etc/​wpa_supplicant/​wpa_supplicant.conf je funkční ​konfigurace ​pro wpasupplicant+Poskytnuté heslo je rovnou převedeno do 256bitového sdíleného tajemství WPA, takže původní heslo může být z konfigurace ​odstraněno.
  
-Pokud v okamžiku, kdy tento návod čtete, stále není v distribuci k dispozici alespoň verze 0.5.6žete si stáhnou balíček pro Debian z [[http://​uit.opf.slu.cz/howto/​cesnet-voip-repository-on-opf|apt repository na opf.slu.cz]].+<WRAP center round important 60%> 
 +Do konfigurace WPA suplikanta **nepřidávejte sítě, které nepoužívají žádné šifrování!** Vystavili byste se tak riziku přesměrování na falešný přístupový bod a kompromitace Wi-Fi provozuV případě, že nešifrovanou síť musíte pravidelně používat, definujte ji s volbou ''​disabled=1''​ a povolujte za běhu pouze podle potřeby. 
 +</WRAP>
  
-===== Jádra Linuxu ===== 
  
-==== Distribuční jádra ==== 
  
-Mnoho distributorů Linuxu se stará, aby jejich jádra podporovala co nejvíc zařízení. Hledají a sami aplikují potřebné záplaty pro dosažení nejlepší funcionality. Provozujete-li distribuční kernel, tak prostě vyzkoušejte výše popsané nastavení, je veliká šance, že vám připojení ​bude fungovat bez potíží.+===== Připojení ​=====
  
-==== Vanila jádra <= 2.6.18 ====+Vlastní spuštění WPA suplikanta je nejlepší přenechat spouštěcím skriptům daného operačního systému a tedy postupovat podle návodu konkrétní distribucePro ruční vyzkoušení funkčnosti můžeme zkusit spustit suplikanta i ručně: ​
  
 +<​code>​
 + # wpa_supplicant -iwlan0 -c/​etc/​wpa_supplicant/​wpa_supplicant.conf -d
 +</​code>​
 +
 +Pokud autentizace proběhla úspěšně (poslední stav suplikanta je ''​COMPLETED''​),​ stačí na daném rozhraní spustit DHCP klienta, např. takto:
 +
 +<​code>​
 + # dhcpcd wlan0
 +</​code>​
  
-<​del>​Popsaný postup byl úspěšně testován na jádru 2.6.16-r1 s MiniPCI kartou Intel Pro Wireless 2200BG, která je součástí balíku Centrino. Ovladač pro tuto kartu je zahrnut přímo v oficiálních zdrojových kódech jádra. I přesto, že IPW2200 má podporu ve wpa_supplicantu,​ nové verze jaderného modulu pracují pouze přes wireless extensions. --- //​[[http://​logout.sh.cvut.cz/​~oskar/​blog/​|Ondřej Caletka]]//</​del>​+===== Ovládání za běhu =====
  
-Mé zkušenosti s jádrem 2.6.16.9 ukazují, že drivery z vanila kernelu nefungují korektně s 802.1x ​WPAklient se pořád asocijujedostává disconnect event a nedokáže dostat žádná data RADIUS serveru, tedy se nedokáže ověřit. Musel jsem nahradit celý [[http://ieee80211.sourceforge.net/|802.1x subsystém]] vanila kernelu ​následně nahradit drivery pro kartu [[http://​ipw2200.sourceforge.net/|Intel Pro Wireless 2200BG]].+Součástí distribuce ''​wpa_supplicant''​ jsou i programy ''​wpa_cli'' ​''​wpa_gui''​poskytující ​řádkovéresp. grafické rozhraní ​dálkovému ovládání běžícího suplikanta. Při správném nastavení oprávnění komunikačního soketu (vizte ​[[https://w1.fi/cgit/hostap/​plain/​wpa_supplicant/​wpa_supplicant.conf|dokumentaci]]) je možné tyto utility používat i jako neprivilegovaný uživatel ​snadno tak za chodu přepínat mezi Wi-Fi sítěmiJe také možné za chodu přidávat nové sítěTaková konfigurace se však po ukončení suplikanta ztratí, není-li nastavena volba ''​update_config=1''​. Neukládání konfigurace však může být výhodné pro dočasné připojení k nezabezpečeným sítím.
  
-Pokud používáte kernel z distribuce je možné, ​že toto za vás už udělal někdo z vývojářů. Pokuste se to zjistit v dokumentaci. Testoval jsem také kernel 2.6.17 - byl třeba stejný postup, ale nechodí CDMA modem Eurotelu. V kernelu 2.6.18 zase špatně funguje [[http://​www.suspend2.net/​|Suspend 2]], takže k 7. 11. 2006 se jeví jako jediný použitelný kernel 2.6.16.9, ve kterém fungují všechny pro mě důležité komponenty. ​ --- //​[[http://​staff.cesnet.cz/​~semik|Jan Tomášek]]// ​+Utilita ''​wpa_cli''​ standardně vypisuje na obrazovku každý krok během připojování a dokáže tak posloužit při hledání problémů. Základními příkazy jsou:
  
-==== Vanila jádro = 2.6.20.1 ====+  * ''​status''​ – vypíše aktuální stav suplikanta 
 +  * ''​scan''​ – spustí skenování dostupných sítí v okolí (skenování je asynchronní) 
 +  * ''​scan_results''​ – vypíše výsledky posledního skenování 
 +  * ''​list_networks''​ – vypíše seznam konfigurovaných sítí 
 +  * ''​select_network <id sítě|any>''​ – vynutí připojení ke konkrétní síti 
 +  * ''​roam <​bssid>''​ – vynutí přechod na konkrétní přístupový bod s daným BSSID (MAC adresou)
  
-U vanila jádra není nutné patchovat kernel ovladači z [[http://​ipw2200.sourceforge.net/​|sourceforge.net]]. Stačí ho správně nakonfigurovat:​ 
  
-  * všechny položky v cryptoapi (v menuconfigu //​Cryptographic options//) mít jako muduly. +====== 
-  * **__Zapnout volbu__** //Wireless Extension API over RtNetlink// (v //Device drivers/​Network device support/​Wireless LAN (non-harmradio)//​). Bez toho se nepovede autentikace proti radius serveru! + --- //[[caletka@cesnet.cz|Ondřej Caletka]] 2017/03/17 22:32// přepracování a rozšíření návodu \\
-  * Jako moduly mít příslušné drivery (//IEEE 802.11 for Host AP (Prism2/​2.5/​3 and WEP/​TKIP/​CCMP//​ pro Intersil Prism2, //Intel PRO/​Wireless 2200BG and 2915ABG Network Connection//​ pro intelí kartu) ​--- //[[http://​cs.felk.cvut.cz/​webis/​people/​vranyj1.html|Jan Vraný]] //+
  
-====== ​ ====== 
- --- Návod byl převzat od [[http://​logout.sh.cvut.cz/​~oskar/​blog/​|Ondřeje Caletky]], původní text je v jeho [[http://​logout.sh.cvut.cz/​~oskar/​blog/​static.php?​page=eduroam|blogu]]\\ 
- --- //​[[http://​staff.cesnet.cz/​~semik|Jan Tomášek]] 07.06.2006 09:53// vytvoření dokumentu\\ 
- --- //​[[http://​staff.cesnet.cz/​~semik|Jan Tomášek]] 18.03.2007 18:18// doplnění informací o certifikátech,​ doplnění sekce o kernelech ​ 
Poslední úprava:: 2017/03/10 14:18