OpenVPN — это свободная реализация технолгии частной сети (VPN) с открытым исходым кодом, созданная, Джеймсом Йонаном. Она позволяет устанавливать защищённые соединения между  компьютерами, находящимися за NAT и сетевыми экранами, без необходимости изменения их настроек. OpenVPN использует шифрование и аутентификацию для обеспечения конфиденциальности и целостности данных. Программа доступна для различных операционных систем, включая Android, iOS, Linux, macOS, Windows и другие.

 

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

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

 

 

 Создадим новую директорию

 

 

Далее создадим символическую ссылку

 

Также можно скопировать файлы пакета

 

 

 

Создание PKI

 

Для инициализации PKI директории с помощью утилиты easyrsa выполним следующий шаги:

 

Перейдем в созданную дерикторию easy-rsa

 

 

Выполним команду для инициализации PKI директории

 

 

 

Далее переходим в каталог /etc/openvpn/easy-rsa/pki/ и создаем файл 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    "Moscow"
set_var EASYRSA_REQ_CITY        "Moscow"
set_var EASYRSA_REQ_ORG         "MyOrg"
set_var EASYRSA_REQ_EMAIL       "openvpn@mydomain.net"
set_var EASYRSA_REQ_OU          "CA"
set_var EASYRSA_KEY_SIZE        2048
set_var EASYRSA_ALGO            rsa
set_var EASYRSA_CA_EXPIRE       7500
set_var EASYRSA_CERT_EXPIRE     365
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/openss-easyrsa.cnf"
set_var EASYRSA_DIGEST          "sha256"

 

Cоздадим сертификаты CA и сервера

 

Перейдем в директорию /etc/openvpn/easy-rsa

 

 

И создадим CA сертификат

 

Важно! При создании CA-сертификата скрипт запросит ввод пароля минимум из 4 символов. Введенный пароль нужно запомнить.

 

 

Теперь создадим ключ сертификата сервера

 

 

 

Скопируем полученый ключ в /etc/openvpn/

 

И подпишем его

Cкрипт поинтересуется в нашей уверенности, отвечаем “Yes”. Затем запросит пароль, который был указан при создании CA-сертификата.

Проверим, подписался ли сертификат:

 

 

Скопируем подписанный сертификат

 

 

Создадим сертификат Диффи-Хеллман.

 

 Протокол Диффи — Хеллмана — это криптографический метод, который позволяет двум или более сторонам создать общий секретный ключ, обмениваясь информацией по незащищённому каналу связи. Этот ключ может быть использован для шифрования и расшифровки сообщений с помощью симметричных алгоритмов.
В основе протокола лежит идея неполного обмена ключами, предложенная Ральфом Мерклом и реализованная Диффи и Хеллманом. Каждый участник генерирует свой закрытый ключ и использует его вместе с открытыми параметрами для вычисления открытого ключа. Затем участники обмениваются открытыми ключами и используют их вместе со своими закрытыми ключами и общими параметрами для вычисления общего секретного ключа.
Протокол Диффи — Хеллмана применяется в различных областях, включая VPN, SSH, TLS и другие протоколы защищённой коммуникации. Он обеспечивает безопасный обмен ключами между сторонами, не требуя предварительного обмена ключами или доверенной третьей стороны.#

 

 

 

 

Cоздан файл dh.pem, а нам нужен dh2048.pem. Переименуем его при копировании

 

 

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

 

Создадим дополнительный ключ сервера ta.key:

 

Скопируем дополнительный ключ

 

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

 

Создадим каталог client

Процесс создания пользовательского сертификата идентичен созданию сертификата сервера

 

Можно создать пользовательский сертификат с паролем

 

Далее подпишем пользовательский сертификат

 

 

 

ВАЖНО! При подписании пользовательских сертификатов необходимо убедиться, что CommonName уникален для каждого сертификата. В противном случае, при подключении клиента с сертификатом с неуникальным CommonName другие клиенты могут потерять доступ к сети Интернет.

 

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

 

 

Скопируем CA сертификат (ca.crt), пользовательский сертификат (ligtech.crt), пользовательский ключ (ligtech.key) и дополнительный ключ сервера ta.key в каталог client (ca.crt скопируем еще в /etc/openvpn/)

 

 

 

 

 

 

 

Настройка OpenVPN

Cкопируем файл server.conf

 

 

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

 

 

;local a.b.c.d
port 1194
;proto tcp
proto udp
;dev tap
dev tun
;dev-node MyTap
ca ca.crt
cert server.crt
key server.key  # This file should be kept secret
dh dh2048.pem
topology subnet
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist /var/log/openvpn/ipp.txt
;server-bridge 10.8.0.4 255.255.255.0 10.8.0.50 10.8.0.100
;server-bridge
;push "route 192.168.10.0 255.255.255.0"
;push "route 192.168.20.0 255.255.255.0"
;client-config-dir ccd
;route 192.168.40.128 255.255.255.248
;client-config-dir ccd
;route 10.9.0.0 255.255.255.252
;learn-address ./script
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 1.1.1.1"
;client-to-client
;duplicate-cn
keepalive 10 120
tls-auth ta.key 0 # This file is secret
cipher AES-256-CBC
;compress lz4-v2
;push "compress lz4-v2"
comp-lzo
;max-clients 100
user openvpn
group openvpn
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
log         /var/log/openvpn/openvpn.log
log-append  /var/log/openvpn/openvpn.log
verb 4
;mute 20
explicit-exit-notify 1

Настраиваем маршрутизацию

 

Чтобы настроить параметры IP-передачи сервера OpenVPN, отличные от стандартных, вам потребуется открыть файл  и добавить следующую строку в конец файла:

/etc/sysctl.conf.

 

 

net.ipv4.ip_forward = 1

 

 

Сохраните файл и закройте его после завершения.

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

 

 

Output
net.ipv4.ip_forward = 1

 

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

Настройка брандмауэра

 

 

Строка после слова «dev» в этой команде — это ваш публичный интерфейс. Например, в этом результате показан интерфейс с именем eth0

Разрешим UFW перенаправление пакетов по умолчанию. Для этого откройте файл /etc/default/ufw

 

Найдите в файле строку DEFAULT_FORWARD_POLICY и измените значение с DROP на ACCEPT:

 

 

Далее добавляем конфигурацию в /etc/ufw/before.rules

 

 

# START OPENVPN RULES
# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Allow traffic from OpenVPN client to eth0 (change to the interface you discovered!)
-A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE
COMMIT
# END OPENVPN RULES

 

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

 

 

 

 

Откроем трафик UDP на порту 1194

 

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

 

 

 

Запуск OpenVPN

 

Активируем службу

 

 

Запустим службу

 

 

Проверим, что служба работает

 

 

 

 

 

От root

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *