lunes, 17 de febrero de 2014

Wifi hasta el infinito y más allá...

Ahora mismo, tengo activos en mi casa dos smartphones, cuatro tablets, tres portátiles, tres sobremesa, y cuatro consolas de juegos que acceden a mi red inalámbrica. No todos a la vez, pero puedo aseguraros que he llegado a tener hasta siete dispositivos conectados al mismo tiempo, tirando de la red. Y claro, se lía el carajal padre. Porque el pobre no da abasto a servir de señal aceptable todos los rincones de la casa. Al principio era fácil, sólo yo utilizaba el portátil y con que tuviera señal en el salón y mi habitación, me bastaba. Ahora, me exigen que llegue la señal hasta al baño. Y por otro lado, yo mismo me impongo que llegue señal a mi trastero, situado justo bajo mi casa. Y si lo consigo por un lado, me chillan por el otro. Así que, harto de que me chillen, decidí arreglar la situación. La solución era sencilla, o bien montar un nuevo emisor más potente, o bien instalar un repetidor de señal.

En esas estaba, decidiendo por cuál de las opciones me decidía, cuando la que no quiere ser nombrada me dijo que no entraba otro trasto más en casa. Que me las apañara con lo que tenía... Y yo, en un ataque de testosterona, le dije: ...si cariño, lo que tú digas...

Así que, una vez más, me sumerjí entre las cajas de restos informáticos del trastero y encontré dos routers wifi antiguos Speedtouch. Los encendí y descubro que tienen implementada la función WDS. Esto son las siglas de Wireless Distribution System, y consiste en que puedes conectar entre sí varios puntos de acceso inalámbricos, sin necesidad de un cable. El problema que tiene es que en estos aparatos no funciona con encriptación WPA. Tiene que ser WEP. ¡Vaya por Dios! Y yo acabo de escribir un post en el que os cuento que no utilicéis WEP… ¿Con qué cara me pongo yo ahora delante de vosotros? Además, con WDS disminuimos la velocidad en cada salto de access point que montemos… Gran dilema… Bueno, si los conecto con un cable, no pierdo velocidad, pero tengo que montar dos redes distintas… Vaya, pues no sé... bueno, ya veré cómo lo monto, ahora no lo tengo que decidir. Lo que sí tengo que asegurar es la seguridad de la misma. Y aquí es donde entra Radius. Este tema lo voy a dividir en dos post. El primero tratará totalmente de teoría, y en el segundo implementaré todo el rollo que os voy a soltar en este. Quiero que entendáis bien todo lo que vamos a hacer, así que intentaré explicarlo de la manera más sencilla posible.

Empezando por el principio, todos sabemos lo que es una red wifi... o no. Realmente Wi-Fi es una marca registrada. Hace unos años, en concreto en 1999, una serie de empresas se unieron para crear un estandar de conexión inalámbrica. Unos meses más tarde, se certifica la norma IEEE 802.11 bajo una marca, Wi-Fi Alliance, que después se ha usado para nombrar cualquier tipo de dispositivo inalámbrico.


Comparando la norma 802.3 (Ethernet) y la 802.11 (Wi-Fi), encontramos que son exactamente iguales. De hecho, la norma Wi-Fi se creó para sustituir las capas Física y Enlace de datos de la norma Ethernet, por lo que el funcionamiento de ambas es idéntico, a excepción del módo de transmisión de las tramas o paquetes de datos. Por eso es perfectamente compatible el uso en la misma red de dispositivos inalámbricos y de cable.

[Frannoe dixit]
 ¿Capas? ¿Eso qué es?

[Jose respondere]
Pufff.... Eso sí que es una buena pregunta. A ver cómo lo explico para que lo entendáis.

En los años 60 y 70 se produjo un boom en las tecnologías de las comunicaciones. Se crearon muchísimas tecnologías de redes, pero cada una era de su padre y de su madre. Es decir, cada una tenía sus propias normas, protocolos, hardware, etc. Ya en los 80, el cacao era tan grande, que la ISO se sentó a trabajar para crear un modelo de red que guiara a los fabricantes para crear redes compatibles entre sí. Y, después de mucho trabajar, se sacaron de la manga el modelo OSI (Open System Interconnection). El modelo OSI establece una serie de capas, que definen cómo se va relacionando el paquete o trama de una capa a otra. Así, define siete capas, a saber, Física, Enlace, Red, Transporte, Sesión, Presentación y Aplicación. Y en este modelo se han basado todas las arquitecturas de red desde entonces.

Volviendo a las redes inalámbricas, las que todos conocéis son la 802.11b, 802.11g y 802.11n. Si, os aseguro que las conocéis... Cada vez que entráis en vuestro router o access point a la sección de red inalámbrica, véis un desplegable en el que casi todos tenéis seleccionado 802.11 b/g. Los que tengan un aparato más moderno, incluso puede ser que tengan seleccionado 802.11 b/g/n. Pero realmente hay más, aunque no vamos a entrar a conocerlas todas.

La 802.11b fue el primer estándar comercial de Wi-Fi Alliance. Es una revisión del estándar original 802.11a, desarrollado en 1.999, y tiene una velocidad máxima de 11 Mbit/s. Bajo este estándar, el cifrado utilizado es el archifamoso WEP, Wired Equivalent Privacy, o Privacidad Equivalente a Cableado (Ja!). Proporciona un cifrado con claves de 128 bits, y todos sabéis ya que descubrir un clave WEP es más fácil que quitarle un caramelo a un niño.

Avanzando un poco en el tiempo, en el 2003 se liberó un nuevo estándar, usado hasta la saciedad hasta el día de hoy, en el que la inmensa mayoría de los dispositivos inalámbricos están funcionando. Este es el denominado 802.11g. Establece una velocidad teórica máxima de 54 Mbit/s. En este mismo año 2003, la Wi-Fi Alliance libera el cifrado WPA (Wi-Fi Protected Access) y poco tiempo después, WPA2, al publicar la norma 802.11i. Podríamos decir que WPA es una versión de migración desde WEP, mientras que al publicarse la 802.11i, se establece como sistema definitivo WPA2.

Mas recientemente, en 2004, se reunieron de nuevo para desarroyar una nueva norma, 802.11n. Este estándar está implementado desde 2008, aunque no fué definitivamente publicado hasta el 2009 (los fabricantes, que ya saben por donde van los tiros...) Este último estándar establece una velocidad teórica de 300 Mbit/s.

Bien, pues llegamos a un punto en el que estamos ya en una red 802.11g o 802.11n, con cifrado WPA o WPA2. Pero, ¿es seguro este cifrado? Pues no del todo, ya que heredó muchos de los defectos del cifrado WEP. Vamos a verlo un poquito.

Estamos hartos de ver siglas como WPA-PSK con TKIP, WPA-PSK con AES, WPA2-PSK con TKIP... ¿Qué demonios significan estas siglas? Como os he dicho anteriormente, WPA fue creado por la Wi-Fi Alliance para implementar un sistema seguro de encriptación. Fue desarrollado para utilizarse con un servidor de autenticación (aka RADIUS). Claro, eso obligaría a que en cada red doméstica o similar, estuviese presente dicho servidor. Para evitarlo, WPA permite la utilización de una clave precompartida, que es el modo que utilizamos casi en el 100 x 100 de redes domésticas o de pequeño formato. Esto es lo que conocemos como WPA-PSK o WPA2-PSK (Pre-Shared Key).

Una PSK es una clave secreta compartida con anterioridad entre las dos partes de una comunicación, usando un canal seguro. A la hora de autenticarnos ante una red WPA/WPA2-PSK, todos sabemos que debemos introducir la clave de dicha red, y el S.O. se encarga de comunicarse con el punto de acceso y trasmitir dicha clave para establecer la autenticación. Esto en sí mismo es un problema, ya que cualquier atacante capturando tráfico, puede escuchar dicha clave, y mediante ataques de diccionario y/o fuerza bruta, puede descubrir la clave. Lógicamente, cuanto mayor sea la longitud de la clave, más difícil será romperla, entendiendo por difícil que más tiempo se tardará en ser descubierta.

Existen dos tipos de algoritmos de cifrado con PSK. Se denominan TKIP y AES. 

