S-Terra VPN

S-Terra VPN — первоначальное знакомство и создание Site2Site VPN-подключения между двумя виртуальными С-Терра Шлюз 4.2 в среде EVE-NG

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

  • Зачем это надо?

В связи с импортозамещением в России компании как госсектора, так и частные, активно внедряют оборудование российской разработки. С-Терры тут довольно ходовое решение.

  • Где взять образы и лицензии?

В рамках продвижения продукта С-Терра Шлюз 4.2 получить образ и демо-лицензию не составляет труда. Образ можно забрать здесь. Для получения лицензий нужно отписать на почту presale@s-terra.ru, указав свои ФИО, организацию и желаемое количество лицензий. Мне дали без организации как arny.ru. Демо-лицензия действует 3 месяца.

  • Где взять документацию?

Виртуальный Шлюз и программно-аппаратный по своей функциональности идентичны. Документации полно на официальном сайте, плюс есть канал на Youtube с видеоуроками.

Отдельно есть канал Telegram, там можно потупить, если что-то не получается (как это делаю я). Отвечают довольно охотно и подробно.

  • Зачем рассказывать ещё раз, если есть отдельный видео-урок?

Вот он этот видео-урок. Одно дело когда кто-то всё быстро-быстро тебе на видео показывает и совсем другое пощупать собственными руками. Только начал работать со S-Terra, хочу сам попробовать настроить и показать как это получилось.

Надеюсь, это поможет быстро разобраться тому, кто знакомится с устройствами S-Terra и при этом не хочет тратить пару дней на "прыжки" между различной документацией, видео-уроком и каналом Telegram. Я уже всё разобрал, проверил, полчаса на прочтение этой статьи и будет ясно как белый день.


Настройка

Использую следующую схему и адресацию:

S-terra VPN

Засовываем в EVE-NG

Тут ничего сложного, как настроить образ С-Терра Шлюз 4.2 рассказывал в записи про EVE-NG.

Начальная инициализация

Перед запуском образа S-Terra редактируем его свойства и меняем тип интерфейсов:

При добавлении сетевых интерфейсов выбирайте тип адаптера VMXNET3 

Это рекомендация от вендора, попробовал тип интерфейса по умолчанию tpl(e1000), разницы не заметил.

Ну а интерфейсов для нашей топологии будет достаточно двух. Стартуем образ, логинимся: логин administrator, пароль s-terra.

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

Первым делом устройство нужно инициализировать:

administrator@sterragate] initialize

Далее понажимать указанные на экране клавиши (это настройка генератора случайных чисел, хотя могли что-то и поинтереснее придумать) и ввести полученную демо-лицензию. На этом инициализация завершена:

Изначально шлюз настроен на блокирование сетевого трафика, кроме DHCP. Изменим это, применяя пустую политику безопасности:

administrator@sterragate] run csconf_mgr activate

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

  • Режим консоли разграничения доступа (мы сейчас в нём);
administrator@sterragate] - строка приглашения

Администратор консоли разграничения доступа с уровнем привилегий 15 имеет право на запуск и останов сервиса безопасности, запуск процедуры инициализации, создание учетных записей пользователей с однофакторной или двухфакторной аутентификацией для консоли разграничения доступа, работу с файлами, запуск утилит для регистрации лицензии, сертификатов, просмотр любой информации, доступ к ОС.
  • Режим операционной системы;

Это линукс и команды тут линуксовые, пользователь root, пароль пустой:

root@sterragate:~# - строка приглашения
  • Режим cisco-like консоли

Тут всё полностью соответствует режимам IOS:

sterragate>
sterragate#
sterragate(config)#

Переходить из режима в режим так:

administrator@sterragate] system
Entering system shell..
root@sterragate:~# cs_console
sterragate> enable
Password: csp
sterragate# config t
sterragate(config)# exit
sterragate# exit
root@sterragate:~# exit
Logout
Leaving system shell..
administrator@sterragate] configure
sterragate login: cscons
Password: csp
S-Terra Gate 4.2.18201 (amd64)
sterragate# config t
sterragate(config)#

Вот такой круговорот воды в природе режимов. Далее можно поменять пароль админа: change user password и нужно обновить карту интерфейсов:

administrator@sterragate] system - заходим в system shell
root@sterragate:~# /bin/netifcfg enum > /home/map1 - создаём карту интерфейсов
root@sterragate:~# /bin/netifcfg map /home/map1 - применяем карту интерфейсов

Либо то же самое можно сделать с помощью команды run в консоли разграничения доступа:

administrator@sterragate] run ?
LINE  Shell command to execute
administrator@sterragate] run /bin/netifcfg enum > /home/map1
administrator@sterragate] run /bin/netifcfg map /home/map1
SUCCESS: Operation was successful.

