WIFI, ZD1211* e WPA - Spaghettilinux.org

Transcript

WIFI, ZD1211* e WPA - Spaghettilinux.org
WIFI, ZD1211* e WPA
Versione 0.1
Copyright (c) 2006 Lucio Zara.
É garantito il permesso di copiare, distribuire e/o modificare questo
documento seguendo i termini della Licenza per Documentazione Libera GNU,
Versione 1.1 o ogni versione successiva pubblicata dalla Free Software
Foundation; senza Sezioni Non Modificabili, con il Testo di
Copertina “WIFI, ZD1211* e WPA”, e Senza Testo di Retro Copertina.
INDICE
1
2
3
4
5
6
7
PREAMBOLO
REQUISITI FONDAMENTALI
INSTALLAZIONE DRIVER
INSTALLAZIONE E VERIFICA WPA_SUPPLICANT
SCRIPT DI CONNESSIONE
CONCLUSIONI E RINGRAZIAMENTI
CHANGELOG
1 PREAMBOLO
In questa piccola guida cercherò di spiegare come ho fatto funzionare
un adattatore wifi con cip ZD1112* e la chiave di criptazione WPA.
Vi sarei grato se mi faceste presente eventuali errori o inesattezze
scrivendomi una mail a [email protected] .
2 REQUISITI FONDAMENTALI
Come prima cosa occorre che il kernel sia compilato con i supporti
per il wifi, lo si può verificare con il comando
pennega@Lucio ~ $ grep NET_RADIO /usr/src/ver-kernel/.config
CONFIG_NET_RADIO=y
Questo va bene se avete compilato voi stessi il kernel, nel caso di
kernel precompilati troverete sicuramente una copia del file di
configurazione in /boot .
ver-kernel è la versione del vostro kernel, se non sapete che kernel
usate date il comando
pennega@Lucio ~ $ uname -r
2.6.15-ck4
Se il risultato del primo comando fosse diverso da quello riportato
dovete ricompilare il kernel ed inserire il supporto per il wifi che
trovate sotto la sezione
SUPPORTO PER DISPOSITIVI DI RETE->LAN WIRELESS->DRIVER LAN WIRELESS .
Se non sapete come compilare il kernel potete consultare la guida che
ho scritto: Cenni sula compilazione del kernel .
Altro requisito è che siano installati i tools per la gestione della
rete, come i comandi ifconfig e route, e gli wireless-tools
normalmente presenti in ogni distribuzione GNU/LINUX.
3 INSTALLAZIONE DRIVER
Dopo aver verificato che il kernel sia compilato con il supporto wifi
bisogna installare i driver per far funzionare il dispositivo, che
possono essere reperiti dal sito ZD1211.
Verificate il driver che usa la vostra scheda: può essere il zd1211 o
zd1211b.
Una volta scaricati i driver basta estrarli in una cartella per
esempio in /usr/src/wifi
pennega@Lucio wifi $ tar xzvf zd1211-driver-r74.tgz
a questo punto si entra nella directory creata
pennega@Lucio wifi $ cd zd1211-driver-r74
Se il vostro dispositivo utilizza il driver zd1211 potete subito
passare alla compilazione dei driver mentre se usa il driver zd1211b
è necessario editare il Makefile modificando la riga
ZD1211REV_B=0
in
ZD1211REV_B=1
La compilazione e l'installazione viene eseguita tramite i comandi
make e make install quest' ultimo eseguito da root
pennega@Lucio zd1211-driver-r74 $ make
pennega@Lucio zd1211-driver-r74 $ su
root@Lucio zd1211-driver-r74 # make install
#digitare la password di root
Se tutto è andato a buon fine troverete il modulo all' interno della
dir /lib/modules/ver-kernel/net/
root@Lucio zd1211-driver-r74 # ls /lib/modules/2.6.15-ck4/net/
zd1211b.ko
Adesso possiamo collegare il nostro dispositivo wifi. Il modulo
dovrebbe essere caricato automaticamente al momento dell' inserimento
nel bus usb:
root@Lucio zd1211-driver-r74 # lsmod |less
Module
Size Used by
zd1211b
272108 0
Se questo non dovesse accadere si
manuale tramite modprobe
può procedere al caricamento
root@Lucio zd1211-driver-r74 #modprobe zd1211b
A questo punto dovremmo avere la nostra periferica wifi funzionante.
Per verificare questo si può usare il comando iwconfig:
root@Lucio zd1211-driver-r74 # iwconfig
lo
no wireless extensions.
eth0
wlan0
no wireless extensions.
802.11b/g NIC ESSID:""
Access Point: 00:00:00:00:00:00
Encryption key:off
Power Management:off
Link Quality:88 Signal level:64 Noise level:0
Rx invalid nwid:0 invalid crypt:0 invalid misc:5
In alternativa si può leggere l'output di dmesg.
4 INSTALLAZIONE E VERIFICA WPA_SUPPLICANT
A
questo
punto
non
ci
resta
che
installare
il
pacchetto
wpa_supplicant reperibile dal sito Linux WPA/WPA2/IEEE 802.1X
Supplicant
Una volta scaricato il software si passa alla sua decompressione:
pennega@Lucio wifi $ tar xzvf wpa_supplicant-0.4.8.tar.gz
pennega@Lucio wifi $ cd wpa_supplicant-0.4.8
Prima di eseguire la compilazione vera e propria bisogna creare il
file .config (un semplice file di testo, notate il punto prima del
nome del file) dove saranno inserite le varie opzioni che
wpa_supplicant deve supportare. Il modo più veloce di crearlo è quello
di usare il comando make mkconfig ma questo crea un file con poche
opzioni e si rischia che non il wpa non funzioni a dovere. Il
consiglio quindi è quello di andare a creare il file di
configurazione con le seguenti opzioni :
CONFIG_IEEE8021X_EAPOL=y
CONFIG_EAP_MD5=y
CONFIG_MSCHAPV2=y
CONFIG_EAP_PEAP=y
CONFIG_EAP_TLS=y
CONFIG_DRIVER_WEXT=y
CONFIG_WIRELESS_EXTENSION=y
CONFIG_EAP_TTLS=y
CONFIG_EAP_GTC=y
CONFIG_EAP_OTP=y
CONFIG_EAP_SIM=y
CONFIG_EAP_AKA=y
CONFIG_EAP_PSK=y
CONFIG_EAP_PAX=y
CONFIG_EAP_MSCHAPV2=y
CONFIG_PKCS12=y
CONFIG_SMARTCARD=y
CONFIG_CTRL_IFACE=y
CONFIG_READLINE=y
CONFIG_BACKEND=file
Alcune di queste, come il supporto per le smartcard, possono essere
omesse.
Adesso possiamo passare alla compilazione
pennega@Lucio wpa_supplicant-0.4.8 $ make
Prima di installare il software nel sistema è bene provare che tutto
funzioni.
Bisogna a questo punto creare il file di configurazione del wpa ad
esempio in /etc/wpa_supplicant.conf. Le opzioni da inserire in questo
file sono
ctrl_interface=/var/run/wpa_supplicant
# By default, only root (group 0) may use wpa_cli
ctrl_interface_group=0
eapol_version=1
ap_scan=1
fast_reauth=1
network={
scan_ssid=1
ssid="Vostro_ap"
proto=WPA
key_mgmt=WPA-PSK
pairwise=CCMP TKIP
group=CCMP TKIP WEP104 WEP40
#psk="Vostra_password"
psk=feda34da2abc8d391a51a971d71af0d1528693c0364a9b49027ca098a00a1e52
}
Il valore da inserire in psk è dato dal comando wpa_passphrase:
pennega@Lucio wpa_supplicant-0.4.8 $ ./wpa_passphrase Vostro_ap
# reading passphrase from stdin
Vostra_password
network={
ssid="Vostro_ap"
#psk="Vostra_password"
psk=feda34da2abc8d391a51a971d71af0d1528693c0364a9b49027ca098a00a1e52
Quando compare la scritta “# reading passphrase from stdin” dovete
digitare la password che avete settato sull' access point e premere
invio.
Per sicurezza è bene che il file sia leggibile solo da root
root@Lucio wpa_supplicant-0.4.8 # chown root:root /etc/wpa_supplicant.conf
root@Lucio wpa_supplicant-0.4.8 # chmod 600 /etc/wpa_supplicant.conf
A questo punto
Supponiamo di
statici e che
configurata su
siamo pronti a provare il wpa.
aver settato l' access point per utilizzare solo ip
il suo ip sia 192.168.1.1. La nostra scheda wifi va
ip della stessa classe con ifconfig:
root@Lucio wpa_supplicant-0.4.8 # ifconfig wlan0 192.168.1.2
a questo punto proviamo il comando wpa_supplicant:
root@Lucio wpa_supplicant-0.4.8 # ./wpa_supplicant -iwlan0 -c/etc/wpa_supplicant.conf
-Dwext
Trying to associate with XX:XX:XX:XX:XX:XX (SSID='AP' freq=2437 MHz)
ioctl[SIOCSIWFREQ]: Invalid argument
Association request to the driver failed
Associated with XX:XX:XX:XX:XX:XX
WPA: Key negotiation completed with XX:XX:XX:XX:XX:XX [PTK=TKIPGTK=TKIP]
CTRL-EVENT-CONNECTED - Connection to XX:XX:XX:XX:XX:XX completed (auth)
WPA: Group rekeying completed with XX:XX:XX:XX:XX:XX [GTK=TKIP]
Questo comando tiene occupata la shell, per bloccarlo basta premere i
tasti CTRL e C contemporaneamente, così facendo tenete presente che
verrà portata in stato “down” l' interfaccia di rete (wlan0). Per far
si che il wpa_supplicant venga eseguito in background usate l'opzione
-D.
Al posto di XX:XX:XX:XX:XX:XX dovete vedere il mac address del vostro
AP.
L'output del comando ci indica che siamo stati associati con successo
all' access point, non ci resta che impostare il default route e
provare a navigare
root@Lucio wpa_supplicant-0.4.8 #route add default gw 192.168.1.1
Se la navigazione non dovesse funzionare date uno sguardo al file
/etc/resolv.conf e assicuratevi che siano settati i dns corretti.
A questo punto possiamo installare nel sistema
root@Lucio wpa_supplicant-0.4.8 # make install
I comandi vengono installati di default in /usr/local/sbin.
5 SCRIPT DI CONNESSIONE
Dover digitare tutti questi comandi può essere fastidioso ed infatti
per settare la nostra connessione andremo a scrivere un piccolo
script che chiameremo wifi e lo posizioneremo in /sbin/
#!/bin/sh
case $1 in
'start')
/sbin/modprobe zd1211b
sleep 3
/sbin/ifconfig wlan0 down
sleep 1
/sbin/ifconfig wlan0 192.168.1.2 netmask 255.255.255.0
sleep 1
/sbin/iwconfig wlan0 essid Vostro_AP
#opzionale
/usr/local/sbin/wpa_supplicant -Bw -iwlan0 -c/etc/wpa_supplicant.conf -Dwext
sleep 3
/sbin/route add default gw 192.168.1.1
;;
'stop')
/sbin/ifconfig wlan0 down
sleep 5
/sbin/modprobe -r zd1211b
killall wpa_supplicant
;;
*)
echo -e "\nDevi usare\t$0 {start|stop} \n"
;;
esac
Una volta
creato lo script diamogli i permessi di esecuzione e
sempre per una questione di sicurezza è bene che possa eseguirlo solo
il super user (root)
root@Lucio wpa_supplicant-0.4.8 # chown root:root /sbin/wifi
root@Lucio wpa_supplicant-0.4.8 # chmod 744 /sbin/wifi
L'utilizzo è molto semplice: per attivare la rete basta passare a
wifi il parametro start, mentre per disattivarla il parametro stop
root@Lucio wpa_supplicant-0.4.8 # wifi start
root@Lucio wpa_supplicant-0.4.8 # wifi stop
root@Lucio wpa_supplicant-0.4.8 # wifi
Devi usare
#attiva la rete
#disattiva la rete
#ci mostra l'utilizzo di wifi
/sbin/wifi {start|stop}
6 CONCLUSIONI E RINGRAZIAMENTI
Configurare una rete wifi almeno per quanto mi riguarda è stato un
po' complicato e questo è stato il motivo per il quale ho voluto
scrivere questa piccola guida.
In tutti i passi descritti sopra ho tenuto implicito che l' AP sia
configurato a dovere altrimenti potete fare tutte le configurazioni
che credete sulla vostra macchia ma la connessione non funzionerà.
La chiave WPA viene usata per rendere una rete wifi sicura ed
impedire che qualcuno usi la vostra connessione senza essere
autorizzato.
Un altro consiglio che posso dare è quello di impostare l'AP degli
indirizzi ip statici e restringere il campo degli ip alle sole
postazioni che vi occorrono. Per aumentare ulteriormente la sicurezza
si può ricorrere all' autenticazione dei MAC ADDRESS delle schede
wifi.
I passi sopra descritti sono indipendenti dalla distribuzione
GNU/LINUX utilizzata.
Ringrazio la comunità di SpaghettiLinux.org, il forum di linux pro e
Slacky.it.
7 CHANGELOG
05-05-06 Inizio dei lavori
06-05-06 Inserito script di connessione
Prima pubblicazione. Versione 0.1