TKIP o Temporal Key Integrity Protocol, funciona de la siguiente manera: el proceso comienza con una clave temporal que tienen tanto el cliente como el punto de acceso. Esta clave temporal es combinada con la MAC Address del cliente, y le agrega un bloque de bits para generar la clave de cifrado. Cada 10000 paquetes (por defecto), se cambia la clave temporal y se vuelve a generar una clave de cifrado. Para cifrar los paquetes, se utiliza el protocolo de cifrado RC4, método de cifrado utilizado también por WEP. RC4 es un método de cifrado simétrico, que tuvo la "desgracia" de ser publicado su algoritmo en una lista de correo por algún "graciosillo". Así que ya no es considerado seguro.
AES (Advanced Encription Standard) es el otro método de cifrado utilizado en WPA/WPA2-PSK. Es el estándar de cifrado actual con clave simétrica. Puede utilizar claves de 128, 192 ó 256 bits de longitud, que se aplican a bloques de datos de 16 bits, ya que este cifrado funciona por bloques. Es un cifrado muy seguro, pero claro, aplicado sobre una PSK, se vuelve vulnerable. Insisto para que quede claro: el protocolo es seguro, pero si nos descubren la clave, estamos vendidos.

Así que ya sabemos que toda red que utilice PSK es vulnerable. Con WPA/WPA2, no tanto como con WEP, pero vulnerable a fin de cuentas.

Para evitar esto, vamos a utilizar el modo WPA/WPA2-ENTERPRISE (que en realidad es el modo "natural" de WPA/WPA2). Este modo, como bien habréis adivinado ya, consta de un servidor que recibe las peticiones de autenticación enviadas por el punto de acceso. A este servidor se le conoce como RADIUS. En principio son las siglas de Remote Authentication Dial-In User Service, y en concreto, se trata de un protocolo de autenticación de usuarios. Muchos de vosotros, sin saberlo, usáis un servidor Radius a la hora de conectaros a Internet. Sí, vuestro proveedor, dependiendo del tipo de autenticación que tengáis habilitada, usará un servidor Radius para verificar vuestros datos y ver si podéis navegar por la red.

El servidor Radius utiliza para su proceso de autenticación la norma 802.1X, y en concreto utiliza un protocolo llamado EAP (Extensible Authentication Protocol). En realidad, EAP no es un protocolo como tal, sino más bien un framework de autenticación. Como tal, provee diversos métodos para realizar dicha autenticación. Veamos los principales:

EAP-TLS. Establece un túnel cifrado para realizar la autenticación mediante TLS (Transpor Layer Security). Para crear dicho túnel, tanto el cliente como el servidor tendrán un certificado privado, así que es un método ciertamente muy seguro. Se envía un certificado del cliente al servidor para la autenticación.

PEAP. Aquí la autenticación se realiza mediante la introducción de un usuario y una contraseña. El problema es que tanto el usuario como la contraseña se transmiten en texto plano, con lo que se pueden captar dichas credenciales.

EAP-TTLS. Aquí se establece un túnel cifrado utilizando un certificado del servidor, y a través de él se transmiten el usuario y la contraseña. 

PEAP-TLS. Autenticación por certificados, pero el certificado del cliente se encripta antes de ser enviado al servidor para su autenticación.

¿Y qué método es mejor? Pues depende de las ganas y las necesidades de cada uno. Me explico. Conectarse mediante usuario y contraseña para algunos puede resultar un trastorno, pero en entornos empresariales es lo más común. Ahora bien, en mi caso, os he comentado que voy a dar acceso a doce dispositivos. ¿Puedo crear para ellos certificados y evitar tener que utilizar usuario y contraseña para conectarme? Pues si, pero tengo el inconveniente de que no podré dar acceso a ningún invitado en un momento puntual. Es algo que tenéis que valorar cada uno de vosotros.

[Frannoe dixit]
¿Y no se pueden implementar los dos sistemas a la vez?

[Jose respondere]
Pues ahí me has pillao con las bragas en los tobillos... Creo que no, pero lo veremos con seguridad en el próximo post...

Antes de despedirme, os voy a enseñar mi nuevo servidor casero:


¿Quién dijo que hace falta mucho sitio para montar un servidor? Este chiquitín mide 166 mm de ancho x 164 mm de profundo x 48 mm de alto... Y tiene 4 GB de RAM, Gráfica GeForce 9300 con salida HDMI, Intel Core 2 Duo y HD de 1 TB. ¿Suficiente...? Me sobra la mitad. 

Nos vemos en el próximo post.

No hay comentarios:

Publicar un comentario