Kako postaviti pametne telefone i računala. Informativni portal
  • Dom
  • Windows 10
  • Instalacija openvpn na ubuntu 16.04. Instaliranje i konfiguriranje OpenVPN klijenta na Ubuntu

Instalacija openvpn na ubuntu 16.04. Instaliranje i konfiguriranje OpenVPN klijenta na Ubuntu

Učinio sam svoj posao povezivanja distribuiranih lokalnih mreža. Prvo iskustvo bilo je postavljanje poslužitelja za FreeBSD, a onda je, kako kažu, krenulo odatle. Danas rade gotovo svi poslužitelji koje sam konfigurirao Ubuntu Linux jednu ili drugu verziju.

I nedavno sam to primijetio među pohranjenim smećem /etc/init.d, skromno se krije scenarij s imenom. "I što?" - odmah će upitati iskusni administrator. Stvar je u tome što je do nedavno porast mrežnih sučelja, uključujući TUN, organizirao sam isključivo preko /etc/network/interfaces, rad s opcijama unaprijed za pokretanje OpenVPN demona i opcija prije dolje da to zaustavim. Sva se ta “sramota” razvodnjavala posvuda različite ekipe, manipuliranje tablicama usmjeravanja... Općenito, rezultirajuća slika bila je prilično glomazna. U principu, sve je radilo prilično dobro, ali budući da postoji drugačiji (Ubuntu-way?) način koji su programeri ponudili, zašto ga onda ne iskoristiti, pogotovo jer će to značajno rasteretiti /etc/network/interfaces. Dakle, što sam dobio?

Instalacija OpenVPN-a

Instaliranje OpenVPN-a na Ubuntu ne zahtijeva nikakve trikove s vašim ušima:

$ sudo apt-get instaliraj openvpn

Obavezno potvrdite da su sve ovisnosti instalirane.

Oni koji žele/trebaju instalirati OpenVPN iz izvornog koda morat će se upoznati s njim.

Ako vas zanimaju binarni paketi za druge platforme, posjetite.

Lokacija ključnih datoteka

Budući da sam u ovom članku odlučio govoriti o postavljanju klijentskog dijela OpenVPN-a, pretpostavit ćemo da već imate datoteke ključeva za šifriranje (dao vam ih je administrator OpenVPN poslužitelja). Broj i vrsta ključeva ovisi o tome kako je konfiguriran OpenVPN poslužitelj na koji se spajate. Ovaj članak pretpostavlja da se za šifriranje i provjeru autentičnosti koriste tri datoteke:

  • privatni ključšifriranje klijenta u formatu .pem(nazovimo datoteku klijent.ključ);
  • certifikat klijenta potpisan od strane certifikacijskog tijela u formatu .pem, (imenujmo datoteku klijent.crt);
  • certifikat autoriteta certifikata poslužitelja u formatu .pem kojim je spis potpisan klijent.crt(nazovimo datoteku ca.crt)

Nakon što primite ključ i certifikate, pobrinite se za njihovu sigurnost. Dobra odluka sve ove stvari bit će smještene na flash pogon, šifrirane, na primjer, . U ovom ćemo članku pretpostaviti da se ključevi i certifikati nalaze u imeniku /medijski/ključevi. Također, svakako ostavite minimalna prava pristupa direktoriju s ključem i certifikatima:

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

Konfiguracijska datoteka

OpenVPN konfiguracijske datoteke obično se nalaze u direktoriju ili /usr/local/etc/openvpn. U ovom ću članku pretpostaviti da ste instalirali OpenVPN iz Ubuntu repozitorija i da je direktorij za pohranu konfiguracije.

Ako se povežete na OpenVPN poslužitelj koji vi niste konfigurirali, obično bi vam taj netko trebao dati "osnovnu" konfiguracijsku datoteku koja sadrži minimalni potrebni skup parametara. Među konfiguracijskim parametrima OpenVPN-a koji su pojedinačni za klijentsko računalo najčešće su staze do datoteka ključeva i certifikata, kao i staze do vanjskih skripti i inicijalizacijskih skripti.

Recimo da je pozvan poslužitelj na koji se povezujete myvpnsrv.com. Prilično je zgodno imenovati konfiguracijske datoteke (može ih biti nekoliko ako koristite više veza ili nekoliko opcija za povezivanje) u skladu s imenima poslužitelja. Dakle, u našem primjeru, konfiguracijska datoteka će se nalaziti u /etc/openvpn/myvpnsrv.conf sa sljedećim sadržajem:

klijent
udaljeni myvpnsrv.com
ca /media/keys/ca.crt
ključ /mediji/ključevi/klijent.ključ
certifikat /media/keys/client.crt
demon
dev podešavanje
proto udp
komp-lzo

Prvi red govori OpenVPN-u da će veza biti u načinu rada klijenta.

Vrijednost parametra daljinski navodi naziv hosta ili IP adresu poslužitelja.

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

Navođenjem parametra demon tjeramo OpenVPN da se odvoji od konzole i radi u pozadini.

Parametar dev specificira vrstu mrežnog sučelja koje će se koristiti za razmjenu šifriranog prometa s poslužiteljem. Moglo bi napraviti razliku tun ili dodirnite. Može se otkriti temeljna razlika između ove dvije vrste sučelja.

