Как стать автором
Обновить

Делаем IPsec VPN туннель между Cisco FTD и Mikrotik

Время на прочтение6 мин
Количество просмотров23K

Зачем все это

Эта заметка написана для того, чтобы облегчить путь тем, кто столкнется с проблемой после меня. Задача кажется тривиальной, но как обычно, в процессе вылезли проблемы, которые решать пришлось методом долгого изучения манов и бесконечных перенастроек. В интернете почему то очень мало информации по настройке Cisco Firepower Threat Defense (FTD), а тем более - в связке с Mikrotik.

Исходные данные

У нас есть:

  • Cisco FTD 2120

  • Mikrotik hEX S

  • Несколько маршрутизируемых сетей за Cisco, одна или несколько локальных сетей за Mikrotik.

  • Необходимость связать туннелем удаленный офис на Mikrotik с головным офисом за Cisco FTD.

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

Изначально нам нужно убедиться, что обе наши стороны имеют "белый" маршрутизируемый ip адрес. Теоретически, все это можно прокинуть через NAT, если устройство находится внутри сети, но это осложняет конфигурацию, а еще далеко не все провайдеры позволяют one-to-one NAT в наше время.

Начнем со стороны Mikrotik. Предполагаю, что на нем стоит свежая прошивка (в моем случае это 6.48.4), и он уже настроен как роутер "белым" адресом наружу.

Локальная сеть Mikrotik в нашем случае:

192.168.88.0/24

Сети со стороны Cisco это множество локальных подсетей:

172.16.x.x/24
192.168.x.x/24
10.10.x.x/24
....

Маршрутизируемый адрес в примере для Mikrotik будет:

1.2.3.1/32

Маршрутизируемый адрес для Cisco:

1.2.3.2/32

Mikrotik (Winbox)

Начинаем настройку IPsec:

