Icono del sitio Arnau Dunjó Workspace

Mejorando la seguridad y la privacidad en las comunicaciones con Raspberry Pi

Privacitat i seguretat

Privacitat i seguretat

Las grandes corporaciones tecnológicas (Google, Facebook …) nos han acostumbrado a ofrecernos servicios de forma gratuita. Como ya sabéis, que no nos cueste dinero no significa que sea gratuita, sino que el precio que pagamos es nuestra privacidad.

Pero no siempre recibimos un producto o servicio a cambio de nuestra privacidad. Cuando firmamos el contrato con la mayoría de plataformas digitales, aunque no nos lo leemos, estamos aceptando que recojan información sobre lo que hacemos con sus productos / servicios digitales. En algunos casos incluso sin que nosotros firmemos nada, podemos ser “estudiados”. Estos datos son muy valiosos ya que permiten mejorar sus productos / servicios no sólo para su mejora “perse” sino también se pueden utilizar para condicionarnos subliminalmente.

Cuanto más tiempo estamos conectados (y esto no deja de aumentar día tras día) más es la información que tienen de nosotros y por lo tanto más datos estamos cediendo sin darnos cuenta. Precisamente por el aumento enorme de horas, usos y dispositivos “inteligentes” a que nos estamos acostumbrando se ha vuelto esencial que nuestras comunicaciones sean lo más seguras posibles.

Para mejorar estos dos aspectos sin perder las ventajas que nos da la red, podemos tomar dos tipos de acciones:

Conocimientos previos

Si ya conoceis que es una IP y cómo funciona un DNS, podeis pasar a la siguiente sección, de lo contrario, os recomiendo que leais esta sección para que no os sea tan pesado el resto del artículo.

Una dirección IP, pero los que no lo conocen, una dirección IP es una serie de números que identifican un dispositivo de forma inequívoca en la red. Actualmente, la dirección IP está compuesta por 4 cifras de entre 1 y 3 números separadas por punto. Estas cifras deben tener un valor entre 0 y 255 (por ejemplo 145.254.84.2). Para acceder a cualquier web debemos conocer la dirección IP del servidor donde reside. Como no sería nada práctico que tuviéramos que recordar esta serie de cifras para cada una de las webs que visitamos, muy sabiamente se decidió que se puede enmascarar con textos (llamados dominios). Por ejemplo cuando introducimos la dirección www.google.es en el navegador, realmente está estableciendo comunicación con el ordenador 87.245.200.153

Algún servidor de DNS debe dar la dirección IP del servidor web al que queremos acceder.

Nuestros dispositivos no saben la “traducción” de todos los ordenadores que hay en Internet, por lo tanto antes de acceder a una web nuestro ordenador debe consultar a un servidor DNS cuál es la dirección IP a la que debe dirigirse para acceder. En tu router y / o móvil vienen pre-configuradas las direcciones IP de estos servidores DNS ya que su proveedor de internet (Movistar, Vodafone …) ya se encarga de que no tengas que preocuparte de ello. De hecho cada proveedor, tiene sus servidores DNS y por tanto, por estas compañías es muy fácil recopilar la información sobre tu navegación.

Las técnicas

DNS privado

Debeis saber que muchos de los servidores DNS guardan las “traducciones” que solicitamos, por lo que pueden saber qué páginas hemos visitado, a qué hora, etc y aprovecharla o venderla a terceros. Además se pueden utilizar para no dejarte acceder a alguna web (normalmente no conoces la IP del servidor de la web a la que intenta acceder). El control de los DNS es uno de los sistemas utilizados por el gobierno chino para que los ciudadanos no accedan a webs que consideran peligrosas por sus intereses, pero no hay que ir tan lejos, también se usó en Cataluña durante el referendum del 1-O tratando de limitar el acceso de las mesas electorales al censo universal. Como veis no es un tema menor. La velocidad con la que accedes y te responden estos servidores DNS también afecta a la rapidez con la que accedes a las webs. Por todos estos asuntos, se pueden configurar los dispositivos para que consulten otros DNS diferentes a los pre-fijados por el proveedor.

Diferencia entre tener que pedir la IP a un DNS publico o al tuyo personal

Por suerte, actualmente la mayoría de webs funcionan bajo HTTPS, por tanto, una vez nuestro dispositivo conoce la dirección IP de la web donde estamos accediendo, los datos viajan entre los dos aparatos de forma segura.