Parametar proto definira protokol u koji će kriptirani promet biti omotan. koristiti UDP.

Dostupnost parametra komp-lzo prisiljava OpenVPN na komprimiranje prometa, što je vrlo korisno kada imate "uzak" kanal za prijenos podataka.

Usmjeravanje i vanjske skripte

OpenVPN, između ostalog, omogućuje pokretanje vanjskih programa nakon pokretanja, kao i prije i nakon zaustavljanja daemona. Vrlo zgodna stvar ako trebate petljati s tablicama usmjeravanja prilikom podizanja tunela.

Odmah obratite pažnju na jednu suptilnu točku. Kako bi OpenVPN demon mogao pokretati vanjske programe, mora mu se to izričito dopustiti prosljeđivanjem parametra skripta-sigurnost s vrijednošću ne nižom od 2. Sigurnost pak.

Za određivanje putanje do programa koji se automatski poziva nakon mrežno sučeljeće se podići, koristite parametar gore, prosljeđujući mu stazu do programa i moguće dodatne parametre kao njegovu vrijednost.

Za pokretanje vanjskog programa nakon odspajanja mrežnog sučelja upotrijebite parametar dolje, govoreći mu, naravno, putanju i parametre pozvanog programa. Ako je potrebno da se program pokrene prije onemogućavanje sučelja, također odredite parametar dolje-pre nema značenja.

Sada malo o specifičnostima pozivanja vanjskih programa od strane OpenVPN daemona. Činjenica je da se oni ne samo "glupo" pozivaju, već im se prosljeđuju još neki parametri veze, što je vrlo zgodno pri radu s tablicama usmjeravanja.

Format za pozivanje vanjskog programa od strane OpenVPN demona tijekom inicijalizacije tun sučelje Sljedeći:

tun_dev tun_mtu link_mtu ifconfig_local_ip ifconfig_remote_ip

  • tun-dev— naziv mrežnog sučelja, na primjer tun1;
  • tun_mtu— MTU mrežnog sučelja;
  • veza_mtu— priključak MTU;
  • ifconfig_local_ip— IP adresa klijenta (na “našoj” strani);
  • ifconfig_remote_ip— IP adresa klijenta (na strani poslužitelja);
  • u tome— prenosi se ako se program pozove dok se demon pokreće;
  • ponovno pokretanje— prenosi se ako se program pozove tijekom ponovnog pokretanja demona (na primjer, ako je došlo do gubitka veze);

Za dodirno sučelje format je isti, osim što umjesto ifconfig_remote_ip prenosio ifconfig_mrežna maska, koji sadrži podmrežnu masku gdje se nalazi naš klijent.

Također, treba napomenuti da su svi parametri koje ćete proći vanjski program, uz pomoć gore/dolje, bit će zamijenjen prije gore navedene parametre.

Mislim da je dosta teorije, bacimo se na posao. Recimo da morate nekako modificirati tablicu usmjeravanja svog hosta kada pokrenete/ponovno pokrenete/zaustavite OpenVPN demon. Za dva mrežna sučelja, riješio sam ovaj problem sljedećom bash skriptom:

#!/bin/bash case $(1) in "up") case $(2) in "tun0") ip pravilo add ... ip ruta dodati... ;; "tun1") ip pravilo add ... ip route add ... ;; esac ;; "down") case $(2) in "tun0") ip rule 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 up"
dolje "/usr/local/bin/routes.sh dolje"

Odnosno, pokrenuta skripta prima približno sljedeće parametre:

  • $1 gore ili dolje;
  • $2 — naziv sučelja. U sustavu 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 ponovno pokretanje(parametar u potpunosti zanemarujem, tako da se uvijek provode manipulacije s rutama, čak i ako mrežno sučelje nije onemogućeno, nego je došlo samo do “redovnog” ponovnog pokretanja demona zbog nedostatka komunikacije).

Podrazumijeva se da možete (i trebate) koristiti vrijednosti parametra $3 - $6. Na primjer, ako želite omotati dio prometa kroz VPN tunel, tada možete koristiti nešto poput:

ip route add od 192.168.0.0/24 putem $(6)

pomoću varijable $6 za određivanje adrese usmjerivača kroz koji će se usmjeravati promet.

Pokretanje i zaustavljanje demona

Zapravo, čemu svi ti plesovi s pozivanjem vanjskih skripti i napuštanjem dobrog starog /etc/network/interfaces? Evo o čemu se radi.

Otvorite datoteku /etc/default/openvpn i u varijabli AUTOSTART navedite naziv konfiguracijske datoteke (ili nekoliko, odvojenih razmakom) iz direktorija, odsijecajući ekstenziju ".conf". Za naš primjer to će izgledati ovako:

AUTOSTART="myvpnsrv"

Ili, ako želite da OpenVPN uspostavlja veze na temelju svih pronađenih konfiguracijskih datoteka:

Sada je „dovoljna jedna tableta“ u obliku:

sudo servis openvpn start

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

Zaustavljanje demona također nije teško:

sudo service openvpn stop

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

Prava privatna virtualna mreža ili Virtual Privatna mreža(VPN) je šifrirani, povezani tunel između dvije mreže koji povezuje dvije pouzdane točke. Ovo nije HTTPS web protokol koji sve klijente smatra pouzdanima. Samo oni klijenti koji imaju posebne pristupne ključeve mogu se spojiti na VPN.

Koncept VPN-a postao je vrlo labav ovih dana, s pojavom privatnog virtualne mreže kojima svi vjeruju i propagiraju HTTPS. Mnogi od VPN mreže komercijalna su rješenja s minimalnim brojem postavki koje je potrebno osigurati daljinski pristup zaposlenici. Ali ne vjeruju svi tim odlukama. Privatna virtualna mreža povezuje dvije mreže u jednu, na primjer, uredsku mrežu i kućna mreža zaposlenik. Potreban je VPN poslužitelj kako bi se poslužitelj i klijent mogli međusobno autentificirati.

Postavljanje autentifikacije poslužitelja i klijenta zahtjeva puno posla, pa stoga komercijalna rješenja s minimalnim postavkama gube u tom pogledu. Ali zapravo nije tako teško instalirati OpenVPN poslužitelj. Trebat će vam dva čvora različite mreže za organiziranje testnog okruženja, na primjer, možete koristiti nekoliko virtualni strojevi ili pravih poslužitelja. Kao što već razumijete, ovaj članak će raspravljati Postavljanje OpenVPN-a u Ubuntuu za stvaranje potpune privatne virtualne mreže.

Oba stroja moraju imati instaliran OpenVPN, ovo je prilično popularan program, tako da ga možete instalirati iz službenih repozitorija. Također nam je potreban Easy-RSA za rad s tajnim ključevima. Za instaliranje programa na Ubuntu upotrijebite sljedeću naredbu:

sudo apt instalirajte openvpn easy-rsa

Oba paketa moraju biti instalirana i na poslužitelju i na klijentu. Oni će biti potrebni za konfiguriranje programa. Prva faza članka, instaliranje i konfiguriranje openvpn-a, je završena.

Postavljanje certifikacijskog tijela

Prvo što trebate učiniti je stvoriti ispravnu infrastrukturu javnih ključeva na poslužitelju. Poslužitelj smatramo strojem na koji će se korisnici spajati. Nekoliko je prednosti posjedovanja vlastitog CA, imat ćete vlastitog CA što će olakšati distribuciju i upravljanje ključevima. Na primjer, možete opozvati klijentske certifikate na poslužitelju. Također, sada više nema potrebe za pohranjivanjem svih certifikata klijenata, već će biti dovoljno da certifikacijsko tijelo zna da je certifikat potpisao CA. Osim složenog sustava ključeva, možete koristiti statičke ključeve ako trebate omogućiti pristup samo nekolicini korisnika.

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

Najprije stvorite mapu za pohranu Easy-RSA certifikata. Zapravo, OpenVPN konfiguracija se radi ručno, tako da se mapa može postaviti bilo gdje:

sudo mkdir /etc/openvpn/easy-rsa

Zatim kopirajte sve potrebne easy-rsa skripte u ovu mapu:

cd /etc/openvpn/easy-rsa/

sudo -i
# izvor ./vars
# ./očistiti sve
# ./build-ca

Prvom naredbom prelazimo na konzolu kao superuser, drugom učitavamo varijable okruženja iz datoteke ./vars. Naredba ./clear-all stvara mapu ključeva ako ne postoji i briše njezin sadržaj. I zadnja naredba inicijalizira naš autoritet za izdavanje certifikata. Sada su se svi potrebni ključevi pojavili u mapi .keys:

Postavljanje klijentskih certifikata

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

Sada trebamo kopirati certifikat, datoteku s nastavkom .crt, u mapu /etc/openvpn 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 izraditi vlastiti privatni ključ na temelju CA certifikata:

cd /etc/openvpn/easy-rsa/

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

Imajte na umu da ca.crt mora biti u mapi s ključevima, inače ništa neće raditi. Sada će uslužni program stvoriti ključ na temelju kojeg se možete spojiti na Open VPN poslužitelj y, ali ga ipak morate potpisati na poslužitelju. Pošaljite rezultirajuću .csr datoteku na poslužitelj koristeći isti scp:

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

Zatim na poslužitelju u mapi /etc/openvpn/easy-rsa trebate pokrenuti naredbu za potpisivanje certifikata:

./sign-req ~/Sergiy

Potpis certifikata mora biti potvrđen. Zatim će program prijaviti da je potpisan i dodan u bazu podataka. U mapi s csr certifikatom pojavit će se .crt datoteka koju je potrebno vratiti nazad na klijentsko računalo:

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, morate stvoriti Diffie-Huffman skup podataka na poslužitelju, da biste to učinili upotrijebite naredbu:

Postavljanje OpenVPN-a

Sada postavite OpenVPN poslužitelj. Prema zadanim postavkama nema ničega u mapi OpenVPN konfiguracijskih datoteka. Morate ih sami izraditi, ovisno o tome što planirate konfigurirati, poslužitelj ili klijent. Potrebna datoteka OpenVPN konfiguracije mogu se pronaći na /usr/share/doc/openvpn/examples/sample-config-files/. Prvo, kreirajmo konfiguracijsku datoteku za poslužitelj:

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

Ovdje morate konfigurirati nekoliko parametara:

luka I proto- priključak i protokol na kojem će program raditi;

luka 1194
proto udp

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


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

Konfiguriramo raspon adresa za virtualnu mrežu, naš će poslužitelj biti dostupan putem prve od njih - 10.8.0.1:

poslužitelj 10.8.0.0 255.255.255.0

Nakon dovršetka konfiguracije, spremite promjene u datoteku, možete zalijepiti cijelu konfiguraciju za sebe ili urediti datoteku primjera. Spremne radne postavke poslužitelja:

luka 1194
proto udp
komp-lzo
dev podešavanje
ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt
certifikat /etc/openvpn/easy-rsa/2.0/keys/ca.crt
dh /etc/openvpn/easy-rsa/2.0/keys/dh2048.pem
topološka podmreža
poslužitelj 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 stvoriti više konfiguracijskih datoteka klijenta za povezivanje različite poslužitelje. Otvorite konfiguracijsku datoteku i promijenite sljedeće parametre u njoj:

daljinski- ovo je adresa vašeg OpenVPN poslužitelja, adresa i port moraju odgovarati onima koji su konfigurirani na poslužitelju, na primjer:

daljinski 194.67.215.125 1194

ca- ključ koji ste dobili od certifikacijskog tijela, nalazimo ga u mapi /etc/openvpn/.

certifikat i ključ- to su javni i tajni ključevi klijenta, uz pomoć kojih ćete se spojiti na poslužitelj. Kao što se sjećate, spremili smo ih u mapu /etc/openvpn/easy-rsa/keys/.

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

Ostatak postavki možete ostaviti onakvima kakve jesu. Ovdje je cijela konfiguracijska datoteka koju možete kopirati:

klijent
dev podešavanje
proto udp
daljinski 194.67.215.125 1194
razriješi-ponovi beskonačno
nobind
ustrajati-ključ
ustrajati-tun
ca /etc/openvpn/easy-rsa/keys/ca.crt
certifikat /etc/openvpn/easy-rsa/keys/Sergiy.crt
ključ /etc/openvpn/easy-rsa/keys/Sergiy.key
tls-auth ta.ključ 1
komp-lzo
glagol 3

Spremite postavke, sada je klijent spreman za povezivanje. imajte na umu da konfiguracijske datoteke moraju odgovarati što je više moguće; nepostojanje određenih opcija u jednoj od datoteka može dovesti do pogrešaka. To ne znači da će datoteke biti identične, ali bi osnovni openvpn parametri trebali biti isti. Sve što trebate učiniti je pokrenuti OpenVPN na ovom računalu pomoću ove konfiguracijske datoteke:

openvpn /etc/openvpn/client.conf

Gotovo, sada sve radi, ako pokrenete ifconfig vidjet ćete da je tun0 sučelje dodano:

Također možete pokušati učiniti ping adrese 10.8.0.1, ovo je adresa koju smo konfigurirali za naš OpenVPN poslužitelj, ping paketi će se normalno slati. Ako paketi ne dolaze ili nešto drugo ne radi, obratite pozornost na izlaz oba programa, može biti bilo kakvih grešaka ili upozorenja, također provjerite dopušta li vatrozid poslužitelja pristup izvana putem udp-a za port 1194. Možete također pokrenite poslužitelj ili klijent postavljanjem razine detalja u konfiguraciji na maksimalnu vrijednost glagola 9. Vrlo često ovo pomaže razumjeti zašto nešto ne radi. Ali još ne možete usmjeravati promet kroz tunel. Da biste to učinili, morate omogućiti prosljeđivanje i dodati nekoliko iptables pravila. Prvo, dopuštamo tranzit paketa na poslužitelju:

sysctl -w net.ipv4.ip_forward=1

Zatim dodajte ovakva pravila. Dopuštamo svima da se spoje na naš poslužitelj:

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

OpenVPN korisnicima omogućujemo pristup internetu:

iptables -I FORWARD -i tun0 -o eth0 -j ACCEPT
# iptables -I FORWARD -i eth0 -o tun0 -j ACCEPT
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

zaključke

U ovom smo članku pogledali kako instalirati i konfigurirati OpenVPN Ubuntu, kao i kako konfigurirati openvpn za rad s ključnom autentifikacijom. Organiziranje privatnih virtualnih mreža može biti vrlo korisno ne samo u organizacijama, već i za razmjenu podataka između dva vaša računala ili za povećanje sigurnosti mreže.

VPN (Virtual Private Network) je tehnologija koja vam omogućuje povezivanje računala putem interneta kao da su u istoj lokalna mreža. Kao rezultat toga, možemo ujediniti urede koji se nalaze u različitim gradovima i zemljama u jednu mrežu.
Instaliranjem VPN poslužitelja kod kuće i klijentski dio na svom pametnom telefonu možete pristupiti internetu putem javnih WiFi točaka bez straha da će vaše lozinke biti presretnute.
Najam servera u inozemnom podatkovnom centru košta od 5 USD mjesečno, a postavljanjem VPN-a u američkoj regiji dobivamo pristup Spotifyju, Pandori, Huluu i ostalim servisima koji nisu dostupni u vašoj zemlji, a internetska cenzura vas se više ne tiče .

