Servicio gratuito de Wireguard VPN en AWS

Servicio gratuito de Wireguard VPN en AWS


El razonamiento


El aumento de la censura de Internet por parte de los regímenes autoritarios amplía el bloqueo de los recursos útiles de Internet haciendo imposible el uso de la WEB y, en esencia, viola el derecho fundamental a la libertad de opinión y expresión consagrado en la Declaración Universal de Derechos Humanos .


Artículo 19
Toda persona tiene derecho a la libertad de opinión y expresión; Este derecho incluye la libertad de mantener opiniones sin interferencia y de buscar, recibir e impartir información e ideas a través de cualquier medio e independientemente de las fronteras.

La siguiente es la instrucción detallada de 6 pasos para que las personas que no son de TI implementen un servicio VPN gratuito * sobre la tecnología Wireguard en la infraestructura de nube de Amazon Web Services (AWS) , utilizando una cuenta gratuita de 12 meses, en una Instancia (máquina virtual) ejecutada por 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 la asiduidad para repetir los pasos que se describen a continuación.


Nota


Etapas


  1. Registre la cuenta de AWS.
  2. Crea una instancia de AWS.
  3. Conéctese a la instancia de AWS.
  4. Configurar el servidor Wireguard.
  5. Configurar clientes VPN.
  6. Verifique la conexión VPN.



Los autores



1. Registre la cuenta gratuita de AWS


Para registrar una cuenta de AWS, debe enviar un número de teléfono válido y una tarjeta bancaria (Visa o Mastercard). Recomiendo usar tarjetas virtuales proporcionadas de forma gratuita por Yandex.Money o Qiwi wallet.
AWS verifica la validez de la tarjeta deduciendo 1 $ en el registro seguido del reembolso.


1.1. Abrir la consola de administración de AWS


Siga el enlace: https://aws.amazon.com/ , haga clic en el botón Crear una cuenta de AWS .


Página de inicio de Amazon AWS


1.2. Creación de cuenta de AWS


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


Creación de cuenta de AWS


1.3. Información de contacto para la cuenta de AWS


Información de contacto para la cuenta de AWS


1.4. Especificar información de facturación


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


Especificar información de facturación


1.5. Verificación de cuenta


AWS verifica su número de teléfono y debita $ 1 de su tarjeta bancaria. Luego, debe obtener un código de 4 dígitos en la pantalla de la computadora y recibir una llamada de Amazon. Durante una llamada, debe marcar el código de 4 dígitos que se muestra en la pantalla.


Verificación de cuenta


1.6. Elegir un plan de soporte de AWS


Elija un plan básico (gratis).


Elegir un plan de soporte de AWS


Inicie sesión en la consola de administración de AWS


Inicie sesión en la consola de administración de AWS


1.8. Elegir la ubicación del centro de datos


Elegir la ubicación del centro de datos


1.8.1. Prueba de velocidad de internet


Le recomendé que realizara una prueba de velocidad a los centros de datos más cercanos en https://speedtest.net/ y elija el mejor para conectarse.


Los siguientes son los resultados de la prueba de velocidad de mi ubicación:


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

El Datacenter en Londres muestra el mejor resultado de velocidad, así que lo elijo para continuar.


2. Crear una instancia de AWS


2.1 Crear una máquina virtual (instancia)


2.1.0 Siga los pasos de creación de instancias


2.1.0.1. Vaya a la página de Lanzamiento de instancia, elija el servicio EC-2


Vaya a la página de Lanzamiento de instancia, elija el servicio EC-2


2.1.0.2. Inicie un servidor virtual, conocido como instancia de Amazon EC-2


Inicie un servidor virtual, conocido como instancia de Amazon EC-2


2.1.0.3. Elija Amazon machine Image (Sistema operativo): Ubuntu Server 18.04 LTS


Elija Amazon Machine Image (Sistema operativo)


2.1.1 Elegir tipo de instancia


El tipo de instancia t2.micro está configurado de forma predeterminada y es el adecuado. Haga clic en el botón Siguiente: Configurar detalles de instancia para continuar.


Elegir tipo de instancia


2.1.2. Configurar detalles de instancia


Deshabilite la asignación automática de la IP pública, ya que asignará una estática a su instancia. Haga clic en el botón Siguiente: Agregar almacenamiento .


Configurar detalles de instancia


2.1.3. Agregar almacenamiento


Especifique el tamaño de la unidad: los 16 GB son suficientes.
Haga clic en Siguiente: botón Agregar etiquetas .


Agregar almacenamiento


2.1.4. Agregar etiquetas


Si tiene varias instancias, puede agruparlas por etiquetas para permitir una mejor administración. Sin embargo, esta funcionalidad es excedente. Por lo tanto, omitimos esto presionando el botón Siguiente: Configurar grupo de seguridad .


