Páginas

sexta-feira, 18 de abril de 2008

Configurando cliente na rede Wireless com criptografia WPA - Debian

Eu a um tempinho aqui na minha faculdade, estava tranquilamente usando o meu notebook com Debian, conectando a wireless sem criptografia e que distribuia dhcp pelo servidor, até que a galera daqui resolveu mudar as configurações e o roteador wireless passou a ter criptografia. Eles começaram a usar WPA, pra quem não conhece é um tipo de criptografia wireless muito conhecida (não inquebrável como todas as coisas, porém muito boa).

Fazendo a coisa toda funcionar...

Passo 1:

Seu dispositivo wireless jah tem que estar funcionando pois este tutorial não visa ensinar a configurar dispositivos mas sim botá-los pra funcionar com criptografia WPA.

Passo 2: (comando a executar como root = #)

Existe um comando muito bom no Linux que garanto que a maioria conhece, mas pra quem não conhece é bico de se testar, se você está em dúvida se existe um access point (vou escrever access point como AP) perto de você para listar os APs disponíveis use o comando:

#iwconfig wlan0 scan

Onde wlan0 será sua interface wireless, podendo modificar tanto de nome como de número (caso exista mais de um dispositivo wireless), para saber que dispositívos wireless você tem no momento use o comando:

#ifconfig

Passo 3:

Temos que gerar a chave WPA para nos conectarmos ao AP....
Para isso instalamos o pacote wpasupplicant:

#apt-get install wpasupplicant

ou

#aptitude install wpasupplicant

Feito isso execute o seguinte comando:

#wpa_passphrase “

Onde Ssid tem que ser substituido pelo ESSID mostrado no comando:

#iwlist wlan0 scan

Exemplo:

teste:/home/rafael# iwlist wlan0 scan
wlan0 Scan completed :
Cell 01 - Address: 00:12:A9:06:40:5B
ESSID:"3Com"
Protocol:IEEE 802.11g
Mode:Managed
Frequency:2.412 GHz (Channel 1)
Quality:15/100 Signal level:-86 dBm Noise level:-96 dBm
Encryption key:on
Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 6 Mb/s; 11 Mb/s
12 Mb/s; 24 Mb/s; 36 Mb/s
Extra:bcn_int=100
Extra:atim=0
IE: WPA Version 1
Group Cipher : CCMP
Pairwise Ciphers (1) : CCMP
Authentication Suites (1) : PSK

teste:/home/rafael# wpa_passphrase "3Com" 12345678
network={
ssid="3Com"
#psk="12345678"
psk=ada307b24bb72fdf49732cb954b1cef25365c106d2257fdb43df5cc1c49ae559
}

Agora observem uma coisa, este comando o wpa_passphrase gera uma saída que tem que ser redirecionada para um arquivo de configuração, que é o arquivo que vai ser lido por outro comando para que possamos conectar.

Portanto no meu caso pra ficar bunitinho eu chamei o arquivo de wpa_supplicant.conf e mandei ele lá no diretório /etc, ficando da seguinte forma:

teste:/home/rafael# wpa_passphrase "3Com" 12345678 > /etc/wpa_supplicant.conf

Mais um alerta! Se você não quiser que os outros vejam qual a senha da sua rede apague a linha comentada #psk que no meu exemplo é esta linha:

#psk="12345678"


Passo 4:
Como me conectar por dhcp nesse AP??
Simples, rápido e eficiente :-)...
O comando para fazer a coisa funcionar é o wpa_supplicant! Aí a linha que eu costumo usar aqui é essa:

#wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf -D wext

O comando wpa_supplicant faz a mágica baseada em um driver! Eu uso o ndiswrapper para usar meu dispositivo wireless, usei o driver wext do wpa_supplicant e ficou perfeito! Roubando uma dica do Carlos Morimoto:

ndiswrapper : Indique este driver ao ativar a placa de rede usando o Ndiswrapper, usando o driver do Windows. Note que muitas placas funcionam perfeitamente no Ndiswrapper em redes sem encriptação ou WEP, mas ficam instáveis ao usar o WPA, justamente por que ele utiliza mais camadas e por isso tem uma possibilidade maior de apresentar problemas diversos.
wext: Este é um driver genérico, que dá suporte a muitas das placas que possuem drivers nativos. Se a sua placa não possui um driver específico (cheque os abaixo), é bem provável que funcione com ele. Em geral, as placas IPW 2200 funcionam melhor com o wext do que com o driver "ipw". Experimente as duas opções caso esteja tendo problemas com sua placa.
madwifi: O driver para placas com chipset Atheros, como a que estou usando no exemplo.
broadcom: Este é o driver nativo para as placas com chipset Broadcom, desenvolvido via engenharia reversa. Estas placas podem ser configuradas também através do Ndiswrapper. Cheque a forma como está configurada no seu micro.
ipw: Placas com os chipsets Intel IPW2100 e IPW2200, usadas nos notebooks Intel Centrino.
prism54, hermes e atmel: Estes três drivers são os mais incomuns, usados (respectivamente) pelas placas com chipset Prism (em suas várias versões), Hermes e Hermes II (da Agere) e Atmel.

Porém no meu caso eu uso o ndiswrapper para “emular” meu driver wireless e no wpa_supplicant não posso usá-lo senão não consigo me conectar, a melhor solução é uma TESTE qual funciona com seu driver!

Quando aparecer uma resposta mais ou menos assim do comando:

Trying to associate with 00:12:a9:06:40:5b (SSID='3Com' freq=2412 MHz)
Associated with 00:12:a9:06:40:5b
WPA: Key negotiation completed with 00:12:a9:06:40:5b [PTK=CCMP GTK=CCMP]
CTRL-EVENT-CONNECTED - Connection to 00:12:a9:06:40:5b completed (auth) [id=0 id_str=]

Significa que está funfando!
Se aparecer algo do tipo:

Trying to associate with 00:12:a9:06:40:5b (SSID='3Com' freq=2412 MHz)
Association request to the driver failed
Authentication with 00:00:00:00:00:00 timed out.
Trying to associate with 00:12:a9:06:40:5b (SSID='3Com' freq=2412 MHz)
Association request to the driver failed

Significa que ainda não ta funcionando, mas não desista, insista, uma hora vai dar certo, com algum driver!

Agora depois temos que entrar na rede!
Para isso:

teste:/home/rafael# dhclient wlan0

Aí pegamos um ip por DHCP! :-)
Se dermos um ifconfig e tiver um ip válido na interface wlan0 (lembrando que o nome pode ser diferente) significa que você ta conectado!!!

Passo 5:
Agora que fizemos o pc se conectar vamos fazer o seguinte, já pensaram em como fazer pra jogar estas configurações no /etc/network/interfaces?
*pra quem não sabe jogando as configurações neste arquivo seu ip sobe automático sem precisar ficar digitando um monte de comandos

Já né? Então ai vai:

----------------------------------------------------------
# WIRELLES

auto wlan0
iface wlan0 inet dhcp
#iface wlan0 inet static
# address x.x.x.x
# netmask x.x.x.x
# gateway x.x.x.x
# broadcast x.x.x.x
# network x.x.x.x

pre-up wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf -wB -D wext
post-down killall wpa_supplicant
----------------------------------------------------------

Isso ae galera!! Agora entendendo, o -wB é pra que o comando rode em plano de fundo (background), up significa que quando subir ele executará este comando e down significa que quando eu pedir para baixar a interface ele executará este comando, pra quem não sabe o killall mata processos de acordo com o nome passado, portanto se eu der um killall wpa_supplicant eu mato o comando que fez a interface subir, ai eu caio :-), perfeito né?
Aí coloquei uma configuração comentada pra quem quer usar ip estático na rede lembrando que temos que trocar o monte de x por números de ip válidos!

É isso aí galera desfrutem! Espero que gostem da dica!

Mais sobre WPA:
http://pt.wikipedia.org/wiki/WPA
#man wpa_supplicant

Mais sobre AP:
http://pt.wikipedia.org/wiki/Access_point

Roteador:
http://pt.wikipedia.org/wiki/Roteador

Nenhum comentário: