«Me lo contaron y lo olvidé; lo vi y lo entendí; lo hice y lo aprendí».

— Confucio

Configurar túnel con OpenVPN en Mikrotik

OpenVPN es una herramienta de Software libre con la que podemos configurar en MikroTik un túnel seguro para enviar y recibir datos a través de una red pública conectándonos con él. Utilizar certificados SSL/TLS, estos le aplican seguridad a la capa de transporte, siendo el TLS (2018) el sucesor del SSL (1995), la ultima versión de este es el TLS 1.3.

EL objetivo de este post es configurar en MikroTik un servidor OpenVPN y su cliente, tanto en Windows como en Android. De esta manera podamos conectarnos directamente a una red y acceder a sus recursos desde cualquier red publica sin preocuparnos de la seguridad.

Configuración del servidor OpenVPN en MikroTik

Realizamos la configuración básica de nuestro equipo MikroTik para poder configurar el túnel de OpenVPN, para ello tenemos un post sobre ello, Configuración Básica router MikroTik.

El primer paso será crear un certificado CA, pero ¿Qué es un certificado CA? CA son las siglas de autoridad certificadora, estas son una parte fundamental de las comunicaciones que tenemos en línea. Esta se encarga de validar las identidades de las entidades, como web, email, empresas o personas, y crear un vinculación con ellas a través de la criptografía, con documentos electrónicos llamados certificados digitales.

En este caso usaremos la CA de nuestro propio router MikroTik para crear una comunicación segura y cifrada, mediante la criptografía de clave publica y calve privada. Para que el servidor OpenVPN pueda verificar la identidad, se crea un certificado que contiene la clave publica (Firmado con la propia clave privada de la CA, para establecer la confianza) y una clave privada para que se pueda validar (también firmada por la CA), de esta manera se certifica su identidad al solicitar el acceso al servidor.

Certificado CA

En Winbox, accedemos a System>Certificate, y creamos nuestro certificado CA, establecemos un nombre, los datos de localización y un nombre común. Este certificado vamos a hacerlo para 10 años, y para la prueba la Key Size va a ser de 2048, pero es recomendable que sea de 4096.

En la pestaña Key Usage, estableceremos las casillas crl sign y el key cert. sign. Aplicamos los cambios y firmamos pulsando en Sign, podemos establecer en CA CRL Host tanto una IP publica fija como un dominio dinámico.

Una vez firmado el certificado CA, este debe mostrar marcada la etiqueta Trust en la parte inferior.

Certificado Servidor

Rellenamos los datos al igual que con el CA, en la pestaña Key Usage estableceremos las casillas digital signature, key enciphement y tls server. Aplicamos los cambios y firmamos pulsando en Sign,

Una vez firmado el certificado CA, este debe mostrar marcada la etiqueta Trust en la parte inferior.

Certificado de cliente

Rellenamos los datos al igual que con anteriores, en la pestaña Key Usage estableceremos la casilla tls client. Aplicamos los cambios y firmamos pulsando en Sign,

El certificado cliente no requiere la etiqueta Trust.

Exportar certificados

Una vez firmados los certificados CA, Servidor y Cliente, ahora los exportaremos para poder usarlo en el cliente OpenVPN. Pero solo nos hacen falta el CA y el Cliente, establecemos un nombre para el archivo y en el del Cliente una contraseña.

Una vez exportados los pasamos a nuestro equipo.

Configuración del servidor OVPN

El siguiente paso para configurar nuestro túnel, es habilitar el servidor OpenVPN en MikroTik, para ello vamos al apartado PPP>Interfaces y pulsamos en la opción OVPN.

En la ventana que nos aparece en el servidor OVPN, habilitamos pulsando en la casilla. El puerto lo podemos dejar por defecto, pero como consejo es mejor cambiarlo, así evitamos algunos exploit que están programados para explotar vulnerabilidades de ese puerto. El perfil por defecto debe ser el de encriptación. El certificado debe ser el del Servidor. También haga clic en la casilla de verificación Require Client Certificate. Del apartado Auth. marque sha1. Del apartado Cipher marque aes256.