1. Instalirajte OpenVPN.

Hajdemo ažurirati naš poslužitelj i instalirati OpenVPN i autoritet za izdavanje certifikata.

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. To znači da će nam trebati pouzdani certifikati.

2. Postavljanje certifikacijskog tijela

Postavimo tijelo za izdavanje certifikata.

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

Pronađimo sljedeći fragment:

. . . . . izvoz KEY_COUNTRY="US" izvoz KEY_PROVINCE="CA" izvoz KEY_CITY="SanFrancisco" izvoz KEY_ORG="Fort-Funston" izvoz KEY_EMAIL=" [e-mail zaštićen]" izvoz KEY_OU="Moja organizacijska jedinica" . . .

i zamijenite ga svojim podacima

. . . . . izvoz KEY_COUNTRY="RU " izvoz KEY_PROVINCE="SPb " izvoz KEY_CITY="Sankt-Peterburg " izvoz KEY_ORG="site" izvoz KEY_EMAIL="admin@site " izvoz KEY_OU="IT " . . . . .

Nekoliko redaka ispod promijenit ćemo vrijednost KEY_NAME

Izvoz KEY_NAME="poslužitelj" cd ~/openvpn-ca izvornih varijanti

Kao odgovor, sustav bi trebao izdati:

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

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

./čisto-sve

i kreirajte korijenski autoritet certifikata:

./build-ca

Tražene vrijednosti automatski će se zamijeniti iz datoteke vars, koju smo uredili neposredno iznad. Jednostavno pritisnite Enter za potvrdu odabira.

Instalirali smo autoritet za izdavanje certifikata koji ćemo koristiti za izradu ostalih potrebnih datoteka.

3. Stvorite certifikat, ključ i datoteke za šifriranje za poslužitelj

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

./build-key-server poslužitelj

Pristajemo na sve zadane vrijednosti, na kraju dvaput odabiremo “y”.
Generirajmo sada ključeve Diffie-Hellman protokola pomoću naredbe:

./build-dh

i HMAC potpis za jačanje sposobnosti poslužitelja 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

Razmotrimo postupak za kreiranje ključa i certifikata za klijenta client1. Ako postoji više klijenata, proces izrade je sličan. automatsko povezivanje kreirat ćemo datoteku bez lozinke. Koristimo naredbu build-key:

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

5. Postavljanje OpenVPN usluge

Kopirajte stvorene datoteke (CA certifikat i ključ, poslužiteljski certifikat i ključ, HMAC potpis, Diffie-Hellman datoteku) iz direktorija ~/openvpn-ca/keys 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 odjeljak HMAC i odkomentirajmo liniju s tls-auth, a također dodajmo parametar smjera ključa:

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

Zatim tražimo odjeljak za šifriranje i odkomentiramo redak s AES-128-CBC šifrom i nakon njega dodamo HMAC algoritam:

Šifra AES-128-CBC autentifikacija SHA256

I na kraju, pronađite retke korisnika i grupu te ih uklonite iz komentara:

Korisnik nitko grupa nogroup

6. Omogućavanje OpenVPN usluge

Kako bismo koristili naš poslužitelj za njegovu namjenu, on mora imati mogućnost preusmjeravanja prometa.

sudo nano /etc/sysctl.conf

Pronađite i odkomentirajte redak:

net.ipv4.ip_forward=1

Za primjenu promijenjenih postavki:

sudo sysctl -p

Opišimo kako će se naš poslužitelj pokrenuti. Budući da je naziv konfiguracijske datoteke server.conf, dat ćemo sljedeću naredbu:

sudo systemctl pokrenite openvpn@server

Provjerimo je li poslužitelj pokrenut:

sudo systemctl status openvpn@server

i je li tun sučelje pokrenuto

ip adresa prikaži tun0

Ako sve radi, dodajte postavke pokretanju:

sudo systemctl omogući openvpn@server

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

Napravimo neke promjene u datoteci base.conf

nano ~/client-configs/base.conf. . . # Ime hosta/IP i port poslužitelja. # Možete imati više udaljenih unosa # za ravnotežu opterećenja između poslužitelji. udaljeni poslužitelj_IP_adresa 1194 . . .

Umjesto server_IP_address, pisat ćemo IP adresu našeg OpenVPN poslužitelja.

proto udp korisnik nitko grupa nogroup

Certifikate i ključeve pohranit ćemo izravno u konfiguracijsku datoteku koju ćemo kasnije izraditi. Stoga, komentirajmo retke ca, cert I ključ

# SSL/TLS par. # Pogledajte konfiguracijsku datoteku poslužitelja za više # opisa. Najbolje je koristiti # odvojeni par datoteka .crt/.key # za svakog klijenta. Jedna ca # datoteka može se koristiti za sve klijente. #ca ca.crt #cert client.crt #key client.key

Dovedimo postavke klijentskog dijela na: slične postavke poslužitelj.

Provjerite prisutnost /etc/openvpn/update-resolv-conf datoteke na vašem klijentskom sustavu. Ako postoji, posljednja tri retka moraju biti odkomentirana.

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

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

Nano ~/client-configs/make_config.sh

Ubacimo 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 "") \ > $(IZLAZNI_DIR)/$(1).ovpn

Spremimo i zatvorimo datoteku, a zatim je učinimo izvršnom:

Chmod 700 ~/client-configs/make_config.sh

8. Generiranje konfiguracijskih datoteka klijenta

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

Provjerimo što se dogodilo:

Ls ~/client-configs/files

kao rezultat trebali bismo dobiti datoteku

Klijent1.ovpn

s postavkama veze, certifikatima i ključem.

Ova se datoteka mora isporučiti klijentskom računalu pomoću sigurne veze. Na Linuxu možete koristiti naredbu scp. Na klijentsko računalo trčimo:

Scp viktor@openvpn_server_ip :client-configs/files/client1.ovpn ~/

Kopirajte datoteku “client1.ovpn” iz udaljeni poslužitelj na vaše lokalno računalo.

9. Instaliranje konfiguracijskih datoteka klijenta

Sljedeće korake izvršit ćemo samo na klijentskom računalu koje pokreće Ubuntu. Instalirajmo OpenVPN.

Sudo apt-get update sudo apt-get install openvpn

Provjerimo postoji li datoteka /etc/openvpn/update-resolv-conf na našem sustavu

Ls /etc/openvpn

Ako ispišemo:

Update-resolve-conf

uredimo konfiguracijsku datoteku client1 .ovpn koju smo preuzeli s poslužitelja

Nano klijent1 .ovpn

Odkomentirajmo sljedeće retke:

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

Spremimo i zatvorimo datoteku.

Sada pokušajmo pokrenuti vezu:

Sudo openvpn --config client1 .ovpn

Ako ste sve učinili ispravno, na kraju ćete se spojiti na poslužitelj.

Redoviti čitatelji ovog bloga vjerojatno su postavili OpenVPN nekoliko puta u životu. Ali mislim da će ovaj članak biti zanimljiv i koristan za početnike. Iz njega ćete naučiti kako podizati vlastiti VPN poslužitelja, te zašto je zapravo potreban. Dobro, dobro, s obzirom na to koliko je vremena potrebno za registraciju na nekom Amazonu, DigitalOceanu, Vscale.io ili FastVDS-u i plaćanje VDS-a, to će vjerojatno trajati ne pet minuta, nego “čak” petnaestak.

Pa zašto bi itko išao na internet koristeći VPN? Postoji niz razloga za to. Na primjer, tako da vaše lozinke prenesene preko HTTP-a ne procure kada koristite open WiFi točke nepoznatog porijekla. I općenito, čak ni vaš redovni pružatelj usluga ne mora znati na koje stranice idete. Također, kako ne biste spalili svoj IP na IRC mrežama i drugim servisima s kojima radite. Oni također ne moraju znati vašu lokaciju. Također biste mogli probati neke nova usluga, koji još nije dostupan za korisnike s ruskim IP-om. Osim toga, promet između vas i VPN poslužitelja nije samo šifriran, već i komprimiran, što često može učiniti da se brzi internet. OpenVPN također može biti koristan u brojnim drugim slučajevima, na primjer, za pristup zaposlenika interni resursi tvrtke kada nisu u uredu.

Zašto VPN, a ne nekakav proxy ili port forwarding preko SSH-a, nadam se, također je jasno. Samo trebate jednom postaviti VPN i odmah će sav promet iz svih aplikacija proći kroz VPN poslužitelj, u komprimiranom i šifriranom obliku.

