Servicio gratuito de Wireguard VPN en AWS

Para que?


Con la creciente censura de Internet por parte de regímenes autoritarios, se está bloqueando un número creciente de recursos y sitios de Internet útiles. Incluyendo información técnica.
Por lo tanto, se hace imposible usar Internet por completo y se está violando el derecho fundamental a la libertad de expresión consagrado en la Declaración Universal de Derechos Humanos .


Sección 19
Toda persona tiene derecho a la libertad de opinión y expresión; Este derecho incluye la libertad de adherirse libremente a las creencias personales y la libertad de buscar, recibir y difundir información e ideas por cualquier medio y sin importar las fronteras estatales.

En esta guía, en 6 pasos implementaremos nuestro propio servicio VPN gratuito * basado en la tecnología Wireguard , en la infraestructura de nube de Amazon Web Services (AWS), utilizando una cuenta gratuita (durante 12 meses), en una instancia (máquina virtual) que ejecute Ubuntu Server 18.04 LTS


Traté de hacer este tutorial lo más amigable posible para las personas que están lejos de TI. Lo único que se requiere es perseverancia para repetir los pasos que se describen a continuación.


Nota


Etapas


  1. Registro de cuenta gratuita de AWS
  2. Crear instancia de AWS
  3. Conectarse a una instancia de AWS
  4. Configurar Wireguard
  5. Configurar clientes VPN
  6. Verifique la instalación de VPN

Enlaces utiles



1. Registro de cuenta de AWS


Para registrar una cuenta de AWS gratuita, necesita un número de teléfono real y una tarjeta de crédito Visa o Mastercard pagadera. Recomiendo el uso de tarjetas virtuales que Yandex.Money o Qiwi wallet proporciona de forma gratuita. Para verificar la validez de la tarjeta, se deduce $ 1 durante el registro, que posteriormente se devuelve.


1.1. Abrir la consola de administración de AWS


Debe abrir un navegador e ir a: https://aws.amazon.com/en/
Haga clic en el botón "Registrarse"


Página de inicio de AWS Amazon


1.2. Rellenando datos personales


Complete los datos y haga clic en el botón "Continuar"


Registro de cuenta de Amazon AWS


1.3. Completar datos de contacto


Rellene los datos de contacto.


Información de contacto de la cuenta de Amazon AWS


1.4. Indicación de información de facturación.


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


Proporcione información de facturación al registrar una cuenta de Amazon AWS


1.5. Verificación de cuenta


En esta etapa, se confirma el número de teléfono y se cobra $ 1 directamente de la tarjeta de pago. Se muestra un código de 4 dígitos en la pantalla de la computadora y se recibe una llamada de Amazon en el teléfono especificado. Durante la llamada, debe marcar el código que se muestra en la pantalla.


Verificación de cuenta de Amazon AWS


1.6. Elección de un plan tarifario.


Elegir: plan básico (gratis)


Plan de elección de Amazon AWS


1.7. Inicie sesión en la consola de administración


Entrar a la consola de administración de Amazon AWS


1.8. Elegir una ubicación del centro de datos


AWS Amazon Management Console


1.8.1. Prueba de velocidad


Antes de elegir un centro de datos, se recomienda probar a través de https://speedtest.net la velocidad de acceso a los centros de datos más cercanos, en mi ubicación, los siguientes resultados:


  • Singapur
    Singapur
  • Paris
    Paris
  • Frankfurt
    Frankfurt
  • Estocolmo
    Estocolmo
  • Londres
    Londres

El centro de datos de Londres muestra los mejores resultados de velocidad. Por lo tanto, lo seleccioné para una mayor personalización.


2. Crear una instancia de AWS


2.1 Crear una máquina virtual (instancia)


2.1.0 Inicio del tutorial Crear instancia


2.1.0.1. Ir a la página de inicio de instancia


Ir a la página de inicio de instancia


2.1.0.2. Inicio del tutorial Crear instancia


Inicio del tutorial Crear instancia


2.1.0.3. Elegir un tipo de sistema operativo de instancia


Elegir el tipo de sistema operativo


2.1.1 Seleccionar tipo de instancia


Por defecto, la instancia t2.micro está seleccionada, la necesitamos, simplemente haga clic en el botón Siguiente: Configurar detalles de la instancia


Seleccionar tipo de instancia


2.1.2. Configurar parámetros de instancia


En el futuro, conectaremos una IP pública permanente a nuestra instancia, por lo que en esta etapa desactivaremos la asignación automática de IP pública y haremos clic en Siguiente: Agregar almacenamiento


Configurar parámetros de instancia


2.1.3. Conexión de almacenamiento


Especifique el tamaño del "disco duro". 16 gigabytes son suficientes para nuestros propósitos, y haga clic en el botón Siguiente: Agregar etiquetas


Conexión de almacenamiento


2.1.4. Personalización de etiqueta


Si creamos varias instancias, entonces podrían agruparse por etiquetas, para facilitar la administración. En este caso, esta funcionalidad es redundante, haga clic inmediatamente en el botón Siguiente: Configurar Security Gorup


Personalización de etiqueta


2.1.5. Apertura de puerto


En este punto, configuramos el firewall abriendo los puertos requeridos. El conjunto de puertos abiertos se llama Grupo de seguridad. Necesitamos crear un nuevo grupo de seguridad, darle un nombre, descripción, agregar un puerto UDP (Regla UDP personalizada), en el campo Rango de clasificación necesita asignar un número de puerto del rango dinámico de puertos 49152–65535. En este caso, elegí el número de puerto 54321.


Apertura de puerto


Después de completar los datos necesarios, haga clic en el botón Revisar e iniciar


2.1.6. Descripción general de todas las configuraciones de instancia


En esta página hay una descripción general de todas las configuraciones de nuestra instancia, verifique si todas las configuraciones están en orden y haga clic en el botón Iniciar


Descripción general de todas las configuraciones de instancia


2.1.7. Crear claves de paso


Luego viene un cuadro de diálogo que ofrece crear o agregar una clave SSH existente, con la que luego nos conectaremos de forma remota a nuestra instancia. Seleccionamos la opción "Crear un nuevo par de claves" para crear una nueva clave. Establezca su nombre y haga clic en el botón Descargar par de claves para descargar las claves creadas. Guárdelos en un lugar seguro en el disco de la computadora local. Una vez descargado, haga clic en el botón Iniciar instancias


Crear claves de paso


2.1.7.1. Guardando Passkeys


Aquí se muestra el paso de guardar las claves creadas del 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 di el nombre de wireguard-awskey.pem


Guardando Passkeys


2.1.8. Descripción general de los resultados de creación de instancias


A continuación, vemos un mensaje sobre el lanzamiento exitoso de la instancia que acabamos de crear. Podemos ir a la lista de nuestras instancias haciendo clic en el botón Ver instancias


Descripción general de los resultados de creación de instancias


2.2. Crear una dirección IP externa


2.2.1. Comience a crear 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 hacer esto, en el panel de navegación en el lado izquierdo de la pantalla, seleccione el elemento Elastic IPs de la categoría RED Y SECTURIDAD y haga clic en el botón Asignar nueva dirección


Comience a crear una IP externa


2.2.2. Configurar la creación de IP externa


En el siguiente paso, necesitamos que la opción de grupo de Amazon esté habilitada (habilitada de forma predeterminada) y haga clic en el botón Asignar


Configurar la creación de IP externa


2.2.3. Descripción general de los resultados de crear una dirección IP externa


La siguiente pantalla mostrará la dirección IP externa que recibimos. Se recomienda recordarlo, y es aún mejor escribirlo. será útil una y otra vez en el proceso de configuración y uso del servidor VPN. En esta guía, uso la dirección IP 4.3.2.1 como ejemplo. Cómo escribir la dirección, haga clic en el botón Cerrar


Descripción general de los resultados de crear una dirección IP externa


2.2.4. Lista de direcciones IP externas


A continuación, abrimos una lista de nuestras direcciones IP públicas permanentes (IP elástica).


Lista de direcciones IP externas


2.2.5. Asignación de una instancia de IP externa


En esta lista, seleccionamos la dirección IP que recibimos y presionamos el botón derecho del mouse para que aparezca un menú desplegable. En él, seleccione el elemento de dirección Asociado para asignarlo a la instancia creada anteriormente.


Asignación de una instancia de IP externa


2.2.6. Configurar asignación de IP externa


En el siguiente paso, seleccione nuestra instancia de la lista desplegable y haga clic en el botón Asociar


Configurar asignación de IP externa


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


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


Resumen de resultados de asignación de IP externa


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


3. Conéctese a una instancia de AWS


SSH es un protocolo seguro para el control remoto de dispositivos informáticos.


3.1. Conexión SSH desde una computadora con Windows


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


3.1.1. Importar una clave privada para masilla


3.1.1.1. Después de instalar Putty, debe ejecutar la utilidad PuTTYgen que viene con ella para importar la clave del certificado en formato PEM a un formato adecuado para su uso en Putty. Para hacer esto, seleccione Conversiones-> Importar clave en el menú superior


Importar una clave privada para masilla


3.1.1.2. Seleccione la clave AWS en formato PEM


Luego, seleccione la clave que guardamos previamente en el paso 2.1.7.1, en nuestro caso, su nombre es wireguard-awskey.pem


Seleccione la clave AWS en formato PEM


3.1.1.3. Establecer opciones de importación clave


En este paso, debemos especificar un comentario para esta clave (descripción) y establecer una contraseña y su confirmación de seguridad. Se solicitará cada vez que se conecte. Por lo tanto, protegemos la clave con una contraseña del uso inapropiado. No puede establecer una contraseña, pero es menos segura si la clave cae en las manos equivocadas. Después de hacer clic en el botón Guardar clave privada


Establecer opciones de importación clave


3.1.1.4. Guardar una clave importada


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


Guardar una clave importada


3.1.2. Crear y configurar una conexión en Putty


3.1.2.1. Crear conexión


Abra el programa Putty, seleccione la categoría Sesión (está abierta de forma predeterminada) e ingrese la dirección IP pública de nuestro servidor en el campo Nombre de host , que recibimos en el paso 2.2.3. En el campo Sesión guardada , ingrese un nombre arbitrario para nuestra conexión (en mi caso wireguard-aws-london ), y luego haga clic en el botón Guardar para guardar los cambios que realizamos.


Crear conexión


3.1.2.2. Configuración de inicio de sesión de usuario


Además, en la categoría Conexión , seleccione la subcategoría Datos y en el campo Nombre de usuario de inicio de sesión automático ingrese el nombre de usuario ubuntu : este es el usuario estándar de la instancia de AWS con Ubuntu.


Configuración de inicio de sesión de usuario


3.1.2.3. Elegir una clave privada para la conexión SSH


Luego vamos a la subcategoría Conexión / SSH / Auth y al lado del campo Clave privada para autenticación , haga clic en el botón Examinar ... para seleccionar un archivo con un certificado de clave.


Elegir una clave privada para la conexión SSH


3.1.2.4. Abrir una clave importada


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


Abrir una clave importada


3.1.2.5. Guardar ajustes e iniciar la conexión


Volviendo a la página de categoría Sesión , haga clic nuevamente en el botón Guardar para guardar los cambios que hicimos anteriormente en los pasos anteriores (3.1.2.2 - 3.1.2.4). Y luego presionamos el botón Abrir para abrir la conexión SSH remota que creamos y configuramos.


Guardar ajustes e iniciar la conexión


3.1.2.7. Configurar la confianza entre hosts


En el siguiente paso, la primera vez que intente conectarse, recibimos una advertencia, no hemos configurado la confianza entre las dos computadoras y le pregunta si debe confiar en la computadora remota. Hacemos clic en , para agregarlo a la lista de hosts de confianza.


Configurar la confianza entre hosts


3.1.2.8. Ingrese la contraseña para acceder a la clave


Después de eso, se abre la ventana de terminal, donde se solicita la contraseña de la clave, si la instaló anteriormente en el paso 3.1.1.3. Al ingresar la contraseña, no se produce ninguna acción en la pantalla. Si comete un error, puede usar la tecla Retroceso .


Ingrese la contraseña para acceder a la clave


3.1.2.9. Mensaje de bienvenida sobre una conexión exitosa


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


Mensaje de bienvenida sobre una conexión exitosa


4. Configuración del servidor Wireguard


Las instrucciones más actuales para instalar y usar Wireguard utilizando los scripts que se describen a continuación se pueden encontrar en el repositorio: https://github.com/isystem-io/wireguard-aws


4.1. Instalar Wireguard


En la terminal, ingrese los siguientes comandos (puede copiar en el portapapeles y pegar en la terminal haciendo clic derecho):


4.1.1 Clonación de repositorio


Clonamos un repositorio con scripts de instalación de Wireguard


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

4.1.2. Ir al directorio del script


Vaya al directorio con el repositorio clonado.


 cd wireguard_aws 

4.1.3 Ejecutar el script de inicialización


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


 sudo ./initial.sh 

Durante la instalación, se le solicitarán ciertos datos necesarios para configurar Wireguard


4.1.3.1. Ingresar punto de conexión


Ingrese la dirección IP externa y abra el puerto del servidor Wireguard. Obtuvimos la dirección IP externa del servidor en el paso 2.2.3 y abrimos el puerto en el paso 2.1.5. Los especificamos juntos, 4.3.2.1:54321 dos puntos, por ejemplo 4.3.2.1:54321 , y luego presione Entrar
Ejemplo de salida:


 Enter the endpoint (external ip and port) in format [ipv4:port] (eg 4.3.2.1:54321): 4.3.2.1:54321 

4.1.3.2. Ingrese la dirección IP interna


Ingrese la dirección IP del servidor Wireguard en una subred VPN segura, si no sabe cuál es, simplemente presione Entrar para establecer el valor predeterminado ( 10.50.0.1 )
Ejemplo de salida:


 Enter the server address in the VPN subnet (CIDR format) ([ENTER] set to default: 10.50.0.1): 

4.1.3.3. Especificar un servidor DNS


Ingrese la dirección IP del servidor DNS, o simplemente presione Enter para establecer el valor predeterminado en 1.1.1.1 (Cloudflare public DNS)
Ejemplo de salida:


 Enter the ip address of the server DNS (CIDR format) ([ENTER] set to default: 1.1.1.1): 

4.1.3.4. Especificación de la interfaz WAN


Luego, ingrese el nombre de la interfaz de red externa que escuchará en la interfaz de red interna de la VPN. Simplemente presione Entrar para establecer el valor predeterminado para AWS ( eth0 )
Ejemplo de salida:


 Enter the name of the WAN network interface ([ENTER] set to default: eth0): 

4.1.3.5. Nombre del cliente


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


 Enter VPN user name: Alex@mobile 

Después de eso, se debe mostrar un código QR en la pantalla con la configuración del cliente recién agregado, que debe leerse utilizando el cliente móvil Wireguard en Android o iOS para configurarlo. Además, el texto del archivo de configuración se mostrará debajo del código QR en caso de configuración manual de clientes. Cómo hacerlo se describirá a continuación.


Instalación completa de Wireguard


4.2. Agregar un nuevo usuario VPN


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


 sudo ./add-client.sh 

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


 Enter VPN user name: 

Además, el nombre se puede pasar a los usuarios como un parámetro de 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 a lo largo de la ruta /etc/wireguard/clients/{} , se /etc/wireguard/clients/{} un archivo con la configuración del cliente /etc/wireguard/clients/{} CustomerName►.conf, y se mostrará en la pantalla del terminal Código QR para configurar clientes móviles y el contenido del archivo de configuración.


4.2.1 Archivo de configuración del usuario


Puede mostrar el contenido del archivo .conf en la pantalla, para la configuración manual del cliente, utilizando el cat


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

resultado de 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 =    Address = IP   DNS =    [Peer] PublicKey =    PresharedKey =      AllowedIPs =     ( - 0.0.0.0/0, ::/0) Endpoint = IP      

4.2.2 Código de configuración del cliente QR


Puede mostrar el código QR del código de configuración para el cliente creado previamente en la pantalla del terminal utilizando el qrencode -t ansiutf8 (en este ejemplo, se utiliza el 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 de Android Mobile Client


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


Después de eso, debe importar la configuración leyendo el código QR con la configuración del cliente (consulte el párrafo 4.2.2) y asígnele un nombre:


Configuración del cliente de Android Wireguard


Después de importar con éxito la configuración, puede habilitar el túnel VPN. Acerca de la conexión exitosa dirá el escondite de la clave en el panel del sistema Android


Ejecutando Android Wireguard Client


5.2. Configuración del cliente de Windows


Inicialmente, debe descargar e instalar TunSafe para Windows ; este es un cliente Wireguard para Windows.


5.2.1. Crear un archivo de configuración para importar


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


Crear archivo de texto


5.2.2. Copiar el contenido del archivo de configuración del servidor


Luego volvemos al terminal Putty y mostramos el contenido del archivo de configuración del usuario deseado, como se describe en el paso 4.2.1.
Luego, seleccione el texto de configuración en el terminal Putty con el botón derecho del mouse; una vez completada la selección, se copiará automáticamente en el portapapeles.


Copiar texto con configuración


5.2.3. Copiar configuración al archivo de configuración local


Este campo vuelve al archivo de texto que creamos anteriormente en el escritorio y pega el texto de configuración desde el portapapeles.


Copiar texto con configuración


5.2.4. Guardar un archivo de configuración local


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


Guardar archivo de configuración


5.2.5. Importar un archivo de configuración local


A continuación, debe importar el archivo de configuración al programa TunSafe.


Importar archivo de configuración en TunSafe


5.2.6. Establecer una conexión VPN


Seleccione este archivo de configuración y conéctese haciendo clic en el botón Conectar .
Conéctese a un servidor VPN a través de TunSafe


6. Comprobació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 e ir al sitio https://2ip.ua/ru/


Conéctese a un servidor VPN a través de TunSafe


La dirección IP que se muestra debe coincidir con la que recibimos en el paso 2.2.3.
Si es así, entonces el túnel VPN está funcionando con éxito.


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


 curl http://zx2c4.com/ip 

O simplemente puedes ir al centro de pornografía si estás en Kazajstán.

Source: https://habr.com/ru/post/448528/


All Articles