01 marzo 2007

Seguridad WPA

El ejemplo que empiezo por comentar es para Ndiswrapper [también puede usarse para otros módulos que soporten wpa, con las modificaciones oportunas] y aun no está plenamente contrastado. Simplemente, advierto de que en el sitio de Ndiswrapper se habla de plena compatibilidad con wpa_supplicant a partir de versiones posteriores a la 1.21. Por mi parte, debo aclarar que a mí me ha funcionado para una tarjtea con chipset Atheros funcionando con Madwifi.

Guadalinex v3 y v4 [basadas, respectivamente en Ubuntu Breezy y Edgy] disponen de la utilidad wpa_supplicant instalada, pero en caso de utilizar otra distribución de Linux que no la tuviese, deberíamos instalarla bajándonos el paquete de los repositorios o, en el peor de los casos, obteniendo las fuentes [wpa_supplicant] y compilándolas por el método habitual. Sigue las instrucciones de los desarrolladores sobre cómo llevar a cabo la operación y, si te sientes perdido, consulta la explicación que doy en el artículo dedicado a la instalación de tarjetas compatibles, en su apartado de compilación de drivers. Quiero aclarar que existen algunas diferencias entre la configuración bajo Guadalinex v3 / Ubuntu Breezy con respecto a Guadalinex v4 / Ubuntu Edgy y que aclaro más adelante.

Lo primero es generar una clave hexadecimal con la "frase de paso" que tienes guardada en la configuración de la red wif del router. Éso se consigue abriendo un terminal y ejecutando el comando siguiente:

wpa_passphrase nombre_red frase_de_paso


Debes sustituir el nombre de tu red wifi en el lugar de nombre_red y la frase de paso del router donde pone frase_de_paso. Esto genera una cadena similar [en longitud, claro] a ésta:

psk=1d06e406f9f6765053d822c9a006e9da6f4b03c9d09c2bd6d1cd8d887816fb6e

Seguridad WPA en Guadalinex v4 y Ubuntu Edgy

Ahora vas a editar el archivo interfaces con el comando
sudo gedit /etc/network/interfaces. Supongo que te conectas vía dhcp, por lo que lo vas a dejar tal que así:

auto lo
iface lo inet loopback
auto wlan0
iface wlan0 inet dhcp
wireless-essid NOMBRE_DE_LA_RED
pre-up wpa_supplicant -Bw -Dwext -iwlan0 -c/etc/wpa_supplicant.conf
post-down killall -q wpa_supplicant


El valor -Dwext se aplicará en versiones de Ndiswrapper posteriores a la 1.12; en caso contrario usaremos -Dndiswrapper.

En mi caso uso una tarjeta con chipset Atheros AR5212 y el archivo lo tengo de esta guisa:

auto lo
iface lo inet loopback
iface ath0 inet dhcp
wireless-essid Mi_red
wpa-driver madwifi
wpa-conf /etc/wpa_supplicant.conf

auto ath0

Seguidamente ejecuta el comando sudo gedit /etc/wpa_supplicant.conf y se te muestra el archivo wpa_supplicant.conf [probablemente se encuentre vacío], sin texto alguno. Eso nos da igual, porque vamos a añadir las siguientes líneas:

ctrl_interface=/var/run/wpa_supplicant

ap_scan=1

network={
ssid=nombre_red_wifi
scan_ssid=1
proto=WPA
key_mgmt=WPA-PSK
#psk="Frase de paso"

psk=1d06e406f9f6765053d822c9a006e9da6f4b03c9d09c2bd6d1cd8d887816fb6e
priority=5
}

Observa que en la línea que empieza con psk se ha incluido
el valor de la clave hexadecimal obtenida anteriormente al ejecutar el comando wpa_passphrase .

En algunos sitios de internet se aconseja ejecutar el comando que se indica a continuación [en realidad le estamos diciendo que ejecute, por una sola vez, lo que tenemos cargado de forma permanente en el archivo interfaces]. En mi caso, con el driver de madwifi no lo llevé a cabo y me ha funcionado correctamente:

sudo wpa_supplicant -iwlan0 -c/etc/wpa_supplicant.conf -Dndiswrapper

Para versiones posteriores a la 1.12, el valor -Dndiswrapper serás sustituido por -Dwext. Éste y otros detalles pueden ser consultados en el sitio de Ndiswrapper dedicado al uso de WPA.

Reinicia los servicios de red con el comando sudo /etc/init.d/networking restart

Seguridad WPA en Guadalinex v3 y Ubuntu Breezy

El método es prácticamente idéntico. Sólo hay que añadir un par de detalles. Se debe editar como root el archivo /etc/default/wpasupplicant y desmarcar
la línea que proceda [sinónimo de eliminar el símbolo # de un script o programa para que se ejecute esa línea de código]. En mi caso, lo hice con la línea que hacía referencia a madwifi; si usas ndiswrapper, pues ya sabes. Para otros drivers compatibles, sustituir el valor por el que corresponda. Bien, pues ahí va:

# /etc/default/wpasupplicant
# WARNING! Make sure you have a configuration file!

ENABLED=1

# Useful flags:
# -D Wireless drive, typically optional.
# -i Interface
# -c Configuration file
# -d Debugging (-dd for more)
# -w Wait for interface to come up

# See the manual page wpa_supplicant(1) for more options and information.

OPTIONS="-w"

# EXAMPLES:

# OPTIONS="-i wlan0 -D ndiswrapper -c /etc/wpa_supplicant.conf"
OPTIONS="-i ath0 -D madwifi -c /etc/wpa_supplicant.conf"


Ahora debemos editar el archivo /etc/network/interfaces y modificar la línea que hace referencia al modo dhcp, ya que hay un bug para esta versión de Ubuntu/Guadalinex que impide a wpa_supplicant gestionar la conexión en modo dhcp, por lo que usaremos IP fija. Lo que yo hice fue dejarlo con ip estática y quedó así:

auto lo
iface lo inet loopback
iface ath0 inet static
address 192.168.1.12
netmask 255.255.255.0
gateway 192.168.1.1
wireless-essid MI_RED
wpa-driver madwifi
wpa-conf /etc/wpa_supplicant.conf
auto ath0


Con ésto ya no deberías tener problemas de conectividad. Espero que todo vaya correctamente. En caso contrario cuéntnos cómo te fue.


-----------------------------------------

Si Linux no existiera habría que inventarlo

8 comentarios:

Anónimo dijo...

Buenos Dias,

He seguido los pasos detenidamente y aun asi no he podido configurar mi wireless con wpa. Observacion. Mi tarjeta funciona perfectamente a con la utilidad network manager utilizando ndiswrapper.

Mi necesidad es iniciar mi tarjeta inalambrica antes de subir gnome y sin tener que colocar diariamente la KEY para accesar a mi AP.

Mi tarjeta es una Broadcom bcm43xx corriendo con ndiswrapper.

Mas abajo mis archivos de configuracion
/etc/default/wpasupplicant:
ENABLE=1

OPTIONS="-w"
OPTIONS= "-ieth1 -D ndiswrapper -c /etc/wpa_supplicant.conf"
~
~
/etc/network/interfaces
auto eth1
iface eth1 inet dhcp
wireless-essid onemax
wpa_driver ndiswrapper
wpa-conf /etc/wpa_supplicant.conf

/etc/init.d/wpa_supplicant.conf

ctrl_interface=/var/run/wpa_supplicant

ap_scan=1
network={
ssid="mired"
scan_ssid=1
proto=WPA
key_mgmt=WPA-PSK
#psk="7BCCC56C007AFF2E42306A840D"
psk="millave"
priority=5
}

entonces cuando la trato de subir me da los siguientes errores

Trying to associate with 00:12:17:0a:17:ec (SSID='mired' 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:17:0a:17:ec (SSID='mired' freq=2412 MHz)
Association request to the driver failed
Authentication with 00:00:00:00:00:00 timed out.

Necesito su ayuda por favor

Gracias

Cristhian

ambientix dijo...

Hey, Cristhian... encantado de leerte por aquí.

Supongo que la interfaz wifi, como se recoge en el informe es eth1. Se puede confirmar ejecutando en un terminal el comando iwconfig. ¿Qué versión de Linux estás usando? Por la sintaxis, diría que se trata de Ubuntu Breezy

Ha llamado mi atención que en el archivo /etc/default/wpasupplicant hay una línea:

ENABLE=1

Cuando realmente debería decir:

ENABLED=1

por lo que igual no inicia automáticamente la carga del demonio wpa_supplicant.

Suerte y hasta pronto

Unknown dijo...

Gracias

Muy valida tu observacion, ya pude finalmente completar tu manual y me funciona a la perfeccion. El unico inconveniente es que cada vez que inicio siempre se abre la pantalla del keyring manager solicitandome autorizacion para ello. Estoy utilizando ubuntu feisty 7.04 y mi real necesidad es tratar de iniciar la red antes de que suba el grafico para poder autenticar aplicaciones de red. Por ejemplo


Mi servidor de dominio esta corriendo LDAP y Samba por lo tanto cuando se reinicia la maquina y el usuario va a validar contra el servidor de dominio, como todavia no tiene la red wireless habilitada no lo encuentra y da error.


Por eso me llamo mucho la atencion este manual, el cual encuentro muy completo y comprensivo.

Agradeceria tu ayuda al respecto si existe una manera de hacer subir la wireless antes de loguearse en el grafico (asi como lo hace windows).

Gracias anticipadas

Cristhian

ambientix dijo...

En el artículo dedicado a la instalación de Ndiswrapper, comento cómo en algunos sistemas no carga el módulo al inicio, lo que impide tener una conexión disponible cuando entramos en el escritorio de Gnome. No sé si es ese tu problema, Cristhian, pero detallo, seguidamente, la solución:

"En tarjetas, para que cargue el módulo en cada reinicio, es indispensable añadirlo a la lista de /etc/modules, por lo que vas a editar ese archivo como root y al final del mismo debes añadir una nueva línea con el nombre ndiswrapper. En mi caso abrí como root el editor Gedit mediante el comando gedit /etc/modules."

Y recuerda que en Ubuntu todos los comandos que deban usarse como root, requieren anteponer el prefijo sudo.

Suerte y hasta pronto

Unknown dijo...

Gracias Ambientix por tu pronta respuesta.


Ndiswrapper carga bien al inicio. Pero aun asi necesito subirla antes de gnome.
Te comento que hice lo que me indicaste Es decir, me funciona de esa manera pero no me sube la wireless antes del entorno grafico.

Debe existir alguna manera de como subir la wireless antes del entorno GNOME.
Gracias por tu apoyo,,


Cristhian

ambientix dijo...

Hola, Cristhian. Disculpa mi demora en contestar, pero me fue imposible hacer nada hasta ahora; te dejo un enlace donde se plantea la forma de conseguir lo que pretendes, aunque me queda la duda del orden en que se cargan las X en tu sistema.

https://help.ubuntu.com/community/WifiDocs/WPAHowTo#head-41f94fa89fc74f6b9636f6d7ec9b1cecc1e5fe7d

Recuerda que en este caso el script es llamado S42wpa_launch ya que se carga justo después del S40network [debes comprobar en qué orden se carga ahora respecto a la pantalla de logueo en tu máquina].

Para asegurarnos que carga tu interfaz wifi y que conecta con la red, vas a añadir una línea al final del script S42wpa_launch:

sleep 30

Con ello conseguimos darle tiempo suficiente para cargue la interfaz wifi, ya que muy probablemente sea ese el problema; es decir que no tiene tiempo material de cargar y cuando vas a loguearte como usuario no tienes la conexión disponible.

Otra cosita; la línea 2 del script, probablemenmte, no se corresponderá exactamente con la que tienes en el archivo interfaces, así que prueba una y otra en el script a ver con cuál te va mejor.

Enga, suerte y espero que nos cuentes próximamente que has conseguido solucionar el problema.

ambientix dijo...

Este sistema de comentarios es francamente deficiente :-(

El enlace donde se detalla cómo hacer el script ha sido cortado por la herramienta del editor de comentarios. Así que puedes entrar desde el siguiente link:

https://help.ubuntu.com/community/WifiDocs/WPAHowTo

Ahora clicas en el enlace del apartado 8.2, denominado "Using /etc/rcS.d for boot" y ahí puedes ver el procedimiento a seguir.

Suerte,,, y hasta pronto.

Anónimo dijo...

Probe lo que dices y no me puedo conectar, yo tengo una presario f700 con ndiswrapper como driver, y si lo pongo en modo sin seguridad me conecto pero con wpa y wep nada.
que necesitas que te envie, mi correo es antonbas@gmail.com