Настройка IPsec VPN-туннеля между UserGate и Linux-сервером

ID статьи: 564
Последнее обновление: 15 дек, 2023
KnowledgeBase:
Product: UserGate NGFW
Version: 6.1.8, 6.1.9
Technology: VPN

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

Далее будут рассмотрены настройки серверов Linux и UserGate для настройки IPsec-туннеля между сетями 172.16.0.0/24 и 10.0.5.0/24.

Настройка Linux-сервера

Для реализации IPsec на Linux-сервере использовалось ПО LibreSwan (ПО и подробная информация о нём доступны по следующей ссылке: https://libreswan.org/).

  1. Установить ПО LibreSwan.

    sudo apt update
    sudo apt install -y -q libreswan

После установки LibreSwan будет доступна команда ipsec.

Файлы конфигурации для настройки политики подключения:

  • создание политик подключения: / etc/ ipsec. conf и файлы / etc/ ipsec. d/* conf.

  • хранение PSK: / etc/ ipsec. secrets и файлы / etc/ ipsec. d/*. secrets.

  1. Сгенерировать Pre-shared key.

Для генерации PSK была использована команда (в привилегированном режиме):

# openssl rand -base64 18

Был сгенерирован ключ: WXj72QDymXs1inggnYVSBuox

Сохраните общий ключ в файл / etc/ ipsec.secrets. Общий формат файлов *. secrets следующий:

  • для конкретного Peer-to-Peer соединения:

    <Source_IP> <Destination_IP> : PSK <PSK>

  • для любых подключений, которые не попадают в заданные правила:

    : PSK <PSK>

    # cat /etc/ipsec.secrets
    : PSK "WXj72QDymXs1inggnYVSBuox"
    include /etc/ipsec.d/*.secrets
  1. Создать файл конфигурации VPN-подключения.

Файл необходимо создать в каталоге / etc/ ipsec.d/ vpn.conf. Подробное описание конфигурационных параметров доступно по ссылке: https://libreswan.org/man/ipsec.conf.5.html.

Далее представлена базовая конфигурация:

config setup
  logfile=/var/log/pluto.log

Дайте название подключению, например vpn:

conn vpn

Укажите IP-адрес удалённого пира (UserGate):

right=192.168.2.168

или укажите «%any» для автоматического заполнения этого параметра в процессе установки сессии:

right=%any

Укажите адрес подсети, подключённой к удалённому пиру:

rightsubnet=172.16.0.0/24

Укажите адрес пира - Linux-сервера и подсети, подключённой к нему:

left=172.17.1.73
leftsubnet=10.0.5.0/24

Задайте способ аутентификации - Общий ключ:

authby=secret

В текущих версиях UserGate не поддерживается PFS (Perfect Forward Secrecy) и IKEv2:

pfs=no
ikev2=no
rekey=yes
keyingtries=3

Тип подключения туннельный (значение по умолчанию)

type=tunnel
auto=start

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

ike=aes256-sha1-modp1536,aes128-sha1-modp1536,3des-sha1-modp1536,aes128-sha1;modp1536,aes128-sha1;modp1536
esp=aes256-sha256,aes256-sha1,3des-sha1
nat-ikev1-method=none
  1. Запустить IPsec:

    # ipsec start
  2. Создайте правило SNAT (Source Network Address Translation), для корректного прохождения трафика, предназначенного для сети, расположенной за удалённым пиром:

    # iptables -t nat -A POSTROUTING -d 172.16.0.0/24 -j SNAT --to-source 10.0.5.1

Настройка UserGate

  1. Настройка сетевых интерфейсов.

Особенностью данной настройки является необходимость создания виртуального туннельного VPN интерфейса. Интерфейс необходим для инкапсуляции трафика в модуль VPN (при активации подключения создаётся маршрут в указанную сеть за удаленным пиром через туннельный VPN интерфейс).

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

  • отметьте чекбокс Включено;

  • порядковый номер, использующийся в названии интерфейса;

  • Описание (опционально);

  • Зона, которой принадлежит интерфейс;

  • IP-адрес может быть любым при условии, что он не будет пересекаться с адресами других подсетей, с любой маской, за исключением маски с префиксом /32. Используемая подсеть должна быть согласована в рамках туннельного подключения. В данном примере назначен IP-адрес интерфейса: 172.16.0.0/24.

  1. Настроить профиль безопасности VPN.

Настройка профилей безопасности производится в разделе VPN ➜ Профили безопасности VPN веб-интерфейса UserGate. Настройка профиля безопасности необходима для согласования следующих параметров:

  • режим IKE;

  • общий ключ;

  • алгоритмы шифрования, проверки целостности и обмена ключами первой фазы;

  • алгоритмы шифрования, проверки целостности второй фазы.

Алгоритмы шифрования и авторизации, указанные на сервере Linux и UserGate, должны совпадать. Можно задать несколько комбинаций алгоритмов, из совпадающих вариантов хосты выберут наиболее защищённую комбинацию.

Для данного примера профиль безопасности VPN имеет следующие настройки:

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

Чтобы добавить правило перейдите в раздел VPN ➜ Клиентские правила, нажмите Добавить и укажите:

  • отметьте чекбокс Включено;

  • Название правила;

  • Описание (опционально);

  • Профиль безопасности, настроенный ранее;

  • Интерфейс, созданный в пункте 1;

  • Адрес сервера: адрес интерфейса Linux-сервера, через который происходит подключение;

  • Протокол VPN: IPsec туннель;

  • согласовать сети с каждой стороны туннеля (rightsubnet и leftsubnet).

В случае успешного подключения напротив правила отобразится зелёный индикатор.

Новый маршрут отобразится в таблице маршрутизации системы (вкладка Диагностика и мониторинг раздел Мониторинг ➜ Маршруты):

Диагностика и мониторинг соединения

Для поиска неисправностей инструментами UserGate используйте функцию захвата пакетов на интерфейсе и расширенные логи.

Для создания правила захвата пакетов на интерфейсе перейдите во вкладку Диагностика и мониторинг в раздел Сеть ➜ Захват пакетов. В качестве фильтра используйте IP-адрес хоста, укажите интерфейс и настроенный фильтр в правиле PCAP.

Запустите запись, нажав Начать запись.

Измените уровень детализации журналов диагностики на Debug во вкладке Настройки в разделе UserGate ➜ Управление устройством.

Попробуйте установить соединение, включив необходимое правило. Соединение не было установлено:

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

В архиве с файлами необходимо найти каталог utm-vpn-server или utm-vpn-client в зависимости от роли UserGate.

В каталоге откройте файл, например, utm-vpn-client.log. В соответствии с ошибкой подключения в файле необходимо найти ключи шифрования первой фазы IKE. Чтобы их найти, например, на ОС Windows, можно воспользоваться утилитой findstr. Ключевое слово для фильтрации - WIRESHARK.

Сохраните ключи в отдельный файл. Далее запустите программу Wireshark и в настройках найдите опции протокола ISAKMP. Выберите редактирование IKEv1 Decryption Table и пропишите сохранённые ранее ключи шифрования:

Если ключей много, то можно создать одну запись, далее сохранить настройки, ещё раз вернуться в редактор ключей, посмотреть название файла, в который программа сохраняет ключи (путь к файлу выделен на рисунке), и добавить все ключи в файл.

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

Отследив конкретные UDP сессии, можно увидеть коды ответа удаленного хоста. Если протокол реализован в соответствии с RFC, то по коду ответа можно яснее понять, в чем именно заключается проблема. Например, из кода ответа 18 (INVALID-ID-INFORMATION), можно сделать вывод, что объявляемые сети с обоих сторон не совпадают.

Если просмотреть предыдущий пакет либо внимательнее сравнить сети, прописанные на UserGate, и сети, прописанные на удаленном хосте, то мы обнаружим их несовпадение.

Эта статья была:   Полезна | Не полезна
Сообщить об ошибке
ID статьи: 564
Последнее обновление: 15 дек, 2023
Ревизия: 4
Просмотры: 7996
Комментарии: 0
Также опубликовано в