Как настроить сервер OpenVPN в Debian 9

Установить OpenVPN на Debian 9

Независимо от того, хотите ли вы получить безопасный и надежный доступ к Интернету, подключившись к ненадежной публичной сети Wi-Fi, обойти геоограничения или разрешить коллегам безопасно подключаться к корпоративной сети при удаленной работе, использование VPN станет лучшим решением.

VPN позволяет вам подключаться к удаленным VPN-серверам, делая ваше соединение зашифрованным и безопасным, а также пользоваться Интернетом анонимно, сохраняя конфиденциальность данных о вашем трафике.

Существует множество коммерческих VPN-провайдеров, но вы никогда не можете быть уверены, что провайдер не регистрирует ваши действия. Самый безопасный вариант — настроить собственный VPN-сервер.

В этом руководстве объясняется, как установить и настроить OpenVPN в Debian 9. Мы также покажем вам, как генерировать клиентские сертификаты и создавать файлы конфигурации.

OpenVPN — это полнофункциональное VPN-решение с открытым исходным кодом, работающее по протоколу SSL. Оно реализует расширение защищенной сети уровня OSI 2 или 3 с использованием протокола SSL/TLS.

Предпосылки

Для выполнения этого урока вам понадобится:

  • Доступ Sudo к серверу Debian 9 с настроенным базовым брандмауэром UFW , на котором мы установим службу OpenVPN.
  • Отдельный компьютер будет служить вашим центром сертификации (CA). Если вы не хотите использовать отдельный компьютер для своего центра сертификации, вы можете создать центр сертификации на сервере OpenVPN или локальном компьютере. После завершения создания центра сертификации рекомендуется переместить каталог центра сертификации в безопасное место или в автономный режим.

В этом руководстве предполагается, что центр сертификации (CA) находится на отдельной машине с Debian 9. Те же шаги (с небольшими изменениями) применимы, если вы используете свой сервер в качестве центра сертификации.

Мы используем отдельный сервер CA, чтобы предотвратить проникновение злоумышленников на сервер. Если злоумышленнику удастся получить доступ к закрытому ключу CA, он сможет использовать его для подписи новых сертификатов, что предоставит ему доступ к VPN-серверу.

Создание CA с помощью EasyRSA

Первым шагом является создание инфраструктуры открытых ключей ( PKI ), включающей следующее:

  • Сертификат центра сертификации (CA) и закрытый ключ.
  • Отдельная пара сертификата и закрытого ключа для сервера, выданная нашим центром сертификации.
  • Отдельная пара сертификата и закрытого ключа для каждого клиента, выданная нашим центром сертификации.

Как упоминалось в предварительных условиях, по соображениям безопасности мы создадим ЦС на отдельной машине.

Мы будем использовать утилиту CLI под названием EasyRSA для создания центра сертификации, генерации запросов на сертификаты и подписи сертификатов.

Выполните следующие действия на вашем CA-компьютере :

  1. Начните с загрузки последней версии EasyRSA из репозитория проекта Github с помощью следующей команды wget :

     cd && wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.6/EasyRSA-unix-v3.0.6.tgz
  2. После завершения загрузки распакуйте архив :

     tar xzf EasyRSA-unix-v3.0.6.tgz
  3. Перейдите в каталог EasyRSA и создайте файл конфигурации с именем vars , скопировав файл vars.example :

     cd ~/EasyRSA-v3.0.6/ cp vars.example vars
  4. Откройте файл, раскомментируйте и обновите следующие записи в соответствии с вашей информацией.

     nano ~/EasyRSA-v3.0.6/vars

    ~/EasyRSA-v3.0.6/vars

     set_var EASYRSA_REQ_COUNTRY "US" set_var EASYRSA_REQ_PROVINCE "Pennsylvania" set_var EASYRSA_REQ_CITY "Pittsburgh" set_var EASYRSA_REQ_ORG "Linuxize" set_var EASYRSA_REQ_EMAIL "admin@linuxgazette.ru" set_var EASYRSA_REQ_OU "Community"
  5. Перед генерацией пары ключей CA необходимо инициализировать новую PKI с помощью:

     ./easyrsa init-pki
     init-pki complete; you may now create a CA or requests. Your newly created PKI dir is: /home/causer/EasyRSA-v3.0.6/pki
  6. Следующий шаг — создание CA:

     ./easyrsa build-ca

    Если вы не хотите, чтобы при каждой подписи сертификатов вам предлагалось вводить пароль, выполните команду build-ca с параметром nopass : ./easyrsa build-ca nopass .

     ... Enter PEM pass phrase: Verifying - Enter PEM pass phrase: ----- ... ----- Common Name (eg: your user, host, or server name) [Easy-RSA CA]: CA creation complete and you may now import and sign cert requests. Your new CA certificate file for publishing is at: /home/causer/EasyRSA-v3.0.6/pki/ca.crt

    Вам будет предложено установить пароль для ключа CA и ввести общее имя для вашего CA.

    После завершения скрипт создаст два файла — открытый сертификат CA ca.crt и закрытый ключ CA ca.key .

    Мы будем использовать файлы центра сертификации (CA) для подписи запросов на сертификаты для нашего сервера и клиентов OpenVPN.

Установка OpenVPN и EasyRSA

Следующим шагом будет установка пакета OpenVPN, который доступен в репозиториях Debian, и загрузка последней версии EasyRSA на сервер OpenVPN.

Следующие шаги выполняются на сервере OpenVPN .

  1. Установка OpenVPN довольно проста, просто выполните следующие команды на сервере OpenVPN :

     sudo apt update sudo apt install openvpn
  2. Загрузите последнюю версию EasyRSA:

     cd && wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.6/EasyRSA-unix-v3.0.6.tgz

    После завершения загрузки введите следующую команду для извлечения архива:

     tar xzf EasyRSA-unix-v3.0.6.tgz

    Хотя мы уже инициализировали PKI на машине CA, нам также необходимо создать новую PKI на сервере OpenVPN. Для этого используйте те же команды, что и раньше:

     cd ~/EasyRSA-v3.0.6/ ./easyrsa init-pki

    Если вы все еще удивляетесь, зачем нам нужны две установки EasyRSA, то это потому, что мы будем использовать этот экземпляр EasyRSA для генерации запросов сертификатов, которые будут подписаны с использованием экземпляра EasyRSA на машине CA.

    Это может показаться сложным и немного запутанным, но как только вы прочитаете весь урок, вы увидите, что на самом деле это не так уж и сложно.

Создание ключей Диффи-Хеллмана и HMAC

В этом разделе мы сгенерируем надежный ключ Диффи-Хеллмана, который будет использоваться при обмене ключами, а также файл подписи HMAC для добавления дополнительного уровня безопасности соединения.

  1. Сначала перейдите в каталог EasyRSA на вашем сервере OpenVPN .

     cd ~/EasyRSA-v3.0.6/
  2. Сгенерируйте ключ Диффи-Хеллмана:

     ./easyrsa gen-dh

    Скрипт сгенерирует параметры DH длиной 2048 бит. В зависимости от ресурсов вашей системы, генерация может занять некоторое время. После завершения на экране появится следующее сообщение:

     DH parameters of size 2048 created at /home/serveruser/EasyRSA-v3.0.6/pki/dh.pem

    Скопируйте файл dh.pem в каталог /etc/openvpn :

     sudo cp ~/EasyRSA-v3.0.6/pki/dh.pem /etc/openvpn/
  3. Сгенерируйте подпись HMAC:

     openvpn --genkey --secret ta.key

    После этого скопируйте файл ta.key в каталог /etc/openvpn :

     sudo cp ~/EasyRSA-v3.0.6/ta.key /etc/openvpn/

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

