Как настроить сервер OpenVPN в Ubuntu 16.04
Вам нужно настроить sudo привилегированных пользователей, прежде чем вы начнете это руководство. Вы можете следовать нашему руководству по первоначальной настройке сервера Ubuntu 16.04, чтобы настроить пользователя с соответствующими разрешениями. В связанном учебном пособии также будет установлен брандмауэр , который, как мы предполагаем, будет установлен в этом руководстве.
Шаг 1 - Установите OpenVPN
Для начала мы установим OpenVPN на наш сервер. OpenVPN доступен в репозиториях Ubuntu по умолчанию, поэтому мы можем использовать его apt
для установки. Мы также будем устанавливать easy-rsa
пакет, который поможет нам настроить внутренний CA (центр сертификации) для использования с нашей VPN.
Чтобы обновить индекс пакета вашего сервера и установить необходимые пакеты, введите:
Необходимое программное обеспечение теперь на сервере, готово к настройке.
Шаг 2 - Настройка CA Directory
OpenVPN - это TLS / SSL VPN. Это означает, что он использует сертификаты для шифрования трафика между сервером и клиентами. Для выдачи доверенных сертификатов нам потребуется настроить наш собственный простой центр сертификации (CA).
Для начала мы можем скопировать easy-rsa каталог шаблонов в наш домашний каталог с помощью make-cadir команды:
Шаг 3 - Настройте переменные CA
Когда вы закончите, сохраните и закройте файл.
Шаг 4 - Создайте центр сертификации
Теперь мы можем использовать переменные, которые мы установили, и easy-rsa утилиты для создания нашего центра сертификации.
Теперь у нас есть центр сертификации, который можно использовать для создания остальных файлов, которые нам нужны.
Шаг 5 - Создайте сертификат сервера, ключ и файлы шифрования
Затем мы создадим наш сертификат сервера и пару ключей, а также некоторые дополнительные файлы, используемые в процессе шифрования.
Шаг 6 - Генерация клиентского сертификата и пары ключей
Далее мы можем сгенерировать клиентский сертификат и пару ключей. Хотя это может быть сделано на клиентском компьютере и затем подписано сервером / ЦС в целях безопасности, для этого руководства мы сгенерируем подписанный ключ на сервере для простоты.
Для этого руководства мы создадим один ключ / сертификат клиента, но если у вас более одного клиента, вы можете повторить этот процесс столько раз, сколько захотите. Передайте уникальное значение скрипту для каждого клиента.
Поскольку вы можете вернуться к этому шагу позже, мы повторно предоставим varsфайл. Мы будем использовать client1в качестве значения для нашей первой пары сертификат / ключ для этого руководства.
Опять же, значения по умолчанию должны быть заполнены, так что вы можете просто нажать ENTER, чтобы продолжить. Оставьте пароль вызова пустым и обязательно введите y для запросов, которые спрашивают, следует ли подписывать и подтверждать сертификат.
Шаг 7 - Настройка службы OpenVPN
Затем мы можем начать настройку службы OpenVPN с использованием сгенерированных нами учетных данных и файлов.
Скопируйте файлы в каталог OpenVPN
Для начала нам нужно скопировать нужные нам файлы в /etc/openvpn каталог конфигурации.
Мы можем начать со всех файлов, которые мы только что сгенерировали. Они были размещены в ~/openvpn-ca/keys каталоге, как они были созданы. Нам нужно переместить наш сертификат CA, наш сертификат сервера и ключ, подпись HMAC и файл Diffie-Hellman:
Настройте конфигурацию OpenVPN
Когда вы закончите, сохраните и закройте файл.
Шаг 8 - Настройте конфигурацию сети сервера
Затем нам нужно настроить некоторые аспекты работы сети на сервере, чтобы OpenVPN мог правильно маршрутизировать трафик.
Разрешить IP-пересылку
Во-первых, нам нужно разрешить серверу пересылать трафик. Это очень важно для функциональности, которую мы хотим, чтобы наш VPN-сервер предоставил.
Настройте правила UFW для маскировки клиентских подключений
Если вы выполнили предварительные требования к руководству по первоначальной настройке сервера Ubuntu 16.04, у вас должен быть установлен брандмауэр UFW. Независимо от того, используете ли вы брандмауэр для блокировки нежелательного трафика (что вы почти всегда должны делать), нам нужен брандмауэр в этом руководстве, чтобы манипулировать частью трафика, поступающего на сервер. Нам нужно изменить файл правил, чтобы настроить маскарадинг - iptables концепцию, которая обеспечивает динамический NAT на лету для правильной маршрутизации клиентских соединений.
Откройте порт OpenVPN и включите изменения
Далее мы настроим сам брандмауэр, чтобы пропускать трафик к OpenVPN.
Если вы не изменили порт и протокол в /etc/openvpn/server.conf файле, вам потребуется открыть UDP-трафик для порта 1194. Если вы изменили порт и / или протокол, подставьте значения, которые вы выбрали здесь.
Наш сервер теперь настроен для правильной обработки трафика OpenVPN.
Шаг 9 - Запустите и включите службу OpenVPN
Мы наконец-то готовы запустить сервис OpenVPN на нашем сервере. Мы можем сделать это с помощью systemd.
Нам нужно запустить сервер OpenVPN, указав имя нашего файла конфигурации в качестве переменной экземпляра после имени файла системного модуля. Наш конфигурационный файл для нашего сервера называется , поэтому мы добавим в конец нашего файла модуля при его вызове:/etc/openvpn/server.conf@server
Шаг 10 - Создайте инфраструктуру конфигурации клиента
Далее нам нужно настроить систему, которая позволит нам легко создавать файлы конфигурации клиента.
Создание структуры каталога конфигурации клиента
Создание базовой конфигурации
Если ваш клиент работает под управлением Linux и имеет /etc/openvpn/update-resolv-conf файл, вы должны раскомментировать эти строки из сгенерированного файла конфигурации клиента OpenVPN.
Создание скрипта генерации конфигурации
Далее мы создадим простой скрипт для компиляции нашей базовой конфигурации с соответствующими сертификатами, ключами и файлами шифрования. Это поместит сгенерированную конфигурацию в ~/client-configs/files каталог.
Шаг 11 - Генерация клиентских конфигураций
Если вы следовали этому руководству, вы создали клиентский сертификат и ключ с именем client1.crt и, client1.key соответственно, выполнив команду на шаге 6. Мы можем создать конфигурацию для этих учетных данных, перейдя в наш каталог и используя скрипт, который мы сделали:./build-key client1~/client-configs
Передача конфигурации на клиентские устройства
Нам нужно перенести файл конфигурации клиента на соответствующее устройство. Например, это может быть ваш локальный компьютер или мобильное устройство.
Хотя точные приложения, используемые для выполнения этой передачи, будут зависеть от вашего выбора и операционной системы устройства, вы хотите, чтобы приложение использовало SFTP (протокол передачи файлов SSH) или SCP (Secure Copy) на серверной части. При этом файлы аутентификации VPN вашего клиента будут передаваться через зашифрованное соединение.
Шаг 14 - Отзыв клиентских сертификатов
Иногда вам может потребоваться отозвать сертификат клиента, чтобы предотвратить дальнейший доступ к серверу OpenVPN.
Теперь клиент больше не сможет успешно подключаться к серверу, используя старые учетные данные.
Чтобы отозвать дополнительных клиентов, выполните этот процесс:
- Создайте новый список отзыва сертификатов, найдя vars файл в ~/openvpn-ca каталоге, а затем вызвав revoke-full скрипт на имя клиента.
- Скопируйте новый список отзыва сертификатов в /etc/openvpn каталог, чтобы перезаписать старый список.
- Перезапустите сервис OpenVPN.
Заключение
Теперь вы безопасно пересекаете Интернет, защищая свою личность, местоположение и трафик от злоумышленников и цензоров.