Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • Windows 10
  • Instaliranje openvpn-a na ubuntu 16.04. Instalacija i konfiguracija OpenVPN klijenta na Ubuntu

Instaliranje openvpn-a na ubuntu 16.04. Instalacija i konfiguracija OpenVPN klijenta na Ubuntu

Napravio sam posao povezivanja distribuiranih LAN-ova zajedno. Prvo iskustvo je bilo postavljanje servera za FreeBSD, ali onda je, kako kažu, krenulo. Do danas, skoro svi serveri koje sam konfigurisao koriste Ubuntu Linux ove ili one verzije.

A nedavno sam to primijetio među pohranjenim otpadom /etc/init.d, skromno skrivajući skriptu sa imenom . "I šta?" - odmah će upitati iskusni administrator. Stvar je u tome što je do nedavno podizanje mrežnih interfejsa, uključujući TUN, organizovao sam isključivo preko /etc/network/interfaces, rad sa opcijama pre-up da pokrenete OpenVPN demon i opcije pre-down da to zaustavim. Sva ta "sramota" je svuda razvodnjena raznim komandama kojima se manipuliše tabelama rutiranja... Uopšteno, dobija se prilično glomazna slika. U principu, sve je funkcionisalo prilično dobro, ali pošto postoji drugačiji (Ubuntu-način?) način koji su programeri obezbedili, zašto ga ne iskoristiti, pogotovo jer će to značajno olakšati /etc/network/interfaces. Pa šta sam dobio.

Instaliranje OpenVPN-a

Instaliranje OpenVPN-a na Ubuntu ne zahtijeva nikakve trikove sa ušima:

$ sudo apt-get install openvpn

Obavezno potvrdite instalaciju svih ovisnosti.

Oni koji žele/trebaju da instaliraju OpenVPN iz izvora morat će se upoznati sa .

Ako vas zanimaju binarni paketi za druge platforme, posjetite .

Lokacija ključnih fajlova

Budući da sam u ovom članku odlučio govoriti o konfiguraciji klijentskog dijela OpenVPN-a, pretpostavit ćemo da već imate datoteke ključa za šifriranje (dao vam ih je administrator OpenVPN servera). Broj i tip ključeva zavisi od toga kako je konfigurisan OpenVPN server na koji se povezujete. Ovaj članak pretpostavlja da se tri datoteke koriste za šifriranje i autentifikaciju:

  • privatni ključ za šifriranje klijenta u formatu .pem(pozovimo fajl client.key);
  • CA-potpisani klijentski certifikat u formatu .pem, (dajmo ime fajlu client.crt);
  • certifikat certifikacionog tijela servera u formatu .pem, koji je potpisao fajl client.crt(pozovimo fajl ca.crt)

Nakon što dobijete ključ i certifikate, obavezno vodite računa o njihovoj sigurnosti. Dobro rješenje bi bilo staviti sve ove dobrote na fleš disk šifriran, na primjer, . U ovom članku ćemo pretpostaviti da se ključevi i certifikati nalaze u direktoriju /media/keys. Također, obavezno ostavite minimalna prava pristupa direktoriju s ključem i certifikatima:

