Cómo navegar de forma segura con tu conexión VPN

En artículos anteriores hemos comentado lo peligroso que resulta conectarse a redes WiFi abiertas. Una de las soluciones para poder navegar de manera segura a través de estas redes es conectarse a través un Servidor VPN.

OpenVPN

Ésta es la definición de VPN según la Wikipedia:

Una red privada virtual, o VPN es una tecnología de red que permite una extensión segura de la red local (LAN) sobre una red pública o no controlada como Internet. Permite que los dispositivos en la red envíen y reciban datos sobre redes compartidas o públicas como si fuera una red privada con toda la funcionalidad, seguridad y políticas de gestión de una red privada.

Ahora voy a proceder a explicar el proceso de instalación del servicio VPN en una Raspberry Pi y cómo conectarnos posteriormente desde nuestro PC.

Instalación del Servicio VPN

 

Antes de comenzar la instalación, describiré el entorno donde vamos a configurar la VPN. El servicio VPN se va a instalar en una Raspberry Pi. Éste tiene instalado el sistema operativo Raspbian, el cuál está basado en Debian.

Para empezar instalamos el paquete necesario para configurar este servicio introduciendo el siguiente comando en el terminal:

sudo apt-get install openvpn

El siguiente paso es crear carpeta dentro del directorio /etc/openvpn para luego copiar los ficheros de configuración por defecto a esta carpeta.

Para ello escribimos lo siguiente en el terminal (estando en la ruta /etc/openvpn):

mkdir easy-rsa

Luego copiamos la carpeta donde se encuentra los ficheros de configuración por defecto:

cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/* easy-rsa

Una vez que tenemos estos ficheros entramos en la carpeta creada (en mi caso es easy-rsa) y modificamos el fichero «vars» con nuestro editor favorito (por ejemplo nano). Aquí debemos poner datos como país, provincia, ciudad, organización, e-mail, common name. Con los datos de este fichero se generará el fichero de la CA o Autoridad Certificadora posteriormente.

Fichero vars
Ejemplo de fichero vars

 

El siguiente paso será ejecutar el script que acabamos de editar. Sólo tenemos que poner los siguientes comandos:

Ejecucion Script Vars
Ejecutamos el script vars y limpiamos el contenido de la carpeta keys

Ahora debemos crear los certificados de la Autoridad Certificadora (CA), que vamos a ser nosotros mismos. Para ello ponemos en el terminal:

./build-ca

Nos pedirá todos los datos que hemos puesto en el fichero vars como por ejemplo país, provincia, ciudad, organización etc.

Una vez que hemos generado los certificados de la Autoridad Certificadora, creamos lo certificados del servidor con el siguiente comando:

./build-key-server ServidorVPN

Esto hará que se cree un certificado para el servidor y un clave privada. Nos pedirá de nuevo los datos que hemos puesto anteriormente. Sólo debemos cambiar el campo «Common Name» por el nombre del certificado (en mi caso es «ServidorVPN»).

El siguiente paso es crear los parámetros Diffie-Hellman. Estos parámetros aseguran que la conexión sea SSL/TLS. Para ello ponemos:

./build-dh

Una vez hecho esto, desde la carpeta easy-rsa, vamos al directorio keys, que es la carpeta donde se encuentra los certificados y claves generadas y copiamos el certificado del servidor y Autoridad Certificadora (CA), clave privada del Servidor y los parámetros Diffie-Hellman a la carpeta /etc/openvpn.

cp ServidorVPN.crt ServidorVPN.key ca.crt dh1024.pem /etc/openvpn

El siguiente paso sería crear los certificados de los clientes. Para ello ponemos en el terminal lo siguiente:

./build-key ClienteVPN

Tendríamos que poner los mismos datos que hemos puesto cuando hemos generado el certificado para el servidor a excepción de la linea «Common Name», en la que pondremos el nombre del certificado del cliente (por ejemplo ClienteVPN).

Una vez hecho esto, copiamos los ficheros ClienteVPN.crt, ClienteVPN.key y ca.crt a una carpeta del equipo desde donde nos vamos a conectar a nuestra VPN.

El siguiente paso es crear un fichero llamado «server.conf» en la carpeta /etc/openvpn. Este fichero deberá contener lo siguiente:

Configuración servidor
Fichero de configuración para el servicio VPN

En este fichero deberás modificar la linea «cert» y poner el nombre de tu certificado y también modificar la linea «push route 192.168.1.0 255.255.255.0» en caso de que tu red no esté en este rango. Ésta última línea, añadirá una línea en tu tabla de enrutamiento para permitir acceder a los dispositivos de la red local donde está alojado el servicio VPN.

Ahora debemos crear un script que permita al servidor VPN redirigir el trafico hacia el Cliente VPN, es decir, nos permita tener conectividad a Internet a través del servidor VPN.

Para ello crearemos un fichero con extensión .sh en la carpeta /etc/init.d que tendrá las siguiente líneas:

Script Enrutamiento
Script para enrutamiento

Si en la red donde está alojado el servicio VPN tiene un direccionamiento diferente a 192.168.1.0/24 debemos modificarlo en el script.

Después hacemos que se ejecute siempre que se inicie el equipo donde va a estar instalado el servicio VPN.

Para ello damos permiso de ejecución al script con el siguiente comando en el terminal:

chmod +x nombredelscript.sh

Luego ejecutaremos el siguiente comando para hacer que se ejecute cada vez que inicie el equipo

update-rc.d nombredelscript.sh defaults

Para terminar la configuración del servidor, iniciamos el servicio:

service openvpn start

Configuración del Router

Cuando nos conectamos a una red WiFi abierta, como por ejemplo en centros comerciales, restaurantes o cualquier red WiFi pública, normalmente los routers que nos dan conexión tienen aplicada una política restrictiva en sus cortafuegos. A política restrictiva, me refiero que sólo permiten el uso de la red para acceder a contenido Web, y quedan bloqueados todos los demás servicios. 

Para ello debemos hacer que cuando conectemos desde estos sitios, accedamos a nuestra VPN desde un puerto permitido por ejemplo el puerto 80/TCP (HTTP), puerto 443/TCP (HTTPS) o puerto 53 (DNS).

La solución para esto es el mapeo o redirección de puertos en nuestro router.

Para hacer esto, en los routers suele haber un menú llamado Forwarding y luego una pestaña llamada Virtual Servers. Añadimos una regla nueva y nos debe salir una pantalla parecida a la siguiente:  

Mapeo de Puertos en el router
Mapeo de Puertos en el router

Para configurar la regla sólo tenemos que poner el puerto por el que vamos a acceder en Service Port (en mi caso 443), IP de la máquina que tiene instalado el servicio VPN, el puerto con el que funciona el servicio (en nuestro caso hemos puesto 1194 en el fichero de configuración) y el protocolo (TCP).

 

Configuración del Cliente

 

Para terminar configuraremos el cliente. Explicaremos cómo se haría tanto en sistemas Windows como en sistemas Linux.

Sistemas Windows

El primer paso es crear el fichero de configuración. Este fichero de configuración debe estar alojado en la misma carpeta donde se encuentran los certificados del cliente y de la Autoridad Certificadora (en nuestro caso se llaman ClienteVPN.crt ClienteVPN.key y ca.crt). Este fichero debe llamarse «client.ovpn».

Fichero de configuración del cliente
Fichero de configuración del cliente

Hay que tener en cuenta parámetros como el protocolo (proto tcp), el nombre del certificado y clave privada del cliente (cert ClienteVPN.crt y key ClienteVPN.key) y también la dirección y puerto a la que nos tendremos que conectar (remote hacking-etico.dyndns.org 443). En mi caso he puesto un nombre en vez de una IP, ya que hemos asociado el router a un DNS Dinámico, ya que la IP del router cambia cada vez que lo reiniciamos.

Una vez que tenemos el fichero de configuración terminado nos descargamos de la página de OpenVPN el instalador para el cliente. Se puede encontrar aquí

Después de haberlo instalado importamos la configuración haciendo click en «Connection Profiles». Luego seleccionamos «Local file» e indicamos dónde está el fichero de configuración. Hecho esto hacemos click en «Import».

Importamos la configuración VPN
Importamos la configuración VPN

Nos pide seguidamente un nombre para la conexión y hacemos click en «Save».

Para terminar hacemos click en la conexión que hemos creado y vemos que nos hemos conectado correctamente.

Aquí se puede ver como nos hemos conectado a nuestro servidor VPN
Aquí se puede ver como nos hemos conectado a nuestro servidor VPN

 

Sistemas Linux

Para empezar instalamos el paquete openvpn con el siguiente comando:

apt-get install openvpn

Una vez instalado el paquete copiamos el certificado ClienteVPN.crt, la clave privada ClienteVPN.key y ca.crt que hemos generado en el servidor en la carpeta /etc/openvpn del cliente.

En ésta misma carpeta, creamos un fichero llamado client.conf donde copiaremos el contenido del fichero de configuración del cliente, igual que el que hemos creado en Windows.

Finalmente iniciamos la conexión VPN con el siguiente comando:

service openvpn start

Si queremos parar la conexión VPN solo tenemos que poner en el terminal lo siguiente:

service openvpn stop

Hasta aquí este artículo, espero que os haya gustado y os sea útil.

Julio Caballero

@jucab1989