IP - IPsec - Profiles

  • Добавляем имя

  • Hash алгоритмы sha256

  • PRF алгоритмы sha256

  • Алгоритмы шифрования aes-256

  • Diffie Hellman группа modp2048 (она же группа 14 в другом наименовании, подробнее есть в мануале у Mikrotik'а)

    Все остальное оставляем по умолчанию.

Дальше открываем вкладку proposals

  • Задаем имя

  • Алгоритмы аутентификации sha256

  • Алгоритмы шифрования aes-256 cbc

  • PFS группа modp2048

Создаем Peer

  • Указываем имя

  • Address - это адрес пира, то есть Cisco (1.2.3.2)

  • Local Address - это адрес самого Mikrotik (1.2.3.1)

  • Выбираем ранее созданный профиль

  • Exchange Mode нам нужен IKE2

Переходим на вкладку Identities

  • Выбираем настроенный пир (FTD)

  • Метод аутентификации pre shared key

  • В поле Secret указываем сам ключ (желательно длинный и сложный. Сохраним его для настройки ответной стороны)

  • Notrack Chain нужно выбрать prerouting

Теперь переходим к главному - настройке Policies

Основная загвоздка в настройке со стороны Mikrotik - это то, что для одной политики возможно указать только одну подсеть. Если нам нужно связать 2 подсети, это не проблема. В случае же с множеством подсетей из разных диапазонов - возникает первая сложность. Нужно делать политику для каждой подсети.

  • Выбираем созданный ранее пир (FTD)

  • Выбираем чекбокс Tunnel

  • Src. Address - это подсеть со стороны Mikrotik, которую мы хотим отправить в туннель (192.168.88.0/24)

  • Dst.Address - это подсеть, которую мы хотим получить от FTD (172.16.110.0/24)

На второй вкладе (Actions) указываем

  • Level: unique - для того, чтобы иметь возможность работы нескольких политик одновременно.

  • Выбираем proposal из ранее созданного (FTD_proposal)

Повторяем настройки для каждой подсети, которую хотим добавить в туннель. От каждой локальной, к каждой удаленной.

Теперь нужно настроить Firewall. Начнем с создания адресных листов.

IP - Firewall - Address Lists

  • Указываем имя (для последующих записей нужно будет выбрать уже существующее имя для добавления в него новой записи)

  • Указываем подсеть

Наша задача: создать 2 листа. Один - FTD_networks - с сетями, которые мы будем получать. А второй - Mikrotik_networks - с локальными сетями на Mikrotik.

Переходим на вкладку Filter Rules. Здесь нам нужно создать разрешающие правила для наших подсетей, чтобы роутер их пропускал.

  • Chain: forward

  • Advanced - Src. Address List: Mikrotik_networks

  • Advanced - Dst. Address List: FTD_networks

  • Action: accept

И второе правило, где Source и Destination Address List меняются местами. Наши разрешающие правила должны быть выше запрещающих! Поэтому их нужно перетащить вверх, если это не так.

Переходим на вкладку NAT.

Нужно сделать исключения для наших подсетей, чтобы они не улетали в обычный NAT маскарадинг.

  • Chain: srcnat

  • Advanced - Src. Address List: Mikrotik_networks

  • Advanced - Dst. Address List: FTD_networks

  • Action: accept

Как и в правилах фильтрации, нужно сделать 2 правила, поменяв во втором местами Source и Destination. А так же, поднять эти правила выше правила masquerade.

Переходим на вкладку Raw.

Здесь аналогично, нужно сделать 2 правила для прероутинга

  • Chain: prerouting

  • Advanced - Src. Address List: Mikrotik_networks

  • Advanced - Dst. Address List: FTD_networks

  • Action: accept

Как и в предыдущих вкладках, нужно сделать 2 правила, поменяв во втором местами Source и Destination.

На этом настройка со стороны Mikrotik закончена. Можно приступать к ответной стороне.

Cisco FTD (Firepower Management Center)

Логика настройки firewall и NAT со стороны FTD практически такая же, а вот сам туннель настраивается по-другому. С него и начнем.

Для начала, нам нужно создать группы для подсетей, которые мы отдаем в туннель и которые получаем.

Заходим Objects - Object Management. Add Group

В моем случае, для подсетей, которые мы отдаем это FTD_Subnets. Добавляем в Selected Networks все подсети, что хотим отдавать в туннель. А получаем мы одну подсеть, поэтому ее задаем через Add network - Mikrotik_network.

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

Переходим к созданию туннеля. Devices - VPN -Site to Site. Add VPN Firepower Threat Defense.

  • Указываем имя для нашего подключения

  • Топология Точка-Точка

  • Версия IKEv2

Во вкладке Endpoints указываем:

Node A - это Mikrotik

  • Device: Extranet

  • Device Name: указываем имя

  • IP Address: static, 1.2.3.1

  • Protected Networks: сети, которые мы хотим получать (Mikrotik_network).

Node B - это наша локальная FTD

  • Device: FTD2120

  • Interface: выбираем наружный интерфейс

  • IP Address: 1.2.3.2 - должен подставиться сам

  • Protected Networks: сети, которые мы хотим отдавать (FTD_Subnets).

На вкладке IKE заполняем IKEv2 Settings:

  • Policy - создаем новую:

    Задаем имя

    Integrity Algorythms: SHA256

    Encryption Algorythms: AES-256

    PRF Algorythms: SHA256

    Diffie-Hellman Group: 14

  • Authentication Type: Pre-shared Manual Key, куда вставляем наш сохраненный ключ

На вкладке IPsec заполняем:

  • Crypto Map Type: Dynamic

  • IKEv2 Mode: Tunnel

  • IKEv2 IPsec Proposals: создаем новые:

    Задаем имя

    ESP Hash: SHA-256

    ESP Encryption: AES-256

  • Enable reverse Route Injection: должна быть включена

  • Самое важное! Enable Perfect Forward Secrecy: должна быть включена

    Modulus Group: 14

Без включения этой функции, на Mikrotik будет активна только одна Policy одновременно. То есть работать будет только одна подсеть.

Все остальные параметры оставляем по умолчанию. Не забываем сохранить конфигурацию.

Теперь нам нужно (аналогично Mikrotik'у) сделать разрешающие правила и исключения NAT.

Переходим в Policies - Access Control и создаем 2 правила

Из зоны Inside в Outside, от Mikrotik_network к FTD_Subnets, Allow. Inspection и Logging можно добавить по вкусу. И второе правило, где все поменяно местами.

В моем случае, зона Inside_Zone - это зона, за которой находятся все подсети, которые необходимо отправить в туннель.Outside_Zone - зона интернет. Если есть дополнительные зоны (DMZ, интерконнекты к другим подсетям) - то нужно сделать правила и для них.

Переходим в Devices - NAT и создаем правило Static, Manual NAT Rule:

  • Source Interace Objects: Inside_Zone

  • Destination Interace Objects: Outside_Zone

  • Original Source: FTD_Subnets

  • Original Destination: Address - Mikrotik_network

  • Translated Source: Address - FTD_subnets

  • Translated Destination: Mikrotik_network

  • На вкладке Advanced: Чекбокс Do not proxy ARP on Destination Interface должен быть включен.

Правило должно быть выше, чем NAT для локальный подсетей.

Проверка

FTD, к сожалению, показывает не настолько много информации, как хотелось бы. посмотреть состояние туннеля и возможные ошибки можно по пути Devices - VPN - Troubleshooting.

Со стороны Mikrotik мы, во-первых, должны увидеть на вкладке IPsec - Active Peers наше соединение в состоянии established

а во-вторых, в IPsec - Policies все политики должны стать A (active) и PH2 State established.

Если политики висят в состоянии no phase 2 все кроме одной - то в первую очередь смотрим на настройку Level (unique) в Policies на Mikrotik и на чекбокс Enable Perfect Forward Secrecy в настройке туннеля на cisco FTD.

UPD: в комментах подсказали, что в DH группе можно выставить протокол посерьезнее. Например, ecp521 со стороны Mikrotik (group 21 со стороны Cisco) - на скорость передачи данных и загрузку процессора Mikrotik это практически не влияет (проверил).

Так же, Filter Rules на Mikrotik избыточны, если есть правила по умолчанию (accept in\out ipsec policy), которые разрешают всё в ipsec и наружу из него.

Теги:
Хабы:
Всего голосов 5: ↑4 и ↓1+5
Комментарии12

Публикации

Истории

Работа

Ближайшие события