Agregar etiquetas


2.1.5. Apertura de puertos


Configure el firewall asignando puertos abiertos. El conjunto de puertos abiertos se denomina "Grupo de seguridad". Debe crear un nuevo "Grupo de seguridad", asígnele un nombre, una descripción y un puerto UDP (regla UDP personalizada).
En el campo Rango de puerto, especifique un número de puerto del rango 49152 - 65535 de puertos dinámicos . En mi caso, elijo el número de puerto 54321.
Haga clic en el botón Revisar e iniciar para completar este paso.


Apertura de puertos


2.1.6. Revise la configuración de Inicio de instancia


Revise y verifique todas las configuraciones para el Lanzamiento de instancia, y si todo está bien, haga clic en el botón Iniciar .


Revise la configuración de Inicio de instancia


2.1.7. Crear claves de acceso


Cree o agregue una clave SSH existente en el cuadro de diálogo que usará para la conexión remota a su instancia.
Elija "Crear un nuevo par de claves" para generar una nueva clave. Déle un nombre y haga clic en el botón Descargar par de claves para descargar la clave generada en la unidad de la PC. Haga clic en el botón Iniciar instancias .


Crear claves de acceso


2.1.7.1. Guardar claves privadas (.pem)


Cuando hace clic en Descargar par de claves , guarda la clave como un archivo .pem.
Para una mejor administración, asigné un nombre wireguard-awskey.pem al archivo.


Guardar claves privadas


2.1.8. Resumen de lanzamiento de instancia


A continuación, debería ver un mensaje sobre el lanzamiento exitoso de la instancia que ha creado. Puede visitar la lista de sus instancias haciendo clic en el botón Ver instancias .


Resumen de lanzamiento de instancia


2.2. Crear una dirección IP externa


2.2.1. Crear una IP externa


Lo siguiente es la creación de una dirección IP externa, que usará para conectarse al servidor VPN.
Encuentre las IP elásticas en la categoría RED Y SEGURIDAD del panel de navegación. Haga clic en el botón Asignar nueva dirección .


Crear una IP externa


2.2.2. Configuración de IP externa


En el siguiente paso, debe habilitar el grupo de Amazon (que es el predeterminado) y hacer clic en el botón Asignar


Configuración de IP externa


2.2.3. Descripción general de la dirección IP


La siguiente ventana muestra una dirección IP externa asignada por el grupo de Amazon. Anótelo, ya que lo necesitará para el proceso de configuración y para la configuración del servidor VPN. En esta guía, como ejemplo, uso la dirección IP 4.3.2.1 .
Una vez que termine este paso, haga clic en el botón Cerrar .


Descripción general de la dirección IP


2.2.4. Lista de direcciones IP externas


A continuación, debe obtener una lista de sus direcciones IP públicas (Elastics IP).


Lista de direcciones IP externas


2.2.5. Asignar una IP externa a la instancia


Elija la dirección IP de la lista (consulte 2.2.3) y haga clic con el botón derecho del mouse para obtener un menú desplegable.
En este menú, elija la dirección de Asociado para asignar una IP a la Instancia creada.


Asignar una IP externa a la instancia


2.2.6. Dirección asociada con instancia


En el menú desplegable, seleccione la instancia creada y haga clic en el botón Asociar .


Dirección asociada con instancia


2.2.7. Resumen de asignación de IP externa


Ahora debe tener una instancia creada con una dirección IP pública asignada. Esto le permite realizar una conexión remota a la instancia desde el exterior (desde su PC) a través de SSH.


Resumen de asignación de IP externa


3. Conéctese a la instancia de AWS


SSH es un protocolo seguro para administrar dispositivos informáticos remotos.


3.1. Conéctese desde una PC con Windows a través de SSH


Descargue e instale una masilla para realizar una conexión desde la PC con Windows.


3.1.1. Importar clave privada para masilla


3.1.1.1. Importa la clave de AWS en Putty


Inicie una utilidad PuTTYgen para que coincida con su clave AWS en formato .pem con un formato .ppk adecuado para Putty.
Para hacer esto, seleccione Conversiones -> Importar clave en el menú superior.


Importa la clave de AWS en Putty


3.1.1.2. Clave de AWS en formato PEM


A continuación, elija la clave que trató en 2.1.7.1
En mi caso es wireguard-awskey.pem .


Clave de AWS en formato PEM


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


En este paso, debe especificar los parámetros de importación de la clave: el comentario clave y la frase clave . Los necesitará en cada conexión. También protege la clave con una contraseña contra el acceso no autorizado.
Puede omitir la asignación de contraseña. Pero esto hará que su conexión sea menos segura en caso de que la clave caiga en las manos equivocadas.
Una vez que termine, haga clic en el botón Guardar clave privada .


Establecer los parámetros clave de importación


3.1.1.4. Guarde la clave .ppk importada


Puede guardar su clave privada en un formato .ppk adecuado para Putty desde el cuadro de diálogo de guardar archivo.
Especifique el nombre de la clave (en mi caso, wireguard-awskey.ppk ) y haga clic en el botón Guardar .


Guarde la clave .ppk importada


3.1.2. Crear y configurar una conexión en Putty


3.1.2.1. Hacer una conexión


Ejecute el programa Putty, elija la categoría Sesión (está abierta de forma predeterminada) y en el campo Nombre del host ingrese la dirección IP pública del servidor. Recuerdo que obtuvo su dirección IP pública en el paso 2.2.3 .
Dé cualquier nombre a la conexión en el campo Sesión guardada (para mí es wireguard-aws-london ). Haz clic en el botón Guardar .


Hacer una conexión


3.1.2.2. Establecer un inicio de sesión automático de usuario


Elija la subcategoría Datos de la categoría Conexión . Ingrese el nombre de usuario de inicio de sesión automático ubuntu en el campo de nombre de usuario de inicio de sesión automático . ( ubuntu es el usuario de instancia estándar en AWS con Ubuntu).


Establecer un inicio de sesión automático de usuario


3.1.2.3. Use una clave privada para una conexión SSH


Siga la ruta Conexión -> SSH -> Subcategoría de autenticación y haga clic en el botón Examinar para elegir el archivo de clave privada.


Use una clave privada para una conexión SSH


3.1.2.4. Abra el archivo de clave privada


Especifique la clave que importó anteriormente en el paso 3.1.1.4 - wireguard-awskey.ppk y haga clic en el botón Abrir .


Abra el archivo de clave privada


3.1.2.5. Guarde los cambios e inicie una conexión remota SSH


En la categoría Sesión de la ventana de configuración de Masilla, presione el botón Guardar para aplicar todos los cambios que realizó en ( 3.1.2.2 - 3.1.2.4 ).
Haga clic en el botón Abrir para iniciar la conexión remota SSH lista para usar.


Guarde los cambios e inicie una conexión remota SSH


3.1.2.7. Establecer una confianza entre los hosts


En la primera conexión, debería recibir una advertencia sobre la falta de confianza entre dos computadoras (hosts). El sistema le pregunta si confía en el host remoto. Haga clic en para agregar el host remoto a la lista de confianza.


Establecer una confianza entre los hosts


3.1.2.8. Ingrese la contraseña para activar la clave


En una ventana de terminal Putty, ingrese la contraseña clave que configuró en el paso
3.1.1.3 . Al ingresar la contraseña, no muestra ninguna acción en la pantalla. No se preocupe, si comete un error, puede usar la tecla de retroceso.


Ingrese la contraseña para activar la clave


3.1.2.9. Conexión exitosa


Una vez que ingrese la contraseña correcta, recibirá un mensaje de bienvenida. Le informa que el sistema remoto está listo para ejecutar sus comandos.


Conexión exitosa


4. Configure el servidor Wireguard


A continuación se encuentran las instrucciones para una instalación y administración de Wireguard basada en scripts.
Mantengo la última versión de las instrucciones en el repositorio: https://github.com/isystem-io/wireguard-aws


4.1. Instalar protector de cables


Ingrese los siguientes comandos en la terminal Putty.
Puede copiarlos en el portapapeles y pegarlos en el terminal presionando el botón derecho del mouse.


4.1.1 Clonar el repositorio de scripts


Clonar un repositorio de scripts de instalación de Wireguard:


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

4.1.2. Directorio de repositorios de scripts


Vaya al directorio del repositorio clonado:


 cd wireguard_aws 

4.1.3 Script de inicialización


Ejecute el script de instalación de Wireguard con derechos de administrador (usuario raíz):


 sudo ./initial.sh 

El script le pide que proporcione los siguientes datos para configurar Wireguard.


4.1.3.1. Establecer punto final de conexión (IP: puerto)


Ingrese la dirección IP externa (consulte 2.2.3 ) y el puerto abierto (consulte 2.1.5 ) del servidor Wireguard. Utilice el siguiente formato IP: puerto , por ejemplo, 4.3.2.1:54321 . Presione la tecla Enter para confirmar.


 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. Establecer dirección IP interna


Ingrese la dirección IP del servidor Wireguard en una subred VPN segura. Si no sabe qué es, presione la tecla Intro para establecer el valor predeterminado ( 10.50.0.1 ).


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

4.1.3.3. Especificar servidor DNS


Ingrese la dirección IP del servidor DNS o presione la tecla Intro para establecer el valor predeterminado 1.1.1.1 (Cloudflare public DNS).


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

4.1.3.4. Especificar interfaz WAN


Ingrese el nombre de la interfaz de red externa. Esta interfaz detectará la interfaz de red interna de la VPN.
Presione Entrar para establecer el valor predeterminado para AWS ( eth0 )


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

4.1.3.5. Especificar nombre del cliente


El servidor VPN de Wireguard no puede iniciarse hasta que agregue al menos un cliente. Ingrese un nombre de usuario VPN.
En mi caso, ingresé el nombre de Alex @ mobil.


 Enter VPN user name: Alex@mobile 

Después de eso, debería recibir un código QR de una configuración de cliente adicional. Este QR aplica la configuración del usuario al cliente móvil Wireguard en Android o iOS.
El texto del archivo de configuración también se muestra con QR. Necesitará en caso de configuración manual de clientes como se describe a continuación.


Completando la instalación de Wireguard


4.2. Agregar nuevo usuario VPN


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


 sudo ./add-client.sh 

El script solicita el nombre de usuario:


 Enter VPN user name: 

El nombre de usuario puede ir como un parámetro de script (en mi caso, el nombre de usuario es Alex @ mobile):


 sudo ./add-client.sh Alex@mobile 

La ejecución del script conduce a la creación del archivo de configuración del cliente en el directorio del cliente.
Archivo de configuración del cliente: /etc/wireguard/clients/{ClientName}/{ClientName}.conf .
Directorio de clientes:
/etc/wireguard/clients/{ClientName}


4.2.1 Archivo de configuración del usuario


Ejecute el comando cat para obtener el contenido del archivo .conf para la configuración manual del cliente.


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

El resultado de la ejecución del comando de la siguiente manera:


 [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 = Client's private key Address = Client IP Address DNS = DNS used by the client [Peer] PublicKey = Public key server PresharedKey = Shared server and client key AllowedIPs = Allowed addresses for connection (all - 0.0.0.0/0, :: / 0) Endpoint = IP address and port for connection 

4.2.2 Configuración del cliente con código QR


Ejecute el qrencode -t ansiutf8 para obtener el QR de una configuración de cliente creada. (en mi caso, el nuevo nombre del cliente es Alex @ mobile).


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

5. Configurar clientes VPN


5.1. Configuración de cliente móvil Android


Descargue el cliente móvil Wireguard para Android desde la tienda oficial GooglePlay .


Escanee el código QR para importar la configuración del cliente (consulte 4.2.2 ) y asígnele un nombre.


Configuración de cliente móvil Android


Después de importar la configuración, puede habilitar el túnel VPN. Un pequeño símbolo de llave en el sistema Android confirma la conexión VPN.


Se estableció con éxito la conexión Wireguard en Android


5.2. Configuración del cliente de Windows


Descargue e instale TunSafe , que es un cliente Wireguard para Windows.


5.2.1. Crear un archivo de texto local para importar la configuración


Cree un archivo de texto ficticio en el escritorio de su PC.


Crear un archivo de texto


5.2.2. Copie el archivo de configuración del servidor


Copie el contenido del archivo de configuración del servidor.
Luego, regrese al terminal Putty y muestre el contenido del archivo de configuración del usuario (consulte 4.2.1 ).
Use el botón derecho del mouse para copiar el texto de configuración en el terminal Putty.


Copiar texto con configuración


5.2.3. Pegue el texto de configuración en un archivo de texto local


Pegue el texto de configuración del portapapeles en el archivo de texto ficticio que creamos anteriormente en el escritorio (consulte 5.2.1 ).


Pegar texto con configuración


5.2.4. Guarde el archivo de configuración local.


Guarde el archivo de texto como formato .conf (en mi caso como london.conf )


Guarde el archivo de configuración local.


5.2.5. Importar archivo de configuración local


Importe el archivo de configuración al programa TunSafe.


Importar archivo de configuración local en TunSafe


5.2.6. Establecer una conexión VPN


En el programa TunSafe, seleccione el archivo de configuración importado y haga clic en el botón Conectar .


Establecer una conexión VPN


6. Verifique la conexión VPN


Use https://2ip.ua/en/ resource para verificar la conexión del túnel VPN. Si la dirección IP mostrada coincide con la que obtuvimos en 2.2.3 , entonces el túnel VPN está en funcionamiento.


Conexión a un servidor VPN a través de TunSafe


En un terminal de Linux, puede verificar su dirección IP ejecutando el siguiente comando:


 curl http://zx2c4.com/ip 

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


All Articles