Виртуалните частни мрежи (VPN) ви позволяват да скриете вашите онлайн предавания на данни и да подобрите сигурността си, докато сърфирате в Интернет от обществени места. Много доставчици на онлайн услуги предлагат безплатни и платени VPN опции, които да използвате. Въпреки това, най-добре платените планове могат да бъдат ненадеждни или бавни понякога.

Ако само вие можете да създадете своя собствена VPN между вашия мобилен компютър и домашния ви компютър.

Всъщност този процес е по-лесен, отколкото си мислиш. Днес ще обсъдим как можете да използвате OpenVPN, за да създадете сигурна връзка между клиент и сървър на машина с Linux.

Имайте предвид, че ще създадем конфигурация на маршрутизиране, а не свързваща, която трябва да е добре за повечето случаи на използване. Потребителите на Windows могат да следват, като прочетат документацията OpenVPN, като започват със секцията за създаване на сертифициращ орган. Командите, използвани в Windows, ще бъдат подобни на тези, показани по-долу.

От какво имаш нужда

Ще ви трябва два компютъра - едната е сървърната машина, а другата е клиентът. Сървърната машина може да бъде вашият домашен десктоп или Linux потребителски модел от DigitalOcean или Linode. Клиентската машина е компютърът, който използвате редовно. Тъй като този урок е направен на Linux, и двата компютъра трябва да работят и с Linux.

Забележка : В този урок ще използваме Ubuntu като нашата дистрибуция както за сървър, така и за клиентска машина.

Инсталиране на OpenVPN

За да започнете, трябва да инсталирате OpenVPN и Easy-RSA на вашия сървър. След това инсталирайте OpenVPN на вашето клиентско устройство.

На Ubuntu трябва да инсталирате Easy-RSA от тази страница на Github. Ubuntu включва Easy-RSA версия 2 в своите хранилища. Връзката Github предлага Easy-RSA версия 3, която следва командите, които ще използвам в тази статия.

 sudo apt-get инсталирате openvpn git клонинг https://github.com/OpenVPN/easy-rsa.git 

