GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo crear su propia VPN:instrucciones detalladas

VPN:¿qué es?

VPN es una red privada virtual que crea un túnel encriptado entre su dispositivo y la conexión a Internet. Hay una doble VPN que es el uso simultáneo de dos servidores VPN diferentes. Al usar VeePN, todos los datos entrantes y salientes están encriptados. Al conectarse a un servidor VPN, toda su actividad en línea pasará por este túnel y no por el proveedor. Así, los ciberdelincuentes que quieran escanear tu tráfico solo verán el país al que estás conectado y no podrán robar contraseñas de redes sociales, tarjetas de crédito o cualquier información personal.

VPN es una herramienta bastante buena para combatir a los ciberintrusos, y le interesa la pregunta:"¿Puedo configurar mi propio servidor VPN?" Por supuesto, puede configurar su propia VPN o encadenamiento de VPN. Al crear su servidor VPN, obtiene muchos beneficios:

  • Usted controla sus servidores y personas usando VPN.
  • Puede estar seguro de que nadie posee sus datos.
  • Tendrá acceso a muchos recursos bloqueados en su región.
  • Podrás conectarte a una red Wi-Fi pública y nadie podrá apoderarse de tus datos.
  • Puede ocultar el tráfico de servicios especiales.

Instrucciones para crear su propio servidor VPN basado en Linux Debian

A continuación encontrará instrucciones paso a paso sobre cómo crear una VPN casera. Siga todos los consejos cuidadosamente, ya que su resultado dependerá de la corrección de los pasos.

Regístrese en Amazon AWS y conéctese al servidor

Amazon Web Services tiene un proceso de registro simple y consejos para crear un perfil para que pueda realizar este paso usted mismo. Después de completar el proceso de registro, vaya a Lightsail y seleccione la zona geográfica en la que desea crear su servidor VPN. Luego cree una nueva instancia y seleccione estos datos:"Solo SO", sistema operativo Debian 9.5. Luego verá un plan de instancia:el más común con 512 MB de RAM le conviene.

Algunos sitios son agresivos con los visitantes cuyas direcciones IP pertenecen a hosters populares y los bloquean. En su opinión, dichos visitantes participan en ataques DDOS. Para que no lo bloqueen y no tenga que compartir una dirección IP con miles de otras máquinas de AWS, vaya a Redes y luego asegúrese de asignarse una IP estática. Asígnalo a la instancia que creaste.

Ahora necesita descargar la clave privada para el acceso SSH. La clave privada se encuentra en la sección Cuenta> Claves SSH. Descarga esta clave y súbela al cliente SSH. Configuramos un servidor en Bali usando iPad Pro y Termius. Sin embargo, puede usar un cliente SSH diferente. Por ejemplo, una buena alternativa es la Terminal.app integrada en macOS. En nuestras instrucciones, consideraremos Terminal, pero el algoritmo es similar para otros clientes SSH.

Comencemos de manera simple:abra la Terminal. La terminal tiene un problema conocido llamado "configuración regional". Si está utilizando Termius, este problema no existe. Agregue un par de líneas nuevas a su archivo .profile local de macOS para eliminar el problema de configuración regional. Edite este archivo con el editor de texto nano. Ayudaría si obtuvieras algo como esto:nano ~/ .profile. Ahora necesita insertar algunas líneas allí:

export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8

Debe guardar este archivo con el comando Ctrl+X. Cierra la terminal usando el comando Cmd+Q. Después de este paso, ejecútelo de nuevo.

Ahora debe mover la clave privada de Lightsail previamente descargada a un directorio especial donde se almacenan las claves SSH:mv ~/Downloads/YOUR_DOWNLOADED_KEY.pem ~/.ssh. Después de este paso, limite los derechos de la clave. De lo contrario, macOS bloqueará su uso. Esto se puede hacer usando estos cifrados:

cd ~/ .ssh/
chmod 600 YOUR_DOWNLOADED_KEY.pem

