Как настроить сервер OpenVPN в Debian 9
OpenVPN - это полнофункциональное VPN-решение Secure Socket Layer (SSL) с открытым исходным кодом, которое поддерживает широкий спектр конфигураций. В этом руководстве вы настроите сервер OpenVPN на сервере Debian 9, а затем настроите доступ к нему из Windows, macOS, iOS и / или Android. В этом руководстве все этапы установки и настройки будут максимально простыми для каждой из этих установок.
Чтобы завершить этот урок, вам понадобится доступ к серверу Debian 9 для размещения вашей службы OpenVPN.
Вам нужно будет настроить не- корневую пользователя с sudo
привилегиями , прежде чем начать это руководство.
Вы можете следовать нашему руководству по первоначальной настройке сервера Debian 9, чтобы настроить пользователя с
соответствующими разрешениями. В связанном руководстве также будет настроен межсетевой экран , который предполагается использовать в этом руководстве.
Шаг 1 - Установка OpenVPN и EasyRSA
Для начала обновите индекс пакетов вашего VPN-сервера и установите OpenVPN. OpenVPN доступен в репозиториях Debian по умолчанию, поэтому вы можете использовать его aptдля установки:
OpenVPN - это TLS / SSL VPN. Это означает, что он использует сертификаты для шифрования трафика между сервером и клиентами. Для выдачи доверенных сертификатов вы создадите свой собственный простой центр сертификации (CA). Для этого мы загрузим последнюю версию EasyRSA, которую мы будем использовать для построения нашей инфраструктуры открытых ключей CA (PKI), из официального репозитория проекта GitHub.
Как упоминалось в предварительных условиях, мы будем строить ЦС на отдельном сервере. Причина такого подхода заключается в том, что если злоумышленник сможет проникнуть на ваш сервер, он сможет получить доступ к вашему секретному ключу CA и использовать его для подписи новых сертификатов, предоставляя им доступ к вашей VPN. Соответственно, управление ЦС с автономного компьютера помогает предотвратить доступ неавторизованных пользователей к вашей VPN. Также обратите внимание, что рекомендуется держать CA-сервер выключенным, когда он не используется для подписи ключей, в качестве дополнительной меры предосторожности.
Чтобы приступить к созданию инфраструктуры CA и PKI, wget
загрузите последнюю версию EasyRSA как на своем компьютере CA, так и на сервере OpenVPN . Чтобы получить последнюю версию, перейдите на страницу « Релизы» официального проекта EasyRSA GitHub , скопируйте ссылку на скачивание для файла, оканчивающегося на .tgz, и вставьте его в следующую команду:
Вы успешно установили все необходимое программное обеспечение на свой сервер и компьютер CA. Продолжайте настраивать переменные, используемые EasyRSA, и настраивать каталог CA, из которого вы будете создавать ключи и сертификаты, необходимые для доступа вашего VPN-сервера и клиентов.
Шаг 2 - Конфигурирование переменных EasyRSA и построение CA
EasyRSA поставляется с файлом конфигурации, который вы можете редактировать, чтобы определить ряд переменных для вашего CA.
После этого easyrsa
снова вызовите скрипт, следуя за ним с build-ca
опцией. Это создаст ЦС и создаст два важных файла - ca.crt
и ca.key-
которые составляют открытую и закрытую стороны сертификата SSL.
- ca.crt это файл открытого сертификата CA, который в контексте OpenVPN сервер и клиент используют для информирования друг друга о том, что они являются частью одной и той же сети доверия, а не того, кто выполняет атаку «человек посередине». По этой причине вашему серверу и всем вашим клиентам потребуется копия
ca.crt файла
. - ca.key это закрытый ключ, который машина CA использует для подписи ключей и сертификатов для серверов и клиентов. Если злоумышленник получит доступ к вашему ЦС и, в свою очередь, к вашему
ca.key
файлу, он сможет подписывать запросы на сертификаты и получать доступ к вашему VPN, нарушая его безопасность. Вот почему вашca.key
файл должен быть только на вашем компьютере CA, и в идеале ваш компьютер CA должен оставаться в автономном режиме, если не подписывает запросы на сертификат в качестве дополнительной меры безопасности.
Если вы не хотите, чтобы при каждом взаимодействии с вашим ЦС запрашивался пароль, вы можете запустить build-ca
команду с nopass
параметром, например так:
Общее имя - это имя, используемое для ссылки на этот компьютер в контексте центра сертификации. Вы можете ввести любую строку символов для общего имени ЦС, но для простоты нажмите, ENTER чтобы принять имя по умолчанию.
После этого ваш центр сертификации будет готов, и он готов начать подписывать запросы сертификатов.
Шаг 3 - Создание сертификата сервера, ключа и файлов шифрования
Теперь, когда у вас есть готовый центр сертификации, вы можете сгенерировать секретный ключ и запрос сертификата со своего сервера, а затем передать запрос в ваш центр сертификации для подписи, создав необходимый сертификат. Вы также можете создавать дополнительные файлы, используемые в процессе шифрования.
Затем easyrsa
снова вызовите сценарий, на этот раз с gen-req
параметром, за которым следует общее имя для машины. Опять же, это может быть что угодно, но может быть полезно сделать что-то описательное. В этом руководстве общее имя сервера OpenVPN будет просто «сервер». Не забудьте также включить эту nopass
опцию. Несоблюдение этого требования защитит файл запроса паролем, что впоследствии может привести к проблемам с разрешениями:
При этом все файлы сертификатов и ключей, необходимые вашему серверу, были сгенерированы. Вы готовы создать соответствующие сертификаты и ключи, которые ваш клиентский компьютер будет использовать для доступа к вашему серверу OpenVPN.
Шаг 4 - Генерация клиентского сертификата и пары ключей
Хотя вы можете сгенерировать закрытый ключ и запрос сертификата на своем клиентском компьютере, а затем отправить его в ЦС для подписи, в этом руководстве описан процесс создания запроса сертификата на сервере. Преимущество этого заключается в том, что мы можем создать сценарий, который будет автоматически генерировать файлы конфигурации клиента, которые содержат все необходимые ключи и сертификаты. Это позволяет избежать необходимости передавать ключи, сертификаты и файлы конфигурации клиентам и упрощает процесс присоединения к VPN.
Для этого руководства мы создадим один ключ клиента и пару сертификатов. Если у вас более одного клиента, вы можете повторить этот процесс для каждого. Обратите внимание, однако, что вам нужно будет передать уникальное значение имени в сценарий для каждого клиента. В этом руководстве первая пара сертификат / ключ упоминается как client1.
Начните с создания структуры каталогов в вашем домашнем каталоге для хранения сертификата клиента и файлов ключей:
При этом все сертификаты и ключи вашего сервера и клиента были сгенерированы и хранятся в соответствующих каталогах на вашем сервере. Есть еще несколько действий, которые необходимо выполнить с этими файлами, но они придут на более позднем этапе. Сейчас вы можете перейти к настройке OpenVPN на вашем сервере.
Шаг 5 - Настройка службы OpenVPN
Теперь, когда сертификаты и ключи вашего клиента и сервера были сгенерированы, вы можете приступить к настройке службы OpenVPN для использования этих учетных данных.
Начните с копирования образца файла конфигурации OpenVPN в каталог конфигурации, а затем распакуйте его, чтобы использовать его в качестве основы для вашей настройки:
Укажите учетные данные не по умолчанию
Если вы выбрали другое имя во время ./build-key-server
командой ранее, изменения cert
и key
линии , которые вы видите , чтобы указать на соответствующий .crtи .key
файлы. Если вы использовали имя по умолчанию, «сервер», это уже правильно установлено:
После прохождения и внесения любых изменений в конфигурацию OpenVPN вашего сервера, которые требуются для вашего конкретного случая использования, вы можете приступить к внесению некоторых изменений в сеть вашего сервера.
Шаг 6 - Настройка сетевой конфигурации сервера
Есть некоторые аспекты сетевой конфигурации сервера, которые необходимо настроить, чтобы OpenVPN мог правильно маршрутизировать трафик через VPN. Первым из них является IP-пересылка , метод определения, куда должен направляться IP-трафик. Это важно для функциональности VPN, которую предоставляет ваш сервер.
Если вы следовали руководству по первоначальной настройке сервера Debian 9, указанному в предварительных требованиях, у вас должен быть установлен брандмауэр UFW. Независимо от того, используете ли вы брандмауэр для блокировки нежелательного трафика (что вы почти всегда должны делать), для этого руководства вам нужен брандмауэр для манипулирования частью трафика, поступающего на сервер. Некоторые правила брандмауэра должны быть изменены, чтобы включить маскировку - концепцию iptables, которая обеспечивает динамическую трансляцию сетевых адресов (NAT) на лету для правильной маршрутизации клиентских подключений.
Прежде чем открыть файл конфигурации брандмауэра для добавления правил маскировки, вы должны сначала найти общедоступный сетевой интерфейс вашего компьютера. Для этого введите:
Шаг 7 - Запуск и включение службы OpenVPN
Вы наконец готовы запустить сервис OpenVPN на вашем сервере. Это делается с помощью утилиты systemd systemctl.
Запустите сервер OpenVPN, указав имя файла конфигурации в качестве переменной экземпляра после имени файла системного модуля. Файл конфигурации для вашего сервера называется , поэтому добавьте в конец файла вашего модуля при вызове его:/etc/openvpn/server.conf@server
Ваша служба OpenVPN запущена и работает. Прежде чем вы сможете начать использовать его, вы должны сначала создать файл конфигурации для клиентского компьютера. В этом руководстве уже рассказывалось, как создавать пары сертификатов / ключей для клиентов, и на следующем шаге мы покажем, как создать инфраструктуру, которая будет легко генерировать файлы конфигурации клиента.
Шаг 8 - Создание инфраструктуры конфигурации клиента
Создание файлов конфигурации для клиентов OpenVPN может быть несколько сложным, так как каждый клиент должен иметь свою собственную конфигурацию, и каждый должен соответствовать настройкам, указанным в файле конфигурации сервера. Вместо написания одного файла конфигурации, который можно использовать только на одном клиенте, этот шаг описывает процесс создания инфраструктуры конфигурации клиента, которую можно использовать для создания файлов конфигурации на лету. Сначала вы создадите «базовый» файл конфигурации, а затем создадите скрипт, который позволит вам генерировать уникальные файлы конфигурации клиента, сертификаты и ключи по мере необходимости.
Затем создайте простой сценарий, который скомпилирует базовую конфигурацию с соответствующими файлами сертификатов, ключей и шифрования, а затем поместит сгенерированную конфигурацию в ~/client-configs/files
каталог. Откройте новый файл с именем make_config.shв ~/client-configs
каталоге:
Этот сценарий создаст копию созданного base.conf
вами файла, соберет все файлы сертификатов и ключей, которые вы создали для своего клиента, извлечет их содержимое, добавит их в копию файла базовой конфигурации и экспортирует все это содержимое в файл. новый файл конфигурации клиента. Это означает, что вместо того, чтобы управлять клиентскими файлами конфигурации, сертификатами и ключами по отдельности, вся необходимая информация хранится в одном месте. Преимущество этого заключается в том, что если вам когда-нибудь понадобится добавить клиента в будущем, вы можете просто запустить этот сценарий, чтобы быстро создать файл конфигурации и убедиться, что вся важная информация хранится в одном, легкодоступном месте.
Шаг 9 - Генерация клиентских конфигураций
Если вы следовали этому руководству, вы создали клиентский сертификат и ключ с именем client1.crt
и client1.key
, соответственно, на шаге 4. Вы можете сгенерировать файл конфигурации для этих учетных данных, перейдя в ~/client-configs
каталог и запустив скрипт, который вы сделали в конце предыдущего шаг:
Вам необходимо перенести этот файл на устройство, которое вы планируете использовать в качестве клиента. Например, это может быть ваш локальный компьютер или мобильное устройство.
Заключение
Теперь вы безопасно пересекаете Интернет, защищая свою личность, местоположение и трафик от злоумышленников и цензоров. Если на этом этапе вам больше не нужно выдавать сертификаты, рекомендуется выключить компьютер CA или иным образом отключить его от Интернета, пока вам не понадобится добавить или отозвать сертификаты. Это поможет предотвратить доступ злоумышленников к вашему VPN.