Oghje, a tecnulugia VPN diventa più populari. L'utilizatori ordinariu utilizanu VPN per accede à Internet in modu sicuru. Aiuta ancu à circà i siti web è i servizii bluccati in u locu è prutegge da i pussibuli comportamenti maliziusi esterni. Quandu si cunnetta à un servitore VPN, ci hè un tunnellu sicuru trà u vostru urdinatore è u servitore chì ùn pò micca accede da l'esternu, cusì u servitore VPN diventa u vostru puntu di accessu à Internet. Ci hè parechje servizii VPN, sia gratuiti sia pagati, ma s'ellu ùn funziona micca per voi per una certa ragione, pudete sempre cunfigurà u vostru servitore VPN.
Per fà funziunà a vostra VPN, duvete affittà un servitore VPS . Ci hè diversi software chì vi permettenu di creà una cunnessione VPN. Si differenzianu l'uni da l'altri per i sistemi operativi supportati è l'algoritmi utilizati. Daremu un'ochjata à dui approcci indipendenti per cunfigurà un servitore VPN. U primu hè basatu annantu à u protocolu PPTP chì hè digià cunsideratu obsoletu è micca sicuru, ma hè veramente faciule da cunfigurà. L'altru impiega u software mudernu è sicuru OpenVPN, ma richiede l'installazione di un'applicazione client di terze parti è un prucessu di cunfigurazione più cumpletu.
In u nostru ambiente di prova, avemu da aduprà un servitore virtuale alimentatu da Ubuntu Server 18.04. Un firewall serà disattivatu in u servitore perchè a so cunfigurazione meriteghja un articulu separatu. Descriveremu u prucessu di installazione in Windows 10.
Preparation
Ùn importa micca u servitore VPN chì sceglite, l'accessu à Internet serà stallatu per mezu integratu di u sistema operatore. Per apre l'accessu à Internet attraversu una interfaccia di serviziu esternu, avete da permette l'invio di pacchetti trà l'interfaccia è cunfigurà a traduzzione di l'indirizzu di a rete.
Per attivà l'inoltru di pacchetti, apre u schedariu "/etc/sysctl.conf" è cambiate u valore di u parametru "net.ipv4.ip_forward" in 1.
Per applicà cambiamenti senza rebooting l'urdinatore, eseguite u cumandamentu
sudo sysctl -p /etc/sysctl.conf
A traduzzione di l'indirizzu di rete hè cunfigurata per mezu di iptables . Prima, verificate u nome di a vostra interfaccia di rete esterna eseguendu u cumandamentu "ip link show" - ne averete bisognu à u prossimu passu. U nostru nome hè "ens3".
Abilita a traduzzione di l'indirizzu di a rete à a vostra interfaccia esterna per tutti i nodi di a rete locale.
sudo iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
Nota chì avete bisognu di specificà u nome veru di l'interfaccia di u vostru servitore, pò esse sfarente da a nostra.
Per difettu, tutte e regule create da iptables sò resettate dopu u riavviu di u servitore. Per impedisce questu, aduprate l'utilità "iptables-persistent" . Installate u pacchettu seguente:
sudo apt install iptables-persistent
À un certu puntu durante u prucessu d'installazione, viderete una finestra di cunfigurazione chì vi suggerirà di salvà e regule attuali di iptables. Siccomu e regule sò digià definite, basta à cunfirmà è cliccà duie volte "Iè" . Siccomu avà e regule saranu applicate automaticamente dopu u riavviu di u servitore.
Servitore PPTP
Cunfigurazione di u servitore
Installa u pacchettu:
sudo apt install pptpd
Dopu à a fine di l'installazione, apre u schedariu "/etc/pptpd.conf" in qualsiasi editore di testu è mudificatelu cusì:
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
Dopu à quessa, mudificate u schedariu "/etc/ppp/pptpd-options" . A maiò parte di i parametri sò impostati per difettu.
#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
À a prossima tappa, duverete creà un registru per e cunnessione di i clienti. Dicemu chì vulete aghjunghje un utilizatore "vpnuser" cù a password "1" è permette l'indirizzamentu dinamicu per ellu. Aprite u schedariu "/etc/ppp/chap-secrets" è aghjunghjite a seguente linea cù i parametri di l'utilizatore à a fine di u schedariu:
vpnuser pptpd 1 *
U valore "pptpd" hè u nome di u serviziu chì avemu specificatu in u schedariu "pptpd-options" . Invece di "*" pudete specificà un indirizzu IP fissu. In u risultatu, u schedariu "chap-secrets" duveria esse cusì:
Per applicà i paràmetri, resettate u serviziu pptpd è aghjunghjitelu à u caricamentu automaticu.
sudo systemctl restart pptpd
sudo systemctl enable pptpd
A cunfigurazione di u servitore hè finita.
Cunfigurazione di u cliente
Aprite "Start" - "Impostazioni" - "Rete è Internet" - "VPN" è cliccate nantu à "Aghjunghje una cunnessione VPN".
Inserite i parametri di cunnessione in a finestra chì si apre è cliccate "Salvà".
- Fornitore VPN: "Windows (custruitu)"
- Nome di cunnessione: "vpn_connect" (pudete sceglie qualsiasi nome)
- Nome o indirizzu di u servitore: (specificà l'indirizzu IP esternu di u servitore)
- Tipu VPN: "Auto"
- Tipu di infurmazione di login: "Nome d'utilizatore è password"
- Nome d'utilizatore: vpnuser (nome specificatu in u schedariu "chap-secrets" nantu à u servitore)
- Codice: 1 (cum'è in u schedariu "chap-secrets")
Dopu avè salvatu i parametri, viderete a nova cunnessione VPN in a finestra. Cliccate cù u buttone sinistro di u mouse nantu à a cunnessione è selezziunate "Cunnette" . In casu di cunnessione riescita, viderete u statutu "Cunnessu".
In l'Opzioni, truverete l'indirizzi interni di u cliente è di u servitore. U campu "Indirizzu di destinazione" mostra l'indirizzu di u servitore esternu.
Quandu hè cunnessu, l'indirizzu IP internu di u servitore, 172.16.0.1 in u nostru casu, diventa u gateway predefinitu per tutti i pacchetti in uscita.
Utilizendu ogni serviziu in linea, pudete assicurà chì l'indirizzu IP esternu di l'urdinatore hè avà u listessu cum'è l'indirizzu IP di u vostru servitore VPN.
Servidor OpenVPN
Cunfigurazione di u servitore
Prumuvemu u livellu di permessi di l'utilizatore attuale perchè per a nostra cunfigurazione ulteriore avemu bisognu di accessu root.
sudo -s
Installate tutti i pacchetti necessarii. Averemu bisognu di u pacchettu "Easy-RSA" per gestisce e chjave di crittografia.
apt install openvpn easy-rsa iptables-persistent
Permette e cunnessione entranti nantu à u portu 1194 via u protocolu UDP è applica e regule iptables.
sudo iptables -I INPUT -p udp --dport 1194 -j ACCEPT
sudo netfilter-persistent save
Crea un cartulare cù i fugliali copiati da u pacchettu "Easy-RSA" è navigate in ellu.
make-cadir ~/openvpn
cd ~/openvpn
Generà una Infrastruttura à Chjave Pubblica (PKI).
./easyrsa init-pki
Generà u certificatu radice di l'autorità di certificazione (CA).
./easyrsa build-ca
Durante u prucessu di creazione, vi sarà dumandatu di definisce è di ricurdà una password. Duverete ancu risponde à e dumande è inserisce informazioni nantu à u pruprietariu di a chjave. Pudete lascià i valori predefiniti furniti trà parentesi quadre. Appughjà "Enter" per finalizà l'input.
Generate una chjave privata è una dumanda di certificatu. Cum'è argumentu, specificate un nome arbitrariu; in u nostru casu, hè "vpn-server".
./easyrsa gen-req vpn-server nopass
Lasciate u valore di u Nome Cumunu cum'è predefinitu.
Firmate a dumanda di certificatu di u servitore generata.
./easyrsa sign-req server vpn-server
À questu passu, rispondi "iè" per cunfirmà a firma, dopu inserisci a password chì hè stata creata durante a generazione di u certificatu radice.
Generà parametri Diffie-Hellman. Quessi parametri sò aduprati per u scambiu sicuru di chjave trà u servitore è u cliente.
./easyrsa gen-dh
Tutti i fugliali necessarii sò stati generati. Creemu una cartella "chjavi" in u cartulare di travagliu OpenVPN per almacenà e chjave è copià i fugliali creati quì.
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
Cunfigurà NAT cù iptables regule. Crea un schedariu chjamatu nat è apre lu per a mudificazione in u /etc/openvpn/ catalogo.
#!/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
Salvate u schedariu è rendetelu eseguibile.
sudo chmod 755 /etc/openvpn/nat
Cupiate u mudellu di cunfigurazione di u servitore.
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/
Aprite u schedariu "/etc/openvpn/server.conf" per mudificà lu, assicuratevi ch'ellu cuntene e seguenti linee, è mudificatele s'ellu hè necessariu:
#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
Attivà l'inoltru di u trafficu nant'à u servitore.
sudo sysctl -w net.ipv4.ip_forward=1
echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf
Avvia OpenVPN per applicà a cunfigurazione.
systemctl restart openvpn@server
A cunfigurazione di u servitore hè finita!
Cunfigurazione di u cliente
Andate à u situ ufficiale di OpenVPN " https://openvpn.net ", andate à a sezzione "COMUNITY".
Scrollate in giù è scaricate l'installatore per a versione di u vostru sistema operativu. In u nostru casu, hè Windows 11 ARM64.
Installa l'applicazione lascendu tutti i paràmetri per automaticamente.
À u prossimu tappa, vi tuccherà à priparà i seguenti schedari nant'à u servitore è trasfiriri li à u urdinatore cliente:
- chjavi publichi è privati;
- copia di a chjave di u centru di certificazione;
- mudellu di schedariu di cunfigurazione.
Cunnette vi à u servitore, elevate i privilegi è navigate versu u nostru cartulare creatu "~/openvpn".
sudo -s
cd ~/openvpn
Generate una chjave privata è una dumanda di certificatu per u cliente. Cum'è argumentu, specificate un nome arbitrariu; in u nostru casu, hè "client1".
./easyrsa gen-req client1 nopass
Inserite a password chì avemu stabilitu quandu avemu creatu u certificatu radice è lasciate u valore di Nome Cumunu cum'è predefinitu.
Firmate a dumanda di certificatu di u cliente generata.
./easyrsa sign-req client client1
À questu passu, rispondi "iè" per cunfirmà a firma, dopu inserisci a password chì hè stata creata durante a generazione di u certificatu radice.
Per comodità, creemu una cartella chjamata "client1" in u cartulare principale è copiemu tutti i fugliali destinati à esse trasferiti à l'urdinatore client in questu.
mkdir ~/client1
cp pki/issued/client1.crt pki/private/client1.key pki/ca.crt ~/client1/
Cupiate u mudellu di u schedariu di cunfigurazione di u cliente in u listessu cartulare. Cambiate l'estensione di u schedariu in ".ovpn" mentre copiate.
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client1/client.ovpn
Cambiate u pruprietariu di u cartulare è di tutti i fugliali "~/client1/" per pudè distribuisceli à u cliente. Facemu di "mihail" u pruprietariu in u nostru casu.
chown -R mihail:mihail ~/client1
Andate à l'urdinatore cliente è cupiate u cuntenutu di a cartella "~/client1/" . Pudete fà què cù l'aiutu di l'utilità "PSCP" , chì vene cun Putty.
PSCP -r mihail@[IP_сервера]:/home/mihail/client1 c:\client1
Pudete almacenà i fugliali chjave "ca.crt" , "client1.crt" , "client1.key" induve vulete. In u nostru casu, sò in questu cartulare "c:\Program Files\OpenVPN\keys" , è mettemu u fugliale di cunfigurazione "client.ovpn" in u cartulare "c:\Program Files\OpenVPN\config".
Avà, andemu à cunfigurà u cliente. Aprite u schedariu "c:\Program Files\OpenVPN\config\client.ovpn" in un editore di testu è mudificate e seguenti linee:
#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
Lasciate u restu senza toccu.
Salvate u schedariu è lanciate l'applicazione cliente "OpenVPN GUI".
Cliccate cù u dirittu nantu à l'icona di l'applicazione in a barra di attività è sceglite "Cunnette" . Sè a cunnessione hè riesciuta, l'icona diventerà verde.
Aduprate qualsiasi serviziu in linea per assicurà chì u vostru indirizzu IP publicu hà cambiatu è hè avà u listessu cum'è l'indirizzu IP di u servitore.