sábado, 28 de abril de 2012

Agregar soporte para PAP en una red wi-fi 802.1x/EAP o WPA-Enterprise con wicd en Linux (Ej: red eduroam universitaria)

El tema de gestionar una red wi-fi en Linux siempre ha traído muchos quebraderos de cabeza, pero por suerte cada vez hay más utilidades y programas para hacerlo de forma gráfica.

wicd, programa para gestionar el wi-fi en Linux
Uno de los mejores, para mi gusto, es el programa wicd, fácil de instalar en cualquier distribución Linux buscando el paquete del mismo nombre.

Hace un tiempo publiqué una entrada en la que proporcionaba un script para conectarse a la red wi-fi eduroam para centros universitarios, que hace uso de un tipo de encriptación llamada usualmente WPA-Enterprise (o 802.1x/EAP), con el método TTLS con autenticación PAP.

De todas formas esa manera me he dado cuenta de que era poco útil, el script no funcionaba bien siempre y además obligaba a hacer todo por consola, lo cual echaba atrás a muchos usuarios poco experimentados, supongo. Por eso hoy voy a poner un método general para poder conectarse NO SÓLO A EDUROAM sino a cualquier red wi-fi que utilice este método de encriptación TTLS con PAP (y realmente cualquier otro método ya incluido en el programa wicd, simplemente este no se incluye por defecto).

Además este método vale para cualquier distribución Linux del universo conocido siempre que tengas interfaz gráfica y los drivers de la tarjeta wi-fi funcionando, lo cual no es parte de este tutorial.

El gestor de red de Gnome, el Network Manager, ya incluye soporte para este método, pero si no utilizas Gnome o bien quieres sustituirlo por este otro gestor (lo cual te recomiendo, para mí es bastante mejor) te será útil el tutorial.

  • Lo primero será, claramente, instalar el programa wicd de la forma usual en tu distribución (apt-get install wicd, emerge -av wicd, pacman -S wicd, etc). En principio al instalar el paquete se configura para iniciarse con el sistema (no el modo gráfico, pero sí el demonio para gestionar las conexiones).
  • Si lo abrís veréis que os gestiona tanto la conexión por cable como las conexiones wi-fi, prefiriendo por defecto la de cable si este está conectado (siempre es más fiable). Una vez que añadáis los datos para una red wi-fi en concreto recordará las opciones y se conectará automáticamente la siguiente vez que la detecte.

Para añadir el soporte para autenticación PAP a las opciones ya disponibles:
  • Necesitamos crear un archivo concreto y poner unos datos en él, para ello:
$ sudo nano /etc/wicd/encryption/templates/ttls-80211
  • En el archivo ponemos lo siguiente:
name = TTLS para WPA
author = Alexander Clouter
version = 1
require anon_identity *Identidad_anónima identity *Identidad password *Contraseña
optional ca_cert *Ruta_al_certificado_CA cert_subject *Sujeto_del_certificado
-----
ctrl_interface=/var/run/wpa_supplicant
network={
ssid="$_ESSID"
scan_ssid=$_SCAN
key_mgmt=WPA-EAP
eap=TTLS
ca_cert="$_CA_CERT"
subject_match="$_CERT_SUBJECT"
phase2="auth=PAP"
anonymous_identity="$_ANON_IDENTITY"
identity="$_IDENTITY"
password="$_PASSWORD"
}
  • Guardamos el archivo y añadimos una pequeña línea a otro, así:
$ sudo echo ttls-80211 >> /etc/wicd/encryption/templates/active

Pues ya está. Ahora si abrimos la interfaz gráfica del programa wicd (el comando es wicd-client, o si no aparecerá en los menús de aplicaciones de tu entorno de escritorio) e intentamos conectarnos a una red con el tipo de encriptación TTLS no tenemos más que seleccionar "TTLS para WPA" y añadir los datos ( identidad anónima, identidad, contraseña y si es necesario un certificado CA) y ya debería funcionar sin mayor problema.

Recuerdo los datos para eduroam, aunque tu universidad te los debería dar. Cambia uva.es con el dominio de tu Uni:
  • Identidad anónima: anonymous@uva.es
  • Identidad: e11111111a@uva.es (aquí pon tu DNI con esa e delante)
  • Contraseña: La tuya.
  • Certificado CA: Sólo si es necesario. Por ejemplo, en la UVa (Universidad de Valladolid) no hace falta.
Bueno, espero como siempre que le sea útil a alguien, un saludo.

Si te da error o no te deja conectar de ninguna manera: 
Prueba a borrar la línea que dice subject_match="$_CERT_SUBJECT" en el archivo /etc/wicd/encryption/templates/ttls-80211 .

También puedes probar en las preferencias de wicd a cambiar el cliente DHCP entre los que tengas instalados (sección Programas Externos) y a cambiar las Opciones Avanzadas (controlador de WPA Supplicant e Infraestructura). Normalmente el controlador wext y la infraestructura ioctl van bien, pero puede que otra configuración te funcione mejor (o directamente te funcione).