В этом разделе описывается, как сгенерировать закрытый ключ и запрос сертификата для сервера OpenVPN.

  1. Перейдите в каталог EasyRSA на вашем сервере OpenVPN и сгенерируйте новый закрытый ключ для сервера и файл запроса сертификата:

     cd ~/EasyRSA-v3.0.6/ ./easyrsa gen-req server1 nopass

    Мы используем аргумент nopass , поскольку хотим запустить сервер OpenVPN без ввода пароля. Кроме того, в этом примере мы используем server1 в качестве идентификатора имени сервера (сущности). Если вы выберете другое имя для своего сервера, не забудьте скорректировать инструкции ниже, где используется имя сервера.

    Команда создаст два файла: закрытый ключ ( server1.key ) и файл запроса сертификата ( server1.req ).

     ----- Common Name (eg: your user, host, or server name) [server1]: Keypair and certificate request completed. Your files are: req: /home/serveruser/EasyRSA-v3.0.6/pki/reqs/server1.req key: /home/serveruser/EasyRSA-v3.0.6/pki/private/server1.key
  2. Скопируйте закрытый ключ в каталог /etc/openvpn :

     sudo cp ~/EasyRSA-v3.0.6/pki/private/server1.key /etc/openvpn/
  3. Перенесите файл запроса на сертификат на ваш компьютер CA:

     scp ~/EasyRSA-v3.0.6/pki/reqs/server1.req causer@your_ca_ip:/tmp

    В этом примере мы используем scp для передачи файла, вы также можете использовать rsync по ssh или любой другой безопасный метод.

  4. Войдите в систему вашего центра сертификации , перейдите в каталог EasyRSA и импортируйте файл запроса сертификата:

     cd ~/EasyRSA-v3.0.6 ./easyrsa import-req /tmp/server1.req server1

    Первый аргумент — это путь к файлу запроса на сертификат, а второй — краткое имя (сущность) сервера. В нашем случае имя сервера — server1 .

     The request has been successfully imported with a short name of: server1 You may now use this name to perform signing operations on this request.

    Эта команда просто копирует файл запроса в каталог pki/reqs .

  5. Находясь в каталоге EasyRSA на машине CA, выполните следующую команду для подписания запроса:

     cd ~/EasyRSA-v3.0.6 ./easyrsa sign-req server server1

    Первый аргумент может быть либо server , либо client , а второй — краткое имя (сущности) сервера.

    Вам будет предложено подтвердить, что запрос исходит из надёжного источника. Введите yes и нажмите 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 1080 days: subject= commonName = server1 Type the word 'yes' to continue, or any other input to abort. Confirm request details: yes ...

    Если ваш ключ CA защищён паролем, вам будет предложено ввести пароль. После проверки скрипт сгенерирует SSL-сертификат и выведет полный путь к нему.

     ... Certificate is to be certified until Sep 17 10:54:48 2021 GMT (1080 days) Write out database with 1 new entries Data Base Updated Certificate created at: /home/causer/EasyRSA-v3.0.6/pki/issued/server1.crt
  6. Следующий шаг — перенести подписанные файлы сертификатов server1.crt и ca.crt обратно на ваш сервер OpenVPN. Вы также можете использовать scp , rsync или любой другой безопасный метод:

     scp ~/EasyRSA-v3.0.6/pki/issued/server1.crt serveruser@your_server_ip:/tmp scp ~/EasyRSA-v3.0.6/pki/ca.crt serveruser@your_server_ip:/tmp
  7. Войдите на свой сервер OpenVPN и переместите файлы server1.crt и ca.crt в каталог /etc/openvpn/ :

     sudo mv /tmp/{server1,ca}.crt /etc/openvpn/

После выполнения шагов, описанных в этом разделе, на вашем сервере OpenVPN должны появиться следующие новые файлы:

  • /etc/openvpn/ca.crt
  • /etc/openvpn/dh.pem
  • /etc/openvpn/ta.key
  • /etc/openvpn/server1.crt
  • /etc/openvpn/server1.key

Настройка службы OpenVPN

Теперь, когда у вас есть сертификат сервера, подписанный вашим центром сертификации и переданный на ваш сервер OpenVPN , пришло время настроить службу OpenVPN.

В качестве отправной точки мы будем использовать пример файла конфигурации, прилагаемого к установочному пакету OpenVPN, а затем добавим в него наши собственные параметры конфигурации.

Начните с извлечения файла конфигурации в каталог /etc/openvpn/ :

 sudo sh -c "gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz > /etc/openvpn/server1.conf"

Откройте файл с помощью вашего любимого текстового редактора:

 sudo nano /etc/openvpn/server1.conf
  • Найдите директивы параметров Certificate, Key и DH и измените имена файлов:

    /etc/openvpn/server1.conf

     cert server1.crt key server1.key dh dh.pem
  • Чтобы перенаправить трафик клиентов через VPN, найдите и раскомментируйте параметры redirect-gateway и dhcp-option :

    /etc/openvpn/server1.conf

     push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS 208.67.222.222" push "dhcp-option DNS 208.67.220.220"

    По умолчанию используются резолверы OpenDNS. Вы можете изменить это и использовать CloudFlare, Google или любые другие резолверы DNS по вашему выбору.

  • Найдите директивы user и group и раскомментируйте эти настройки, удалив « ; » в начале каждой строки:

    /etc/openvpn/server1.conf

     user nobody group nogroup
  • Добавьте следующую строку в конец файла. Эта директива изменит алгоритм аутентификации сообщений (HMAC) с SHA1 на SHA256.

    /etc/openvpn/server1.conf

     auth SHA256

После завершения файл конфигурации сервера (без комментариев) должен выглядеть примерно так:

/etc/openvpn/server1.conf

 port 1194 proto udp dev tun ca ca.crt cert server1.crt key server1.key # This file should be kept secret dh dh.pem server 10.8.0.0 255.255.255.0 ifconfig-pool-persist /var/log/openvpn/ipp.txt push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS 208.67.222.222" push "dhcp-option DNS 208.67.220.220" keepalive 10 120 tls-auth ta.key 0 # This file is secret cipher AES-256-CBC user nobody group nogroup persist-key persist-tun status /var/log/openvpn/openvpn-status.log verb 3 explicit-exit-notify 1 auth SHA256

Запуск службы OpenVPN

В этом руководстве мы использовали файл конфигурации server1.conf . Чтобы запустить службу OpenVPN с этой конфигурацией, необходимо указать имя файла конфигурации после имени файла юнита systemd:

На сервере OpenVPN выполните следующую команду для запуска службы OpenVPN:

 sudo systemctl start openvpn@server1

Проверьте, успешно ли запущена служба, введя:

 sudo systemctl status openvpn@server1

Если служба активна и работает, вывод будет выглядеть примерно так:

 ● openvpn@server1.service - OpenVPN connection to server1 Loaded: loaded (/lib/systemd/system/openvpn@.service; disabled; vendor preset: enabled) Active: active (running) since Tue 2019-03-19 03:49:53 PDT; 3s ago Docs: man:openvpn(8) https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage https://community.openvpn.net/openvpn/wiki/HOWTO Process: 1722 ExecStart=/usr/sbin/openvpn --daemon ovpn-server1 --status /run/openvpn/server1.status 10 --cd /etc/openvpn --config /etc/openvpn/server1.conf --writepid /run/openvpn/server1.pid (code=exited, status=0/SUCCESS) Main PID: 1723 (openvpn) Tasks: 1 (limit: 4915) CGroup: /system.slice/system-openvpn.slice/openvpn@server1.service └─1723 /usr/sbin/openvpn --daemon ovpn-server1 --status /run/openvpn/server1.status 10 --cd /etc/openvpn --config /etc/openvpn/server1.conf --writepid /run/openvpn/server1.pid

Включите автоматический запуск службы при загрузке с помощью:

 sudo systemctl enable openvpn@server1
 Created symlink /etc/systemd/system/multi-user.target.wants/openvpn@server1.service → /lib/systemd/system/openvpn@.service.

Если служба OpenVPN не запускается, проверьте логи с помощью sudo journalctl -u openvpn@server1

При запуске сервер OpenVPN создаёт устройство tun0 . Для проверки используйте следующую команду ip :

 ip a show tun0

Вывод должен выглядеть примерно так:

 3: tun0:  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

На этом этапе ваш сервер OpenVPN настроен и работает правильно.

Конфигурация брандмауэра и сетевого сервера

Для правильной пересылки сетевых пакетов нам необходимо включить пересылку IP.

Следующие шаги выполняются на сервере OpenVPN .

Откройте файл /etc/sysctl.conf и добавьте или раскомментируйте строку net.ipv4.ip_forward = 1 :

 sudo nano /etc/sysctl.conf

/etc/sysctl.conf

 # Uncomment the next line to enable packet forwarding for IPv4 net.ipv4.ip_forward = 1

После завершения сохраните и закройте файл.

Примените новые настройки, выполнив следующую команду sysctl :

 sudo sysctl -p
 net.ipv4.ip_forward = 1

Если вы выполнили предварительные требования, на вашем сервере уже должен быть запущен брандмауэр UFW .

Теперь нам нужно добавить правила брандмауэра для включения маскирадинга. Это позволит трафику выходить за пределы VPN, предоставляя вашим VPN-клиентам доступ в Интернет.

Перед добавлением правил вам необходимо знать публичный сетевой интерфейс вашего сервера Debian OpenVPN. Вы можете легко найти его, выполнив следующую команду:

 ip -o -4 route show to default | awk '{print $5}'

В нашем случае интерфейс называется eth0 , как показано в выводе ниже. Имя вашего интерфейса, вероятно, будет другим.

 eth0

По умолчанию при использовании UFW пересылаемые пакеты отбрасываются. Нам нужно изменить это и разрешить пересылаемые пакеты на нашем брандмауэре.

Откройте файл конфигурации UFW, найдите ключ DEFAULT_FORWARD_POLICY и измените значение с DROP на ACCEPT :

 sudo nano /etc/default/ufw

/etc/default/ufw

 ... # Set the default forward policy to ACCEPT, DROP or REJECT. Please note that # if you change this you will most likely want to adjust your rules DEFAULT_FORWARD_POLICY = "ACCEPT" ...

Далее нам необходимо установить политику по умолчанию для цепочки POSTROUTING в таблице nat и задать правило маскировки.

Для этого откройте файл /etc/ufw/before.rules и добавьте строки, выделенные желтым цветом, как показано ниже.

 sudo nano /etc/ufw/before.rules

Не забудьте заменить eth0 в строке -A POSTROUTING на имя публичного сетевого интерфейса, найденное в предыдущей команде. Вставьте эти строки после последней строки, начинающейся с COMMIT .

/etc/ufw/before.rules

 ... # don't delete the 'COMMIT' line or these rules won't be processed COMMIT #NAT table rules *nat :POSTROUTING ACCEPT [0:0] # Forward traffic through eth0 - Change to public network interface -A POSTROUTING -s 10.8.0.0/16 -o eth0 -j MASQUERADE # don't delete the 'COMMIT' line or these rules won't be processed COMMIT

Когда закончите, сохраните и закройте файл.

Нам также необходимо открыть UDP-трафик на порту 1194 , который является портом OpenVPN по умолчанию. Для этого выполните следующую команду:

 sudo ufw allow 1194/udp

Если вы забыли открыть порт SSH, чтобы избежать блокировки, выполните следующую команду для открытия порта:

 sudo ufw allow OpenSSH

Наконец, перезагрузите правила UFW, отключив и снова включив UFW:

 sudo ufw disable sudo ufw enable

Для проверки изменений выполните следующую команду, чтобы вывести список правил POSTROUTING:

 sudo iptables -nvL POSTROUTING -t nat
 Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 MASQUERADE all -- * eth0 10.8.0.0/16 0.0.0.0/0

Создание инфраструктуры конфигурации клиента

В этом руководстве мы создадим отдельный SSL-сертификат и сгенерируем отдельный файл конфигурации для каждого VPN-клиента.

Закрытый ключ клиента и запрос на сертификат могут быть сгенерированы как на клиентском компьютере, так и на сервере. Для простоты мы сгенерируем запрос на сертификат на сервере, а затем отправим его в центр сертификации для подписания.

Весь процесс создания клиентского сертификата и файла конфигурации выглядит следующим образом:

  1. Сгенерируйте закрытый ключ и запрос сертификата на сервере OpenVPN.
  2. Отправьте запрос на машину CA для подписания.
  3. Скопируйте подписанный SSL-сертификат на сервер OpenVPN и сгенерируйте файл конфигурации.
  4. Отправьте файл конфигурации на машину VPN-клиента.

Начните с создания набора каталогов для хранения файлов клиентов:

 mkdir -p ~/openvpn-clients/{configs,base,files}
  • base каталоге будут храниться базовые файлы и конфигурация, которые будут общими для всех клиентских файлов.
  • В каталоге configs будет храниться сгенерированная конфигурация клиента.
  • В каталоге files будет храниться пара сертификатов и ключей клиента.

Скопируйте файлы ca.crt и ta.key в каталог ~/openvpn-clients/base :

 cp ~/EasyRSA-v3.0.6/ta.key ~/openvpn-clients/base/ cp /etc/openvpn/ca.crt ~/openvpn-clients/base/

Затем скопируйте пример файла конфигурации VPN-клиента в каталог client- ~/openvpn-clients/base . Мы будем использовать этот файл в качестве базовой конфигурации:

 cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/openvpn-clients/base/

Теперь нам нужно отредактировать файл в соответствии с настройками и конфигурацией нашего сервера. Откройте файл конфигурации в текстовом редакторе:

 nano ~/openvpn-clients/base/client.conf
  • Найдите директиву remote и измените заполнитель по умолчанию на публичный IP-адрес вашего сервера OpenVPN:

    ~/openvpn-clients/base/client.conf

     # 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
  • Найдите и закомментируйте директивы ca , cert и key . Сертификаты и ключи будут добавлены в файл конфигурации:

    ~/openvpn-clients/base/client.conf

     # 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
  • Добавьте следующую строку в конец файла, чтобы она соответствовала настройкам сервера:

    ~/openvpn-clients/base/client.conf

     auth SHA256

После завершения файл конфигурации сервера должен выглядеть примерно так:

~/openvpn-clients/base/client.conf

 client dev tun proto udp remote YOUR_SERVER_IP 1194 resolv-retry infinite nobind persist-key persist-tun remote-cert-tls server cipher AES-256-CBC verb 3 auth SHA256 key-direction 1

Затем создайте простой bash-скрипт, который объединит базовую конфигурацию и файлы с клиентским сертификатом и ключом, а затем сохранит сгенерированную конфигурацию в каталоге ~/openvpn-clients/configs .

Откройте текстовый редактор и создайте следующий скрипт:

 nano ~/openvpn-clients/gen_config.sh

~/openvpn-clients/gen_config.sh

 #!/bin/bash FILES_DIR = $HOME /openvpn-clients/files BASE_DIR = $HOME /openvpn-clients/base CONFIGS_DIR = $HOME /openvpn-clients/configs BASE_CONF = ${ BASE_DIR } /client.conf CA_FILE = ${ BASE_DIR } /ca.crt TA_FILE = ${ BASE_DIR } /ta.key CLIENT_CERT = ${ FILES_DIR } / ${ 1 } .crt CLIENT_KEY = ${ FILES_DIR } / ${ 1 } .key # Test for files for i in " $BASE_CONF " " $CA_FILE " " $TA_FILE " " $CLIENT_CERT " " $CLIENT_KEY " ; do if [[ ! -f $i ]] ; then echo " The file $i does not exist" exit 1 fi if [[ ! -r $i ]] ; then echo " The file $i is not readable." exit 1 fi done # Generate client config cat > ${ CONFIGS_DIR } / ${ 1 } .ovpn < $(cat ${BASE_CONF})  $(cat ${CLIENT_KEY})   $(cat ${CLIENT_CERT})   $(cat ${CA_FILE})   $(cat ${TA_FILE})  EOF

Сохраните файл и сделайте его исполняемым с помощью chmod :

 chmod u+x ~/openvpn-clients/gen_config.sh

Создание закрытого ключа клиентского сертификата и конфигурации

Процесс генерации закрытого ключа клиента и запроса сертификата такой же, как и при генерации ключа сервера и запроса сертификата.

Как уже упоминалось в предыдущем разделе, мы сгенерируем закрытый ключ клиента и запрос на сертификат на сервере OpenVPN. В этом примере имя первого VPN-клиента будет client1 .

  1. Перейдите в каталог EasyRSA на вашем сервере OpenVPN и сгенерируйте новый закрытый ключ и файл запроса сертификата для клиента:

     cd ~/EasyRSA-v3.0.6/ ./easyrsa gen-req client1 nopass

    Команда создаст два файла: закрытый ключ ( client1.key ) и файл запроса сертификата ( client1.req ).

     Common Name (eg: your user, host, or server name) [client1]: Keypair and certificate request completed. Your files are: req: /home/serveruser/EasyRSA-v3.0.6/pki/reqs/client1.req key: /home/serveruser/EasyRSA-v3.0.6/pki/private/client1.key
  2. Скопируйте закрытый ключ client1.key в каталог ~/openvpn-clients/files созданный в предыдущем разделе:

     cp ~/EasyRSA-v3.0.6/pki/private/client1.key ~/openvpn-clients/files/
  3. Перенесите файл запроса на сертификат на ваш компьютер CA:

     scp ~/EasyRSA-v3.0.6/pki/reqs/client1.req causer@your_ca_ip:/tmp

    В этом примере мы используем scp для передачи файла, вы также можете использовать rsync по ssh или любой другой безопасный метод.

  4. Войдите в систему вашего центра сертификации , перейдите в каталог EasyRSA и импортируйте файл запроса сертификата:

     cd ~/EasyRSA-v3.0.6 ./easyrsa import-req /tmp/client1.req client1

    Первый аргумент — путь к файлу запроса сертификата, а второй — имя клиента.

     The request has been successfully imported with a short name of: client1 You may now use this name to perform signing operations on this request.
  5. Из каталога EasyRSA на машине CA выполните следующую команду для подписания запроса:

     cd ~/EasyRSA-v3.0.6 ./easyrsa sign-req client client1

    Вам будет предложено подтвердить, что запрос исходит из надёжного источника. Введите yes и нажмите enter для подтверждения.

    Если ваш ключ CA защищён паролем, вам будет предложено ввести пароль. После проверки скрипт сгенерирует SSL-сертификат и выведет полный путь к нему.

     ... Certificate created at: /home/causer/EasyRSA-v3.0.6/pki/issued/client1.crt
  6. Затем перенесите подписанный файл сертификата client1.crt обратно на ваш сервер OpenVPN. Вы можете использовать scp , rsync или любой другой безопасный метод:

     scp ~/EasyRSA-v3.0.6/pki/issued/client1.crt serveruser@your_server_ip:/tmp
  7. Войдите на свой сервер OpenVPN и переместите файл client1.crt в каталог ~/openvpn-clients/files :

     mv /tmp/client1.crt ~/openvpn-clients/files
  8. Последний шаг — генерация конфигурации клиента с помощью скрипта gen_config.sh . Перейдите в каталог ~/openvpn-clients и запустите скрипт, указав имя клиента в качестве аргумента:

     cd ~/openvpn-clients ./gen_config.sh client1

    Скрипт создаст файл client1.ovpn в каталоге ~/client-configs/configs . Вы можете проверить его содержимое, выведя список каталогов:

     ls ~/openvpn-clients/configs
     client1.ovpn

На этом этапе конфигурация клиента создана. Теперь вы можете перенести файл конфигурации на устройство, которое планируете использовать в качестве клиента.

Например, чтобы перенести файл конфигурации на локальный компьютер с помощью scp необходимо выполнить следующую команду:

 scp ~/openvpn-clients/configs/client1.ovpn your_local_ip:/

Чтобы добавить дополнительных клиентов, просто повторите те же шаги.

Подключение клиентов

Linux

Ваш дистрибутив или среда рабочего стола могут предоставлять инструмент или графический пользовательский интерфейс для подключения к серверам OpenVPN. В этом руководстве мы покажем вам, как подключиться к серверу с помощью инструмента openvpn .

  • Установка OpenVPN в Ubuntu и Debian

     sudo apt update sudo apt install openvpn
  • Установка OpenVPN на CentOS и Fedora

     sudo yum install epel-release sudo yum install openvpn

После установки пакета для подключения к VPN-серверу используйте команду openvpn и укажите файл конфигурации клиента:

 sudo openvpn --config client1.ovpn

macOS

Tunnelblick — это бесплатный графический пользовательский интерфейс с открытым исходным кодом для OpenVPN на OS X и macOS.

Окна

Загрузите и установите последнюю версию приложения OpenVPN со страницы загрузок OpenVPN .

Скопируйте файл .ovpn в папку конфигурации OpenVPN ( UsersOpenVPNConfig или Program FilesOpenVPNconfig ).

Запустите приложение OpenVPN.

Щёлкните правой кнопкой мыши по значку OpenVPN в области уведомлений, и имя скопированного вами файла конфигурации OpenVPN отобразится в меню. Нажмите «Подключиться».

Android и iOS

VPN-приложение, разработанное OpenVPN, доступно для Android и iOS. Установите приложение и импортируйте клиентский .ovp -файл.

Отзыв клиентских сертификатов

Отзыв сертификата означает аннулирование подписанного сертификата, в результате чего его больше нельзя будет использовать для доступа к серверу OpenVPN.

Чтобы отозвать клиентский сертификат, выполните следующие действия:

  1. Войдите в систему вашего CA-компьютера и переключитесь в каталог EasyRSA:

     cd EasyRSA-v3.0.6
  2. Запустите скрипт easyrsa, используя аргумент revoke , указав после него имя клиента, которого вы хотите отозвать:

     ./easyrsa revoke client1

    Вам будет предложено подтвердить отзыв сертификата. Введите yes и нажмите enter для подтверждения.

     Please confirm you wish to revoke the certificate with the following subject: subject= commonName = client1 Type the word 'yes' to continue, or any other input to abort. Continue with revocation: yes ...

    Если ваш ключ CA защищён паролем, вам будет предложено ввести пароль. После проверки скрипт отзовёт сертификат.

     ... Revocation was successful. You must run gen-crl and upload a CRL to your infrastructure in order to prevent the revoked cert from being accepted.
  3. Используйте опцию gen-crl для создания списка отзыва сертификатов (CRL):

     ./easyrsa gen-crl
     An updated CRL has been created. CRL file: /home/causer/EasyRSA-v3.0.6/pki/crl.pem
  4. Загрузите файл CRL на сервер OpenVPN:

     scp ~/EasyRSA-v3.0.6/pki/crl.pem serveruser@your_server_ip:/tmp
  5. Войдите на свой сервер OpenVPN и переместите файл в каталог /etc/openvpn :

     sudo mv /tmp/crl.pem /etc/openvpn
  6. Откройте файл конфигурации сервера OpenVPN:

     sudo nano /etc/openvpn/server1.conf

    Вставьте следующую строку в конец файла

    /etc/openvpn/server1.conf

     crl-verify crl.pem

    Сохраните и закройте файл.

  7. Перезапустите службу OpenVPN, чтобы директива отзыва вступила в силу:

     sudo systemctl restart openvpn@server1

    На этом этапе клиент больше не сможет получить доступ к серверу OpenVPN с использованием отозванного сертификата.

Если вам необходимо отозвать дополнительные клиентские сертификаты, просто повторите те же шаги.

Заключение

В этом руководстве вы узнали, как установить и настроить сервер OpenVPN на машине Debian 9.

Если у вас возникли какие-либо проблемы, не стесняйтесь оставлять комментарии.

Безопасность VPN Debian Не используете Debian 9?
Выберите другую ОС:
центос 7 убунту 18.04

Связанные руководства

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *