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

Obě strany předchozí revize Předchozí verze
Následující verze
Předchozí verze
cs:uzivatel:sw:nix:wpa_supplicant [2017/03/10 14:18]
jan.tomasek@cesnet.cz
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í. Je standardní součástí distribucí,​ které podporují WPA šifrování,​ a tak je zahrnut i ve standardních spouštěcích skriptech wi-fi rozhraní. Pokud máte grafické rozhraní, pravděpodobně v něm máte i NetworkManager který ​se postará o konfiguraci wpa_supplikanta ​z grafického prostředí.+[[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 i NetworkManager který ​konfiguruje ''​wpa_supplicant'' ​z grafického prostředí.
  
 ===== Konfigurační soubor ===== ===== Konfigurační soubor =====
  
-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 bez hesla.+Jednotlivé ​bezdrátové ​sítě se definují v konfiguračním souboru, obvykle ​''/​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>​
 network={ network={
-        priority=5 +  ​ssid="​eduroam"​ 
-        ​ssid="​eduroam"​ +  key_mgmt=WPA-EAP 
-        ​scan_ssid=1 +  eap=PEAP 
-        ​key_mgmt=WPA-EAP +  ​phase2="auth=MSCHAPV2
-        ​pairwise=CCMP  +  ​pairwise=CCMP 
-        ​eap=PEAP +  ​group=CCMP TKIP 
-        ​identity="eduroam_jmeno@realm+  ​ca_cert="/​etc/​ssl/​example_CA.pem"​ 
-        ​password="​eduroam_heslo"​ +  ​domain_match="radius.example.org
-        ca_cert="/​etc/​ssl/​certs/​CERTIFIKAT_CA.pem"​ +  ​identity="user@example.org
-        ​altsubject_match="DNS:radius1.organizace.cz;​DNS:​radius2.organizace.cz+  ​password="CorrectHorseBatteryStaple"
-        ​phase1="peaplabel=0+
-        ​phase2="auth=MSCHAPV2"+
 } }
 +</​code>​
 +
 +==== Správné ověřování identity RADIUS serveru ====
 +
 +<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>​
 +
 +
 +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 PEM. Ve výše uvedeném příkladu konfigurace jde o soubor ''/​etc/​ssl/​example_CA.pem''​. Pokud organizace používá certifikáty veřejných autorit, důvěryhodné v operačním systému, je možné nastavit důvěru také volbou ''​ca_path'',​ směřující k adresáři obsahujícím veškeré důvě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>​
 +  ca_path="/​etc/​ssl/​certs"​
 +</​code>​
 +
 +Abyste měli jistotu, že se př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 autoritou, což zejména v případě veřejných autorit znamená miliony certifikátů.
 +
 +Kontrolu je možné nastavit různými způsoby. Výše uvedený příklad př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éno, ale 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:​
 +
 +<​code>​
 +  domain_suffix_match="​radius.example.org"​
 +</​code>​
 +
 +Třetí možností je vyjmenovat přímo kompletní jména autentizačních serverů volbou ''​altsubject_match''​. Tato volba je vhodná v pří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í přežívá z historických důvodů. Kontrolu pak lze nastavit takto: (**Pozor!** V řetězci se nesmí vyskytovat mezery!)
 +
 +<​code>​
 +  altsubject_match="​DNS:​radius1.example.org;​DNS:​radius2.example.org"​
 +</​code>​
 +
 +==== 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 hash. Hash 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>​
 +$ python -c '​import getpass,​hashlib;​ print("​password=hash:"​+hashlib.new("​md4",​getpass.getpass().encode("​utf-16le"​)).hexdigest())'​
 +Password: CorrectHorseBatteryStaple
 +password=hash:​012c9edfb06b543233745c9aff836490
 +</​code>​
 +
 +<WRAP center round tip 60%>
 +Uložení hashe **nepředstavuje žádnou ochranu před zneužitím hesla**. Útočník, který se zmocní hashe jej může pří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>​
 +
 +
 +===== 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>​
 +$ wpa_passphrase HomeNetwork
 +# reading passphrase from stdin
 +CorrectHorseBatteryStaple
 network={ network={
-        ssid="organizace+        ssid="HomeNetwork
-        ​key_mgmt=NONE +        ​#psk="​CorrectHorseBatteryStaple"​ 
-        ​priority=4+        ​psk=a14c6fb42d868ab1d1fb62373e6cc8d3bf0b3fa79e187d7226f1b22eaa784660
 } }
 </​code>​ </​code>​
  
-K úspěšnému ipojení k 802.1x síti //eduroam// je nutný certifikát certifikační autoritykterá vydala certifikát RADIUS serveru vaší organizace. Program wpa_supplicant pracuje pouze certifikáty formátu PEM+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. 
 + 
 +<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 ​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 volbou ''​disabled=1''​ a povolujte za běhu pouze podle potřeby. 
 +</​WRAP>​
  
-Abyste měli jistotu, že se připojujete,​ a př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 komunikuje, je **nezbytné pro ochranu vašeho hesla**. Věnujte tomu proto náležitou pozornost! Další informace nalezne na stránce "​[[cs:​uzivatel:​sw:​certifikaty]]"​. 
  
-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. 
  
 ===== Připojení ===== ===== Připojení =====
  
-Po uložení konfiguračního souboru ​můžeme zkusit ​připojení přes rozhraní wlan0 s generickým ovladačem příkazem+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í distribuce. Pro ruční vyzkoušení funkčnosti můžeme zkusit ​spustit suplikanta i ručně: 
  
 <​code>​ <​code>​
- # wpa_supplicant -iwlan0 -c/​etc/​wpa_supplicant.conf -d+ # wpa_supplicant -iwlan0 -c/etc/​wpa_supplicant/​wpa_supplicant.conf -d
 </​code>​ </​code>​
  
-Pokud autentifikace ​proběhla úspěšně, ​zbývá ​rozhraní ​přiřadit IP adresu pomocí ​DHCP klienta, např. takto:+Pokud autentizace ​proběhla úspěšně ​(poslední stav suplikanta je ''​COMPLETED''​)stačí na daném ​rozhraní ​spustit ​DHCP klienta, např. takto:
  
 <​code>​ <​code>​
Řádek 49: Řádek 101:
 </​code>​ </​code>​
  
-To je ovšem zapotřebí pouze pokud vaše distribuce ​nepodporuje ​wpa_supplicant ​ve svých spouštěcích skriptechV opačném případě obvykle stačí upravit konfigurační soubor ​spustit bezdrátovou síť spouštěcím skriptem distribucePrůběh asociace je možné ​sledovat na íkazovém řádku programem wpa_clinebo grafickém režimu pomocí programu ​//wpa_gui//.+===== Ovládání za běhu ===== 
 + 
 +Součástí ​distribuce ​''​wpa_supplicant''​ jsou i programy ''​wpa_cli''​ a ''​wpa_gui'',​ poskytující řádkové, resp. grafické rozhraní k dálkovému ovládání běžícího suplikantaPř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 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. 
 + 
 +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: 
 + 
 +  * ''​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) 
 + 
 + 
 +====== 
 + ​--- ​//[[caletka@cesnet.cz|Ondřej Caletka]] 2017/03/17 22:32// přepracování a rozšíření návodu \\
  
Poslední úprava:: 2017/03/10 14:18