В директорията, която сте клонирали в хранилището на Github, копирайте директорията "easyrsa3", която съдържа в "/ etc / easy-rsa /".

 sudo mkdir / etc / easy-rsa sudo cp -r ./easyrsa3/* / etc / easy-rsa / 

Инфраструктурата на публичните ключове (PKI)

OpenVPN използва инфраструктурата на публичните ключове (PKI), за да установи самоличността на сървърите и клиентите, така че тези отделни единици да могат да разговарят един с друг. PKI използва главен сертификационен орган (CA) заедно с индивидуални сертификати и частни ключове за всеки сървър и клиент.

CA трябва да подпише сървърните и клиентските сертификати. OpenVPN проверява, за да види, че сървърът удостоверява самоличността на всеки клиент и в същото време всеки клиент проверява самоличността на сървъра.

Настройката тук е по-сложна, отколкото бихте могли да намерите при PPTP стил, но осигурява по-добра защита на потребителите и дава на сървъра повече свобода да приема или отказва заявени входящи клиентски връзки.

Създаване на сертификат за СО

За по-строга сигурност се препоръчва машината ви за CA да се различава от сървъра ви. За краткост тази статия ще използва същата машина и за двете задачи. Трябва да промените процедурите си за копиране на файлове, за да се приспособите към ситуацията - независимо дали използвате scp за мрежови трансфери или като използвате USB ключ за ръчно преместване на файлове.

Забележка : Ако използвате отделен компютър като CA, ще трябва да инсталирате Easy-RSA на тази машина.

1. Променете директории на "/ etc / easy-rsa /:"

 cd / etc / easy-rsa / 

2. Ако е необходимо, копирайте "/etc/easy-rsa/vars.example" в "/ etc / easy-rsa / vars". След това отворете vars, за да редактирате съдържанието му:

 sudo cp ./vars.example ./vars sudo nano ./vars 

3. Въведете подробности като вашата страна, провинция, град, организация и имейл. Отменете линиите, показани тук, като премахнете "#" в началото на всяка от тях.

След като приключите с редактирането, запазете (Ctrl + o) и излезте (Ctrl + x).

4. Инициализирайте новата си PKI и генерирайте Keypair на сертифициращия орган, който ще използвате за подписване на отделни сървърни и клиентски сертификати:

 износ EASYRSA = $ (pwd) sudo ./easyrsa init-pki sudo ./easyrsa build-ca 

Копирайте файла ca.crt, който току-що създадохте, в директорията на сървъра на OpenVPN. Трябва също така да промените собственика и групата си с Chown:

 sudo cp /etc/easy-rsa/pki/ca.crt / и т.н. / openvpn / сървър / sudo корен root: root /etc/openvpn/server/ca.crt 

Създаване на сертификат за сървър и частен ключ

Променете обратно в директорията Easy-RSA и генерирайте сертификата на сървъра и неговия частен ключ:

 cd / etc / easy-rsa sudo ./easyrsa init-pki sudo ./easyrsa gen-req Име на сървъра nopass 

Можете да промените "Име на сървъра" в командата по-горе, за да изберете каквото искате. Уверете се, че отразявате тази промяна, когато копирате новия ключ в директорията на сървъра OpenVPN:

 sudo cp /etc/easy-rsa/pki/private/ServerName.key и т.н. / openvpn / server / 

Файл с параметри на Diffie-Hellman

OpenVPN използва метода за обмен на ключ Diffie-Hellman (DH) за сигурен обмен на криптографски ключове в мрежа. Ще създадете файл с параметри на DH със следната команда:

 sudo openssl dhparam -out /etc/openvpn/server/dh.pem 2048 

Крайният номер, 2048, в тази команда показва броя на битовете, използвани при създаването на файла. Например, можете да използвате 4096, но ще отнеме много време за генериране на файла и няма да подобри сигурността много. По подразбиране е 2048 и тази стойност е достатъчна за повечето случаи на използване.

Hash-базирано удостоверяване на съобщения

OpenVPN също използва подпис за идентификация на съобщения (HMAS), за да се предпази от уязвимости при SSL / TLS ръкостискания. Създайте файла с тази команда:

 sudo openvpn - genkey - secret /etc/openvpn/server/ta.key 

Клиентски файлове

На този етап ще сте създали няколко файла за вашия сървър. Сега е време да създадете файлове за вашите клиенти. Можете да повторите този процес няколко пъти за толкова клиенти, колкото имате нужда. Можете да създавате безопасни клиентски файлове на всеки компютър с инсталиран Easy-RSA.

Въведете директорията Easy-RSA и инициализирайте отново PKI, ако вече не сте го направили:

 cd / etc / easy-rsa sudo. / easyrsa init-pki 

Създайте клиентски ключ и сертификат. Променете директории, ако сте пропуснали предишната стъпка.

 cd / etc / easy-rsa sudo ./easyrsa gen-req ClientName nopass 

Ако повторите процеса, няма нужда да инициализирате PKI за всеки нов клиент. Просто не забравяйте да промените "ClientName", за да бъдете уникални всеки път.

Подписващ сървър и клиентски сертификати

СО трябва да подпише вашите сървърни и клиентски сертификати.

Ако погледнете във файла "/ etc / easy-rsa / pki / reqs /", трябва да видите всички файлове с искане (.req) Easy-RSA, създадени в предишните easyrsa gen-req .

В тази екранна снимка има само два .req файла. Вашият номер ще се различава, ако сте направили повече от един клиент в предишната стъпка.

Ако сте използвали отделна CA машина, сега трябва да прехвърлите тези .req файлове в CA за подписване. След като приключите, променете директорията Easy-RSA и подпишете вашите файлове със следните команди, като се уверите, че отразяват правилното местоположение на всеки .req и името на всеки сървър и клиент.

 cd / etc / easy-rsa sudo ./easyrsa import-req /etc/easy-rsa/pki/reqs/ServerName.req Server1 sudo ./easyrsa import-req /etc/easy-rsa/pki/reqs/ClientName.req Client1 sudo ./easyrsa подписва-req сървър Server1 sudo ./easyrsa клиент подписва-клиент Client1 

Имайте предвид, че ще трябва да предоставите на Easy-RSA различно име за вашите сървърни и клиентски сертификати. ServerName.req ще бъде използван тук, например, за да се създаде Server1.crt.

Вече трябва да намерите два нови файла - "/etc/easy-rsa/pki/issued/Server1.crt" и "/etc/easy-rsa/pki/issued/Client1.crt" - които ще прехвърлите на съответните им машини (разгледани в следващия раздел на тази статия). Можете да изтриете останалите .req файлове.

Преминаване през файловете .CRT

Сега подписаните сертификати (всеки .crt) са готови да работят за своите собственици. Преместете файла на сървъра в неговото местоположение OpenVPN и направете нова директория за клиентските сертификати:

 sudo mv /etc/easy-rsa/pki/issued/Server1.crt / etc / openvpn / сървър / sudo корен root: root /etc/openvpn/server/Server1.crt sudo mkdir / etc / easy-rsa / pki / подпис sudo mv /etc/easy-rsa/pki/issued/Client1.crt / etc / easy-rsa / pki / подписано / 

Създаването на папката "... pki / signed /" тук ви дава обозначено място за поставяне на няколко клиентски сертификати.

Споделен сървър и клиентски файлове

Сега трябва да имате пет файла в директорията "/ etc / openvpn / server /": ca.crt, dh.pem, Server1.crt, ServerName.key и ta.key.

Ще имате нужда от два от същите файлове в клиентската папка на OpenVPN на машината на клиента. Копирайте ги, като използвате scp или флаш диск, както е подходящо. Копирайте "/etc/openvpn/server/ca.crt" и "/etc/openvpn/server/ta.key" на клиента си "/ etc / openvpn / client /".

Не забравяйте да копирате клиентския си сертификат и ключ на същото местоположение. Копирайте "/etc/easy-rsa/pki/signed/Client1.crt" и "/etc/easy-rsa/pki/private/ClientName.key" на клиента си "/ etc / openvpn / client /". Повторете този процес за всички допълнителни клиенти, които може да сте създали.

За всеки клиент вече трябва да имате четири файла в "/ etc / openvpn / client:" Client1.crt, ClientName.key, ca.crt и ta.key.

Файлове за конфигуриране на сървър и клиент

Последната ви стъпка преди стартирането на VPN е да редактирате конфигурационните файлове за сървъра и клиента. Първо открийте файловете "default.conf" и "client.conf". Те вероятно ще бъдат в едно от тези места:

  • "/ ЮЕсАр / акции / OpenVPN / примери"
  • "/ Usr / share / doc / openvpn / examples / sample-config-files /" (тук се намират конфигурациите на Ubuntu)

Забележка : В Ubuntu ще трябва да разопаковате файла "server.conf.gz". Използвайте gunzip -d ./server.conf.gz да получите файла server.conf от компресирания пакет.

Копирайте всеки конфиг файл в съответните директории "/ etc / openvpn / server /" и "/ etc / openvpn / client /".

В server.conf направете следните промени. Уверете се, че имената и местоположенията на вашите ca.crt, Server1.crt, ServerName.key и dh.pem са изброени във вашия конфиг файл. Може да се наложи да използвате пълен пътеки - като ред, който чете "cert /etc/openvpn/server/Server1.crt".

Променете tls-auth... line, за да прочетете tls-crypt ta.key . Отново може да е необходима пълна пътека.

Откажи се (премахни ";") от линиите "потребител никой" и "група никой".

За клиента си ще направите подобни промени. След като направите конфигурационния файл, отразете имената и местоположенията на вашите ca.crt, Client1.crt, ClientName.key и ta.key (със същия ход от tls-auth... to tls-crypt... ) въведете името или IP адреса и порта на вашия сървър.

Време за свързване

Сега можете да стартирате сървъра и клиента си. Това е просто въпрос, ако всичко по-горе върви както е планирано.

Стартирайте сървъра с:

 openvpn /etc/openvpn/server/server.conf 

и клиента с:

 openvpn /etc/openvpn/client/client.conf 

Успешното създаване на VPN ще покаже изхода на клиента "Инициализираща последователност завършена" в края на изхода. Също така ще намерите нов тип връзка във вашите налични мрежови интерфейси.

Тази екранна снимка показва интерфейса "tun0". Това направи OpenVPN сървърът. Можете да видите адреса му като 10.8.0.1 и да пишете този адрес от клиента, за да потвърдите успешна връзка.

Маршрутизиране на трафика по интернет през сървъра

В този момент вероятно ще искате да осъществите достъп до интернет чрез сървъра си от отдалечения клиент. За да направите това, първо трябва да промените конфигурационния файл на сървъра си. Добавете push 'redirect-gateway def1 към конфигурационния файл на сървъра.

 echo "натиснете \" пренасочване-шлюз def1 \ "" | sudo tee - a /etc/openvpn/server/server.conf 

Също така ще трябва да уведомите вашия сървър за правилно насочване на заявките за интернет трафик на клиента. Тази команда ще промени вашите правила за филтриране на пакети в Iptables:

 iptables -t nat -А ПОСРЕЩАНЕ -s 10.8.0.0/24 -o eth0 -j MASQUERADE 

Ако не сте променили реда "сървър 10.8.0.0 255.255.255.0" във файла server.conf, IP адресът в тази команда трябва да работи. Трябва да промените "eth0", за да съответства на Ethernet интерфейса на вашия сървър. Можете да видите от предишни екранни снимки, че моята машина използва "enp19s0".

След това можете да натиснете DNS настройките към клиента. Всеки адрес, до който клиентът може да достигне, може да бъде натиснат. Можете да използвате тази команда като начална точка:

 echo "push \" dhcp - опцията DNS 10.8.0.1 \ "" | sudo tee - a /etc/openvpn/server/server.conf 

И накрая, можете да активирате пренасочването на пакети на сървъра, както следва:

 ехо 1 | sudo tee / proc / sys / net / ipv4 / ip_forward 

Вече трябва да можете да използвате клиента си за достъп до интернет чрез VPN.

заключение

Знам, че това е дълъг път. Надяваме се, че сте успели да създадете VPN и да се свържете с интернет по сигурен начин.

Ако не друго, това ще е добра учебна опит за това, което е необходимо, за да се създаде сигурен цифров тунел. Благодаря, че се присъединихте към края.