Hoy en día, la tecnología VPN se está volviendo más popular. Los usuarios comunes usan VPN para acceder a Internet de forma segura. También ayuda a sortear sitios web y servicios bloqueados localmente y a protegerse contra posibles ataques maliciosos externos. Al conectarse a un servidor VPN, existe un túnel seguro entre su computadora y el servidor, al que no se puede acceder desde el exterior, por lo que el servidor VPN se convierte en su punto de acceso a Internet. Existen muchos servicios VPN, tanto gratuitos como de pago, pero si por alguna razón no le funcionan, siempre puede configurar su propio servidor VPN.
Para ejecutar su propia VPN, debe: alquilar servidor VPSExisten diferentes programas que permiten crear una conexión VPN. Se diferencian entre sí por los sistemas operativos compatibles y los algoritmos utilizados. Analizaremos dos enfoques independientes para configurar un servidor VPN. El primero se basa en el protocolo PPTP, que ya se considera obsoleto y poco seguro, pero es muy fácil de configurar. El otro utiliza el software moderno y seguro OpenVPN, pero requiere la instalación de una aplicación cliente de terceros y un proceso de configuración más exhaustivo.
En nuestro entorno de prueba, usaremos un servidor virtual con Ubuntu Server 18.04. Se desactivará el firewall del servidor, ya que su configuración merece un artículo aparte. Describiremos el proceso de configuración en Windows 10.
PREPARACIÓN
Independientemente del servidor VPN que elija, el acceso a Internet se configurará mediante un sistema operativo integrado. Para acceder a Internet a través de una interfaz de servicio externa, debe permitir el reenvío de paquetes entre las interfaces y configurar la traducción de direcciones de red.
Para activar el reenvío de paquetes, abra el archivo “/etc/sysctl.conf” y cambio “net.ipv4.ip_forward” valor del parámetro en 1.
Para aplicar los cambios sin reiniciar el equipo, ejecute el comando
sudo sysctl -p /etc/sysctl.conf
La traducción de direcciones de red se configura mediante iptablesPrimero, verifique el nombre de su interfaz de red externa ejecutando el comando “Mostrar enlace IP” Lo necesitarás en el siguiente paso. Nuestro nombre es “ens3”.
Habilite la traducción de direcciones de red en su interfaz externa para todos los nodos de red local.
sudo iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
Tenga en cuenta que debe especificar el nombre real de la interfaz de su servidor, puede ser diferente al nuestro.
De forma predeterminada, todas las reglas creadas por iptables se restablecen después de reiniciar el servidor. Para evitarlo, utilice “iptables-persistentes” Utilidad. Instale el siguiente paquete:
sudo apt install iptables-persistent
En algún momento durante la instalación, verá una ventana de configuración que le sugerirá guardar las reglas actuales de iptables. Dado que las reglas ya están definidas, simplemente confirme y haga clic en "Sí" Dos veces. A partir de ahora, las reglas se aplicarán automáticamente tras reiniciar el servidor.
Servidor PPTP
Configuración del servidor
Instalar el paquete:
sudo apt install pptpd
Una vez finalizada la instalación, abra el archivo “/etc/pptpd.conf” en cualquier editor de texto y edítelo así:
option /etc/ppp/pptpd-options #path to the settings file
logwtmp #client connections logging mechanism
connections 100 #number of simultaneous connections
localip 172.16.0.1 #the address that will serve as a client gateway
remoteip 172.16.0.2-200 #range of addresses
Después de eso, edita el archivo. “/etc/ppp/pptpd-opciones”La mayoría de los parámetros están configurados de forma predeterminada.
#name of the service for new client records
name pptpd
#restrict obsolete authentication methods
refuse-pap
refuse-chap
refuse-mschap
#allow a more secure authentication method
require-mschap-v2
#enable encryption
require-mppe-128
#specify dns servers for clients (use any available servers)
ms-dns 8.8.8.8
ms-dns 8.8.4.4
proxyarp
nodefaultroute
lock
nobsdcomp
novj
novjccomp
nologfd
En el siguiente paso, deberá crear un registro para las conexiones de clientes. Supongamos que desea agregar un usuario. “usuario VPN” con contraseña "1" y permitirle el direccionamiento dinámico. Abra el archivo. “/etc/ppp/chap-secrets” y agregue la siguiente línea con los parámetros del usuario al final del archivo:
vpnuser pptpd 1 *
“pptpd” valor es el nombre del servicio que especificamos en el archivo “opciones pptpd”. En lugar de “*” Puede especificar una dirección IP fija. Como resultado, el archivo... “secretos de chicos” Debe verse así:
Para aplicar la configuración, restablezca el pptpd servicio y agregarlo a la carga automática.
sudo systemctl restart pptpd
sudo systemctl enable pptpd
La configuración del servidor ha finalizado.
Configuración del cliente
Abra el "Comienzo" - "Configuraciones" - Red e Internet - "VPN" y haga clic “Agregar una conexión VPN”
Introduzca los parámetros de conexión en la ventana abierta y haga clic "Guardar"
- Proveedor de VPN: “Windows (integrado)”
- Nombre de la conexión: “vpn_connect” (puede elegir cualquier nombre)
- Nombre o dirección del servidor: (especifique la dirección IP externa del servidor)
- Tipo de VPN: “Automático”
- Tipo de información de inicio de sesión: “Nombre de usuario y contraseña”
- Nombre de usuario: usuario vpn (nombre especificado en el archivo “chap-secrets” en el servidor)
- Contraseña: 1 (como en el archivo “cap-secrets”)
Después de guardar los parámetros, verá la nueva conexión VPN en la ventana. Haga clic izquierdo en la conexión y seleccione "Connect"En caso de una conexión exitosa, verá "Conectado" de estado.
En las Opciones, encontrará las direcciones internas del cliente y del servidor. Campo “Dirección de destino” muestra la dirección del servidor externo.
Cuando esté conectado, la dirección IP interna del servidor, 172.16.0.1 En nuestro caso, se convierte en la puerta de enlace predeterminada para todos los paquetes salientes.
Al usar cualquier servicio en línea, puede asegurarse de que la dirección IP externa de la computadora ahora sea la misma que la dirección IP de su servidor VPN.
Servidor OpenVPN
Configuración del servidor
Aumentemos el nivel de permisos del usuario actual porque para nuestra configuración posterior necesitaremos acceso root.
sudo -s
Instalar todos los paquetes necesarios. Necesitaremos “Easy-RSA” Paquete para gestionar claves de cifrado.
apt install openvpn easy-rsa iptables-persistent
Permitir conexiones entrantes en el puerto 1194 a través del protocolo UDP y aplicar reglas de iptables.
sudo iptables -I INPUT -p udp --dport 1194 -j ACCEPT
sudo netfilter-persistent save
Cree un directorio con los archivos copiados del paquete “Easy-RSA” y navegue hasta él.
make-cadir ~/openvpn
cd ~/openvpn
Generar Infraestructura de Clave Pública (PKI).
./easyrsa init-pki
Generar el certificado raíz de la autoridad de certificación (CA).
./easyrsa build-ca
Durante el proceso de creación, se le pedirá que establezca y recuerde una contraseña. También deberá responder preguntas e ingresar información sobre el propietario de la clave. Puede dejar los valores predeterminados entre corchetes. Presione "Enter" para finalizar la entrada.
Generar una clave privada y una solicitud de certificado. Como argumento, especifique un nombre arbitrario; en nuestro caso, es "servidor-vpn".
./easyrsa gen-req vpn-server nopass
Deje el valor del Nombre común como predeterminado.
Firme la solicitud de certificado de servidor generada.
./easyrsa sign-req server vpn-server
En este paso, responda "sí" para confirmar la firma, luego ingrese la contraseña que se creó durante la generación del certificado raíz.
Generar parámetros Diffie-Hellman. Estos parámetros se utilizan para el intercambio seguro de claves entre el servidor y el cliente.
./easyrsa gen-dh
Se han generado todos los archivos necesarios. Cree una carpeta "keys" en el directorio de trabajo de OpenVPN para almacenar las claves y copiar allí los archivos creados.
mkdir /etc/openvpn/keys
sudo cp pki/ca.crt pki/issued/vpn-server.crt pki/private/vpn-server.key pki/dh.pem /etc/openvpn/keys
Configurar NAT usando iptables reglas. Crea un archivo llamado nat y abrirlo para editarlo en el /etc/openvpn/ directorio.
#!/bin/sh
# Reset firewall settings
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
# (eth0 in our case, may vary)
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
# (eth0 in our case, may vary)
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
# Allow OpenVPN connections (eth0 in our case, may vary)
iptables -A INPUT -i eth0 -p udp --dport 1194 -j ACCEPT
iptables -A INPUT -i tun0 -j ACCEPT
# (eth0 in our case, may vary):
iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
# (eth0 in our case, may vary)
iptables -A FORWARD -i eth0 -o tun0 -m state --state ESTABLISHED,RELATED -j ACCEPT
# Enable masquerading for the local network (eth0 in our case, may vary)
iptables -t nat -A POSTROUTING -o eth0 -s 10.8.0.0/24 -j MASQUERADE
# Deny incoming connections from outside
iptables -A INPUT -i eth0 -j DROP
# Deny transit traffic from outside (eth0 in our case, may vary)
iptables -A FORWARD -i eth0 -o tun0 -j DROP
sudo netfilter-persistent save
Guarde el archivo y hágalo ejecutable.
sudo chmod 755 /etc/openvpn/nat
Copiar la plantilla de configuración del servidor.
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/
Abra el archivo “/etc/openvpn/server.conf” Para editar, asegúrese de que contenga las siguientes líneas y edítelas si es necesario:
#Port, protocol, and interface
port 1194
proto udp
dev tun
#Path to the encryption keys
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/vpn-server.crt
key /etc/openvpn/keys/vpn-server.key
dh /etc/openvpn/keys/dh.pem
#SHA256 Hashing Algorithm
auth SHA256
#Switching off additional encryption
#tls-auth ta.key 0
#Network parameters
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist /var/log/openvpn/ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
#Ping every 10 seconds to check the connection.
keepalive 10 120
#Set up AES-256 encryption for the tunnel.
cipher AES-256-GCM
#Demoting the service OpenVPN after launch
user nobody
group nogroup
#Switching on parameters saving after reboot
persist-key
persist-tun
#Set log verbosity
verb 3
#Redirecting logs
log-append /var/log/openvpn/openvpn.log
#Script the rule installation launch.
up /etc/openvpn/nat
Habilitar el reenvío de tráfico en el servidor.
sudo sysctl -w net.ipv4.ip_forward=1
echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf
Inicie OpenVPN para aplicar la configuración.
systemctl restart openvpn@server
¡La configuración del servidor está terminada!
Configuración del cliente
Vaya al sitio web oficial de OpenVPN “https://openvpn.net”, ir a la “COMUNIDAD” .
Desplázate hacia abajo y descarga el instalador correspondiente a la versión de tu sistema operativo. En nuestro caso, es Windows 11 ARM64.
Instalar la aplicación dejando todos los parámetros por defecto.
En la siguiente etapa, deberá preparar el siguiente archivo en el servidor y transferirlo a la computadora cliente:
- claves públicas y privadas;
- copia de la clave del centro de certificación;
- plantilla de archivo de configuración.
Conéctese al servidor, eleve los privilegios y navegue hasta nuestro directorio creado "~/openvpn".
sudo -s
cd ~/openvpn
Generar una clave privada y una solicitud de certificado para el cliente. Como argumento, especifique un nombre arbitrario; en nuestro caso, es "cliente1".
./easyrsa gen-req client1 nopass
Introduzca la contraseña que configuramos al crear el certificado raíz y deje el valor Nombre común como predeterminado.
Firme la solicitud de certificado de cliente generada.
./easyrsa sign-req client client1
En este paso, responda "sí" para confirmar la firma, luego ingrese la contraseña que se creó durante la generación del certificado raíz.
Para mayor comodidad, crearemos una carpeta llamada 'client1' en el directorio de inicio y copiaremos allí todos los archivos que se transferirán a la computadora cliente.
mkdir ~/client1
cp pki/issued/client1.crt pki/private/client1.key pki/ca.crt ~/client1/
Copie la plantilla del archivo de configuración del cliente en el mismo directorio. Cambie la extensión del archivo a “.ovpn” mientras copia.
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client1/client.ovpn
Cambiar el propietario del directorio y todos los archivos “~/cliente1/” Para poder distribuirlos al cliente. Hagamos “Mihail” el propietario en nuestro caso.
chown -R mihail:mihail ~/client1
Vaya al equipo cliente y copie el contenido del “~/cliente1/” carpeta. Puedes hacerlo con la ayuda de “PSCP” utilidad, que va con Putty.
PSCP -r mihail@[IP_сервера]:/home/mihail/client1 c:\client1
Puede almacenar archivos clave “ca.crt”, “cliente1.crt”, “cliente1.clave” Donde quieras. En nuestro caso, están en esta carpeta. “c:\Archivos de programa\OpenVPN\keys”, y modelamos el archivo de configuración “cliente.ovpn” dentro del “c:\Archivos de programa\OpenVPN\config” directorio.
Ahora, configuremos el cliente. Abra el archivo. “c:\Archivos de programa\OpenVPN\config\client.ovpn” en un editor de texto y edite las siguientes líneas:
#announce that this is the client
client
#interface and protocol just like on the server
dev tun
proto udp
#IP address of the server and port
remote ip_address 1194
#saving parameters after reload
persist-key
persist-tun
#key paths
ca “c:\\Program Files\\OpenVPN\\keys\\ca.cert”
cert “c:\\Program Files\\OpenVPN\\keys\\client1.crt”
key “c:\\Program Files\\OpenVPN\\keys\\client1.key”
#enable server verification
remote-cert-tls server
#disable extra encryption
#tls-auth ta.key 1
cipher AES-256-CBC
auth-nocache
verb 3
Deje el resto intacto.
Guarde el archivo e inicie la aplicación cliente Interfaz gráfica de usuario de OpenVPN.
Haga clic derecho en el ícono de la aplicación en la barra de tareas y seleccione "Connect"Si la conexión es exitosa el icono se volverá verde.
Utilice cualquier servicio en línea para asegurarse de que su dirección IP pública haya cambiado y ahora sea la misma que la dirección IP del servidor.