Како да поставите OpenVPN сервер на Debian 11
Вовед
Дали вашиот тим треба приватно и безбедно да пристапува до внатрешните ресурси од оддалечени локации, преку недоверливи мрежи, како да се поврзани на приватната мрежа? Виртуелна приватна мрежа (VPN) им овозможува да го направат токму тоа. VPN серверот делува како единствена точка за влез во вашата приватна мрежа за оддалечените корисници - и тоа е пофлексибилно и посоодветно решение отколку, да речеме, SSH jump серверот. Ги автентицира корисниците и создава шифриран тунел помеѓу нивните уреди и приватната мрежа, делувајќи како нивен безбеден портал не само на таа мрежа, туку и на поширокиот интернет, доколку така го конфигурирате.
Може да размислите за комерцијален VPN, но исто така можете да администрирате сопствен бесплатен VPN како оној во ова упатство. OpenVPN е VPN-решение за безбеден слој на штекери (SSL) со целосни функции, со отворен код, кое располага со широк опсег на конфигурации. Во ова упатство, ќе поставите OpenVPN сервер на серверот Debian 11 и потоа ќе го конфигурирате пристапот до него од Windows, macOS, Linux, iOS и/или Android.
Забелешка: Ако планирате да поставите сервер OpenVPN на DigitalOcean Droplet, имајте предвид дека ние, како и многу провајдери на хостинг, наплаќаме за преголеми пропусен опсег. Ве молиме имајте предвид колкав пропусен опсег веројатно ќе потрошат вашите корисници на VPN, бидејќи сè што прават на интернет додека се поврзани на VPN ќе го троши пропусниот опсег на DigitalOcean (претпоставувајќи дека ќе одлучите да го насочите целиот нивен сообраќај преку VPN).
Погледнете ја оваа страница за повеќе информации.
Предуслови
За да го завршите ова упатство, ќе ви требаат:
- Два Debian 11 сервери: еден да биде домаќин на вашата OpenVPN услуга и еден да служи како авторитет за сертификати (CA).
- Корисник кој не е root со привилегии
sudo
на двата сервери. Можете да го следите нашиот водич за поставување на почетен сервер на Debian 11 за да поставите корисник со соодветни дозволи. Тој туторијал ќе постави и заштитен ѕид, кој се претпоставува дека е поставен на двата сервери низ овој водич. - Easy-RSA е инсталиран на двата сервери. Ова е алатката што ќе ја користите за управување со сертификатите за вашиот VPN. Следете ги чекорите 1-2 од ова упатство на вашиот VPN сервер и следете ги чекорите 1-3 на вашиот сервер CA.
Иако е технички возможно да ја стартувате вашата CA од вашиот OpenVPN сервер или од вашата локална машина, посигурно е да се чува CA - имено, неговиот приватен клуч - на посебен сервер кој не е постојано поврзан на интернет. Бидејќи веројатно планирате да го задржите вашиот VPN сервер поврзан на интернет 24/7, тој може да биде поранлив на компромис од напаѓачите. Не сакате да го чувате приватниот клуч на вашиот CA на таков јавен сервер бидејќи ако напаѓачот добие пристап до приватниот клуч, може да го користи за потпишување нови сертификати, давајќи му пристап до вашиот VPN. Според официјалната документација OpenVPN, треба да го поставите вашиот CA на самостоен сервер кој е посветен на увоз и потпишување барања за сертификати.
Конечно, имајте предвид дека ако ја оневозможите проверката на лозинката додека ги конфигурирате овие сервери, може да наидете на потешкотии при префрлање датотеки меѓу нив подоцна во ова упатство. За да го решите овој проблем, можете повторно да овозможите автентикација на лозинка на секој сервер. Алтернативно, може да генерирате SSH пар клучеви за секој сервер, потоа да го додадете јавниот SSH клуч на OpenVPN серверот во датотеката authorized_keys
на машината CA и обратно. Погледнете како да поставите SSH клучеви на Debian 11 за инструкции како да се изврши едно од овие решенија.
Кога ќе ги имате овие предуслови, можете да преминете на чекор 1 од ова упатство.
Чекор 1 - Инсталирање на OpenVPN
За да започнете, ажурирајте го индексот на пакети на вашиот VPN сервер и инсталирајте OpenVPN. OpenVPN е достапен во стандардните складишта на Debian, така што можете да го користите apt
за инсталација:
- sudo apt update
- sudo apt install openvpn
Тоа е тоа. Бидејќи веќе сте го инсталирале Easy-RSA на двата сервери како предуслов и го иницијализиравте CA исто така, подготвени сте да генерирате сертификат за VPN-серверот.
Чекор 2 - Креирање на сертификат за сервер, клуч и датотеки за шифрирање
На OpenVPN серверот, сменете го директориумот /easy-rsa
во домашниот директориум на вашиот корисник кој не е root и извршете ја скриптата easyrsa
со < Опцијаgen-req проследена со заедничко име за машината. Ова може да биде сè што сакате, но може да биде корисно да го направите нешто описно. Во текот на овој туторијал, заедничкото име на серверот OpenVPN едноставно ќе биде \сервер. Погрижете се да ја вклучите и опцијата nopass
. Ако не го сторите тоа, датотеката со барање ќе ја заштити со лозинка, што може да доведе до проблеми со дозволите подоцна:
Забелешка: ако изберете друго име освен \сервер овде, ќе мора да приспособите некои од инструкциите подолу. На пример, кога ги копирате генерираните датотеки во /etc/openvpn директориумот
, ќе мора да ги замените точните имиња. Исто така, ќе треба да ја измените датотеката /etc/openvpn/server.conf
подоцна за да покажете на точниот .crt
и .key
датотеки.
- cd ~/easyrsa
- ./easyrsa gen-req server nopass
Скриптата ќе ве поттикне за заедничкото име што сакате да се појави во барањето за потпишување сертификат (CSR). Стандардно, ќе го прикаже кое било име што сте го пренеле на ./easyrsa gen-req
(на пр., сервер
). Внесете ENTER
за да го прифатите стандардното име или внесете друго.
Ова ќе создаде приватен клуч за серверот и датотека со барање за сертификат наречена server.req
. Копирајте го клучот на серверот во директориумот /etc/openvpn/
:
- sudo cp ~/easy-rsa/pki/private/server.key /etc/openvpn/
Користејќи безбеден метод (како SCP, во примерот подолу), префрлете ја датотеката server.req
на вашата CA машина:
- scp ~/easy-rsa/pki/reqs/server.req sammy@your_CA_ip:/tmp
Следно, на вашата CA машина, одете до директориумот ~/easy-rsa
:
- cd ~/easy-rsa
Користејќи ја скриптата easyrsa
, увезете ја датотеката server.req
, следејќи ја патеката на датотеката со заедничкото име што го внесовте при креирањето на ООП:
- ./easyrsa import-req /tmp/server.req server
Потоа потпишете го барањето со вклучување easyrsa
со опцијата sign-req
, проследено со тип на барање и вообичаеното име. Типот на барање може да биде или клиент
или сервер
, така што за барањето за сертификат на серверот OpenVPN, задолжително користете го типот на барање сервер
:
- ./easyrsa sign-req server server
На излезот, ќе биде побарано да потврдите дека барањето доаѓа од доверлив извор. Напишете да
и притиснете ENTER
за да го потврдите ова:
You are about to sign the following certificate.
Please check over the details shown below for accuracy. Note that this request
has not been cryptographically verified. Please be sure it came from a trusted
source or that you have verified the request checksum with the sender.
Request subject, to be signed as a server certificate for 825 days:
subject=
commonName = server
Type the word 'yes' to continue, or any other input to abort.
Confirm request details: yes
Ако сте го шифрирале вашиот CA клуч додека го следевте упатството наведено во предусловите, во овој момент ќе ви биде побарано да ја внесете вашата лозинка.
Следно, префрлете го потпишаниот сертификат назад на вашиот VPN сервер користејќи безбеден метод:
- scp pki/issued/server.crt sammy@your_server_ip:/tmp
Префрлете ја датотеката ca.crt
и на вашиот VPN сервер:
- scp pki/ca.crt sammy@your_server_ip:/tmp
На вашиот OpenVPN сервер му треба ca.crt
за да знае дека може да му верува на ентитетот што го потпишал server.crt
.
Следно, на вашиот OpenVPN сервер, копирајте ги датотеките server.crt
и ca.crt
во вашиот /etc/openvpn/
директориум:
- sudo cp /tmp/{server.crt,ca.crt} /etc/openvpn/
Потоа одете до вашиот директориум ~/easy-rsa
:
- cd ~/easy-rsa
Оттаму, креирајте силен клуч Diffie-Hellman што ќе го користите при размена на клучеви со пишување:
- ./easyrsa gen-dh
Ова може да потрае неколку минути за да се заврши. Откако ќе го стори тоа, генерирајте HMAC потпис за да ги зајакнете можностите за верификација на интегритетот на TLS на серверот:
- sudo openvpn --genkey secret ta.key
Кога командата ќе заврши, копирајте ги двете нови датотеки во директориумот /etc/openvpn/
:
- sudo cp ~/easy-rsa/ta.key /etc/openvpn/
- sudo cp ~/easy-rsa/pki/dh.pem /etc/openvpn/
Со тоа, се генерирани сите сертификати и датотеки со клучеви што му се потребни на вашиот сервер. Подготвени сте да ги креирате соодветните сертификати и клучеви што ќе ги користи вашата клиентска машина за пристап до вашиот OpenVPN сервер.
Чекор 3 - Генерирање на сертификат за клиент и пар клучеви
Иако можете да генерирате приватен клуч и барање за сертификат на вашата клиентска машина, а потоа да ги испратите до CA за да се потпише, ова упатство прикажува процес за генерирање на барањето за сертификат на серверот VPN. Придобивката од ова е што можеме да создадеме скрипта за сервер која автоматски ќе генерира датотеки за конфигурација на клиентот кои ги содржат сите потребни клучеви, сертификати и опции за конфигурација во една датотека. Вообичаено, главната датотека за конфигурација на клиентот ќе ги наведе имињата на датотеките на посебните датотеки со клучеви и сертификати, а потоа ќе треба да дистрибуирате повеќе датотеки на секој клиент. Но, многу е подобро да го вклучите целото тело на клучевите и сертификатот во самата главна конфигурациска датотека за да можете да го рационализирате процесот на приклучување на VPN. Ќе ја генерирате таа конфигурациска датотека со еден клиент во чекор 8.
Во овој чекор, прво ќе генерирате клиентски клуч и пар сертификат. Ако имате повеќе од еден клиент, можете да го повторите овој процес за секој од нив. Сепак, имајте предвид дека ќе треба да пренесете единствена вредност на името на скриптата за секој клиент. Во текот на ова упатство, првиот пар сертификат/клуч се нарекува client1
.
На вашиот VPN-сервер, започнете со создавање структура на директориуми во вашиот домашен директориум за складирање на сертификатот на клиентот и клучните датотеки:
- mkdir -p ~/client-configs/keys
Бидејќи ќе ги зачувате паровите на сертификатот/клучеви и конфигурациските датотеки на вашите клиенти во овој директориум, треба да ги заклучите неговите дозволи сега како безбедносна мерка:
- chmod -R 700 ~/client-configs
Следно, вратете се во директориумот ~/easy-rsa
и извршете ја скриптата easyrsa
со gen-req
и nopass
опции, заедно со заедничкото име за клиентот:
- cd ~/easy-rsa
- ./easyrsa gen-req client1 nopass
Притиснете ENTER
за да го потврдите заедничкото име. Потоа, копирајте ја датотеката client1.key
во директориумот /client-configs/keys/
што сте го создале претходно:
- cp pki/private/client1.key ~/client-configs/keys/
Следно, префрлете ја датотеката client1.req
на вашата CA машина користејќи безбеден метод:
- scp pki/reqs/client1.req sammy@your_CA_ip:/tmp
На вашата CA машина, одете до директориумот ~/easy-rsa
и увезете го барањето за сертификат:
- cd ~/easy-rsa
- ./easyrsa import-req /tmp/client1.req client1
Потоа потпишете го барањето како што направивте за серверот во претходниот чекор. Овој пат, сепак, задолжително наведете го типот на барање клиент
:
- ./easyrsa sign-req client client1
На промптот, внесете да
за да потврдите дека имате намера да го потпишете барањето за сертификат и дека доаѓа од доверлив извор:
OutputType the word 'yes' to continue, or any other input to abort.
Confirm request details: yes
Повторно, ако сте го шифрирале вашиот CA клуч, ќе ви биде побарано да ја внесете вашата лозинка овде.
Ова ќе создаде датотека со сертификат за клиент со име client1.crt
. Префрлете ја оваа датотека назад на серверот:
- scp pki/issued/client1.crt sammy@your_server_ip:/tmp
На вашиот OpenVPN сервер, копирајте го сертификатот на клиентот во директориумот /client-configs/keys/
:
- cp /tmp/client1.crt ~/client-configs/keys/
Следно, копирајте ги датотеките ca.crt
и ta.key
и во директориумот /client-configs/keys/
:
- sudo cp ~/easy-rsa/ta.key ~/client-configs/keys/
- sudo cp /etc/openvpn/ca.crt ~/client-configs/keys/
Со тоа, сертификатите и клучевите на вашиот сервер и клиент се генерирани и се складирани во соодветните директориуми на вашиот сервер. Сè уште има неколку дејства што треба да се извршат со овие датотеки, но тие ќе дојдат во чекор 8. Засега, можете да продолжите со конфигурирање на OpenVPN на вашиот сервер.
Чекор 4 - Конфигурирање на услугата OpenVPN
Сега кога се генерирани и сертификатите и клучевите на вашиот клиент и сервер, можете да започнете да ја конфигурирате услугата OpenVPN за да ги користите овие ингеренции.
Започнете со копирање примерок за конфигурациска датотека OpenVPN во директориумот за конфигурација за да го користите како основа за вашето поставување:
- sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/
Отворете ја конфигурациската датотека на серверот во претпочитаниот уредувач на текст:
- sudo nano /etc/openvpn/server.conf
Најдете го делот HMAC барајќи ја директивата tls-auth
. Оваа линија веќе треба да биде некоментирана, но ако не е, тогаш отстранете го \; за да ја откажете од коментарот.
tls-auth ta.key 0 # This file is secret
Следно, пронајдете го делот за криптографски шифри барајќи ги коментираните линии cipher
. Шифрата AES-256-CBC
нуди добро ниво на шифрирање и е добро поддржана. Повторно, оваа линија веќе треба да биде без коментар, но ако не е, тогаш само отстранете го \;” пред него:
cipher AES-256-CBC
Под ова, додајте директива auth
за да го изберете алгоритамот за дигестирање на пораки HMAC. За ова, SHA256
е добар избор:
auth SHA256
Следно, пронајдете ја линијата што содржи директива dh
која ги дефинира параметрите Diffie-Hellman. Поради некои неодамнешни промени направени на Easy-RSA, името на датотеката за клучот Diffie-Hellman може да биде различно од она што е наведено во примерната датотека за конфигурација на серверот. Доколку е потребно, сменете го името на датотеката наведено овде со отстранување на 2048
за да се усогласи со клучот што го генериравте во претходниот чекор:
dh dh.pem
Конечно, пронајдете ги поставките user
и group
и отстранете ги \;” на почетокот на секоја за да ги откоментирате овие редови:
user nobody
group nogroup
Промените што сте ги направиле во примерокот server.conf
датотека до овој момент се неопходни за да може OpenVPN да функционира. Промените наведени подолу се опционални, иако и тие се потребни за многу случаи на вообичаена употреба.
Притиснете ги промените на DNS за да го пренасочите целиот сообраќај преку VPN (опционално)
Поставките погоре ќе создадат VPN врска помеѓу двете машини, но нема да принудат никакви врски да го користат тунелот. Ако сакате да ја користите VPN за да го насочите целиот ваш сообраќај, најверојатно ќе сакате да ги турнете поставките за DNS на компјутерите на клиентите.
Има неколку директиви во датотеката server.conf
кои мора да ги промените за да ја овозможите оваа функционалност. Најдете го делот redirect-gateway
и отстранете ја точка-запирка \;” од почетокот на линијата redirect-gateway
за да ја откоментирате:
push "redirect-gateway def1 bypass-dhcp"
Веднаш под ова, пронајдете го делот dhcp-option
. Повторно, отстранете го \;” од пред двете редови за да ги отфрлите од коментар:
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
Ова ќе им помогне на клиентите да ги реконфигурираат поставките за DNS за да го користат тунелот VPN како стандардна порта.
Прилагодете ги пристаништето и протоколот (опционално)
Стандардно, серверот OpenVPN користи порта 1194
и протоколот UDP за прифаќање врски со клиентот. Ако треба да користите друга порта поради рестриктивните мрежни средини во кои можеби се наоѓаат вашите клиенти, можете да ја промените опцијата port
. Ако не хостирате веб-содржини на вашиот OpenVPN сервер, портата 443
е популарен избор бидејќи обично е дозволено преку правилата за заштитен ѕид.
# Optional!
port 443
Честопати, протоколот е ограничен и на таа порта. Ако е така, сменете го proto
од UDP во TCP:
# Optional!
proto tcp
Ако навистина го префрлите протоколот на TCP, ќе треба да ја промените вредноста на директивата explicit-exit-notify
од 1
во 0
, бидејќи ова директивата се користи само од UDP. Ако не го сторите тоа додека користите TCP, ќе предизвикате грешки кога ќе ја стартувате услугата OpenVPN:
# Optional!
explicit-exit-notify 0
Ако немате потреба да користите друга порта и протокол, најдобро е да ги оставите овие три поставки како нивни стандардни.
Покажете на нестандардни акредитиви (изборно)
Ако избравте друго име за време на командата ./easyrsa gen-req
за сертификатот на серверот во чекор 2, изменете ги линиите cert
и key
што гледате да покаже на соодветните датотеки .crt
и .key
. Ако сте го користеле стандардното име, \сервер, ова е веќе правилно поставено:
cert server.crt
key server.key
Кога ќе завршите, зачувајте ја и затворете ја датотеката.
Откако ќе ги поминете и направите какви било промени во конфигурацијата на OpenVPN на вашиот сервер што се потребни за вашиот специфичен случај на употреба, можете да започнете да правите некои промени во мрежната мрежа на вашиот сервер.
Чекор 5 - Прилагодување на конфигурацијата за мрежно поврзување на серверот
Постојат некои аспекти од мрежната конфигурација на серверот што треба да се прилагодат за OpenVPN правилно да го насочува сообраќајот преку VPN. Првиот од нив е проследување на IP, метод за одредување каде треба да се насочува IP сообраќајот.
Прилагодете ја стандардната поставка за испраќање IP на вашиот сервер со менување на датотеката /etc/sysctl.conf
:
- sudo nano /etc/sysctl.conf
Внатре, побарајте ја коментираната линија што поставува net.ipv4.ip_forward
. Отстранете го знакот \#” од почетокот на линијата за да ја откоментирате оваа поставка:
net.ipv4.ip_forward=1
Зачувајте ја и затворете ја датотеката кога ќе завршите.
За да ја прочитате датотеката и да ги прилагодите вредностите за тековната сесија, напишете:
- sudo sysctl -p
Outputnet.ipv4.ip_forward = 1
Ако го следевте водичот за почетно поставување на серверот на Debian 11 наведен во предусловите, треба да имате поставено заштитен ѕид на UFW. Без оглед на тоа дали го користите заштитниот ѕид за да го блокирате несаканиот сообраќај (што речиси секогаш треба да го правите), за овој водич ви треба заштитен ѕид за манипулирање со дел од сообраќајот што доаѓа на серверот. Некои од правилата на заштитниот ѕид мора да се изменат за да се овозможи маскирање, концепт на iptables кој обезбедува динамично превод на мрежна адреса (NAT) за правилно насочување на врските со клиентите.
Пред да ја отворите датотеката за конфигурација на заштитниот ѕид за да ги додадете правилата за маскирање, прво мора да го пронајдете јавниот мрежен интерфејс на вашата машина. За да го направите ова, напишете:
- ip route | grep default
Вашиот јавен интерфејс е низата по \dev во излезот на командата. На пример, излезот подолу покажува интерфејс со име eth0
, кој е означен:
Outputdefault via 203.0.113.1 dev eth0 proto static
Кога имате интерфејс поврзан со вашата стандардна рута, отворете ја датотеката /etc/ufw/before.rules
за да ја додадете соодветната конфигурација:
- sudo nano /etc/ufw/before.rules
Правилата на UFW обично се додаваат со помош на командата ufw
. Правилата наведени во датотеката before.rules
, сепак, се читаат и се ставаат во сила пред да се вчитаат конвенционалните правила на UFW. Кон врвот на датотеката, додајте ги означените линии подолу. Ова ќе ја постави стандардната политика за ланецот POSTROUTING
во табелата nat
и ќе го маскира секој сообраќај што доаѓа од VPN. Запомнете да го замените eth0
во линијата -A POSTROUTING
подолу со интерфејсот што го најдовте во горната команда:
#
# rules.before
#
# Rules that should be run before the ufw command line added rules. Custom
# rules should be added to one of these chains:
# ufw-before-input
# ufw-before-output
# ufw-before-forward
#
# START OPENVPN RULES
# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Allow traffic from OpenVPN client to eth0 (change to the interface you discovered!)
-A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE
COMMIT
# END OPENVPN RULES
# Don't delete these required lines, otherwise there will be errors
*filter
. . .
Зачувајте ја и затворете ја датотеката кога ќе завршите.
Следно, треба да му кажете на UFW да дозволи препратени пакети и стандардно. За да го направите ова, отворете ја датотеката /etc/default/ufw
:
- sudo nano /etc/default/ufw
Внатре, пронајдете ја директивата DEFAULT_FORWARD_POLICY
и променете ја вредноста од DROP
во ACCEPT
:
DEFAULT_FORWARD_POLICY="ACCEPT"
Зачувајте ја и затворете ја датотеката кога ќе завршите.
Следно, прилагодете го самиот заштитен ѕид за да дозволите сообраќај кон OpenVPN. Ако не сте ги промениле пристаништето и протоколот во датотеката /etc/openvpn/server.conf
, ќе треба да го отворите UDP сообраќајот до портата 1194
. Ако сте ги измениле портата и/или протоколот, заменете ги вредностите што сте ги избрале овде.
Исто така, во случај да не сте ја додале SSH портата при пополнување на предусловното упатство, додајте го и овде:
- sudo ufw allow 1194/udp
- sudo ufw allow OpenSSH
Откако ќе ги додадете тие правила, оневозможете и повторно овозможете UFW да го рестартира и вчитајте ги промените од сите датотеки што сте ги измениле:
- sudo ufw disable
- sudo ufw enable
Вашиот сервер сега е конфигуриран правилно да управува со сообраќајот OpenVPN.
Чекор 6 - Стартување и овозможување на услугата OpenVPN
Конечно сте подготвени да ја стартувате услугата OpenVPN на вашиот сервер. Ова е направено со помош на алатката systemd systemctl
:
- sudo systemctl start openvpn@server
Ова ја стартува услугата openvpn користејќи /etc/openvpn/server.conf
како конфигурациска датотека. Ако наместо тоа сте навеле openvpn@server2
, на пример, systemd би го користел името на датотеката /etc/openvpn/server2.conf
при стартување на услугата.
Проверете дали услугата е успешно стартувана со внесување:
- sudo systemctl status openvpn@server
Ако сè е добро, вашиот излез ќе изгледа вака:
Output● openvpn@server.service - OpenVPN connection to server
Loaded: loaded (/lib/systemd/system/openvpn@.service; disabled; vendor preset: enabled)
Active: active (running) since Wed 2022-12-21 03:39:24 UTC; 29s ago
Docs: man:openvpn(8)
https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage
https://community.openvpn.net/openvpn/wiki/HOWTO
Main PID: 3371 (openvpn)
Status: "Initialization Sequence Completed"
Tasks: 1 (limit: 3587)
Memory: 1.2M
CGroup: /system.slice/system-openvpn.slice/openvpn@server.service
└─3371 /usr/sbin/openvpn --daemon ovpn-server --status /run/openvpn/server.status 10 --cd /etc/openvpn --config /etc/openvpn/server.conf --writepid /run/openvpn/
Можете исто така да проверите дали интерфејсот OpenVPN tun0
е достапен со внесување:
- ip addr show tun0
Ова ќе излезе конфигуриран интерфејс:
Output3: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
link/none
inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0
valid_lft forever preferred_lft forever
inet6 fe80::dd60:3a78:b0ca:1659/64 scope link stable-privacy
valid_lft forever preferred_lft forever
Откако ќе ја стартувате услугата, овозможете ја за да започне автоматски при подигање:
- sudo systemctl enable openvpn@server
Вашата OpenVPN услуга сега е отворена и работи. Сепак, пред да започнете да го користите, прво мора да креирате конфигурациска датотека за машината на клиентот. Овој туторијал веќе зборуваше за тоа како да креирате парови сертификат/клуч за клиенти, а следниот чекор ќе покаже како да креирате инфраструктура која ќе генерира датотеки за конфигурација на клиентот.
Чекор 7 - Креирање на конфигурациска инфраструктура на клиентот
Создавањето датотеки за конфигурација за клиентите на OpenVPN може да биде донекаде вклучено, бидејќи секој клиент мора да има своја конфигурација и секој мора да се усогласи со поставките наведени во конфигурациската датотека на серверот. Наместо да пишувате една конфигурациска датотека што може да се користи само на еден клиент, овој чекор го опишува процесот за градење на конфигурациска инфраструктура на клиентот што можете да го користите за да генерирате конфигурациски датотеки во лет. Прво ќе креирате конфигурациска датотека „основа“, а потоа ќе извршите скрипта што ќе генерира уникатни датотеки за конфигурација на клиентот користејќи ја основната конфигурациска датотека плус уникатниот сертификат и клучеви на клиентот.
Започнете со создавање нов директориум на вашиот OpenVPN сервер каде што ќе ги складирате датотеките за конфигурација на клиентот во директориумот client-configs
што го создадовте претходно:
- mkdir -p ~/client-configs/files
Следно, копирајте пример за конфигурациска датотека на клиентот во директориумот client-configs
за да го користите како основна конфигурација:
- cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf
Отворете ја оваа нова датотека во вашиот уредувач на текст:
- nano ~/client-configs/base.conf
Внатре, лоцирајте ја директивата далечински
. Ова го упатува клиентот кон адресата на вашиот OpenVPN сервер - јавната IP адреса на вашиот OpenVPN сервер. Ако одлучивте да ја промените портата што ја слуша серверот OpenVPN, исто така ќе треба да го промените 1194
во портата што ја избравте:
. . .
# The hostname/IP and port of the server.
# You can have multiple remote entries
# to load balance between the servers.
remote your_server_ip 1194
. . .
Бидете сигурни дека протоколот се совпаѓа со вредноста што ја користите во конфигурацијата на серверот:
proto udp
Следно, отстранете ги коментарите на директивите user
и group
со отстранување на \;” на почетокот на секоја линија:
# Downgrade privileges after initialization (non-Windows only)
user nobody
group nogroup
Најдете ги директивите што ги поставуваат датотеките ca
, cert
и key
. Коментирајте ги овие директиви бидејќи набргу ќе ја додадете целосната содржина на сертификатот и клучните датотеки во основната датотека:
# SSL/TLS parms.
# See the server config file for more
# description. It's best to use
# a separate .crt/.key file pair
# for each client. A single ca
# file can be used for all clients.
#ca ca.crt
#cert client.crt
#key client.key
Слично, коментирајте ја директивата tls-auth
, бидејќи ќе додадете ta.key
директно во конфигурациската датотека на клиентот:
# If a tls-auth key is used on the server
# then every client must also have the key.
#tls-auth ta.key 1
Прегледајте ги поставките шифра
и auth
што сте ги поставиле во датотеката /etc/openvpn/server.conf
:
cipher AES-256-CBC
auth SHA256
Следно, додадете ја директивата key-direction
некаде во датотеката. Мора да го поставите ова на \1 за VPN да функционира правилно на клиентската машина:
key-direction 1
Конечно, додајте неколку коментирани линии. Иако можете да ги вклучите овие директиви во секоја конфигурациска датотека на клиентот, треба да ги овозможите само за клиентите на Linux што се испорачуваат со датотека /etc/openvpn/update-resolv-conf
. Оваа скрипта ја користи алатката resolvconf
за ажурирање на информациите за DNS за клиентите на Linux.
# script-security 2
# up /etc/openvpn/update-resolv-conf
# down /etc/openvpn/update-resolv-conf
Ако вашиот клиент работи со Linux и има датотека /etc/openvpn/update-resolv-conf
, отстранете ги коментарите на овие редови од конфигурациската датотека на клиентот откако ќе се генерира.
Зачувајте ја и затворете ја датотеката кога ќе завршите.
Следно, креирајте едноставна скрипта што ќе создаде нова конфигурациска датотека што ќе ги содржи вашите сертификати, клуч, датотеки за шифрирање и основната конфигурација во директориумот ~/client-configs/files
. Отворете нова датотека наречена make_config.sh
во директориумот ~/client-configs
:
- nano ~/client-configs/make_config.sh
Внатре, додајте ја следнава содржина, проверувајќи дали сте ја смениле sammy
на корисничката сметка на вашиот сервер што не е root:
#!/bin/bash
# First argument: Client identifier
KEY_DIR=/home/sammy/client-configs/keys
OUTPUT_DIR=/home/sammy/client-configs/files
BASE_CONFIG=/home/sammy/client-configs/base.conf
cat ${BASE_CONFIG} \
<(echo -e '<ca>') \
${KEY_DIR}/ca.crt \
<(echo -e '</ca>\n<cert>') \
${KEY_DIR}/${1}.crt \
<(echo -e '</cert>\n<key>') \
${KEY_DIR}/${1}.key \
<(echo -e '</key>\n<tls-auth>') \
${KEY_DIR}/ta.key \
<(echo -e '</tls-auth>') \
> ${OUTPUT_DIR}/${1}.ovpn
Зачувајте ја и затворете ја датотеката кога ќе завршите.
Пред да продолжите понатаму, задолжително означете ја оваа датотека како извршна со внесување:
- chmod 700 ~/client-configs/make_config.sh
Оваа скрипта ќе направи копија од датотеката base.conf
што сте ја направиле, ќе ги собере сите сертификати и клучни датотеки што сте ги создале за вашиот клиент, ќе ја извлече нивната содржина, ќе ги додаде на копијата од основната конфигурација датотека и извезете ја целата оваа содржина во нова датотека за конфигурација на клиентот. Ова значи дека, наместо да мора да управувате со конфигурацијата, сертификатот и клучните датотеки на клиентот одделно, сите потребни информации се складираат на едно место. Придобивката од ова е што ако некогаш треба да додадете клиент во иднина, можете само да ја извршите оваа скрипта од централна локација за брзо да ја креирате датотеката за конфигурација која ги содржи сите потребни информации во една датотека, лесна за дистрибуција.
Ве молиме имајте предвид дека секогаш кога додавате нов клиент, ќе треба да генерирате нови клучеви и сертификати за него пред да можете да ја извршите оваа скрипта и да ја генерирате нејзината конфигурациска датотека. Ќе добиете малку пракса користејќи ја оваа скрипта во следниот чекор.
Чекор 8 - Генерирање на конфигурации на клиентот
Ако сте следеле заедно со водичот, сте создале сертификат за клиент и клуч со име client1.crt
и client1.key
, соодветно, во чекор 3. Можете да генерирате конфигурациска датотека за овие ингеренции со преместување во директориумот ~/client-configs
и извршување на скриптата што ја направивте на крајот од претходниот чекор:
- cd ~/client-configs
- sudo ./make_config.sh client1
Ова ќе создаде датотека со име client1.ovpn
во вашиот директориум ~/client-configs/files
:
- ls ~/client-configs/files
Outputclient1.ovpn
Треба да ја префрлите оваа датотека на уредот што планирате да го користите како клиент. На пример, ова може да биде вашиот локален компјутер или мобилен уред.
Додека точните апликации што се користат за да се постигне овој пренос ќе зависат од оперативниот систем на вашиот уред и вашите лични преференци, сигурен и безбеден метод е да користите SFTP (SSH протокол за пренос на датотеки) или SCP (безбедна копија) на задниот дел. Ова ќе ги пренесе датотеките за автентикација на VPN на вашиот клиент преку шифрирана врска.
Еве пример SFTP команда користејќи го примерот client1.ovpn
што можете да го извршите од вашиот локален компјутер (macOS или Linux). Ја става датотеката .ovpn
во вашиот домашен директориум:
- sftp sammy@your_server_ip:client-configs/files/client1.ovpn ~/
Еве неколку алатки и упатства за безбедно пренесување датотеки од серверот на локален компјутер:
- Како да користите SFTP за безбедно пренесување датотеки со далечински сервер
- WinSCP
- FileZilla
- Cyberduck
Чекор 9 - Инсталирање на конфигурацијата на клиентот
Овој дел опфаќа како да инсталирате VPN профил на клиент на Windows, macOS, Linux, iOS и Android. Ниту една од овие инструкции на клиентот не е зависна една од друга, затоа слободно прескокнете на кое било што е применливо за вашиот уред.
Врската OpenVPN ќе го има истото име како што и да сте ја нарекле датотеката .ovpn
. Што се однесува до ова упатство, тоа значи дека врската е именувана client1.ovpn
, усогласувајќи се со првата клиентска датотека што сте ја генерирале.
Windows
Се инсталира
Преземете ја клиентската апликација OpenVPN за Windows од страницата за преземања на OpenVPN. Изберете ја соодветната верзија на инсталерот за вашата верзија на Windows.
Забелешка: На OpenVPN му требаат административни привилегии за да се инсталира.
Откако ќе го инсталирате OpenVPN, копирајте ја датотеката .ovpn
на:
C:\Program Files\OpenVPN\config
Можеби нема да можете да ја префрлите датотеката директно на оваа локација ако не ја извршувате програмата за пренос на датотеки (на пр. WinSCP) како администратор. Можете или да ја извршите како администратор или да ја префрлите датотеката во домашниот директориум на вашиот неадминистративен корисник и потоа да ја копирате во C:\Program Files\OpenVPN\config
локално, одобрувајќи ја копијата на административен локација кога ќе биде побарано.
Кога ќе го стартувате OpenVPN, тој автоматски ќе го види профилот и ќе го направи достапен.
Мора да го стартувате OpenVPN како администратор секој пат кога ќе се користи, дури и од административни сметки. За да го направите ова без да морате да кликнете со десното копче и да изберете Стартувај како администратор секој пат кога користите VPN, мора да го поставите ова од административна сметка. Ова исто така значи дека стандардните корисници ќе треба да ја внесат лозинката на администраторот за да користат OpenVPN. Од друга страна, стандардните корисници не можат правилно да се поврзат со серверот освен ако апликацијата OpenVPN на клиентот нема администраторски права, па затоа се неопходни зголемените привилегии.
За да ја поставите апликацијата OpenVPN секогаш да работи како администратор, кликнете со десното копче на иконата за кратенка и одете во Карактеристики. На дното на картичката Компатибилност, кликнете на копчето за Променете ги поставките за сите корисници. Во новиот прозорец, проверете Изврши ја оваа програма како администратор и кликнете Примени.
Се поврзува
Секојпат кога ќе го стартувате OpenVPN GUI, Windows ќе ве праша дали сакате да дозволите програмата да прави промени на вашиот компјутер. Кликнете на Да. Стартувањето на клиентската апликација OpenVPN само го става аплетот во системската лента за да можете да го поврзете и исклучите VPN-то по потреба; всушност не ја прави VPN врската.
Откако ќе се стартува OpenVPN, започнете врска со одење во аплетот во системската лента и со десен клик на иконата на аплетот OpenVPN. Ова го отвора контекстното мени. Изберете клиент1 на горниот дел од менито (тоа е вашиот профил client1.ovpn
) и изберете Поврзи.
Ќе се отвори прозорец за статус кој го прикажува излезот од дневникот додека е воспоставена врската и ќе се прикаже порака откако клиентот ќе се поврзе.
Исклучете се од VPN на ист начин: одете во аплетот во системската лента, кликнете со десното копче на иконата на аплетот OpenVPN, изберете го профилот на клиентот и кликнете Исклучи се.
macOS
Се инсталира
Страница за преземања на Tunnelblick. Кликнете двапати на преземената датотека .dmg
и следете ги инструкциите за инсталирање.
Кон крајот на процесот на инсталација, Tunnelblick ќе праша дали имате конфигурациски датотеки. Одговорете Имам датотеки за конфигурација и оставете го Tunnelblick да заврши. Отворете прозорец на Finder и кликнете двапати на client1.ovpn
. Tunnelblick ќе го инсталира профилот на клиентот. Потребни се административни привилегии.
Се поврзува
Стартувајте го Tunnelblick со двоен клик на иконата Tunnelblick во папката Апликации. Откако ќе се стартува Tunnelblick, ќе има икона Tunnelblick во лентата со мени во горниот десен агол на екранот за контрола на врските. Кликнете на иконата, а потоа на ставката од менито Поврзи клиент1 за да ја иницирате врската VPN.
Linux
Инсталирање
Ако користите Linux, постојат различни алатки кои можете да ги користите во зависност од вашата дистрибуција. Опкружувањето на работната површина или менаџерот на прозорци може да вклучува и алатки за поврзување.
Сепак, најуниверзалниот начин на поврзување е само да го користите софтверот OpenVPN.
На Debian, можете да го инсталирате исто како што го направивте на серверот со внесување:
- sudo apt update
- sudo apt install openvpn
На CentOS можете да ги овозможите складиштата EPEL и потоа да ги инсталирате со пишување:
- sudo yum install epel-release
- sudo yum install openvpn
Конфигурирање
Проверете дали вашата дистрибуција вклучува скрипта /etc/openvpn/update-resolv-conf
:
- ls /etc/openvpn
Outputupdate-resolv-conf
Следно, уредете ја датотеката за конфигурација на клиентот OpenVPN што ја префрливте:
- nano client1.ovpn
Ако успеавте да најдете датотека update-resolv-conf
, отстранете ги коментарите на трите линии што ги додадовте за да ги прилагодите поставките за DNS:
script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf
Ако користите CentOS, сменете ја директивата група
од nogroup
во никој
за да одговара на достапните групи на дистрибуцијата:
group nobody
Зачувајте ја и затворете ја датотеката.
Сега, можете да се поврзете со VPN со само насочување на командата openvpn
на конфигурациската датотека на клиентот:
- sudo openvpn --config client1.ovpn
Ова треба да ве поврзе со вашиот VPN.
iOS
Се инсталира
Од продавницата за апликации на вашиот iPhone или iPad, побарајте и инсталирајте ја оваа статија за поддршка од Apple за да ја пренесете вашата датотека client1.ovpn
од вашата локална машина на вашиот уред со iOS, копирајте ја конкретно во апликацијата OpenVPN.
Сега стартувајте ја апликацијата OpenVPN на уредот со iOS. Треба да се види дека има нов профил подготвен за увоз. Допрете ДОДАЈ за да го додадете.
Се поврзува
OpenVPN сега е подготвен за употреба со новиот профил. Започнете ја врската со допирање на Поврзи. Кога ќе го направите тоа, iOS ќе ве извести дека OpenVPN сака да додаде VPN конфигурации преку Поставки на вашиот систем. Допрете Дозволи и користете FaceID или TouchID за да ги овластите промените.
Забелешка: Прекинувачот VPN под Поставки > Општо > Управување со VPN и уред > VPN може успешно да ја вклучи и исклучи вашата врска, но најдобро е да го користите прекинувачот во OpenVPN Поврзете ја апликацијата
Андроид
Се инсталира
Отворете ја продавницата на Google Play. Пребарајте и инсталирајте Android OpenVPN Connect, официјална апликација за клиент OpenVPN на Android.
Можете да го префрлите профилот .ovpn
со поврзување на уредот со Android на вашиот компјутер преку USB и копирање на датотеката. Алтернативно, ако имате читач на SD-картички, можете да ја отстраните SD-картичката на уредот, да го копирате профилот на неа и потоа повторно да ја вметнете картичката во уредот со Android.
Се поврзува
Кога ќе ја стартувате апликацијата OpenVPN, таа започнува на екранот Увези профил. Допрете ја картичката ДАТОЈКА и потоа допрете ПРЕЛИГАЈ за да ја пронајдете и изберете датотеката client1.ovpn
.
Откако ќе ја изберете датотеката, апликацијата ќе ве поттикне да го увезете профилот. Допрете Во ред.
На екранот Увезен профил, проверете го полето за избор Поврзи по увоз и потоа допрете ДОДАЈ во горниот десен агол.
Ќе ве прашаат дали и верувате на апликацијата OpenVPN. Изберете OK за да ја започнете врската. За да се исклучите од VPN, вклучете го прекинувачот на страницата Профил.
Чекор 10 - Тестирање на вашата VPN врска (опционално)
Забелешка: Овој метод за тестирање на вашата VPN конекција ќе работи само ако сте се одлучиле да го пренасочите целиот сообраќај преку VPN во чекор 4 преку изборниот дел Притиснете ги промените во DNS за да го пренасочите целиот сообраќај преку VPN .
Откако сè ќе се инсталира, едноставна проверка потврдува дека сè работи правилно. Без да имате вклучено VPN конекција, отворете прелистувач и одете на DNSLeakTest.
Веб-страницата ќе ја врати IP-адресата доделена од вашиот давател на интернет услуги и како што изгледате на остатокот од светот. За да ги проверите поставките за DNS преку истата веб-локација, кликнете на Продолжен тест и ќе ви каже кои DNS сервери ги користите.
Сега поврзете го клиентот OpenVPN со вашиот OpenVPN сервер и освежете го прелистувачот. Сега треба да се појави сосема поинаква IP адреса (онаа на вашиот VPN сервер) и вака му се појавувате на светот. Повторно, Проширениот тест на DNSLeakTest ќе ги провери вашите поставки за DNS и ќе потврди дека сега ги користите разрешувачите на DNS што ги турка вашата VPN.
Запомнете: ако одлучивте да го пренасочите целиот сообраќај на VPN клиенти преку вашиот OpenVPN сервер, а вашиот OpenVPN сервер работи на DigitalOcean Droplet, тогаш сè што вашите VPN клиенти прават на интернет додека се поврзани на VPN ќе ја троши пропусниот опсег на DigitalOcean. Ако имате многу активни клиенти, може да имате преголеми пропусен опсег.
Чекор 11 - Поништување на сертификати за клиенти
Повремено, можеби ќе треба да го отповикате сертификатот на клиентот за да спречите понатамошен пристап до серверот OpenVPN.
За да го направите тоа, одете до директориумот ~/easy-rsa
на вашата CA машина:
- cd ~/easy-rsa
Следно, извршете ја скриптата easyrsa
со опцијата revoke
, проследено со името на клиентот што сакате да го отповикате:
- ./easyrsa revoke client2
Ова ќе побара од вас да го потврдите отповикувањето со внесување да
:
OutputPlease confirm you wish to revoke the certificate with the following subject:
subject=
commonName = client2
Type the word 'yes' to continue, or any other input to abort.
Continue with revocation: yes
Ако вашиот приватен клуч CA е заштитен со лозинка, внесете ја кога ќе биде побарано.
Откако ќе го потврди дејството, CA целосно ќе го одземе сертификатот на клиентот. Сепак, вашиот OpenVPN сервер во моментов нема начин да провери дали сертификатите на клиентите се отповикани и клиентот сè уште ќе има пристап до VPN. За да го поправите ова, креирајте листа за отповикување сертификати (CRL) на вашата CA-машина (повторно внесете ја лозинката за CA, доколку е потребно):
- ./easyrsa gen-crl
Ова ќе генерира датотека наречена crl.pem
. Безбедно префрлете ја оваа датотека на вашиот OpenVPN сервер:
- scp ~/easy-rsa/pki/crl.pem sammy@your_server_ip:/tmp
На вашиот OpenVPN сервер, копирајте ја оваа датотека во директориумот /etc/openvpn/
:
- sudo cp /tmp/crl.pem /etc/openvpn
Следно, отворете ја датотеката за конфигурација на серверот OpenVPN:
- sudo nano /etc/openvpn/server.conf
На дното на датотеката, додајте ја опцијата crl-verify
, која ќе му наложи на серверот OpenVPN да ја провери листата за отповикување сертификати што сме ја создале секој пат кога ќе се направи обид за поврзување:
. . .
crl-verify crl.pem
Зачувајте ја и затворете ја датотеката.
Конечно, рестартирајте го OpenVPN за да го спроведете отповикувањето на сертификатот:
- sudo systemctl restart openvpn@server
Клиентот повеќе не треба да може успешно да се поврзе со серверот користејќи ги старите акредитиви.
За да отповикате дополнителни клиенти, следете го овој процес:
- Отповикајте го сертификатот со командата
./easyrsa revoke client_name
- Генерирајте нов CRL
- Префрлете ја новата датотека
crl.pem
на вашиот OpenVPN сервер и копирајте ја во директориумот/etc/openvpn
за да ја презапишете старата листа. - Рестартирајте ја услугата OpenVPN.
Можете да го користите овој процес за да ги отповикате сите сертификати што претходно сте ги издале за вашиот сервер.
Заклучок
Членовите на вашиот далечински тим сега можат безбедно да се поврзат со вашите внатрешни ресурси како да се директно поврзани со приватната мрежа. Со воведувањето на вашата нова VPN, може да размислите за преместување на одредени ресурси кои моментално се достапни на отворениот интернет - можеби обезбедени со нешто помалку робусно (на пример, основна автентикација на HTTP) од инфраструктурата со јавен клуч што штотуку ја поставивте - на вашиот приватен мрежа и зад VPN. Со само еден сервер и софтвер со отворен код, направивте голем чекор кон заштита на вашите критични податоци и инфраструктура.
Друг вид алатка за безбедност и приватност слична на VPN е веб-прокси. Како VPN, веб-прокси-прокси делува како посредник помеѓу крајните корисници и интернет-ресурсот до кој сакаат да пристапат, обезбедувајќи анонимност на крајните корисници. Иако веб-прокси е наменет само за веб-сообраќај и не обезбедува шифрирање, сепак може да биде исплатлива алатка за вашиот тим да ја користи кога VPN е непотребна. Ако сте љубопитни, проверете го нашиот туторијал Како да поставите Squid Proxy за приватни врски на Ubuntu 22.04.