Kako da namestite VPN na svom VPSu

BeotelNetovi virtuelni serveri (VPS) vam dozvoljavaju da imate svoje parče „digitalnog neba.“ Bez obzira što se radi o virtuelnim serverima, oni se ponašaju i mogu imate performanse (zavisi od izabrane konfiguracije) fizičkih mašina povezanih na Internet.

I kao svaki server, BeotelNetov VPS vam omogućava da na njemu instalirate šta god poželite. Softver za pokretanje svog VPNa (Virtual Private Network) je jedna od opcija uz pomoć koje možete sigurno povezati zaposlene u preduzeću ili čak više kancelarija koje se nalaze na različitim lokacijama. U ovom tekstu ćemo vam ukratko objasniti kako da to uradite koristeći za primer VPS sa CentOS Linux operativnim sistemom. Takođe ćemo naš VPN bazirati na OpenVPN protokolu podrška za koji je dostupna iz standardnih CentOS repozitorijuma.

Korak 1: Instaliranje OpenVPN paketa i podešavanje

Proces počinje logovanjem na svoj VPS, instaliranjem EPEL-a (Extra Packages for Enterprise Linux) i apdejtom:

yum install epel-release
yum update

Nakon toga sledi instalacija paketa OpenVPN i EasyRSA, koji služi za generisanje SSL ključeva i koji je takođe uključen u EPEL repozitorijum.

yum install openvpn
yum install easy-rsa

Sledi konfiguranje OpenVPN-a. Ako niste sigurni kako da to učinite, možete kopirati „sample“ konfiguracioni fajl koji sadrži komentare sa objašnjenjima:

cp /usr/share/doc/openvpn-2.4.6/sample/sample-config-files/server.conf /etc/openvpn

Nakon toga, sledi promena konfiguracionog fajla koristeći tekst editor:

vim /etc/openvpn/server.conf

Prvo, treba da promenite „default port“ i prokol:

port 443
proto tcp

Nakon toga ide promena lokacija gde se nalaze sertifikati:

ca /etc/openvpn/easy-rsa/pki/ca.crt
cert /etc/openvpn/easy-rsa/pki/issued/server.crt
key /etc/openvpn/easy-rsa/pki/private/server.key
dh /etc/openvpn/easy-rsa/pki/dh.pem

Sad treba da odkomentarišete sledeće linije da biste napravili podmrežu (subnetwork) koja alocira IP adrese korisnicima. Sam server dobija prvu adresu iz ove podmreže (10.8.0.1), dok korisnici dobijaju ostale (10.8.0.2, 10.8.0.3, itd).

topology subnet
server 10.8.0.0 255.255.255.0

Takođe je bitno da odkomentarišete i sledeću liniju, koja „objašnjava“ klijentima da sav saobraćaj ide preko VPNa.

push "redirect-gateway def1 bypass-dhcp"

Pošto ste sa sada instruisali server da ne koristi postojeće DNS servere, potrebno je definisati nove. Možete za primer koristiti popularne DNS servere koje obezbeđuje Google i CloudFlare:

push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 1.1.1.1"

Dalje, za dodatnu sigurnost, OpenVPN preporuka je da se uključi TLS autentikacija. Za to treba da komentarište liniju koja počinje sa „tls-auth“ i definičete ključ za enkripciju. U primeru koristimo „mykey.tls“.

tls-auth ta.key 0
tls-crypt mykey.tls

Dodatno možete pojačati sigurnost dodavanje ove linije:

remote-cert-eku "TLS Web Client Authentication"

Takođe, ako mislite da je potrebno, možete uključiti kompresiju tako što ćete odkomentarisati ove dve linije:

compress lz4-v2
push "compress lz4-v2"

Najzad, potrebno je odkomentarisati ove dve linije:

user nobody
group nobody

I promeniti poslednju liniju konfiguracionog fajla, zbog svoje nekompatibilnosti sa TCP protokolom.

explicit-exit-notify 0

Podešavanje je završeno. Sad je još potrebno da generišete statički ključ za enkripciju:

openvpn --genkey --secret /etc/openvpn/mykey.tls

Korak 2: Generisanje SSL ključeva i sertifikata

Sledi generisanje SSL ključeva i sertifikata. Za to je potrebno uneti sledeće komande i pratiti šta se dešava na ekranu. Kad vas sistem bude pitao da izaberete lozinku, zapišite je jer će vam trebati kasnije u toku procesa:

mkdir -p /etc/openvpn/easy-rsa
cp -r /usr/share/easy-rsa/3.0/* /etc/openvpn/easy-rsa
cd /etc/openvpn/easy-rsa
./easyrsa init-pki
./easyrsa build-ca
./easyrsa gen-req server nopass
./easyrsa sign-req server server
./easyrsa gen-dh

Dalje ćemo generisati ključ i sertifikat za „client1“:

./easyrsa gen-req client1
./easyrsa sign-req client client1

Na kraju je proces generisao sledeće fajlove:

/etc/openvpn/easy-rsa/pki/ca.crt
/etc/openvpn/easy-rsa/pki/issued/client1.crt
/etc/openvpn/easy-rsa/pki/private/client1.key
/etc/openvpn/mykey.tls

Korak 3: Konfiguracija sistema

OpenVPN je podešen, ključevi i sertifikati generisani, ali to nije sve. Sada je na redu konfigurisanje sistema, što između ostalog podrazumeva postavljanje pravila za firewall. Za primer ćemo koristiti konfigurisanje „firewalld“ programa.

Za to koristimo sledeće komande:

firewall-cmd --zone=trusted --add-service openvpn
firewall-cmd --zone=trusted --add-service openvpn --permanent
firewall-cmd --list-services --zone=trusted
firewall-cmd --add-masquerade
firewall-cmd --permanent --add-masquerade

Potom dodajemo pravilo rutiranja na mrežni interfejs:

VAR=$(ip route get 8.8.8.8 | awk 'NR==1 {print $(NF-2)}')
firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s 10.8.0.0/24 -o $VAR -j MASQUERADE

I najzad ponovo učitavamo „firewalld“

firewall-cmd –reload

U CentOS-u podrazumevano podešavanje ne dozvoljava prosleđivanje paketa. Da biste ovo promenili, potrebno je da editujete fajl „/etc/sysctl.conf“ i dodate sledeću liniju:

net.ipv4.ip_forward=1

Sada restartujte mrežu i… skoro ste spremi:

sysctl –p
systemctl restart network

Korak 4: Pokretanje servisa

Sve je spremno da vaš VPN počne da radi. Pokrenite ga i uključite da se svaki put pokreće prilikom restartovanja sistema:

systemctl start openvpn@server.service
systemctl enable openvpn@server.service

Nakon toga još samo proverite da li sve funkcioniše kako treba:

systemctl status openvpn@server.service

Čestitamo. Upravo ste postavili VPN na svoj server.

A može i drugačije

Naravno, postoje i gotova VPN rešenja koja rade bez sopstvenog servera. Ima ih raznih i manje više svi dolaze sa podrškom za OpenVPN ali i druge protokole. O tome nekom drugom prilikom. Možete pogledati kakvih sve VPN servisa ima sa sajta VPN Reports. Sigurni smo da ćete tamo naći neki koji vam odgovara.