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