Тех. поддержка

8 800 5057581

24/7
Меню

Установка и настройка сервера OpenVPN на CentOS 7

 

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

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

yum install epel-release -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/

Будем использовать редактор nano, установим его:

yum install nano

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

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

nano vars

Добавляем содержимое файла (вы можете его исправить под себя):

 

set_var EASYRSA "$PWD"

set_var EASYRSA_PKI "$EASYRSA/pki"

set_var EASYRSA_DN "cn_only"

set_var EASYRSA_REQ_COUNTRY "RU"

set_var EASYRSA_REQ_PROVINCE "MSK"

set_var EASYRSA_REQ_CITY "MSK"

set_var EASYRSA_REQ_ORG "IT-Company"

set_var EASYRSA_REQ_EMAIL "admin@server.vpn.ru"

set_var EASYRSA_REQ_OU "IT department"

set_var EASYRSA_KEY_SIZE 4096

set_var EASYRSA_ALGO rsa

set_var EASYRSA_CA_EXPIRE 7500

set_var EASYRSA_CERT_EXPIRE 3650

set_var EASYRSA_NS_SUPPORT "no"

set_var EASYRSA_NS_COMMENT "CERTIFICATE AUTHORITY"

set_var EASYRSA_EXT_DIR "$EASYRSA/x509-types"

 set_var EASYRSA_SSL_CONF "$EASYRSA/openssl-1.0.cnf"

set_var EASYRSA_DIGEST "sha512"

 

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

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

 ./easyrsa init-pki

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

./easyrsa build-ca

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

 

 

 

 

Создадим ключ сервера (название сервера server.vpn.ru, опция nopass — отключение пароля для server.vpn.ru):

./easyrsa gen-req server.vpn.ru nopass

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

 

Подпишем ключ server.vpn.ru используя наш CA-сертификат:

./easyrsa sign-req server server.vpn.ru

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

 

 

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

 

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

openssl verify -CAfile pki/ca.crt pki/issued/server.vpn.ru.crt

pki/issued/server.vpn.ru.crt: OK

 

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

  1. Корневой сертификат расположен: ‘pki/ca.crt’
  2. Закрытый ключ сервера расположен: ‘pki/private/server.vpn.ru.key’
  3. Сертификат сервера расположен: ‘pki/issued/server.vpn.ru.crt’

 

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

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

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

./easyrsa gen-req admin1 nopass

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

./easyrsa sign-req client admin1

 

 

 

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

 

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

./easyrsa gen-dh

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

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

openvpn --genkey --secret ta.key

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

./easyrsa gen-crl

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

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

 

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

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

cp pki/ca.crt /etc/openvpn/server/
cp pki/issued/server.vpn.ru.crt /etc/openvpn/server/
cp pki/private/server.vpn.ru.key /etc/openvpn/server/
cp pki/dh.pem /etc/openvpn/server/
cp ta.key /etc/openvpn/server/
cp pki/crl.pem /etc/openvpn/server/

Сертификаты клиента:

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

 

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

 

# Указываем порт, протокол и устройство

port 1194

proto udp

dev tun

# Указываем пути к сертификатам сервера

ca /etc/openvpn/server/ca.crt

cert /etc/openvpn/server/server.vpn.ru.crt

key /etc/openvpn/server/server.vpn.ru.key

#Пути до CRL и DH ключей

dh /etc/openvpn/server/dh.pem

crl-verify /etc/openvpn/server/crl.pem

# Указываем настройки IP сети, адреса из которой будет будут получать VPN клиенты

server 15.10.2.0 255.255.255.0

push "redirect-gateway def1"

# Указываем назначаемые DNS сервера

push "dhcp-option DNS 77.88.8.8"

push "dhcp-option DNS 8.8.4.4"

# Разрешить подключаться разным клиентам, с одинаковым ключем

duplicate-cn

# TLS защита

tls-auth /etc/openvpn/server/ta.key 0

cipher AES-256-CBC

tls-version-min 1.2

tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256

auth SHA512

auth-nocache

# Другая конфигурация

keepalive 20 60

persist-key

persist-tun

comp-lzo yes

daemon

user nobody

group nobody

# Путь до лог файла

log-append /var/log/openvpn.log

verb 3 

 

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

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

 

Используем iptables, выполнив следующие команды:

yum install iptables-services -y

iptables -t nat -A POSTROUTING -s 15.10.2.0/24 -o eth0 -j MASQUERADE

iptables -A INPUT -p tcp --destination-port 1194 -j ACCEPT

 

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

systemctl start openvpn@server

systemctl enable openvpn@server

Проверим настройки Ip сетевого интерфейса:

ip a

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

 

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

 

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

Далее нам необходимо создать на локальном компьютере файл client.ovpn и добавил в него следующее содержимое:

 

client

dev tun

proto udpremote <Ip вашего сервера> 1194

resolv-retry infinite

nobind

block-outside-dns

persist-key

persist-tun

mute-replay-warnings

remote-cert-tls server

tls-client

auth SHA512

tls-auth "C:\\Program Files\\OpenVPN\\config\\ta.key" 1

remote-cert-eku "TLS Web Server Authentication"

ca "C:\\Program Files\\OpenVPN\\config\\ca.crt"

cert "C:\\Program Files\\OpenVPN\\config\\admin1.crt"

key "C:\\Program Files\\OpenVPN\\config\\admin1.key"

cipher AES-256-CBC

comp-lzo

verb 3

 

И поместить в локальную папку

 C:\Program Files\OpenVPN\config\

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

Для этого используем приложение WinSCP (SPPTP). Скачать приложение можно на официальном сайте https://winscp.net/eng/download.php.

 

 

Вот так должна выглядеть конечная директория C:\Program Files\OpenVPN\config\:

 

 

 

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