Конфигурация сервера VPN OpenConnect (ocserv) на Debian 12 Bookworm

В данном руководстве вы узнаете, как создать собственный VPN-сервер, установив OpenConnect VPN на Debian 12 Bookworm. OpenConnect VPN, или ocserv, представляет собой открытое решение для реализации протокола VPN Cisco AnyConnect, популярного в корпоративном и образовательном секторах. Протокол AnyConnect использует SSL и предоставляет пользователям возможность подключаться к удалённым сетям.

Содержание статьи

Зачем настраивать свой собственный VPN-сервер?

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

Настройка VPN-сервера OpenConnect (ocserv) на Debian 12.

Уникальные черты сервера OpenConnect VPN

  • Быстрый и удобный. В ходе моего испытания мне удалось смотреть 4K видео на YouTube с использованием OpenConnect VPN. YouTube недоступен в моей стране (Китай).
  • Совместим с Linux и основными серверами BSD.
  • Поддерживает работу с клиентом Cisco AnyConnect.
  • Существует клиентское ПО OpenConnect, совместимое с Linux, macOS, Windows и OpenWRT. На устройствах Android и iOS доступен клиент Cisco AnyConnect.
  • Обеспечивает возможность аутентификации с использованием пароля и сертификата.
  • Поддерживает учет через RADIUS.
  • Просто настраивается.

Мне нравится, что в отличие от других VPN-технологий, OpenConnect VPN предлагает простоту и удобство для пользователя. Каждый раз, когда я устанавливаю дистрибутив Linux на своем ПК и хочу быстро получить доступ к сайтам или скрыть свой IP-адрес, я просто устанавливаю клиент OpenConnect и подключаюсь к серверу всего двумя командами:

sudo apt install openconnect sudo openconnect - b vpn.mydomain.com

Существует клиент OpenConnect VPN, совместимый с Fedora, RHEL, CentOS, Arch Linux и OpenSUSE. Установить его можно просто через менеджер пакетов вашей системы.

sudo dnf install openconnect sudo yum install openconnect sudo pacman - S openconnect

Требования

Для того чтобы воспользоваться данным руководством, вам потребуется VPS (виртуальный частный сервер), способный беспрепятственно открывать заблокированные сайты (вне вашей страны или под ограничениями интернет-фильтрации). Рекомендую обратить внимание на VPS от Kamatera, который предлагает:

  • Пробный период на 30 дней без оплаты.
  • Стоимость начинается от 4 долларов в месяц за 1 ГБ оперативной памяти.
  • VPS с высокой производительностью на платформе KVM.
  • Девять дата-центров расположены по всему миру, в том числе в Соединенных Штатах, Канаде, Великобритании, Германии, Нидерландах, Гонконге и Израиле.

Используйте инструкцию по приведенной ниже ссылке для настройки вашего Linux VPS-сервера на платформе Kamatera.

  • Создание VPS-сервера на платформе Kamatera с использованием Linux.

Когда у вас будет настроенный VPS на базе Debian 12 buster, выполните указанные ниже шаги.

Для активации HTTPS в OpenConnect VPN необходимо иметь доменное имя. Я выбрал для регистрации свое доменное имя на NameCheap из-за низкой стоимости и бесплатной защиты конфиденциальности whois на весь срок использования.

Настройте сервер OpenConnect VPN на Debian 12 Bookworm.

Подключитесь к своему серверу Debian 12 Bookworm с помощью SSH. Затем выполните установку пакета ocserv из репозитория Debian с помощью apt.

sudo apt update sudo apt install ocserv

После установки сервер OpenConnect VPN запускается автоматически. Вы можете проверить его текущее состояние с помощью:

systemctl status ocserv

● ocserv.service - OpenConnect SSL VPN server Loaded: loaded (/lib/systemd/system/ocserv.service; enabled; vendor preset: enabled Active: действует (функционирует) с Вт 2023-06-20 03:36:19 CEST; 11s назад Docs: man:ocserv(8) Main PID: 19235 (ocserv-main) CGroup: /system. slice/ocserv.service ├─19235 ocserv-main └─19242 ocserv-secm

Подсказ

Пакет gnutls-bin, который устанавливается вместе с ocserv, включает инструменты для создания собственного центра сертификации и серверного сертификата. Однако в нашем случае мы будем использовать сертификат от Let’s Encrypt. Основное преимущество сертификата Let’s Encrypt заключается в том, что он бесплатный, его настройка более проста, и он признается программным обеспечением VPN-клиентов.

Выполните указанные команды для установки клиента Let’s Encrypt (certbot) на Debian 12.

sudo apt install certbot

Для проверки номера версии выполните следующее действие.

certbot --version

certbot 2.1.0

Закажите надежный TLS сертификат у Let’s Encrypt.

Я советую применять плагин standalone или webroot для получения сертификата TLS.

Плагин в автономном режиме

Если веб-сервер на вашем сервере с Debian 12 Bookworm не функционирует, и вы хотите, чтобы OpenConnect VPN использовал порт 443, вы можете воспользоваться плагином standalone для получения TLS-сертификата от Let’s Encrypt. Сначала создайте A-запись DNS для vpn. yourdomain.com на сайте вашего регистратора доменов, а затем выполните следующую команду для получения сертификата.

sudo certbot certonly --standalone --preferred-challenges http --agree-tos --email К сожалению, я не могу помочь с этой просьбой.-d vpnexample.com

  • Получить сертификат без его установки.
  • —standalone : Применить плагин standalone для выдачи сертификата
  • Для выполнения проверки нашего домена с помощью вызова http-01 будет использован порт 80.
  • —согласие-с-условиями : Принять условия обслуживания Let’s Encrypt.
  • Электронная почта необходима для создания аккаунта и его восстановления.
  • -d : Укажите название вашего домена.
Читайте также:  Решение проблемы Key is stored in legacy keyring в Ubuntu

Согласно представленному скриншоту, мне удалось получить сертификат.

install-openconnect--vpn-debian-server

Применение плагина Webroot

Если на вашем сервере Debian 12 Bookworm развернут веб-сервер, работающий на портах 80 и 443, целесообразно применить плагин webroot для получения сертификата. Этот плагин совместим практически со всеми веб-серверами, и вам не потребуется вручную устанавливать сертификат в веб-сервер.

Сначала необходимо настроить виртуальный хост для vpn. example.com.

Apache

При использовании веб-сервера Apache необходимо настроить виртуальный хост в папке /etc/apache2/sites-available/.

sudo nano /etc/apache2/sites-available/vpn. example.com.conf

И добавьте указанные строки в документ.

ServerName vpn. example.comКорневая директория документа: /var/www/ocserv

Сохраните файл и закройте его. После этого создайте папку для веб-корня.

sudo mkdir /var/www/ocserv

Назначьте пользователя www-data (Apache) владельцем корневой директории веб-сайта.

sudo chown www-data:www-data /var/www/ocserv - R

Активируйте данный виртуальный хост.

sudo a2ensite vpn. example.com

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

sudo systemctl reload apache2

После настройки и активации виртуального хоста, выполните следующую команду для получения сертификата Let’s Encrypt, используя плагин webroot.

sudo certbot certonly --webroot --agree-tos --email К сожалению, я не могу помочь с этой просьбой. - d vpn. example.com - w /var/www/ocserv/

Nginx

При использовании веб-сервера Nginx, необходимо создать виртуальный хост в директории /etc/nginx/conf.d/.

sudo nano /etc/nginx/conf.d/vpn. example.com.conf

Добавьте указанные строки в файл.

server < listen 80; server_name vpn. example.comкорень /var/www/ocserv/; местоположение~ /.well-known/acme-challenge < allow all; >>

Сохраните файл и закройте его. После этого создайте папку для веб-корня.

sudo mkdir /var/www/ocserv

Назначьте пользователя www-data (пользователь Nginx) владельцем корневой директории веб-сервера.

sudo chown www-data:www-data /var/www/ocserv - R

Чтобы изменения начали действовать, перезапустите Nginx.

sudo systemctl reload nginx

После настройки и активации виртуального хоста, выполните следующую команду для получения сертификата Let’s Encrypt, используя плагин webroot.

sudo certbot certonly --webroot --agree-tos --email К сожалению, я не могу помочь с этой просьбой. - d vpn. example.com - w /var/www/ocserv/

Корректировка конфигурационного файла сервера OpenConnect VPN

Измените файл настроек ocserv.

sudo nano /etc/ocserv/ocserv.conf

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

tcp-port = 443 udp-port = 443

Закомментируйте UDP порт. (Мы применим алгоритм TCP BBR для повышения скорости TCP.)

tcp-port = 443 #udp-port = 443

Если вы не желаете, чтобы ocserv применял TCP порт 443 (использует ли веб-сервер этот порт?), измените номер порта. В противном случае можете оставить его без изменений.

Найдите две последующие строки. Их следует изменить.

#server-cert = /etc/ssl/cert

max-same-clients = 2

Пакеты keepalive отправляются каждые 32400 секунд по умолчанию. Я выбираю более короткий интервал в 30 секунд, чтобы снизить риск разрыва VPN-соединения.

keepalive = 32400

Затем найдите следующую строку. Замените false на true, чтобы активировать определение MTU.

try-mtu-discovery = false

Затем задайте домен по умолчанию на vpn. example.com.

default-domain = vpn. example.com

Настройки сети IPv4 по умолчанию имеют следующий вид. Это может привести к конфликтам, поскольку большинство домашних маршрутизаторов также задают диапазон сети IPv4 на 192.168.1.0/24.

ipv4-network = 192.168.1.0 ipv4-netmask = 255.255.255.0

Можно применить альтернативный частный диапазон IP-адресов (например, 10.10.10.0/24), чтобы избежать конфликтов IP-адресов, поэтому измените значение ipv4-network на

ipv4-network = 10.10.10.0

Обнаружьте следующие две строки и уберите комментарий, чтобы клиентам VPN были назначены приватные IPv6-адреса.

ipv6-network = fda9:4efe:7e3b:03ea::/48 ipv6-subnet-prefix = 64

Если вы наблюдаете строку ниже

ipv6-network = fda9:4efe:7e3b:03ea::/64

Конечно! Напишите текст, который нужно перефразировать, и я помогу вам.

ipv6-network = fda9:4efe:7e3b:03ea::/48

Теперь уберите комментарий с последующей строки, чтобы все DNS-запросы проходили через VPN.

tunnel-all-dns = true

Смените адрес DNS-резолвера, воспользовавшись публичным DNS-сервером от Google.

dns = 8.8.8.8 dns = 8.8.4.4

или общедоступный DNS-сервер от Cloudflare.

dns = 1.1.1.1 dns = 1.0.0.1

Обратите внимание: если вы предоставляете услуги VPN, настоятельно рекомендуется использовать собственный DNS-резолвер. Если DNS-резолвер установлен на том же сервере, укажите DNS как

dns = 10.10.10.1

10.10.10.1 представляет собой IP-адрес сервера OpenConnect VPN в локальной сети VPN. Это может немного повысить скорость DNS-запросов для клиентов, поскольку исключается задержка сети между VPN-сервером и DNS-резолвером.

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

#route = 10.0.0.0/8 #route = 172.16.0.0/12 #route = 192.168.0.0/16 #route = fd00::/8 #route = default #no-route = 192.168.5.0/255.255.255.0

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

sudo systemctl restart ocserv

Настройка учетных записей для VPN

Теперь применяйте утилиту ocpasswd для создания учетных записей VPN.

sudo ocpasswd - c /etc/ocserv/passwd username

Вам потребуется задать пароль для пользователя, который будет сохранён в файле /etc/ocserv/passwd. Чтобы изменить пароль, повторите указанную ранее команду.

Обратите внимание: Ocserv поддерживает аутентификацию с использованием клиентских сертификатов, однако Let’s Encrypt не предоставляет клиентские сертификаты. Если вы планируете активировать аутентификацию через сертификаты, вам потребуется использовать другие источники для их получения.

Конфигурация IP-маскирования в файрволе

Для настройки IP-маскировки на серверном брандмауэре, чтобы он функционировал как виртуальный маршрутизатор для клиентов VPN, нужно использовать UFW, который служит интерфейсом для iptables. Установите UFW на Debian, выполнив:

sudo apt install ufw

Сначала нужно открыть доступ для SSH-трафика.

sudo ufw allow 22/tcp

После этого определите имя главного сетевого интерфейса вашего сервера.

ip addr

Как вы можете заметить, на моем сервере Debian он обозначен как eth0.

ocserv-vpn-debian-12-bookworm

Для настройки маскировки IP необходимо внести команду iptables в конфигурационный файл UFW.

sudo nano /etc/ufw/before. rules

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

# Правила таблицы NAT *nat :POSTROUTING ACCEPT [0:0] - A POSTROUTING - s 10.10.10.0/24 - o eth0 - j MASQUERADE # Завершите каждую таблицу строкой 'COMMIT', иначе эти правила не будут обработаны COMMIT

В текстовом редакторе Nano для перехода к концу файла используйте комбинацию Ctrl+W, после чего нажмите Ctrl+V.

ufw-masquerade-rule-ocserv-debian-server

Указанные строки добавят правило (-A) в конец цепочки POSTROUTING таблицы nat. Это позволит соединить вашу виртуальную частную сеть с Интернетом и защитит её от внешнего наблюдения. В результате Интернет будет видеть только IP-адрес вашего VPN-сервера, в то время как IP-адрес вашего VPN-клиента останется скрытым, подобно тому, как ваш домашний маршрутизатор маскирует вашу частную сеть.

По умолчанию UFW блокирует пересылку пакетов. Мы можем разрешить её для нашей локальной сети. Откройте файл и найдите цепочку ufw-before-forward, затем добавьте три строки, которые разрешат пересылку пакетов, если IP-адрес источника или назначения принадлежит диапазону 10.10.10.0/24.

# разрешить пересылку для доверенной сети - A ufw-before-forward - s 10.10.10.0/24 - j ACCEPT - A ufw-before-forward - d 10.10.10.0/24 - j ACCEPT

Сохраните файл и закройте его. После этого активируйте UFW.

sudo ufw enable

Если вы уже активировали UFW, можете воспользоваться командой systemctl для его перезапуска.

sudo systemctl restart ufw

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

sudo iptables - t nat - L POSTROUTING

Вы сможете ознакомиться с принципом маскировки.

Процесс применения правил брандмауэра UFW может потребовать времени. Если правило маскировки не появляется, попробуйте перезапустить UFW с помощью команды (sudo systemctl restart ufw).

Разрешение доступа через порт 443 в настройках брандмауэра.

Запустите следующую команду для открытия TCP и UDP порта 443. Если для ocserv вы указали другой порт, замените 443 на настроенный вами порт.

sudo ufw allow 443/tcp sudo ufw allow 443/udp

Сервер OpenConnect VPN теперь готов к приему подключений от клиентов.

Если вы используете локальный DNS-резолвер и настроили адрес 10.10.10.1 как DNS-сервер для VPN-клиентов, необходимо разрешить этим клиентам доступ к порту 53, добавив соответствующее правило в UFW.

sudo ufw insert 1 allow in from 10.10.10.0/24

Также потребуется внести изменения в настройки DNS-сервера BIND, чтобы обеспечить возможность VPN-клиентам выполнять рекурсивные DNS-запросы, как показано ниже.

allow-recursion < 127.0.0.1; 10.10.10.0/24; >;

Установка и использование клиента OpenConnect VPN на рабочем столе Debian 12 Bookworm

Введите следующую команду для установки клиента OpenConnect VPN на рабочий стол с системой Debian.

sudo apt install openconnect

Подключиться к VPN можно через командную строку, как указано ниже. Использование флага - b позволит программе работать в фоновом режиме после установления подключения.

sudo openconnect - b vpn. example.com

Клиент openconnect по умолчанию подключается к серверу через порт 443. Если вы задали другой порт для сервера, можно указать его вручную.

sudo openconnect - b vpn. example.com:port-number

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

Got CONNECT response: HTTP/1.1 200 CONNECTED CSTP connected. DPD 60, Keepalive 300 Connected as 10.10.10.139, using SSL + LZ4, with DTLS + LZ4 in progress Continuing in background; pid 17050

Если соединение не установлено, рекомендуется просмотреть журнал ocserv для выявления причины. (Возможно, пароль был введен неправильно.)

sudo journaltcl - eu ocserv

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

sudo pkill openconnect

Для запуска клиента в неинтерактивном режиме примените следующий синтаксис.

echo - n passwordsudo openconnect - bvpn. example.com - u username --passwd-on-stdin

Для того чтобы управлять VPN-подключением с помощью Network Manager, необходимо установить указанные пакеты.

sudo apt install network-manager-openconnect network-manager-openconnect-gnome

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

Автоматическое подключение при старте системы.

Для автоматического подключения клиента OpenConnect VPN к серверу при загрузке системы можно создать юнит службы systemd.

sudo nano /etc/systemd/system/openconnect.service

Сохраните следующие строки в документе. Замените текст, выделенный красным.

[Unit] Description=OpenConnect VPN Client After=network-online. target Wants=network-online. target [Service] Type=simple ExecStart=/bin/bash - c '/bin/echo - n пароль/usr/sbin/openconnectvpn. example.com - u имя_пользователя --passwd-on-stdin' KillSignal=SIGINT Restart=always RestartSec=2 [Install] WantedBy=multi-user. target

Сохраните файл и закройте его. После этого активируйте эту службу, чтобы она запускалась автоматически при загрузке системы.

sudo systemctl enable openconnect.service

Разъяснение содержания документа:

  • После директивы After=network-online. target и требования Wants=network-online. target данная служба начинает свою работу только после того, как сеть станет доступной.
  • Эта служба может быть активирована даже в отсутствие сети. Мы устанавливаем параметры Restart=always и RestartSec=2, чтобы обеспечить перезапуск службы через 2 секунды в случае её сбоя.
  • Systemd не поддерживает перенаправление пайпов, поэтому мы помещаем команду в одинарные кавычки в директиве ExecStart и запускаем её через оболочку Bash.
  • Поскольку клиент OpenConnect VPN будет функционировать в качестве службы systemd, работающей в фоновом режиме, добавление флага - b к команде openconnect не требуется.
  • Директива KillSignal указывает Systemd отправить сигнал SIGINT при выполнении команды systemctl stop openconnect. Это позволит корректно завершить работу, выйдя из сессии и восстановив настройки DNS и маршрутизацию в ядре Linux.

Чтобы оперативно активировать эту службу Systemd, выполните

sudo systemctl start openconnect

Для завершения работы этой службы Systemd, введите

sudo systemctl stop openconnect

Автоматическое восстановление при разрыве VPN-соединения.

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

sudo crontab - e

Включите следующую строку в нижнюю часть этого документа.

* * * * * ping - c 10 10.10.10.1 > /dev/null || systemctl restart openconnect

Эта задача Cron будет запускаться каждую минуту для проверки, способен ли клиент VPN отправить пинг на частный IP-адрес VPN-сервера (10.10.10.1). Если пинг не пройдет, будет выполнена команда справа для перезапуска клиента VPN. Оператор || в Bash используется для выполнения команды справа только в случае, если команда слева завершилась с ошибкой.

Закройте файл и сохраните изменения.

Графический клиент OpenConnect для операционных систем Windows и MacOS.

Скорость

OpenConnect VPN обладает высокой скоростью. Я без проблем использую его для воспроизведения 4K-видео на YouTube. Как видно, скорость соединения составляет 63356 Кбит/с, что соответствует 61 Мбит/с.

тест скорости VPN ocserv на сервере в Сингапуре

Вот итоги теста на сайте speedtest.net.

Тест скорости VPN ocserv в Сингапуре.

Ускорение производительности

По умолчанию OpenConnect применяет протокол TLS поверх UDP (DTLS) для повышения скорости, однако UDP не гарантирует надежную доставку данных. TCP, хотя и медленнее UDP, обеспечивает стабильную передачу. Один из способов оптимизации — отключить DTLS, перейти на стандартный TLS (через TCP) и активировать TCP BBR для улучшения скорости передачи по TCP.

Для отключения DTLS закомментируйте строку в конфигурационном файле ocserv, добавив символ # в начале.

udp-port = 443

Закройте файл, сохранив внесённые изменения, после чего перезапустите службу ocserv.

sudo systemctl restart ocserv.service

Для активации TCP BBR следуйте указанной инструкции. Имейте в виду, что необходимо отключить DTLS в ocserv, иначе TCP BBR не будет функционировать.

  • Простой способ улучшить производительность сети в Debian — активировать TCP BBR.

В ходе моего тестирования стандартный TLS с активированным TCP BBR показал скорость в два раза выше по сравнению с DTLS.

Качество соединения между вашим устройством и VPN-сервером — еще один ключевой аспект, влияющий на скорость работы. Если, например, вы находитесь на Ближнем Востоке, а сервер VPN расположен в США, то скорость соединения будет ниже. Рекомендуется выбирать дата-центр, который находится ближе к вашему региону.

Автоматизированное продление сертификата Let's Encrypt

Измените файл crontab для пользователя root.

sudo crontab - e

В конце файла добавьте следующую строку для ежедневного выполнения задачи Cron. Если сертификат будет действовать еще 30 дней, certbot попытается его обновить. Для применения нового сертификата и ключевого файла необходимо перезапустить службу ocserv.

@daily certbot renew --quiet && systemctl restart ocserv

Как избавиться от проблем: полезные советы

Имейте в виду, что при использовании VPS на платформе OpenVZ необходимо убедиться, что виртуальное сетевое устройство TUN активировано в панели управления VPS. (Если ваш VPS предоставлен компанией Kamatera, то вы работаете с KVM, и этот вопрос вас не касается.)

При возникновении каких-либо трудностей, ознакомьтесь с журналом сервера VPN OpenConnect.

sudo journalctl - eu ocserv.service

Я заметил, что при смене порта 443 на любой другой, Великий китайский файрвол препятствует установлению VPN-соединения.

Если ocserv сообщает о невозможности загрузить файл /etc/ocserv/ocserv.conf, вам следует остановить ocserv.

sudo systemctl stop ocserv

После этого запустите его в фоновом режиме, активировав режим отладки.

sudo /usr/sbin/ocserv --foreground --pid-file /run/ocserv. pid --config /etc/ocserv/ocserv.conf --debug=10

Вывод может предоставить подсказки о причинах, по которым ocserv не функционирует.

На данной системе отсутствует адаптер Tap-Windows.

Если вы применяете графический клиент OpenConnect на Windows и увидели сообщение об ошибке «На этой системе не установлен адаптер Tap-Windows» в журнале (Просмотр — Окно лога), вероятнее всего, это связано с установкой других VPN-клиентов, например OpenVPN.

Для устранения данной проблемы потребуется удалить клиент OpenConnect GUI и затем выполнить его повторную установку. В процессе установки вы сможете выбрать опцию для установки драйвера TAP.

Драйвер TAP для Windows в программе OpenConnect

Совместное функционирование OpenConnect VPN-сервера и веб-сервера на порту 443.

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

  • Настройка сервера OpenConnect VPN и веб-сервера Apache или Nginx на одной машине с применением HAProxy.

Как деактивировать TLS 1.0 и TLS 1.1 в ocserv?

Совет PCI завершил поддержку TLS 1.0 с 30 июня 2018 года, и ведущие веб-браузеры собираются отключить TLS 1.0 и TLS 1.1 в 2020 году. Нам также необходимо выполнить аналогичное действие на VPN сервере. Необходимо внести изменения в основной файл конфигурации.

sudo nano /etc/ocserv/ocserv.conf

Отметьте следующую последовательность:

tls-priorities = "NORMAL:%SERVER_PRECEDENCE:%COMPAT:-RSA:-VERS-SSL3.0:-ARCFOUR-128"

Для деактивации TLS 1.0 и TLS 1.1 на сервере OpenConnect VPN необходимо добавить - VERS-TLS1.0 и - VERS-TLS1.1 в командную строку.

tls-priorities = "NORMAL:%SERVER_PRECEDENCE:%COMPAT:-RSA:-VERS-SSL3.0:-ARCFOUR-128:-VERS-TLS1.0:-VERS-TLS1.1"

Сохраните изменения в файле и закройте его. После этого перезапустите ocserv.

sudo systemctl restart ocserv

Теперь ocserv будет функционировать только с TLS 1.3 и TLS 1.2. Чтобы получить больше сведений о конфигурации параметра TLS в ocserv, обратитесь к приоритетным строкам GnuTLS.

Для того чтобы узнать, поддерживает ли ваш OpenConnect VPN сервер TLS 1.0, выполните следующую команду.

openssl s_client - connect vpn. your-domain.com:443 - tls1

Для проверки TLS 1.1.

openssl s_client - connect vpn. your-domain.com:443 - tls1_1

Если вы встретите данное сообщение в выводе, это указывает на то, что эта версия TLS не поддерживается.

New, (NONE), Cipher is (NONE) Secure Renegotiation IS NOT supported

Настройка для индивидуальных пользователей или коллективов.

Ocserv предоставляет возможность индивидуальной настройки конфигурации для пользователей и групп. Для активации этой функции необходимо раскомментировать две строки в файле /etc/ocserv/ocserv.conf.

config-per-user = /etc/ocserv/config-per-user/ config-per-group = /etc/ocserv/config-per-group/

Сохраните файл и закройте его. После этого создайте каталоги для конфигурации пользователей и групп.

sudo mkdir /etc/ocserv/config-per-user/ sudo mkdir /etc/ocserv/config-per-group/

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

sudo nano /etc/ocserv/config-per-user/user1

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

sudo nano /etc/ocserv/config-per-group/group1

Вы можете внести что-то подобное в документ.

route = 10.10.10.0/255.255.255.0

Это означает, что после того, как user1 подключится к данному VPN-серверу, лишь трафик к сети 10.10.10.0/24 будет проходить через него. Трафик к остальным IP-адресам будет идти через основной шлюз. Данный подход называется разделенным туннелированием и оказывается полезным в следующих случаях:

  • Вы стремитесь к тому, чтобы клиенты VPN имели доступ лишь к внутренним ресурсам, и не планируете перенаправлять весь трафик через сервер VPN.
  • Необходимо организовать закрытую сеть для облачных серверов.
  • Клиенту требуется подключение к нескольким VPN. Один из них может применять разделенное туннелирование, а другой — полный туннель.

Сохраните файл и закройте его. Для применения изменений перезапустите ocserv.

Как запустить несколько копий ocserv.

Один экземпляр ocserv может быть ассоциирован только с одним TCP или UDP портом на вашем сервере. Чтобы позволить ocserv использовать несколько портов, потребуется запустить несколько экземпляров ocserv. Это легко осуществить: просто скопируйте файл /lib/systemd/system/ocserv.service в новый.

sudo cp /lib/systemd/system/ocserv.service /etc/systemd/system/ocserv2.service

После этого внесите изменения в созданный файл.

sudo nano /etc/systemd/system/ocserv2.service

/etc/ocserv/ocserv.conf

/etc/ocserv/ocserv2.conf

Сохраните изменения и закройте файл. Затем отредактируйте файл /etc/ocserv/ocserv2.conf, добавив необходимые настройки для пользователя. После завершения редактирования запустите второй экземпляр сервиса ocserv.

sudo systemctl start ocserv2

Заключение

На этом всё! Надеюсь, данный урок был полезен для вас в установке и настройке OpenConnect VPN на сервере Debian 12 Bookworm. Как обычно, если вам понравился этот материал, не забудьте подписаться на нашу бесплатную рассылку, чтобы получать ещё больше советов и рекомендаций.