Cómo configurar el servidor VPN Pritunl en Rocky Linux 8

Pritunl es un servidor VPN e IPsec de código abierto con gestión de usuarios y escalado horizontal para pequeñas y grandes organizaciones. Ofrece al usuario la posibilidad de utilizar los protocolos OpenVPN y Wireguard. Viene con una interfaz GUI fácil de usar y admite clientes en la mayoría de dispositivos y plataformas. Todo el tráfico entre los clientes y el servidor está encriptado. Pritunl se basa en MongoDB, una base de datos fiable y escalable que puede desplegarse rápidamente y con soporte incorporado para la replicación, lo que facilita el despliegue del clúster Pritunl.

Este tutorial te enseñará a instalar el servidor VPN Pritunl en Rocky Linux 8. También exploraremos cómo conectarte a la VPN utilizando un Cliente Linux.

Requisitos previos

  1. Un sistema que ejecute Rocky Linux 8 para alojar el servidor Pritunl.
  2. Un usuario no root con privilegios sudo.
  3. Un nombre de dominio apuntando al servidor.
  4. Un sistema que ejecute Rocky Linux 8 como cliente.
  5. Asegúrate de que todo está actualizado.
    $ sudo dnf update
    
  6. Instala cualquier requisito previo.
    $ sudo dnf install nano
    

Paso 1 – Configurar el Cortafuegos

Rocky Linux utiliza el cortafuegos Firewalld. Comprueba el estado del cortafuegos.

$ sudo firewall-cmd --state
running

Esto indica que está funcionando correctamente.

El cortafuegos funciona con diferentes zonas y la zona pública es la predeterminada, la que utilizaremos. Enumera todos los servicios y puertos activos en el cortafuegos.

$ sudo firewall-cmd --permanent --list-services

Debería mostrar la siguiente salida.

dhcpv6-client mdns ssh

Permite los puertos HTTP y HTTPS.

$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https

Vuelve a comprobar el estado del cortafuegos.

$ sudo firewall-cmd --permanent --list-all

Deberías ver un resultado similar.

public
  target: default
  icmp-block-inversion: no
  interfaces:
  sources:
  services: cockpit dhcpv6-client http https ssh
  ports: 
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

Recarga el cortafuegos para activar los cambios.

$ sudo firewall-cmd --reload

Paso 2 – Instalar MongoDB

Pritunl se basa en la base de datos MongoDB, así que primero tenemos que instalarla. Rocky Linux no incluye MongoDB, así que tenemos que utilizar el repositorio oficial de MongoDB.

Nota: MongoDB 5.0 sólo funciona en procesadores nuevos. Si tu servidor funciona con hardware antiguo, deberás optar por una versión anterior de MongoDB o cambiar a un servidor más nuevo.

Crea y abre el archivo /etc/yum.repos.d/mongodb-org-5.0.repo para editarlo.

$ sudo nano /etc/yum.repos.d/mongodb-org-5.0.repo

Pega en él el siguiente código.

[mongodb-org-5.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/5.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-5.0.asc

Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te pida una vez hayas terminado.

Instala MongoDB.

$ sudo dnf install mongodb-org

Habilita e inicia el servicio MongoDB.

$ sudo systemctl enable mongod --now

Paso 3 – Instalar el Servidor Pritunl

El primer paso es crear el repositorio oficial de Pritunl. Crea y abre el archivo /etc/yum.repos.d/pritunl.repo para editarlo.

$ sudo nano /etc/yum.repos.d/pritunl.repo

Pega en él el siguiente código.

[pritunl]
name=Pritunl Repository
baseurl=https://repo.pritunl.com/stable/yum/centos/8/
gpgcheck=1
enabled=1

Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando te lo pida una vez hayas terminado.

Instala primero el repositorio Epel que necesita Pritunl.

$ sudo dnf install epel-release

Añade e importa las claves GPG necesarias para Pritunl.

$ gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 7568D9BB55FF9E5287D586017AE645C0CF8E292A
$ gpg --armor --export 7568D9BB55FF9E5287D586017AE645C0CF8E292A > key.tmp; sudo rpm --import key.tmp; rm -f key.tmp

Instala Pritunl.

$ sudo dnf install pritunl

Comprueba la versión de Pritunl.

$ pritunl version
pritunl v1.30.2960.4

Habilita e inicia el servicio Pritunl.

$ sudo systemctl enable pritunl --now

Aumentar el límite de archivos abiertos

Ejecuta los siguientes comandos para aumentar el límite de archivos abiertos en el servidor. Esto evitará problemas de conexión en caso de carga elevada. Si has instalado MongoDB en un servidor distinto, deberás ejecutar estos comandos en ese servidor.

$ sudo sh -c 'echo "* hard nofile 64000" >> /etc/security/limits.conf'
$ sudo sh -c 'echo "* soft nofile 64000" >> /etc/security/limits.conf'
$ sudo sh -c 'echo "root hard nofile 64000" >> /etc/security/limits.conf'
$ sudo sh -c 'echo "root soft nofile 64000" >> /etc/security/limits.conf'

Paso 4 – Acceder y configurar Pritunl

Puedes iniciar Pritunl introduciendo http://<serverIP>/ en tu navegador. Los navegadores actuales intentan acceder a la versión HTTPS de cada sitio, por lo que tendrás que evitar el error de Privacidad que lanza el navegador.

Obtendrás la siguiente pantalla cuando lances la URL por primera vez.

Pantalla de configuración de la base de datos Pritunl

Obtendrá el URI de MongoDB automáticamente. Para la clave de configuración, ejecuta el siguiente comando.

$ sudo pritunl setup-key
eacbd641982048fd9a60cdf09f7ebaa3

Introduce la clave generada en el sitio web y pulsa el botón Guardar. Se actualizará la base de datos y se abrirá la pantalla de inicio de sesión.

Pantalla de inicio de sesión de Pritunl

Ejecuta el siguiente comando para generar la información de inicio de sesión por defecto.

$ sudo pritunl default-password
[undefined][2021-11-08 22:34:55,255][INFO] Getting default administrator password
Administrator default password:
  username: "pritunl"
  password: "krZQLlH9U7P1"

Introduce los datos de acceso e inicia sesión. Aparecerá la siguiente pantalla de configuración.

Pantalla de configuración inicial de Pritunl

Introduce una contraseña segura para sustituir a la predeterminada. Introduce un dominio en el campo Encriptar dominio. Pritunl generará y configurará automáticamente un certificado SSL para el dominio.

Ahora puedes iniciar el servidor utilizando el nombre de dominio escribiendo https://pritunl.example.com en tu navegador.

Paso 5 – Añadir una Organización, un Servidor y Usuarios

El siguiente paso es añadir una Organización para tu VPN. Haz clic en la pestaña Usuarios y en el botón Añadir Organización.

TAB de Usuarios de Pritunl

Organización Pritunl Add

Haz clic en el botón Añadir para continuar.

El siguiente paso es añadir un usuario. Hay dos opciones. Puedes añadir usuarios uno a uno o añadirlos en bloque. De momento vamos a añadir un único usuario. Pulsa el botón Añadir usuario.

Pritunl Añadir usuario

El campo PIN es opcional y se utiliza si vas a utilizar la autenticación de Dos Factores. El PIN se compone sólo de números.

Una vez configurados la organización y los usuarios, ve a la pestaña Servidores y pulsa el botón Añadir servidor.

Pritunl Añadir servidor

Puerto: Puedes añadir cualquier puerto que vaya a utilizar el servidor. Asegúrate de que el puerto que has especificado está abierto a todo el tráfico entrante en el Grupo de Seguridad.

DNS: Puedes añadir Google DNS u OpenDNS.

Red Virtual: Puedes añadir una IP privada en este campo, pero asegúrate de que ningún otro recurso la utiliza. A los clientes se les asignarán direcciones IP de este rango.

Red Virtual WG: Direcciones de red de WireGuard para la red privada que se asignará a los clientes de WireGuard. Debe tener el mismo Bloque CIDR que la Red Virtual.

Activar WireGuard: Si está marcada, utilizará WireGuard en lugar de OpenVPN. Sin embargo, utilizaremos OpenVPN para nuestro tutorial, así que déjalo sin marcar.

Puerto WG: Este puerto se utilizará para las conexiones WireGuard. Sólo se utilizará cuando hayamos activado la opción WireGuard.

Habilitar Google Authenticator: Para utilizar la verificación en dos pasos, activa esta opción. Si esta opción está activada en el servidor, todos los clientes bajo ese servidor, necesitarán verificar la OTP antes de conectarse a la VPN cada vez.

Activar IPv6: Activa los servidores DNS IPv6. Los clientes reciben direcciones IPv6 privadas.

Haz clic en el botón Añadir para terminar.

Haz clic en el botón Añadir Organización para vincular la organización con el servidor recién creado.

Adjuntar organización

Pulsa el botón Iniciar servidor para iniciar la VPN.

Servidor de Inicio Pritunl

Habilitar puerto en el cortafuegos

Para aceptar las conexiones del cliente a través del puerto VPN, necesitamos habilitarlo a través de nuestro cortafuegos.

$ sudo firewall-cmd --permanent --add-port=18412/udp
$ sudo firewall-cmd --reload

Paso 6 – Instalar el Cliente Pritunl

Ahora que nuestro servidor está en funcionamiento, es hora de instalar un cliente y conectarse a la VPN. Pritunl ofrece dos tipos de clientes: un cliente de línea de comandos y un cliente GUI.

Para nuestro tutorial, utilizaremos el cliente de línea de comandos. Sólo puedes instalar un tipo de cliente en un sistema.

Instala el repositorio EPEL que necesita el cliente Pritunl.

$ sudo dnf install epel-release

Añade el repositorio oficial de Pritunl a tu sistema Rocky Linux.

$ sudo tee -a /etc/yum.repos.d/pritunl.repo << EOF
[pritunl]
name=Pritunl Stable Repository
baseurl=https://repo.pritunl.com/stable/yum/centos/8/
gpgcheck=1
enabled=1
EOF

Añade e importa las claves GPG.

$ gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 7568D9BB55FF9E5287D586017AE645C0CF8E292A
$ gpg --armor --export 7568D9BB55FF9E5287D586017AE645C0CF8E292A > key.tmp; sudo rpm --import key.tmp; rm -f key.tmp

Instala el cliente de línea de comandos.

$ sudo dnf install pritunl-client

Paso 7 – Conexión del cliente al servidor

Desde la pestaña de usuarios del sitio del servidor Pritunl, obtén el enlace temporal del perfil para conectarte al cliente.

Pritunl Obtener botón de enlace de perfil

Copia el enlace URI temporal de la última entrada.

Pritunl Copia temporal del enlace del perfil

Introduce el siguiente comando en el terminal del cliente para añadir el perfil.

$ pritunl-client add pritunl://example.com/ku/2hd6S6Ug

Asegúrate de añadir el enlace del perfil copiado anteriormente después de add en el comando.

Comprueba la lista de los perfiles añadidos.

$ pritunl-client list
+----------------------------------+-------------------------+--------------+----------------+----------------+
|                ID                |          NAME           |  ONLINE FOR  | SERVER ADDRESS | CLIENT ADDRESS |
+----------------------------------+-------------------------+--------------+----------------+----------------+
| wkinhnnjyz3ybektjbavy8qpecafqp1e | hforgeuser (howtoforge) | Disconnected | -              | -              |
+----------------------------------+-------------------------+--------------+----------------+----------------+

Ejecuta el siguiente comando para conectarte al perfil. No es necesario que utilices el ID completo del perfil en el comando. Utiliza sólo las 3 primeras letras del ID del perfil para referirte a él.

$ pritunl-client start wki --mode=ovpn --password=PINOTP
  • Para especificar el modo OPVN, añade la bandera --mode=ovpn en el comando.
  • Si has activado la opción Google Authenticator, tienes que configurarlo utilizando un cliente Google Authenticator o Authy.
  • Para especificar el pin y el código de autenticación de dos factores, utiliza la bandera --password=PINOTP en el comando. Por ejemplo, si el pin es 54321 y el código OTP es 456789, entonces utiliza la bandera --password=54321456789 en el comando anterior. Si sólo utilizas el PIN, entonces utiliza la bandera --password=PIN.

Ejecuta de nuevo el comando list para comprobar si la conexión funciona.

$ pritunl-client list
+----------------------------------+-------------------------+------------+----------------+----------------+
|                ID                |          NAME           | ONLINE FOR | SERVER ADDRESS | CLIENT ADDRESS |
+----------------------------------+-------------------------+------------+----------------+----------------+
| wkinhnnjyz3ybektjbavy8qpecafqp1e | hforgeuser (howtoforge) | 6 secs     | 178.62.233.196 | 192.168.238.2  |
+----------------------------------+-------------------------+------------+----------------+----------------+

Has realizado correctamente la conexión a la VPN de Pritunl.

Línea de comandos de Pritunl

El servidor Pritunl viene con una herramienta de línea de comandos que puedes utilizar para realizar algunas operaciones básicas.

Reparar base de datos

Puedes utilizar Pritunl para reparar la base de datos y permitir la recuperación de una base de datos corrupta o incoherente.

Primero, detén el servidor Pritunl.

$ sudo systemctl stop pritunl

Repara la base de datos.

$ sudo pritunl repair-database

Reinicia el servicio Pritunl.

$ sudo systemctl start pritunl

El comando repair-database borrará todos los registros, restablecerá todas las direcciones IP virtuales estáticas de usuario y pondrá todos los servidores en estado detenido.

Restablecer credenciales

El siguiente comando restablecerá el nombre de usuario y la contraseña del administrador a pritunl. También eliminará cualquier configuración de inicio de sesión único y autenticación en dos pasos para el usuario administrador, si está activada.

$ sudo pritunl reset-password

Cambiar el Puerto de la Consola Web

Por defecto, Pritunl se ejecuta en el puerto 443. Si quieres cambiarlo, utiliza el siguiente comando.

$ sudo pritunl set app.server_port 8443

Pritunl ejecuta un servidor web en el puerto 80 para la verificación Let’s Encrypt y redirige las peticiones HTTP a HTTPS. Puedes desactivar la redirección utilizando el siguiente comando. Esto también impedirá el uso de certificados Let’s Encrypt.

$ sudo pritunl set app.redirect_server false

Conclusión

Con esto concluye nuestro tutorial sobre la configuración y el uso del servidor VPN Pritunl en un servidor Rocky Linux 8. Si quieres saber más sobre Pritunl, puedes seguir su documentación oficial. Si tienes alguna pregunta, publícala en los comentarios a continuación.

También te podría gustar...