Построение отказоустойчивого решения с балансировкой трафика (GRE+OSPF)

Скачать в формате PDF

Настоящий документ содержит описание способа совместного использования Продуктов компании ООО «С-Терра СиЭсПи» и Продуктов третьих производителей.

ООО «С-Терра СиЭсПи» осуществляет сопровождение настоящего сценария в части настроек Продуктов Компании. Упоминание наименований, продуктов, торговых марок третьих организаций исключительно неформально и не является поддержкой, рекомендацией либо рекламой. ООО «С-Терра СиЭсПи» не несет какой-либо ответственности в отношении работоспособности и использования этих Продуктов. Документ имеет статус вспомогательного материала, который может быть использован технологическими партнерами, компаниями-интеграторами, при разработке собственных решений.

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

Введение

Данный сценарий содержит пример настойки отказоустойчивого решения, где трафик между защищаемыми подсетями центрального офиса и филиала балансируется по нескольким параллельным GRE туннелям, каждый из которых защищается шлюзами безопасности «С-Терра Шлюз 4.3». Инкапсуляция трафика в GRE и балансировка выполняются на маршрутизаторах, находящихся в доверенной зоне за криптошлюзами.

Обеспечение безопасного взаимодействия достигается путем шифрования и туннелирования трафика с применением отечественных отраслевых стандартов ГОСТ и протокола IPsec.

Все остальные соединения разрешены, но защищаться при помощи IPsec не будут.

В рамках данного сценария для аутентификации партнеры будут использовать сертификаты. В качестве криптопровайдера будет использована криптографическая библиотека, разработанная компанией «С-Терра СиЭсПи». Шлюзы безопасности (или криптошлюзы) - «С-Терра Шлюз» версии 4.3.

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

Требования к материально-техническому обеспечению

Для переноса запросов и сертификатов между криптошлюзами и центром выпуска сертификатов требуется USB Flash накопитель.

Требования к квалификации администратора

Администратор должен обладать обширными знаниями в области сетевой информационной безопасности, иметь опыт работы с аналогичным оборудованием/программным обеспечением, знать и понимать следующие технологии и протоколы: PKI, IPsec, GRE, OSPF, Firewall, routing, switching.

Требования к инфраструктуре

1.    Требования к устройствам.

1.1.      С-Терра Шлюз.

1.1.1      Устройства С-Терра Шлюз должны быть инициализированы (подробнее на http://doc.s-terra.ru раздел С-Терра Шлюз -> С-Терра Шлюз 4.3 -> «Подключение ПАК и инициализация С-Терра Шлюз на вычислительных системах архитектуры Intel x86-64»).

1.2.      Центр выпуска сертификатов.

1.2.1      Должен быть настроен центр выпуска сертификатов (удостоверяющий центр, далее УЦ) для IPsec. Устройство с именем Certification_authority на схеме.

1.2.2      Для выпуска цифровых сертификатов допускается использование встроенного в OC Windows Server 2008R2 (или новее) удостоверяющего центра совместно с сертифицированным СКЗИ «КриптоПро» CSP 4.0 (или новее).

1.2.3      Для тестовых целей можно использовать тестовый УЦ от «КриптоПро» (веб-интерфейс: https://www.cryptopro.ru/certsrv/certrqxt.asp).

Категорически запрещено использование тестового УЦ от «КриптоПро» в производственной (боевой) эксплуатации, так как в данном случае отсутствует возможность контролировать процесс выпуска сертификатов и, соответственно, процедуру аутентификации.

1.3.      HTTP сервер для распространения списка отозванных сертификатов.

1.3.1      Функционирующий HTTP сервер для распространения списка отозванных сертификатов (СОС). Устройство с именем CRL_distribution_point на схеме. Если по объективным причинам использование СОС не представляется возможным или не требуется, то проверку СОС можно отключить в CLI.

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

2.    Требования к сетевому взаимодействию.

2.1.      Между устройствами стенда должна быть обеспечена IP связность.

 


 

Схема взаимодействия

 

Рисунок 1. Схема взаимодействия

Общая логика работы

1.    Размещение устройств.

1.1.      В центральном офисе размещаются: центр выпуска сертификатов (Certification_authority), коммутаторы (Int_Switch1_Hub и Ext_ Switch1_Hub), криптошлюзы С-Терра Шлюз (Hub1 и Hub2), маршрутизатор Hub-Router и персональный компьютер (host_behind_hub).

1.2.      В филиале размещаются: криптошлюзы С-Терра Шлюз (Spoke1 и Spoke2), коммутаторы (Int_switch1_spoke, Ext_switch1_spoke), маршрутизатор Spoke-Router и персональный компьютер host_behind_spoke.

1.3.      В неконтролируемом сегменте (синее облако на схеме) размещаются: HTTP сервер для распространения списка отозванных сертификатов (CRL_distribution_point), маршрутизатор (Router1).

2.    Балансировка трафика и отказоустойчивость.

В данном сценарии трафик, идущий из сети центрального офиса в филиал, инкапсулируется и балансируется по двум GRE туннелям (Tunnel1 и Tunnel2) на маршрутизаторе Hub-Router.

В качестве tunnel source для первого GRE-туннеля будет использоваться интерфейс Lo1 (10.10.100.1), в качестве tunnel destination - IP-адрес интерфейса Lo1 маршрутизатора Spoke-Router (10.10.1.1).

В качестве tunnel source для второго GRE-туннеля будет использоваться интерфейс Lo2 (10.10.100.2), в качестве tunnel destination - IP-адрес интерфейса Lo2 маршрутизатора Spoke-Router (10.10.1.2).

GRE трафик первого туннеля будет направляться через криптошлюз Hub1, трафик второго туннеля - через криптошлюз Hub2. GRE трафик маршрутизируется при помощи статических заданных маршрутов.

Аналогичным образом выполняется инкапсуляция и балансировка трафика из филиала в центральный офис на маршрутизаторе Spoke-Router.

Маршрутизаторы Hub-Router и Spoke-Router будут обмениваться информацией о маршрутах между защищаемыми подсетями центрального офиса и филиала с использованием протокола динамической маршрутизации OSPF. Обмен информацией будет происходить по GRE туннелям.

В ситуации, когда все устройства стенда работают нормально, у маршрутизатора Hub-Router будут доступны два маршрута до подсети филиала (через GRE туннели Tunnel1 и Tunnel2) с одинаковой метрикой. В случае отказа одного из криптошлюзов, маршрут через соответствующий GRE туннель удалится из таблицы маршрутизации, и трафик будет направлен по оставшемуся активным GRE туннелю.

3.    Подключение к сети Интернет.

3.В данном сценарии для эмуляции сети Интернет используются маршрутизатор Router1.

Подключение к сети Интернет на устройствах С-Терра Шлюз будет считаться успешным, если по протоколу ICMP (или «ping») будет доступен HTTP сервер для распространения списка отозванных сертификатов (устройство CRL_distribution_point на схеме).

4.    Параметры безопасного взаимодействия.

Трафик GRE туннелей Tunnel1 и Tunnel2 между маршрутизаторами Hub-Router и Spoke-Router защищается с использованием алгоритмов ГОСТ и протокола IPsec в туннельном режиме.

Инициировать защищенное соединение может как GRE трафик от Hub-Router к Spoke-Router, так и наоборот.

4.1.      Параметры протокола IKE:

·         Аутентификация при помощи цифровых сертификатов, алгоритм подписи - ГОСТ Р 34.10-2012 (ключ 256 бит);

·         Алгоритм шифрования - ГОСТ 28147-89 (ключ 256 бит);

·         Алгоритм вычисления хеш-функции - ГОСТ Р 34.11-2012 ТК26 (ключ 256 бит);

·         Алгоритм выработки общего ключа (аналог алгоритма Диффи-Хеллмана) - VKO_GOSTR3410_2012_256 (ключ 256 бит).

4.2.      Параметры протокола ESP:

·         Комбинированный алгоритм шифрования и имитозащиты (контроль целостности) - ESP_GOST-4M-IMIT (ключ 256 бит).


 

Настройка стенда

Настройка устройства Router1

1.    Настройте IP адрес - 172.16.1.1 и маску - 255.255.255.0 на сетевом интерфейсе ens33.

2.    Настройте IP адрес - 172.16.100.1 и маску - 255.255.255.0 на сетевом интерфейсе ens34.

3.    Разрешите прохождение IP трафика.

Настройка устройства host_behind_hub

1.    Настройте IP адрес - 192.168.100.100 и маску - 255.255.255.0 на сетевом интерфейсе.

2.    Задайте маршрут по умолчанию через 192.168.100.1.

3.    Разрешите прием и отправку ICMP пакетов.

Настройка устройства host_behind_spoke

1.    Настройте IP адрес - 192.168.1.100 и маску - 255.255.255.0 на сетевом интерфейсе.

2.    Задайте маршрут по умолчанию через 192.168.1.1.

3.    Разрешите прием и отправку ICMP пакетов.


 

Настройка криптошлюза Hub1

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

Настройка может осуществляться и удаленно (по SSH), но исключительно по доверенному каналу связи. Доверенным каналом связи может считаться канал в пределах контролируемой зоны в случае отсутствия в нем нарушителя. Доверенным каналом связи также считается канал, защищенный при помощи протокола IPsec.

Начальные настройки

Дата и время на всех криптошлюзах и УЦ должны быть одинаковы, так как для аутентификации используются цифровые сертификаты, в которых зафиксированы дата и время начала их действия и окончания. Также одинаковые дата и время на всей инфраструктуре облегчают поиск неисправностей по лог-файлам.

1.    Войдите в CLI разграничения доступа. Для этого, после появления сообщения:

S-Terra administrative console

введите логин и пароль для CLI разграничения доступа:

Пользователь и пароль по умолчанию: administrator, s-terra. Обязательно смените пароль для пользователя administrator при помощи команды change user password.

login as: administrator

administrator's password:

administrator@sterragate]

2.    Установите правильный тип терминала (для putty тип терминала xterm) и требуемую ширину (для удобства работы), например:

administrator@sterragate] terminal terminal-type xterm

administrator@sterragate] terminal width 150

3.    Установите нужную временную зону и правильные дату и время на криптошлюзе, используя консоль linux bash. Для этого выполните следующие команды.

3.1.      Войдите в linux bash.

administrator@sterragate] system

Entering system shell...

3.2.      Установите нужную временную зону:

root@sterragate:~# dpkg-reconfigure tzdata

3.3.      Установите правильное время и дату (формат - месяц/день/год часы:минуты):

root@sterragate:~# date -s "07/04/2019 12:32"

Thu Jul  4 12:32:00 MSK 2019

4.    Установите надежный пароль для пользователя root (под данным пользователем осуществляется доступ по SSH в linux bash):

root@sterragate:~# passwd

Enter new UNIX password:

Retype new UNIX password:

passwd: password updated successfully

5.    Выйдите из linux bash обратно в CLI разграничения доступа:

root@sterragate:~# exit

logout

Leaving system shell...

administrator@sterragate]

Начальные настройки завершены.

Настройки PKI (запросы и сертификаты)

Продукт не поддерживает разностные (delta) списки отзыва сертификатов, только базовые. Учитывайте это при выборе или развертывании УЦ.

Для аутентификации партнеров по IPsec можно использовать только цифровые сертификаты, выпущенные при помощи сертифицированного СКЗИ.

Аутентификация по предопределенным ключам запрещена и возможна только в тестовых целях.

Закрытый ключ для сертификата криптошлюза будет сгенерирован при помощи утилиты cert_mgr с использованием биологического датчика случайных чисел (БИО ДСЧ). Если на криптошлюзе установлен аппаратный датчик случайных чисел, то для выработки случайных чисел по умолчанию будет использоваться аппаратный датчик. Закрытый ключ может храниться либо на файловой системе устройства, либо на защищенном ключевом носителе (токен). В данном сценарии закрытый ключ будет располагаться в специальном контейнере на файловой системе устройства. Если требуется, чтобы контейнер располагался на токене, то смотрите описание параметра create утилиты cert_mgr на портале документации http://doc.s-terra.ru.

В момент генерации ключевой пары будет также сгенерирован запрос на локальный сертификат криптошлюза. Данный запрос для его последующей доставки на УЦ будет сохранен на USB Flash накопитель.

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

При выполнении сторонних команд в CLI разграничения доступа/консоли cisco-like перед командой нужно указывать ключевое слово run. Автодополнение для команд, указываемых после run не поддерживается.

1.    Генерация закрытого ключа и запроса на сертификат криптошлюза.

1.1.      Вставьте USB Flash накопитель в свободный USB порт криптошлюза (накопитель будет автоматически примонтирован).

1.2.      Определите имя (идентификатор) USB Flash накопителя на криптошлюзе:

administrator@sterragate] dir media:

    1  dr-x         4096  Thu Jul  4 10:40:32 2019  1E181F1C181EF28F

Имя (идентификатор) USB Flash накопителя - 1E181F1C181EF28F.

1.3.      Запустите процесс генерации закрытого ключа и запроса на сертификат криптошлюза с сохранением файла запроса на USB Flash накопителе (закрытый ключ остается на криптошлюзе):

administrator@sterragate] run cert_mgr create -subj "C=RU,L=Zelenograd,O=S-Terra CSP,OU=RnD,CN=Hub1" -GOST_R341012_256 -fb64 media:1E181F1C181EF28F/hub1.request

·         ключ -subj задает отличительное имя сертификата (Distinguished Name, DN);

Отличительное имя сертификата должно быть уникальным для каждого устройства.

·         ключ -GOST_R341012_256 задает использование алгоритма подписи - ГОСТ Р 34.10-2012 (ключ 256 бит).

На УЦ для поддержки алгоритма ГОСТ Р 34.10-2012 (ключ 256 бит) должно быть установлено СКЗИ «КриптоПро CSP» версии 4.0 или новее.

·         ключ -fb64 задает месторасположение и формат представления запроса на сертификат; будет использован формат представления BASE64 с сохранением файла запроса в корень USB Flash накопителя под именем hub1.request.

Нажимайте предлагаемые клавиши на клавиатуре для инициализации БИО ДСЧ:

Progress: [********* ]

Press key: U

После завершения работы БИО ДСЧ файл запроса будет сохранен в корне USB Flash накопителя:

administrator@sterragate] dir media:1E181F1C181EF28F/

 1 -rwx 473 Thu Jul  4 10:40:32 2019 hub1.request

Настоятельно рекомендуется сохранить контейнер закрытого ключа при помощи утилиты cont_mgr. Контейнер может понадобиться в случае восстановления криптошлюза при отказе HDD/SSD диска. Носитель с файлом контейнера нужно хранить в защищенном и недоступном для третьих лиц месте.

1.4.      Отмонтируйте и извлеките USB Flash накопитель (посмотреть точки монтирования можно при помощи команды run mount):

administrator@sterragate] run umount /media/1E181F1C181EF28F

2.    Выпуск сертификата криптошлюза на УЦ и импортирование сертификатов УЦ и криптошлюза в базу Продукта.

2.1.      Доставьте файл запроса на УЦ и выпустите по нему сертификат криптошлюза.

2.2.      Скопируйте выпущенный сертификат для криптошлюза под именем hub1.cer и сертификат УЦ под именем ca.cer в корень USB Flash накопителя.

2.3.      Вновь вставьте USB Flash накопитель, содержащий файлы сертификатов, в свободный порт USB на криптошлюзе.

2.4.      Убедитесь в наличии сертификатов на USB Flash накопителе:

administrator@sterragate] dir media:1E181F1C181EF28F/

 1 -rwx 592 Thu Jul  4 10:40:32 2019 ca.cer

 2 -rwx 804 Thu Jul  4 10:40:32 2019 hub1.cer

 3 -rwx 473 Thu Jul  4 10:40:32 2019 hub1.request

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

2.5.      Импортируйте сертификат УЦ в базу Продукта:

administrator@sterragate] run cert_mgr import -f media:1E181F1C181EF28F/ca.cer -t

·         ключ -f задает месторасположение файла сертификата;

·         ключ -t используется для импортирования доверенного (trusted) сертификата УЦ.

2.6.      Импортируйте сертификат криптошлюза в базу Продукта:

administrator@sterragate] run cert_mgr import -f media:1E181F1C181EF28F/hub1.cer

2.7.      Убедитесь, что сертификаты успешно импортированы в базу Продукта:

administrator@sterragate] run cert_mgr show

Found 2 certificates. No CRLs found.

1 Status: trusted C=RU,L=Zelenograd,O=S-Terra CSP,OU=RnD,CN=S-Terra CSP Test Root CA

2 Status: local   C=RU,L=Zelenograd,O=S-Terra CSP,OU=RnD,CN=Hub1

Видно, что сертификат УЦ импортирован как trusted, а сертификат криптошлюза как local (local означает, что для данного сертификата есть соответствующий ключевой контейнер).

2.8.      Выполните проверку статуса сертификатов в базе Продукта:

administrator@sterragate] run cert_mgr check

1 State: Inactive C=RU,L=Zelenograd,O=S-Terra CSP,OU=RnD,CN=S-Terra CSP Test Root CA

                  Certificate can not be verified.

2 State: Inactive C=RU,L=Zelenograd,O=S-Terra CSP,OU=RnD,CN=Hub1

                  Certificate can not be verified.

Видно, что все сертификаты имеют статус Inactive (неактивный) с пометкой: «Certificate can not be verified» (сертификат не может быть проверен). Причиной этому является включенный по умолчанию в консоли cisco-like механизм проверки списка отозванных сертификатов (далее СОС или CRL). Так как в базе Продукта СОС отсутствует, поэтому проверка не может быть осуществлена. Далее будет описан процесс настройки автоматической загрузки СОС и импортирование его в базу Продукта. Загрузка СОС осуществляется по протоколу HTTP с заданной периодичностью.

Настройка паролей доступа к консоли cisco-like

1.    Войдите в cisco-like консоль из CLI разграничения доступа:

Пользователь и пароль по умолчанию cscons, csp. Обязательно смените пароль для пользователя cscons, так как под этим пользователем осуществляется доступ по SSH в cisco-like консоль. Также не забудьте сменить enable пароль.

administrator@sterragate] configure

sterragate login: cscons

Password:

S-Terra Gate 4.3.XXXXX (amd64)

sterragate#

2.    Смените пароль для пользователя cscons и на enable:

sterragate#configure terminal

Enter configuration commands, one per line.  End with CNTL/Z.

sterragate(config)#username cscons secret 0 ПАРОЛЬ

sterragate(config)#enable secret 0 ПАРОЛЬ

Настройка сетевых параметров

Изменение состояния интерфейсов и назначение IP адресов применяются сразу после ввода соответствующих команд. Политика безопасности применяется после выхода из режима конфигурирования.

1.    Задайте имя устройства:

sterragate(config)#hostname Hub1

2.    Включите внешний GigabitEthernet0/0 и внутренний GigabitEthernet0/1 интерфейсы:

Hub1(config)#interface range GigabitEthernet 0/0 - 1

Hub1(config-if-range)#no shutdown

Hub1(config-if-range)#exit

3.    Убедитесь, что интерфейсы административно включены и line protocol (способность интерфейса передавать пакеты в данный момент) находится в состоянии up:

Hub1(config)#do show interfaces

GigabitEthernet0/0 is up, line protocol is up

  Hardware address is 0050.569e.b06d

  MTU 1500 bytes

GigabitEthernet0/1 is up, line protocol is up

  Hardware address is 0050.569e.d3c3

  MTU 1500 bytes

...

Если line protocol находится в состоянии down, то проверьте подключение сетевого интерфейса криптошлюза к коммутационному или прочему оборудованию.

4.    Задайте IP адреса в соответствии со схемой стенда на внешнем GigabitEthernet0/0 и внутреннем GigabitEthernet0/1 интерфейсах:

Hub1(config)#interface GigabitEthernet 0/0

Hub1(config-if)#ip address 172.16.100.10 255.255.255.0

Hub1(config-if)#exit

Hub1(config)#interface GigabitEthernet 0/1

Hub1(config-if)#ip address 192.168.254.10 255.255.255.0

Hub1(config-if)#exit

5.    Задайте маршрут до интерфейса Loopback1 маршрутизатора Hub-Router через IP-адрес его интерфейса ens33:

Hub1(config)#ip route 10.10.100.1 255.255.255.255 192.168.254.1

6.    Задайте маршрут по умолчанию через устройство Router1:

Hub1(config)#ip route 0.0.0.0 0.0.0.0 172.16.100.1

7.    Проверьте доступность устройства Router1:

Hub1(config)#do ping 172.16.100.1

PING 172.16.100.1 (172.16.100.1) 100(128) bytes of data.

108 bytes from 172.16.100.1: icmp_seq=1 ttl=64 time=1.13 ms

108 bytes from 172.16.100.1: icmp_seq=2 ttl=64 time=0.237 ms

108 bytes from 172.16.100.1: icmp_seq=3 ttl=64 time=0.192 ms

108 bytes from 172.16.100.1: icmp_seq=4 ttl=64 time=0.200 ms

108 bytes from 172.16.100.1: icmp_seq=5 ttl=64 time=0.299 ms

 

--- 172.16.100.1 ping statistics ---

5 packets transmitted, 5 received, 0% packet loss, time 4078ms

rtt min/avg/max/mdev = 0.192/0.411/1.131/0.362 ms

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

1.    Параметры IKE.

1.1.      Укажите в качестве типа идентификатора, используемого в рамках протокола IKE, отличительное имя (Distinguished Name, DN):

Hub1(config)#crypto isakmp identity dn

По умолчанию отличительное имя будет взято из сертификата устройства, например, для Hub1 это «C=RU,L=Zelenograd,O=S-Terra CSP,OU=RnD,CN=Hub1».

1.2.      Настройте параметры DPD (dead peer detection):

Hub1(config)#crypto isakmp keepalive 3 2

Hub1(config)#crypto isakmp keepalive retry-count 5

Пояснение:

Если в течение 3 секунд отсутствует входящий трафик в IPsec туннеле, то с интервалом в 2 секунды посылается 5 keepalive пакетов в рамках IKE туннеля, чтобы удостовериться в работоспособности туннеля. Если партнер не отвечает на keepalive пакеты, то соответствующий IKE туннель и связанные с ним IPsec туннели уничтожаются. В случае наличия исходящего защищаемого трафика происходит попытка создания новых IKE/IPsec туннелей.

1.3.      Включите фрагментацию IKE пакетов:

Hub1(config)#crypto isakmp fragmentation

1.4.      Включите случайный разброс времени жизни IKE и IPsec SA, чтобы снизить нагрузку на шлюз (позволяет избежать единовременное массовое пересоздания SA):

Hub1(config)#crypto isakmp security-association lifetime delta 50

1.5.      Увеличьте допустимое количество одновременно инициируемых IKE сессий (не путать с общим количеством IKE сессий) для всех партнёров (значение по умолчанию 30):

Hub1(config)#crypto isakmp initiator-sessions-max 100

1.6.      Увеличьте допустимое количество одновременных IKE обменов, проводимых шлюзом со всеми партнерами в качестве ответчика (не путать с общим количеством IKE сессий; значение по умолчанию 20):

Hub1(config)#crypto isakmp responder-sessions-max 100

1.7.      Создайте политику, описывающую параметры IKE туннеля:

Hub1(config)#crypto isakmp policy 1

Hub1(config-isakmp)# encryption gost

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

Hub1(config-isakmp)# authentication gost-sig

Hub1(config-isakmp)# group vko2

Hub1(config-isakmp)# exit

Рекомендуется использовать одну политику для IKE туннелей. Несколько политик может потребоваться в том случае, если необходимо обеспечить совместимость со старыми версиями Продуктов, в которых нет поддержки новых алгоритмов.

2.    Параметры IPsec.

2.1.      Задайте комбинированный алгоритм шифрования и имитозащиты (набор преобразований) для трафика:

Hub1(config)# crypto ipsec transform-set GOST_ENCRYPT_AND_INTEGRITY esp-gost28147-4m-imit

Hub1(cfg-crypto-trans)#exit

2.2.      Создайте список доступа (ACL) для трафика, который нужно защищать. Криптошлюз Hub1 будет защищать трафик первого GRE туннеля между маршрутизаторами Hub-Router и Spoke-Router:

Hub1(config)#ip access-list extended IPSEC_GRE_TUNNEL_1

Hub1(config-ext-nacl)#permit gre host 10.10.100.1 host 10.10.1.1

Hub1(config-ext-nacl)#exit

Hub1(config)#

2.3.      Создайте крипто-карту (имя VPN, раздел 1):

Hub1(config)#crypto map VPN 1 ipsec-isakmp

2.3.1      Укажите список доступа для защищаемого трафика:

Hub1(config-crypto-map)# match address IPSEC_GRE_TUNNEL_1

2.3.2      Укажите при помощи какого набора алгоритмов нужно защищать трафик:

Hub1(config-crypto-map)# set transform-set GOST_ENCRYPT_AND_INTEGRITY

2.3.3      Укажите IP адрес партнера по IPsec, в данном сценарии это внешний IP адрес устройства Spoke1:

Hub1(config-crypto-map)# set peer 172.16.1.10

2.3.4      Обязательно отключите историю удаленных туннелей (если не отключить, то могут быть проблемы с построением IPsec туннелей с устройствами, которые находятся за NAT):

Hub1(config-crypto-map)# set dead-connection history off

Hub1(config-crypto-map)#exit

2.4.      Прикрепите созданную крипто-карту VPN к внешнему интерфейсу GigabitEthernet0/0:

Hub1(config)#interface GigabitEthernet0/0

Hub1(config-if)# crypto map VPN

Hub1(config-if)# exit

2.5.      Примените настройки:

Hub1(config-if)#end

Настройка политики обработки СОС (CRL)

В целях безопасности настоятельно рекомендуется включать проверку списков отзыва сертификатов. Разностные списки отозванных сертификатов (delta CRL) не поддерживаются.

1.    Включите проверку СОС:

Hub1#configure terminal

Hub1(config)# crypto pki trustpoint s-terra_technological_trustpoint

Hub1(ca-trustpoint)# revocation-check crl

Если по обоснованным причинам использование СОС невозможно, то выключите проверку СОС и не включайте автоматическую загрузку СОС:

Hub1(ca-trustpoint)# revocation-check none

2.    Включите автоматическую загрузку и импортирование в базу Продукта списка отозванных сертификатов с HTTP сервера CRL_distribution_point:

Hub1(ca-trustpoint)# crl download group ROOTCA http://172.16.101.15/certcrl.crl

3.    Настройте периодичность загрузки СОС в 60 минут (по умолчанию 24 часа):

Hub1(ca-trustpoint)# crl download time 60

4.    Примените настройки:

Hub1(ca-trustpoint)#end

5.    Проверьте загружен ли СОС в базу Продукта:

Hub1#run cert_mgr show

Found 2 certificates. Found 1 CRL.

1 Status: trusted C=RU,L=Zelenograd,O=S-Terra CSP,OU=RnD,CN=S-Terra CSP Test Root CA

2 Status: local   C=RU,L=Zelenograd,O=S-Terra CSP,OU=RnD,CN=Hub1

3 CRL: C=RU,L=Zelenograd,O=S-Terra CSP,OU=RnD,CN=S-Terra CSP Test Root CA

Если СОС не загрузился, то проверьте файл журнала, например:

Hub1#run grep getcrls_daemon /var/log/cspvpngate.log

Примечание: чтобы не ждать следующего периода загрузки СОС можно перезапустить сервис getcrls вручную:

Hub1#run systemctl restart getcrls.service

6.    Выполните проверку статуса сертификатов в базе Продукта:

Hub1#run cert_mgr check

1 State: Active   C=RU,L=Zelenograd,O=S-Terra CSP,OU=RnD,CN=S-Terra CSP Test Root CA

2 State: Active   C=RU,L=Zelenograd,O=S-Terra CSP,OU=RnD,CN=Hub1

Настройка криптошлюза Hub1 завершена.

В Приложении представлены тексты конфигураций для криптошлюза Hub1:

·         текст консоли cisco-like;

·         текст LSP.


 

Настройка криптошлюза Spoke1

Настройка криптошлюза Spoke1 происходит аналогично настройке Hub1.

В Приложении представлены тексты конфигураций для криптошлюза Spoke1:

·         текст консоли cisco-like;

·         текст LSP.

Настройка криптошлюза Hub2

Настройка криптошлюза Hub2 происходит аналогично настройке Hub1.

В Приложении представлены тексты конфигураций для криптошлюза Hub2:

·         текст консоли cisco-like;

·         текст LSP.

Настройка криптошлюза Spoke2

Настройка криптошлюза Spoke2 происходит аналогично настройке Hub1.

В Приложении представлены тексты конфигураций для криптошлюза Spoke2:

·         текст консоли cisco-like;

·         текст LSP.


 

Настройка маршрутизатора Hub-Router

В данном сценарии используются маршрутизаторы на базе ОС Debian 10. В качестве протокола динамической маршрутизации будет использоваться OSPF, входящий в состав пакета FRRouting (https://frrouting.org).

Настройка сетевых параметров

1.    Настройте IP адрес - 192.168.100.1 и маску - 255.255.255.0 на сетевом интерфейсе ens35.

2.    Настройте IP адрес - 192.168.254.1 и маску - 255.255.255.0 на сетевом интерфейсе ens34.

3.    Разрешите прохождение IP трафика.

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

Для создания интерфейсов, которые будут использоваться в качестве source и destination для GRE туннелей, нужно добавить в систему два интерфейса типа dummy.

1.    Создайте файл /etc/network/interfaces.d/lo1 со следующим содержимым:

auto lo1

iface lo1 inet static

address 10.10.100.1

netmask 255.255.255.255

 

pre-up ip link add lo1 type dummy

 

post-down ip link delete lo1

2.    Создайте файл /etc/network/interfaces.d/lo2 со следующим содержимым:

auto lo2

iface lo2 inet static

address 10.10.100.2

netmask 255.255.255.255

 

pre-up ip link add lo2 type dummy

 

post-down ip link delete lo2

3.    Включите интерфейсы lo1 и lo2:

root@Hub-Router:~# ifup lo1

root@Hub-Router:~# ifup lo2

4.    Убедитесь, что данные интерфейсы доступны в системе и им назначены IP-адреса, например, в выводе команды ip a:

root@Hub-Router:~# ip a

...

5: lo1: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000

    link/ether 1a:cb:76:48:e3:0f brd ff:ff:ff:ff:ff:ff

    inet 10.10.100.1/32 brd 10.10.100.1 scope global lo1

       valid_lft forever preferred_lft forever

6: lo2: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000

    link/ether 2e:a9:bf:cb:93:de brd ff:ff:ff:ff:ff:ff

    inet 10.10.100.2/32 brd 10.10.100.2 scope global lo2

       valid_lft forever preferred_lft forever

...

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

Для добавления GRE туннелей в систему, нужно создать два интерфейса в режиме gre.

В данном сценарии адреса для туннельных интерфейсов будут назначаться из подсети 100.100.101.0/30 для первого GRE туннеля и из подсети 100.100.102.0/30 для второго GRE туннеля.

1.    Создайте файл /etc/network/interfaces.d/tunnel1 со следующим содержимым:

auto tunnel1

iface tunnel1 inet static

address 100.100.101.1

netmask 255.255.255.252

 

pre-up ip tunnel add tunnel1 mode gre local 10.10.100.1 remote 10.10.1.1 ttl 64

pre-up ip link set tunnel1 multicast on

pre-up ip link set tunnel1 mtu 1400

 

post-down ip link del tunnel1

2.    Создайте файл /etc/network/interfaces.d/tunnel2 со следующим содержимым:

auto tunnel2

iface tunnel2 inet static

address 100.100.102.1

netmask 255.255.255.252

 

pre-up ip tunnel add tunnel2 mode gre local 10.10.100.2 remote 10.10.1.2 ttl 64

pre-up ip link set tunnel2 multicast on

pre-up ip link set tunnel2 mtu 1400

 

post-down ip link del tunnel2

3.    Включите интерфейсы tunnel1 и tunnel2:

root@Hub-Router:~# ifup tunnel1

root@Hub-Router:~# ifup tunnel2

4.    Убедитесь, что данные интерфейсы доступны в системе и им назначены IP-адреса, например, в выводе команды ip a:

root@Hub-Router:~# ip a

...

10: tunnel1@NONE: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1400 qdisc noqueue state UNKNOWN group default qlen 1000

    link/gre 10.10.100.1 peer 10.10.1.1

    inet 100.100.101.1/30 brd 100.100.101.3 scope global tunnel1

       valid_lft forever preferred_lft forever

11: tunnel2@NONE: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1400 qdisc noqueue state UNKNOWN group default qlen 1000

    link/gre 10.10.100.2 peer 10.10.1.2

    inet 100.100.102.1/30 brd 100.100.102.3 scope global tunnel2

       valid_lft forever preferred_lft forever

...

Настройка статических маршрутов

1.    Задайте статический маршрут до destination IP-адреса GRE туннеля Tunnel1 (10.10.1.1) через криптошлюз Hub1 (192.168.254.10).

2.    Задайте статический маршрут до destination IP-адреса GRE туннеля Tunnel1 (10.10.1.2) через криптошлюз Hub2 (192.168.254.20).

Настройка динамической маршрутизации

Настройка FRR

1.    В конфигурационном файле /etc/frr/daemons установите значение yes для демона ospfd:

ospfd=yes

2.    Перезапустите сервис FRR:

root@Hub-Router:~# service frr restart

3.    Убедитесь, что демон ospfd запущен:

root@Hub-Router:~# ps -ef | grep "ospfd"

root        484      1  0 12:34 ?        00:00:00 /usr/lib/frr/watchfrr -d -F traditional zebra ospfd staticd

frr         543      1  0 12:34 ?        00:00:00 /usr/lib/frr/ospfd -d -F traditional -A 127.0.0.1

Настройка OSPF

1.    Войдите в консоль FRR:

root@Hub-Router:~# vtysh

Hello, this is FRRouting (version 7.3.1).

Copyright 1996-2005 Kunihiro Ishiguro, et al.

 

Hub-Router#

2.    Перейдите в режим конфигурации:

Hub-Router# configure terminal

Hub-Router(config)#

3.    Включите процесс OSPF:

Hub-Router(config)# router ospf

Hub-Router(config-router)#

4.    Задайте router-id:

Hub-Router(config-router)# ospf router-id 192.168.100.1

5.    Отключите отправку Hello пакетов на всех интерфейсах по умолчанию:

Hub-Router(config-router)# passive-interface default

6.    Включите отправку Hello пакетов на интерфейсах tunnel1 и tunnel2:

Hub-Router(config-router)# no passive-interface tunnel1

Hub-Router(config-router)# no passive-interface tunnel2

7.    Включите OSPF для подсети центрального офиса (192.168.100.0/24) и для подсетей GRE туннелей (100.100.101.0/30 и 100.100.101.0/30):

Hub-Router(config-router)# network 192.168.100.0/24 area 0

Hub-Router(config-router)# network 100.100.101.0/30 area 0

Hub-Router(config-router)# network 100.100.102.0/30 area 0

8.    Выйдите из режима конфигурации OSPF:

Hub-Router(config-router)# exit

Hub-Router(config)#

9.    Завершите процедуру конфигурации:

Hub-Router(config)# end

10.  Сохраните текущую конфигурацию (она будет записана в файл /etc/frr/frr.conf):

Hub-Router# write memory

Note: this version of vtysh never writes vtysh.conf

Building Configuration...

Integrated configuration saved to /etc/frr/frr.conf

[OK]

11.  Выйдите из консоли FRR обратно в linux-консоль:

Hub-Router# exit

root@Hub-Router:~#


 

Настройка маршрутизатора Spoke-Router

Настройка маршрутизатора Spoke-Router осуществляется аналогично Hub-Router. В Приложении представлены текст конфигурации FRR и настройки для Lo и GRE интерфейсов.

Дополнительные настройки стенда

Настройка маршрутов по умолчанию

Если из подсетей центрального офиса и филиала нужно обеспечить доступ в интернет, то необходимо настроить маршруты по умолчанию на маршрутизаторах Hub-Router и Spoke-Router. Для обеспечения отказоустойчивости настройте получение маршрута по умолчанию с помощью динамической маршрутизации.

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

В случае, когда по какой-либо причине полностью отсутствует IPsec соединение, на маршрутизаторах Hub-Router и Spoke-Router будет динамически удалена информация о маршрутах через GRE туннели, и таким образом трафик, идущий из подсети центрального офиса в филиал (и наоборот) не будет инкапсулирован в GRE и будет направлен через маршруты по умолчанию, заданные на Hub-Router и Spoke-Router. В целях безопасности, на криптошлюзах следует заблокировать прохождение этого трафика.


 

Проверка работоспособности стенда

Проверка IPsec соединений

Проверьте наличие IPsec туннелей на криптошлюзах с помощью команды run sa_mgr show из cisco-like консоли криптошлюзов. Обратите внимание на номер протокола в разделе IPsec connections, номер 47 соответствует протоколу GRE.

Эти IPsec туннели должны появиться сразу после настройки маршрутизаторов Hub-Router и Spoke-Router, так как построение защищенного соединения будет инициировано GRE трафиком в связи с началом обмена информацией по протоколу OSPF.

1.    На криптошлюзе Hub1:

Hub1#run sa_mgr show

ISAKMP sessions: 0 initiated, 0 responded

 

ISAKMP connections:

Num Conn-id (Local Addr,Port)-(Remote Addr,Port) State Sent Rcvd

1 1 (172.16.100.10,500)-(172.16.1.10,500) active 39952 39880

 

IPsec connections:

Num Conn-id (Local Addr,Port)-(Remote Addr,Port) Protocol Action Type Sent Rcvd

1 1 (10.10.100.1,*)-(10.10.1.1,*) 47 ESP tunn 29608 28808

2.    На криптошлюзе Spoke1:

Spoke1#run sa_mgr show

ISAKMP sessions: 0 initiated, 0 responded

 

ISAKMP connections:

Num Conn-id (Local Addr,Port)-(Remote Addr,Port) State Sent Rcvd

1 1 (172.16.1.10,500)-(172.16.100.10,500) active 39880 39952

 

IPsec connections:

Num Conn-id (Local Addr,Port)-(Remote Addr,Port) Protocol Action Type Sent Rcvd

1 1 (10.10.1.1,*)-(10.10.100.1,*) 47 ESP tunn 28808 29608

3.    На криптошлюзе Hub2:

Hub2#run sa_mgr show

ISAKMP sessions: 0 initiated, 0 responded

 

ISAKMP connections:

Num Conn-id (Local Addr,Port)-(Remote Addr,Port) State Sent Rcvd

1 1 (172.16.100.20,500)-(172.16.1.20,500) active 40252 40180

 

IPsec connections:

Num Conn-id (Local Addr,Port)-(Remote Addr,Port) Protocol Action Type Sent Rcvd

1 1 (10.10.100.2,*)-(10.10.1.2,*) 47 ESP tunn 29248 28256

4.    На криптошлюзе Spoke2:

Spoke2#run sa_mgr show

ISAKMP sessions: 0 initiated, 0 responded

 

ISAKMP connections:

Num Conn-id (Local Addr,Port)-(Remote Addr,Port) State Sent Rcvd

1 1 (172.16.1.20,500)-(172.16.100.20,500) active 40180 40252

 

IPsec connections:

Num Conn-id (Local Addr,Port)-(Remote Addr,Port) Protocol Action Type Sent Rcvd

1 1 (10.10.1.2,*)-(10.10.100.2,*) 47 ESP tunn 28256 29248

Проверка наличия маршрутов

Проверьте, что на маршрутизаторах Hub-Router и Spoke-Router появилась информация о маршрутах до удаленных подсетей:

1.    На устройстве Hub-Router должен появиться маршрут до подсети филиала:

root@Hub-Router:~# ip r

10.10.1.1 via 192.168.254.10 dev ens34

10.10.1.2 via 192.168.254.20 dev ens34

100.100.101.0/30 dev tunnel1 proto kernel scope link src 100.100.101.1

100.100.102.0/30 dev tunnel2 proto kernel scope link src 100.100.102.1

192.168.100.0/24 dev ens35 proto kernel scope link src 192.168.100.1

192.168.254.0/24 dev ens34 proto kernel scope link src 192.168.254.1

192.168.1.0/24 proto ospf metric 20

       nexthop via 100.100.101.2 dev tunnel1 weight 1

       nexthop via 100.100.102.2 dev tunnel2 weight 1

2.    На устройстве Spoke-Router должен появиться маршрут до подсети центрального офиса:

root@Spoke-Router:~# ip r

10.10.100.1 via 192.168.253.10 dev ens34

10.10.100.2 via 192.168.253.20 dev ens34

100.100.101.0/30 dev tunnel1 proto kernel scope link src 100.100.101.2

100.100.102.0/30 dev tunnel2 proto kernel scope link src 100.100.102.2

192.168.1.0/24 dev ens35 proto kernel scope link src 192.168.1.1

192.168.253.0/24 dev ens34 proto kernel scope link src 192.168.253.1

192.168.100.0/24 proto ospf metric 20

       nexthop via 100.100.101.1 dev tunnel1 weight 1

       nexthop via 100.100.102.1 dev tunnel2 weight 1

Проверка сетевого соединения между подсетями центрального офиса и филиала.

С устройства host_behind_hub выполните проверку доступности устройства host_behind_spoke (можно и наоборот) с помощью отправки ICMP трафика. Для этого выполните команду ping из linux bash консоли устройства host_behind_hub:

root@host_behind_hub:~# ping 192.168.1.100 -c 5

PING 192.168.1.100 (192.168.1.100) 56(84) bytes of data.

64 bytes from 192.168.1.100: icmp_seq=1 ttl=62 time=3.30 ms

64 bytes from 192.168.1.100: icmp_seq=2 ttl=62 time=2.19 ms

64 bytes from 192.168.1.100: icmp_seq=3 ttl=62 time=2.20 ms

64 bytes from 192.168.1.100: icmp_seq=4 ttl=62 time=2.13 ms

64 bytes from 192.168.1.100: icmp_seq=5 ttl=62 time=2.16 ms

 

--- 192.168.1.100 ping statistics ---

5 packets transmitted, 5 received, 0% packet loss, time 12ms

rtt min/avg/max/mdev = 2.130/2.397/3.303/0.454 ms


 

Приложение

Конфигурация криптошлюза Hub1

Конфигурация cisco-like:

version 12.4

no service password-encryption

!

crypto ipsec df-bit copy

crypto isakmp identity dn

crypto isakmp fragmentation

crypto isakmp security-association lifetime delta 50

crypto isakmp initiator-sessions-max 100

crypto isakmp responder-sessions-max 100

crypto isakmp keepalive 3

crypto isakmp keepalive retry-count 5

username cscons privilege 15 secret 5 $6$tHtq8SR6$t3CWE6udI6L/ARr9jQowUYR7wEbOWZlx61OvLi7goonOFUYhNSGV49BA.RDGEZ7oKXBA1aTRi20ElR4wtMXTl0

aaa new-model

!

!

hostname Hub1

enable secret 5 PC9d7N5HlAyLrzuA3qRJvQ==

!

!

!

!

!

crypto isakmp policy 1

 encr gost

 hash gost341112-256-tc26

 authentication gost-sig

 group vko2

!

crypto ipsec transform-set GOST_ENCRYPT_AND_INTEGRITY esp-gost28147-4m-imit

!

ip access-list extended IPSEC_GRE_TUNNEL_1

 permit gre host 10.10.100.1 host 10.10.1.1

!

!

crypto map VPN 1 ipsec-isakmp

 match address IPSEC_GRE_TUNNEL_1

 set transform-set GOST_ENCRYPT_AND_INTEGRITY

 set peer 172.16.1.10

 set dead-connection history off

!

interface GigabitEthernet0/0

 ip address 172.16.100.10 255.255.255.0

 crypto map VPN

!

interface GigabitEthernet0/1

 ip address 192.168.254.10 255.255.255.0

!

!

ip route 0.0.0.0 0.0.0.0 172.16.100.1

ip route 10.10.100.1 255.255.255.255 192.168.254.1

!

crypto pki trustpoint s-terra_technological_trustpoint

 revocation-check crl

 crl download group ROOTCA http://172.16.101.15/certcrl.crl

 crl download time 60

crypto pki certificate chain s-terra_technological_trustpoint

certificate 58E026BFD6D625BE4582C16C6189C183

...

AD4F8901771632E0A0AF83

 

quit

!

End

Конфигурация LSP:

GlobalParameters(

    Title                       = "This LSP was automatically generated by CSP Converter"

    Version                     = LSP_4_3

    CRLHandlingMode             = ENABLE

    PreserveIPsecSA             = FALSE

)

 

RoutingTable(

    Routes =

        Route(

            Destination = 0.0.0.0/0

            Gateway = 172.16.100.1

        ),

        Route(

            Destination = 10.10.100.1

            Gateway = 192.168.254.1

        )

)

 

FirewallParameters(

    TCPSynSentTimeout = 30

    TCPFinTimeout = 5

    TCPClosedTimeout = 30

    TCPSynRcvdTimeout = 30

    TCPEstablishedTimeout = 3600

    TCPHalfOpenLow = 400

    TCPHalfOpenMax = 500

    TCPSessionRateLow = 400

    TCPSessionRateMax = 500

)

 

IKETransform crypto:isakmp:policy:1

(

    CipherAlg   = "G2814789CPRO1-K256-CBC-65534"

    HashAlg     = "GR341112_256TC26-65128"

    GroupID     = VKO2_1B

    RestrictAuthenticationTo = GOST_SIGN

    LifetimeSeconds = 86400

)

 

ESPProposal GOST_ENCRYPT_AND_INTEGRITY:ESP

(

    Transform* = ESPTransform

    (

        CipherAlg*          = "G2814789CPRO2-K288-CNTMAC-253"

        LifetimeSeconds     = 3600

        LifetimeKilobytes   = 4608000

    )

)

 

IKEParameters(

    FragmentSize = 576

    SALifetimeDelta = 50

    InitiatorSessionsMax = 100

    ResponderSessionsMax = 100

)

 

AuthMethodGOSTSign GOST:Sign

(

    LocalID        =  IdentityEntry( DistinguishedName* = USER_SPECIFIC_DATA )

    SendRequestMode    =  ALWAYS

    SendCertMode       =  ALWAYS

)

 

IKERule IKERule:VPN:1

(

    IKEPeerIPFilter = 172.16.1.10

    Transform = crypto:isakmp:policy:1

    AggrModeAuthMethod  = GOST:Sign

    MainModeAuthMethod  = GOST:Sign

    DPDIdleDuration     = 3

    DPDResponseDuration = 2

    DPDRetries          = 5

    Priority            = 10

)

 

IPsecAction IPsecAction:VPN:1

(

    TunnelingParameters = TunnelEntry(

        PeerAddress = 172.16.1.10

        DFHandling=COPY

        Assemble=TRUE

    )

    ContainedProposals = ( GOST_ENCRYPT_AND_INTEGRITY:ESP )

    NoDeadConnectionHistory = TRUE

    IKERule = IKERule:VPN:1

)

 

FilterChain IPsecPolicy:VPN (

    Filters = Filter (

        ProtocolID = 17

        SourcePort = 500, 4500

        Action = PASS

        PacketType = LOCAL_UNICAST, LOCAL_MISDIRECTED

    ),

    Filter (

        SourceIP = 10.10.100.1

        DestinationIP = 10.10.1.1

        ProtocolID = 47

        Action = PASS

        ExtendedAction = ipsec< sa = IPsecAction:VPN:1 >

        LogEventID = "IPsec:Protect:VPN:1:IPSEC_GRE_TUNNEL_1"

    )

)

 

NetworkInterface (

    LogicalName = "GigabitEthernet0/0"

    IPsecPolicy = IPsecPolicy:VPN

)

Конфигурация шлюза Hub2

Конфигурация cisco-like:

version 12.4

no service password-encryption

!

crypto ipsec df-bit copy

crypto isakmp identity dn

crypto isakmp fragmentation

crypto isakmp security-association lifetime delta 50

crypto isakmp initiator-sessions-max 100

crypto isakmp responder-sessions-max 100

crypto isakmp keepalive 3

crypto isakmp keepalive retry-count 5

username cscons privilege 15 secret 5 $6$tHtq8SR6$t3CWE6udI6L/ARr9jQowUYR7wEbOWZlx61OvLi7goonOFUYhNSGV49BA.RDGEZ7oKXBA1aTRi20ElR4wtMXTl0

aaa new-model

!

!

hostname Hub2

enable secret 5 PC9d7N5HlAyLrzuA3qRJvQ==

!

!

!

!

!

crypto isakmp policy 1

 encr gost

 hash gost341112-256-tc26

 authentication gost-sig

 group vko2

!

crypto ipsec transform-set GOST_ENCRYPT_AND_INTEGRITY esp-gost28147-4m-imit

!

ip access-list extended IPSEC_GRE_TUNNEL_2

 permit gre host 10.10.100.2 host 10.10.1.2

!

!

crypto map VPN 1 ipsec-isakmp

 match address IPSEC_GRE_TUNNEL_2

 set transform-set GOST_ENCRYPT_AND_INTEGRITY

 set peer 172.16.1.20

 set dead-connection history off

!

interface GigabitEthernet0/0

 ip address 172.16.100.20 255.255.255.0

 crypto map VPN

!

interface GigabitEthernet0/1

 ip address 192.168.254.20 255.255.255.0

!

!

ip route 0.0.0.0 0.0.0.0 172.16.100.1

ip route 10.10.100.2 255.255.255.255 192.168.254.1

!

crypto pki trustpoint s-terra_technological_trustpoint

 revocation-check crl

 crl download group ROOTCA http://172.16.101.15/certcrl.crl

 crl download time 60

crypto pki certificate chain s-terra_technological_trustpoint

certificate 58E026BFD6D625BE4582C16C6189C183

...

AD4F8901771632E0A0AF83

 

quit

!

End

Конфигурация LSP:

GlobalParameters(

    Title                       = "This LSP was automatically generated by CSP Converter"

    Version                     = LSP_4_3

    CRLHandlingMode             = ENABLE

    PreserveIPsecSA             = FALSE

)

 

RoutingTable(

    Routes =

        Route(

            Destination = 0.0.0.0/0

            Gateway = 172.16.100.1

        ),

        Route(

            Destination = 10.10.100.2

            Gateway = 192.168.254.1

        )

)

 

FirewallParameters(

    TCPSynSentTimeout = 30

    TCPFinTimeout = 5

    TCPClosedTimeout = 30

    TCPSynRcvdTimeout = 30

    TCPEstablishedTimeout = 3600

    TCPHalfOpenLow = 400

    TCPHalfOpenMax = 500

    TCPSessionRateLow = 400

    TCPSessionRateMax = 500

)

 

IKETransform crypto:isakmp:policy:1

(

    CipherAlg   = "G2814789CPRO1-K256-CBC-65534"

    HashAlg     = "GR341112_256TC26-65128"

    GroupID     = VKO2_1B

    RestrictAuthenticationTo = GOST_SIGN

    LifetimeSeconds = 86400

)

 

ESPProposal GOST_ENCRYPT_AND_INTEGRITY:ESP

(

    Transform* = ESPTransform

    (

        CipherAlg*          = "G2814789CPRO2-K288-CNTMAC-253"

        LifetimeSeconds     = 3600

        LifetimeKilobytes   = 4608000

    )

)

 

IKEParameters(

    FragmentSize = 576

    SALifetimeDelta = 50

    InitiatorSessionsMax = 100

    ResponderSessionsMax = 100

)

 

AuthMethodGOSTSign GOST:Sign

(

    LocalID        =  IdentityEntry( DistinguishedName* = USER_SPECIFIC_DATA )

    SendRequestMode    =  ALWAYS

    SendCertMode       =  ALWAYS

)

 

IKERule IKERule:VPN:1

(

    IKEPeerIPFilter = 172.16.1.20

    Transform = crypto:isakmp:policy:1

    AggrModeAuthMethod  = GOST:Sign

    MainModeAuthMethod  = GOST:Sign

    DPDIdleDuration     = 3

    DPDResponseDuration = 2

    DPDRetries          = 5

    Priority            = 10

)

 

IPsecAction IPsecAction:VPN:1

(

    TunnelingParameters = TunnelEntry(

        PeerAddress = 172.16.1.20

        DFHandling=COPY

        Assemble=TRUE

    )

    ContainedProposals = ( GOST_ENCRYPT_AND_INTEGRITY:ESP )

    NoDeadConnectionHistory = TRUE

    IKERule = IKERule:VPN:1

)

 

FilterChain IPsecPolicy:VPN (

    Filters = Filter (

        ProtocolID = 17

        SourcePort = 500, 4500

        Action = PASS

        PacketType = LOCAL_UNICAST, LOCAL_MISDIRECTED

    ),

    Filter (

        SourceIP = 10.10.100.2

        DestinationIP = 10.10.1.2

        ProtocolID = 47

        Action = PASS

        ExtendedAction = ipsec< sa = IPsecAction:VPN:1 >

        LogEventID = "IPsec:Protect:VPN:1:IPSEC_GRE_TUNNEL_2"

    )

)

 

NetworkInterface (

    LogicalName = "GigabitEthernet0/0"

    IPsecPolicy = IPsecPolicy:VPN

)

Конфигурация шлюза Spoke1

Конфигурация cisco-like:

version 12.4

no service password-encryption

!

crypto ipsec df-bit copy

crypto isakmp identity dn

crypto isakmp fragmentation

crypto isakmp security-association lifetime delta 50

crypto isakmp initiator-sessions-max 100

crypto isakmp responder-sessions-max 100

crypto isakmp keepalive 3

crypto isakmp keepalive retry-count 5

username cscons privilege 15 secret 5 $6$tHtq8SR6$t3CWE6udI6L/ARr9jQowUYR7wEbOWZlx61OvLi7goonOFUYhNSGV49BA.RDGEZ7oKXBA1aTRi20ElR4wtMXTl0

aaa new-model

!

!

hostname Spoke1

enable secret 5 PC9d7N5HlAyLrzuA3qRJvQ==

!

!

!

!

!

crypto isakmp policy 1

 encr gost

 hash gost341112-256-tc26

 authentication gost-sig

 group vko2

!

crypto ipsec transform-set GOST_ENCRYPT_AND_INTEGRITY esp-gost28147-4m-imit

!

ip access-list extended IPSEC_GRE_TUNNEL_1

 permit gre host 10.10.1.1 host 10.10.100.1

!

!

crypto map VPN 1 ipsec-isakmp

 match address IPSEC_GRE_TUNNEL_1

 set transform-set GOST_ENCRYPT_AND_INTEGRITY

 set peer 172.16.100.10

 set dead-connection history off

!

interface GigabitEthernet0/0

 ip address 172.16.1.10 255.255.255.0

 crypto map VPN

!

interface GigabitEthernet0/1

 ip address 192.168.253.10 255.255.255.0

!

!

ip route 0.0.0.0 0.0.0.0 172.16.1.1

ip route 10.10.1.1 255.255.255.255 192.168.253.1

!

crypto pki trustpoint s-terra_technological_trustpoint

 revocation-check crl

 crl download group ROOTCA http://172.16.101.15/certcrl.crl

 crl download time 60

crypto pki certificate chain s-terra_technological_trustpoint

certificate 58E026BFD6D625BE4582C16C6189C183

...

AD4F8901771632E0A0AF83

 

quit

!

End

Конфигурация LSP:

GlobalParameters(

    Title                       = "This LSP was automatically generated by CSP Converter"

    Version                     = LSP_4_3

    CRLHandlingMode             = ENABLE

    PreserveIPsecSA             = FALSE

)

 

RoutingTable(

    Routes =

        Route(

            Destination = 0.0.0.0/0

            Gateway = 172.16.1.1

        ),

        Route(

            Destination = 10.10.1.1

            Gateway = 192.168.253.1

        )

)

 

FirewallParameters(

    TCPSynSentTimeout = 30

    TCPFinTimeout = 5

    TCPClosedTimeout = 30

    TCPSynRcvdTimeout = 30

    TCPEstablishedTimeout = 3600

    TCPHalfOpenLow = 400

    TCPHalfOpenMax = 500

    TCPSessionRateLow = 400

    TCPSessionRateMax = 500

)

 

IKETransform crypto:isakmp:policy:1

(

    CipherAlg   = "G2814789CPRO1-K256-CBC-65534"

    HashAlg     = "GR341112_256TC26-65128"

    GroupID     = VKO2_1B

    RestrictAuthenticationTo = GOST_SIGN

    LifetimeSeconds = 86400

)

 

ESPProposal GOST_ENCRYPT_AND_INTEGRITY:ESP

(

    Transform* = ESPTransform

    (

        CipherAlg*          = "G2814789CPRO2-K288-CNTMAC-253"

        LifetimeSeconds     = 3600

        LifetimeKilobytes   = 4608000

    )

)

 

IKEParameters(

    FragmentSize = 576

    SALifetimeDelta = 50

    InitiatorSessionsMax = 100

    ResponderSessionsMax = 100

)

 

AuthMethodGOSTSign GOST:Sign

(

    LocalID        =  IdentityEntry( DistinguishedName* = USER_SPECIFIC_DATA )

    SendRequestMode    =  ALWAYS

    SendCertMode       =  ALWAYS

)

 

IKERule IKERule:VPN:1

(

    IKEPeerIPFilter = 172.16.100.10

    Transform = crypto:isakmp:policy:1

    AggrModeAuthMethod  = GOST:Sign

    MainModeAuthMethod  = GOST:Sign

    DPDIdleDuration     = 3

    DPDResponseDuration = 2

    DPDRetries          = 5

    Priority            = 10

)

 

IPsecAction IPsecAction:VPN:1

(

    TunnelingParameters = TunnelEntry(

        PeerAddress = 172.16.100.10

        DFHandling=COPY

        Assemble=TRUE

    )

    ContainedProposals = ( GOST_ENCRYPT_AND_INTEGRITY:ESP )

    NoDeadConnectionHistory = TRUE

    IKERule = IKERule:VPN:1

)

 

FilterChain IPsecPolicy:VPN (

    Filters = Filter (

        ProtocolID = 17

        SourcePort = 500, 4500

        Action = PASS

        PacketType = LOCAL_UNICAST, LOCAL_MISDIRECTED

    ),

    Filter (

        SourceIP = 10.10.1.1

        DestinationIP = 10.10.100.1

        ProtocolID = 47

        Action = PASS

        ExtendedAction = ipsec< sa = IPsecAction:VPN:1 >

        LogEventID = "IPsec:Protect:VPN:1:IPSEC_GRE_TUNNEL_1"

    )

)

 

NetworkInterface (

    LogicalName = "GigabitEthernet0/0"

    IPsecPolicy = IPsecPolicy:VPN

)

Конфигурация шлюза Spoke2

Конфигурация cisco-like:

version 12.4

no service password-encryption

!

crypto ipsec df-bit copy

crypto isakmp identity dn

crypto isakmp fragmentation

crypto isakmp security-association lifetime delta 50

crypto isakmp initiator-sessions-max 100

crypto isakmp responder-sessions-max 100

crypto isakmp keepalive 3

crypto isakmp keepalive retry-count 5

username cscons privilege 15 secret 5 $6$tHtq8SR6$t3CWE6udI6L/ARr9jQowUYR7wEbOWZlx61OvLi7goonOFUYhNSGV49BA.RDGEZ7oKXBA1aTRi20ElR4wtMXTl0

aaa new-model

!

!

hostname Spoke2

enable secret 5 PC9d7N5HlAyLrzuA3qRJvQ==

!

!

!

!

!

crypto isakmp policy 1

 encr gost

 hash gost341112-256-tc26

 authentication gost-sig

 group vko2

!

crypto ipsec transform-set GOST_ENCRYPT_AND_INTEGRITY esp-gost28147-4m-imit

!

ip access-list extended IPSEC_GRE_TUNNEL_2

 permit gre host 10.10.1.2 host 10.10.100.2

!

!

crypto map VPN 1 ipsec-isakmp

 match address IPSEC_GRE_TUNNEL_2

 set transform-set GOST_ENCRYPT_AND_INTEGRITY

 set peer 172.16.100.20

 set dead-connection history off

!

interface GigabitEthernet0/0

 ip address 172.16.1.20 255.255.255.0

 crypto map VPN

!

interface GigabitEthernet0/1

 ip address 192.168.253.20 255.255.255.0

!

!

ip route 0.0.0.0 0.0.0.0 172.16.1.1

ip route 10.10.1.2 255.255.255.255 192.168.253.1

!

crypto pki trustpoint s-terra_technological_trustpoint

 revocation-check crl

 crl download group ROOTCA http://172.16.101.15/certcrl.crl

 crl download time 60

crypto pki certificate chain s-terra_technological_trustpoint

certificate 58E026BFD6D625BE4582C16C6189C183

...

AD4F8901771632E0A0AF83

 

quit

!

End

Конфигурация LSP:

GlobalParameters(

    Title                       = "This LSP was automatically generated by CSP Converter"

    Version                     = LSP_4_3

    CRLHandlingMode             = ENABLE

    PreserveIPsecSA             = FALSE

)

 

RoutingTable(

    Routes =

        Route(

            Destination = 0.0.0.0/0

            Gateway = 172.16.1.1

        ),

        Route(

            Destination = 10.10.1.2

            Gateway = 192.168.253.1

        )

)

 

FirewallParameters(

    TCPSynSentTimeout = 30

    TCPFinTimeout = 5

    TCPClosedTimeout = 30

    TCPSynRcvdTimeout = 30

    TCPEstablishedTimeout = 3600

    TCPHalfOpenLow = 400

    TCPHalfOpenMax = 500

    TCPSessionRateLow = 400

    TCPSessionRateMax = 500

)

 

IKETransform crypto:isakmp:policy:1

(

    CipherAlg   = "G2814789CPRO1-K256-CBC-65534"

    HashAlg     = "GR341112_256TC26-65128"

    GroupID     = VKO2_1B

    RestrictAuthenticationTo = GOST_SIGN

    LifetimeSeconds = 86400

)

 

ESPProposal GOST_ENCRYPT_AND_INTEGRITY:ESP

(

    Transform* = ESPTransform

    (

        CipherAlg*          = "G2814789CPRO2-K288-CNTMAC-253"

        LifetimeSeconds     = 3600

        LifetimeKilobytes   = 4608000

    )

)

 

IKEParameters(

    FragmentSize = 576

    SALifetimeDelta = 50

    InitiatorSessionsMax = 100

    ResponderSessionsMax = 100

)

 

AuthMethodGOSTSign GOST:Sign

(

    LocalID        =  IdentityEntry( DistinguishedName* = USER_SPECIFIC_DATA )

    SendRequestMode    =  ALWAYS

    SendCertMode       =  ALWAYS

)

 

IKERule IKERule:VPN:1

(

    IKEPeerIPFilter = 172.16.100.20

    Transform = crypto:isakmp:policy:1

    AggrModeAuthMethod  = GOST:Sign

    MainModeAuthMethod  = GOST:Sign

    DPDIdleDuration     = 3

    DPDResponseDuration = 2

    DPDRetries          = 5

    Priority            = 10

)

 

IPsecAction IPsecAction:VPN:1

(

    TunnelingParameters = TunnelEntry(

        PeerAddress = 172.16.100.20

        DFHandling=COPY

        Assemble=TRUE

    )

    ContainedProposals = ( GOST_ENCRYPT_AND_INTEGRITY:ESP )

    NoDeadConnectionHistory = TRUE

    IKERule = IKERule:VPN:1

)

 

FilterChain IPsecPolicy:VPN (

    Filters = Filter (

        ProtocolID = 17

        SourcePort = 500, 4500

        Action = PASS

        PacketType = LOCAL_UNICAST, LOCAL_MISDIRECTED

    ),

    Filter (

        SourceIP = 10.10.1.2

        DestinationIP = 10.10.100.2

        ProtocolID = 47

        Action = PASS

        ExtendedAction = ipsec< sa = IPsecAction:VPN:1 >

        LogEventID = "IPsec:Protect:VPN:1:IPSEC_GRE_TUNNEL_2"

    )

)

 

NetworkInterface (

    LogicalName = "GigabitEthernet0/0"

    IPsecPolicy = IPsecPolicy:VPN

)

Конфигурация маршрутизатора Hub-Router

Конфигурация FRR:

frr version 7.3

frr defaults traditional

hostname Hub-Router

log syslog informational

no ipv6 forwarding

service integrated-vtysh-config

!

interface tunnel1

 ip ospf network broadcast

!

interface tunnel2

 ip ospf network broadcast

!

router ospf

 ospf router-id 192.168.100.1

 passive-interface default

 no passive-interface tunnel1

 no passive-interface tunnel2

 network 100.100.101.0/30 area 0

 network 100.100.102.0/30 area 0

 network 192.168.100.0/24 area 0

!

line vty

!

Конфигурация интерфейсов lo1, lo2, tunnel1, tunnel2:

auto lo1

iface lo1 inet static

    address 10.10.100.1

    netmask 255.255.255.255

pre-up ip link add lo1 type dummy

post-down ip link delete lo1

 

auto lo2

iface lo2 inet static

    address 10.10.100.2

    netmask 255.255.255.255

pre-up ip link add lo2 type dummy

post-down ip link delete lo2

 

auto tunnel1

iface tunnel1 inet static

    address 100.100.101.1

    netmask 255.255.255.252

pre-up ip tunnel add tunnel1 mode gre local 10.10.100.1 remote 10.10.1.1 ttl 64

pre-up ip link set tunnel1 multicast on

pre-up ip link set tunnel1 mtu 1400

post-down ip link del tunnel1

 

auto tunnel2

iface tunnel2 inet static

    address 100.100.102.1

    netmask 255.255.255.252

pre-up ip tunnel add tunnel2 mode gre local 10.10.100.2 remote 10.10.1.2 ttl 64

pre-up ip link set tunnel2 multicast on

pre-up ip link set tunnel2 mtu 1400

post-down ip link del tunnel2

Конфигурация маршрутизатора Spoke-Router

Конфигурация FRR:

frr version 7.3

frr defaults traditional

hostname Spoke-Router

log syslog informational

no ipv6 forwarding

service integrated-vtysh-config

!

interface tunnel1

 ip ospf network broadcast

!

interface tunnel2

 ip ospf network broadcast

!

router ospf

 ospf router-id 192.168.1.1

 passive-interface default

 no passive-interface tunnel1

 no passive-interface tunnel2

 network 100.100.101.0/30 area 0

 network 100.100.102.0/30 area 0

 network 192.168.1.0/24 area 0

!

line vty

!

Конфигурация интерфейсов lo1, lo2, tunnel1, tunnel2:

auto lol

iface lol inet static

    address 10.10.1.1

    netmask 255.255.255.255

pre-up ip link add lol type dummy

post-down ip link delete lol

 

auto lo2

iface lo2 inet static

    address 10.10.1.2

    netmask 255.255.255.255

pre-up ip link add lo2 type dummy

post-down ip link delete lo2

 

auto tunnel1

iface tunnel1 inet static

    address 100.100.101.2

    netmask 255.255.255.252

pre-up ip tunnel add tunnel1 mode gre local 10.10.1.1 remote 10.10.100.1 ttl 64

pre-up ip link set tunnel1 multicast on

pre-up ip link set tunnel1 mtu 1400

post-down ip link del tunnel1

 

auto tunnel2

iface tunnel2 inet static

    address 100.100.102.2

    netmask 255.255.255.252

pre-up ip tunnel add tunnel2 mode gre local 10.10.1.2 remote 10.10.100.2 ttl 64

pre-up ip link set tunnel2 multicast on

pre-up ip link set tunnel2 mtu 1400

post-down ip link del tunnel2