Санкт-Петербург
21 октября 2026
Санкт-Петербург
21 октября 2026
Первый форум-фестиваль от команды TS Solution
Сумма технологий

Новые функции PT NGFW версии 1.11: Remote Access VPN

Статья
24.09.2026

Авторы

Сажнёв Михаил
инженер технической поддержки CP Support
Красноперов Вячеслав
системный инженер TS Solution

Введение

Рады приветствовать в новой статье на портале TS University!

В версии 1.11 продукта PT NGFW  от компании Positive Technologies появился встроенный Remote Access VPN: удалённых пользователей можно подключать к корпоративным ресурсам через PT NGFW и применять к их трафику политики безопасности межсетевого экрана. Для аутентификации используется RADIUS, что позволяет подключать внешний источник учётных данных и строить сценарии с дополнительным фактором.

В этой статье мы познакомим вас с новым функционалом PT NGFW версии 1.11.

Соберём RA VPN на стенде: подготовим сертификаты, настроим взаимодействие PT NGFW с Identity Control и RADIUS, создадим политики доступа, подключим PT VPN Agent на Windows и Linux, проверим полное и раздельное туннелирование, а затем добавим второй фактор через Multifactor. А также расскажем, как компоненты взаимодействуют друг с другом и где искать причину, если возникают проблемы с аутентификацией или если туннель не поднимается.

Remote access VPN

Основным нововведением данной версии является функционал Remote access VPN, позволяющий организовывать подключение удаленных сотрудников с помощью VPN-клиента PT VPN Agent.

В версии 1.11 появится возможность использования RA VPN с аутентификацией по RADIUS. А это значит, что можно будет интегрировать PT NGFW со множеством систем двухфакторной аутентификации, которые работают на основе протокола RADIUS.
Инструкция не привязана к конкретному RADIUS-серверу. Любой сервер, поддерживающий EAP-MSCHAPv2 (Microsoft NPS, FreeRADIUS, Cisco ISE и др.), подойдёт без изменений на стороне NGFW и агента.
Настройка Remote Access VPN PT NGFW

Параметр

Значение

Метод аутентификации

EAP-MSCHAPv2 (IKEv2)

Сервер аутентификации

FreeRADIUS

VPN-шлюз

PT NGFW

Identity Agent

СУ PT NGFW (порт 5570)

Внешний адрес для подключения клиентов

10.0.10.1

IP-пул клиентов

192.168.10.0/24

Туннельный шлюз

192.168.10.1/24


VPN-Клиент – программа PT VPN Agent, устанавливаемая на компьютер сотрудника и обеспечивающая подключение к защищаемым ресурсам.
PT NGFW – многофункциональный межсетевой экран, обеспечивающий подключение пользователей к защищенным ресурсами и контроль доступа.
Identity Control — подсистема PT MGMT (СУ PT NGFW), посредник между NGFW и внешним сервером аутентификации. NGFW передаёт EAP-запросы в агент по защищённому соединению; агент отправляет их на RADIUS-сервер и возвращает результат обратно.
RADIUS-сервер – внешний сервер для аутентификации по протоколу RADIUS. В данном примере используется FreeRADIUS.

Схема сети приведена на рисунке:

Схема взаимодействия компонентов при установлении RA VPN-соединения:

Шаг

Описание

1

Клиент отправляет NGFW AUTH request

2

Шлюз отправляет в ответ EAP Identity

3

Клиент присылает EAP Response

4

NGFW отправляет на СУ с Identity Agent запрос на аутентификацию

5

СУ запрашивает подтверждение у RADIUS-сервера

6

При успешной аутентификации RADIUS-сервер отправляет СУ Access-Accept

7

СУ подтверждает аутентификацию пользователя и отправляет информацию об этом на NGFW

8

NGFW создает VPN-туннель и назначает пользователю адрес из пула RA

Выпуск сертификатов

RA VPN Client проверяет сертификат шлюза при IKE-обмене. Для успешной проверки на клиенте в рассматриваемом примере выстраивается полная цепочка доверия до корневого сертификата.
Могут использоваться существующие сертификаты, при необходимости СУ PT NGFW может сгенерировать самоподписные сертификаты: корневой и сертификат шлюза.
Создание сертификатов
В документации вендора приведен скрипт для генерации сертификатов, однако мы более подробно рассмотрим порядок действий.
Создание корневого сертификата
Для создания самоподписного корневого сертификата выполните следующие команды:

openssl genrsa -out root.key 4096


Где:
  • root.key – название закрытого ключа корневого сертификата.
Внимание: приватный ключ root.key после подписи сертификата шлюза следует сохранить!

openssl req -x509 -new -nodes -key root.key -sha256 -days 3650 \

-out root.crt -subj "/CN= RA-TS-Root-CA" \

-addext "basicConstraints=critical,CA:TRUE" \

-addext "keyUsage=critical,keyCertSign,cRLSign" \

-addext "subjectKeyIdentifier=hash"


Где:
  • root.key – название закрытого ключа, созданного на предыдущем шаге
  • root.crt – название корневого сертификата
  • /CN= RA-TS-Root-CA – CommonName сертификата
Вы также можете создать промежуточный сертификат, который будет подписан корневым, и который будет использоваться для подписи конечного сертификата NGFW, но в данном примере сертификат NGFW будет подписан напрямую корневым.
Требования к сертификату шлюза

Параметр

Значение / Описание

CN

IP-адрес внешнего интерфейса (10.0.10.1) или его FQDN (ra.ts-test.local)

basicConstraints

critical, CA:FALSE

keyUsage

critical, digitalSignature, keyEncipherment

extendedKeyUsage

serverAuth (1.3.6.1.5.5.7.3.1)

IPsecIKE (1.3.6.1.5.5.7.3.17)

subjectAltName

Должен содержать IP-адрес и (или) FQDN и должен совпадать с адресом NGFW на вкладке «Клиент / Адрес шлюза» в настройках удаленного доступа.

В примере это:

IP:10.0.10.1

DNS:ra.ts-test.local

CN не является основным источником имени сервера при проверке сертификата, но его рекомендуется согласовать со значением в subjectAltName.
Внимание: OID IPsecIKE (1.3.6.1.5.5.7.3.17) обязателен. Без него NGFW отклонит сертификат при сохранении конфигурации с ошибкой: local certificate Extended Key Usage field must include IPsecIKE.
Данный сертификат содержит IP-адрес и/или FQDN NGFW и подписывается корневым сертификатом. Вместе с закрытым ключом этот сертификат загружается в PT NGFW в составе цепочки chain. pem (она будет создана далее).
Создание сертификата PT NGFW
Для создания сертификата NGFW выполните следующие команды:

openssl genrsa -out ngfw.key 2048


Где:
ngfw.key – название закрытого ключа сертификата NGFW
Внимание: приватный ключ ngfw.key после подписи сертификата шлюза следует сохранить!

openssl req -new -key ngfw. key -out ngfw. csr -subj «/CN=10.0.10.1»


Где:
  • ngfw.key — название закрытого ключа сертификата NGFW
  • ngfw.csr — название запроса на выпуск сертификата
  • /CN=10.0.10.1 — CommonName сертификата, должен совпадать с используемым для подключения внешним адресом NGFW либо FQDN.
Рекомендуется в качестве CN указывать FQDN.

openssl x509 -req -in ngfw.csr -CA root.crt -CAkey root.key \

-CAcreateserial -out ngfw.crt -days 825 -sha256 -extfile ngfw.ext


Где:
  • ngfw.csr – название запроса на выпуск сертификата
  • root.crt – название корневого сертификата
  • root.key – название закрытого ключа
  • ngfw.crt – название сертификата NGFW
  • ngfw.ext – название файла с дополнительными параметрами сертификата

Содержимое файла ngfw.ext приведено ниже:

basicConstraints = critical, CA:FALSE

keyUsage = critical, digitalSignature, keyEncipherment

extendedKeyUsage = serverAuth, 1.3.6.1.5.5.7.3.17

subjectAltName = IP:10.0.10.1,DNS:ra.ts-test.local

subjectKeyIdentifier = hash

authorityKeyIdentifier = keyid, issuer

Внимание: поле subjectAltName должно совпадать с FQDN либо с внешним адресом шлюза на вкладке «Клиент / Адрес шлюза» в настройках удаленного доступа!
OID параметра serverAuth – 1.3.6.1.5.5.7.3.1
Дополнительно создадим сертификат с CN="ra.ts-test.local" и протестируем его вместе с созданным ранее.
Создание цепочки сертификатов
На NGFW через веб-интерфейс СУ необходимо загрузить цепочку сертификатов и закрытый ключ сертификата NGFW. Для этого выполните следующие команды:

cat ngfw.crt root.crt > chain.pem

Внимание: сначала сертификат шлюза, затем подписывающий его сертификат! При использовании промежуточного сертификата укажите его вместо корневого.
Верификация цепочки — ожидаемый ответ: ngfw.crt: OK

openssl verify -CAfile root.crt ngfw.crt


Проверка расширений сертификата NGFW

openssl x509 -in ngfw.crt -text -noout | grep -A3 "Basic Constraints\|Extended Key\|Subject Alt"

Ожидаемый ответ:

X509v3 Basic Constraints: critical

    CA:FALSE

X509v3 Extended Key Usage:

    TLS Web Server Authentication, ipsec Internet Key Exchange

X509v3 Subject Alternative Name:

    IP Address:10.0.10.1, DNS:ra.ts-test.local

Настройка СУ PT NGFW (Identity Control)

Настройка агента Identity Control
Отредактируйте конфигурационный файл агента командой

sudo nano /opt/pt-ngfw/ngfw-acco-agent/config/1/agent.cfg


Для аутентификации RA VPN используется секция auth_server_profiles.
Внимание: секция auth_providers НЕ используется для RA VPN! Внесение изменений в нее приведет к ошибке! Если секция auth_server_profiles отсутствует, то ее нужно добавить самостоятельно в конфигурационный файл.
NGFW передаёт агенту UUID профиля RA VPN при каждом запросе аутентификации. Агент ищет запись в auth_server_profiles по полю id. Значение 00000000-0000-0000-0000-000000000000 означает «профиль по умолчанию» и применяется ко всем входящим RA VPN запросам.
"auth_server_profiles": [
  {
    "type": "radius",
    "id": "00000000-0000-0000-0000-000000000000",
    "servers": [
      {
        "address": "<IP-адрес RADIUS-сервера>",
        "nas_identifier": "< идентификатор, используемый RADIUS-сервером для определения клиента, от которого поступает запрос>",
        "shared_secret": "<shared secret, совпадает с RADIUS-сервером>",
        "auth_port": 1812,
        “acco_port”: 1813,
        "response_timeout_s": 5,
        "max_retries": 1
      }
    ]
  }
],

Параметр

Значение / Описание

address

IP-адрес RADIUS-сервера

nas_identifier

Идентификатор источника запросов в логах RADIUS

shared_secret

Общий секрет. Должен совпадать с настройками клиента на RADIUS-сервере

auth_port

UDP-порт RADIUS -сервера, на который агент отправляет запросы аутентификации (Access-Request). Стандарт: 1812

acco_port

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

response_timeout_s

Таймаут ответа в секундах. Рекомендуется 3–5 для LAN, до 30 для WAN

max_retries

Число повторных попыток при отсутствии ответа от RADIUS


Пример заполнения:
"auth_server_profiles": [
  {
    "type": "radius",
    "id": "00000000-0000-0000-0000-000000000000",
    "servers": [
      {
        "address": "10.110.25.90",
        "nas_identifier": "ts-pt",
        "shared_secret": "P@ssw0rd",
        "auth_port": 1812,
        “acco_port”: 1813,
        "response_timeout_s": 5,
        "max_retries": 1
      }
    ]
  }
],
При внесении изменений в конфигурационный файл сохраняйте то же форматирование (отступы, пробелы, табуляция, запятые, фигурные и квадратные скобки), что и в остальном файле для сохранения читаемости и предотвращения ошибок. Если при запуске службы в журнале появляется сообщение «content parsing error», то значит в конфигурационном файле была допущена ошибка.
Желательно делать копии файла перед внесением в него изменений!
Настройка локальных пользователей
Необязательный раздел. Применяется в лабораторных условиях без Active Directory. Позволяет создать список пользователей локально в агенте для их идентификации в политиках NGFW.
Локальный источник пользователей (файл users. json) используется Identity Control для сопоставления IP-адресов с учётными записями. Это не заменяет аутентификацию через RADIUS — пользователь всё равно аутентифицируется через RADIUS при VPN-подключении, файл users. json нужен для работы пользовательских политик межсетевого экрана. Такой способ задания списка пользователей может быть использован в случае отсутствия интеграции с Active Directory
Включение источника в agent. cfg
Внесите изменения в секции data_sources файла agent.cfg:
"data_sources": [
  {
    "type": "json",
    "name": "json file",
    "source_config": {
      "file": "config/json_users_example.json",
      "enabled": false
    }
  }
]
Измените существующую запись про файл с пользователями или добавьте новую:
"data_sources": [
  {
    "type": "json",
    "name": "json file",
    "source_config": {
      "file": "config/json_users_example.json",
      "enabled": false
    }
  },
  {
    "type": "json",
    "name": "json file",
    "source_config": {
      "file": " users.json",
      "enabled": true
    }
  }
]
Создание файла пользователей
Создайте в той же директории или по указанному пути файл с пользователями:

sudo nano /opt/pt-ngfw/ngfw-acco-agent/config/1/users.json

Общая структура файла следующая:
{
  "Users": [
    {
      <Данные пользователя>
    },
    {
      <Данные пользователя>
    },
…………………………………………………………..
    {
      <Данные пользователя>
    }
  ],
  "Groups": [
    {
      <Группа>
    },
    {
      <Группа>
    },
…………………………………………………………..
    {
      <Группа>
    }
  ]
}
Например:
{
  "Users": [
    {
      "login": "user1 ",
      "ip": ["192.168.111.10", “192.168.1.11”]
    },
    {
      "login": "user2",
      "ip": ["192.168.1.12"]
    },
    {
      "login": "user3",
      "ip": []
    }

  ],
  "Groups": [
    {
      "rausers": [
        "user1 ",
        "user2"
      ]
    }
  ]
}
Поле IP — статическая привязка пользователя к IP в локальной сети. Для RA VPN не обязателен, поскольку VPN-клиентам адреса выдаются динамически из пула.
Обязательно только наличие самой записи пользователя в списке Users и наличие значения поля "ip", даже если это пустой список (как у user3).
После изменения файла необходимо перезапустить агент

sudo systemctl restart pt-ngfw-acco-agent

Настройка Active Directory
В документации вендора приведен подробный порядок действий по настройке, однако мы ограничимся настройкой компонентов PT NGFW.
Настройка NGFW
Перед началом настройки Identity Agent проверьте настройки NGFW: на межсетевом экране в файле конфигурации NGFW в блоке acco задайте сетевой адрес узла (параметр address), на котором находится агент подключения к AD, а также номер порта (параметр port). По умолчанию это IP-адрес СУ и порт 5570.

sudo nano /opt/pt-ngfw/ngfw-core/etc/config/pt-ngfw.conf

  "acco": {
    "address": "10.110.25.80",
    "port": 5570,
    "reconnect_timeout_sec": 10,
    "protocol_error_timeout_sec": 60,
    "inactivity_timeout_sec": 60,
    "server_certificate": "",
    "max_input_message_size_mb": 32,
    "socket_receive_buffer_size_kb": 8
  },
После изменения конфигурации перезапустите сервис pt-ngfw-core.service:

sudo systemctl restart pt-ngfw-core.service

Настройка СУ
Скопируйте на СУ в директорию агента корневой сертификат контроллера домена:

sudo cp /home/ngfw/root.crt /opt/pt-ngfw/ngfw-acco-agent/config/certs

Отредактируйте конфигурационный файл агента с помощью команды:

sudo nano /opt/pt-ngfw/ngfw-acco-agent/config/1/agent.cfg


В блоках ldap, winrm и provider_config измените следующие параметры:

Параметр

Значение / Описание

ldap_uri

URL-адрес LDAP-сервера. Поддерживается TLS и StartTLS.

Нешифрованные подключения не поддерживаются.

cafile

имя (путь) доверенного сертификата агента Identity Control.

Путь должен быть относительным — ../certs/cert.pem.

bind_dn

имя пользователя, используемое для аутентификации через операцию bind.

bind_pwd

пароль пользователя.

base_dn

базовый DN, с которого начинается поиск пользователей и групп. Поиск выполняется с областью subtree, то есть по данному DN и всем его вложенным подразделам. По умолчанию используется корень каталога (root DN). Объекты пользователей, не попавшие в область поиска, обрабатываться не будут.

 

Необязательный параметр.

filter

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

По умолчанию — sAMAccountType=805306368.

Аналогичен LDAP-фильтру (&(objectclass=user)(objectclass=person)(!(objectClass=computer))).

timeout_s

тайм-аут LDAP-соединения в секундах.

ou_support

поддержка использования Organizational Unit в правилах в качестве «псевдогрупп». Сильно увеличивает расход оперативной памяти агентом Identity Control.

Не рекомендуется включать.

По умолчанию — false.

winrm_uri

URL-адрес для подключения к службе WinRM.

user

имя пользователя для аутентификации в WinRM.

password

пароль пользователя.

events_read_back_h

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

frequency_s

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

log_source

имя источника журналов: Security или ForwardedEvents.

По умолчанию — Security.

Необязательный параметр.

{
      "type": "ad",
      "name": "TS AD1",
      "source_config": {
        //"user_address_map_timeout_s": 86400,
        "ldap": {
          "ldap_uri": "ldaps://WIN-335LMQTOQ4E.main.local",
          "cafile": "../certs/root.cer",
          "bind_dn": "pt_idc@main.local",
          "bind_pwd": "P@ssw0rd",
          "base_dn": "dc=main,dc=local",
          "filter": "sAMAccountType=805306368",
          "timeout_s": 30,
          "ou_support": false,
          "debug": true,
          "enabled": true
        },
        "winrm": {
          "winrm_uri": "https://WIN-335LMQTOQ4E.main.local:5986/wsman",
          "cafile": "../certs/root.cer",
          "user": "pt_idc@main.local",
          "password": "P@ssw0rd",
          //"exclude_filter": ".*\\$$",
          //"exclude_users": [ "user1", "user2" ],
          "events_read_back_h": 2,
          "frequency_s": 30,
          "debug": true,
          "enabled": true,
          "log_source": "Security"
        }
      }
    },
После изменения файла необходимо перезапустить агент

sudo systemctl restart pt-ngfw-acco-agent


  1. Перезапуск и проверка агента
Для перезапуска службы введите

sudo systemctl restart pt-ngfw-acco-agent


Просмотр логов службы в реальном времени (полезно после перезапуска)

journalctl -u pt-ngfw-acco-agent -f



Импорт локальных пользователей:
Подключение к AD:
[AdDataSource][15] [info] [TS AD1:ldap:0] Loaded groups [ Groups=51 Members=41 ]
[AdStorage][15] [debug] directory_read_finished, update started [ group_map_size=51 ]
В логах СУ при успешной аутентификации:
  • starting session 1788166062818 for user user3 (original login user3) and auth profile 01a042d1-6d20-70e7-be4c-27c7cfbe302b
  • allocated address 192.168.10.2 for user user3 from IP allocator
  • created session 1788166062818 with IP address 192.168.10.2 and deadline 530263
…
  • starting session 1788166062819 for user admin@main.local (original login admin@main.local) and auth profile 01a042d1-6d20-70e7-be4c-27c7cfbe302b
  • allocated address 192.168.10.6 for user admin@main.local from leases
  • created session 1788166062819 with IP address 192.168.10.6 and deadline 530847
  • removing lease 01a042d1-6d20-70e7-be4c-27c7cfbe302b:192.168.10.6
На NGFW:
  • processing AUTH request for link 976a25b144e2e27c-390b2b8f38789882[10.0.10.201:4500]
  • link 976a25b144e2e27c-390b2b8f38789882[10.0.10.201:4500]: EAP authentication success: allocated session id 31373838313636303632383138, IP address 192.168.10.2, timeout 10800, keepalive interval 60
  • processing AUTH request for link 976a25b144e2e27c-390b2b8f38789882[10.0.10.201:4500]
  • link 976a25b144e2e27c-390b2b8f38789882[10.0.10.201:4500]: negotiated ESP: SPI 6ae3435e, remote SPI cd85e268, encryption AES_CBC256, authentication SHA256_128, kex unknown, esn false
  • link 976a25b144e2e27c-390b2b8f38789882[10.0.10.201:4500]: negotiated selectors: local 0.0.0.0-255.255.255.255, remote 192.168.10.2-192.168.10.2
  • link 976a25b144e2e27c-390b2b8f38789882[10.0.10.201:4500]: sending ESP proposals: spi=1793278814, index=1, proto=3, enc=AES_CBC256, auth=SHA256_128, prf=, kex=, esn=noesn
  • link 976a25b144e2e27c-390b2b8f38789882[10.0.10.201:4500]: sending initiator selectors: 192.168.10.2-192.168.10.2
  • link 976a25b144e2e27c-390b2b8f38789882[10.0.10.201:4500]: sending responder selectors: 0.0.0.0-255.255.255.255
  • sent IKE_AUTH message for tunnel 2 (link 976a25b144e2e27c-390b2b8f38789882[10.0.10.201:4500])
  • tunnel 2 has been established (IKE link 976a25b144e2e27c-390b2b8f38789882[10.0.10.201:4500])
На FreeRADIUS:
Внимание: если в логах появляется: no such auth profile, failing request — проверьте, что секция auth_server_profiles в поле id содержит нулевой UUID.

Создание и настройка удаленного доступа в СУ

Для настройки удаленного доступа перейдите в настройки устройства и выберите нужный виртуальный контекст. Выберите раздел «Удаленный доступ» и создайте новое подключение. На вкладке «Основные» введите название и описание.

На вкладке «Шлюз» выберите интерфейс, к которому будут подключаться удаленные пользователи:
Добавьте цепочку сертификатов и закрытый ключ NGFW:
Также загрузим сертификат с CN в виде доменного имени:
Оба сертификата включают в себя как FQDN, так и IP-адрес, поэтому в данном случае они взаимозаменяемы.
Укажите виртуальный роутер, зону безопасности и IP-адрес шлюза удаленного подключения. При необходимости – MTU, а также таймауты сессии.
На вкладке «Клиент» укажите IP-адрес или FQDN внешнего адреса шлюза, добавьте корневой сертификат, укажите подсеть для удаленных пользователей:
Укажите время удержания выданного сервером доступа адреса и DNS-серверы, которые будут использоваться клиентами. Вы также можете добавить DNS-суффикс организации.
При необходимости Вы можете указать подсети, трафик к которым должен направляться в туннель. Например, в данном случае в туннельный интерфейс будет направляться только трафик до подсетей 192.168.177.0/24 и 192.168.10.0/24, а весь остальной будет отправлен через обычный интерфейс.
В статье раздельное туннелирование будет протестировано отдельно.
Сохраните настройки и скачайте файл конфигурации, нажав ПКМ по созданному удаленному доступу:
Передайте файл пользователям, которым необходимо предоставить доступ.

Настройки правил фильтрации

В разделе «Политики/Безопасность» необходимо создать следующие правила фильтрации:

Первое правило разрешает входящий трафик от клиентов в зону Local по протоколам IKE (порт 500), NAT-T (порт 4500), ESP (порт 50). Последний необходим только при использовании VPN-клиентов на Windows.
Второе правило разрешает любой трафик из зоны RA_users, подсети 192.168.10.0/24 (используется для удаленных пользователей).
Также необходимо настроить исходящий NAT (Source NAT): создано общее правило трансляции для выхода в Интернет из зон Trusted, Local и RA_users:

Подключение к шлюзу

При подключении будет проверяться доступность шлюза 192.168.10.1, внутреннего ресурса 192.168.177.202, DNS-сервера Яндекса 77.88.8.8 и веб-страниц в Интернете.

Напомним схему стенда:
Windows
Установите на компьютер VPN-агент. Для Windows используйте пакет установщика PT-VPN-Agent.*.msi.
Установите корневой сертификат в хранилище доверенных корневых сертификатов компьютера:
Запустите приложение:
Добавьте файл конфигурации с настройками подключения, который ранее был скачан из раздела настроек удаленного доступа, и нажмите «сохранить». Агент автоматически переключится на вкладку подключения. Добавьте цепочку сертификатов и закрытый ключ NGFW:
Нажмите кнопку подключения, введите логин и пароль.
Клиент подключится:
Проверим состояние сетевых интерфейсов: клиент получил туннельный адрес 192.168.10.2 и DNS-сервера из списка.
В списке маршрутов появился маршрут по умолчанию через туннельный интерфейс с наименьшей метрикой:
Проверим доступность шлюза, внутреннего и внешнего ресурсов: клиент имеет доступ в локальную сеть и в Интернет.
Настройка встроенного VPN-клиента
Внимание: встроенный VPN-клиент Windows 10 и Windows 11 работает в режиме ограниченной функциональности без поддержки со стороны производителя.
Вы также можете использовать встроенный в Windows VPN-клиент со следующими настройками:
Так как у встроенного клиента отсутствует часть функционала, который будет добавлен в следующих версиях (например Сompliance-контроль), рекомендуется использование VPN-клиента вендора.
Linux
Настроим клиент на Linux: протестируем работу приложения на Debian 12.
Также поддерживаются Astra Linux 1.8.4, 1.8.5 и Ubuntu Desktop 24.04 LTS
Для Linux извлеките из архива PT-VPN-Agent_*.tar.gz файлы и запустите скрипт установки:
Запустите pt-vpn-agent:
Появится окно агента. Импортируйте файл с конфигурацией, введите логин и пароль:
Проверим интерфейсы: создан туннельный интерфейс ptvpnd60, через который идет маршрут по умолчанию с наименьшей метрикой.
Также проверим доступность шлюза, внутреннего и внешнего ресурсов:
Теперь проверим подключение по FQDN: заменим IP-адрес в настройках удаленного доступа на доменное имя, отправим изменения на устройства. Также включим раздельное туннелирование: в тоннель будут отправляться только пакеты до подсетей 192.168.10.0/24, 192.168.177.0/24 и хоста 77.88.8.8:
Экспортируем файл на компьютер с настроенной службой DNS:
Проверим подключение:
Проверим интерфейсы и маршруты: маршрут по умолчанию по-прежнему проходит через 10.0.10.1, а для указанных в настройках подсетей маршруты идут через туннельный интерфейс:
При этом ping до другого ресурса не пройдет, так как он не будет направлен в туннель, а разрешающего правила для такого трафика нет:

Приложение: настройка RADIUS-сервера на примере FreeRADIUS

Установка и настройка
Установите пакеты

apt-get update

apt-get install -y freeradius freeradius-utils


Отредактируйте конфигурационный файл FreeRADIUS:

sudo nano /etc/freeradius/3.0/clients.conf


Добавьте подключение для СУ: параметры должны совпадать с параметрами агента в секции auth_server_profiles (раздел «Настройка агента Identity Control»).
Отредактируйте файл пользователей FreeRADIUS:

sudo nano /etc/freeradius/3.0/mods-config/files/authorize


Добавьте данные о пользователях:
  • Пустая строка между записями обязательна
  • Имя пользователя — строго в кавычках, без пробелов внутри
  • Атрибут Reply-Message должен начинаться с пробела или TAB на следующей строке
  • Cleartext-Password: модуль mschap сам вычисляет NT-хеш для MSCHAPv2
Активируйте модуль MSCHAP:

ls /etc/freeradius/3.0/mods-enabled/mschap || \

ln -s /etc/freeradius/3.0/mods-available/mschap \

/etc/freeradius/3.0/mods-enabled/mschap


Запустите службу:

systemctl enable freeradius

systemctl restart freeradius

Проверка работы
Проверка синтаксиса:

freeradius -C

Проверка аутентификации

radtest -t mschap 'user1' 'P@ssw0rd' 127.0.0.1 0 testing123

Отладка:

systemctl stop freeradius && freeradius -X

Приложение: настройка Multifactor/MFA

Дополнительно проверим работу с 2FA: будет использоваться Multifactor RADIUS Adapter.

Шаг

Описание

1

Клиент отправляет NGFW AUTH request

2

Шлюз отправляет в ответ EAP Identity

3

Клиент присылает EAP Response

4

NGFW отправляет на СУ с Identity Agent запрос на аутентификацию

5

СУ запрашивает подтверждение у сервера 2FA

6

Сервер 2FA запрашивает подтверждение у RADIUS-сервера

7

RADIUS-сервер отправляет СУ через сервер 2FA Accept-Challenge

8

СУ отправляет Access-Request с атрибутом State(24), полученным ранее от RADIUS-сервера

9

При успешной аутентификации RADIUS-сервер отправляет серверу 2FA Access-Accept

10

Сервер 2FA запрашивает второй фактор

11

Пользователь подтверждает вход в приложении

12

При успешном подтверждении 2FA RADIUS-сервер отправляет СУ Access-Accept

13

СУ подтверждает аутентификацию пользователя и отправляет информацию об этом на NGFW

14

NGFW создает VPN-туннель и назначает пользователю адрес из пула RA

Информация о настройке
Прежде чем мы начнем, необходимо немного подробнее рассмотреть процесс аутентификации пользователя с помощью Identity Agent. Ниже приведен пример обмена данными между СУ и RADIUS-сервером.

СУ отправляет RADIUS-серверу первоначальный запрос:
RADIUS-сервер отправляет в ответ Access-Challenge с полем state:
СУ отправляет серверу Challenge-Response:
При успешной аутентификации сервер отправляет Access-Accept с атрибутами MSCHAPv2, при неудаче – Access-Reject:
Аутентификация клиентов на СУ проводится по протоколу EAP-MSCHAPv2. Этот протокол не передает на RADIUS-сервер пароль (атрибут User-Password). Это может приводить к ошибкам, если в качестве первого фактора используются логин и пароль (например, при проверке первого фактора в LDAP-каталоге).
При этом игнорирование первого фактора не подходит: в таком случае после подтверждения с телефона Multifactor отправит Access-Accept, в котором будет только один атрибут:
Запрос PT MGMT:
Ответ Multifactor:
Как видите, необходимые поля в ответе отсутствуют, из-за этого подключение завершается с ошибкой.
По этой причине при использовании Multifactor RADIUS Adapter всегда необходимо выбирать использование RADIUS-сервера в качестве первого фактора.
Настройка СУ
Отредактируйте конфигурационный файл агента командой

sudo nano /opt/pt-ngfw/ngfw-acco-agent/config/1/agent.cfg


Измените IP-адрес RADIUS-сервера на адрес Multifactor RADIUS Adapter:
При необходимости измените другие параметры, такие как идентификатор источника, общий секрет, UDP-порты 2FA-сервера, таймаут ответа в секундах.
Настройка Multifactor
В документации вендора приведен подробный порядок действий по настройке.
Проведем базовую настройку адаптера:

sudo nano /opt/multifactor/radius/ Multifactor.Radius.Adapter.v2.dll.config

<?xml version="1.0" encoding="utf-8"?>

<configuration>

        <appSettings>
                <!--this service radius server endpoint (0.0.0.0 - listen all interfaces) -->
                <add key="adapter-server-endpoint" value="0.0.0.0:1812" />

                <!--Multifactor API -->
                <add key="multifactor-api-url" value="https://api.multifactor.ru" />
                <!--<add key="multifactor-api-timeout" value="00:01:05"/>-->


                <!--HTTP proxy for API (optional)-->
                <!--<add key="multifactor-api-proxy" value="http://proxy:3128"/>-->

                <!-- minimal log level: 'Debug', 'Info', 'Warn', 'Error' -->
                <add key="logging-level" value="Debug" />
                <!--<add key="logging-format" value="json"/>-->


                <!-- Syslog server -->
                <!-- <add key="syslog-server" value="udp://syslog-server:514"/> -->
                <!-- Syslog format: RFC3164 or RFC5424 -->
                <!-- <add key="syslog-format" value="RFC5424"/> -->
                <!-- <add key="syslog-facility" value="Auth"/> -->
                <!-- <add key="syslog-app-name" value="multifactor-radius"/> -->
                <!-- <add key="syslog-use-tls" value="false" /> -->
                <!-- <add key="syslog-output-template" value="" /> -->
        </appSettings>

</configuration>
Укажите прослушиваемые адреса и порт, API Multifactor (нужен для второго фактора), уровень логирования, другие параметры при необходимости.
В директории /opt/multifactor/radius/clients находятся шаблоны конфигурации. Создайте файл конфигурации:

