Servicio VPN gratuito Wireguard en AWS

¿Para qué?

Con el aumento de la censura en Internet por parte de regímenes autoritarios, se bloquea un número creciente de recursos y sitios web útiles, incluyendo información técnica.
De este modo, se vuelve imposible disfrutar plenamente de Internet y se violenta el derecho fundamental a la libertad de expresión, consagrado en la Declaración Universal de los Derechos Humanos.

Artículo 19
Toda persona tiene derecho a la libertad de pensamiento y a la libre expresión; este derecho incluye la libertad de mantener sus opiniones sin interferencia y la libertad de buscar, recibir y difundir información e ideas por cualquier medio y sin consideración de fronteras.

En esta guía, en 6 etapas, desplegaremos nuestro propio servicio de VPN basado en tecnología Wireguard, en una infraestructura en la nube Amazon Web Services (AWS), utilizando una cuenta gratuita (por 12 meses), en una instancia (máquina virtual) con sistema operativo Ubuntu Server 18.04 LTS.
He intentado hacer esta guía paso a paso lo más amigable posible para personas ajenas a la TI. Lo único que se requiere es paciencia para repetir los pasos descritos a continuación.

Nota

Etapas

  1. Registro de una cuenta gratuita de AWS
  2. Creación de una instancia AWS
  3. Conexión a la instancia AWS
  4. Configuración de Wireguard
  5. Configuración de clientes VPN
  6. Verificación de la correcta instalación de VPN

Enlaces útiles

1. Registro de la cuenta AWS

Para registrar una cuenta gratuita de AWS se requiere un número de teléfono real y una tarjeta de crédito Visa o Mastercard capaz de hacer pagos. Recomiendo utilizar tarjetas virtuales que ofrece gratuitamente Yandex.Money o Billetera Qiwi. Para verificar la validez de la tarjeta, se descuenta 1$ al registrarse, que posteriormente se devuelve.

1.1. Abrir la consola de gestión de AWS

Es necesario abrir un navegador y acceder a la dirección: https://aws.amazon.com/ru/
Haga clic en el botón 'Registro'

Servicio VPN gratuito Wireguard en AWS

1.2. Rellenar datos personales

Completar los datos y hacer clic en el botón 'Continuar'

Servicio VPN gratuito Wireguard en AWS

1.3. Rellenar datos de contacto

Completar la información de contacto.

Servicio VPN gratuito Wireguard en AWS

1.4. Proporcionar información de pago.

Número de tarjeta, fecha de vencimiento y nombre del titular.

Servicio VPN gratuito Wireguard en AWS

1.5. Confirmación de la cuenta

En esta etapa se confirma el número de teléfono y se cobra 1$ de la tarjeta de pago. Se muestra un código de 4 dígitos en la pantalla del ordenador y se recibe una llamada de Amazon al número indicado. Durante la llamada, es necesario ingresar el código que se muestra en la pantalla.

Servicio VPN gratuito Wireguard en AWS

1.6. Selección del plan tarifario.

Seleccionamos: Plan Básico (gratuito)

Servicio VPN gratuito Wireguard en AWS

1.7. Acceso al panel de control

Servicio VPN gratuito Wireguard en AWS

1.8. Selección de la ubicación del centro de datos

Servicio VPN gratuito Wireguard en AWS

1.8.1. Pruebas de velocidad

Antes de elegir el centro de datos, se recomienda realizar una prueba a través de https://speedtest.net la velocidad de acceso a los centros de datos más cercanos; en mi ubicación, estos son los resultados:

  • Singapur
    Servicio VPN gratuito Wireguard en AWS
  • París
    Servicio VPN gratuito Wireguard en AWS
  • Fráncfort
    Servicio VPN gratuito Wireguard en AWS
  • Estocolmo
    Servicio VPN gratuito Wireguard en AWS
  • Londres
    Servicio VPN gratuito Wireguard en AWS

El centro de datos en Londres muestra los mejores resultados de velocidad. Por eso lo elegí para la configuración posterior.

2. Creación de una instancia de AWS

2.1 Creación de una máquina virtual

2.1.1. Selección del tipo de instancia

Por defecto, se selecciona la instancia t2.micro, que es la que necesitamos, simplemente pulsamos el botón Siguiente: Configurar detalles de la instancia

Servicio VPN gratuito Wireguard en AWS

2.1.2. Configuración de los parámetros de la instancia

Más adelante conectaremos una IP pública estática a nuestra instancia, por lo que en esta etapa desactivamos la asignación automática de IP pública y pulsamos el botón Siguiente: Añadir almacenamiento

Servicio VPN gratuito Wireguard en AWS

2.1.3. Conexión del almacenamiento

Especificamos el tamaño del «disco duro». Para nuestros fines, son suficientes 16 gigabytes, y pulsamos el botón Siguiente: Añadir etiquetas

Servicio VPN gratuito Wireguard en AWS

2.1.4. Configuración de etiquetas

Si estuviéramos creando varias instancias, podríamos agruparlas por etiquetas para facilitar la administración. En este caso, esta funcionalidad es innecesaria, así que hacemos clic directamente en el botón Siguiente: Configurar grupo de seguridad

Servicio VPN gratuito Wireguard en AWS

2.1.5. Apertura de puertos

En esta etapa configuramos el cortafuegos abriendo los puertos necesarios. El conjunto de puertos abiertos se llama «Grupo de Seguridad». Debemos crear un nuevo grupo de seguridad, darle un nombre, descripción, añadir el puerto UDP (Regla UDP personalizada), en el campo Rango de puertos debemos asignar un número de puerto del rango de puertos dinámicos 49152—65535. En este caso, elegí el número de puerto 54321.

Servicio VPN gratuito Wireguard en AWS

Después de rellenar los datos necesarios, pulsamos el botón Revisar y lanzar

2.1.6. Revisión de todas las configuraciones

En esta página se realiza una revisión de todas las configuraciones de nuestra instancia, verificamos si todo está en orden y pulsamos el botón Lanzar

Servicio VPN gratuito Wireguard en AWS

2.1.7. Creación de claves de acceso

A continuación, aparecerá un cuadro de diálogo que ofrece crear o añadir una clave SSH existente, que utilizaremos para conectarnos de forma remota a nuestra instancia. Elegimos la opción «Crear un nuevo par de claves» para generar una nueva clave. Asignamos un nombre y presionamos el botón Descargar par de claves, para descargar las claves creadas. Guárdelas en un lugar seguro en el disco de su computadora local. Después de descargarlas, presione el botón Iniciar instancias

Servicio VPN gratuito Wireguard en AWS

2.1.7.1. Guardado de claves de acceso

Aquí se muestra la etapa de guardado de las claves creadas en el paso anterior. Después de hacer clic en el botón Descargar par de claves, la clave se guarda como un archivo de certificado con la extensión *.pem. En este caso, le he asignado el nombre wireguard-awskey.pem

Servicio VPN gratuito Wireguard en AWS

2.1.8. Revisión de los resultados de creación de la instancia

A continuación, vemos un mensaje que indica el lanzamiento exitoso de nuestra instancia recién creada. Podemos ir a la lista de nuestras instancias presionando el botón Ver instancias

Servicio VPN gratuito Wireguard en AWS

2.2. Creación de una dirección IP externa

2.2.1. Inicio de la creación de una IP externa

A continuación, necesitamos crear una dirección IP externa permanente, a través de la cual nos conectaremos a nuestro servidor VPN. Para ello, en el panel de navegación en el lado izquierdo de la pantalla, seleccionamos la opción IPs elásticas de la categoría RED Y SEGURIDAD y presionamos el botón Asignar nueva dirección

Servicio VPN gratuito Wireguard en AWS

2.2.2. Configuración de la creación de IP externa

En el siguiente paso, necesitamos que esté habilitada la opción Amazon pool (habilitada por defecto), y hacemos clic en el botón Asignar

Servicio VPN gratuito Wireguard en AWS

2.2.3. Revisión de los resultados de creación de la dirección IP externa

En la siguiente pantalla, se mostrará la dirección IP externa que hemos recibido. Se recomienda memorizarla, o mejor aún, anotarla. La necesitaremos en el proceso de configuración y uso del servidor VPN. En esta guía, utilizo como ejemplo la dirección IP 4.3.2.1. Una vez anotada la dirección, presionamos el botón Cerrar

Servicio VPN gratuito Wireguard en AWS

2.2.4. Lista de direcciones IP externas

A continuación, se nos muestra la lista de nuestras direcciones IP públicas permanentes (IPs elásticas).

Servicio VPN gratuito Wireguard en AWS

2.2.5. Asignación de IP externa a la instancia

En esta lista, seleccionamos la dirección IP que hemos recibido, y hacemos clic derecho para abrir el menú desplegable. En él elegimos la opción Asociar dirección, para asignarla a la instancia que hemos creado anteriormente.

Servicio VPN gratuito Wireguard en AWS

2.2.6. Configuración de la asignación de IP externa

En el siguiente paso, seleccionamos nuestra instancia del menú desplegable y presionamos el botón Asociar

Servicio VPN gratuito Wireguard en AWS

2.2.7. Resumen de los resultados de la asignación de IP externa

Después de esto, podemos ver que nuestra instancia está vinculada a nuestra dirección IP pública permanente y su dirección IP privada.

Servicio VPN gratuito Wireguard en AWS

Ahora podemos conectarnos a nuestra nueva instancia desde afuera, desde nuestra computadora a través de SSH.

3. Conexión a la instancia de AWS

SSH — es un protocolo seguro para la gestión remota de dispositivos informáticos.

3.1. Conexión por SSH desde una computadora con Windows

Para conectarse desde una computadora con Windows, primero debe descargar e instalar el programa Putty.

3.1.1. Importar clave privada para Putty

3.1.1.1. Después de instalar Putty, debe iniciar la utilidad PuTTYgen que viene con él para importar la clave del certificado en formato PEM a un formato adecuado para su uso en el programa Putty. Para esto, en el menú superior seleccionamos la opción Conversions->Import Key

Servicio VPN gratuito Wireguard en AWS

3.1.1.2. Selección de la clave de AWS en formato PEM

A continuación, elegimos la clave que guardamos anteriormente en el paso 2.1.7.1, en nuestro caso su nombre es wireguard-awskey.pem

Servicio VPN gratuito Wireguard en AWS

3.1.1.3. Establecer los parámetros de importación de la clave

En este paso, debemos especificar un comentario para esta clave (una descripción) y establecer una contraseña para mayor seguridad y su confirmación. Se solicitará en cada conexión. Así protegemos la clave con una contraseña contra su uso no autorizado. No es necesario establecer una contraseña, pero es menos seguro si la clave cae en manos incorrectas. Luego hacemos clic en el botón Save private key

Servicio VPN gratuito Wireguard en AWS

3.1.1.4. Guardar la clave importada

Se abre un cuadro de diálogo para guardar el archivo, y guardamos nuestra clave privada como un archivo con la extensión .ppk, adecuada para su uso en el programa Putty.
Escribimos el nombre de la clave (en nuestro caso es wireguard-awskey.ppk) y hacemos clic en el botón Guardar.

Servicio VPN gratuito Wireguard en AWS

3.1.2. Creación y configuración de la conexión en Putty

3.1.2.1. Creación de la conexión

Abrimos el programa Putty, seleccionamos la categoría Session (está abierta por defecto) y en el campo Host Name introducimos la dirección IP pública de nuestro servidor, que obtuvimos en el paso 2.2.3. En el campo Saved Session introducimos un nombre arbitrario para nuestra conexión (en mi caso wireguard-aws-london), y luego hacemos clic en el botón Guardar para guardar los cambios que realizamos.

Servicio VPN gratuito Wireguard en AWS

3.1.2.2. Configuración del inicio de sesión automático del usuario

Luego, en la categoría Connection, seleccionamos la subcategoría Data y en el campo Auto-login username escribimos el nombre de usuario ubuntu — este es el usuario estándar de la instancia en AWS con Ubuntu.

Servicio VPN gratuito Wireguard en AWS

3.1.2.3. Selección de la clave privada para la conexión por SSH

Luego vamos a la subcategoría Conexión/SSH/Autenticación y al lado del campo Archivo de clave privada para la autenticación hacemos clic en el botón Examinar… para seleccionar el archivo con el certificado de la clave.

Servicio VPN gratuito Wireguard en AWS

3.1.2.4. Apertura de la clave importada

Indicamos la clave que importamos anteriormente en la etapa 3.1.1.4, en nuestro caso es el archivo wireguard-awskey.ppk, y hacemos clic en el botón Abrir.

Servicio VPN gratuito Wireguard en AWS

3.1.2.5. Guardar configuraciones y comenzar la conexión

Regresando a la página de la categoría Session hacemos clic nuevamente en el botón Guardar, para guardar los cambios que realizamos anteriormente en los pasos (3.1.2.2 — 3.1.2.4). Luego hacemos clic en el botón Abrir para abrir la conexión remota que creamos y configuramos a través de SSH.

Servicio VPN gratuito Wireguard en AWS

3.1.2.7. Configuración de confianza entre hosts

En el siguiente paso, al intentar conectarnos por primera vez, se nos muestra una advertencia, indicando que no hay confianza configurada entre las dos computadoras, y pregunta si queremos confiar en el equipo remoto. Haremos clic en el botón Sí, agregándolo así a la lista de hosts de confianza.

Servicio VPN gratuito Wireguard en AWS

3.1.2.8. Introducción de la contraseña para acceder a la clave

Después de esto, se abre una ventana de terminal que solicita la contraseña de la clave, si la estableciste anteriormente en el paso 3.1.1.3. Al introducir la contraseña, no ocurrirá ninguna acción en la pantalla. Si te equivocaste, puedes usar la tecla Retroceso.

Servicio VPN gratuito Wireguard en AWS

3.1.2.9. Mensaje de bienvenida sobre la conexión exitosa

Después de introducir correctamente la contraseña, se nos muestra en la terminal un texto de bienvenida, que indica que el sistema remoto está listo para ejecutar nuestros comandos.

Servicio VPN gratuito Wireguard en AWS

4. Configuración del servidor Wireguard

Puedes ver la guía más actualizada para instalar y utilizar Wireguard mediante los scripts descritos a continuación en el repositorio: https://github.com/isystem-io/wireguard-aws

4.1. Instalación de Wireguard

En la terminal, introducimos los siguientes comandos (puedes copiarlos al portapapeles y pegarlos en la terminal haciendo clic derecho):

4.1.1. Clonación del repositorio

Clonamos el repositorio con los scripts de instalación de Wireguard

git clone https://github.com/pprometey/wireguard_aws.git wireguard_aws

4.1.2. Acceso al directorio de los scripts

Entramos en el directorio del repositorio clonado

cd wireguard_aws

4.1.3 Ejecución del script de inicialización

Ejecutamos el script de instalación de Wireguard como administrador (usuario root)

sudo ./initial.sh

Durante la instalación, se solicitarán ciertos datos necesarios para la configuración de Wireguard

4.1.3.1. Introducción del punto de conexión

Introduce la dirección IP externa y el puerto abierto del servidor Wireguard. La dirección IP externa del servidor la obtuvimos en el paso 2.2.3, y el puerto lo abrimos en el paso 2.1.5. Indícalos juntos, separándolos con dos puntos, por ejemplo 4.3.2.1:54321, y después presiona la tecla Enter
Ejemplo de salida:

Introduce el endpoint (ip externa y puerto) en el formato [ipv4:puerto] (por ejemplo, 4.3.2.1:54321): 4.3.2.1:54321

4.1.3.2. Introducir la dirección IP interna

Introduce la dirección IP del servidor Wireguard en la subred VPN protegida; si no sabes qué es eso, simplemente presiona la tecla Enter para establecer el valor predeterminado (10.50.0.1)
Ejemplo de salida:

Introduce la dirección del servidor en la subred VPN (formato CIDR) ([ENTER] para establecer el valor predeterminado: 10.50.0.1):

4.1.3.3. Especificar el servidor DNS

Introduce la dirección IP del servidor DNS, o simplemente presiona la tecla Enter para establecer el valor predeterminado 1.1.1.1 (DNS público de Cloudflare)
Ejemplo de salida:

Introduce la dirección IP del servidor DNS (formato CIDR) ([ENTER] para establecer el valor predeterminado: 1.1.1.1):

4.1.3.4. Especificar la interfaz WAN

A continuación, es necesario introducir el nombre de la interfaz de red externa que escuchará en la interfaz de red interna de la VPN. Simplemente presiona Enter para establecer el valor predeterminado para AWS (eth0)
Ejemplo de salida:

Introduce el nombre de la interfaz de red WAN ([ENTER] para establecer el valor predeterminado: eth0):

4.1.3.5. Especificar el nombre del cliente

Introduce el nombre del usuario de la VPN. El servidor VPN Wireguard no podrá iniciarse hasta que se agregue al menos un cliente. En este caso, ingresé el nombre Alex@mobile
Ejemplo de salida:

Introduce el nombre de usuario de la VPN: Alex@mobile

Después de esto, debería aparecer en la pantalla un código QR con la configuración del cliente recién agregado, que debe ser escaneado con el cliente móvil Wireguard en Android o iOS para su configuración. Además, debajo del código QR se mostrará el texto del archivo de configuración en caso de configuración manual de clientes. Cómo hacerlo se explicará más adelante.

Servicio VPN gratuito Wireguard en AWS

4.2. Agregar un nuevo usuario VPN

Para agregar un nuevo usuario, es necesario ejecutar el script en la terminal add-client.sh

sudo ./add-client.sh

El script solicita el nombre de usuario:
Ejemplo de salida:

Introduce el nombre de usuario de la VPN: 

Además, el nombre del usuario puede ser pasado como parámetro al script (en este caso Alex@mobile):

sudo ./add-client.sh Alex@mobile

Como resultado de la ejecución del script, en el directorio con el nombre del cliente en la ruta /etc/wireguard/clients/{ИмяКлиента} se creará un archivo con la configuración del cliente /etc/wireguard/clients/{ИмяКлиента}/{ИмяКлиента}.conf, y en la pantalla de la terminal aparecerá un código QR para configurar los clientes móviles y el contenido del archivo de configuración.

4.2.1. Archivo de configuración del usuario

Para mostrar en pantalla el contenido del archivo .conf, para la configuración manual del cliente, se puede utilizar el comando cat

sudo cat /etc/wireguard/clients/Alex@mobile/Alex@mobile.conf

resultado de la ejecución:

[Interface]
PrivateKey = oDMWr0toPVCvgKt5oncLLRfHRit+jbzT5cshNUi8zlM=
Address = 10.50.0.2/32
DNS = 1.1.1.1

[Peer]
PublicKey = mLnd+mul15U0EP6jCH5MRhIAjsfKYuIU/j5ml8Z2SEk=
PresharedKey = wjXdcf8CG29Scmnl5D97N46PhVn1jecioaXjdvrEkAc=
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = 4.3.2.1:54321

Descripción del archivo de configuración del cliente:

[Interface]
PrivateKey = Clave privada del cliente
Address = Dirección IP del cliente
DNS = DNS utilizado por el cliente

[Peer]
PublicKey = Clave pública del servidor
PresharedKey = Clave compartida entre el servidor y el cliente
AllowedIPs = Direcciones permitidas para la conexión (todas - 0.0.0.0/0, ::/0)
Endpoint = Dirección IP y puerto para la conexión

4.2.2. Código QR de configuración del cliente

Para mostrar en la terminal el código QR de configuración del cliente previamente creado, se puede usar el comando qrencode -t ansiutf8 (en este ejemplo se utiliza un cliente llamado Alex@mobile):

sudo cat /etc/wireguard/clients/Alex@mobile/Alex@mobile.conf | qrencode -t ansiutf8

5. Configuración de clientes VPN

5.1. Configuración del cliente móvil Android

El cliente oficial de Wireguard para Android se puede instalar desde la tienda oficial Google Play

Después de lo cual, es necesario importar la configuración escaneando el código QR con la configuración del cliente (ver punto 4.2.2) y darle un nombre:

Servicio VPN gratuito Wireguard en AWS

Después de importar la configuración con éxito, se puede activar el túnel VPN. La conexión exitosa se mostrará con el icono de candado en la barra de sistema de Android.

Servicio VPN gratuito Wireguard en AWS

5.2. Configuración del cliente Windows

Primero es necesario descargar e instalar el programa TunSafe para Windows — es un cliente de Wireguard para Windows.

5.2.1. Creación del archivo de configuración para la importación

Hacemos clic derecho para crear un archivo de texto en el escritorio.

Servicio VPN gratuito Wireguard en AWS

5.2.2. Copia del contenido del archivo de configuración del servidor

Luego regresamos a la terminal Putty y mostramos el contenido del archivo de configuración del usuario requerido, como se describió en el paso 4.2.1.
A continuación, seleccionamos con el botón derecho del ratón el texto de configuración en la terminal Putty, al finalizar la selección se copiará automáticamente en el portapapeles.

Servicio VPN gratuito Wireguard en AWS

5.2.3. Copia de la configuración en el archivo de configuración local

Después de esto, regresamos al archivo de texto que creamos anteriormente en el escritorio y pegamos en él el texto de la configuración desde el portapapeles.

Servicio VPN gratuito Wireguard en AWS

5.2.4. Guardando el archivo de configuración local

Guardamos el archivo con la extensión .conf (en este caso con el nombre london.conf)

Servicio VPN gratuito Wireguard en AWS

5.2.5. Importación del archivo de configuración local

A continuación, es necesario importar el archivo de configuración en el programa TunSafe.

Servicio VPN gratuito Wireguard en AWS

5.2.6. Estableciendo la conexión VPN

Seleccione este archivo de configuración y conéctese haciendo clic en el botón Conexión.
Servicio VPN gratuito Wireguard en AWS

6. Verificación del éxito de la conexión

Para verificar el éxito de la conexión a través del túnel VPN, debe abrir un navegador y visitar el sitio web https://2ip.ua/ru/

Servicio VPN gratuito Wireguard en AWS

La dirección IP mostrada debe coincidir con la que obtuvimos en la etapa 2.2.3.
Si es así, significa que el túnel VPN está funcionando correctamente.

Desde la terminal en Linux, se puede verificar su dirección IP ingresando el comando:

curl http://zx2c4.com/ip

O simplemente puede visitar un sitio web de contenido para adultos si se encuentra en Kazajistán.

Fuente: habr.com

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster