Al giorno d'oggi, la tecnologia VPN sta diventando più popolare. Gli utenti comuni usano la VPN per accedere in modo sicuro a Internet. Aiuta anche a superare siti Web e servizi bloccati localmente e a proteggersi da possibili comportamenti dannosi esterni. Quando ti connetti a un server VPN, c'è un tunnel sicuro tra il tuo computer e il server a cui non è possibile accedere dall'esterno, quindi il server VPN diventa il tuo punto di accesso a Internet. Ci sono molti servizi VPN là fuori, sia gratuiti che a pagamento, ma se per qualche motivo non funzionano per te, puoi sempre configurare il tuo server VPN.
Per eseguire la tua VPN, dovresti affitto server VPS. Esistono diversi software che consentono di creare una connessione VPN. Si differenziano tra loro per i sistemi operativi supportati e gli algoritmi utilizzati. Daremo un'occhiata a due approcci indipendenti per configurare un server VPN. Il primo si basa sul protocollo PPTP che è già considerato obsoleto e non sicuro, ma è davvero facile da configurare. L'altro impiega il software moderno e sicuro OpenVPN, ma richiede l'installazione di un'applicazione client di terze parti e un processo di configurazione più approfondito.
Nel nostro ambiente di test, utilizzeremo un server virtuale basato su Ubuntu Server 18.04. Un firewall verrà disattivato sul server perché la sua configurazione merita un articolo separato. Descriveremo il processo di installazione su Windows 10.
Preparazione
Indipendentemente dal server VPN che scegli, l'accesso a Internet verrà impostato tramite mezzi integrati del sistema operativo. Per aprire l'accesso a Internet tramite un'interfaccia di servizio esterna, devi consentire l'inoltro dei pacchetti tra le interfacce e configurare la traduzione degli indirizzi di rete.
Per attivare l'inoltro dei pacchetti, aprire il file “/etc/sysctl.conf” e cambiare “net.ipv4.ip_forward” valore del parametro in 1.
Per applicare le modifiche senza riavviare il computer, eseguire il comando
sudo sysctl -p /etc/sysctl.conf
La traduzione degli indirizzi di rete è configurata tramite iptables. Per prima cosa, controlla il nome della tua interfaccia di rete esterna eseguendo il comando "Mostra collegamento IP" - ne avrai bisogno al prossimo passaggio. Il nostro nome è “en3”.
Abilita la traduzione degli indirizzi di rete sulla tua interfaccia esterna per tutti i nodi della rete locale.
sudo iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
Tieni presente che devi specificare il nome reale dell'interfaccia del tuo server, che potrebbe essere diverso dal nostro.
Per impostazione predefinita, tutte le regole create da iptables vengono reimpostate dopo il riavvio del server. Per impedirlo, utilizzare “iptables-persistente” utilità. Installa il seguente pacchetto:
sudo apt install iptables-persistent
A un certo punto durante il processo di installazione, vedrai una finestra di configurazione che ti suggerirà di salvare le regole iptables correnti. Poiché le regole sono già definite, conferma e clicca "Sì" due volte. Da ora in poi le regole verranno applicate automaticamente dopo il riavvio del server.
Server PPTP
Configurazione del server
Installa il pacchetto:
sudo apt install pptpd
Dopo aver completato l'installazione, aprire il file “/etc/pptpd.conf” in qualsiasi editor di testo e modificarlo in questo modo:
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
Dopodiché modifica il file “/etc/ppp/pptpd-opzioni”La maggior parte dei parametri sono impostati di default.
#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
Nella fase successiva, dovrai creare un record per le connessioni client. Diciamo che vuoi aggiungere un utente “utente vpn” con password "1" e consentirgli l'indirizzamento dinamico. Apri il file “/etc/ppp/chap-secrets” e aggiungere la seguente riga con i parametri dell'utente alla fine del file:
vpnuser pptpd 1 *
“pptpd” value è il nome del servizio che abbiamo specificato nel file “opzioni-pptpd”. Invece di "*" puoi specificare un indirizzo IP fisso. Nel risultato, il file "segreti da tizio" Dovrebbe essere simile a questo:
Per applicare le impostazioni reimpostare il pptpd servizio e aggiungerlo al caricamento automatico.
sudo systemctl restart pptpd
sudo systemctl enable pptpd
La configurazione del server è completata.
Configurazione client
Apri "Inizio" - "Impostazioni" - Rete e Internet - "VPN" e fare clic su “Aggiungi una connessione VPN”
Inserisci i parametri di connessione nella finestra aperta e clicca "Salva"
- Fornitore VPN: “Windows (integrato)”
- Nome della connessione: “vpn_connect” (puoi scegliere qualsiasi nome)
- Nome o indirizzo del server: (specificare l'indirizzo IP esterno del server)
- Tipo di VPN: “Auto”
- Tipo di informazioni di accesso: “Nome utente e password”
- Nome utente: utente virtuale (nome specificato nel file “chap-secrets” sul server)
- Password: 1 (come nel file “chap-secrets”)
Dopo aver salvato i parametri, vedrai la nuova connessione VPN nella finestra. Fai clic con il tasto sinistro del mouse sulla connessione e seleziona "Connect"In caso di connessione riuscita, vedrai "Collegato" stato.
Nelle Opzioni, troverai gli indirizzi interni del client e del server. Campo “Indirizzo di destinazione” visualizza l'indirizzo del server esterno.
Una volta connesso, l'indirizzo IP interno del server, 172.16.0.1 nel nostro caso, diventa il gateway predefinito per tutti i pacchetti in uscita.
Utilizzando qualsiasi servizio online puoi assicurarti che l'indirizzo IP esterno del computer sia ora lo stesso dell'indirizzo IP del tuo server VPN.
Server OpenVPN
Configurazione del server
Aumentiamo il livello di permessi dell'utente corrente perché per la nostra configurazione successiva avremo bisogno dell'accesso root.
sudo -s
Installa tutti i pacchetti necessari. Avremo bisogno “RSA facile” pacchetto per gestire le chiavi di crittografia.
apt install openvpn easy-rsa iptables-persistent
Consentire le connessioni in entrata sulla porta 1194 tramite protocollo UDP e applicare le regole iptables.
sudo iptables -I INPUT -p udp --dport 1194 -j ACCEPT
sudo netfilter-persistent save
Creare una directory con i file copiati dal pacchetto “Easy-RSA” e accedervi.
make-cadir ~/openvpn
cd ~/openvpn
Generare un'infrastruttura a chiave pubblica (PKI).
./easyrsa init-pki
Generare il certificato radice dell'autorità di certificazione (CA).
./easyrsa build-ca
Durante la procedura di creazione, ti verrà chiesto di impostare e ricordare una password. Dovrai anche rispondere a delle domande e inserire informazioni sul proprietario della chiave. Puoi lasciare i valori predefiniti forniti tra parentesi quadre. Premi "Invio" per completare l'inserimento.
Genera una chiave privata e una richiesta di certificato. Come argomento, specifica un nome arbitrario; nel nostro caso, è "vpn-server".
./easyrsa gen-req vpn-server nopass
Lasciare il valore Nome comune come predefinito.
Firmare la richiesta di certificato del server generata.
./easyrsa sign-req server vpn-server
A questo punto, rispondi "sì" per confermare la firma, quindi inserisci la password creata durante la generazione del certificato radice.
Genera parametri Diffie-Hellman. Questi parametri vengono utilizzati per lo scambio sicuro di chiavi tra il server e il client.
./easyrsa gen-dh
Tutti i file necessari sono stati generati. Creiamo una cartella "keys" nella directory di lavoro di OpenVPN per archiviare le chiavi e copiarvi i file creati.
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
Configurare NAT utilizzando iptables regole. Crea un file denominato nat e aprirlo per modificarlo in /etc/openvpn/ directory.
#!/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
Salvare il file e renderlo eseguibile.
sudo chmod 755 /etc/openvpn/nat
Copiare il modello di configurazione del server.
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/
Aprire il file “/etc/openvpn/server.conf” per la modifica, assicurati che contenga le seguenti righe e modificale se necessario:
#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
Abilita l'inoltro del traffico sul server.
sudo sysctl -w net.ipv4.ip_forward=1
echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf
Avviare OpenVPN per applicare la configurazione.
systemctl restart openvpn@server
La configurazione del server è terminata!
Configurazione client
Vai al sito ufficiale di OpenVPN “https://openvpn.net”, vai al “COMUNITÀ” .
Scorri verso il basso e scarica il programma di installazione per la versione del tuo sistema operativo. Nel nostro caso, è Windows 11 ARM64.
Installare l'applicazione lasciando tutti i parametri predefiniti.
Nella fase successiva sarà necessario preparare i seguenti file sul server e trasferirli sul computer client:
- chiavi pubbliche e private;
- copia della chiave del centro di certificazione;
- modello di file di configurazione.
Connettiti al server, eleva i privilegi e vai alla directory creata "~/openvpn".
sudo -s
cd ~/openvpn
Genera una chiave privata e una richiesta di certificato per il client. Come argomento, specifica un nome arbitrario; nel nostro caso, è "client1".
./easyrsa gen-req client1 nopass
Inserisci la password che abbiamo impostato durante la creazione del certificato radice e lascia il valore Nome comune come predefinito.
Firmare la richiesta di certificato client generata.
./easyrsa sign-req client client1
A questo punto, rispondi "sì" per confermare la firma, quindi inserisci la password creata durante la generazione del certificato radice.
Per comodità, creiamo una cartella denominata "client1" nella directory home e copiamo al suo interno tutti i file che vogliamo trasferire sul computer client.
mkdir ~/client1
cp pki/issued/client1.crt pki/private/client1.key pki/ca.crt ~/client1/
Copia il modello del file di configurazione del client nella stessa directory. Cambia l'estensione del file in “.ovpn” durante la copia.
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client1/client.ovpn
Cambia il proprietario della directory e di tutti i file “~/client1/” per poterli distribuire al cliente. Facciamo "Michael" il proprietario nel nostro caso.
chown -R mihail:mihail ~/client1
Vai al computer client e copia il contenuto del “~/client1/” cartella. Puoi farlo con l'aiuto di “PSCP” utilità, che va di pari passo con Putty.
PSCP -r mihail@[IP_сервера]:/home/mihail/client1 c:\client1
È possibile memorizzare i file chiave “ca.crt”, “client1.crt”, “client1.chiave” dove vuoi. Nel nostro caso, sono in questa cartella “c:\Programmi\OpenVPN\keys”e modifichiamo il file di configurazione “cliente.ovpn” nella “c:\Programmi\OpenVPN\config” directory.
Ora passiamo alla configurazione del client. Apriamo il file “c:\Programmi\OpenVPN\config\client.ovpn” in un editor di testo e modifica le seguenti righe:
#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
Lascia il resto intatto.
Salvare il file e avviare l'applicazione client “Interfaccia grafica OpenVPN”.
Fare clic con il pulsante destro del mouse sull'icona dell'app nella barra delle applicazioni e scegliere "Connect"Se la connessione è riuscita l'icona diventerà verde.
Utilizza un qualsiasi servizio online per assicurarti che il tuo indirizzo IP pubblico sia cambiato e che ora sia uguale all'indirizzo IP del server.