Openvpn centos 7 настройка

Обновлено: 06.07.2024

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

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

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

OpenVPN - это полнофункциональное VPN-решение Secure Socket Layer (SSL) с открытым исходным кодом. Он реализует расширение сети OSI уровня 2 или 3 с использованием протокола SSL / TLS.

Чтобы настроить свой VPN вам понадобится:

  • Доступ в Sudo к серверу CentOS 7 для размещения вашего личного OpenVPN.
  • Правильно настроенный брандмауэр на сервере.
  • Отдельный компьютер, который будет служить вашим центром сертификации. Если вы не хотите использовать этот компьютер для своего ЦС, можно создать ЦС на своем сервере OpenVPN или на своем локальном компьютере. Когда вы закончите создание CA, рекомендуется переместить каталог CA в безопасное место или в автономный режим.

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

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

Создание CA с EasyRSA

При настройке нового сервера OpenVPN первым шагом является создание инфраструктуры открытого ключа ( PKI ). Для этого нам нужно создать следующее:

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

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

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

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

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

После завершения загрузки распакуйте архив, набрав:

Перейдите в каталог EasyRSA и создайте файл конфигурации с именем vars , скопировав этот vars.example файл:

Откройте файл, раскомментируйте и обновите следующие записи, чтобы они соответствовали вашей информации.

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

Перед созданием пары ключей CA сначала нам нужно инициализировать новую PKI с помощью:

Следующим шагом является создание CA:

Если вы не хотите постоянно вводить пароль при подписи своих сертификатов, выполните build-ca команду с помощью nopass опции: ./easyrsa build-ca nopass .

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

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

Теперь, когда центр сертификации (ЦС) создан, вы можете использовать его для подписания запросов на сертификат для одного или нескольких серверов и клиентов OpenVPN.

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

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

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

Включите репозиторий EPEL, набрав:

Когда репозиторий включен, установите OpenVPN с помощью следующей команды:

Загрузите последнюю версию EasyRSA:

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

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

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

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

Создание ключей Diffie–Hellman и HMAC

В этом разделе мы создадим надежный ключ Diffie–Hellman (DH), который будет использоваться во время обмена ключами, и файл подписи HMAC, чтобы добавить дополнительный уровень безопасности для соединения.

Перейдите в каталог EasyRSA на сервере OpenVPN и сгенерируйте ключ Diffie–Hellman :.

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

Затем сгенерируйте подпись HMAC, используя openvpn двоичный файл:

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

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

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

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

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

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

Скопируйте закрытый ключ в /etc/openvpn каталог:

Перенесите файл запроса сертификата на компьютер CA.

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

Войдите в свой компьютер CA , перейдите в каталог EasyRSA и импортируйте файл запроса сертификата:

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

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

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

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

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

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

Следующим шагом является передача подписанного сертификата server1.crt и ca.crt файлов обратно на ваш сервер OpenVPN. Опять же вы можете использовать scp , rsync или любой другой безопасный метод:

После выполнения действий, описанных в этом разделе, на вашем сервере 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/ каталог:

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

Найдите директивы Certificate, Key и DH и измените имена файлов:

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

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

Как только вы закончите, файл конфигурации сервера (исключая комментарии) должен выглядеть примерно так:

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

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

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

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

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

Включите службу для автоматического запуска при загрузке с:


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

При запуске сервер OpenVPN создает устройство настройки tun0 . Чтобы проверить, доступно ли устройство, введите следующую команду ip :

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

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

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

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

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

Откройте /etc/sysctl.conf файл и добавьте следующую строку:

Как только вы закончите, сохраните и закройте файл.

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

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

Теперь нам нужно добавить правила брандмауэра, открыть порт OpenVPN и включить маскировку.

Начнем с добавления tun0 интерфейса в trusted зону:

Откройте порт openvpn 1194 по умолчанию , добавив службу openvpn в список служб, разрешенных firewalld:

Установите IP-маскарадинг в trusted зоне:

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

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

Следующая команда позволит трафику покинуть VPN, предоставляя вашим VPN-клиентам доступ в Интернет. Не забудьте заменить eth0 в соответствии с именем общедоступного сетевого интерфейса, который вы нашли в предыдущей команде.

Наконец, перезагрузите правила брандмауэра, чтобы изменения вступили в силу:

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

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

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

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

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

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

  • base В директории будут храниться базовые файлы и настройки, которые будут доступны всем клиентским файлам.
  • configs каталог будет хранить сгенерированную конфигурацию клиента.
  • files В каталоге будет храниться клиентская пара сертификат / ключ.

Скопируйте в ca.crt и ta.key файлы в

Затем скопируйте образец файла конфигурации клиента VPN в

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

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

Найдите директиву remote и замените по умолчанию на общедоступный IP-адрес вашего сервера OpenVPN:

/ OpenVPN-клиент / база / client.conf

Найдите и комментарий ca , cert и key директивы. Сертификаты и ключи будут добавлены в файл конфигурации:

/ OpenVPN-клиент / база / client.conf

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

/ OpenVPN-клиент / база / client.conf

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

/ OpenVPN-клиент / база / client.conf

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

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

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

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

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

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

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

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

Скопируйте закрытый ключ client1.key в

/openvpn-clients/files каталог, который вы создали в предыдущем разделе:

Перенесите файл запроса сертификата на компьютер CA.

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

Войдите в свой компьютер CA , перейдите в каталог EasyRSA и импортируйте файл запроса сертификата:

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

В каталоге EasyRSA на компьютере CA выполните следующую команду, чтобы подписать запрос:

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

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

Затем перенесите client1.crt файл подписанного сертификата обратно на сервер OpenVPN. Вы можете использовать scp , rsync или любой другой безопасный метод:

Войдите на сервер OpenVPN и переместите client1.crt файл в

Последний шаг - создание клиентской конфигурации с использованием gen_config.sh скрипта. Перейдите в

/openvpn-clients каталог и запустите скрипт, используя имя клиента в качестве аргумента:

Скрипт создаст файл с именем client1.ovpn в

/client-configs/configs каталоге. Вы можете проверить, перечислив каталог:

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

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

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

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

Linux

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

Установите OpenVPN в Ubuntu и Debian

Установите OpenVPN на CentOS и Fedora

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

Macos

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

Windows

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

Скопируйте .ovpn файл в папку конфигурации OpenVPN ( \Users\<Name>\OpenVPN\Config или \Program Files\OpenVPN\config ).

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

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

Android и iOS

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

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

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

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

Войдите в свой компьютер CA и перейдите в каталог EasyRSA:

Запустите скрипт easyrsa, используя revoke аргумент и имя клиента, которого вы хотите отозвать:

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

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

Используйте gen-crl опцию для генерации списка отзыва сертификатов (CRL):

Загрузите файл CRL на сервер OpenVPN:

Войдите на сервер OpenVPN и переместите файл в /etc/openvpn каталог:

Откройте файл конфигурации сервера OpenVPN:

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

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

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

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

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

Вывод

Из этого руководства вы узнали, как установить и настроить сервер OpenVPN на компьютере CentOS 7.

date

10.12.2019

directory

CentOS, Linux

comments

комментариев 8

В данной статье мы рассмотрим установку и настройку OpenVPN сервера на базе Linux CentOS 7, и покажем, как с помощью настроенного OpenVPN-сервера объединить в одну сеть два удаленных компьютера (или офиса), находящихся за NAT. Аутентфикацию VPN клиентов мы будем выполнять по сертификатам.

VPN – набор технологий, которые позволяют построить защищенную сеть поверх общедоступных сетей или Интертета. С помощью VPN можно объединить в единую локальную сеть разделенные интернетом сегментысети.

OpenVPN – одна из реализаций технологии VPN с открытым исходным кодом на базе SSL/TLS (основан на библиотеке OpenSSL). С помощью OpenVPN можно объединять в единую сеть как удаленные офисы, так и отдельные локальные ПК, которые находятся за NAT.

Установка OpenVPN и Easy-RSA

Первым шагом нужно подключить репозиторий EPEL и обновить систему:

yum install epel-release -y
yum update -y

Когда система обновится, нужно с помощью менеджера пакетов yum установить OpenVPN и Easy-RSA (он нам понадобится для реализации инфраструктуры PKI ключей на сервере VPN).

yum install openvpn easy-rsa -y

Настройка Easy-RSA и выпуск сертификатов

Скопируем все скрипты easy-rsa в каталог /etc/openvpn/:

cp -r /usr/share/easy-rsa /etc/openvpn/

Перейдем в каталог /etc/openvpn/easy-rsa/3/ и создадим там файл vars:

cd /etc/openvpn/easy-rsa/3/
nano vars

Данные в файле можно взять произвольные, это не помешает настройке и дальнейшей работе сервера.

Файл должен быть исполняемым, поэтому выполним:

Создаем ключи и сертификаты для OpenVPN-сервера

Создаем ключ CA:

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

easyrsa создание ca ключа

В процессе выпуска сертификата, в графе Common Name нужно нажать Enter,.

При подписании сертификата потребуется пароль, который мы задавали при выпуске сертификата CA:

easyrsa подписать openvpn сервер сертификатом

Как указано на скриншоте, в процессе нужно будет ввести yes и пароль от CA.

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

Все сертификата OpenVPN сервера созданы.

Для генерации ключа клиента, нужно выполнить команду:

./easyrsa gen-req имяклиента nopass

Сгенерируем ключ клиента admin1:

Как и с ключом сервера, нужно его подписать, используя CA-сертификат:

./easyrsa sign-req client admin1

easyrsa генерация ключей клиента для openvpn

Сертификат для пользователя создан.

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

Он генерируется продолжительное время:

easyrsa gen-dh

После чего генерируем TLS сертификат:

openvpn --genkey --secret ta.key

Если мы в дальнейшем планируем отзывать клиентские сертификаты, нам необходимо сгенерировать CRL ключ:

Чтобы отозвать сертификат надо выполнить команду:

./easyrsa revoke admin1 — где admin1 это имя сертификата

Необходимые для работы сертификаты созданы, скопируем их в рабочие директории:

cp pki/issued/admin1.crt /etc/openvpn/client/
cp pki/private/admin1.key /etc/openvpn/client/

Настройка OpenVPN сервера: конфигурационный файл, фаервол

Перейдем к настройкам конфигурационного файла OpenVPN. Сначала создадим файл конфигурации OpenVPN server.conf:

cd /etc/openvpn/ && nano server.conf

Меняем содержимое файла на следующее:

После чего сохраняем файл. Я указал стандартный UDP порта 1194 для VPN сервера, но для работы OpenVPN вы можете указать любой свободный порт на сервере.

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

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

Добавим службу openvpn в firewalld, и интерфейс tun0 в доверенную зону

firewall-cmd --permanent --add-service=openvpn
firewall-cmd --permanent --zone=trusted --add-interface=tun0

Активируем ‘MASQUERADE’ для доверенной зоны firewalld:
firewall-cmd --permanent --zone=trusted --add-masquerade

firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s 15.10.2.0/24 -o IPсервера -j MASQUERADE
firewall-cmd –reload

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

iptables -t nat -A POSTROUTING -s 15.10.2.0/24 -o eth0 -j MASQUERADE
iptables -A INPUT -p tcp –dport 1194 -j ACCEPT
service iptables save

Запустим OpenVPN и добавим его в автозагрузку Linux:

systemctl start openvpn@server
systemctl enable openvpn@server

Проверим слушается ли порт 1194 сервисом:

Как видим, на устройстве tun0 добавлена указанная при конфигурации сеть.

Это минимальные настройки, которые нужно сделать для работы OpenVPN.

Объединяем несколько офисов (компьютеров) с помощью OpenVPN

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

Я создал файл client и добавил в него следующее содержимое:

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

После мы подключаемся через ярлык Open VPN client в трее:

openvpnclient connect

подключение openvpn клиента к серверу

Я подключился и получил следующий IP для своего ПК:

На втором компьютере за NAT я выполнил те же действия, предварительно создав сертификат для второго пользователя, при подключении второй ПК так же получил IP из сети:

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

Запускаем пинг на втором ПК:

Запускаем пинг на первом ПК:

Оба подключенные VPN клиента могут обмениваться пакетами, и передавать файлы друг другу напрямую. Таким образом мы смогли объединить в одну локальную сеть два ПК, находящихся в разных точках страны.

На сервере с OpenVPN вы можете создать неограниченное количество ключей и сертификатов для пользователей. Если вам потребуется новый сертификат, выполните следующие команды в директории /etc/openvpn/easy-rsa/3:

./easyrsa gen-req имяклиента nopass
./easyrsa sign-req client имяклиента

Не забывайте периодически отзывать сертификаты клиентов, если они не используются, чтобы сохранить в безопасности ваши данные.

Виртуальная частная сеть (VPN) позволяет находиться в ненадежных сетях так, как если бы вы были подключены к частной сети. Трафик исходит от VPN-сервера и передается до места назначения.

OpenVPN – это полнофункциональное открытое средство VPN SSL, которое поддерживает широкий спектр конфигураций. В этом мануале вы научитесь настраивать OpenVPN на вашем выделенном сервере CentOS 7 и открывать доступ клиентам.

Требования

  • Сервер CentOS 7, настроенный по этому мануалу (также читайте Дополнительные рекомендации по настройке сервера CentOS 7).
  • Домен или поддомен, который можно использовать для получения сертификата.
  • Клиентская машина, с помощью которой вы сможете подключиться к серверу OpenVPN. Для выполнения данного мануала вы можете использовать локальную машину.

1: Установка OpenVPN

Для начала установите пакет OpenVPN на сервер. Также нужно установить Easy RSA, пакет, который поможет создать внутренний центр сертификации (ЦС или CA) для VPN. Также Easy RSA позволит вам сгенерировать пару SSL-ключей для VPN-соединения.

Обновите индекс пакетов:

sudo yum update -y

Extra Packages for Enterprise Linux (EPEL) – это дополнительный репозиторий проекта Fedora, содержащий нестандартные, но популярные пакеты. OpenVPN недоступен в репозиториях CentOS по умолчанию, но доступен в EPEL. Установите этот репозиторий:

sudo yum install epel-release -y

Снова обновите индекс пакетов:

sudo yum update -y

Теперь установите OpenVPN и инструмент wget, с помощью которого вы сможете установить Easy RSA.

sudo yum install -y openvpn wget

Используйте wget, чтобы загрузить Easy RSA. Для данного руководства мы рекомендуем использовать easy-rsa-2, потому что у этой версии есть хорошая документация. Вы можете найти ссылку для загрузки последней версии easy-rsa-2 здесь.

tar xfz /tmp/easyrsa

Это создаст на вашем сервере новый каталог под названием easy-rsa-old-2.3.3. Создайте новый подкаталог в /etc/openvpn и назовите его easy-rsa:

sudo mkdir /etc/openvpn/easy-rsa

Скопируйте извлеченные файлы Easy RSA в новый каталог:

sudo cp -rf easy-rsa-old-2.3.3/easy-rsa/2.0/* /etc/openvpn/easy-rsa

Передайте права на каталог своему пользователю с правами sudo:

sudo chown 8host /etc/openvpn/easy-rsa/

Когда эти программы будут установлены и перенесены в нужные точки системы, вы сможете настроить OpenVPN на стороне сервера.

2: Настройка OpenVPN

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

OpenVPN содержит несколько образцов конфигурационных файлов в каталоге документации. Сначала скопируйте образец файла server.conf – его вы сможете использовать для создания собственного файла.

sudo cp /usr/share/doc/openvpn-2.4.4/sample/sample-config-files/server.conf /etc/openvpn

Откройте новый файл с помощью текстового редактора. Чтобы установить nano, введите такую команду:

sudo nano /etc/openvpn/server.conf

В этом файле есть несколько строк, которые нужно изменить. Большинство из них нужно просто раскомментировать, удалив точку с запятой в начале строки. Все функции подробно объясняются в комментариях, которые находятся стразу над строками функций.

push "redirect-gateway def1 bypass-dhcp"

Поскольку ваш клиент не сможет использовать DNS-серверы по умолчанию, предоставленные интернет-провайдером (так как его трафик будет перенаправлен), вам нужно указать, какие DNS-серверы он может использовать для подключения к OpenVPN. Вы можете выбрать любые DNS-серверы, а в мануале мы будем использовать общедоступные DNS-серверы Google (их IP-адреса 8.8.8.8 и 8.8.4.4).

push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"

Чтобы OpenVPN запускался без каких-либо привилегий, раскомментируйте строки:

user nobody
group nobody

Затем раскомментируйте строку topology subnet . Она вместе со строкой server 10.8.0.0 255.255.255.0 настраивает установку OpenVPN для работы в качестве подсети и сообщает клиентской машине, какой IP-адрес она должна использовать. В этом случае сервер будет 10.8.0.1, а первый клиент станет 10.8.0.2.

Также рекомендуется добавить в конфигурационный файл сервера следующую строку. Она подтверждает, что все входящие клиентские сертификаты действительно поступают от клиента, что упрощает настройку безопасности (об этом немного позже):

remote-cert-eku "TLS Web Client Authentication"

OpenVPN настоятельно рекомендует пользователям включить аутентификацию TLS, криптографический протокол, обеспечивающий безопасную связь через компьютерную сеть. Для этого нужно будет создать статический ключ шифрования (в этом примере он называется myvpn.tlsauth, но вы можете выбрать любое имя). Перед созданием этого ключа закомментируйте строку tls-auth ta.key 0, добавив точку с запятой. Затем добавьте tls-crypt myvpn.tlsauth в строку ниже:

;tls-auth ta.key 0
tls-crypt myvpn.tlsauth

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

sudo openvpn --genkey --secret /etc/openvpn/myvpn.tlsauth

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

3: Генерирование ключей и сертификатов

Для создания ключей и сертификатов Easy RSA использует набор сценариев, которые устанавливаются вместе с программой. Чтобы избежать повторной настройки при создании каждого сертификата, вы определить в Easy RSA значения по умолчанию, которые будут использоваться в полях сертификата (включая страну, город и адрес электронной почты).

Для начала создайте каталог для хранения ключей и сертификатов.

sudo mkdir /etc/openvpn/easy-rsa/keys

По умолчанию переменные сертификатов хранятся в файле vars в каталоге /etc/openvpn/easy-rsa:

sudo nano /etc/openvpn/easy-rsa/vars

Перейдите в конец файла и измените значения, начинающиеся с export KEY_, в них нужно указать ваши данные. Наиболее важными из них являются:

  • KEY_CN: введите домен или поддомен, который разрешается на ваш сервер.
  • KEY_NAME: введите сюда server. Если вы введете другое имя, вам придется обновлять файлы конфигурации, которые ссылаются на server.key и server.crt.

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

  • KEY_COUNTRY: введите двухбуквенную аббревиатуру страны проживания.
  • KEY_PROVINCE: штат/область/регион.
  • KEY_CITY: город.
  • KEY_ORG: название вашей организации.
  • KEY_EMAIL: электронная почта, которая будет привязана к сертификату.
  • KEY_OU: Organizational Unit – название команды и отдела, для которого предназначен сертификат.

Остальные переменные можно просто проигнорировать. После редактирования файл выглядит так:

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

Чтобы сгенерировать ключи и сертификаты, перейдите в каталог easy-rsa и запустите source, чтобы использовать новые переменные, заданные в файле vars:

cd /etc/openvpn/easy-rsa
source ./vars

Запустите скрипт Easy RSA clean-all для удаления всех ключей и сертификатов, которые уже есть в папке:

Затем создайте центр сертификации с помощью скрипта build-ca. Вам будет предложено заполнить поля сертификата, но если вы ранее установили параметры в файле vars, все ваши параметры уже будут установлены по умолчанию. Вы можете нажать Enter, чтобы принять значения по умолчанию для каждого параметра:

Этот скрипт сгенерирует файл ca.key. Это закрытый ключ, используемый для подписания сертификатов сервера и клиентов. Если вы потеряете его, вы больше не сможете доверять сертификатам этого ЦС; если злоумышленник сможет получить доступ к этому файлу, он сможет подписывать новые сертификаты и получит доступ к VPN без вашего ведома. По этой причине OpenVPN рекомендует хранить ca.key в расположении оффлайн (его следует активировать только при создании новых сертификатов).

Теперь создайте ключ и сертификат сервера с помощью сценария build-key-server:

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

Теперь нужно сгенерировать ключ Диффи-Хеллмана.

Эта процедура займет несколько минут.

Теперь скопируйте ключи и сертификаты сервера в каталог openvpn:

cd /etc/openvpn/easy-rsa/keys
sudo cp dh2048.pem ca.crt server.crt server.key /etc/openvpn

Каждому клиенту также потребуется сертификат, чтобы сервер OpenVPN мог проверить их подлинность. Эти ключи и сертификаты нужно создать на сервере, а затем скопировать их на клиенты. Рекомендуется использовать индивидуальные ключи и сертификаты для каждого клиента, которого вы собираетесь подключить к VPN.

cd /etc/openvpn/easy-rsa
./build-key client

Скопируйте версированный файл конфигурации OpenSSL, openssl-1.0.0.cnf, в файл openssl.cnf, убрав версию. В противном случае может произойти ошибка: OpenSSL не сможет загрузить конфигурацию, поскольку не сможет обнаружить ее версию:

cp /etc/openvpn/easy-rsa/openssl-1.0.0.cnf /etc/openvpn/easy-rsa/openssl.cnf

4: Маршрутизация

Итак, вы установили OpenVPN на свой сервер, настроили его и создали ключи и сертификаты, необходимые клиенту для доступа к VPN. Однако вы еще не предоставили OpenVPN какие-либо инструкции о том, куда отправлять входящий от клиентов трафик. Чтобы сервер понимал, как обрабатывать клиентский трафик, установите правила брандмауэра и настройте маршрутизацию.

Предполагается, что вы выполнили требования, перечисленные в начале этого мануала: на вашем сервере уже должен быть установлен и запущен firewalld. Чтобы брандмауэр поддерживал OpenVPN, вам нужно знать активную зону firewalld. Ее можно определить с помощью следующей команды:

sudo firewall-cmd --get-active-zones
trusted
Interfaces: tun0

sudo firewall-cmd --zone=trusted --add-service openvpn
sudo firewall-cmd --zone=trusted --add-service openvpn --permanent

Убедитесь, что сервис был добавлен.

sudo firewall-cmd --list-services --zone=trusted
openvpn

Затем настройте маскарадинг и снова сохраните параметр:

sudo firewall-cmd --add-masquerade
sudo firewall-cmd --permanent --add-masquerade

Убедитесь, что маскарадинг настроен:

sudo firewall-cmd --query-masquerade
yes

Затем настройте маршрутизацию в подсеть OpenVPN. Вы можете сначала создать переменную (в нашем примере это 8HOST), которая будет представлять основной сетевой интерфейс, используемый вашим сервером, а затем использовать эту переменную для добавления правил маршрутизации:

8HOST=$(ip route get 8.8.8.8 | awk 'NR==1 ')
sudo firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s 10.8.0.0/24 -o $8HOST -j MASQUERADE

Чтобы обновить параметры брандмауэра, перезапустите его:

sudo firewall-cmd --reload

Затем включите IP-форвардинг. Это направит весь веб-трафик клиента на IP-адрес вашего сервера, и внешний IP-адрес вашего клиента будет эффективно скрыт.

sudo nano /etc/sysctl.conf

Добавьте в начало файла такую строку:

Перезапустите сетевой сервис:

sudo systemctl restart network.service

5: Запуск OpenVPN

OpenVPN управляется как сервис systemd с помощью systemctl. Добавьте OpenVPN в автозагрузку, чтобы вы могли подключаться к VPN в любое время, пока сервер работает. Для этого включите сервер OpenVPN, добавив его в systemctl:

sudo systemctl -f enable openvpn@server.service

Затем запустите сервис OpenVPN:

sudo systemctl start openvpn@server.service

Убедитесь, что сервис OpenVPN активен.

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

6: Настройка клиента

Независимо от операционной системы вашего клиентского компьютера для этого потребуется локально сохраненная копия сертификата ЦС, ключа клиента и сертификата, сгенерированного в разделе 3, а также статического ключа шифрования, который вы создали в конце раздела 2.

На сервере найдите следующие файлы. Если вы создали несколько клиентских ключей с уникальными описательными именами, имена ключей и сертификатов будут отличаться. В мануале они условно называются client.

/etc/openvpn/easy-rsa/keys/ca.crt
/etc/openvpn/easy-rsa/keys/client.crt
/etc/openvpn/easy-rsa/keys/client.key
/etc/openvpn/myvpn.tlsauth

Скопируйте эти файлы на клиентскую машину. Вы можете использовать SFTP или любой другой метод. Вы даже можете просто открыть файлы в текстовом редакторе, скопировать и вставить содержимое в новые файлы на клиентской машине. Независимо от того, какой метод вы используете, запомните расположение этих файлов.

На клиенте создайте файл client.ovpn.

sudo nano client.ovpn

В этот файл добавьте следующие строки. Обратите внимание, многие из этих строк отражают строки, которые мы раскомментировали или добавили в файл server.conf.

client
tls-client
ca /path/to/ca.crt
cert /path/to/client.crt
key /path/to/client.key
tls-crypt /path/to/myvpn.tlsauth
remote-cert-eku "TLS Web Client Authentication"
proto udp
remote your_server_ip 1194 udp
dev tun
topology subnet
pull
user nobody
group nobody

При добавлении этих строк обратите внимание на следующее:

  • В первой строке вам нужно будет указать имя, которое вы дали клиенту в ключе и сертификате; в нашем случае это client.
  • Также необходимо обновить IP-адрес; порт 1194 можно оставить.
  • Убедитесь, что пути к вашим ключам и файлам сертификатов указаны верно.

Этот файл теперь можно использовать на клиентах OpenVPN для подключения к серверу. Ниже приведены инструкции по подключению клиента

Windows

В Windows вам понадобятся официальные двоичные файлы OpenVPN Community Edition, которые поставляются с графическим интерфейсом. Поместите файл конфигурации .ovpn в соответствующий каталог, C:\Program Files\OpenVPN\config, и нажмите Connect в интерфейсе. OpenVPN GUI для Windows нужно выполнять с правами администратора.

macOS

Linux

В Linux нужно установить OpenVPN из официального репозитория системы. Запустить OpenVPN можно с помощью команды:

sudo openvpn --config

После того, как вы установили успешное соединение с клиентом, вы можете убедиться, что трафик маршрутизируется через VPN, запросив внешний IP-адрес в Google.

Заключение

Теперь у вас есть полностью рабочая виртуальная частная сеть на сервере OpenVPN. Вы можете просматривать веб-страницы и загружать контент, не беспокоясь о злоумышленниках, отслеживающих вашу деятельность.

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

Установка OpenVPN в CentOS 7


На этом сайте уже неоднократно публиковались статьи по настройке OpenVPN, но время летит, инструменты немного изменяются, узнаются новые опции, поэтому решил обновить кладовую пошаговых how-to. Большинство из того, что здесь описано, касается не только CentOS, но и других дистрибутивов Linux, но у меня традиционно все для CentOS. С примерами рабочих конфигов сервера и клиента, разумеется.

Актуальность статьи: текущий момент :) ПО: CentOS 7 minimal, SELinux включен. Все ПО обновлено с помощью yum update.

offtop: сделайте над собой усилие, не отключайте SELinux сразу после установки CentOS! В конце статьи кратко затрагивается и это. Даже встроенный firewall Windows может сослужить хорошую службу, что уж говорить про SELinux.

Оглавление:

Установка

Инфраструктура публичных ключей PKI

Директория для ключей:

Вообще, есть еще вариант с yum install easy-rsa, но тут есть минус в том, что при дальнейшем обновлении можно получить версию easy-rsa новее, чем ту, с которой вы работаете сейчас, а вы все равно копируете эти скрипты и работаете в дальнейшем с копиями, поэтому - не знаю, можно и yum. А можно и wget. Если через yum, не забудьте скопировать файлы из /usr/share/easy-rsa/3.0.8 (на данный момент).

Создаем файл настроек, с пониманием того, что будет. Например, опция EASYRSA_PKI (по-умолчанию, "$PWD/pki") указывает путь, где будет создана директория для ключей.
Команда "init-pki" выполнит "rm -rf" содержимого директории, будьте внимательны! Вы еще инициализируете инфраструктуру ключей, её еще нет, но если там что-то есть, то это будет стерто. Большинство опций - дефолт, на свой вкус отредактируйте страну, OU, email и т.п. Обратите внимание на сроки (в днях) валидности сертифкатов CA, CRL, CERT.

Внимание! В разных руководствах есть разные наборы опций, обдумайте их все. Например, где-то видел: set_var EASYRSA_SSL_CONF "$EASYRSA/openssl-1.0.cnf"
А оно вам точно надо? Вот что в описании написано: if you need to use a specific openssl config file, you can reference it here. Normally this file is auto-detected from a file named openssl-easyrsa.cnf from theEASYRSA_PKI or EASYRSA dir (in that order.) NOTE that this file is Easy-RSA specific and you cannot just use a standard config file, so this is an advanced feature.

ADVANCED, Карл! Если вам нужны какие-то особые опции OpenSSL, указывайте файл конфига, понимая, что он как минимум, у вас есть и понимая, зачем вам это.

В файле конфига vars старайтесь указывать или важные для вас опции, или те, которые вы переопределяете, но не стоит весь дефолтный конфиг сюда лить.

Сложного ничего там нет, посмотрите сами.

Создаем инфраструктуру публичных ключей (PKI, Public Key Infrastructure):

При этом будет создан каталог /etc/openvpn/keys/EasyRSA-3.0.8/pki/ .

Внимание! После создания инфраструктуры никогда больше не запускайте команду init-pki! Эта команда, в числе прочего, выполнит "rm -rf" содержимого директории, будьте внимательны!

Чтобы при подключении клиентов к серверу OpenVPN можно было бы быть уверенным, что сертификат сервера и клиента - не поддельные, нужен кто-то, кто отвечает за "кристальную чистоту партийных рядов". Этот кто-то - удостоверяющий центр, CA (Certificate Authority). CA бывают свои (чаще самоподписанные) и публичные, типа Thawte, StartSSL и др. В данном примере рассмотрим ситуацию, когда используется свой CA - как минимум, это значительно дешевле. Даже свой CA не обязан быть на том же сервере, где будет запущен сервер OpenVPN, но чаще всего расположение CA для OpenVPN на том же сервере, что и сам OpenVPN.

Создаем свой CA:

Можно было бы избежать ввода пароля (./easyrsa build-ca nopass), но при этом если кто-то скопирует секретный ключ вашего CA, он сможет подписывать "левые" ключи. Вы должны охранять приватный ключ CA как зеницу ока, ведь все остальное верифицируется именно им. Поэтому пароль должен быть стойким к перебору. В конце концов, вы не каждый день будете им пользоваться.

Итак, у нас появились секретный ключ ca.key и сертификат ca.crt:
/etc/openvpn/keys/EasyRSA-3.0.8/pki/private/ca.key
/etc/openvpn/keys/EasyRSA-3.0.8/pki/ca.crt

Секретный ключ нужно оставить на сервере и никому не отдавать. Каждый раз при выпуске нового сертификата сервера или пользователя нам будет необходим пароль секретного ключа! Он важнее сертификата сервера, пользователя, да всего вообще.

Сертификат CA (ca.crt) — открытый, его мы будем вместе с пользовательскими сертификатами передавать клиентам.

Сертификаты сервера OpenVPN

Создаем запрос сертификата для сервера без пароля с помощью опции nopass, иначе придется вводить пароль с консоли при каждом запуске сервера:

Подписываем запрос на получение сертификата у нашего CA:

В процессе работы скрипта вводим пароль от CA, который указывали раньше и отвечаем на вопрос yes. Мы получили подписанный нашим удостоверяющим центром сертификат для сервера — /etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/issued/server.crt

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

Генерация занимает приличное время (по отношению к другим ключам). В конце концов получаем ключ /etc/openvpn/keys/ EasyRSA-3.0.8 /pki/dh.pem

Чтобы можно было отозвать клиентский сертификат (например, при утере мобильного устройства или при увольнении сотрудника), надо создать список отозванных сертификатов CRL:

Будет создан файл /etc/openvpn/keys/EasyRSA-3.0.8/pki/crl.pem , который будет содержать список отозванных сертификатов. Этот файл необходимо скопировать в директорию /etc/openvpn/, указать в конфиге сервера OpenVPN и перезапустить сервер OpenVPN.

Копируем в папку /etc/openvpn все необходимые для работы openvpn сервера ключи (напомню, мы находимся в директории /etc/openvpn/keys/EasyRSA-3.0.8 ):

Создадим файл HMAC, для дополнительной верификации клиента и сервера (для защиты от DDoS, например):

Файл ta.key должен быть скопирован и передан клиенту.

В нормальной конфигурации сервера после старта (от root) права меняются на непривилегированного пользователя (nobody или созданного специально). Этот пользователь должен иметь права на чтение к сертификатам для аутентификации клиентов:

Ключи server.key, ta.key должны быть доступны только root (chmod 600).

Клиентские ключи

Создадим ключ для клиента openvpn:

Опять можно отметить, что могут быть ситуации, когда лучше ключ клиента защищать паролем, хотя бы несложным. Тогда всякий раз при подключении к VPN необходимо будет ввести пароль. Это может быть удобным, если вы не хотите, например, чтобы ваш ребенок случайно подключился к вашей рабочей сети и натворил делов. Для этого просто не надо указывать "nopass" в конце команды выше.

В итоге мы получим два файла:
Публичный сертификат клиента: /etc/openvpn/keys/EasyRSA-3.0.8/pki/issued/client1.crt
Приватный ключ клиента: /etc/openvpn/keys/EasyRSA-3.0.8/pki/private/client1.key

Клиенту вместе с конфигом (см ниже) нужно будет передать копии следующих файлов:
client1.crt;
client1.key;
ca.crt;
ta.key
которые все используются в клиентском конфиге. Никакие иные файлы, кроме тех, которые указаны в конфиге клиента, передавать клиенту не надо!

Конфигурационный файл сервера

Конфигурационный файл сервера по-умолчанию: /etc/openvpn/server.conf . Скорее всего, у вас не будет необходимости менять его расположение.

Обратите внимание на общие опции для клиента и сервера. Это тип шифрования, сжатие трафика и др. Некоторые опции зеркальные. Например, на сервере ta.key 0, на клиенте ta.key 1 и др.

Пример 1 (конфиг сервера OpenVPN):

Пример 2 (конфиг сервера OpenVPN):

Оба конфига рабочие.

Конфигурационный файл клиента

Некоторые опции должны быть симметричны опциям сервера, в частности тип шифрования (здесь BF-CBC), сжатия трафика и др. Все приведенные ниже конфиги рабочие.

Приведены примеры конфигов клиентов OpenVPN для Windows. Для Linux все то же, только пути до файлов ключей надо указать как в конфиге сервера (см. выше).

Пример 1 (конфиг клиента OpenVPN):

Пример 2 (соотв. примеру 2-го конфига сервера):

Запускаем сервер

Проверяем, запустился или нет (считаем, что в конфиге указан порт 3876/udp):

Отлично, запустился на указанном порту.

Ну, или так проверяем:

Если все ок, разрешаем автозапуск:

Если что-то не так, смотрим лог. Возможно, SELinux не разрешает запускать OpenVPN на выбранном вами порте.

и еще раз пробуем запустить OpenVPN.

В любом случае, файл лога вам в помощь. После отладки лог можно и отключить (log /dev/null). VPN - он такой.

Отзыв сертификата

Для того, чтобы отозвать сертификат client1:

При этом будет создан новый файл crl.pem, который обязательно надо скопировать в директорию /etc/openvpn, заменив старый и перезапустить сервер OpenVPN.

А в файле index.txt соответствующий сертификат будет отмечен символом R (рабочие V, а отозванные - R).

Т.к. инфраструктура ключей OpenVPN это по сути обычный CA OpenSSL, то многое из того, что вы знаете про OpenSSL, подойдет и для OpenVPN. Например, список сертификатов с серийными номерами, указанием, отозваны ли они и другой информацией находится в файле index.txt.

При попытке подключиться к серверу с отозванным сертификатом в логе сервера могут быть такие события (уровень детализации verb 4):

Обратите внимание на строчку "CRL CHECK FAILED" (Ошибка Проверки Списка Отозванных Сертификатов): сертификат с серийным номером 04 отозван (is REVOKED)!

Справка по Easy-RSA

Если вы хотите получить справку по утилите Easy-RSA, выполните команду:

Для получения справки по конкретным командам, например build-ca:

Настройка iptables

Немного про настройку iptables. Чуть-чуть. По-умолчанию, таблицы INPUT, FORWARD (а порой и OUTPUT) должны быть в состоянии DROP. Поэтому необходимо разрешить прохождение пакетов из сети OpenVPN в интернет (eth0) и/или в локальную сеть (eth1). Пожалуйста, обратите внимание, это пример того, что вам может быть необходимо сделать. Все нижеприведенные команды уже не пошаговый how-to, как в разделах выше. Вы можете нарушить нормальную работу сети необдуманными действиями!

Разрешить доступ к серверу OpenVPN с внешнего интерфейса:

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

Чтобы клиенты могли выходить в интернет или пользоваться ресурсами LAN, для начала на сервере OpenVPN разрешим маршрутизацию (действует до перезагрузки):

или так (сохранится после перезагрузки):

Чтобы клиенты OpenVPN могли выходить в интернет от лица сервера (внешний интерфейс eth0):

Возможно, у вас уже есть правило для NAT, что-то вроде:

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

Чтобы клиенты OpenVPN могли работать с локальной сетью (интерфейс LAN eth1):

iptables -A FORWARD -i tun0 -o eth1 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth1 -o tun0 -m state --state ESTABLISHED,RELATED -j ACCEPT

Пример рабочего скрипта для сервера OpenVPN (без подключения к локальной сети):

Дополняйте, улучшайте, делитесь с другими опытом :) Вот, вроде бы и все. Удачи!

Огромное, человеческое спасибо. Мало того, что с пояснениями, так они ещё не к обрывку содранной статьи с другого сайта! А то какую статью не откроешь, так везде копипаст с другого сайта, на котором перевод через гугл переводчик))) И чтобы не устанавливали, везде SELinux отключать рекомендуют :-D Так сложно одну команду написать, чтобы разрешить конкретной службе работать.
Единственно, что не хватает для полноты "справочника", так это настройки firewalld. Для тех, кто не выключал его в установленной CentOS 7/ Спасибо за отзыв, хорошо, когда пригождается кому-то. С firewalld, согласен, пробел в моем личном опыте. Не попробую на практике - писать не о чем :( iptables мне больше по душе тем, что он везде один, во всех дистрибах. И со временем не похоже, что его сменит что-то. Доброго времени.
Огромное спасибо за статью. Но один вопрос - Пример рабочего скрипта для сервера OpenVPN (без подключения к локальной сети) - куда (в какой файл) вставлять данный скрипт?
Спасибо! Не понял вопроса, если честно. Если речь про запуск сервера, то если после установки рабочая директория это /etc/openvpn, то достаточно в этой директории иметь файл server.conf с нужными опциями. Запуск/останов service openvpn start/stop. Или вы другое имели ввиду? В последнем случае чтобы закрыть такой сервис, ищете его pid:
netstat -tulnp | grep 3876
где 3876 - порт на котором висит openvpn,
Netstat найдет Pid, скажем, 2026. Грохаете этот процесс по pid:
kill -HUP 2026

Не много не про это. Я не понял куда нужно вставить (где заменить) скрипт указанный в самом последнем абзаце

И ещё расскажите пожалуйста как добавить второго клиента?
Спасибо.

Это скрипт, который применяет правила iptables на хосте. У вас это может быть firewalld или iptables. И это просто пример такого скрипта. Сколько людей, столько разных подходов. Лучше всего про firewall все же почитать и в любом случае не применять подобные скрипты если не уверены точно в том, что понимаете, что он делает! В данном случае суть - вам надо открыть тот порт, на котором работает OpenVPN. При создании ключей клиентов существуют варианты их создания в один файл (client.ovpn) куда прописывается содержимое содержимое ca.crt, ta.key, client.crt, client.key.
Было бы не плохо рассмотрение данного вопроса.
И еще очень не хватает статьи об организации выборочной маршрутизации и о назначении каждому клиенту своих правил (вынесение их в отдельный файл). Обновил статью, под Easy-Rsa 3.0.8. Отличия, в общем-то, небольшие.

Читайте также: