WPA supplicant (Italiano)

From ArchWiki
Revision as of 17:47, 7 February 2012 by Hilinus (Talk | contribs)

Jump to: navigation, search

This template has only maintenance purposes. For linking to local translations please use interlanguage links, see Help:i18n#Interlanguage links.


Local languages: Català – Dansk – English – Español – Esperanto – Hrvatski – Indonesia – Italiano – Lietuviškai – Magyar – Nederlands – Norsk Bokmål – Polski – Português – Slovenský – Česky – Ελληνικά – Български – Русский – Српски – Українська – עברית – العربية – ไทย – 日本語 – 正體中文 – 简体中文 – 한국어


External languages (all articles in these languages should be moved to the external wiki): Deutsch – Français – Română – Suomi – Svenska – Tiếng Việt – Türkçe – فارسی

Una rete protetta da una chiave WEP (sia statica che dinamica), può essere facilmente compromessa da un utente malevolo. WPA risolve il problema della chiave statica, cambiandola dopo un certo numero di pacchetti trasmessi/ricevuti, oppure dopo un certo lasso di tempo: questa operazione è svolta da un demone che è strettamente legato all'hardware wireless di cui si dispone.

Drivers di scarsa qualità (ad esempio quelli usati attraverso ndiswrapper), possono dar luogo a fastidiosi problemi, se usati assieme a wpa_supplicant. E' quindi consigliabile, se possibile, usare hardware con un supporto adeguato e munito di driver di qualità.

Considerazioni

Questo articolo assume che si abbia familiarità con il proprio hardware, e si sia in grado di districarsi tra i files di configurazione, oltre a saper configurare il proprio sistema. E' di fondamentale importanza aver letto e capito l'articolo Wireless Setup, poichè fungerà da base per tutto ciò che verrà spiegato qui.

Questo documento non costituisce un prerequisito se il proprio hardware funziona out-of-the-box e viene gestito attraverso un demone come NetworkManager o similari. Se si preferisce connettersi alla rete usando un tool grafico, questo articolo non fa per voi.

Installazione

Si installi il demone:

# pacman -S wpa_supplicant

Il pacchetto è stato compilato con il supporto ad una larga gamma di hardware wireless. A titolo informativo, questa è la lista completa, ottenibile eseguendo wpa_supplicant:

wpa_supplicant

Driver list:

*HostAP
*Prism54
*NDISWrapper
*AMTEL
*IPW (both 2100 and 2200 drivers)
*WEXT (Generic Linux wireless extensions)
*Wired ethernet

La maggior parte dell'hardware wireless è già supportato da wpa_supplicant. Anche se il produttore del vostro Chipset non è nell'elenco (il che, a dire il vero, è molto probabile), è possibile utilizzare la Generic Wireless Extension (WEXT) per connettersi a reti utilizzanti il sistema di cifratura WPA. Circa il 75% dell'hardware è supportato da WEXT; un 20% può funzionare ricompilando wpa_supplicant e/o drivers, mentre il restante 5% è definitivamente incompatibile. Il PKGBUILD per wpa_supplicant è disponibile in /var/abs/core/support/wpa_supplicant, se il tree di ABS è installato.

Opzionale: Installare l'interfaccia grafica

Per chi preferisce disporre di un'interfaccia grafica, è possibile utilizzare una GUI creata dagli stessi sviluppatori di wpa_supplicant, e disponibile nel repository [extra]:

# pacman -S wpa_supplicant_gui

Configurazione e connessione

Il file /etc/wpa_supplicant.conf contiene tutte le impostazioni per wpa_supplicant. Il suo contenuto è relativamente semplice, benchè il file fornito di default sia orribilmente astruso. Per semplificare il tutto, si effettui il login come root e si rinomini il file /etc/wpa_supplicant.conf, poichè non è richiesto al momento.

# mv /etc/wpa_supplicant.conf /etc/wpa_supplicant.conf.original

Metodo dinamico: 'wpa_gui', 'wpa_cli'

wpa_gui e wpa_cli richiedono un /etc/wpa_supplicant.conf molto minimale.

