În zilele noastre, tehnologia VPN devine mai populară. Utilizatorii obișnuiți folosesc VPN pentru a accesa în siguranță Internetul. De asemenea, ajută la ocolirea site-urilor și a serviciilor blocate local și la protejarea împotriva unui posibil comportament rău intenționat extern. Când vă conectați la un server VPN, există un tunel sigur între computer și server, care nu poate fi accesat din exterior, astfel încât serverul VPN devine punctul dvs. de acces la Internet. Există o mulțime de servicii VPN, atât gratuite, cât și plătite, dar dacă nu funcționează pentru dvs. dintr-un motiv oarecare, vă puteți configura oricând propriul server VPN.
Pentru a vă rula VPN-ul, ar trebui inchiriez server VPS. Există diferite programe care vă permit să creați o conexiune VPN. Diferă unele de altele prin sistemele de operare acceptate și algoritmii utilizați. Vom arunca o privire la două abordări independente pentru a configura un server VPN. Primul se bazează pe protocolul PPTP care este deja considerat învechit și nu este sigur, dar este foarte ușor de configurat. Celălalt folosește software modern și securizat OpenVPN, dar necesită instalarea unei aplicații client terță parte și un proces de configurare mai amănunțit.
În mediul nostru de testare, vom folosi un server virtual alimentat de Ubuntu Server 18.04. Un firewall va fi dezactivat pe server, deoarece configurația sa merită un articol separat. Vom descrie procesul de configurare pe Windows 10.
Pregătire
Indiferent de serverul VPN pe care îl alegeți, accesul la Internet va fi configurat prin mijloace integrate ale sistemului de operare. Pentru a deschide accesul la Internet printr-o interfață de serviciu externă, trebuie să permiteți redirecționarea pachetelor între interfețe și să configurați traducerea adreselor de rețea.
Pentru a activa redirecționarea pachetelor, deschideți fișierul „/etc/sysctl.conf” și schimbare „net.ipv4.ip_forward” valoarea parametrului în 1.
Pentru a aplica modificările fără a reporni computerul, executați comanda
sudo sysctl -p /etc/sysctl.conf
Traducerea adresei de rețea este configurată prin intermediul iptables. Mai întâi, verificați numele interfeței de rețea externă care rulează comanda „afișare link ip” - veți avea nevoie de el la pasul următor. Numele nostru este „ens3”.
Activați traducerea adresei de rețea la interfața externă pentru toate nodurile rețelei locale.
sudo iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
Rețineți că trebuie să specificați numele real al interfeței serverului dvs., acesta poate fi diferit de al nostru.
În mod implicit, toate regulile create de iptables sunt resetate după repornirea serverului. Pentru a preveni acest lucru, utilizați „iptables-persistent” utilitate. Instalați următorul pachet:
sudo apt install iptables-persistent
La un moment dat în timpul procesului de instalare, veți vedea o fereastră de configurare care vă va sugera să salvați regulile iptables curente. Deoarece regulile sunt deja definite, doar confirmați și faceți clic "Da" de două ori. De acum, regulile vor fi aplicate automat după repornirea serverului.
Server PPTP
Configurarea serverului
Instalați pachetul:
sudo apt install pptpd
După ce instalarea se termină, deschideți fișierul „/etc/pptpd.conf” în orice editor de text și editați-l astfel:
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
După aceea, editați fișierul „/etc/ppp/pptpd-options”. Majoritatea parametrilor sunt configurați implicit.
#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
În etapa următoare, va trebui să creați o înregistrare pentru conexiunile client. Să presupunem că doriți să adăugați un utilizator „vpnuser” cu parola "1" și permiteți adresarea dinamică pentru el. Deschideți fișierul „/etc/ppp/chap-secrets” și adăugați următoarea linie cu parametrii utilizatorului la sfârșitul fișierului:
vpnuser pptpd 1 *
„pptpd” value este numele serviciului pe care l-am specificat în fișier „opțiuni-pptpd”. In loc de „*” puteți specifica o adresă IP fixă. În rezultat, fișierul „secrete de tip” ar trebui să arate așa:
Pentru a aplica setările, resetați pptpd serviciu și adăugați-l la încărcarea automată.
sudo systemctl restart pptpd
sudo systemctl enable pptpd
Configurarea serverului este finalizată.
Configurarea clientului
Operatii Deschise "Start" - „Setări“ - Rețea și Internet - „VPN” și faceți clic „Adăugați o conexiune VPN”
Introduceți parametrii de conectare în fereastra deschisă și faceți clic "Salvați"
- Furnizor VPN: „Windows (încorporat)”
- Numele conexiunii: „vpn_connect” (puteți alege orice nume)
- Numele sau adresa serverului: (specificați adresa IP externă a serverului)
- Tip VPN: „Automat”
- Tipul de informații de conectare: „Nume de utilizator și parolă”
- Nume de utilizator: vpnuser (numele specificat în fișierul „chap-secrets” de pe server)
- Parola: 1 (ca în fișierul „chap-secrets”)
După salvarea parametrilor, veți vedea noua conexiune VPN în fereastră. Faceți clic stânga pe conexiune și selectați "Conectați". În cazul unei conexiuni reușite, veți vedea "Conectat" stare.
În Opțiuni, veți găsi adrese interne ale clientului și ale serverului. Domeniu „Adresa de destinație” afișează adresa serverului extern.
Când este conectat, adresa IP internă a serverului, 172.16.0.1 în cazul nostru, devine gateway-ul implicit pentru toate pachetele de ieșire.
Folosind orice serviciu online, vă puteți asigura că adresa IP externă a computerului este acum aceeași cu adresa IP a serverului dumneavoastră VPN.
Serverul OpenVPN
Configurarea serverului
Să promovăm nivelul de permisiuni al utilizatorului actual, deoarece pentru configurarea noastră ulterioară vom avea nevoie de acces root.
sudo -s
Instalați toate pachetele necesare. Vom avea nevoie „Ușor-RSA” pachet pentru a gestiona cheile de criptare.
apt install openvpn easy-rsa iptables-persistent
Permite conexiunile primite pe portul 1194 prin protocolul UDP și aplică regulile iptables.
sudo iptables -I INPUT -p udp --dport 1194 -j ACCEPT
sudo netfilter-persistent save
Creați un director cu fișierele copiate din pachetul „Easy-RSA” și navigați în el.
make-cadir ~/openvpn
cd ~/openvpn
Generați infrastructura cu cheie publică (PKI).
./easyrsa init-pki
Generați certificatul rădăcină al autorității de certificare (CA).
./easyrsa build-ca
În timpul procesului de creare, vi se va solicita să setați și să rețineți o parolă. De asemenea, va trebui să răspundeți la întrebări și să introduceți informații despre proprietarul cheii. Puteți lăsa valorile implicite furnizate între paranteze pătrate. Apăsați „Enter” pentru a finaliza introducerea.
Generați o cheie privată și o cerere de certificat. Ca argument, specificați un nume arbitrar; în cazul nostru, este „vpn-server”.
./easyrsa gen-req vpn-server nopass
Lăsați valoarea Nume comun ca implicită.
Semnați cererea de certificat de server generată.
./easyrsa sign-req server vpn-server
În acest pas, răspundeți cu „da” pentru a confirma semnătura, apoi introduceți parola creată în timpul generării certificatului rădăcină.
Generați parametri Diffie-Hellman. Acești parametri sunt utilizați pentru schimbul securizat de chei între server și client.
./easyrsa gen-dh
Toate fișierele necesare au fost generate. Să creăm un folder „keys” în directorul de lucru OpenVPN pentru a stoca cheile și a copia fișierele create acolo.
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ți NAT folosind iptables reguli. Creați un fișier numit nat și deschideți-l pentru editare în /etc/openvpn/ director.
#!/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
Salvați fișierul și faceți-l executabil.
sudo chmod 755 /etc/openvpn/nat
Copiați șablonul de configurare a serverului.
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/
Deschideți fișierul „/etc/openvpn/server.conf” pentru editare, asigurați-vă că conține următoarele rânduri și editați-le dacă este necesar:
#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
Activați redirecționarea traficului pe server.
sudo sysctl -w net.ipv4.ip_forward=1
echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf
Porniți OpenVPN pentru a aplica configurația.
systemctl restart openvpn@server
Configurarea serverului este finalizată!
Configurarea clientului
Accesați site-ul oficial al OpenVPN „https://openvpn.net”, mergeți la „COMUNITATEA” secţiune.
Derulați în jos și descărcați programul de instalare pentru versiunea sistemului dvs. de operare. În cazul nostru, este Windows 11 ARM64.
Instalați aplicația lăsând toți parametrii implicit.
În etapa următoare, va trebui să pregătiți următorul fișier pe server și să le transferați pe computerul client:
- chei publice și private;
- copia cheii centrului de certificare;
- șablon de fișier de configurare.
Conectați-vă la server, ridicați privilegiile și navigați la directorul creat de noi "~/openvpn".
sudo -s
cd ~/openvpn
Generați o cheie privată și o cerere de certificat pentru client. Ca argument, specificați un nume arbitrar; în cazul nostru, este „client1”.
./easyrsa gen-req client1 nopass
Introduceți parola pe care am setat-o la crearea certificatului rădăcină și lăsați valoarea Nume comun ca implicită.
Semnați cererea de certificat client generată.
./easyrsa sign-req client client1
În acest pas, răspundeți cu „da” pentru a confirma semnătura, apoi introduceți parola creată în timpul generării certificatului rădăcină.
Pentru comoditate, să creăm un folder numit „client1” în directorul principal și să copiem în el toate fișierele destinate transferului pe computerul client.
mkdir ~/client1
cp pki/issued/client1.crt pki/private/client1.key pki/ca.crt ~/client1/
Copiați șablonul fișierului de configurare client în același director. Schimbați extensia fișierului în „.ovpn” în timpul copierii.
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client1/client.ovpn
Schimbați proprietarul directorului și al tuturor fișierelor „~/client1/” pentru a le putea distribui clientului. Să facem „mihail” proprietarul în cazul nostru.
chown -R mihail:mihail ~/client1
Accesați computerul client și copiați conținutul fișierului „~/client1/” pliant. Puteți face asta cu ajutorul lui „PSCP” utilitate, care merge cu Putty.
PSCP -r mihail@[IP_сервера]:/home/mihail/client1 c:\client1
Puteți stoca fișiere cheie „ca.crt”, „client1.crt”, „client1.key” oriunde vrei tu. În cazul nostru, acestea se află în acest folder „c:\Program Files\OpenVPN\keys”, și modăm fișierul de configurare „client.ovpn” în „c:\Program Files\OpenVPN\config” director.
Acum să trecem la configurarea clientului. Deschideți fișierul „c:\Program Files\OpenVPN\config\client.ovpn” într-un editor de text și editați următoarele rânduri:
#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
Lăsați restul neatins.
Salvați fișierul și lansați aplicația client „OpenVPN GUI”.
Faceți clic dreapta pe pictograma aplicației din bara de activități și alegeți "Conectați". Dacă conexiunea are succes, pictograma va deveni verde.
Utilizați orice serviciu online pentru a vă asigura că adresa IP publică s-a schimbat și că acum este aceeași cu adresa IP a serverului.