Za nadogradnju VPN-a trebat će vam vlastiti poslužitelj s Ubuntu Linuxom (ili bilo kojim drugim Linux/*BSD-om, ali tada će vam biti prilično teško slijediti upute u ovoj bilješci), kao i root prava na njemu. Ako već imate poslužitelj, dobro. Ako ne, ne brinite. Ovih dana možete kupiti odgovarajući VDS/VPS za smiješnih 5 USD mjesečno ili čak manje. Postoje deseci tvrtki koje nude odgovarajuće usluge, neke su navedene na početku članka. Osobno preporučujem da pomnije pogledate DigitalOcean. Ali nemojte biti lijeni da sami proučite problem, jer dok čitate ove retke, situacija na VDS tržištu može se promijeniti.

Idemo na server, postajemo root i kažemo:

apt-get ažuriranje
apt-get instaliraj openvpn

Prethodno je OpenVPN uključivao uslužni program pod nazivom easy-rsa za generiranje ključeva i certifikata. Počevši od verzije 2.3, ovaj je uslužni program izrezan iz paketa, pa ćete ga morati sami preuzeti i sastaviti:

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

Generiramo sve potrebne ključeve i certifikate. Budite spremni unijeti lozinke umjesto njih. Budući da postavljamo osobni VPN poslužitelj, čini se da možemo koristiti jednu lozinku, ali će biti autentičnija:

./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.

Prenesite primljene ključeve i certifikate u direktorij /etc/openvpn/:

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

U istom direktoriju kreirajte datoteku server.conf:

način poslužitelja
dev podešavanje
poslužitelj 10.128.0.0 255.255.255.0
push "redirect-gateway def1"
#važno! inače ćemo ići na DNS provider
pritisnite "dhcp-opcija DNS 8.8.8.8"
tls-poslužitelj
caca.crt
cert server.crt
ključni poslužitelj.ključ
dh dh.pem
proto tcp-poslužitelj
luka 1194
# klijenti se vide
klijent-klijentu
komp-lzo
održavati na životu 10 120
glagol 4
šifra AES-256-CBC
korisnik nitko
grupa nogroup
max-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 budući da postavljamo osobni VPN, malo je vjerojatno da će to predstavljati veći problem nego ključevi koji leže unutra otvorena forma, ili još gore - spremljene lozinke. Pokrenimo:

početak usluge openvpn

Provjeravamo:

netstat -tuwpan

Poslužitelj bi trebao slušati port 1194. Ako to nije slučaj, pušimo /var/log/syslog.

Sada za stranu klijenta. Trebat će nam datoteke client1.crt, client1.key i ca.crt:

mkdir vpn
cd vpn
scp vpn-poslužitelj:/ etc/ openvpn/ client1.crt ./
scp vpn-poslužitelj:/ etc/ openvpn/ client1.key ./
scp vpn-poslužitelj:/ etc/ openvpn/ ca.crt ./

Kreirajmo datoteku client.conf:

klijent
proto tcp
dev podešavanje
#!!! zamijenite stvarnom IP adresom poslužitelja
daljinski 123.45.67.89 1194

# sljedeća dva retka relevantna su samo za *nix sustave
# u praksi nisu baš zgodni, jer OpenVPN neće moći
# U redu je počistiti sve za sobom kada završite

# korisnik nitko
# grupa bez grupe

Ustraj-ključ
ustrajati-tun
caca.crt
cert client1.crt
ključ klijent1.ključ
šifra AES-256-CBC
komp-lzo
glagol 3

Spajamo se na poslužitelj i pažljivo čitamo zapise:

sudo openvpn --config client.conf

U sljedećem terminalu kažemo:

ping 10.128.0.1
traceroute mail.ru

Ako je sve napravljeno kako treba, vidjet ćete da pingovi uspješno dosežu 10.128.0.1 (prva naredba), ali paketi ne prolaze nigdje kroz nju (druga naredba). To je zato što smo to zaboravili postaviti NAT poslužitelj. Što je meni osobno čudno. Nejasno se sjećam da kad sam svojevremeno instalirao OpenVPN na FreeBSD, takav korak nije bio potreban. Međutim, mogao bih biti u krivu.

Na poslužitelju otvorite datoteku /etc/sysctl.conf i odkomentirajte redak u njoj:

net.ipv4.ip_forward=1

Da 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 PRIHVATA
iptables -A NAPRIJED -d 10.128.0.0/ 24 -m stanje \
--stanje UTVRĐEN,POVEZAN -j PRIHVAT
iptables -t nat -A POSTROUTING -s 10.128.0.0/ 24 \
-j SNAT --na-izvor 123.45.67.89

... gdje je 123.45.67.89 IP poslužitelja. Ponovno se povezujemo s klijentom, pokušavamo otići na neki 2ip.ru ili - sada bi sve trebalo raditi. Ako to nije slučaj, cjepanice dimimo. Ako je sve u redu, spremite pravila vatrozida na poslužitelj:

iptables-save > /etc/ iptables.rules

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

prethodno iptables-restore< /etc/iptables.rules

Ako ste prethodno konfigurirali vatrozid na poslužitelju, možda ćete otkriti da su pravila pohranjena u datoteci čiji naziv nije /etc/iptables.rules.

Možeš reći ponovno podizanje sustava i provjerite održavaju li se postavke nakon ponovnog pokretanja poslužitelja:

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

OpenVPN poslužitelj će se, naravno, morati ponovno pokrenuti ručno.

Ostaje još samo doraditi klijenta. Činjenica je da je (1) nezgodno pokretanje openvpn-a u zasebnom terminalu i praćenje je li se ondje srušio. Osim toga, (2) ako klijentu kažete:

nm-alat | grep DNS
sudo iptables -A IZLAZ -d 192.168.0.1 -j DROP
# ^ za brisanje pravila, unesite istu naredbu s -D umjesto -A

... gdje je 192.168.0.1 DNS vašeg pružatelja usluga (prikazuje ga uslužni program nm-tool), vidjet ćete da je razlučivost domene pokvarena i stoga klijent još uvijek koristi DNS pružatelja usluga. Možete ubiti dvije muve jednim udarcem tako što ćete reći:

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

... i postavljanje VPN-a putem NetworkManagera (ikona mreže s desne strane gornji kut Jedinstvo). To je lako učiniti; zapravo, morate ponoviti tekstualnu konfiguraciju klijenta koristeći potvrdne okvire i polja za unos. Vrlo je lako razumjeti koji potvrdni okvir odgovara kojem retku u konfiguraciji. Glavna stvar je ne biti previše lijen da uđete u sve vrste naprednih mrežnih svojstava i drugih odjeljaka postavki. Ako negdje pogriješite, problem se lako može dijagnosticirati pomoću datoteke /var/log/syslog.

Iako je ovaj post prilično dugačak, postavljanje OpenVPN-a stvarno traje samo nekoliko minuta. Za vas sigurno i brzo surfanje webom! Također, kao i uvijek, iskreno ću pozdraviti vaša pitanja i dopune.

Dodatak: Naišao sam na problem da se OpenVPN nije ponovno povezao s poslužiteljem nakon što se prijenosno računalo probudilo iz stanja mirovanja. Tim je pomogao ispraviti situaciju sudo pkill --signal SIGHUP --točan openvpn, izvršava se odmah nakon buđenja iz stanja mirovanja. Da biste to učinili, odgovarajuća naredba dodana je skripti za koju se koristim ulaz u stanje mirovanja, odakle se poziva s malim kašnjenjem. Da bi ovo radilo, korisnik mora imati pravo reći sudo bez lozinke. Osim toga, morao sam ukloniti parametar keepalive u konfiguraciji OpenVPN poslužitelja.

Želite li imati siguran i zaštićen pristup internetu sa svog pametnog telefona ili prijenosnog računala kada ste povezani na nezaštićenu mrežu putem WiFi-ja hotela ili kafića? Virtualna privatna mreža (VPN) omogućuje vam korištenje nezaštićenih mreža kao da u njima radite privatne mreže. Sav vaš promet u ovom slučaju ide preko VPN poslužitelja.

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 kupnje. Štoviše, možete zaobići regionalna ograničenja i cenzuru te sakriti svoju lokaciju i nešifrirani HTTP promet od nezaštićene mreže.

Možete prenijeti profil s računala na telefon povezivanjem Android uređaj na računalo putem USB-a i kopiranjem datoteke. Datoteku profila možete premjestiti i pomoću SD kartice kopiranjem profila na karticu i umetanjem kartice u svoj Android uređaj.

Pokrenite OpenVPN aplikaciju i kliknite na izbornik za uvoz profila.

Spoj

Za uspostavljanje veze kliknite gumb Spojiti. Bit ćete upitani vjerujete li aplikaciji OpenVPN. Odgovor u redu uspostaviti vezu. Za prekid veze idite na OpenVPN aplikaciju i odaberite Prekini vezu.

Korak 13. Testiranje VPN veze

Nakon što je sve instalirano i konfigurirano, provjerimo radi li sve ispravno. Bez uspostavljanja VPN veze, otvorite svoj preglednik i idite na DNSLeakTest.

Ova stranica će vratiti IP adresu koju vam je dodijelio vaš davatelj internetskih usluga. Kako bismo provjerili koji DNS poslužitelji su u upotrebi, kliknite na Prošireni test.

Sada uspostavite vezu koristeći svoj VPN klijent i osvježite stranicu u svom pregledniku. IP adresa koju ste dobili mora biti potpuno drugačija. Sada koristite ovu novu IP adresu za sve na Internetu. Klik Prošireni test ponovno provjeriti svoje DNS postavke i provjerite koristite li sada DNS poslužitelj svog VPN-a.

Korak 14: Opozovite klijentske certifikate

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

Da biste to učinili, idite u direktorij svog ovlaštenog tijela za izdavanje certifikata i unesite naredbe:

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

Izlaz ove naredbe završit će s pogreškom 23. To je normalno. Kao rezultat ovog rada, kreirat će se datoteka crl.pem u direktoriju ključeva s informacijama potrebnim za opoziv certifikata.

Premjestite ovu datoteku u direktorij /etc/openvpn:

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

Dodajte red crl-verify na kraj datoteke. OpenVPN poslužitelj provjerit će popis opozvanih certifikata svaki put kada se netko poveže s poslužiteljem.

/etc/openvpn/server.conf

Crl-provjeri crl.pem

Spremite i zatvorite datoteku.

Ponovno pokrenite OpenVPN kako biste dovršili postupak opoziva certifikata:

  • sudo systemctl ponovno pokrenite openvpn@server

Sada klijent neće moći uspostaviti vezu s OpenVPN poslužitelj koristeći stari certifikat.

Za opoziv dodatnih certifikata slijedite ove korake:

    Generirati novi popis opozvane certifikate pomoću naredbe izvor vars u direktoriju ~/openvpn-ca i izvršavanje naredbe revoke-full s imenom klijenta.

    Kopirajte novi popis opoziva certifikata u direktorij /etc/openvpn, čime ćete prebrisati stari popis.

    Ponovno pokrenite OpenVPN uslugu.

Ovaj postupak se može koristiti za opoziv svih certifikata koje ste prethodno izradili.

Zaključak

Čestitamo! Sada možete sigurno pristupiti internetu, sav vaš promet zaštićen je od prisluškivanja cenzora i uljeza.

Ponovite korake za konfiguraciju dodatnih klijenata 6 I 11-13 za svaki novi uređaj. Da biste opozvali pristup određenom klijentu, koristite korak 14 .

Najbolji članci na temu