Danas VPN tehnologija postaje sve popularnija. Obični korisnici koriste VPN za siguran pristup internetu. Također pomaže zaobići lokalno blokirane web stranice i usluge i štiti od mogućeg vanjskog zlonamjernog ponašanja. Kada se povezujete na VPN server, između vašeg računara i servera postoji siguran tunel kojem se ne može pristupiti izvana, tako da VPN server postaje vaša Internet pristupna tačka. Postoji mnogo VPN usluga, besplatnih i plaćenih, ali ako iz nekog razloga ne rade za vas, uvijek možete konfigurirati vlastiti VPN server.
Da biste pokrenuli svoj VPN, trebali biste iznajmiti VPS server. Postoji različit softver koji vam omogućava da kreirate VPN vezu. Međusobno se razlikuju po podržanim operativnim sistemima i korištenim algoritmima. Pogledat ćemo dva nezavisna pristupa za postavljanje VPN servera. Prvi je baziran na PPTP protokolu koji se već smatra zastarjelim i nije siguran, ali ga je zaista lako konfigurirati. Drugi koristi moderan i siguran softver OpenVPN, ali zahtijeva instaliranje klijentske aplikacije treće strane i temeljitiji proces podešavanja.
U našem testnom okruženju koristićemo virtuelni server koji pokreće Ubuntu Server 18.04. Firewall će biti isključen na serveru jer njegova konfiguracija zaslužuje poseban članak. Opisat ćemo proces postavljanja na Windows 10.
priprema
Bez obzira koji VPN server odaberete, pristup Internetu će biti postavljen integrisanim sredstvima operativnog sistema. Da biste otvorili pristup Internetu preko eksternog servisnog interfejsa, morate dozvoliti prosleđivanje paketa između interfejsa i konfigurisati prevođenje mrežnih adresa.
Da biste uključili prosljeđivanje paketa, otvorite datoteku “/etc/sysctl.conf” i promjena “net.ipv4.ip_forward” vrijednost parametra u 1.
Da biste primijenili promjene bez ponovnog pokretanja računara, pokrenite naredbu
sudo sysctl -p /etc/sysctl.conf
Prijevod mrežne adrese se konfigurira pomoću iptables. Prvo provjerite ime vašeg vanjskog mrežnog sučelja koji pokreće naredbu “ip link show” - trebat će vam u sljedećem koraku. Zovemo se “ens3”.
Omogućite prevođenje mrežnih adresa na vašem 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 pravo ime sučelja vašeg servera, ono može biti drugačije od našeg.
Podrazumevano, sva pravila kreirana od strane iptables se resetuju nakon ponovnog pokretanja servera. Da biste to spriječili, koristite “iptables-persistent” korisnost. Instalirajte sljedeći paket:
sudo apt install iptables-persistent
U nekom trenutku tokom procesa instalacije, vidjet ćete prozor za konfiguraciju koji će vam predložiti spremanje trenutnih iptables pravila. Pošto su pravila već definirana, samo potvrdite i kliknite "Da" dvaput. Od sada će se pravila automatski primjenjivati nakon ponovnog pokretanja servera.
PPTP server
Konfiguracija servera
Instalirajte paket:
sudo apt install pptpd
Nakon završetka instalacije otvorite datoteku “/etc/pptpd.conf” u bilo kojem uređivaču teksta i uredite ga na sljedeći način:
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 je podešena 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 kreirati zapis za klijentske veze. Recimo da želite dodati korisnika “vpnuser” sa lozinkom "1" i omogućiti mu dinamičko adresiranje. Otvorite fajl “/etc/ppp/chap-secrets” i dodajte sljedeći red sa korisničkim parametrima na kraju datoteke:
vpnuser pptpd 1 *
“pptpd” vrijednost je naziv servisa koji smo naveli u datoteci “pptpd-opcije”. Umjesto "*" možete odrediti fiksnu IP adresu. Kao rezultat, fajl “chap-secrets” trebalo bi izgledati ovako:
Da biste primijenili postavke, resetirajte pptpd uslugu i dodajte je u automatsko učitavanje.
sudo systemctl restart pptpd
sudo systemctl enable pptpd
Konfiguracija servera je završena.
Konfiguracija klijenta
otvoreno "Start" - "Postavke" - Mreža i Internet - "VPN" i kliknite “Dodaj VPN vezu”
Unesite parametre veze u prozor koji se otvorio i kliknite “Spremi”
- VPN provajder: “Windows (ugrađeni)”
- Naziv veze: “vpn_connect” (možete odabrati bilo koji naziv)
- Ime ili adresa servera: (navedite eksternu IP adresu servera)
- Vrsta VPN-a: “Automatski”
- Vrsta podataka za prijavu: “Korisničko ime i lozinka”
- Korisničko ime: vpnuser (ime navedeno u datoteci “chap-secrets” na serveru)
- Password: 1 (kao u fajlu "chap-secrets")
Nakon spremanja parametara, vidjet ćete novu VPN vezu u prozoru. Kliknite lijevom tipkom miša na vezu i odaberite “Poveži se”. U slučaju uspješne veze, vidjet ćete “Povezano” status.
U Opcijama ćete pronaći interne adrese klijenta i servera. Polje “Adresa odredišta” prikazuje adresu eksternog servera.
Kada je povezan, interna IP adresa servera, 172.16.0.1 u našem slučaju, postaje default gateway za sve odlazne pakete.
Koristeći bilo koju online uslugu možete se uvjeriti da je vanjska IP adresa računala sada ista kao IP adresa vašeg VPN servera.
OpenVPN server
Konfiguracija servera
Hajde da promovišemo nivo dozvola trenutnog korisnika jer će nam za dalje konfigurisanje trebati root pristup.
sudo -s
Instalirajte sve potrebne pakete. Trebaće nam “Easy-RSA” paket za upravljanje ključevima za šifriranje.
apt install openvpn easy-rsa iptables-persistent
Dozvoli 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
Kreirajte direktorij s kopiranim datotekama iz paketa „Easy-RSA“ i uđite u njega.
make-cadir ~/openvpn
cd ~/openvpn
Generiranje infrastrukture javnih ključeva (PKI).
./easyrsa init-pki
Generirajte korijenski certifikat Certificate Authority (CA).
./easyrsa build-ca
Tokom procesa kreiranja, bit ćete upitani da postavite i zapamtite lozinku. Također ćete morati odgovoriti na pitanja i unijeti informacije o vlasniku ključa. Možete ostaviti zadane vrijednosti navedene u uglastim zagradama. Pritisnite "Enter" da biste završili unos.
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 servera.
./easyrsa sign-req server vpn-server
U ovom koraku odgovorite sa "da" da biste potvrdili potpis, a zatim unesite lozinku koja je kreirana tokom generisanja korijenskog certifikata.
Generirajte Diffie-Hellman parametre. Ovi parametri se koriste za sigurnu razmjenu ključeva između servera i klijenta.
./easyrsa gen-dh
Sve potrebne datoteke su generirane. Napravimo mapu "keys" u radnom direktoriju OpenVPN-a za pohranu ključeva i kopirajmo kreirane 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
Konfigurišite NAT koristeći iptables pravila. Kreirajte datoteku pod nazivom nat i otvorite ga za uređivanje u /etc/openvpn/ direktorij.
#!/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
Sačuvajte datoteku i učinite je izvršnom.
sudo chmod 755 /etc/openvpn/nat
Kopirajte predložak konfiguracije servera.
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/
Otvorite datoteku “/etc/openvpn/server.conf” za uređivanje, uvjerite se da sadrži sljedeće redove 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 serveru.
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 servera je završena!
Konfiguracija klijenta
Idite na službenu web stranicu OpenVPN-a “https://openvpn.net“, idite na “ZAJEDNICA” sekcija.
Pomaknite se prema dolje i preuzmite instalacijski program za vašu verziju operativnog sistema. 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će datoteke na serveru i prenijeti ih na klijentski računar:
- javni i privatni ključevi;
- kopiju ključa centra za sertifikaciju;
- predložak konfiguracijske datoteke.
Povežite se sa serverom, povećajte privilegije i idite do 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 kreiranja 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 sa "da" da biste potvrdili potpis, a zatim unesite lozinku koja je kreirana tokom generisanja korijenskog certifikata.
Radi lakšeg snalaženja, kreirajmo mapu pod nazivom 'client1' u početnom direktoriju i kopirajmo u nju sve datoteke namijenjene za prijenos na klijentski računar.
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” prilikom 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. Hajde da napravimo “mihail” vlasnik u našem slučaju.
chown -R mihail:mihail ~/client1
Idite na klijentski računar i kopirajte sadržaj “~/klijent1/” folder. 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 fajlove “ca.crt”, “client1.crt”, “client1.key” gde god želite. U našem slučaju, oni se nalaze u ovoj fascikli “c:\Program Files\OpenVPN\keys”, i modificiramo konfiguracijski fajl “client.ovpn” u “c:\Program Files\OpenVPN\config” direktorij.
Sada idemo na konfiguraciju klijenta. Otvorite fajl “c:\Program Files\OpenVPN\config\client.ovpn” u uređivaču teksta i uredite sljedeće redove:
#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 netaknuto.
Sačuvajte datoteku i pokrenite klijentsku aplikaciju “OpenVPN GUI”.
Desnom tipkom miša kliknite na ikonu aplikacije na traci zadataka i odaberite “Poveži se”. Ako je veza uspješna, ikona će postati zelena.
Koristite bilo koju uslugu na mreži kako biste bili sigurni da se vaša javna IP adresa promijenila i da je sada ista kao IP adresa servera.