Creación usuario OpenVPN

MikroTik utilizar usuario y contraseña para validar las conexiones, para esto debemos configurarlo previamente en el Secret del PPP. Podemos asignarle un Pool de IP, pero en nuestro caso irán con IP fijas.

Lo primero de todo crear un Profile en PPP para ello, copiamos el perfil default-encryption y lo modificamos a nuestro gusto.

Ahora creamos nuestro usuario en Secrets.

Deberemos añadir una regla Masquerade en Firewall>NAT para la red VPN.

Creamos una regla en el Firewall para aceptar el puerto, y la posicionamos dentro de nuestro Firewall.

Configuración de archivos

Para conectarnos con OpenVPN, necesitamos tener en una carpetas una serie de archivos, los certificados CA y de Cliente con su Key, el archivo *.ovpn y el archivo secret, sin extensión. Para editar estos archivos uso la aplicación Notepad++.

El archivo *.ovpn debe llevar lo siguiente dentro.

client

dev tun

proto tcp-client

remote 0.0.0.0 ##IP pública o DDNS

port 1194 ##Puertos por el que nos conectamos

nobind

persist-key

persist-tun

tls-client

remote-cert-tls server

ca cert_export_CA.crt ##Nombre del certificado CA

cert cert_export_CLIENT1.crt ##Nombre del certificado Cliente

key  cert_export_CLIENT1.key ##Nombre de la Key del Cliente

verb 4

mute 10

cipher AES-256-CBC

auth SHA1

auth-user-pass secret

auth-nocache

redirect-gateway def1

El archivo secret debe llevar solo el usuario en una línea y el otra línea la contraseña.

USERSysadminpro
PassSysadminpro

Cliente Windows y Android

Para conectarnos desde un equipo con Windows o Android, el procedimiento es el mismo, deberemos descargar el cliente de OpenVPN, desde su web oficial e instalarlo en el caso de Windows, y en Android desde el Google Play. Accederemos a la carpeta donde estan todos los archivos juntos y el archivo *.ovpn lo importamos. Nos pedirá una clave que es la que establecimos al exportar el certificado del cliente.

Una vez hecho esto ya tendremos nuestro túnel a nuestra red.

Si no tenemos acceso a las otras redes del router, deberemos activar en el bridge el proxy-arp.

Configuración Cliente MikroTik

Accedemos a nuestro equipo MikroTik y lo conectamos a la red, en este caso por DHCP, una vez tengamos conexión arrastramos a Files, los archivos de los certificados.

Una vez añadidos vamos a importar los certificados, para ello vamos a System > Certificates y hacemos clic sobre Import, en la opción File Name seleccionamos primero uno de los .crt del certificado cliente, si este tuviera una contraseña la establecemos también.

Al importar el certificado podemos observar que que solo nos aparece una T, y deberemos importar también la contraseña para que se pueda utilizar y aparezca KT

Una vez importado correctamente el certificado, vamos a configurar el cliente de OpenVPN en MikroTik, para ello vamos al menú PPP y pulsamos en el icono + de la pestaña Interface y seleccionamos OVPN Client.

Establecemos un nombre para la conexión.

En la pestaña Dial Out, establecemos las opciones del cliente.

Connect To: IP del servidor OpenVPN, también podemos usar un DDNS
Port: Puerto de escucha del servidor.
User: Usuario para validar el acceso junto con su contraseña.
Profile: establecemos el perfil encriptado por defecto.
Certificate: seleccionamos el certificado del cliente que previamente hemos importado.
Auth: el método de autenticación.
Chipher: el tipo de cifrado.

Quedando de la siguiente manera:

Podemos crear una ruta por defecto para que todo el trafico salga por la VPN, para ello marcamos la Opción Add default Route.

Y deberemos crear un Masquerade, para que podamos navegar, o añadir la interfaz al listado WAN previamente configurado.

Si nos diera problemas la salida del trafico por la VPN, podemos quitar la ruta por defecto del DHCP y crearla de forma manual con métrica 2.

Fuentes: