Avui en dia, la tecnologia VPN es fa més popular. Els usuaris habituals utilitzen VPN per accedir de manera segura a Internet. També ajuda a evitar llocs web i serveis bloquejats localment i a protegir-se de possibles comportaments maliciosos externs. Quan us connecteu a un servidor VPN, hi ha un túnel segur entre l'ordinador i el servidor al qual no es pot accedir des de l'exterior, de manera que el servidor VPN es converteix en el vostre punt d'accés a Internet. Hi ha molts serveis VPN, tant gratuïts com de pagament, però si no us funcionen per algun motiu, sempre podeu configurar el vostre propi servidor VPN.
Per executar la vostra VPN, hauríeu de fer-ho llogar servidor VPS. Hi ha programari diferent que us permet crear una connexió VPN. Es diferencien entre si pels sistemes operatius suportats i pels algorismes utilitzats. Farem una ullada a dos enfocaments independents per configurar un servidor VPN. El primer es basa en el protocol PPTP que ja es considera obsolet i no segur però que és molt fàcil de configurar. L'altre utilitza un programari modern i segur OpenVPN, però requereix la instal·lació d'una aplicació client de tercers i un procés de configuració més exhaustiu.
Al nostre entorn de prova, farem servir un servidor virtual alimentat per Ubuntu Server 18.04. Un tallafocs s'apagarà al servidor perquè la seva configuració mereix un article a part. Descriurem el procés de configuració a Windows 10.
Preparació
Independentment del servidor VPN que trieu, l'accés a Internet es configurarà mitjançant mitjans integrats del sistema operatiu. Per obrir l'accés a Internet mitjançant una interfície de servei externa, heu de permetre el reenviament de paquets entre les interfícies i configurar la traducció d'adreces de xarxa.
Per activar el reenviament de paquets, obriu el fitxer "/etc/sysctl.conf" i el canvi "net.ipv4.ip_forward" valor del paràmetre en 1.
Per aplicar els canvis sense reiniciar l'ordinador, executeu l'ordre
sudo sysctl -p /etc/sysctl.conf
La traducció d'adreces de xarxa es configura mitjançant iptables. Primer, comproveu el nom de la vostra interfície de xarxa externa executant l'ordre "Mostra l'enllaç IP" - ho necessitareu al següent pas. El nostre nom és "ens3".
Activeu la traducció d'adreces de xarxa a la vostra interfície externa per a tots els nodes de la xarxa local.
sudo iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
Tingueu en compte que heu d'especificar el nom real de la interfície del vostre servidor, que pot ser diferent del nostre.
Per defecte, totes les regles creades per iptables es restableixen després de reiniciar el servidor. Per evitar-ho, feu servir "iptables-persistent" utilitat. Instal·leu el paquet següent:
sudo apt install iptables-persistent
En algun moment del procés d'instal·lació, veureu una finestra de configuració que us suggerirà desar les regles d'iptables actuals. Com que les regles ja estan definides, només cal que confirmeu i feu clic "Sí" dues vegades. Des d'ara, les regles s'aplicaran automàticament després de reiniciar el servidor.
Servidor PPTP
Configuració del servidor
Instal·leu el paquet:
sudo apt install pptpd
Un cop finalitzada la instal·lació, obriu el fitxer "/etc/pptpd.conf" en qualsevol editor de text i editeu-lo així:
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
Després d'això, editeu el fitxer "/etc/ppp/pptpd-options". La majoria dels paràmetres estan configurats per defecte.
#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 la següent etapa, haureu de crear un registre per a les connexions del client. Suposem que voleu afegir un usuari "usuari vp" amb contrasenya "1" i permetre un adreçament dinàmic per a ell. Obriu el fitxer "/etc/ppp/chap-secrets" i afegiu la línia següent amb els paràmetres de l'usuari al final del fitxer:
vpnuser pptpd 1 *
"pptpd" value és el nom del servei que hem especificat al fitxer "opcions-pptpd". En lloc de "*" podeu especificar una adreça IP fixa. En el resultat, el fitxer "secrets de cap" hauria de ser així:
Per aplicar la configuració, reinicieu pptpd servei i afegiu-lo a la càrrega automàtica.
sudo systemctl restart pptpd
sudo systemctl enable pptpd
La configuració del servidor s'ha acabat.
Configuració del client
obert "Start" - "Configuració" - Xarxa i Internet - "VPN" and clic "Afegeix una connexió VPN"
Introduïu els paràmetres de connexió a la finestra oberta i feu clic "Desa"
- Proveïdor de VPN: "Windows (integrat)"
- Nom de connexió: "vpn_connect" (podeu triar qualsevol nom)
- Nom o adreça del servidor: (especifiqueu l'adreça IP externa del servidor)
- Tipus de VPN: "Automàtic"
- Tipus d'informació d'inici de sessió: "Nom d'usuari i contrasenya"
- Nom d'usuari: vpnuser (nom especificat al fitxer "chap-secrets" al servidor)
- clau: 1 (com al fitxer "chap-secrets")
Després de desar els paràmetres, veureu la nova connexió VPN a la finestra. Feu clic amb el botó esquerre a la connexió i seleccioneu "Connecta". En el cas d'una connexió correcta, veureu "Connectat" d'estat.
A les Opcions, trobareu les adreces internes del client i del servidor. Camp "Adreça de destinació" mostra l'adreça del servidor extern.
Quan està connectat, l'adreça IP interna del servidor, 172.16.0.1 en el nostre cas, es converteix en la passarel·la predeterminada per a tots els paquets de sortida.
Amb qualsevol servei en línia, podeu assegurar-vos que l'adreça IP externa de l'ordinador és ara la mateixa que l'adreça IP del vostre servidor VPN.
Servidor OpenVPN
Configuració del servidor
Promovem el nivell de permisos de l'usuari actual perquè per a la nostra configuració posterior necessitarem accés root.
sudo -s
Instal·leu tots els paquets necessaris. Necessitarem "Fàcil-RSA" paquet per gestionar les claus de xifratge.
apt install openvpn easy-rsa iptables-persistent
Permet les connexions entrants al port 1194 mitjançant el protocol UDP i aplica les regles d'iptables.
sudo iptables -I INPUT -p udp --dport 1194 -j ACCEPT
sudo netfilter-persistent save
Crea un directori amb els fitxers copiats del paquet "Easy-RSA" i navega-hi.
make-cadir ~/openvpn
cd ~/openvpn
Generar una infraestructura de clau pública (PKI).
./easyrsa init-pki
Genera el certificat arrel de l'autoritat de certificació (CA).
./easyrsa build-ca
Durant el procés de creació, se us demanarà que definiu i recordeu una contrasenya. També haureu de respondre preguntes i introduir informació sobre el propietari de la clau. Podeu deixar els valors predeterminats que es proporcionen entre claudàtors. Premeu "Intro" per finalitzar l'entrada.
Genera una clau privada i una sol·licitud de certificat. Com a argument, especifica un nom arbitrari; en el nostre cas, és "vpn-server".
./easyrsa gen-req vpn-server nopass
Deixeu el valor del Nom comú per defecte.
Signeu la sol·licitud de certificat de servidor generada.
./easyrsa sign-req server vpn-server
En aquest pas, responeu "sí" per confirmar la signatura i, a continuació, introduïu la contrasenya que es va crear durant la generació del certificat arrel.
Genera paràmetres de Diffie-Hellman. Aquests paràmetres s'utilitzen per a l'intercanvi segur de claus entre el servidor i el client.
./easyrsa gen-dh
S'han generat tots els fitxers necessaris. Creem una carpeta de "claus" al directori de treball d'OpenVPN per emmagatzemar les claus i copiar-hi els fitxers creats.
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
Configura NAT mitjançant iptables regles. Crea un fitxer anomenat nat i obrir-lo per editar-lo a /etc/openvpn/ directori.
#!/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
Desa el fitxer i fes-lo executable.
sudo chmod 755 /etc/openvpn/nat
Copieu la plantilla de configuració del servidor.
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/
Obriu el fitxer "/etc/openvpn/server.conf" per editar, assegureu-vos que conté les línies següents i editeu-les si cal:
#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
Habilita el reenviament de trànsit al servidor.
sudo sysctl -w net.ipv4.ip_forward=1
echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf
Inicieu OpenVPN per aplicar la configuració.
systemctl restart openvpn@server
La configuració del servidor s'ha acabat!
Configuració del client
Aneu al lloc web oficial d'OpenVPN "https://openvpn.net”, aneu a “COMUNITAT” .
Desplaceu-vos cap avall i descarregueu l'instal·lador per a la versió del vostre sistema operatiu. En el nostre cas, és Windows 11 ARM64.
Instal·leu l'aplicació deixant tots els paràmetres per defecte.
En la següent etapa, haureu de preparar el fitxer següent al servidor i transferir-lo a l'ordinador client:
- claus públiques i privades;
- còpia de la clau del centre de certificació;
- plantilla de fitxer de configuració.
Connecteu-vos al servidor, eleveu privilegis i navegueu fins al directori que hem creat. "~/openvpn".
sudo -s
cd ~/openvpn
Genera una clau privada i una sol·licitud de certificat per al client. Com a argument, especifica un nom arbitrari; en el nostre cas, és "client1".
./easyrsa gen-req client1 nopass
Introduïu la contrasenya que vam establir en crear el certificat arrel i deixeu el valor del Nom comú per defecte.
Signeu la sol·licitud de certificat de client generada.
./easyrsa sign-req client client1
En aquest pas, responeu "sí" per confirmar la signatura i, a continuació, introduïu la contrasenya que es va crear durant la generació del certificat arrel.
Per comoditat, creem una carpeta anomenada "client1" al directori principal i hi copiem tots els fitxers destinats a ser transferits a l'ordinador client.
mkdir ~/client1
cp pki/issued/client1.crt pki/private/client1.key pki/ca.crt ~/client1/
Copieu la plantilla del fitxer de configuració del client al mateix directori. Canvia l'extensió del fitxer a ".ovpn" mentre es copia.
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client1/client.ovpn
Canvia el propietari del directori i tots els fitxers "~/client1/" per poder-los distribuir al client. Anem a fer "Mihail" el propietari en el nostre cas.
chown -R mihail:mihail ~/client1
Aneu a l'ordinador client i copieu el contingut del fitxer "~/client1/" carpeta. Ho pots fer amb l'ajuda de "PSCP" utilitat, que va amb Putty.
PSCP -r mihail@[IP_сервера]:/home/mihail/client1 c:\client1
Podeu emmagatzemar fitxers clau "ca.crt", "client1.crt", "client1.key" on vulguis. En el nostre cas, es troben en aquesta carpeta "c:\Fitxers de programa\OpenVPN\keys", i modem el fitxer de configuració "client.ovpn" a la "c:\Fitxers de programa\OpenVPN\config" directori.
Ara anem a configurar el client. Obriu el fitxer "c:\Fitxers de programa\OpenVPN\config\client.ovpn" en un editor de text i editeu les línies següents:
#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
Deixeu la resta sense tocar.
Deseu el fitxer i inicieu l'aplicació client "GUI d'OpenVPN".
Feu clic amb el botó dret a la icona de l'aplicació a la barra de tasques i trieu "Connecta". Si la connexió té èxit, la icona es tornarà verda.
Utilitzeu qualsevol servei en línia per assegurar-vos que la vostra adreça IP pública ha canviat i ara és la mateixa que l'adreça IP del servidor.