El teletrabajo está en auge y mas desde la pandemia originada por el coronavirus Covid-19, pero también es una tendencia cada vez mayor en tipos de trabajo que no requiere presencia física en el puesto de trabajo.
Los organismos públicos y las grandes empresas lo hacen actualmente, sus trabajadores pueden conectarse desde casa a la oficina para hacer su trabajo prácticamente igual que si estuvieran presencialmente en la empresa.
Esto es posible porque disponen de un departamento de informática que ha desarrollado y configurado un complejo y costoso sistema de redes privadas virtuales que permite un acceso remoto a la información con la seguridad suficiente para no comprometer los datos que navegan por internet. Es lo que se conoce como una VPN (Virtual Private Network) o Red Privada Virtual que se realiza entre los equipos informáticos de la empresa y los ordenadores que usan los empleados desde sus domicilios o cualquier otro sitio, empleando normalmente portátiles pre-configurados. Esta infraestructura es compleja de implementar y costosa de mantener.
Pues bien, si tienes una pequeña empresa o eres un empresario autónomo que desea hacer lo mismo pero a bajo coste, tienes la opción de crear una VPN de forma relativamente sencilla y económica, lo puedes hacer tu mismo si tienes nociones medio avanzadas de redes, sino siempre podrás contar con la experiencia de una empresa informática externa que sea capaz de configurarte una VPN a través del protocolo OpenVPN.
REQUISITOS VPN:
- Velocidad rápida de internet +30Mbps
- IP pública fija o DDNS (no es válido CGNAT)
- Router de operador (configurable para reenvio de puertos)
ARQUITECTURA:
Los tipos de VPN según su arquitectura pueden ser:
- VPN acceso remoto: cuando hay 1 Servidor central y Clientes VPN conectados remotamente.
- VPN site-to-site: usado para intercomunicar diferentes sedes y compartir recursos a través de una red segura.
TECNOLOGÍA UTILIZADA:
OpenVPN que utiliza protocolos SSL/TLS y capa de transporte de datos con 2 tipos de funcionamiento:
- Modo TUN (nivel 3): Controlador que emula un dispositivo Punto a Punto, que se utiliza para crea túneles virtuales operando con protocolo IP (TCP/UDP). No usaremos este modo en los ejemplos.
- Modo TAP (nivel 2): También conocido como modo Puente o Bridge. Simula una interfaz de red Ethernet, creando túneles que encapsulan directamente los paquetes Ethernet.
Las máquinas de cada extremo operan como parte de la misma subred, con lo que tenemos que tener especial cuidado de que si la red privada donde se conecta el origen coincide con la red privada de destino, tendremos problemas de enrutamiento (mismas IPs de las 2 sedes).Por ejemplo: la RED OFICINA debe tener el rango de IPs 192.168.5.x y la RED CASA debe tener el rango de IPs 192.168.1.x para que cuando se cree la conexión VPN el ordenador desde donde se acceda pueda crear una segunda Red virtual que tenga el rango de IPs 192.168.5.x.
En definitiva, de lo que se trata es de que todas las máquinas tanto de origen como de destino estén dentro del mismo rango de IPs, la parte del Servidor VPN tendrá solamente una Red y la parte de los ordenadores remotos tendrán la Red de internet del operador y la red virtual creada por OpenVPN.
PREÁMBULOS DE LA CONFIGURACIÓN:
Vamos a configurar una VPN con el protocolo OpenVPN en modo TAP para que el ordenador remoto esté conectado directamente a la misma LAN de su oficina a través de una segunda red que se añadirá a su sistema, que será virtual.
Sitio 1: RED-OFICINA
- Router de operador de Internet (WAN: 50.51.52.53 y LAN: 192.168.1.1)
- Servidor VPN por software instalado o Router VPN (WAN: 192.168.1.200 y LAN: 192.168.5.1)
- Ordenadores, servidores, NAS o impresoras en la misma Red-Oficina
- Certificados y claves de Servidor
Sitio 2: RED-CASA
- Dispositivo con Windows, Android, MacOS
- Conexión a internet lo más rápida posible: internet fibra, 3G/4G, Wifi
- Cliente de conexión VPN (OpenVPN). También puede ser por software instalado en el dispositivo o puede ser por hardware como un Router VPN preconfigurado. En nuestro ejemplo usaremos software instalado en un ordenador PC con Windows 10.
- Certificados y claves de Cliente
CONFIGURACIÓN Sitio 1: RED-OFICINA
- Router del operador de Internet (192.168.1.1)
Para empezar deberá disponer de una IP pública accesible desde el exterior (p.e. 50.51.52.53), bien sea fija o dinámica. Si es fija tendremos siempre la misma IP (recomendado) y si es dinámica es recomendable contratar un servicio DynDNS (p.e. No-ip.com).
Accedemos vía web a la IP 192.168.1.1 con el usuario y contraseña adecuados, vamos a la configuración avanzada y en la sección NAT añadimos una regla asociando el puerto 1194 con el protocolo UDP y apuntando a la dirección IP del Servidor VPN (192.168.1.200), que en nuestro caso será un Router Teltonika RUTX10.
En el ejemplo este Router de operador solamente lo vamos a utilizar como puerta de enlace para proporcionarnos internet en la oficina, por lo que podremos, si queremos, desactivar su servidor DHCP y el WIFI pues utilizaremos estos servicios desde un segundo Router VPN que hará estas funciones. - Servidor VPN, bien por software o por hardware. Como vamos a usar el protocolo OpenVPN, si es por software usaremos el propio programa descargable de OpenVPN y si es por hardware usaremos un Router con función de VPN que soporte el protocolo OpenVPN.
En nuestro caso usaremos un Router Teltonika RUTX10 aunque pueden usarse otros como Linksys LRT214/224, pero recomendamos la marca Teltonika Networks.
Antes de conectar este Router RUTX10 al Router del operador de Internet tendremos que cambiar la IP del mismo ya que viene configurado por defecto como 192.168.1.1 y a fin de evitar conflictos con el Router del operador de Internet, así pues la cambiaremos a 192.168.5.1. Entonces ahora podemos proceder a conectar el RUTX10 al Router del operador de Internet en un puerto LAN y al RUTX10 en el puerto WAN.
Ahora entraremos en la configuración vía web de este Router VPN a través de 192.168.5.1 y configuramos en primer lugar la dirección IP de la red WAN para dejarla fija, que no será otra que la IP que establecimos en el puerto 1194 (192.168.1.200).
A partir de ahora nos olvidamos del Router del operador de Internet que no debe tener conectado ningún dispositivo de la red porque sino estaría dentro del rango 192.168.1.x y lo que tenemos que hacer es conectar todos los ordenadores, impresoras y demás al Router RUTX10 para que estos dispositivos tengan IPs del rango 192.168.5.x que va a ser el rango del conjunto de dispositivos locales y remotos.
*Aún nos faltaría cargar los certificados y claves necesarios para la seguridad del protocolo OpenVPN que se explicará un poco más abajo. - Ordenadores y otros dispositivos de RED-OFICINA, que ya que están conectados a través del Router VPN, deberán tener IPs del rango 192.168.5.x, bien sea por IP asignada por el Servidor DNS o porque se hayan establecido de forma manual en la configuración de cada dispositivo.
- Generación de Certificados y claves, necesarios si queremos conectar más de un cliente simultáneamente al Servidor VPN (sino bastaría con usar una clave estática). Los Certificados se usarán como método de autenticación en la conexión remota. ¿Cómo generamos estos certificados y claves? Aquí es donde se complica la configuración ya que hasta la fecha desconocemos si existe algún software que lo haga de manera semi-automática en un entorno gráfico, por lo que no hay mas remedio que hacerlo a través de comandos en Windows y una vez instalado el software OpenVPN con la opción marcada «OpenSSL Utilities» y EasyRSA 3 Certificate Management Scripts.
Una vez instalado el software en cualquier ordenador (no es necesario que sea un ordenador de la RED-OFICINA), el sistema está preparado para generar los certificados y las claves necesarias.
Ejecutamos como Administrador «Símbolo de sistema» (cmd) y seguimos estos pasos:
Preparando EasyRSA—> Cambiamos al directorio de EasyRSA:
cd "C:Program FilesOpenVPNeasy-rsa"—> Ejecutamos EasyRSA:
EasyRSA-Start.bat—> Antes de generar los ficheros con EasyRSA se debe primero inicializar un directorio para la PKI (Public Key Infrastructure o Infraestructura de Clave Pública) con el siguiente comando:
./easyrsa init-pki—> Abrimos el fichero vars.bat con el editor de texto Notepad (Bloc de Notas):
notepad vars.bat—> Se abrirá el fichero de plantilla para generar los certificados, la información que contendrá será la que se usará para la generación de los certificados. Se debería localizar y editar las siguientes líneas cambiando los valores por los necesarios en cada caso:
set KEY_COUNTRY=US set KEY_PROVINCE=CA set KEY_CITY=SanFrancisco set KEY_ORG=OpenVPN set KEY_EMAIL=mail@host.domain—> Puedes establecer el tamaño de la clave para los parámetros Diffie Hellman:
set DH_KEY_SIZE=2028—> Una vez realizados estos pasos guarda el fichero «vars.bat» y cierra el editor y ejecuta el siguiente comando:
./easyrsa clean-allGenerando los Certificados y Claves
—> Crear la Autoridad de Certificación o Certificate Authority (CA): ca.crt
(se recomienda poner una clave privada aunque en el ejemplo no lo hacemos)
./easyrsa build-ca nopass—> Crear el Certificado del Servidor VPN (se firmará automáticamente con la CA generada en modo «server»). Se recomienda NO poner una clave porque sino cada vez que se inicie la pedirá para el certificado): server.crt + server.key
./easyrsa build-server-full server nopass—> Crear Certificados y claves para los Clientes (se firmarán automáticamente con la CA). Hay que realizar los mismos pasos para cada Cliente VPN. Se recomienda poner una clave ya que si se pierde el certificado nadie podrá usarlo): Client1.crt + Client1.key, Client2.crt + Client2.key, … así con todos los Clientes.
(cambiar Client1 por el nombre del cliente y omitir nopass si se desea poner una clave para ese cliente. Te preguntará por la clave en el momento de la ejecución del comando).
./easyrsa build-client-full Client1 nopass—> Por último, Crear parámetros Diffie Hellman:
./easyrsa gen-dh—> Para salir del entorno EasyRSA:
exitLos ficheros generados y firmados deberían aparecer en los siguientes directorios (por defecto):
Certificado CA ca.crt -------------------------------> C:Program FilesOpenVPNeasy-rsapki Diffie-Hellman parámetros dh.pem --------------------> C:Program FilesOpenVPNeasy-rsapki Claves Servidor y Clientes server.key + clientX.key -> C:Program FilesOpenVPNeasy-rsapkiprivate Cert. Servidor y Clientes server.crt + clientX.crt---> C:Program FilesOpenVPNeasy-rsapkiissued
*carga de los certificados y claves generadas en el Servidor VPN compatible con OpenVPN «Router RUTX10»:
- Entramos en la configuración del Router RUTX10
- Services -> VPN -> OPENVPN: Enable
- Modo: TAP
- Protocolo: UDP
- Puerto: 1194 (u otro si se ha elegido uno no estándar)
- LZO: None
- Autenticación: TLS
- Encriptación: AES-256-CBC 256
- TLS cipher: All
- Client to client: off
- Keep alive: 10 120
- Push option: en blanco
- Allow duplicate certificates: off
- Algoritmo de autenticación: SHA1 (default)
- Ficheros de certificados desde dispositivo: off
Certificate autority: subimos el fichero ca.crt
Server certificate: subimos el fichero server.crt
Server key: subimos el fichero server.key
Diffie Hellman parameters: dh.pem
CRL file (optional): no file selected - GUARDAR Y APLICAR
CONFIGURACIÓN Sitio 2: RED-CASA
- Cliente de conexión VPN (OpenVPN). También puede ser por software instalado en el dispositivo o puede ser por hardware como un Router VPN preconfigurado. En nuestro ejemplo usaremos software instalado en un ordenador PC con Windows 10.
–> Descargaremos el software desde openvpn.net -> Community -> Downloads y realizamos una instalación por defecto: https://openvpn.net/community-downloads/–>
–> Creamos un fichero de configuración con el bloc de notas llamado clientX.ovpn conteniendo lo siguiente:MÉTODO 1: haciendo referencias al certificado ca (ca.crt), al certificado-cliente (cliente1.crt) y a la clave-cliente (clienteX.key) dentro del fichero .ovpnYa que se hacen referencias a la ubicación de los archivos, hay que copiarlos en el directorio correspondiente en el ordenador de cada cliente:
C:Program FilesOpenVPNconfig —> copiamos aquí ca.crt, clientX.crt y clientX.key
client dev tap proto udp remote <IP o nombre del dominio del servidor> <puerto1194> resolv-retry infinite nobind persist-key persist-tun ca ca.crt cert clientX.crt key clientX.key cipher AES-256-CBC ;comp-lzo (comentado porque no lo activamos en el servidor VPN RUTX10) verb 3MÉTODO 2: copiando el contenido del propio certificado ca (ca.crt), el certificado-cliente (cliente1.crt) y la clave-cliente (clienteX.key) dentro del fichero .ovpn por lo que no será necesario copiar los archivos en la carpeta indicada.
Ya que se tanto el certificado CA, como el certificado clienteX.crt y su clave clienteX.key se han incluido en formato texto dentro del fichero .ovpn, no habrá que copiarlos en el directorio correspondiente del ordenador de cada cliente:
- C:Program FilesOpenVPNconfig —> no es necesario copiar aquí ca.crt, clientX.crt y clientX.key, en su lugar solamente creamos el fichero .ovpn
client dev tap proto udp remote <IP o nombre del dominio del servidor> <puerto1194> resolv-retry infinite nobind persist-key persist-tun ;ca ca.crt ;cert clientX.crt ;key clientX.key cipher AES-256-CBC ;comp-lzo (comentado porque no lo activamos en el servidor VPN RUTX10) verb 3 <ca> -----BEGIN CERTIFICATE----- contenido del certificado CA en caracteres aleatorios -----END CERTIFICATE----- </ca> <cert> -----BEGIN CERTIFICATE----- contenido del certificado ClienteX en caracteres aleatorios -----END CERTIFICATE----- </cert> <key> -----BEGIN PRIVATE KEY----- contenido de la clave privada de ClienteX en caracteres aleatorios -----END PRIVATE KEY----- </key>–> PARA FINALIZAR, pulsamos con el botón derecho sobre el icono de la aplicación OpenVPN seleccionamos el perfil clientX y pulsamos Conectar
Fuentes:
https://wiki.teltonika-networks.com/view/How_to_generate_TLS_certificates_(Windows)%3F
https://raulfranco.es/configurar-servidor-y-cliente-openvpn-en-un-edge-router/
https://www.redeszone.net/tutoriales/vpn/openvpn-instalacion-configuracion/
