Crear tu propia VPN sin logs

Bienvenidos a este tutorial sobre como montar nuestra propia VPN sin logs mediante la configuración de un servidor OpenVPN en una máquina en la nube.

Antes de empezar con el tutorial, deberemos de crear una máquina en la nube, yo he usado el VPS de DigitalOcean en el cual tengo una máquina Ubuntu 20.04 por 5$ al mes, puedes usar el siguiente enlace para obtener 100$ gratis.


Crear una máquina en la nube

Como he comentado al principio, he elegido DigitalOcean como VPS, pero existen otros como Linode, Azure o AWS. Para crear una máquina Ubuntu 20.04 deberemos de ir a la parte superior derecha de nuestro panel y seleccionar Create -> Droplets.

Creación de máquina en la nube

Elegiremos la siguiente imagen con el plan más económico (Ubuntu 20.04 por 5$ al mes, recuerda que tienes 100$ gratis si usas mi enlace). También podremos elegir la ubicación de nuestro servidor, que en mi caso usaré Frankfurt (Alemania) y crear unas credenciales para el usuario root.

Configuración de imagen y plan

Generar claves SSH

En el paso anterior, creamos una contraseña para el usuario root, pero el uso de contraseñas sin cifrar para iniciar sesión en nuestra máquina no es muy buena idea ya que estas pueden quedar expuestas en la red al no estar cifradas. Por lo tanto, generaremos unas claves para que solo las máquinas que disponga de ellas (y la contraseña) puedan iniciar sesión.

Podemos generar las claves de la siguiente manera:

En Windows (con PowerShell):

PS C:\> Add-WindowsCapability -Online -Name OpenSSH.Client*

En Linux y Mac

ssh-keygen -t rsa -b 4096
Generación de claves SSH en Linux

Iniciar sesión en el servidor y actualizar

Iniciamos sesión en nuestro servidor, recuerda que puedes ver la IP de tu máquina en el panel principal de DigitalOcean.

Panel principal en DigitalOcean
ssh root@[IP]

Escriba la contraseña que especificó a la hora de crear la máquina y ejecute los comandos de actualización.

apt-get update && apt-get upgrade

Crear un usuario

Si bien el usuario root nos permite realizar cualquier acción sobre la máquina, no es recomendable que esté habilitado para SSH, por lo tanto, crearemos un usuario con permisos para el uso de sudo y bash como shell predeterminado.

useradd -G sudo -m jolmedo -s /bin/bash

Después crearemos una contraseña.

passwd jolmedo

Copiar las claves SSH al servidor

En este paso, vamos a copiar las claves SSH generadas del paso anterior a nuestra máquina en la nube.

En Windows (con PowerShell):

type $env:USERPROFILE\.ssh\id_rsa.pub | ssh IP "cat >> .ssh/authorized_keys"

En Linux y Mac:

ssh-copy-id jolmedo@[IP]

Deshabilitar autenticación por contraseña y configuración de seguridad para SSH

Una vez tenemos las claves SSH en el servidor, procederemos a deshabilitar la autenticación por contraseña y a habilitar la autenticación por clave pública. Editamos el archivo sshd

nano /etc/ssh/sshd_config

Antes de nada, vamos a cambiar el puerto por defecto de SSH, puedes usar cualquier puerto (yo usaré el 22022), esto ayudará a que los escáneres no puedan intentar iniciar sesión en nuestro servidor con credenciales por defecto.

# Port 22
Port 22022

Deshabilitamos autenticación por contraseña (solo se podrá iniciar sesión con clave pública).

PasswordAuthentication no

Deshabilitamos el inicio de sesión con root.

PermitRootLogin no

Por último, reiniciamos SSH para aplicar cambios.

systemctl restart sshd

Configuración de OpenVPN

Aquí viene el plato fuerte del tutorial, configurar OpenVPN puede llevarnos algún tiempo (instalación de paquetes, generar las claves, configurar IPTables, generar archivos de configuración, etc), pero gracias al trabajo de un usuario de GitHub, podremos hacerlo de una manera muy sencilla.

En primer lugar, descarga el repositorio.

git clone https://github.com/Nyr/openvpn-install.git

Nos posicionamos en el directorio.

cd openvpn-install/

Ejecutamos el script.

sudo bash openvpn-install.sh

NOTA: Siempre que descargue cualquier script, asegúrate que no haya nada sospechoso en él.

Una vez ejecutado, tan solo deberemos de responder a unas pocas preguntas.

Ejecución de script de instalación de OpenVPN

Si os habéis fijado en la captura anterior, he cambiado el puerto por defecto de OpenVPN al 443, esto es debido a que algunas redes pueden bloquear dicho puerto. He decidido usar 443 (el mismo que HTTPS) y os preguntareis que esto puede dar algún problema pero, mientras HTTPS usa TCP, OpenVPN usa UDP, por lo tanto, no habrá ningún conflicto entre ellos.

Después de contestar a las preguntas, el proceso de instalación comenzará. Cuando termine, podremos ver nuestro archivo de configuración .ovpn en la carpeta raíz del usuario root, vamos a moverlo a la carpeta del usuario jolmedo y a asignarlo como propietario.

sudo mv /root/hackpuntes-vps.ovpn ~
sudo chown jolmedo hackpuntes-vps.ovpn

Deshabilitar registros en nuestra VPN

Con todo ya preparado, solo nos queda hacer una cosa muy importante en la parte del servidor, y es deshabilitar los registros, para ello, vamos a modificar el siguiente archivo.

sudo nano /etc/openvpn/server/server.conf

Buscamos la línea verb 3 y lo cambiamos a verb 0. Ahora reiniciamos OpenVPN.

systemctl restart openvpn-server@server.service

Ahora ya tenemos una VPN que realmente no mantiene los registros.

Probar la VPN

Descargamos el fichero hackpuntes-vps.ovpn a nuestra máquina local y creamos una nueva conexión VPN.

Creación de VPN en Kali Linux

Elegimos Import a saved VPN configuration…

Importación de fichero ovpn

Seleccionamos el fichero hackpuntes-vps.ovpn

Selección de fichero ovpn

Y veremos algo similar a lo siguiente:

Configuración de VPN con fichero ovpn

Guardamos los cambios y ya tenemos nuestra VPN totalmente funcional y sin registro de logs.

Activación de VPN
Mensaje de confirmación de conexión VPN

Podemos hacer uso de WHOER para conocer información y confirmar el uso de nuestra VPN.

Uso del servicio WHOER

Muchas gracias por seguir el tutorial, compártelo si te fue útil y no dudes en preguntar en los comentarios si necesitas ayuda.

Deja tu comentario

Ir arriba