Guide: passo per passo

Condividi:        

GNU/Linux e le reti con protezione WPA e WPA2

Utilità
PREMESSA: se non conoscete il significato di qualche parola consultate il nostro Glossario.

Premessa
Viste le numerose falle del protocollo WEP, ormai obsoleto, è necessario utilizzare il Wi-fi Protected Access per garantire la sicurezza alla nostra rete wireless. In sostanza esso applica un sistema di autenticazione con chiavi più robuste e un metodo di verifica dell'integrità dei messaggi trasmessi attraverso la rete.
Ovviamente anche la nostra linux-box è attrezzata per il supporto a WPA e WPA2, grazie ad un software particolare wpa_supplicant. Con buona probabilità è già presente nel vostro sistema di default nella totalità delle distribuzioni, ma in caso contrario non resta che scaricarlo tramite il package manager della vostra distro. Una volta che ci siamo assicurati della sua presenza, passiamo alla configurazione e supponiamo di avere una rete con le seguenti caratteristiche:


Ssid: pc-facile
Protocollo: WPA-PSK
Cifratura: TKIP
Chiave/password: pc-facile!
dhcp attivo
Interfaccia scheda di rete: wlan0

Il nome dell'interfaccia di rete è wlan0 come si può notare dall'output di questo comando:
gunter@guntoo ~ $ sudo iwconfig
lo        no wireless extensions.

eth0      no wireless extensions.

wmaster0  no wireless extensions.

wlan0     IEEE 802.11g  ESSID:""
          Mode:Managed  Frequency:2.462 GHz  Access Point: Not-Associated
          Retry min limit:7   RTS thr:off   Fragment thr=2346 B
          Encryption key:off
          Link Quality:0  Signal level:0  Noise level:0
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

Se la vostra scheda possiede un “nome” differente, bisogna ricordarsi di modificare i comandi di tutta questa guida sostituendolo, dove presente, a “wlan0”.

Configurazione di wpa_supplicant
Apriamo il nostro terminale preferito, nel mio caso konsole, e utilizziamo il comando wpa_passphrase che ci mette a disposizione il software wpa_supplicant per facilitare il nostro compito:

gunter@guntoo ~ $ wpa_passphrase pc-facile pc-facile!
network={
        ssid="pc-facile"
        #psk="pc-facile!"
        psk=b52b1f56f493d3170309395c19823c7b37af2535ed697d477d43377ad29160e2
}


Questo comando prende in input il nome della rete (pc-facile) e la chiave (pc-facile!) e ci restituisce un output che ci servirà tra poco.
Ora dobbiamo aprire, con privilegi di root o superuser (sudo), il file /etc/wpa_supplicant.conf con un qualsiasi editor di testo (gedit,kwrite,kedit,vim...):

gunter@guntoo ~ $ sudo kwrite /etc/wpa_supplicant.conf


Inseriamo una prima riga riga per indicare la directory dove il programma creerà un socket per la gestione dell'interfaccia:

ctrl_interface=/var/run/wpa_supplicant


La seguente riga, invece, individua il gruppo di utenti a cui è permesso il controllo, di default root.

ctrl_interface_group=0


Di seguito, invece andremo a copiare ed incollare l'output del comando wpa_passphrase eseguito precedentemente:
network={
        ssid="pc-facile"
        #psk="pc-facile!"
        psk=b52b1f56f493d3170309395c19823c7b37af2535ed697d477d43377ad29160e2
}


Nella maggior parte dei casi possiamo già salvare e uscire, se, invece, abbiamo qualche problema abbiamo a disposizione molte opzioni. Un esempio di configurazione generale valida sia per WPA che per WPA2 è questa:


network={
  ssid="pc-facile"
  proto=WPA RSN
  key_mgmt=WPA-PSK
  pairwise=CCMP TKIP
  group=CCMP TKIP WEP104 WEP40
  #psk="pc-facile!"
   psk=b52b1f56f493d3170309395c19823c7b37af2535ed697d477d43377ad29160e2
  priority=2
}


Driver e avvio manuale
Abbiamo già svolto una buona parte del lavoro, ora dobbiamo scegliere il driver da utilizzare. Tramite il seguente comando abbiamo una panoramica delle opzioni che possiamo passare a wpa_supplicant:

gunter@guntoo ~ $ sudo wpa_supplicant
usage:
  wpa_supplicant [-BddhKLqqtuvwW] [-P<pid file>] [-g<global ctrl>] \
        -i<ifname> -c<config file> [-C<ctrl>] [-D<driver>] [-p<driver_param>] \
        [-b<br_ifname> [-N -i<ifname> -c<conf> [-C<ctrl>] [-D<driver>] \
        [-p<driver_param>] [-b<br_ifname>] ...]

drivers:
  wext = Linux wireless extensions (generic)
  hostap = Host AP driver (Intersil Prism2/2.5/3)
  prism54 = Prism54.org driver (Intersil Prism GT/Duette/Indigo)
  atmel = ATMEL AT76C5XXx (USB, PCMCIA)
  ndiswrapper = Linux ndiswrapper
  ipw = Intel ipw2100/2200 driver (old; use wext with Linux 2.6.13 or newer)
  wired = wpa_supplicant wired Ethernet driver
options:
  -b = optional bridge interface name
  -B = run daemon in the background
  -c = Configuration file
  -C = ctrl_interface parameter (only used if -c is not)
  -i = interface name
  -d = increase debugging verbosity (-dd even more)
  -D = driver name
  -g = global ctrl_interface
  -K = include keys (passwords, etc.) in debug output
  -t = include timestamp in debug messages
  -h = show this help text
  -L = show license (GPL and BSD)
  -p = driver parameters
  -P = PID file
  -q = decrease debugging verbosity (-qq even less)
  -u = enable DBus control interface
  -v = show version
  -w = wait for interface to be added, if needed
  -W = wait for a control interface monitor before starting
  -N = start describing new interface
example:
  wpa_supplicant -Dwext -iwlan0 -c/etc/wpa_supplicant.conf


A questo punto abbiamo tutte le informazioni e tutti i file necessari per poter finalmente connetterci alla nostra rete, ecco quindi il comando, di cui abbiamo un esempio alla fine dell'output precedente, per i rispettivi driver:

gunter@guntoo ~ $ sudo wpa_supplicant -Dwext -iwlan0 -c/etc/wpa_supplicant.conf -B


gunter@guntoo ~ $ sudo wpa_supplicant -Dhostap -iwlan0 -c/etc/wpa_supplicant.conf -B


gunter@guntoo ~ $ sudo wpa_supplicant -Dprism54 -iwlan0 -c/etc/wpa_supplicant.conf -B


gunter@guntoo ~ $ sudo wpa_supplicant -Datmel -iwlan0 -c/etc/wpa_supplicant.conf -B


gunter@guntoo ~  $ sudo wpa_supplicant -Dndiswrapper -iwlan0 -c/etc/wpa_supplicant.conf -B


Ora non ci resta che farci assegnare tramite dhcp un indirizzo IP valido, dunque:

sudo dhcpcd wlan0


Lanciare il servizio in avvio e programmi
Praticamente la maggioranza di noi è abituata a windows che, una volta memorizzate alcune reti preferite, rende la connessione ad esse automatica. Per la nostra linux box abbiamo due possibilità modificare alcuni file che vengono letti in avvio oppure affidarsi a sofware esterni.
Nel primo caso, prendendo in esame la distribuzione ubuntu, sarà necessario modificare il file /etc/network/interfaces, appriamo quindi il terminale e digitiamo:
gunter@guntoo ~ $ sudo gedit /etc/network/interfaces


e inseriamo le seguenti righe:
auto wlan0
iface wlan0 inet dhcp
wireless-essid pc-facile
wireless-mode managed
wpa-driver wext
wpa-conf /etc/wpa_supplicant.conf
post-up wpa_supplicant -Dwext -iwlan0 -c/etc/wpa_supplicant.conf -B

Nell'ultima riga dovrete inserire dopo post-up il comando visto in precedenza con il driver corretto per la vostra scheda.

Tra i software esterni da utilizzare posso consigliare wlassistant, wifiradar, mentre networkmanager, anche se è già incluso in molte distribuzioni, non si comporta sempre nella maniera giusta e ha ancora qualche problema con alcune schede.


Utilità: gunter [158.908 visite dal 07 Gennaio 08 @ 00:01 am]