Как настроить сервер OpenConnect VPN

Иметь виртуальную частную сеть (VPN) – это обязательно в этой эпохе технологий. VPN становятся все более важными для личного использования, особенно для бизнеса и предприятий. И если вы все еще решаете, на какое решение VPN поставить, почему бы не рассмотреть VPN OpenConnect?

VPN OpenConnect – это бесплатное решение VPN с производительностью и функциями корпоративного уровня. И в этом руководстве вы узнаете, как настроить и подключиться к серверу VPN OpenConnect (ocserv).

Читайте дальше и держите подальше от вашей сети зловредные сущности!

Предварительные требования

Это руководство включает практические демонстрации. Чтобы следовать за ним, убедитесь, что у вас есть следующее:

  • A Linux server running Debian- This tutorial uses a Debian 11 Bullseye with hostname ocserv-debian.
  • Административный пользователь или пользователь без root-прав, но с sudo/root-правами.
  • A domain name pointed to your Linux server IP address – This tutorial uses a domain name vpn.atadomain.io.
  • A client machine like Windows 10 or Linux Desktop – This tutorial uses a Windows 10 machine.

Установка сервера VPN OpenConnect

Сервер VPN OpenConnect – это сервер VPN на основе SSL с открытым исходным кодом для Linux, доступный на большинстве дистрибутивов Linux, таких как Debian, Ubuntu, RHEL/CentOS и Fedora.

Сервер VPN OpenConnect поддерживает большинство клиентов от настольных компьютеров до мобильных устройств (Android и iOS). Также сервер VPN OpenConnect поддерживает несколько бэкендов аутентификации, таких как Radius, OpenID, Kerberos и Smart Card.

Но прежде чем воспользоваться этими возможностями, вам нужно установить сервер VPN OpenConnect следующим образом:

1. Подключитесь по SSH к вашему серверу и выполните следующую команду apt update, чтобы обновить и обновить индекс пакетов. Эта команда гарантирует, что у вас есть последняя информация о пакете.

sudo apt update
Updating the package repository

2. Затем выполните следующую команду apt install для установки пакета ocserv.

sudo apt install ocserv -y

После завершения установки новый сервис systemd под названием ocserv будет запущен и

Installing the OpenConnect VPN Server

3. Теперь выполните следующие команды systemctl, чтобы убедиться, что сервис ocserv работает.

# Проверка включенности службы ocserv
sudo systemctl is-enabled ocserv
# Проверка работы службы ocserv
sudo systemctl status ocserv

Как видно из вывода, статус службы ocserv включен и работает.

Verifying the ocserv service is enabled and running

Генерация SSL/TLS-сертификатов

Установив OpenConnect VPN Server, следующим шагом является обеспечение безопасного подключения к OpenConnect VPN Server. Как? Первый шаг – создание SSL/TLS-сертификатов через Certbot и LetsEncrypt.

Но прежде чем генерировать сертификаты, убедитесь, что у вас есть адрес электронной почты для регистрации в Let’s Encrypt, и имя домена указано на IP-адресе сервера Debian.

Для генерации сертификатов SSL/TLS:

1. Запустите следующую команду для установки certbot на вашем сервере Linux.

sudo apt install certbot -y
Installing Certbot

2. Затем выполните нижеприведенную команду certbot, чтобы сгенерировать сертификаты SSL/TLS. Убедитесь, что вы измените адрес электронной почты ([email protected]) и имя домена (vpn.atadomain.io) соответственно.

sudo certbot certonly --standalone --preferred-challenges http --agree-tos --no-eff --email [email protected] -d vpn.atadomain.io
Generating SSL/TLS certificates from LetsEncrypt

3. Наконец, выполните следующую команду, чтобы проверить, что сгенерированные сертификаты SSL/TLS существуют в вашем директории домена.

ls /etc/letsencrypt/live/vpn.atadomain.io

Если успешно, вы увидите публичные (fullchain.pem) и приватные (privkey.pem) ключи, как показано ниже.

Verifying the SSL/TLS certificates exist

Настройка сервера VPN OpenConnect

Даже имея сертификаты SSL/TSL в вашем распоряжении, они просто лежат без дела, пока вы не настроите сервер VPN OpenConnect. Вам нужно изменить конфигурацию сервера VPN OpenConnect по умолчанию (/etc/ocserv/ocserv.conf) следующим образом:

  • Измените метод аутентификации по умолчанию.
  • Отключите UDP на сервере VPN OpenConnect.
  • Измените сертификаты SSL/TLS по умолчанию.
  • Настройте имя домена и внутреннюю сеть или IP-адрес для клиентов.

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

1. Сначала выполните команду cp ниже, чтобы создать резервную копию конфигурации сервера OpenConnect VPN (ocserv.conf) в файле ocserv.conf.orig, хранящемся в каталоге /etc/ocserv.

sudo cp /etc/ocserv/ocserv.conf /etc/ocserv/ocserv.conf.orig

2. Затем откройте конфигурацию сервера OpenConnect VPN (/etc/ocserv/ocserv.conf) с помощью вашего предпочтительного редактора.

3. Измените значение параметра auth на plain[passwd=/etc/ocserv/ocpasswd], как показано ниже. Это заменяет стандартную аутентификацию с использованием файлов паролей.

auth = "plain[passwd=/etc/ocserv/ocpasswd]"
Changing the default authentication to a password file

4. Теперь поставьте символ # перед параметром udp-port, чтобы отключить стандартные соединения UDP.

Вы будете использовать OpenConnect VPN только с протоколом TCP, что позволит увеличить скорость за счет параметров ядра.

tcp-port = 443
#udp-port = 443
Disabling the UDP support

5. Замените путь к файлу сертификата в параметре server-cert на открытый ключ, а параметр server-key на закрытый ключ.

server-cert = /etc/letsencrypt/live/vpn.atadomain.io/fullchain.pem
server-key = /etc/letsencrypt/live/vpn.atadomain.io/privkey.pem
Changing the SSL/TLS certificate files path

6. Измените значение параметра try-mtu-discovery на true, чтобы включить обнаружение MTU. Это повысит скорость и производительность сервера VPN OpenConnect.

try-mtu-discovery = true
Enabling MTU discovery

7. Затем введите имя домена для сервера VPN OpenConnect в параметр default-domain и измените стандартный внутренний IP-адрес в параметре ipv4-network.

В этом примере клиенты VPN будут использовать внутреннюю сеть 10.11.0.0/24.

default-domain = vpn.atadomain.io
ipv4-network = 10.11.0.0
Setting up the default domain and internal network for VPN clients

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

#route = 10.0.0.0/8
#route = 172.16.0.0/12
#route = 192.168.0.0/16
#route = fd00::/8
#route = default
Disabling the default route gateway

9. Теперь выполните следующие команды, чтобы перезапустить службу ocserv, применить изменения и перечислить все открытые порты (ss) на вашей системе.

# Перезапустите службу ocserv и примените изменения
sudo systemctl restart ocserv
# Перечислить все открытые порты
ss -tulpn | grep ocserv

Если сервер VPN OpenConnect работает, вы увидите порт 443 в состоянии LISTEN и используемый службой ocserv, как показано ниже.

Checking the ocserv port

Добавление пользователей на сервер VPN OpenConnect

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

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

Выполните следующую команду ocpasswd, чтобы создать нового пользователя. При запросе введите новый пароль для пользователя и повторите его. В этом руководстве выбрано имя пользователя atauser, но вы можете использовать своё собственное.

После создания пользователя будет также создан файл пароля (/etc/ocserv/ocpasswd).

sudo ocpasswd -c /etc/ocserv/ocpasswd atauser
Creating an OpenConnect user

Теперь выполните следующую команду cat, чтобы проверить детали файла пароля (/etc/ocserv/ocpasswd).

cat /etc/ocserv/ocpasswd
Checking the password file’s details

Добавление правил брандмауэра UFW для открытия важных портов

На системе Debian используется брандмауэр IPTables по умолчанию, для настройки которого требуется глубокое понимание сетей. Почему бы не упростить процесс? В этом руководстве вы установите и настроите UFW как брандмауэр по умолчанию.

1. Выполните следующую команду для установки UFW с автоматическим принятием всех запросов (-y)

sudo apt install ufw -y
Installing UFW

2. После установки UFW выполните следующие команды ufw, чтобы открыть важные порты для корректной работы сервера OpenConnect VPN.

# Добавьте сервис OpenSSH, работающий на порту 22.
sudo ufw allow OpenSSH
# Добавьте порт 80 для обновления сертификатов LetsEncrypt,
# и порт 443 для использования сервером VPN OpenConnect.
sudo ufw allow 80,443/tcp
# Запустите и включите UFW.
sudo ufw enable

При запросе введите Y и нажмите Enter, чтобы выполнить операцию, как показано ниже.

Adding firewall rules to open ports

3. Наконец, выполните следующую команду, чтобы проверить статус UFW и убедиться, что UFW работает.

sudo ufw status

Ниже приведен вывод активного статуса UFW и всех добавленных правил брандмауэра.

Checking the UFW status and listing all firewall rules

Включение перенаправления портов

При запущенном сервере VPN вы должны направлять трафик извне на ваш сервер, включив перенаправление портов. Вы разрешите перенаправление портов на вашем сервере Debian с помощью параметров ядра.

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

Выполните следующую команду, которая не выводит информацию на терминал, но создает новый файл под названием /etc/sysctl.d/60-ocserv.conf. Этот файл содержит параметры ядра для включения перенаправления портов в вашей системе.

cat > /etc/sysctl.d/60-ocserv.conf << EOF
net.ipv4.ip_forward = 1
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr
EOF

Теперь выполните следующую команду sysctl, чтобы применить новые параметры ядра и включить перенаправление портов.

sudo sysctl -p /etc/sysctl.d/60-ocserv.conf
Enabling port forwarding

Настройка NAT с UFW

Включение перенаправления портов – это только один из первых шагов. В этот раз вам необходимо обеспечить возможность подключения клиентов VPN к интернету или определенным сетям через сервер VPN OpenConnect. Как? Путем настройки NAT через UFW.

Для настройки NAT с использованием UFW для сервера OpenConnect VPN:

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

ip a

В данном примере интерфейс eth1 будет шлюзом NAT для клиентов VPN.

Checking available interfaces

2. Затем откройте конфигурацию UFW (/etc/ufw/before.rules) с использованием вашего предпочтительного редактора и добавьте следующие строки перед опцией *filter. Эти настройки будут выполнять NAT для пользователей VPN (указать исходный интерфейс) или внутренней сети к интерфейсу eth1.

Не забудьте изменить подсеть (10.11.0.0/24) на сети клиентов VPN и интерфейс (eth1) на ваш сетевой интерфейс.

# NAT для сервера OpenConnect VPN
# с клиентской сетью 10.11.0.0/24
# на интерфейс eth1
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.11.0.0/24 -o eth1 -j MASQUERADE
COMMIT
Configuring NAT via UFW

3. Добавьте следующие строки ниже раздела ok icmp code for FORWARD опций ufw-before-forward, сохраните файл и выйдите из редактора.

Эти настройки позволяют пересылать (исходный и конечный пункты) сети клиентов VPN.

# разрешить пересылку сети клиентов VPN
-A ufw-before-forward -s 10.11.0.0/24 -j ACCEPT
-A ufw-before-forward -d 10.11.0.0/24 -j ACCEPT
Enabling forwarding for VPN client network

4. После сохранения выполните следующую команду для перезагрузки правил UFW и перезапустите службу UFW. Это обеспечивает применение конфигурации NAT к системе.

sudo ufw reload
sudo systemctl restart ufw

5. Наконец, выполните следующую команду iptables, чтобы проверить статус NAT на UFW, так как задней частью UFW является IPTables.

sudo iptables -t nat -L POSTROUTING

При успешном выполнении вы получите вывод, подобный приведенному ниже.

Подключение к серверу OpenConnect VPN через OpenConnect-GUI

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

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

Чтобы подключиться к серверу виртуальной частной сети OpenConnect, вам необходимо установить приложение OpenConnect-GUI:

1. Откройте ваш веб-браузер и посетите страницу OpenConnect-GUI на GitHub: OpenConnect-GUI.

2. Затем загрузите и установите приложение OpenConnect VPN для Windows.

Downloading the OpenConnect VPN application for Windows

3. Откройте клиент виртуальной частной сети OpenConnect-GUI и выберите в меню ФайлПрофилиНовый профиль (расширенный) (или нажмите Ctrl+Shift+N). Появится небольшое окно, где вы можете заполнить данные нового профиля (шаг четыре).

Creating a new VPN profile

4. Теперь заполните информацию о профиле VPN следующим образом:

  • Имя – Укажите имя подключения (например, testvpn).
  • Шлюз – Укажите доменное имя сервера виртуальной частной сети OpenConnect (например, https://vpn.atadomain.io).
  • Имя пользователя – Пользователь добавленный (atauser) на сервер виртуальной частной сети OpenConnect.

После заполнения нажмите “Сохранить”, чтобы подтвердить информацию и создать профиль VPN.

Configuring the new VPN profile

5. Затем установите ваш новый профиль VPN (testvpn) как Сервер и нажмите Подключить, чтобы установить соединение с сервером VPN OpenConnect.

Connecting to the OpenConnect VPN Server

6. При запросе введите Пароль для вашего пользователя VPN и нажмите OK.

Authenticating the connection to the OpenConnect VPN Server

7. После установления соединения цвет замка изменится на зеленый, как показано ниже.

Confirming successful connection to the OpenConnect VPN Server

8. Наконец, нажмите вкладку Информация о VPN, чтобы получить подробный статус подключения. Вы должны увидеть внутренний IP-адрес, полученный от сервера VPN, DNS-сервер и используемую версию TLS.

Checking the VPN connection details

Заключение

В ходе этого руководства вы научились настраивать сервер VPN OpenConnect. В то же время вы узнали, как использовать SSL/TSL-сертификаты и добавлять правила брандмауэра для установления безопасного соединения с сервером VPN OpenConnect.

С этим полученным знанием, почему бы не интегрировать сервер VPN OpenConnect с несколькими аутентификационными бекэндами, такими как Radius и OpenID? Или добавить дополнительный уровень безопасности для аутентификации клиентов через двухфакторную аутентификацию?

Source:
https://adamtheautomator.com/openconnect-vpn/