$ sudo chown -R root.root /media/keys
$ sudo chmod 0700 /media/keys
$ sudo chmod 0600 /media/keys/*
# ls -la /media/keys
drwx------ 2 root root 1024 18.08.2010 15:32 .
drwx------ 5 root root 1024 18.08.2010 15:24 ..
-rw------- 1 root root 1265 2010-08-18 22:27 ca.crt
-rw------- 1 root root 3821 18.08.2010 15:13 client.crt
-rw------- 1 root root 887 18.08.2010 15:13 client.key

Konfiguracijski fajl

OpenVPN konfiguracijske datoteke se obično nalaze u direktoriju ili /usr/local/etc/openvpn. Za ovaj članak, pretpostavljam da ste instalirali OpenVPN iz Ubuntu spremišta i da je konfiguracijski direktorij .

Ako se povezujete na OpenVPN server koji niste podesili, tada bi vam taj neko obično trebao dati "osnovnu" konfiguracijsku datoteku koja sadrži minimalni potrebni skup parametara. Među OpenVPN konfiguracionim parametrima, pojedinačnim za host klijenta, najčešće su staze do fajlova ključeva i sertifikata, kao i putanje do eksternih skripti, inicijalizacionih skripta.

Recimo da je server na koji se povezujete pozvan myvpnsrv.com. Zgodno je imenovati konfiguracijske datoteke (može ih biti više ako koristite više veza ili više opcija povezivanja) prema imenima servera. Dakle, u našem primjeru, konfiguracijska datoteka će se nalaziti u /etc/openvpn/myvpnsrv.conf sa sljedećim sadržajem:

klijent
daljinski myvpnsrv.com
ca /media/keys/ca.crt
ključ /media/keys/client.key
cert /media/keys/client.crt
daemon
dev tune
proto udp
comp lzo

Prvi red govori OpenVPN-u da će se veza uspostaviti u klijentskom modu.

Vrijednost parametra daljinski specificira ime hosta ili IP adresu servera.

Vrijednosti parametara ca, ključevi i cert definirati staze do datoteke CA certifikata, privatnog ključa i certifikata klijenta, respektivno.

Određivanje parametra daemon mi činimo da se OpenVPN otkači od konzole i radi u pozadini.

Parametar dev specificira tip mrežnog sučelja koji će se koristiti za razmjenu šifriranog prometa sa serverom. Mogla bi napraviti razliku tun ili tap. Možete saznati fundamentalnu razliku između ova dva tipa sučelja i.

Parametar proto definira protokol u koji će šifrirani promet biti umotan. koristite UDP.

Prisutnost parametara comp lzo prisiljava OpenVPN da komprimira promet, što je vrlo korisno kada postoji "uzak" kanal za prijenos podataka.

Rutiranje i eksterne skripte

OpenVPN, između ostalog, omogućava pokretanje eksternih programa nakon pokretanja, kao i prije i nakon zaustavljanja demona. Vrlo zgodna stvar ako trebate šamanirati sa tabelama rutiranja prilikom podizanja tunela.

Odmah uočite jednu suptilnu tačku. Da bi OpenVPN demon mogao da pokreće eksterne programe, to mu mora biti izričito dozvoljeno prosleđivanjem parametra sigurnost skripte sa vrijednošću koja nije niža od 2. Sigurnost, međutim.

Da biste odredili putanju do programa koji se automatski poziva nakon pokretanja mrežnog sučelja, koristite parametar gore, prenoseći mu putanju do programa i, eventualno, dodatne parametre kao vrijednost.

Za pokretanje eksternog programa nakon što je mrežni interfejs onemogućen, koristite parametar dolje, govoreći mu, naravno, putanju i parametre pozvanog programa. Ako je potrebno da se program pokrene prije onemogućavanjem sučelja također navedite parametar down-pre bez značenja.

Sada malo o specifičnostima pozivanja eksternih programa od strane OpenVPN demona. Činjenica je da se oni ne samo "glupo" pozivaju, već im se prosljeđuju još neki parametri veze, što je vrlo zgodno kada radite s tabelama rutiranja.

Format pozivanja eksternog programa od strane OpenVPN demona tokom inicijalizacije tun interfejs sljedeći:

tun_dev tun_mtu link_mtu ifconfig_local_ip ifconfig_remote_ip

  • tundev— naziv mrežnog interfejsa, na primjer tun1;
  • tun_mtu- MTU mrežnog interfejsa;
  • link_mtu— MTU veze;
  • ifconfig_local_ip— IP-adresa klijenta (na „našoj“ strani);
  • ifconfig_remote_ip— IP adresa klijenta (na strani servera);
  • u tome- prošao ako je program pozvan tokom pokretanja demona;
  • restart— prenosi se ako je program pozvan tokom ponovnog pokretanja demona (na primjer, ako je došlo do gubitka veze);

Za dodirnite interfejs format je isti, osim što umjesto ifconfig_remote_ip preneseno ifconfig_netmask, koji sadrži masku podmreže u kojoj se nalazi naš klijent.

Takođe, treba napomenuti da svi parametri koje ćete proslediti eksternom programu koriste gore/dolje, bit će zamijenjen prije gore navedene parametre.

Teorija je, mislim, dovoljna, pređimo na posao. Recimo da trebate na neki način izmijeniti tabelu rutiranja vašeg hosta kada pokrenete/restartirate/zaustavite OpenVPN demon. Za dva mrežna sučelja riješio sam ovaj problem sa sljedećom bash skriptom:

#!/bin/bash slučaj $(1) u "gore") slučaj $(2) u "tun0") ip pravilo dodaj ... ip ruta dodaj ... ;; "tun1") ip pravilo dodaj ... ip ruta dodaj ... ;; esac ;; "down") case $(2) u "tun0") ip pravilo del ... ip route del ... ;; "tun1") ip pravilo del ... ip ruta del ... ;; esac ;; esac

A skriptu pozivaju dva OpenVPN parametra:

gore "/usr/local/bin/routes.sh gore"
dolje "/usr/local/bin/routes.sh dolje"

To jest, skripta koja se izvodi prima otprilike sljedeće parametre:

  • $1 gore ili dolje;
  • $2 - naziv interfejsa. U sistemu koji razmatram, može biti tun0 ili tun1;
  • $3 - na primjer, 1500;
  • $4 - na primjer, 1542
  • $5 - na primjer, 10.8.0.5
  • $6 - na primjer, 10.8.0.6
  • $7 u tome ili restart(Parametar je potpuno zanemaren od strane mene, tako da se manipulacije rutama uvijek izvode, čak i ako mrežno sučelje nije onemogućeno, već se dogodilo samo „obično“ ponovno pokretanje demona zbog nedostatka komunikacije).

Podrazumijeva se da možete (i trebate) koristiti vrijednosti parametara $3 - $6. Na primjer, ako želite neki dio prometa "prokrenuti" kroz VPN tunel, onda možete koristiti nešto poput ovoga u skripti:

ip route add from 192.168.0.0/24 preko $(6)

koristeći vrijednost varijable $6 za određivanje adrese rutera kroz koji se usmjerava promet.

Pokretanje i zaustavljanje demona

Zapravo, čemu svi ti plesovi sa pozivanjem vanjskih skripti i napuštanjem starog dobrog /etc/network/interfaces? I evo šta.

Otvori datoteku /etc/default/openvpn i u varijablu AUTOSTART navedite ime datoteke (ili nekoliko, odvojenih razmakom) konfiguracije iz direktorija, odgrizajući ekstenziju “.conf”. Za naš primjer, to bi izgledalo ovako:

AUTOSTART="myvpnsrv"

Ili, ako želite da OpenVPN uspostavi veze na osnovu svih konfiguracijskih datoteka koje pronađe:

Sada je "dovoljna jedna tableta" u obliku:

sudo servis openvpn start

i skripta iz /etc/init.d/openvpnće pažljivo pokrenuti OpenVPN za sve pronađene konfiguracije.

Zaustavljanje demona također nije teško:

sudo service openvpn stop

I na kraju. Ako trebate osigurati da nijedna od postojećih konfiguracijskih datoteka nije obrađena, dovoljno je definirati in /etc/default/openvpn.

Prava privatna virtuelna mreža ili virtuelna privatna mreža (VPN) je šifrovani povezani tunel između dve mreže koji povezuje dve pouzdane tačke. Ovo nije HTTPS web protokol, koji smatra da su svi klijenti pouzdani. Samo oni klijenti koji imaju posebne pristupne ključeve mogu se povezati na VPN.

Koncept VPN-a postao je vrlo rastegnut ovih dana, s pojavom privatnih virtuelnih mreža koje vjeruju svima i širenjem HTTPS-a. Mnogi VPN-ovi su komercijalna rješenja s minimalnom konfiguracijom koja omogućava zaposlenicima daljinski pristup. Ali ne vjeruju svi ovim odlukama. Privatna virtuelna mreža povezuje dvije mreže u jednu, kao što je uredska mreža i kućna mreža zaposlenika. VPN server je neophodan kako bi server i klijent mogli međusobno da se autentifikuju.

Postavljanje provjere autentičnosti servera i klijenta zahtijeva puno posla, pa stoga komercijalna rješenja s minimalnim postavkama gube u tom pogledu. Ali zapravo nije tako teško postaviti OpenVPN server. Trebat će vam dva čvora na različitim mrežama za postavljanje testnog okruženja, na primjer, možete koristiti nekoliko virtuelnih mašina ili pravih servera. Kao što ste već shvatili, ovaj članak će pokriti postavku OpenVPN-a u Ubuntu-u za stvaranje punopravne privatne virtualne mreže.

Na obje mašine bi trebao biti instaliran OpenVPN, to je prilično popularan program, tako da ga možete instalirati iz službenih spremišta. Takođe nam je potreban Easy-RSA za rad sa tajnim ključevima. Da biste instalirali programe u Ubuntu, koristite sljedeću naredbu:

sudo apt install openvpn easy-rsa

Oba paketa moraju biti instalirana i na serveru i na klijentu. Oni će biti potrebni za konfiguraciju programa. Prva faza članka o instalaciji i konfiguraciji openvpn-a je sada završena.

Postavljanje certifikacijskog tijela

Prva stvar koju treba učiniti je postaviti odgovarajuću infrastrukturu javnog ključa na serveru. Smatramo da je server mašina na koju će se korisnici povezati. Posjedovanje vlastitog CA ima nekoliko prednosti, imat ćete vlastiti CA koji olakšava distribuciju i upravljanje ključevima. Na primjer, možete opozvati klijentske certifikate na serveru. Također, sada nije potrebno pohranjivati ​​sve klijentske certifikate, dovoljno će biti da certifikacijski autoritet zna da je certifikat potpisan od strane CA. Pored složenog sistema ključeva, možete koristiti statičke ključeve ako želite da odobrite pristup samo nekoliko korisnika.

Imajte na umu da svi tajni ključevi moraju biti na sigurnom mjestu. U OpenVPN-u, javni ključ se naziva certifikat i ima ekstenziju .crt, a privatni ključ se naziva ključ, njegova ekstenzija je .key.

Prvo kreirajte fasciklu za skladištenje Easy-RSA sertifikata. U stvari, OpenVPN konfiguracija se radi ručno, tako da se folder može postaviti bilo gdje:

sudo mkdir /etc/openvpn/easy-rsa

Zatim kopirajte sve potrebne easy-rsa skripte u ovaj folder:

cd /etc/openvpn/easy-rsa/

sudo -i
# izvor ./vars
# ./clear-all
# ./build-ca

Prvom komandom prelazimo na konzolu u ime superkorisnika, drugom učitavamo varijable okruženja iz ./vars datoteke. Komanda ./clear-all kreira fasciklu ključeva ako ne postoji i briše njen sadržaj. I posljednja naredba inicijalizira naše ovlaštenje za izdavanje certifikata. Sada su se svi potrebni ključevi pojavili u folderu .keys:

Postavljanje klijentskih certifikata

sudo cp -R /usr/share/easy-rsa /etc/openvpn/

Sada moramo kopirati certifikat, .crt datoteku, u /etc/openvpn folder na svim klijentima. Na primjer, preuzmimo ovu datoteku za našeg klijenta koristeći scp:

sudo scp user@host: /etc/openvpn/easy-rsa/keys/ca.crt /etc/openvpn/easy-rsa/keys

Tek sada možete kreirati svoj privatni ključ na osnovu CA certifikata:

cd /etc/openvpn/easy-rsa/

sudo -i
# izvor ./vars
# build-req Sergiy

Imajte na umu da ca.crt mora biti u folderu ključeva, inače ništa neće raditi. Sada će uslužni program kreirati ključ na osnovu kojeg se možete povezati na OpenVPN server, ali ga i dalje morate potpisati na serveru. Pošaljite rezultirajuću .csr datoteku na server koristeći isti scp:

scp /etc/openvpn/easy-rsa/keys/Sergiy.csr user@host:~/

Zatim, na serveru u folderu /etc/openvpn/easy-rsa, trebate izvršiti naredbu za potpisivanje certifikata:

./sign-req ~/Sergiy

Potpis sertifikata mora biti verifikovan. Tada će program prijaviti da je potpisan i dodan u bazu podataka. .crt datoteka će se pojaviti u folderu sa csr certifikatom, koji se mora vratiti nazad na klijentsku mašinu:

sudo scp user@host:/home/Sergiy.crt /etc/openvpn/easy-rsa/keys

Tek nakon toga server i klijent imaju sve potrebne ključeve za povezivanje i uspostavljanje komunikacije. Ostalo je još nekoliko postavki. Ako planirate koristiti TLS enkripciju, tada morate kreirati Diffie-Huffman skup podataka na serveru, za to koristite naredbu:

Konfigurisanje OpenVPN-a

Sada konfigurišete OpenVPN server. Podrazumevano, nema ništa u fascikli OpenVPN konfiguracionih datoteka. Morate ih sami kreirati, ovisno o tome šta planirate konfigurirati, server ili klijent. Potrebna OpenVPN konfiguraciona datoteka može se naći na /usr/share/doc/openvpn/examples/sample-config-files/. Prvo, napravimo konfiguracijsku datoteku za server:

zcat /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz | sudo tee /etc/openvpn/server.conf

Ovdje morate podesiti nekoliko postavki:

luka i proto- port i protokol na kojem će program raditi;

luka 1194
proto udp

Svi kreirani ključevi moraju biti registrirani u konfiguracijskoj datoteci. Naši ključevi su pohranjeni na /etc/openvpn/easy-rsa/keys:


cert /etc/openvpn/easy-rsa/keys/ca.crt
ključ /etc/openvpn/easy-rsa/keys/ca.key
dh /etc/openvpn/easy-rsa/keys/dh.pem

Postavili smo niz adresa za virtuelnu mrežu, naš server će biti dostupan na prvoj od njih - 10.8.0.1:

server 10.8.0.0 255.255.255.0

Nakon završetka konfiguracije, sačuvajte promjene u datoteci, možete ili sami zalijepiti cijelu konfiguraciju ili urediti datoteku s primjerom. Spremne radne postavke servera:

luka 1194
proto udp
comp lzo
dev tune
ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt
cert /etc/openvpn/easy-rsa/2.0/keys/ca.crt
dh /etc/openvpn/easy-rsa/2.0/keys/dh2048.pem
topologija podmreže
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt

sudo cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/client.conf

Možete kreirati više datoteka za konfiguraciju klijenta za povezivanje na različite servere. Otvorite konfiguracionu datoteku i promijenite sljedeće parametre u njoj:

daljinski je adresa vašeg OpenVPN servera, adresa i port moraju odgovarati onima koji su konfigurisani na serveru, na primjer:

daljinski 194.67.215.125 1194

ca- ključ koji ste dobili od certifikacijskog tijela, locirali smo ga u /etc/openvpn/ folderu.

certifikat i ključ- ovo su javni i privatni ključevi klijenta, uz pomoć njih ćete se povezati sa serverom. Kao što se sećate, sačuvali smo ih u fascikli /etc/openvpn/easy-rsa/keys/.

ca /etc/openvpn/easy-rsa/keys/ca.crt

Ostale postavke možete ostaviti kako jesu. Evo kompletne konfiguracijske datoteke koju možete kopirati:

klijent
dev tune
proto udp
daljinski 194.67.215.125 1194
resolv-retry beskonačno
nobind
persist key
persist-tun
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/Sergiy.crt
ključ /etc/openvpn/easy-rsa/keys/Sergiy.key
tls-auth ta.key 1
comp lzo
glagol 3

Sačuvajte postavke, klijent je sada spreman za povezivanje. Imajte na umu da bi se konfiguracijske datoteke trebale podudarati što je više moguće, jer nedostatak određenih opcija u jednoj od datoteka može dovesti do grešaka. To ne znači da će datoteke biti identične, ali osnovni openvpn parametri bi trebali biti isti. Sve što treba da uradite je da pokrenete OpenVPN na ovoj mašini koristeći ovaj konfiguracioni fajl:

openvpn /etc/openvpn/client.conf

Gotovo, sada sve radi, ako pokrenete ifconfig, vidjet ćete da je tun0 interfejs dodat:

Također možete pokušati pingovati adresu 10.8.0.1, ovo je adresa koju smo konfigurirali za naš OpenVPN server, ping paketi će se slati normalno. Ako paketi ne dolaze, ili nešto drugo ne radi, obratite pažnju na izlaz oba programa, može biti nekih grešaka ili upozorenja, također provjerite da li firewall servera dozvoljava pristup izvana preko udp na portu 1194. Možete također pokrenite server ili klijent postavljanjem nivoa detaljnosti na maksimalan glagol 9 u konfiguraciji. Vrlo često ovo pomaže da se shvati zašto nešto ne radi. Ali još uvijek ne možete usmjeriti saobraćaj kroz tunel. Da biste to učinili, morate omogućiti prosljeđivanje i dodati nekoliko iptables pravila. Prvo, dozvoljavamo tranzit paketa na serveru:

sysctl -w net.ipv4.ip_forward=1

Zatim dodajte ova pravila. Dozvoljavamo svima da se povežu na naš server:

iptables -A INPUT -p udp --dport 1194 -j PRIHVATI

Dozvoljavamo OpenVPN korisnicima pristup internetu:

iptables -I PROSLJEDI -i tun0 -o eth0 -j PRIHVATI
# iptables -I PROSLJEDI -i eth0 -o tun0 -j PRIHVATI
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

zaključci

U ovom članku pogledali smo kako je OpenVPN Ubuntu instaliran i konfiguriran, kao i kako konfigurirati openvpn da radi s provjerom autentičnosti ključa. Organizacija privatnih virtuelnih mreža može biti veoma korisna ne samo u organizacijama, već i, recimo, za razmenu podataka između vaša dva računara ili za povećanje bezbednosti mreže.

VPN (Virtual Private Network) je tehnologija koja vam omogućava da povežete računare preko Interneta kao da su na istoj lokalnoj mreži. Kao rezultat, možemo kombinirati urede smještene u različitim gradovima i državama u jednu mrežu.
Instaliranjem VPN servera kod kuće, a klijentskog dijela na pametnom telefonu, možete pristupiti internetu preko javnih WiFi tačaka bez straha da će vaše lozinke biti presretane.
Iznajmljivanje servera u stranom data centru košta od 5 dolara mjesečno, a postavljanjem VPN-a u američkoj regiji dobijamo pristup Spotify, Pandora, Hulu i drugim servisima koji nisu dostupni u vašoj zemlji, a cenzura interneta se više ne tiče ti.

1. Instalirajte OpenVPN.

Ažurirajmo naš server i instalirajmo OpenVPN i certifikacijski autoritet.

sudo apt update sudo apt upgrade sudo apt install openvpn easy-rsa

OpenVPN je virtualna privatna mreža koja koristi TLS/SSL za šifriranje prometa. A to znači da su nam potrebni pouzdani certifikati.

2. Uspostavljanje certifikacijskog tijela

Postavite certifikacijsko tijelo.

Make-cadir ~/openvpn-ca cd ~/openvpn-ca nano vars

Pronađite sljedeći isječak:

. . . . . izvoz KEY_COUNTRY="US" izvoz KEY_PROVINCE="CA" izvoz KEY_CITY="SanFrancisco" izvoz KEY_ORG="Fort-Funston" izvoz KEY_EMAIL=" [email protected]" export KEY_OU="Moja organizaciona jedinica" . . . .

i zamijenite svojim podacima

. . . . . export KEY_COUNTRY="RU " export KEY_PROVINCE="SPb " export KEY_CITY="Sankt-Peterburg " export KEY_ORG="site" export KEY_EMAIL=" [email protected] site " export KEY_OU="IT " . . . .

Nekoliko redova ispod promijenite vrijednost KEY_NAME

Izvezi KEY_NAME="server" cd ~/openvpn-ca izvorne vars

Kao odgovor, sistem bi trebao izdati:

NAPOMENA: Ako pokrenete ./clean-all, ja ću raditi rm -rf na /home/sammy/openvpn-ca/keys

Za svaki slučaj, očistite direktorij svih ključeva:

./clean-all

i kreirajte root CA:

./build-ca

Tražene vrijednosti će biti automatski zamijenjene iz vars datoteke, koju smo uredili malo iznad. Samo pritisnite Enter da potvrdite svoj izbor.

Instalirali smo certifikacijski organ koji ćemo koristiti za kreiranje ostalih datoteka koje su nam potrebne.

3. Kreirajte certifikat, ključ i datoteke za šifriranje za server

Prvo, kreirajmo OpenVPN certifikat i ključeve za server. Da biste to učinili, pokrenite sljedeću naredbu:

./build-key-server

Slažemo se sa svim zadanim vrijednostima, na kraju dva puta biramo “y”.
Sada generirajmo ključeve Diffie-Hellman protokola pomoću naredbe:

./build-dh

i HMAC potpis kako bi se poboljšala sposobnost servera da provjeri integritet i autentičnost prenesenih TSL podataka:

Openvpn --genkey --tajni ključevi/ta.key

4. Kreirajte certifikat i par ključeva za klijenta

Razmotrite proceduru za kreiranje ključa i certifikata za klijent1. Ako postoji više klijenata, proces kreiranja je sličan.Za automatsko povezivanje kreiraćemo fajl bez lozinke. Koristimo naredbu build-key:

Cd ~/openvpn-ca izvorni vars ./build-key client1

5. Podešavanje OpenVPN servisa

Kopirajte generirane datoteke (sertifikat i ključ ovlaštenja za certifikate, certifikat i ključ servera, HMAC potpis, Diffie-Hellman fajl) iz ~/openvpn-ca/keys direktorija u /etc/openvpn

Cd ~/openvpn-ca/keys sudo cp ca.crt ca.key server.crt server.key ta.key dh2048.pem /etc/openvpn

Gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz | sudo tee /etc/openvpn/server.conf sudo nano /etc/openvpn/server.conf

Pronađimo HMAC odjeljak i dekomentirajmo red sa tls-auth, a također dodamo parametar key-direction:

Tls-auth ta.key 0 # Ova datoteka je tajni ključ-smjer 0

Zatim tražimo odjeljak za šifriranje i dekomentiramo red sa AES-128-CBC šifrom i dodajemo HMAC algoritam nakon njega:

Šifra AES-128-CBC auth SHA256

I na kraju, pronađite korisničke i grupne linije i dekomentirajte ih:

Korisnik nobody group nogroup

6. Omogućite OpenVPN uslugu

Da bismo naš server koristili za predviđenu namjenu, potrebno je da bude u mogućnosti da preusmjerava promet.

sudo nano /etc/sysctl.conf

Pronađite i dekomentirajte red:

net.ipv4.ip_forward=1

Da biste primijenili promijenjene postavke, pokrenite:

sudo sysctl -p

Hajde da zapišemo kako će se naš server pokrenuti. Pošto je ime konfiguracionog fajla server.conf, daćemo sledeću naredbu:

sudo systemctl start [email protected]

Provjerite radi li server:

sudo systemctl status [email protected]

i da li je tun interfejs podignut

ip addr show tun0

Ako sve radi, dodajte postavke za automatsko učitavanje:

sudo systemctl omogući [email protected]

7. Skripta za postavljanje klijenata.

mkdir -p ~/client-configs/files chmod 700 ~/client-configs/files cp /usr/share/doc/openvpn/ examples/sample-config-files/ client.conf ~/client-configs/base.conf

Hajde da napravimo neke izmene u fajlu base.conf

nano ~/client-configs/base.conf . . . # Ime hosta/IP i port servera. # Možete imati više udaljenih unosa # za balans opterećenja između servera. IP_adresa udaljenog servera 1194 . . .

Umjesto server_IP_address, upisaćemo ip adresu našeg OpenVPN servera.

proto udp korisnik nobody group nogroup

Certifikate i ključeve ćemo pohraniti direktno u konfiguracijski fajl, koji ćemo kreirati sljedeće. Pa hajde da prokomentarišemo redove ca, cert i ključ

# SSL/TLS parms. # Pogledajte konfiguracioni fajl servera za više # opisa. Najbolje je koristiti # zaseban par datoteka .crt/.key # za svakog klijenta. Jedna ca # datoteka se može koristiti za sve klijente. #ca ca.crt #cert client.crt #key client.key

Dovedemo postavke klijentskog dijela na slična podešavanja servera.

Provjerite na svom klijentskom sistemu /etc/openvpn/update-resolv-conf. Ako jeste, posljednja tri reda moraju biti dekomentirana.

šifra AES-128-CBC auth SHA256 ključ-smjer 1 # script-security 2 # gore /etc/openvpn/update-resolv-conf # dolje /etc/openvpn/update-resolv-conf

Pa, konačno, napravimo skriptu s kojom ćemo kreirati konfiguracijske datoteke za klijente.

Nano ~/client-configs/make_config.sh

Umetni tekst:

#!/bin/bash # Prvi argument: Identifikator klijenta KEY_DIR=~/openvpn-ca/keys OUTPUT_DIR=~/client-configs/files BASE_CONFIG=~/client-configs/base.conf cat $(BASE_CONFIG) \<(echo -e "")\$(KEY_DIR)/ca.crt\<(echo -e "\n ") \ $(KEY_DIR)/$(1).crt \<(echo -e "\n ") \ $(KEY_DIR)/$(1).ključ \<(echo -e "\n ")\$(KEY_DIR)/ta.key\<(echo -e "") \ > $(OUTPUT_DIR)/$(1).ovpn

Sačuvajte i zatvorite datoteku, a zatim je učinite izvršnom:

Chmod 700 ~/client-configs/make_config.sh

8. Generiranje konfiguracijskih datoteka klijenta

cd ~/client-configs ./make_config.sh client1

Hajde da proverimo šta se desilo:

Ls ~/client-configs/files

kao rezultat bi trebali dobiti fajl

Client1.ovpn

sa postavkama veze, sertifikatima i ključem.

Ova datoteka mora biti isporučena na klijentski računar koristeći sigurnu vezu. Na Linuxu možete koristiti naredbu scp. Na klijentskom računaru pokrenite:

Scp [email protected] _server_ip :client-configs/files/client1.ovpn ~/

Kopirajte datoteku "client1.ovpn" sa udaljenog servera na lokalni računar.

9. Instaliranje konfiguracijskih datoteka klijenta

Sljedeće korake ćemo izvršiti samo na klijentskom računaru sa Ubuntuom. Instalirajte OpenVPN.

sudo apt-get update sudo apt-get install openvpn

Hajde da proverimo da li naš sistem ima /etc/openvpn/update-resolv-conf fajl

Ls /etc/openvpn

ako dobijemo:

Update-resolve-conf

uredite konfiguracijsku datoteku client1 .ovpn koju smo preuzeli sa servera

Nano client1 .ovpn

Dekomentirajmo sljedeće redove:

Script-security 2 gore /etc/openvpn/update-resolv-conf dolje /etc/openvpn/update-resolv-conf

Sačuvajmo i zatvorimo fajl.

Sada pokušavamo pokrenuti vezu:

sudo openvpn --config client1 .ovpn

Ako ste sve učinili kako treba, onda se kao rezultat povežite na server.

Redovni čitaoci ovog bloga su verovatno nekoliko puta u životu postavili OpenVPN. Ali mislim da će ova bilješka biti zanimljiva i korisna za početnike. Iz njega ćete naučiti kako postaviti vlastiti VPN server za pet minuta i zašto vam je zapravo potreban. Pa, s obzirom na vrijeme koje je potrebno da se registrujete na neki Amazon, DigitalOcean, Vscale.io ili FastVDS i platite VDS, vjerojatno će vam trebati ne pet minuta, već “punih” petnaest.

Dakle, zašto bi neko bio online preko VPN-a? Postoji niz razloga za to. Na primjer, kako vaše lozinke koje se prenose preko HTTP-a ne bi procurile kada sjedite sa otvorenih WiFi tačaka nepoznatog porijekla. U svakom slučaju, čak ni vaš uobičajeni provajder ne mora da zna na koje sajtove idete. Još jedna stvar - kako ne biste spalili svoj IP u IRC mrežama i drugim servisima s kojima radite. Ni oni ne moraju znati vašu lokaciju. Možda biste željeli isprobati i neku novu uslugu koja još nije dostupna korisnicima s ruskim IP-om. Osim toga, promet između vas i VPN servera nije samo šifriran, već i komprimiran, što često može ostaviti utisak bržeg interneta. OpenVPN također može biti koristan u brojnim drugim slučajevima, na primjer, da zaposleni pristupe internim resursima kompanije kada nisu u kancelariji.

Zašto VPN, a ne neka vrsta proxyja ili prosljeđivanja portova preko SSH-a, nadam se, također je jasno. Dovoljno je jednom konfigurisati VPN i odmah će sav promet svih aplikacija ići preko VPN servera, u komprimiranom i šifriranom obliku.

Da biste postavili svoj VPN, trebat će vam vlastiti server sa Ubuntu Linuxom (ili bilo kojim drugim Linuxom/*BSD-om, ali tada će vam biti prilično teško pratiti upute u ovoj napomeni), kao i root prava na njemu. Ako već imate server, u redu. Ako ne, nemojte se uzrujati. Ovih dana možete kupiti odgovarajući VDS/VPS za smiješnih 5 dolara mjesečno ili čak manje. Postoje desetine kompanija koje nude relevantne usluge, neke su navedene na početku napomene. Lično, preporučujem da pobliže pogledate DigitalOcean. Ali nemojte biti previše lijeni da sami proučite problem, jer dok pročitate ove redove, situacija na VDS tržištu može se promijeniti.

Idemo na server, postajemo root, kažemo:

apt-get update
apt-get install openvpn

OpenVPN je nekada uključivao uslužni program zvan easy-rsa za generiranje ključeva i certifikata. Počevši od verzije 2.3, ovaj uslužni program je izbačen iz paketa, tako da ćete ga morati sami preuzeti i izgraditi:

cd/tmp
wget https:// github.com/ OpenVPN/ easy-rsa/ archive/ master.zip
apt-get install unzip
raspakujte master.zip
cd easy-rsa-master
./ build/ build-dist.sh
tar xvzf ./EasyRSA-git-development.tgz
cd EasyRSA-git-development

Generišemo sve potrebne ključeve i sertifikate. Pripremite se za unos lozinki za njih. Budući da postavljamo lični VPN server, čini se da možete koristiti jednu lozinku, ali autentičniju:

./easyrsa init-pki
./easyrsa build-ca
./easyrsa build-server-full server
./easyrsa build-client-full client1
./ easyrsa gen-dh

Posljednja naredba može potrajati nekoliko minuta.

Primljene ključeve i certifikate prenosimo u /etc/openvpn/ direktorij:

mv ./ pki/ dh.pem / etc/ openvpn/ dh.pem
mv ./ pki/ private/ client1.key / etc/ openvpn/
mv ./ pki/ private/ server.key / etc/ openvpn/
mv ./pki/ca.crt/etc/openvpn/
mv ./ pki/ issued/ client1.crt / etc/ openvpn/
mv ./ pki/ issued/ server.crt / etc/ openvpn/

U istom direktoriju kreirajte server.conf datoteku:

server mode
dev tune
server 10.128.0.0 255.255.255.0
pritisnite "redirect-gateway def1"
# bitan! u suprotnom idemo na DNS provajdera
pritisnite "dhcp-option DNS 8.8.8.8"
tls server
ca ca.crt
certserver.crt
keyserver.key
dh dh.pem
proto tcp-server
luka 1194
# klijenata se viđaju
od klijenta do klijenta
comp lzo
održati u životu 10 120
glagol 4
šifra AES-256-CBC
korisnik niko
grupa nema grupa
maksimalni broj klijenata 10

Pokušajmo pokrenuti OpenVPN. Prilikom pokretanja, od vas će se tražiti da unesete lozinku. U skladu s tim, nakon ponovnog pokretanja, morat ćete ručno podići OpenVPN. Ali pošto postavljamo lični VPN, ovo nije veći problem nego imati ključeve u jasnim, ili još gore, sačuvanim lozinkama. Pokrećemo:

servis openvpn start

Provjeravamo:

netstat-tuwpan

Server bi trebao osluškivati ​​port 1194. Ako nije, popušite /var/log/syslog.

Sada za klijentsku stranu. Potrebni su nam fajlovi client1.crt, client1.key i ca.crt:

mkdir vpn
cd vpn
scp vpn-server:/ etc/ openvpn/ client1.crt ./
scp vpn-server:/ etc/ openvpn/ client1.key ./
scp vpn-server:/ etc/ openvpn/ ca.crt ./

Kreirajmo client.conf fajl:

klijent
proto tcp
dev tune
#!!! zamijeniti pravom IP adresom servera
daljinski 123.45.67.89 1194

# sljedeća dva reda su relevantna samo za *nix sisteme
# u praksi nisu baš zgodni, jer OpenVPN to neće moći
# u redu je počistiti za sobom kad završiš

# korisnik niko
#group nogroup

Uporni ključ
persist-tun
ca ca.crt
certclient1.crt
ključ klijent1.ključ
šifra AES-256-CBC
comp lzo
glagol 3

Prešli smo na server, pažljivo pročitali dnevnike:

sudo openvpn --config client.conf

U sljedećem terminalu kažemo:

ping 10.128.0.1
traceroute mail.ru

Ako je sve urađeno kako treba, videćete da pingovi uspešno dostižu 10.128.0.1 (prva komanda), ali paketi ne prolaze nigde (druga komanda). To je zato što smo zaboravili podesiti NAT na serveru. Što se meni lično čini čudnim. Nejasno se sjećam da kada sam ranije stavio OpenVPN na FreeBSD, ovaj korak nije bio potreban. Međutim, možda grešim.

Na serveru otvorite datoteku /etc/sysctl.conf i dekomentirajte red u njoj:

net.ipv4.ip_forward=1

Kako bismo izbjegli ponovno pokretanje, kažemo:

echo 1 >> / proc/ sys/ net/ ipv4/ conf/ all/ prosljeđivanje

iptables -A NAPRIJED -s 10.128.0.0/ 24 -j PRIHVATI
iptables -A NAPRIJED -d 10.128.0.0/ 24 -m stanje \
--stanje UTVRĐENO, POVEZANO -j PRIHVATI
iptables -t nat -A POSTROUTING -s 10.128.0.0/ 24 \
-j SNAT --za izvor 123.45.67.89

... gdje je 123.45.67.89 IP servera. Ponovo se povezujemo sa klijentom, pokušavamo da odemo na neki 2ip.ru ili - sada bi sve trebalo da radi. Ako nije tako, pušimo trupce. Ako je sve u redu, sačuvajte pravila zaštitnog zida na serveru:

iptables-save > /etc/iptables.rules

... i provjerite da li postoji linija u datoteci /etc/network/interfaces:

pre-up iptables-restore< /etc/iptables.rules

Ako je firewall već konfigurisan na serveru, može se ispostaviti da su pravila pohranjena u datoteci s imenom drugačijim od /etc/iptables.rules.

Može se reći ponovno pokretanje i provjerite da li se postavke nastavljaju nakon ponovnog pokretanja servera:

cat / proc/ sys/ net/ ipv4/ conf/ all/ prosljeđivanje
iptables -L -n

OpenVPN server će se, naravno, morati ručno ponovo pokrenuti.

Ostaje da napravimo završni dodir na klijentu. Činjenica je da (1) nije zgodno pokrenuti openvpn u zasebnom terminalu i vidjeti da li se tamo srušio. Također, (2) ako na klijentu kažete:

nm alat | grep DNS
sudo iptables -A OUTPUT -d 192.168.0.1 -j DROP
# ^ da biste uklonili pravilo, unesite istu naredbu sa -D umjesto -A

... gde je 192.168.0.1 DNS vašeg ISP-a (prikazuje uslužni program nm-tool), videćete da je rezolucija domena pokvarena i stoga klijent još uvek koristi DNS ISP-a. Možete ubiti dvije muhe jednim udarcem tako što ćete reći:

sudo apt-get install network-manager-openvpn-gnome

... i konfigurisanje VPN-a preko NetworkManager-a (ikona mreže u gornjem desnom uglu Unity-a). Ovo je lako učiniti, u stvari, morate ponoviti konfiguraciju teksta klijenta koristeći potvrdne okvire i polja za unos. Vrlo je lako razumjeti koji potvrdni okvir odgovara kojem redu u konfiguraciji. Glavna stvar je da ne budete previše lijeni da uđete u sve vrste naprednih mrežnih svojstava i drugih odjeljaka postavki. Ako negdje napravite grešku, problem se može lako dijagnosticirati pomoću /var/log/syslog datoteke.

Unatoč činjenici da se napomena pokazala prilično dugačkom, postavljanje OpenVPN-a zaista traje samo nekoliko minuta. Sigurno i brzo surfanje webom za vas! I također, kao i uvijek, iskreno ću pozdraviti vaša pitanja i dodatke.

dodatak: Suočio sam se s takvim problemom da se OpenVPN nije ponovo povezao na server nakon buđenja laptopa iz stanja mirovanja. Tim je pomogao da se situacija popravi. sudo pkill --signal SIGHUP --exact openvpn, koji se izvršava odmah nakon buđenja iz stanja mirovanja. Za ovo je odgovarajuća komanda dodana skripti koju koristim ulaz u stanje mirovanja, odakle se poziva sa malim zakašnjenjem. Da bi ovo funkcioniralo, korisnik mora imati pravo da kaže sudo bez lozinke. Takođe, morao sam da uklonim parametar keepalive iz konfiguracije OpenVPN servera.

Želite li imati siguran i bezbjedan pristup internetu sa svog pametnog telefona ili laptopa kada ste povezani na nesigurnu mrežu putem WiFi-a za hotel ili kafić? Virtuelna privatna mreža (VPN) vam omogućava da koristite nezaštićene mreže kao da ste na privatnoj mreži. Sav vaš promet u ovom slučaju ide preko VPN servera.

U kombinaciji s korištenjem HTTPS veze, dolje opisane postavke omogućit će vam da zaštitite svoje privatne podatke, kao što su prijave i lozinke, kao i vaše kupovine. Štaviše, možete zaobići regionalna ograničenja i cenzuru, kao i sakriti svoju lokaciju i nešifrirani HTTP promet od nesigurne mreže.

Možete prenijeti profil sa svog računara na telefon tako što ćete povezati svoj Android uređaj sa računarom preko USB-a i kopirati fajl. Također možete premjestiti datoteku profila koristeći SD karticu tako što ćete kopirati profil na karticu i umetnuti karticu u Android uređaj.

Pokrenite OpenVPN aplikaciju i kliknite na meni za uvoz profila.

Compound

Da uspostavite vezu, pritisnite dugme Povežite se. Bit ćete upitani vjerujete li aplikaciji OpenVPN. Odgovori uredu da uspostavi vezu. Da biste prekinuli vezu, idite na OpenVPN aplikaciju i odaberite Prekini vezu.

Korak 13 Testiranje VPN veze

Nakon što je sve instalirano i konfigurirano, uvjerite se da sve radi ispravno. Bez uspostavljanja VPN veze, otvorite pretraživač i idite na DNSLeakTest.

Ova stranica će vratiti IP adresu koju vam je dodijelio vaš ISP. Da biste provjerili koji se DNS serveri koriste, kliknite na produženi test.

Sada uspostavite vezu pomoću svog VPN klijenta i osvježite stranicu u svom pretraživaču. IP adresa koja vam je data mora biti potpuno drugačija. Sada ovu novu IP adresu koristite za sve na Internetu. Kliknite produženi test ponovo da provjerite svoje DNS postavke i provjerite da li sada koristite DNS server svog VPN-a.

Korak 14: Opozovite klijentske certifikate

S vremena na vrijeme ćete možda morati opozvati certifikat klijenta kako biste spriječili pristup VPN serveru

Da biste to učinili, idite u direktorij vašeg certifikacijskog tijela i unesite naredbe:

  • cd ~/openvpn-ca
  • izvor vars
  • ./revoke-full client3

Izlaz ove naredbe će završiti sa greškom 23. Ovo je normalno. Kao rezultat rada, datoteka crl.pem će biti kreirana u direktoriju ključeva sa informacijama potrebnim za opoziv certifikata.

Premjestite ovu datoteku u /etc/openvpn direktorij:

  • sudo cp ~/openvpn-ca/keys/crl.pem /etc/openvpn
  • sudo nano /etc/openvpn/server.conf

Dodajte crl-verify na kraj datoteke. OpenVPN server će provjeriti CRL svaki put kada neko uspostavi vezu sa serverom.

/etc/openvpn/server.conf

crl-verify crl.pem

Sačuvajte i zatvorite datoteku.

Ponovo pokrenite OpenVPN da dovršite proces opoziva certifikata:

Sada se klijent neće moći povezati na OpenVPN server koristeći stari certifikat.

Da biste opozvali dodatne certifikate, izvršite sljedeće korake:

    Generirajte novu listu opozvanih certifikata koristeći izvornu naredbu vars u ~/openvpn-ca direktoriju i izdajući naredbu revoke-full s imenom klijenta.

    Kopirajte novu listu opozvanih certifikata u /etc/openvpn direktorij, čime ćete prepisati staru listu.

    Ponovo pokrenite OpenVPN uslugu.

Ova procedura se može koristiti za opoziv svih certifikata koje ste prethodno kreirali.

Zaključak

Čestitamo! Sada možete bezbedno da pristupite internetu, sav vaš saobraćaj je zaštićen od prisluškivanja od strane cenzora i uljeza.

Da biste konfigurirali dodatne klijente, ponovite korake 6 i 11-13 za svaki novi uređaj. Da biste opozvali pristup klijentu, koristite korak 14 .

Top Related Articles