Di seguito un semplice esempio:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=network
update_config=1
Nota: Per l'uso con netcfg-2.6.1-1 in [testing] (dal 25-06-2011), ctrl_interface dovrebbe avere valore /run/wpa_supplicant (si noti l'assenza di /var/...). Tuttavia, questo causerà il mancato funzionamento di wpa_cli (si utilizzi l'opzione -p per forzare il valore di default). Se l'impostazione non viene cambiata, si riscontreranno errori simili a: "Failed to connect to wpa_supplicant - wpa_ctrl_open: no such file or directory".

La configurazione presentata sopra, permetterà agli utenti appartenenti al gruppo network di controllare wpa_supplicant usando i frontends wpa_gui e wpa_cli. L'opzione update-config=1 consentirà a questi due programmi di modificare automanticamente il file /etc/wpa_supplicant.conf, al fine di aggiungere nuove reti o effettuare modifiche a quelle esistenti.

Si avvii quindi wpa_supplicant:

# wpa_supplicant -Dwext -i wlan0 -c/etc/wpa_supplicant.conf -B

L'opzione -D specifica il driver wireless in uso (che è quasi sempre wext), -i specifica l'interfaccia (si sostituisca wlan0 con il nome della propria interfaccia) e -c indica il file di configurazione da utilizzare (solitamente /etc/wpa_supplicant.conf). Infine, -B forza a wpa_supplicant ad avviarsi come demone. Sarà necessario avviare wpa_supplicant come root (o con i relativi permessi usando sudo), benchè ogni utente appartenente al gruppo network possa usare wpa_gui o wpa_cli.

wpa_gui e wpa_cli dovrebbero ora funzionare.

Per ulteriori informazioni sulla modifica manuale del file di configurazione, si continui a leggere: le seguenti informazioni sono solitamente utili anche se non si stanno definendo le reti in modo manuale in /etc/wpa_supplicant.conf.

Metodo classico: /etc/wpa_supplicant.conf

Il SSID e la password per la chiave WPA devono essere codificati in una stringa esadecimale. Ottenere questo risultato è abbastanza semplice, usando l'utility wpa_passphrase, che è fornita assieme a wpa_supplicant. Si usi la seguente sintassi:

  • Un esercizio d'esempio:
# wpa_passphrase mywireless_ssid "secretpassphrase"

Dovrebbe venir generato qualcosa di simile:


network={
       ssid="mywireless_ssid"
       #psk="secretpassphrase"
       psk=7b271c9a7c8a6ac07d12403a1f0792d7d92b5957ff8dfd56481ced43ec6a6515
}

Questa è la configurazione minima necessaria per il funzionamento di una rete protetta da WPA. La prima linea è la dichiarazione di apertura per la rete, la seconda indica il SSID del punto d'accesso wireless a cui ci si vuole connettere, la terza contiene la password e la quarta è la sua versione esadecimale, richiesta per la connessione.

  • Usando wpa_passphrase, si specifichino questa volta SSID e password reali, quindi si rediriga l'output a /etc/wpa_supplicant.conf:
# wpa_passphrase mywireless_ssid "secretpassphrase" >> /etc/wpa_supplicant.conf

Assicurarsi di modificare quanto generato in base alle informazioni di connessione di cui si è in possesso. Il comando di cui sopra, creerà un /etc/wpa_supplicant.conf di base partendo dall'output del comando wpa_passphrase.

Se, ad esempio, si usa il protocollo WPA2-Personal, sarà necessario aggiungere alcune linee nella corrispondente sezione "network":


network={
       ssid="mywireless_ssid"
       proto=RSN
       key_mgmt=WPA-PSK
       pairwise=CCMP TKIP
       group=CCMP TKIP 
       psk=7b271c9a7c8a6ac07d12403a1f0792d7d92b5957ff8dfd56481ced43ec6a6515
}

Nota: Le informazioni appena immesse verranno immagazzinate in formato testo: per questo motivo potrebbe essere preferibile cambiare i permessi del file /etc/wpa_supplicant.conf (es. chmod 600 /etc/wpa_supplicant.conf per rendere il file leggibile solo da root), a seconda di quanta importanza si da alla sicurezza del proprio sistema.

È possibile aggiungere altre reti WPA con il seguente comando:

# wpa_passphrase additional_ssid "additional_passphrase" >> /etc/wpa_supplicant.conf

Il >> redirigerà l'output, appenendolo in coda al file /etc/wpa_supplicant.conf preesistente, senza sovrascriverlo.

Sono disponibili molte altre opzioni da impostare nella sezione network, ottenibili leggendo il file di configurazione fornito di default, anche se, nella maggioranza dei casi, è possibile utilizzare le impostazioni predefinite senza specificare altro; almeno per il momento.

CInfine, si aggiungano le seguenti linee in cima al proprio /etc/wpa_supplicant.conf:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel
Nota: Per l'uso con netcfg-2.6.1-1 in [testing] (dal 25-06-2011), ctrl_interface dovrebbe avere valore /run/wpa_supplicant (si noti l'assenza di /var/...). Tuttavia, questo causerà il mancato funzionamento di wpa_cli (si utilizzi l'opzione -p per forzare il valore di default). Se l'impostazione non viene cambiata, si riscontreranno errori simili a: "Failed to connect to wpa_supplicant - wpa_ctrl_open: no such file or directory".

Se si ha la necessità di connettersi a più reti, si definisca semplicemente un altra sezione network nel file di configurazioni. Si cambi la priorità come più si ritiene consono, tenendo in mente che le reti con un valore più alto vengono utilizzate per prime.

È ora possibile provare a collegarsi manualmente. Innanzitutto, si attivi l'interfaccia Wi-Fi. Per questo esempio utilizzeremo wlan0 come interfaccia:

# ip link set wlan0 up

Sarà solitamente possibile utilizzare il driver Wireless EXTtensions (wext) con wpa_supplicant. Qualora questo non dovesse funzionare, si cerchi su internet come risolvere.

Si dia il seguente comando da root:

# wpa_supplicant -B -Dwext -i wlan0 -c /etc/wpa_supplicant.conf 

Il comando appena scritto indica a wpa_supplicant di utilizzare la configurazione hardware di default (WEXT - Linux W'ireless EXTensions) e di associarsi con il SSID specificato in /etc/wpa_supplicant.conf. Inoltre, l'associazione dovrà essere effettuata con il device wlan0, e il processo dovrà essere spostato in background (-B). Per avere un output più prolisso, si specifichino le opzioni -d o -dd (per il debug). È possibile trovare ulteriori esempi qui.

Nell'output stampato a console, dovrebbe esserci una linea che contiene 'Associated:', seguita da u n MAC Address. È ora sufficiente richiedere un indirizzo IP valido.

Si esegua, come root:

# dhcpcd wlan0
Nota: Non si richieda un indirizzo IP immediatamente! È consigliabile attendere per assicurarsi che l'associazione con l'access point sia avvenuta con successo. Se si usa uno script, è possibile utilizzare sleep 10 per aspettare 10 secondi.

Si verifichi che l'interfaccia abbia un indirizzo IP usando il pacchetto iproute:

# ip addr show wlan0

   wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
   link/ether 00:1C:BF:66:4E:E0 brd ff:ff:ff:ff:ff:ff
   inet 192.168.0.62/24 brd 192.168.0.255 scope global eth0
   inet6 fe80::224:2bff:fed3:759e/64 scope link 
      valid_lft forever preferred_lft forever

Se l'output è simile a quanto visto sopra, la connessione è stata effettuata con successo. In questo caso, è possibile utilizzre netcfg2 per rendere la configurazione permanente, oltre che avviare la connessione alla rete quando si accende la macchina. A seconda dell'approccio scelto durante la configurazione dell'adattatore di rete wireless, è possibile scegliere di utilizzare un tool grafico, ma non invasivo come Wicd o affidarsi ai profili di rete forniti da netcfg.

Configurazioni più sofisticate come l'autenticazione attraverso EAPOL o server RADIUS sono descritte dettagliatamente nella pagina di manuale di wpa_supplicant (man wpa_supplicant.conf) ed esulano dallo scopo di questo articolo.