В cisco-like консоли команды режима ОС также доступны через run. Название интерфейсов в cisco-like консоли не будет соответствовать названиям интерфейсов в EVE-NG. Обойти это нельзя. Чтобы посмотреть соответствие:

administrator@sterragate] run vim.tiny /home/map1

0000:00:03.0 phye eth0 TenGigabitEthernet0/0
0000:00:04.0 phye eth1 TenGigabitEthernet0/1 - eth1 название в EVE-NG, TenGigabitEthernet0/1 название в cisco-like консоли

Для чего вообще эта карта нужна? Без настройки карты интерфейсов не будет стартовать IPsec daemon:

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

Перезагружаемся:

administrator@sterragate] reboot

Когда всё нормально, IPsec daemon успешно стартует и можно выполнить команду show config. Если же IPsec daemon не запустился, команда выдаст ошибку. Также доступно ещё несколько команд show, например, show version:

Настройка интерфейсов

В cisco-like консоли настраиваем имя шлюза, интерфейсы, маршрут по умолчанию:

sterragate(config)# hostname Gate1
sterragate(config)# enable password Str0ngP@$$w0rd
Gate1(config)# interface TenGigabitEthernet0/0
Gate1(config-if)# ip address 10.10.10.1 255.255.255.252
Gate1(config-if)# no shutdown
Gate1(config-if)# exit
Gate1(config)# interface TenGigabitEthernet0/1
Gate1(config-if)# ip address 192.168.1.1 255.255.255.0
Gate1(config-if)# no shutdown
Gate1(config-if)# exit
Gate1(config)# ip route 0.0.0.0 0.0.0.0 10.10.10.2 - адрес следующего перехода
Gate1(config)# end
Gate1# wr

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

Настройка SSH

В документации много что-то всего понаписано, но у меня SSH заработал сразу после задания пароля рута:

administrator@sterragate] run passwd
Enter new UNIX password:

Мы попали в режим операционной системы. Режим консоли разграничения доступа больше не нужен. Получается этот режим используется только:

  • Для первоначальной настройки;
  • Для работы с устройством локально

Ещё раз вход в cisco-like консоль:

root@Gate1:~# cs_console 
Gate1> enable 
Password: Str0ngP@$$w0rd
Gate1# config t 
Gate1(config)#
Настройка VPN

Настраивается IPSec туннель со странными с непривычными алгоритмами шифрования. Эти алгоритмы удовлетворяют ГОСТ'ам РФ, ради чего всё и затевалось. Туннель поднимается в 2 фазы, кто плохо помнит что это и как, лучше освежить память.

Сначала настраиваем на Gate1, затем зеркально на Gate2.

Фаза 1

Мнемоника HAGLE, сначала хеш:

Gate1(config)# crypto isakmp policy 1
Gate1(config-isakmp)# hash ?
  gost                    GOST R 34.11-94 Hash
  gost341112-256-tc26     GOST R 34.11-2012 TC26 (256 bit keys) Hash
  gost341112-512-tc26     GOST R 34.11-2012 TC26 (512 bit keys) Hash
  md5                     Message Digest 5
  sha                     Secure Hash Standard
  tc26-ike-gost3411       TC26 IKE GOST R 34.11-94 Hash
  tc26-ike-gost341112-512 TC26 IKE GOST R 34.11-2012 (512 bit keys) Hash

Gate1(config-isakmp)# hash gost341112-256-tc26 

Потом аутентификация:

Gate1(config-isakmp)# authentication ?
  dss-sig      DSS Signature
  gost-sig     GOST R 34.10-2001 Signature
  pre-share    Pre-Shared Key
  rsa-sig      Rivest-Shamir-Adleman Signature
  sign S       ignature selected by CA type

Gate1(config-isakmp)# authentication pre-share

Затем группа Диффи-Хеллмана:

Gate1(config-isakmp)# group ?
  1       Diffie-Hellman group 1
  2       Diffie-Hellman group 2
  5       Diffie-Hellman group 5
  vko     VKO GOST R 34.10-2001
  vko2    VKO GOST R 34.10-2012 (256 bit keys)

Gate1(config-isakmp)# group vko2

Следом идёт время жизни. Ни в инструкции, ни в видео этот параметр не настраивается и я значит не буду. Но параметр есть:

Gate1(config-isakmp)# lifetime ?
  <1-4294967295> lifetime in seconds

Последнее шифрование:

Gate1(config-isakmp)# encryption ?
  3des                  Three key triple DES
  aes                   AES - Advanced Encryption Standard.
  des                   DES - Data Encryption Standard (56 bit keys).
  gost                  GOST - GOST 28147-89 Encryption.
  gost2814789z          GOST - GOST 28147-89 Z Encryption.
  gost341215k           GOST - GOST R 34.12-2015 Kuznyechik Encryption.
  tc26-ike-gost-b-imit  TC26 IKE GOST_B_CFB_IMIT Encryption.
  tc26-ike-gost-z-imit  TC26 IKE GOST_Z_CFB_IMIT (GOST 28147-89 Z) Encryption.

Gate1(config-isakmp)# encryption gost
Gate1(config-isakmp)# exit

Почитал немного, алгоритмы достаточно стойкие. Длина ключа 256-512bit.

PresharedKey (PSK)

Настройку identity как в видео делать не нужно, если посмотреть в конфигурацию:

Gate1# show running-config
!
version 12.4
no service password-encryption
!
crypto ipsec df-bit copy
crypto isakmp identity address
username cscons privilege 15 password 0 csp
aaa new-model
!

Это настройка по умолчанию. Данная настройка определяет работу туннеля, если используется PSK, то настройка имеет вид  crypto isakmp identity address. Если используются сертификаты, то crypto isakmp identity dn. Настраиваем Keepalive:

Gate1(config)# crypto isakmp keepalive 10 2
10 - Number of seconds between keep alives <1-32767>
2 -  Number of seconds between retries if keepalive fails <1-300> 

Настраиваем PSK:

Gate1(config)# crypto isakmp key Str0ngP@$$w0rd address 10.10.10.2
Crypto ACL

Отбираем трафик между PC1 и PC2:

Gate1(config)# ip access-list extended VPNGOST
Gate1(config-ext-nacl)# permit ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255
Фаза 2

Создаём Transform Set:

Gate1(config)# crypto ipsec transform-set SET1 ?
  ah-gost28147-mac        AH GOST 28147-89 MAC transform
  ah-gost3411-hmac        AH GOST R 34.11-94 HMAC96 transform
  ah-md5-hmac             AH-HMAC-MD5 transform
  ah-sha-hmac             AH-HMAC-SHA transform
  esp-3des                ESP transform using 3DES(EDE) cipher (168 bits)
  esp-aes                    ESP transform using AES cipher
  esp-des                    ESP transform using DES cipher (56 bits)
  esp-gost28147              ESP transform using GOST 28147-89 cipher
  esp-gost28147-4m-imit      ESP transform using ESP_GOST-4M-IMIT cipher
  esp-gost28147-4m-imit-z    ESP transform using ESP_GOST-4M-IMIT GOST 28147-89 Z cipher
  esp-gost28147-mac          ESP transform using GOST 28147-89 MAC auth
  esp-gost3411-hmac          ESP transform using GOST R 34.11-94 HMAC96 auth
  esp-gost341215k            ESP transform using GOST R 34.12-2015 Kuznyechik CFB cipher
  esp-gost341215k-mac        ESP transform using GOST R 34.12-2015 Kuznyechik MAC auth
  esp-md5-hmac               ESP transform using HMAC-MD5 auth
  esp-null                   ESP transform w/o cipher
  esp-sha-hmac               ESP transform using HMAC-SHA auth
tc26-esp-gost-b-4m-imit      TC26 ESP transform using ESP_GOST-4M-IMIT CPROB cipher
tc26-esp-gost-z-4m-imit      TC26 ESP transform using ESP_GOST-4M-IMIT GOST 28147- 89 Z cipher

Gate1(config)# crypto ipsec transform-set SET1 esp-gost28147-4m-imit

Настройка mode tunnel не нужна, это настройка по умолчанию.

Crypto Map

Создаём крипто карту:

Gate1(config)# crypto map CMAP 1 ipsec-isakmp
Gate1(config-crypto-map)# match address VPNGOST
Gate1(config-crypto-map)# set transform-set SET1
Gate1(config-crypto-map)# set peer 10.10.10.2
Gate1(config-crypto-map)# exit

Применяем на интерфейсе:

Gate1(config)# interface TenGigabitEthernet0/0
Gate1(config-if)# crypto map CMAP

Проверка

Сначала проверим на PC1, затем на крипто-шлюзе.

PC1

Пингуем с PC1 PC2. Пинги не проходят, смотрим на S-Terra1: сообщения о невозможности установить туннель. Смотрим на S-Terra2, тут интереснее:

Поиграться с 2 шлюзами установив 1 лицензию на оба не получится, лицензия нужна не только для первоначальной инициализации, но также проверяется при установке VPN-соединения 🙂

Меняем лицензию на одном из устройств:

root@sterragate:~# lic_mgr - будет выведен пример использования

И ещё раз проверяем:

Большая задержка при первом реплае связана со временем на согласование туннеля. Помнится для CISCO первый пакет терялся.

Если возникли проблемы при согласовании туннеля, то поможет команда cisco-like консоли:

Gate1(config)# logging trap debugging

Она включает режим максимального логирования.

Крипто-шлюз

Смотрим Security Associations (SA):

Туннель поднять удалось, на этом пока всё.

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

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