lunes, 4 de septiembre de 2017

De cabras montesas, routers de apartamentos turísticos y Guifi.net

Vilafranca del Cid es un pequeño pueblo (2500+ habitantes) situado en la montañosa y muy fría (en inverno) comarca del Alto Maestrazgo, al noroeste de la provincia de Castellón, y colindante ya con la de Teruel. Esta zona goza de atractivos tales como una excelente gastronomía, la sorprendente arquitectura de la Pedra en Sec o los escarpados barrancos y senderos por los que perderse mientras cabras montesas comedoras de moras contemplan al caminante con gesto estoico. 


El caso es que, como podéis suponer, he tenido la suerte de pasar unos días de estupendo descanso estival con la familia en un acogedor apartamento turístico en esta localidad... pero no temáis, esta entrada no está dedicada a los encantos de los recónditos rincones del interior de Castellón, sino al choque cultural que puede sufrir un urbanita como yo cuando se encuentra con fuerzas oscuras que tratan de limitar su capacidad de conexión a Internet.

Pero antes de continuar con la historia conviene que hagamos un alto para hablar de Guifi.net. Es esta una red de telecomunicaciones abierta creada y gestionada por sus propios usuarios. Técnicamente se trata de una red descentralizada, en malla, que crece a medida que a ella se conectan nuevos nodos, generalmente de modo inalámbrico mediante enlaces establecidos por medio de antenas de diversos tipos. Podéis encontrar una cantidad ingente de información y orgásmicos detalles técnicos sobre su funcionamiento en la página web de este (admirable) proyecto.

Esta red cuenta con miles de nodos intensamente concentrados en Cataluña y el norte de la Comunidad Valenciana, donde se utiliza en muchos municipios del interior para proporcionar acceso rural a Internet a sus habitantes allí donde las operadoras comerciales no llegan o lo hacen con un acceso caro y/o de mala calidad.

Mapa de nodos de guifi.net (Fuente: Proyecto Guifi.net).
Y  claro, Vilafranca tenía que ser uno de esos municipios (cierro paréntesis y prosigo con la narración)...

Cuando llegamos al pueblo ya nos esperaba el propietario del apartamento, que tras entregarnos las llaves de la vivienda y facilitarnos amablemente las oportunas indicaciones se despidió con un poco tranquilizador "la vivienda dispone de conexión a Internet a través de guifinet, la conocéis ¿verdad?". Por supuesto, (léase esto con cierta retranca) ¡quién no ha oído hablar de ella!

Una informativa tarjetita plastificada en el mueble del salón, en la que se podían leer las instrucciones de conexión a Internet a través de Guifi.net por medio de un servidor proxy con usuario / clave confirmó unos instantes después lo que ya apuntaba a auténtica tragedia.

En el reverso de la tarjeta se indican la IP y puerto del servidor proxy, así como el usuario y clave.
Para redondear la situación, la cobertura móvil dentro del apartamento era de las que te obliga a sacar medio cuerpo por la ventana y estirar el brazo peligrosamente mientras sostienes el terminal en la mano en inestable equilibrio para conseguir una barra de señal de pixel y medio.

Pero ¿tan terrible es esto de tener que utilizar un proxy? Veamos...

Los servidores proxy actúan como intermediarios entre los usuarios y los servicios y equipos remotos a los que se conectan en Internet. Esta modalidad de conexión a través de proxy se suele emplear por razones vinculadas a la seguridad y a la eficiencia. Los servidores proxy con frecuencia disponen de una caché en la que se van almacenando copias temporales de las páginas solicitadas por los usuarios, de modo que a menudo estas pueden ser servidas localmente cuando se producen accesos reiterados en un corto espacio de tiempo. Tremendamente populares hace unos años en entornos corporativos, su uso ha menguado en cierta medida como consecuencia de las características cada vez más dinámicas de los servicios web actuales.

Cuando se utiliza un servidor proxy hay que configurar el navegador (y por extensión cualquier otra aplicación que requiera de conexión a Internet) indicando explícitamente la dirección IP (típicamente) o el nombre del servidor que actúa como proxy, además del puerto TCP a través del cual se presta este servicio.  Si además se trata de un servidor autenticado, como es nuestro caso, necesitaremos adicionalmente un usuario y clave.

Todo esto no sería más que una leve inconveniencia de no ser por qué resulta difícil en la actualidad encontrar aplicaciones distintas a navegadores o clientes de FTP que permitan la introducción de estos ajustes. Sí, lo habéis adivinado: nada de Netflix, Amazon Prime Video, Telegram, Whatsapp, Google Drive o Dropbox, Spotify y un interminable etcétera. En un terminal Android ni siquiera funciona la tienda de aplicaciones. De torrents (ni de cualquier cosa que requiera abrir puertos en el router) ni hablamos, claro. Por si fuera poco, los servidores proxy suelen aplicar un fuerte filtrado, de forma que es usual que tan solo se permitan las conexiones salientes hacia los puertos 80 y 443 (http y http seguro), así que nada de rarezas.

Francamente, no tenía la menor intención de hurgar en los recovecos técnicos de la conexión a Internet de mi residencia temporal, pero la perspectiva de pasarme varios días secuestrado detrás de un proxy vilanfranquino hizo que saliera de mi indolencia veraniega para curiosear un poquito desde el móvil.

Lo que me encontré fue... digamos que esperable.

De entrada nos topamos en el apartamento con una red wifi con seguridad ¡WEP! Cielo santo.


Que a estas alturas alguien configure la wifi de un dispositivo utilizando WEP, un protocolo totalmente inseguro, en lugar de WPA2, es algo que simplemente me resulta incomprensible y solo puedo atribuir a un descuido. Pero sigamos porque la cosa promete.

Tras conectarnos a la red inalámbrica del apartamento, el icono correspondiente a la conexión wifi en la barra superior muestra un aspa [x], lo que indica que no se ha detectado una conexión a Internet operativa en esta red. Esto es así porque para salir a Internet precisamos del proxy de Guifi.net del que hablábamos más arriba, por tanto la conexión habitual (directa) no funciona. Por no funcionar no lo hace ni siquiera la resolución de nombres a través de DNS. Estupendo.


Bien, veamos ahora qué dirección IP ha obtenido nuestro terminal.


Lo esperable, la típica IP de clase C privada. Vamos a ver qué pasa si nos vamos a un navegador y tratamos de conectarnos a 192.168.2.1.


Estupendo, estamos en la antesala del panel de administración del router de la casa. Probemos el clásico admin / admin...


...y hasta la cocina. Como decía alguien, no hay término en élfico, lengua Ent o de los Hombres, para describir este horror... Pues eso mismo digo yo ahora, aunque no me llame Barbol, al ver este desolador panorama.

Ahora tenemos acceso total al router que, dicho sea de paso, proporciona acceso a Internet a varias viviendas situadas en el mismo establecimiento. Podríamos modificar la configuración del servidor DHCP, establecer otras puertas de enlace o servidores de nombres y, por supuesto, inutilizar el servicio para cualquier usuario... excepto para nosotros mismos, claro. Del mismo modo, conociendo marca, modelo e incluso la revisión del firmware del router se podría pensar en otras fechorías más sofisticadas que simplemente no vienen al caso ahora.

Me temo que lo de utilizar WEP no era un descuido sino simplemente negligencia o ignorancia por lo que hace a las mínimas medidas de seguridad exigibles en un punto de conexión a Internet privado.

Llegados a este punto podríamos (a) conformarnos con lo que hay y configurar dócilmente el proxy de Guifi.net en todos nuestros dispositivos, asumiendo las drásticas limitaciones que ello supone, o (b) buscar alternativas.

Si optamos por lo primero, deberemos modificar los ajustes de la red wifi en nuestro terminal Android. Como véis queda muy clarito que solo tenemos garantías de que lo utilicen los navegadores instalados (ese no pueden usarlo en la captura de pantalla yo diría que es más bien un pueden no usarlo, como consecuencia de una mala traducción del inglés).

Configuración del servidor proxy en el administrador de redes wifi de Android
También podemos proceder de modo análogo en nuestro navegador de escritorio favorito, por ejemplo Firefox.

Configuración del servidor proxy en Firefox.
Al tratar de acceder a cualquier página web tras establecer estos ajustes comprobaremos que aparecerá una ventana de autenticación en la que el servidor proxy de Guifi.net nos solicitará la introducción del usuario y clave autorizados que, recordemos, venían anotados ambos dos en la tarjeta plastificada. Esta solicitud de credenciales aparecerá además probablemente de modo reiterado durante una sesión de navegación, consiguiendo así que nuestro odio hacia ella crezca con cada nueva petición.

¿Y cuál es el plan (b)? ¿Podemos saltarnos este proxy de algún modo? Bien, evitarlo no es una posibilidad, pero sí podemos persuadir al resto de apps de nuestro dispositivo Android para que se conecten a través de él, aunque a priori no estén diseñadas para hacerlo. Para ello necesitaremos una aplicación que reconduzca todas las conexión iniciadas por las distintas apps de nuestro terminal hacia el proxy, rehabilitando de paso la resolución de nombres DNS.

Existen varias aplicaciones, esencialmente servidores proxy locales, que dicen ser capaces de hacer esto. Inicialmente lo intenté con Drony, pero no conseguí que funcionara correctamente. Afortunadamente, investigando un poco más, di con ProxyDroid.


ProxyDroid es gratuita, aunque muestra anuncios poco intrusivos, y requiere root. Sin problemas, mi vetusto Galaxy Note 3 corre Lineage OS 14.1 y está convenientemente rooteado. Dado que la tienda de aplicaciones (Google Play) no funcionaba a través del proxy de Guifi.net, simplemente  realicé  la descarga desde un repositorio alternativo, generalmente fiable, como es uptodown.

Un par de minutos es todo lo que lleva instalar, ejecutar y configurar ProxyDroid (tras husmear un poco en los menús de configuración, claro) para circunnavegar las restricciones asociadas a esta peculiar modalidad de conexión a través de proxy. Aunque desconozco las interioridades de ProxyDroid, intuyo que su magia tiene que ver con la activación de un servidor NAT local para interceptar las conexiones salientes de todas las aplicaciones, aunque probablemente haya alguna que otra astucia adicional no evidente a primera vista.

En la siguiente captura de pantalla se recogen los ajustes relevantes (!) que hay que manipular en ProxyDroid:


A destacar dos cositas:
  • ProxyDroid puede activarse automáticamente en cuanto conectemos nuestro terminal a una red wifi determinada (Auto Connect / Bound Network). ¡Bien pensado!
  • Imprescindible activar el proxy del servicio de DNS para que la cosa funcione como debe (DNS Proxy).
Una vez ProxyDroid se pone en marcha, las restricciones detalladas anteriormente quedan eliminadas. Incluso el indicador de conectividad wifi vuelve a la normalidad.


Más allá de los anecdóticos juegos malabares realizados para lidiar con nuestro querido proxy de Guifi.net, esta experiencia no hace sino reafirmarme en mi convicción de que da miedo (¡pero mucho!) andar utilizando esas redes wifi de restaurantes, hoteles, gimnasios, aeropuertos, etc. cuya existencia damos por necesaria e irrenunciable y a las que nos solemos conectar sin pudor ni contención.

No deberíamos olvidarnos de que no tenemos garantía alguna acerca de la correcta configuración y administración de estas redes más o menos públicas, así que si realmente tenemos que recurrir a ellas que sea tomando en todo momento unas mínimas precauciones profilácticas: cortafuegos arriba, conexiones https, evitar el uso de banca electrónica o de compras online... y siempre, siempre mantener una elevada dosis de sana desconfianza.

No hay comentarios :