Pero esto no es así con la comunicación entre tus dispositivo y gran parte de los servidores DNS ya que se realiza por texto plano (sin encriptar) y por lo tanto puede ser interceptada y incluso nos las pueden intervenir y enviarnos una dirección IP que no sea ​​la auténtica. Por ejemplo, al querer acceder a una web de comercio electrónico o banco, alguien podría interceptar la petición que haces contra tu DNS, por lo que responder a tu dispositivo una IP de una web con una apariencia prácticamente idéntica a la de la que intenta acceder. Confiado pones tus credenciales y aunque la falsa web no te muestre nada o te diga que las credenciales son incorrectas ya se ha guardado las que has introducido, que muy posiblemente son las correctas y por lo tanto se podrán hacer pasar por ti en la web autentica. Es más, probablemente hasta que te des cuenta de que la web es falsa, seguirás dando información intentando averiguar qué credenciales son las que te dejan acceder a la web (otras credenciales, su dirección de correo, preguntas de recuperación de contraseña, etc )

Existen servicios de DNS alternativos a los de la tu ISP (proveedor de Internet) tanto gratuitos como de pago. Los gratuitos … bueno ya sabéis que sucede con los servicios gratuitos … normalmente acaban saliendo caros (menos velocidad, menos privacidad, menos seguridad …). Por ejemplo, puedes ver en la página de las condiciones de uso de los servicios de DNS de Google son gratuitos, pero a cambio se quedan tus datos de navegación hasta 48h. Por otra parte los de pago añaden un extra de protección bloqueando páginas que pueden ser peligrosas, protegiéndote contra algunos tipos de ataques y generalmente responden más rápido que el resto.

VPN o tunel SSH

Con un DNS privado arreglamos parte del problema, pero todavía nos queda el tramo previo (de tu dispositivo hasta el router). Siempre que utilizamos redes inalámbricas, tanto en redes públicas como (cafeterías, aeropuertos, tiendas …) como si estamos en casa, aun corremos el peligro de que alguien observe lo que se envie/recibe y pueda quedarse con información que luego pueda usar en nuestra contra. Para evitar esto, podemos encriptar nuestras comunicaciones y para este fin, tenemos al menos dos opciones:

Posiblemente os suene esta última opción y es que prácticamente cualquiera que trabaje desde casa accede a los recursos de la empresa mediante una conexión a la VPN corporativa. Esta tecnología no sólo nos da acceso a los recursos de una red como si estuviéramos conectados directamente a ella sino que además toda la comunicación entre tu dispositivo y la red corporativa es encriptada. Habitualmente se utiliza criptografía asimétrica de modo que tienes que acceder físicamente a un dispositivo autorizado para poder entrar en la red (al menos hasta que sea accesible la computación cuántica).

Si teneis algo de domótica en vuestra casa, debeis saber que estos aparatos (cámaras, enchufes, cerraduras, persianas …) habitualmente tienen una carencia muy grande en cuanto a la seguridad y por tanto es casi obligación que éstos no tengan acceso a Internet y que sólo vosotros podais acceder a ellos mediante comunicaciones seguras, por ejemplo una VPN.

Diferencia entre los dos tipos de criptografía

Al igual que con las DNS, es posible contratar una VPN privada (aunque estoy bastante seguro de que no son VPN sino túneles SSH, que veremos en el siguiente párrafo) por un precio bastante reducido (3 – 5 € al más). Una vez conectado a una VPN, estás navegando a través de un servidor y por tanto de cara al resto de dispositivos y webs con las que comuniques sólo verán la IP de este servidor. Esto permite también evitar las restricciones por regiones (geográficas). Por ejemplo algunos contenidos de las plataformas streaming como Netflix, HBO … sólo se pueden ver desde ciertos países. Los servicios de VPN privada, normalmente tienen servidores localizados en diferentes países y te dejan conectarte al que más te convenga. Normalmente te interesará hacerlo en el que esté más cerca para tener menor tiempo de respuesta, puedes seleccionar un servidor que esté en uno de los países donde se permite ver el contenido que estás buscando.

La otra opción, el túnel SSH, es parecido a una VPN pero no te da acceso a los recursos de la red directamente, sólo a los del ordenador con el que has establecido el túnel y con el inconveniente de que se ha configurar el acceso a cada una de las aplicaciones que deseas que utilicen el túnel. Teneis una explicación más detallada en un post que hice un tiempo.

Que he hecho en mi caso?

Como soy desconfiado por naturaleza, consciente de que no me voy a leer todo el contrato para saber exactamente que harán con mis datos y tengo suficientes conocimiento como para hacerlo, he optado por crear mi propio servidor de DNS y VPN. Pensaréis que no compensa tener un ordenador en casa todo el día encendido por la “chorrada” de la privacidad (que se lo expliquen a los de Cambridge Analitica) y el hipotético caso de que alguien se interese por mis comunicaciones. Bueno, es subjetivo, pero y si te digo que por lo que te gastas en una comida a la carta en un restaurante de precio medio en Barcelona puedes disfrutar de todas las ventajas durante muchos años:

Siempre hay que intentar encontrar algo positivo en todo, y la pandemia (que parece que todavía le quedan bastantes meses) no es una excepción. Aprovechando que es prácticamente imposible realizar actividades fuera de casa, y que tengo muchas “freakadas” por aprender, me he decidido a “trastear” con una Raspberry pi.

La nueva Raspberry Pi 4 modelo B

Para quien no esté familiarizado, se trata de un mini-ordenador muy económico (desde 35 $ en el caso del último modelo) pero muy potente para su tamaño, totalmente libre (hyperconfigurable) y al que, con mañana y conocimientos de electrónica y programación se puede controlar casi cualquier aparato. Este trastos son ideales para hacer pruebas de concepto y aprender sin “ensuciar” o poner en riesgo tu ordenador principal.

La recibí hace pocos días, pero el primero que he hecho con esta pequeña maravilla es aumentar mucho significament mi privacidad y seguridad en las comunicaciones. Como consume muy poco y hace un ruido casi imperceptible es ideal para dejarla funcionando 24×7 (siempre y cuando adecuemos el voltaje del ventiladores, pero eso es otro asunto).

Para aumentar la seguridad de todo el conjunto, la Raspberry esta conectada por cable al router (así evito la posible captura de los datos por vía inalámbrica), he instalado un software DNS (Pihole), un DNS inverso (Unbound) y un servidor VPN (WireGUard) los tres de código libre.

Sí, creo que el código libre es el único del que te puedes fiar para estos asuntos, ya que llegado el caso podrías revisar el código del programa y verificar lo que hace, pero normalmente es suficiente en que tenga buena reputación dentro del “mundo “del software libre (del mismo modo que se que no me leería un contrato de un servicio de DNS o VPN externo tampoco revisaré miles de líneas de código). No voy a entrar en el debate de si software libre si o no (tal vez en otro artículo), pero no creo que haya ninguna alternativa comercial que permita asegurar tu privacidad.

Dado que por razones obvias no se puede configurar un dominio como servidor de DNS (necesitarías un segundo servidor DNS que te tradujera el dominio del primero que has configurado) y de que pretendía tener todas las fases de la comunicación cubiertas, he terminado por instalar configurar un servidor de VPN en la misma máquina (Raspberry Pi).

En el servidor de VPN sí me puedo dirigir mediante un nombre de dominio, por lo tanto sólo tuve que darme de alta en un servicio de DNS dinámico (por ejemplo el noip.com). Estos servicios te facilitan un subdominio dentro de uno de sus dominios y te proporcionan la manera de que los actualices de forma automática la IP a la que la han de traducir. Como mi router ya tiene por defecto la opción de informar del cambio de IP a estos tipos de servicios, sólo he tenido que configurarlo le las credenciales del servicio. De esta manera me puedo conectar al dominio (por ejemplo raspberry.ddns.net) sin preocuparme de si mi router ha cambiado de IP.

Esquema de la estructura montada

Esta “arquitectura” me permite la comunicación entre mis dispositivos inalámbricos y el servidor DNS sea encriptada siempre que esté conectado a la VPN. Además, puedo acceder a todos los servicios que ofrecen los dispositivos de mi red (ahora mismos estan todos en la Raspberry Pi) sin que estén abiertos a todo Internet. Obviamente la primera solicitud a la DNS no la puedo realizar en mi DNS, ya que necesito saber la IP que tiene en ese momento mi router por tanto no se hará encriptada, pero sólo será esta primera y una vez establecida la comunicación con la VPN el resto de comunicaciones si que lo serán.

Para la instalación y configuración de toda esta plataforma me fue de muchísima ayuda esta web.

Para no aburrir y no copiar el contenido del enlace anterior no contaré todo el proceso realizado, pero si alguien lo quiere hacer por su cuenta y tiene alguna duda, que lo ponga en comentarios o me escriba un e-mail y tratamos de solucionarlo. Solo una advertencia, sino quereis calentaros la cabeza más, mejor olvidaros de usarlos desdecontenedores, ya que Docker gestiona las redes de los respectivos contenedores y hay que jugar con tres redes a la vez (la del contenedor, la interna de la VPN y la propia red local)

Costums

Aquí ya entramos en asuntos más subjetivos y en algunos casos no hay mucho espacio para la mejora, especialmente cuando llegamos a nivel de servicio, me explico…

A nivel de navegador, podemos migrar a navegadores que se preocupen por nuestra privacidad en vez de utilizar los “standard” (Chrome, Edge …). Como siempre para tener la seguridad deberíamos mirar navegadores de código abierto. Lo que tiene mayor cantidad de usuarios (y por tanto el que recomiendo) es Firefox.

Además, Firefox por defecto tiene incrustado un método de “DNS over https” utilizando el servicio de DNS de Cloudfare. Si investigamos un poco vemos que estos servicio de DNS guarda las peticiones durante 24h, por tanto en cuanto a privacidad no ganamos, pero al menos a nivel seguridad estamos cubiertos. De todos modos si montais una arquitectura como la de la imagen anterior, podeis deshabilitar esta protección y mantener la funcionalidad completa de nuestra plataforma (en la aplicación para móviles no he conseguido desactivarlo).

Opciones -> Parámetros de red -> Habilitar DNS sobre HTTPS

En temas de privacidad, todo lo que estamos viendo no tiene sentido si seguimos utilizando el buscadores típicos (Google, Bing …) mientras tanto estamos identificados con su cuenta. Pese a no estar identificados y que utilizemos Firefox hay métodos para que el buscador guarde todos los enlaces por los que nos estamos moviendo, por lo tanto el mejor método es usar un buscador que respete nuestra privacidad, como por ejemplo Duck Duck Go.

Como es obvio, en general si usamos menos servicios en línea más privacidad nos quedará, pero algunos servicios son especialmente difíciles de dejar por su utilidad y la falta de alternativas “reales”. Si buscamos, casi siempre encontramos alternativas libres, pero muchas veces nos vemos obligados a utilizar las comerciales por el uso generalizado en la sociedad actual. Si realmente estamos concienciados podemos intentar transformar nuestro alrededor dando a conocer alternativas y utilizándolas pero deberemos mantener el uso en las comerciales para mantenernos dentro de la sociedad. He aquí algunas alternativas más conocidas a estos tipos de servicios:

Servicio comercialAlternativa libre
FacebookDiaspora
WhatsAppSignal
Google FotosSyncthing
Google DriveownCloud
GoogleDuck Duck Go
Google MapsOpenStreetMaps

Otra comodidad a la que deberíamos renunciar es registrarnos / identificar a otras webs utilizando la cuenta de Google / Facebook … ya que les estamos diciendo a donde estamos accediendo a estas corporaciones.

Ventana que te permite identificarte utilizando la cuenta que tenemos en Google o Facebook

Otro ejemplo de la dificultad de mantener la privacidad es que es prácticamente imposible comprar un dispositivo móvil que no funcione bajo Android (2500 millones de dispositivos) o iOS (2000 millones de dispositivos) por lo tanto, mientras estemos utilizando estos sistemas operativos en nuestros dispositivos, será muy difícil mantener nuestra privacidad totalmente controlada.

Conclusiones

No creo que haya duda sobre la importancia de intentar aumentar la seguridad en nuestras comunicaciones tanto como nos sea posible. Hemos visto que hay formas que requieren mayor formación técnica pero que siempre tenemos alternativas comerciales que por un módico precio nos lo ponen muy fácil.

En cuanto a la privacidad, es un tema muy personal, pero creo que al final lo importante es ser conscientes de nuestra privacidad y de la falta de ésta. Una vez que hemos reflexionado, podemos llegar al punto de equilibrio personal entre el valor que nos dan los servicios comerciales respecto a las alternativas libres existentes y el valor que le damos a nuestra privacidad.

Salir de la versión móvil