Как установить и настроить сервер OpenVPN в CentOS 7

OpenVPN - это полнофункциональное VPN-решение Secure Socket Layer (SSL) с открытым исходным кодом, которое поддерживает широкий спектр конфигураций. В этом руководстве вы настроите OpenVPN на сервере CentOS 7, а затем настроите его так, чтобы он был доступен с клиентского компьютера.

Как установить Drupal 8 на Ubuntu/Debian

Шаг 1 - Установка OpenVPN

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

  •  Для работы данной CMS необходимо установка специальных
     модулей php. С помощью последующих действий установите их:
     apt-get update
     apt-get install php7.0-gd
     Войдите на сервер как пользователь не-root sudo и обновите
     списки пакетов, чтобы убедиться, что у вас все последние версии.
     sudo yum update -y
     Репозиторий Extra Packages for Enterprise Linux (EPEL) -
     это дополнительный репозиторий, управляемый проектом Fedora, содержащий
     нестандартные, но популярные пакеты. OpenVPN недоступен в репозиториях
     CentOS по умолчанию, но доступен в EPEL, поэтому установите 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 на странице релизов проекта : 
     wget -O /tmp/easyrsa https://github.com/OpenVPN/easy-rsa-old/archive/2.3.3.tar.gz
     Затем распакуйте сжатый файл tar: 
     tar xfz /tmp/easyrsa
     Это создаст новый каталог на вашем сервере с именем .
     Создайте новый подкаталог и назовите его :easy-rsa-old-2.3.3/etc/openvpneasy-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
     Затем измените владельца каталога на пользователя без полномочий root: 
     sudo chown myname /etc/openvpn/easy-rsa/
      

После того, как эти программы установлены и перемещены в нужные места в вашей системе, следующим шагом является настройка конфигурации OpenVPN на стороне сервера.

Шаг 2 - Настройка OpenVPN

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

  •  OpenVPN имеет несколько примеров файлов конфигурации в
     своем каталоге документации. Сначала скопируйте образец server.conf файла
     в качестве отправной точки для вашего собственного файла конфигурации.
     sudo cp /usr/share/doc/openvpn-2.4.4/sample/sample-config-files/server.conf
     /etc/openvpn
     Откройте новый файл для редактирования в любом текстовом редакторе.
     Мы будем использовать nano в нашем примере, который вы можете загрузить с
     помощью yum install nano команды, если у вас его еще нет на вашем сервере:
     sudo nano /etc/openvpn/server.conf
     В этом файле нужно изменить несколько строк, большинство
     из которых нужно просто раскомментировать, удалив точку с запятой ;в начале
     строки. Функции этих строк, а также других строк, не упомянутых в этом руководстве,
     подробно объясняются в комментариях над каждой из них.
     Для начала найдите и раскомментируйте строку, содержащую push
     "redirect-gateway def1 bypass-dhcp".
     Это скажет вашему клиенту перенаправить весь его трафик через ваш сервер OpenVPN.
     Помните, что включение этой функции может вызвать
     проблемы с подключением к другим сетевым службам, таким как SSH:
     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 ..."
     строки и обновив IP-адреса:
     push "dhcp-option DNS 8.8.8.8"
     push "dhcp-option DNS 8.8.4.4"
     Мы хотим, чтобы OpenVPN запускался без каких-либо привилегий
     после его запуска, поэтому нам нужно указать, чтобы он запускался с пользователем
     и группой никто . Чтобы включить это, раскомментируйте user nobody
     и group nobody линии: 
     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: 
     topology subnet
     Также рекомендуется добавить следующую строку в файл
     конфигурации вашего сервера. Эта двойная проверка, что любые входящие
     клиентские сертификаты действительно исходят от клиента, ужесточая
     параметры безопасности, которые мы установим на следующих шагах: 
     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
     (в nano нажмите CTRL - X, Y затем, ENTER чтобы сделать это), а затем
     сгенерируйте ключ статического шифрования с помощью следующей команды: 
     sudo openvpn --genkey --secret /etc/openvpn/myvpn.tlsauth  

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

Шаг 3 - Генерация ключей и сертификатов

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

  •  Мы начнем процесс генерации ключей и сертификатов с
     создания каталога, в котором Easy RSA будет хранить любые ключи
     и сертификаты, которые вы генерируете:
     sudo mkdir /etc/openvpn/easy-rsa/keys
     Переменные сертификата по умолчанию установлены в vars файле in /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 Это должно быть название «Подразделения организации», к которому вы принадлежите, обычно название вашего отдела или группы

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

  •   . . .
     # These are the default values for fields
     # which will be placed in the certificate.
     # Don't leave any of these fields blank.
     export KEY_COUNTRY="RU"
     export KEY_PROVINCE="MS"
     export KEY_CITY="Moskow"
     export KEY_ORG="Digitbox"
     export KEY_EMAIL="myname@example.com"
     export KEY_EMAIL=myname@example.com
     export KEY_CN=openvpn.example.com
     export KEY_NAME="server"
     export KEY_OU="Community"
     . . .
     Чтобы начать генерировать ключи и сертификаты, перейдите в
     easy-rsa каталог и sourceв новые переменные, которые вы установили в vars файле: 
     cd /etc/openvpn/easy-rsa
     source ./vars
     Запустите clean-all скрипт Easy RSA, чтобы удалить
     все ключи и сертификаты, уже находящиеся в папке, и сгенерировать центр сертификации: 
     ./clean-all
     Затем создайте центр сертификации с помощью build-ca сценария.
     Вам будет предложено ввести значения для полей сертификата,
     но если вы установите переменные
     в vars файле ранее, все ваши параметры уже будут установлены
     в качестве значений по умолчанию.
     Вы можете нажать, ENTER чтобы принять значения по умолчанию для каждого: 
     ./build-ca
     Этот скрипт генерирует файл с именем ca.key. Это закрытый ключ,
     используемый для подписи сертификатов вашего сервера и клиентов. Если он потерян,
     вы больше не сможете доверять никаким сертификатам из этого центра сертификации,
     и если кто-либо сможет получить доступ к этому файлу, он может подписать новые
     сертификаты и получить доступ к вашей VPN без вашего ведома. По этой причине
     OpenVPN рекомендует хранить ca.keyв месте, которое может быть максимально автономным,
     и его следует активировать только при создании новых сертификатов.
     Затем создайте ключ и сертификат для сервера, используя build-key-server скрипт:
     ./build-key-server server
     Как и при построении ЦС, вы увидите значения, которые вы установили
     в качестве значений по умолчанию, чтобы вы могли нажать ENTER на эти подсказки.
     Кроме того, вам будет предложено ввести пароль и имя компании. Если вы введете
     контрольный пароль, он будет запрошен при подключении к VPN с вашего клиента.
     Если вы не хотите устанавливать контрольный пароль, просто оставьте эту строку пустой
     и нажмите ENTER. В конце введите, Y чтобы зафиксировать изменения.
     Последняя часть создания ключей и сертификатов сервера - это создание файла
     обмена ключами Диффи-Хеллмана. Используйте build-dh скрипт для этого:
     ./build-dh
     Как только ваш сервер завершит создание файла обмена ключами,
     скопируйте ключи и сертификаты сервера из keys каталога в openvpn каталог:  
     cd /etc/openvpn/easy-rsa/keys
     sudo cp dh2048.pem ca.crt server.crt server.key /etc/openvpn
     Поскольку мы настроим здесь только одного клиента, мы назвали его
     client, но вы можете изменить его на более описательное имя, если хотите: 
     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   

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

Шаг 5 - Маршрутизация

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

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

  •   sudo firewall-cmd --get-active-zones
     Затем добавьте openvpn службу в список служб, разрешенных
     firewalld в вашей активной зоне, а затем сделайте этот параметр постоянным,
     повторно выполнив команду, но с --permanent добавленной опцией:
     sudo firewall-cmd --zone=trusted --add-service openvpn
     sudo firewall-cmd --zone=trusted --add-service openvpn --permanent
     Вы можете проверить правильность добавления службы с помощью следующей команды: 
     sudo firewall-cmd --list-services --zone=trusted
     Затем добавьте маскарад к текущему экземпляру среды выполнения, а
     затем добавьте его снова с --permanent возможностью
     добавления маскарада ко всем будущим экземплярам: 
     sudo firewall-cmd --add-masquerade
     sudo firewall-cmd --permanent --add-masquerade
     Вы можете проверить, что маскарад был добавлен правильно с этой командой: 
     sudo firewall-cmd --query-masquerade
     Затем перешлите маршрутизацию в вашу подсеть OpenVPN.
     Вы можете сделать это, сначала создав переменную ( SHARK в нашем примере),
     которая будет представлять основной сетевой интерфейс, используемый вашим сервером,
     а затем используя эту переменную для постоянного добавления правила маршрутизации: 
     SHARK=$(ip route get 8.8.8.8 | awk 'NR==1 {print $(NF-2)}')
     sudo firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A
     POSTROUTING -s 10.8.0.0/24 -o $SHARK -j MASQUERADE
     Обязательно внесите эти изменения в правила брандмауэра, перезагрузив firewalld: 
     sudo firewall-cmd --reload
     Открыть sysctl.confдля редактирования: 
     sudo nano /etc/sysctl.conf
     Затем добавьте следующую строку вверху файла: 
     net.ipv4.ip_forward = 1
     Наконец, перезапустите сетевую службу, чтобы переадресация IP вступила в силу: 
     sudo systemctl restart network.service
     С правилами маршрутизации и брандмауэра мы можем запустить службу OpenVPN на сервере. 
      

Шаг 6 - Запуск OpenVPN

  •  OpenVPN управляется как сервис systemd systemctl.
     Мы настроим OpenVPN для запуска при загрузке, чтобы вы могли подключаться к вашей VPN
     в любое время, пока ваш сервер работает.
     Для этого включите сервер OpenVPN, добавив его в systemctl:
     sudo systemctl -f enable openvpn@server.service
     Затем запустите службу OpenVPN:
     sudo systemctl start openvpn@server.service
     Дважды проверьте, что служба OpenVPN активна, с помощью
     следующей команды. Вы должны увидеть active (running)в выводе:
     sudo systemctl status openvpn@server.service   

Мы завершили настройку на стороне сервера для OpenVPN. Далее вы настроите свой клиентский компьютер и подключитесь к серверу OpenVPN.

Шаг 4 - Настройка клиента

Независимо от операционной системы вашего клиентского компьютера, ему потребуется локально сохраненная копия сертификата CA и ключ клиента и сертификат, сгенерированные на шаге 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 на вашем клиентском компьютере . Это файл конфигурации для клиента OpenVPN, рассказывающий, как подключиться к серверу:

  •   sudo nano client.ovpn
     Затем добавьте следующие строки в 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-адрес с your_server_ipIP-адреса вашего сервера; порт 1194может остаться прежним
  • Убедитесь, что пути к вашему ключу и файлам сертификатов правильные

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

Заключение

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

Хостинг провайдер © Digitbox