Terminado con este paso, puede conectarse a su máquina Lightsail. Verá un campo especial YOUR_LIGHTSAIL_IP. En él, debe especificar una dirección IP estática externa:ssh -i YOUR_DOWNLOADED_KEY.pem admin @ YOUR_LIGHTSAIL_IP. Si hiciste todo correctamente, verías una inscripción especial con todos tus datos.

Configurar Debian

Todos los pasos posteriores que debe realizar bajo el usuario raíz. Y así, especifique sudo su. Luego actualice el índice de paquetes en los repositorios. Tal vez pueda ver por sí mismo que hay actualizaciones:apt-get update. Ahora su tarea es instalar estas actualizaciones:apt-get upgrade.

Instalar strongSwan

Usando un cifrado especial, instale strongSwan:apt-get install strongswan. Hablaremos sobre cómo configurar strongSwan un poco más tarde. Por el momento, lo más importante es crear certificados para que sus dispositivos puedan usar VPN.

Generar certificados de acceso

En nuestra guía, usamos certificados autofirmados porque solo nuestro equipo usará el servidor VPN. Para hacer certificados, necesita el paquete strongswan-pki. Instálelo:paquete strongswan-pki.

Ahora puede comenzar a crear certificados. El primer paso es crear un certificado raíz. Sobre todo, se le conoce como CA (Autoridad de certificación). Este certificado le emitirá los otros certificados que necesita. Puede crear un certificado en el archivo ca.pem:

cd /etc/ipsec.d
ipsec pki --gen --type rsa --size 4096 --outform pem > private/ca.pem
ipsec pki --self --ca --lifetime 3650 --in private/ca.pem --type rsa --digest sha256 --dn "CN=YOUR_LIGHTSAIL_IP" --outform pem > cacerts/ca.pem

Para crear un certificado para su servidor VPN, necesita un archivo debian.pem:

ipsec pki --gen --type rsa --size 4096 --outform pem > private/debian.pem
ipsec pki --pub --in private/debian.pem --type rsa | ipsec pki --issue --lifetime 3650 --digest sha256 --cacert cacerts/ca.pem --cakey private/ca.pem --dn "CN=YOUR_LIGHTSAIL_IP" --san YOUR_LIGHTSAIL_IP --flag serverAuth --outform pem > certs/debian.pem

Para crear un certificado para sus dispositivos, necesita un archivo me.pem:

ipsec pki --gen --type rsa --size 4096 --outform pem > private/me.pem 
ipsec pki --pub --in private/me.pem --type rsa | ipsec pki --issue --lifetime 3650 --digest sha256 --cacert cacerts/ca.pem --cakey private/ca.pem --dn "CN=me" --san me --flag clientAuth --outform pem > certs/me.pem

Ya no necesita el archivo ca.pem, así que por seguridad y confiabilidad, elimínelo:rm /etc/ipsec.d/private/ca.pem. Ha completado el proceso de creación de certificados. ¡Felicitaciones, ya casi ha terminado!

¿Qué hacer si los certificados tardan demasiado?

¿Qué entendemos por demasiado tiempo? Por ejemplo, sus certificados se generan durante más de 5 segundos. Estos datos indican una baja cantidad de entropía. Tenga en cuenta que la creación de certificados puede tardar entre 40 y 60 minutos debido a la baja cantidad de entropía, lo que no es muy bueno para su trabajo. Por lo tanto, para verificar la cantidad de entropía, puede iniciar otra sesión en la siguiente pestaña:

Usando el comando anterior, verá la cantidad de entropía en el momento de la solicitud. Si desea controlar la entropía en tiempo real, puede usar este comando:watch -n 0.25 cat /proc/sys/kernel/random/entropy_avail.

Si el resultado muestra menos de 200 entropías, te recomendamos que cambies de proveedor de hosting. Además, muchos expertos aconsejan instalar el paquete haveged, cuya tarea es generar entropías. Sin embargo, la utilidad de este paquete no ha sido probada, por lo que, además, todo dependerá de ti. Cuando utiliza Amazon Lightsail, estos problemas no surgen y puede generar claves rápidamente. Para salir de la solicitud, debe usar las teclas Ctrl + Z.

Configurar strongSwan

Para configurar strongSwan correctamente, debe borrar la configuración predeterminada de strongSwan. Utilice este comando:> /etc/ipsec.conf. Luego puede crear el suyo propio en el editor de texto nano:nano /etc/ipsec.conf.

Verá el campo YOUR_LIGHTSAIL_IP y su tarea es reemplazarlo con la dirección IP externa de la máquina en AWS Lightsail. Ahora puede insertar texto como este:

include /var/lib/strongswan/ipsec.conf.inc

config setup
    	uniqueids=never
    	charondebug="ike 2, knl 2, cfg 2, net 2, esp 2, dmn 2,  mgr 2"

conn %default
    	keyexchange=ikev2
    	ike=aes128gcm16-sha2_256-prfsha256-ecp256!
    	esp=aes128gcm16-sha2_256-ecp256!
    	fragmentation=yes
    	rekey=no
    	compress=yes
    	dpdaction=clear
    	left=%any
    	leftauth=pubkey
    	leftsourceip=YOUR_LIGHTSAIL_IP
    	leftid=YOUR_LIGHTSAIL_IP
    	leftcert=debian.pem
    	leftsendcert=always
    	leftsubnet=0.0.0.0/0
    	right=%any
    	rightauth=pubkey
    	rightsourceip=10.10.10.0/24
    	rightdns=8.8.8.8,8.8.4.4

conn ikev2-pubkey
    	auto=add

¡Importante! strongSwan es muy estricto con todas las sangrías en la configuración. Por lo tanto, cuando ingrese comandos, separe cada sección de la configuración usando la tecla Tabulador. En nuestro ejemplo, especificamos cómo debería verse esto. Puede usar nuestro modelo o hacer solo una sangría. De lo contrario, strongSwan no funcionará.

Guarde el archivo creado usando las teclas Ctrl + X. En el archivo ipsec.secrets, que almacena todas las referencias a certificados y claves de autenticación, agregue un puntero especial a su certificado de servidor:

nano /etc/ipsec.secrets
include /var/lib/strongswan/ipsec.secrets.inc

: RSA debian.pem

Si siguió todos los pasos, la configuración de Strongswan está completa. Sería útil si reinicia el servicio:reinicio de ipsec. Siempre que haya ingresado todos los comandos correctamente, el servidor comenzará con el siguiente mensaje:

Iniciando strongSwan 5.5.1 IPsec [iniciador]...

Si nota que el programa arroja un error, lea el registro del sistema para determinar cuál es el problema. El comando mostrará las últimas 50 líneas del registro:tail -n 50> /var/log/syslog.

Configurar los ajustes del kernel de red

En el archivo /etc/sysctl.conf, debe realizar algunos cambios:nano /etc/sysctl.conf. Usando las dos teclas Ctrl + W, busque las siguientes variables en el archivo y realice cambios allí:

  • Elimine el comentario de esta opción para habilitar el reenvío de paquetes:net.ipv4.ip_forward =1
  • Elimine el comentario de este parámetro para evitar ataques MITM:net.ipv4.conf.all.accept_redirects =0
  • Elimine el comentario de este parámetro para deshabilitar el envío de redireccionamientos ICMP:net.ipv4.conf.all.send_redirects =0
  • Agregue este parámetro en cualquier parte del archivo, en una nueva línea, deshabilitando las búsquedas de PMTU:net.ipv4.ip_no_pmtu_disc =1

Cargue los nuevos valores obtenidos:sysctl -p. Ha terminado de configurar los parámetros de red del kernel.

Configurar iptables

iptables es una herramienta especial que administra y controla el firewall netfilter incorporado de Linux. Instale el paquete iptables-persistent, que le permitirá guardar las reglas de iptables en un archivo y cargarlas en cada inicio del sistema:apt-get install iptables-persistent.

Después de instalar este paquete, el sistema le pedirá que mantenga las reglas actuales de IPv4 e IPv6. Debe especificar "no", porque tiene un sistema nuevo y no tiene datos para guardar.

Ahora comience a crear sus reglas de iptables. Para garantizar la seguridad y la confiabilidad, limpie todas las cadenas:

iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -F
iptables -Z

Para no perder el acceso al sistema, permita las conexiones SSH en el puerto 22:

iptables -A INPUT -m state --state ESTABLISHED, RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

El siguiente paso es permitir conexiones en la interfaz loopback:iptables -A INPUT -i lo -j ACCEPT. Luego permita las conexiones IPSec entrantes en los puertos UDP 500 y 4500:

iptables -A INPUT -p udp --dport 500 -j ACCEPT
iptables -A INPUT -p udp --dport 4500 -j ACCEPT

Permitir reenvío de tráfico ESP:

iptables -A FORWARD --match policy --pol ipsec --dir in  --proto esp -s 10.10.10.0/24 -j ACCEPT
iptables -A FORWARD --match policy --pol ipsec --dir out --proto esp -d 10.10.10.0/24 -j ACCEPT

Un servidor VPN es como un hilo entre Internet y los clientes VPN, por lo que debe configurar el enmascaramiento de tráfico:

iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth0 -m policy --pol ipsec --dir out -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth0 -j MASQUERADE

Configure el tamaño máximo de segmento de paquete:

iptables -t mangle -A FORWARD --match policy --pol ipsec --dir in -s 10.10.10.0/24 -o eth0 -p tcp -m tcp --tcp-flags SYN, RST SYN -m tcpmss --mss 1361: 1536 -j TCPMSS --set-mss 1360

Denegar todas las conexiones de terceros al servidor usando los comandos:

iptables -A INPUT -j DROP
iptables -A FORWARD -j DROP

Guarde las reglas creadas para que existan después de cada reinicio:

netfilter-persistent save
netfilter-persistent reload

Reinicie el sistema:reinicie y verifique si las reglas que creó funcionan.

Permitir conexiones en Lightsail Firewall

AWS Lightsail ha creado su firewall para proteger los sistemas. Seleccione su instancia, vaya a Redes y permita conexiones en los puertos UDP 500 y 4500. Quite el puerto 80 al mismo tiempo, no lo necesitará.

Crear .mobileconfig para iPhone, iPad, Mac

Sus dispositivos son iPhone, iPad y Mac para que pueda usar un perfil VPN .mobileconfig. Sería útil si creara una configuración bajo demanda. Si un servicio o aplicación intenta desconectarse, la conexión VPN seguirá funcionando automáticamente. Evitará la situación cuando martilló para establecer una conexión VPN y el tráfico pasó por el proveedor. Utilice el script que generará esta configuración para usted:

wget https://gist.githubusercontent.com/borisovonline/955b7c583c049464c878bbe43329a521/raw/966e8a1b0a413f794280aba147b7cea0661f77a8/mobileconfig.sh

Instale el paquete zsh para que el script funcione correctamente:apt-get install zsh. Edite el nombre del servidor según sus ideas y escriba la dirección IP externa de la máquina de Lightsail que especificó anteriormente al crear los certificados:

nano mobileconfig.sh
SERVER="AWS Frankfurt" FQDN="YOUR_LIGHTSAIL_IP"

Ahora ejecute el script y obtenga el archivo iphone.mobileconfig:

chmod u+x mobileconfig.sh
./mobileconfig.sh > iphone.mobileconfig.

Elimine este archivo del servidor conectándose con Transmit o Cyberduck; envíelo a todos sus dispositivos a través de Airdrop. Confirme la instalación de la configuración en los dispositivos. Establecerás conexiones con el servidor VPN automáticamente.

Asegúrese de limpiar después de usted mismo:

rm mobileconfig.sh
rm iphone.mobileconfig

Linux
  1. Cómo crear un rol de IAM en AWS usando Terraform

  2. Cómo crear un volumen físico en Linux usando LVM

  3. Cómo crear RPM para su propio script en CentOS/RedHat

  4. Cómo crear un usuario de Linux usando Ansible

  5. Cómo crear su sitio Plesk

Cómo crear y mantener sus propias páginas man

Cómo crear su pila de desarrollador de WordPress en OpenShift 4

Cómo crear su propio servidor VPN IPsec en Linux

Cómo crear una partición usando el comando "partid"

Cómo crear particiones de disco usando cfdisk

¿Cómo construir fácilmente su propia distribución de Linux?