sudo nano /opt/multifactor/radius/clients/ptngfw.config

<?xml version="1.0" encoding="utf-8"?>

<configuration>
  <configSections>
    <appSettings>
            <!-- pt mgmt ip -->
            <add key="radius-client-ip" value="10.110.25.80"/>
            <!-- shared secret -->
            <add key="radius-shared-secret" value="P@ssw0rd"/>

            <!--One of: ldap, radius, none-->
            <add key="first-factor-authentication-source" value="Radius"/>
            <!-- Multifactor ip -->
            <add key="adapter-client-endpoint" value="0.0.0.0"/>
            <!-- RADIUS-server ip -->
            <add key="nps-server-endpoint" value="10.110.25.90:1812"/>
            <!-- RADIUS-server timeout hh:mm:ss -->
            <add key="nps-server-timeout" value="00:00:15" />

        <!-- get it from multifactor management panel -->
        <add key="multifactor-nas-identifier" value="******************************"/>
        <!-- get it from multifactor management panel -->
        <add key="multifactor-shared-secret" value="******************************"/>
    </appSettings>

    <ldapServers>
        <ldapServer
            connection-string="ldap://10.10.35.17:389"
            username="CN=Administrator,CN=Users,DC=mys,DC=local"
            password="Qwerty1234!"
        />
    </ldapServers>

</configuration>
<?xml version="1.0" encoding="utf-8"?>

<configuration>
  <configSections>
    <appSettings>
            <!-- pt mgmt ip -->
            <add key="radius-client-ip" value="10.110.25.80"/>
            <!-- shared secret -->
            <add key="radius-shared-secret" value="P@ssw0rd"/>

            <!--One of: ldap, radius, none-->
            <add key="first-factor- authentication-source" value="Radius"/>
            <!-- Multifactor ip -->
            <add key="adapter-client-endpoint" value="0.0.0.0"/>
            <!-- RADIUS-server ip -->
            <add key="nps-server-endpoint" value="10.110.25.90:1812"/>
            <!-- RADIUS-server timeout hh:mm:ss -->
            <add key="nps-server-timeout" value="00:00:15" />

        <!-- get it from multifactor management panel -->
        <add key="multifactor-nas-identifier" value="******************************"/>
        <!-- get it from multifactor management panel -->
        <add key="multifactor-shared-secret" value="******************************"/>
    </appSettings>

    <ldapServers>
        <ldapServer
            connection-string="ldap://10.10.35.17:389"
            username="CN=Administrator,CN=Users, DC=mys,DC=local"
            password="Qwerty1234!"
        />
    </ldapServers>

</configuration>
Проверка запуска службы:
Настройка RADIUS
Отредактируйте конфигурационный файл FreeRADIUS:

sudo nano /etc/freeradius/3.0/clients.conf


Добавьте подключение для Multifactor:
Отредактируйте файл пользователей FreeRADIUS:

sudo nano /etc/freeradius/3.0/mods-config/files/authorize


Добавьте данные о пользователях:
  • Пустая строка между записями обязательна
  • Имя пользователя — строго в кавычках, без пробелов внутри
  • Атрибут Reply-Message должен начинаться с пробела или TAB на следующей строке
Cleartext-Password: модуль mschap сам вычисляет NT-хеш для MSCHAPv2
Перезапустите службу:

systemctl restart freeradius

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

Введите логин и пароль:
Откройте приложение Multifactor на смартфоне и подтвердите вход:
Клиент подключится:

Заключение

В PT NGFW 1.11 Remote Access VPN уже можно использовать как полноценный сценарий удалённого доступа: с собственным VPN-клиентом, RADIUS-аутентификацией, политиками безопасности и раздельным туннелированием.

На нашем стенде мы проверили подключение с Windows и Linux, работу по IP и FQDN, маршрутизацию пользовательского трафика и связку с дополнительным фактором через Multifactor.

При этом самая важная часть такой настройки находится не в самом создании VPN-профиля, а на стыке компонентов: цепочка доверия сертификатов, RADIUS/EAP, Identity Control, пользовательские политики и маршрутизация должны работать согласованно.

Поэтому при переносе схемы в продуктивную инфраструктуру стоит отдельно проверить совместимость конкретного RADIUS/MFA-решения, ограничить доступ пользователей необходимыми ресурсами и не переносить лабораторные параметры безопасности без адаптации.

До встречи в следующих статьях!
Компания TS Solution — 5 -кратный лучший региональный партнер Positive Technologies
Вместе с вами рассмотрим интерфейс демо-версии, проконсультируем по всем вопросам и покажем все возможности решения
Протестируйте PT NGFW с командой TS Solution и получите индивидуальный план для защиты и улучшения вашей сети
Может быть интересно