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 eseguisce u vostru VPN, duvete affittu servitore VPS. Ci hè un software differente chì permette di creà una cunnessione VPN. Differisce da l'altri per i sistemi operativi supportati è l'algoritmi utilizati. Fighjemu dui approcci indipendenti per stallà 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 un software mudernu è sicuru OpenVPN, ma richiede l'installazione di una applicazione cliente di terzu è 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'invio di pacchetti apre u schedariu "/etc/sysctl.conf" è cambiassi "net.ipv4.ip_forward" valore di paràmetru in 1.
Per applicà cambiamenti senza rebooting l'urdinatore, eseguite u cumandamentu
sudo sysctl -p /etc/sysctl.conf
A traduzzione di l'indirizzu di a rete hè cunfigurata per mezu di iptables. Prima, verificate u nome di a vostra interfaccia di rete esterna chì eseguisce u cumandamentu "Ip link show" - vi tuccherà à u passu prossimu. 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 automaticamente, tutte e regule create da iptables sò resettate dopu à riavvia u servitore. Per impediscenu chì, aduprà "iptables-persistente" utilità. Installa u pacchettu seguente:
sudo apt install iptables-persistent
À un certu puntu durante u prucessu di stallazione, vi vede una finestra di cunfigurazione chì vi suggerisce di salvà e regule iptables attuali. Siccomu e regule sò digià definite, basta cunfirmà è cliccate "Iè" duie volte. Dapoi avà, e regule seranu applicate automaticamente dopu à riavvia u servitore.
Servitore PPTP
Cunfigurazione di u servitore
Installa u pacchettu:
sudo apt install pptpd
Dopu chì a stallazione finisci, apre u schedariu "/etc/pptpd.conf" in ogni editore di testu è editallu 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 quì, edità u schedariu "/etc/ppp/pptpd-options". A maiò parte di i paràmetri sò stallati per automaticamente.
#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 tappa dopu, avete bisognu di creà un registru per e cunnessione di u cliente. Dicemu chì vulete aghjunghje un utilizatore "vpnuser" cù a password "1" è permette l'indirizzu dinamicu per ellu. Aprite u schedariu "/etc/ppp/chap-secrets" è aghjunghje a seguente linea cù i paràmetri di l'utilizatori à a fine di u schedariu:
vpnuser pptpd 1 *
"pptpd" valore hè u nome di u serviziu chì avemu specificatu in u schedariu "opzioni-pptpd". Invece di "*" pudete specificà un indirizzu IP fissu. In u risultatu, u schedariu "secreti di caprettu" duverebbe vede cusì:
Per applicà i paràmetri, resettate pptpd serviziu è aghjunghje à l'autoloading.
sudo systemctl restart pptpd
sudo systemctl enable pptpd
A cunfigurazione di u servitore hè finita.
Cunfigurazione di u cliente
Open "Start" - "Configurazione" - Rete è Internet - "VPN" è cliccate "Aghjunghje una cunnessione VPN"
Inserite i paràmetri di cunnessione in a finestra aperta è 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 à salvà i paràmetri, vi vede a nova cunnessione VPN in a finestra. Cliccate nant'à a cunnessione è selezziunate "Cunnessu". In u casu di una cunnessione successu, vi vede "Cunnessu" so statutu.
In l'Opzioni, truverete l'indirizzi interni di u cliente è u servitore. 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 predeterminatu 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
Installa tutti i pacchetti necessarii. Avemu bisognu "Facile-RSA" pacchettu per gestisce e chjave di criptografia.
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/
Apertura u file "/etc/openvpn/server.conf" per edità, assicuratevi chì cuntene e seguenti linee, è editate se 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
Andà à u situ ufficiale di OpenVPN "https://openvpn.net", vai à u "COMUNITÀ" rùbbrica.
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/
Copia u mudellu di u schedariu di cunfigurazione di u cliente in u stessu cartulare. Cambia l'estensione di u schedariu à ".ovpn" mentre copia.
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client1/client.ovpn
Cambia u pruprietariu di u cartulare è tutti i schedari "~/client1/" per pudè li distribuisce à u cliente. Facemu "mihail" u pruprietariu in u nostru casu.
chown -R mihail:mihail ~/client1
Andà à l'urdinatore cliente è copià u cuntenutu di u "~/client1/" cartulare. Pudete fà chì cù l'aiutu di "PSCP" utilità, chì và cù Putty.
PSCP -r mihail@[IP_сервера]:/home/mihail/client1 c:\client1
Pudete almacenà i schedarii chjave "ca.crt", "client1.crt", "client1.key" induve vulete. In u nostru casu, sò in stu cartulare "c:\Program Files\OpenVPN\keys", è avemu modu u schedariu di cunfigurazione "client.ovpn" in a "c:\Program Files\OpenVPN\config" catalogo.
Avà andemu à cunfigurà u cliente. Aprite u schedariu "c:\Program Files\OpenVPN\config\client.ovpn" in un editore di testu è editate 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.
Salvà u schedariu è lanciate l'applicazione cliente "GUI OpenVPN".
Cliccate cù u dirittu nantu à l'icona di l'app in a barra di attività è sceglite "Cunnessu". Se a cunnessione hè successu, 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.