Предпосылки
Для выполнения этого руководства вам потребуется доступ к серверу Debian 9, на котором будет размещена ваша служба OpenVPN. Перед тем, как приступить к работе с этим руководством, вам нужно будет настроить привилегированного пользователя без полномочий rootsudo
. Вы можете следовать нашему руководству по начальной настройке сервера Debian 9, чтобы настроить пользователя с соответствующими правами. Связанное руководство также настроит брандмауэр , который предполагается использовать на протяжении всего этого руководства.
Кроме того, вам понадобится отдельный компьютер, который будет служить вашим центром сертификации (ЦС). Хотя технически возможно использовать ваш сервер OpenVPN или локальный компьютер в качестве центра сертификации, это не рекомендуется, поскольку это открывает вашу VPN для некоторых уязвимостей безопасности. Согласно официальной документации OpenVPN , вы должны разместить свой CA на автономном компьютере, который предназначен для импорта и подписи запросов на сертификаты.
Шаг 1 - Установка OpenVPN и EasyRSA
Для начала обновите индекс пакетов вашего VPN-сервера и установите OpenVPN. OpenVPN доступен в репозиториях Debian по умолчанию, поэтому вы можете использовать apt
для установки:
sudo apt update
sudo apt install openvpn
OpenVPN - это TLS / SSL VPN. Это означает, что он использует сертификаты для шифрования трафика между сервером и клиентами. Для выдачи доверенных сертификатов вы создадите свой собственный простой центр сертификации (CA). Для этого мы загрузим последнюю версию EasyRSA, которую мы будем использовать для создания нашей инфраструктуры открытого ключа CA (PKI), из официального репозитория проекта на GitHub.
Как упоминалось в предварительных требованиях, мы построим центр сертификации на отдельном сервере. Причина такого подхода заключается в том, что, если злоумышленник сможет проникнуть на ваш сервер, он сможет получить доступ к вашему закрытому ключу CA и использовать его для подписания новых сертификатов, предоставляя им доступ к вашей VPN. Соответственно, управление ЦС с автономного компьютера помогает предотвратить доступ неавторизованных пользователей к вашей VPN. Также обратите внимание, что в качестве дополнительной меры предосторожности рекомендуется держать сервер CA выключенным, когда он не используется для подписи ключей.
Чтобы начать создание инфраструктуры CA и PKI, wget
загрузите последнюю версию EasyRSA как на ваш CA-компьютер, так и на ваш сервер OpenVPN . Чтобы получить последнюю версию, перейдите на страницу Releases в официальном проекте EasyRSA GitHub , скопируйте ссылку для загрузки для файла, заканчивающегося на .tgz
, и вставьте ее в следующую команду:
wget -P ~/ https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.8/EasyRSA-3.0.8.tgz
или так, если вылезет ошибка сертификата:
wget --no-check-certificate -P ~/https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.8/EasyRSA-3.0.8.tgz
Затем распакуйте архив:
cd ~
tar xvf EasyRSA-3.0.8.tgz
Вы успешно установили все необходимое программное обеспечение на свой сервер и компьютер CA. Продолжите настройку переменных, используемых EasyRSA, и настройку каталога CA, из которого вы будете генерировать ключи и сертификаты, необходимые вашему серверу и клиентам для доступа к VPN.
Шаг 2 - Настройка переменных EasyRSA и построение центра сертификации
EasyRSA поставляется с установленным файлом конфигурации, который вы можете редактировать, чтобы определить ряд переменных для вашего CA.
На вашем компьютере CA перейдите в каталог EasyRSA:
cd ~/EasyRSA-3.0.8/
Внутри этого каталога находится файл с именем vars.example
. Сделайте копию этого файла и назовите копию vars
без расширения файла:
cp vars.example vars
Откройте этот новый файл с помощью предпочитаемого вами текстового редактора:
nano vars
Найдите настройки, устанавливающие значения полей по умолчанию для новых сертификатов. Это будет выглядеть примерно так:
. . .
#set_var EASYRSA_REQ_COUNTRY "US"
#set_var EASYRSA_REQ_PROVINCE "California"
#set_var EASYRSA_REQ_CITY "San Francisco"
#set_var EASYRSA_REQ_ORG "Copyleft Certificate Co"
#set_var EASYRSA_REQ_EMAIL "me@example.net"
#set_var EASYRSA_REQ_OU "My Organizational Unit"
. . .
Раскомментируйте эти строки и обновите выделенные значения так, как хотите, но не оставляйте их пустыми:
. . .
set_var EASYRSA_REQ_COUNTRY "US"
set_var EASYRSA_REQ_PROVINCE "NewYork"
set_var EASYRSA_REQ_CITY "New York City"
set_var EASYRSA_REQ_ORG "DigitalOcean"
set_var EASYRSA_REQ_EMAIL "admin@example.com"
set_var EASYRSA_REQ_OU "Community"
. . .
Когда вы закончите, сохраните и закройте файл.
В каталоге EasyRSA есть сценарий, easyrsa
который вызывается для выполнения множества задач, связанных с построением и управлением ЦС. Запустите этот сценарий с init-pki
возможностью запуска инфраструктуры открытого ключа на сервере CA:
./easyrsa init-pki
. . .
init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: /home/sammy/EasyRSA-3.0.4/pki
После этого easyrsa
снова вызовите скрипт с build-ca
опцией. Это создаст ЦС и создаст два важных файла - ca.crt
и ca.key
- которые составляют публичную и частную стороны сертификата SSL.
ca.crt
- это общедоступный файл сертификата ЦС, который в контексте OpenVPN сервер и клиент используют для информирования друг друга о том, что они являются частью одной сети доверия, а не кем-то, выполняющим атаку типа «злоумышленник в середине». По этой причине вашему серверу и всем вашим клиентам потребуется копияca.crt
файла.ca.key
- это закрытый ключ, который CA-машина использует для подписи ключей и сертификатов для серверов и клиентов. Если злоумышленник получит доступ к вашему ЦС и, в свою очередь, к вашемуca.key
файлу, он сможет подписывать запросы сертификатов и получать доступ к вашей VPN, что снижает ее безопасность. Вот почему вашca.key
файл должен находиться только на вашем компьютере CA, и что, в идеале, ваш компьютер CA должен быть отключен, когда вы не подписываете запросы сертификатов, в качестве дополнительной меры безопасности.
Если вы не хотите, чтобы вам предлагалось вводить пароль каждый раз, когда вы взаимодействуете с центром сертификации, вы можете запустить build-ca
команду с nopass
опцией, например:
./easyrsa build-ca nopass
В выводе вам будет предложено подтвердить общее имя для вашего CA:
. . .
Common Name (eg: your user, host, or server name) [Easy-RSA CA]:
Общее имя - это имя, используемое для обозначения этого аппарата в контексте центра сертификации. Вы можете ввести любую строку символов для общего имени CA, но для простоты нажмите, ENTER
чтобы принять имя по умолчанию. Теперь ваш ЦС готов к подписанию запросов на сертификаты.
Источник: https://www.digitalocean.com/community/tutorials/how-to-set-up-an-openvpn-server-on-debian-9