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.

Actualización RouterOS V7:

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.

Actualización RouterOS V7:

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:
- https://es.wikipedia.org/wiki/OpenVPN
- https://es.wikipedia.org/wiki/Seguridad_de_la_capa_de_transporte
- https://help.mikrotik.com/docs/display/ROS/OpenVPN
- https://mum.mikrotik.com/presentations/VN17/presentation_4102_1493726768.pdf
- https://es.wikipedia.org/wiki/Lista_de_revocaci%C3%B3n_de_certificados
- https://blog.nmoleosoftware.com/index.php/2022/06/12/how-to-set-up-and-connect-to-an-openvpn-server-on-mikrotik-routeros-7