U današnje vrijeme VPN tehnologija postaje sve popularnija. Obični korisnici koriste VPN za siguran pristup internetu. Također pomaže u zaobilaženju lokalno blokiranih web stranica i usluga i zaštiti od mogućeg vanjskog zlonamjernog ponašanja. Kada se spajate na VPN poslužitelj, postoji siguran tunel između vašeg računala i poslužitelja kojem se ne može pristupiti izvana, tako da VPN poslužitelj postaje vaša internetska pristupna točka. Postoji mnogo VPN usluga, besplatnih i plaćenih, ali ako vam iz nekog razloga ne rade, uvijek možete konfigurirati vlastiti VPN poslužitelj.
Da biste pokrenuli svoj VPN, trebali biste najam VPS servera. Postoje različiti softveri koji vam omogućuju stvaranje VPN veze. Međusobno se razlikuje po podržanim operativnim sustavima i korištenim algoritmima. Pogledat ćemo dva neovisna pristupa za postavljanje VPN poslužitelja. Prvi se temelji na PPTP protokolu koji se već smatra zastarjelim i nesigurnim, ali ga je doista lako konfigurirati. Drugi koristi moderan i siguran softver OpenVPN, ali zahtijeva instalaciju klijentske aplikacije treće strane i temeljitiji postupak postavljanja.
U našem testnom okruženju koristit ćemo virtualni poslužitelj koji pokreće Ubuntu Server 18.04. Vatrozid će biti isključen na poslužitelju jer njegova konfiguracija zaslužuje poseban članak. Opisat ćemo postupak postavljanja na Windows 10.
Priprema
Bez obzira koji VPN poslužitelj odaberete, pristup Internetu bit će postavljen integriranim sredstvima operativnog sustava. Kako biste otvorili pristup Internetu preko vanjskog servisnog sučelja, morate omogućiti prosljeđivanje paketa između sučelja i konfigurirati prijevod mrežne adrese.
Za uključivanje prosljeđivanja paketa otvorite datoteku “/etc/sysctl.conf” i promijeniti “net.ipv4.ip_forward” vrijednost parametra u 1.
Kako biste primijenili promjene bez ponovnog pokretanja računala, pokrenite naredbu
sudo sysctl -p /etc/sysctl.conf
Prijevod mrežne adrese konfiguriran je pomoću iptables. Prvo provjerite naziv vašeg vanjskog mrežnog sučelja koje pokreće naredbu “ip link show” - trebat će vam u sljedećem koraku. Naše ime je “ens3”.
Omogućite prijevod mrežne adrese na svom vanjskom sučelju za sve čvorove lokalne mreže.
sudo iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
Imajte na umu da morate navesti pravi naziv sučelja vašeg poslužitelja, može se razlikovati od našeg.
Prema zadanim postavkama, sva pravila stvorena pomoću iptables poništavaju se nakon ponovnog pokretanja poslužitelja. Kako biste to spriječili, koristite “iptables-persistent” korisnost. Instalirajte sljedeći paket:
sudo apt install iptables-persistent
U nekom trenutku tijekom procesa instalacije, vidjet ćete konfiguracijski prozor koji će vam predložiti spremanje trenutnih pravila iptables. Budući da su pravila već definirana, samo potvrdite i kliknite "Da" dvaput. Od sada će se pravila primjenjivati automatski nakon ponovnog pokretanja poslužitelja.
PPTP poslužitelj
Konfiguracija poslužitelja
Instalirajte paket:
sudo apt install pptpd
Nakon što instalacija završi, otvorite datoteku “/etc/pptpd.conf” u bilo kojem uređivaču teksta i uredite ga ovako:
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
Nakon toga uredite datoteku “/etc/ppp/pptpd-opcije”. Većina parametara postavljena je prema zadanim postavkama.
#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
U sljedećoj fazi morat ćete stvoriti zapis za klijentske veze. Recimo da želite dodati korisnika “vpnuser” s lozinkom "1" i omogućiti mu dinamičko adresiranje. Otvorite datoteku “/etc/ppp/chap-secrets” i dodajte sljedeći redak s korisničkim parametrima na kraju datoteke:
vpnuser pptpd 1 *
“pptpd” vrijednost je naziv usluge koju smo naveli u datoteci “pptpd-opcije”, Umjesto "*" možete navesti fiksnu IP adresu. Kao rezultat, datoteka “morske tajne” trebao bi izgledati ovako:
Za primjenu postavki resetirajte pptpd uslugu i dodajte je u automatsko učitavanje.
sudo systemctl restart pptpd
sudo systemctl enable pptpd
Konfiguracija poslužitelja je gotova.
Konfiguracija klijenta
Otvoren "Početak" - „Postavke” - Mreža & Internet - "VPN" i kliknite “Dodajte VPN vezu”
Unesite parametre veze u prozor koji se otvori i kliknite "Uštedjeti"
- VPN pružatelj: “Windows (ugrađeno)”
- Naziv veze: “vpn_connect” (možete odabrati bilo koji naziv)
- Ime ili adresa poslužitelja: (navedite vanjsku IP adresu poslužitelja)
- Vrsta VPN-a: "Auto"
- Vrsta podataka za prijavu: "Korisničko ime i lozinka"
- Korisničko ime: vpnuser (naziv naveden u datoteci "chap-secrets" na poslužitelju)
- Lozinka: 1 (kao u datoteci "chap-secrets")
Nakon spremanja parametara, u prozoru ćete vidjeti novu VPN vezu. Kliknite vezu lijevom tipkom miša i odaberite "Connect". U slučaju uspješne veze, vidjet ćete "Povezano" Status.
U opcijama ćete pronaći interne adrese klijenta i poslužitelja. Polje “Odredišna adresa” prikazuje adresu vanjskog poslužitelja.
Kada je spojen, interna IP adresa poslužitelja, 172.16.0.1 u našem slučaju, postaje zadani pristupnik za sve odlazne pakete.
Korištenjem bilo koje online usluge možete provjeriti je li vanjska IP adresa računala sada ista kao IP adresa vašeg VPN poslužitelja.
OpenVPN poslužitelj
Konfiguracija poslužitelja
Promovirajmo razinu dopuštenja trenutnog korisnika jer će nam za daljnju konfiguraciju trebati root pristup.
sudo -s
Instalirajte sve potrebne pakete. Trebat će nam “Easy-RSA” paket za upravljanje ključevima za šifriranje.
apt install openvpn easy-rsa iptables-persistent
Dopusti dolazne veze na portu 1194 putem UDP protokola i primijeni iptables pravila.
sudo iptables -I INPUT -p udp --dport 1194 -j ACCEPT
sudo netfilter-persistent save
Izradite direktorij s kopiranim datotekama iz paketa „Easy-RSA“ i idite u njega.
make-cadir ~/openvpn
cd ~/openvpn
Generiranje infrastrukture javnih ključeva (PKI).
./easyrsa init-pki
Generirajte korijenski certifikat izdavatelja certifikata (CA).
./easyrsa build-ca
Tijekom procesa stvaranja, bit ćete upitani da postavite i zapamtite lozinku. Također ćete morati odgovoriti na pitanja i unijeti podatke o vlasniku ključa. Možete ostaviti zadane vrijednosti navedene u uglatim zagradama. Pritisnite "Enter" za dovršetak unosa.
Generirajte privatni ključ i zahtjev za certifikat. Kao argument navedite proizvoljno ime; u našem slučaju to je „vpn-server“.
./easyrsa gen-req vpn-server nopass
Ostavite vrijednost Uobičajeni naziv kao zadanu.
Potpišite generirani zahtjev za certifikat poslužitelja.
./easyrsa sign-req server vpn-server
U ovom koraku odgovorite s "da" kako biste potvrdili potpis, a zatim unesite lozinku koja je kreirana tijekom generiranja korijenskog certifikata.
Generirajte Diffie-Hellmanove parametre. Ovi parametri se koriste za sigurnu razmjenu ključeva između poslužitelja i klijenta.
./easyrsa gen-dh
Sve potrebne datoteke su generirane. Izradimo mapu "keys" u radnom direktoriju OpenVPN-a za pohranu ključeva i kopirajmo stvorene datoteke tamo.
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
Konfigurirajte NAT pomoću iptables pravila. Izradite datoteku pod nazivom nat i otvorite ga za uređivanje u /etc/openvpn/ katalog.
#!/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
Spremi datoteku i učini je izvršnom.
sudo chmod 755 /etc/openvpn/nat
Kopirajte predložak konfiguracije poslužitelja.
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/
Otvorite datoteku “/etc/openvpn/server.conf” za uređivanje, provjerite sadrži li sljedeće retke i uredite ih ako je potrebno:
#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
Omogućite prosljeđivanje prometa na poslužitelju.
sudo sysctl -w net.ipv4.ip_forward=1
echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf
Pokrenite OpenVPN da biste primijenili konfiguraciju.
systemctl restart openvpn@server
Konfiguracija poslužitelja je gotova!
Konfiguracija klijenta
Idite na službenu web stranicu OpenVPN “https://openvpn.net”, idite na “ZAJEDNICA” odjeljak.
Pomaknite se prema dolje i preuzmite instalacijski program za svoju verziju operativnog sustava. U našem slučaju, to je Windows 11 ARM64.
Instalirajte aplikaciju ostavljajući sve parametre kao zadane.
U sljedećoj fazi morat ćete pripremiti sljedeću datoteku na poslužitelju i prenijeti ih na klijentsko računalo:
- javni i privatni ključevi;
- presliku ključa certifikacijskog centra;
- predložak konfiguracijske datoteke.
Spojite se na poslužitelj, povećajte privilegije i idite do našeg kreiranog direktorija "~/openvpn".
sudo -s
cd ~/openvpn
Generirajte privatni ključ i zahtjev za certifikat za klijenta. Kao argument navedite proizvoljno ime; u našem slučaju to je „klijent1“.
./easyrsa gen-req client1 nopass
Unesite lozinku koju smo postavili prilikom izrade korijenskog certifikata i ostavite vrijednost Common Name kao zadanu.
Potpišite generirani zahtjev za klijentski certifikat.
./easyrsa sign-req client client1
U ovom koraku odgovorite s "da" kako biste potvrdili potpis, a zatim unesite lozinku koja je kreirana tijekom generiranja korijenskog certifikata.
Radi lakšeg snalaženja, stvorimo mapu pod nazivom 'client1' u početnom direktoriju i u nju kopirajmo sve datoteke namijenjene prijenosu na klijentsko računalo.
mkdir ~/client1
cp pki/issued/client1.crt pki/private/client1.key pki/ca.crt ~/client1/
Kopirajte predložak konfiguracijske datoteke klijenta u isti direktorij. Promijenite ekstenziju datoteke u “.ovpn” tijekom kopiranja.
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client1/client.ovpn
Promijenite vlasnika direktorija i svih datoteka “~/klijent1/” kako bi ih mogli distribuirati klijentu. Napravimo “mihail” vlasnik u našem slučaju.
chown -R mihail:mihail ~/client1
Idite na klijentsko računalo i kopirajte sadržaj datoteke “~/klijent1/” mapa. To možete učiniti uz pomoć "PSCP" uslužni program, koji ide uz Putty.
PSCP -r mihail@[IP_сервера]:/home/mihail/client1 c:\client1
Možete pohraniti ključne datoteke “ca.crt”, “client1.crt”, “client1.key” gdje god želite. U našem slučaju, oni su u ovoj mapi “c:\Programske datoteke\OpenVPN\ključevi”, i modificiramo konfiguracijsku datoteku “client.ovpn” u “c:\Program Files\OpenVPN\config” katalog.
Sada idemo na konfiguraciju klijenta. Otvorite datoteku “c:\Programske datoteke\OpenVPN\config\client.ovpn” u uređivaču teksta i uredite sljedeće retke:
#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
Ostalo ostavite netaknutim.
Spremite datoteku i pokrenite klijentsku aplikaciju “OpenVPN GUI”.
Desnom tipkom miša kliknite ikonu aplikacije na programskoj traci i odaberite "Connect". Ako je veza uspješna, ikona će postati zelena.
Upotrijebite bilo koju online uslugu kako biste provjerili je li vaša javna IP adresa promijenjena i sada je ista kao IP adresa poslužitelja.