Делаем IPsec VPN туннель между Cisco FTD и Mikrotik
Эта заметка написана для того, чтобы облегчить путь тем, кто столкнется с проблемой после меня. Задача кажется тривиальной, но как обычно, в процессе вылезли проблемы, которые решать пришлось методом долгого изучения манов и бесконечных перенастроек. В интернете почему то очень мало информации по настройке 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

- Указываем имя
- 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 и наружу из него.
- IT-инфраструктура
- Cisco
Что такое dh group и PFS


Добрый день! Много уважаемые читатели, компьютерного блога Pyatilistnik.org. В прошлый раз мы с вами разобрали подробную инструкцию, в которой описывался процесс настройки двух этапного VPN канала IP Sec на оборудовании Juniper. Где мы повстречались с таким понятием, как DH Group. Сегодня я бы хотел сделать небольшую заметку, больше всего для себя, дающую определение и расшифровку данного понятия.
Perfect Forward Secrecy
Perfect Forward Secrecy позволяет удостовериться, что ключи, которые используются на второй фазе (то есть, для защиты данных), не были получены из ключей на первой фазе. При включенном PFS во время второй фазы выполняется генерация нового ключа с помощью алгоритма DH. PFS DH Group — длина ключа PFS.
Название групп и соответствующая им длина ключа:
- DH Group 1: 768-bit group — 768 битный модульный экспоненциальный (MODP) алгоритм
- DH Group 2: 1024-bit group — 1024-бит MODP-алгоритм
- DH Group 5: 1536-bit group — 1536-бит MODP-алгоритм
- DH Group 14: 2048-bit group — 2048-бит MODP-группа
- DH Group 15: 3072-bit group
- DH Group 19: 256-bit elliptic curve group — 256-битные случайные эллиптические кривые группы по модулю алгоритма Prime (ECP groups)
- DH Group 20: 384-bit elliptic curve group — 384-бит алгоритм случайных ECP-групп

Популярные Похожие записи:
Ошибка the property session directory location is configured by using group policy
Как переместить диск кворума в Failover cluster
Проверка доступности порта в Zabbix
Get-ADGroup: Управление группами Active Directory
Не открывается объект групповой политики gpedit.msc
Автоматическое наполнение группы AD через PowerShell
Разблокируем интернет с помощью Mikrotik и VPN: подробный туториал

В этом пошаговом руководстве я расскажу, как настроить Mikrotik, чтобы запрещённые сайты автоматом открывались через этот VPN и вы могли избежать танцев с бубнами: один раз настроил и все работает.
В качестве VPN я выбрал SoftEther: он настолько же прост в настройке как и RRAS и такой же быстрый. На стороне VPN сервера включил Secure NAT, других настроек не проводилось.
В качестве альтернативы рассматривал RRAS, но Mikrotik не умеет с ним работать. Соединение устанавливается, VPN работает, но поддерживать соединение без постоянных реконнектов и ошибок в логе Mikrotik не умеет.
Настройка производилась на примере RB3011UiAS-RM на прошивке версии 6.46.11.
Теперь по порядку, что и зачем.
1. Устанавливаем VPN соединение
В качестве VPN решения был выбран, конечно, SoftEther, L2TP с предварительным ключом. Такого уровня безопасности достаточно кому угодно, потому что ключ знает только роутер и его владелец.
Переходим в раздел interfaces. Сначала добавляем новый интерфейс, а потом вводим ip, логин, пароль и общий ключ в интерфейс. Жмем ок.


То же самое командой:
/interface l2tp-client
name=»LD8″ connect-to=45.134.254.112 user=»Administrator» password=»PASSWORD» profile=default-encryption use-ipsec=yes ipsec-secret=»vpn»
SoftEther заработает без изменения ipsec proposals и ipsec profiles, их настройку не рассматриваем, но скриншоты своих профилей, на всякий случай, автор оставил.

Для RRAS в IPsec Proposals достаточно изменить PFS Group на none.
Теперь нужно встать за NAT этого VPN сервера. Для этого нам нужно перейти в IP > Firewall > NAT.
Тут включаем masquerade для конкретного, или всех PPP интерфейсов. Роутер автора подключен сразу к трём VPN’ам, поэтому сделал так:


То же самое командой:
/ip firewall nat
chain=srcnat action=masquerade out-interface=all-ppp
2. Добавляем правила в Mangle
Первым делом хочется, конечно, защитить все самое ценное и беззащитное, а именно DNS и HTTP трафик. Начнем с HTTP.
Переходим в IP → Firewall → Mangle и создаем новое правило.
В правиле, Chain выбираем Prerouting.
Если перед роутером стоит Smart SFP или еще один роутер, и вы хотите к нему подключаться по веб интерфейсу, в поле Dst. Address нужно ввести его IP адрес или подсеть и поставить знак отрицания, чтобы не применять Mangle к адресу или к этой подсети. У автора стоит SFP GPON ONU в режиме бриджа, таким образом автор сохранил возможность подключения к его вебморде.
По умолчанию Mangle будет применять свое правило ко всем NAT State’ам, это сделает проброс порта по вашему белому IP невозможным, поэтому в Connection NAT State ставим галочку на dstnat и знак отрицания. Это позволит нам отправлять по сети исходящий трафик через VPN, но все еще прокидывать порты через свой белый IP.

Далее на вкладке Action выбираем mark routing, обзываем New Routing Mark так, чтобы было в дальнейшем нам понятно и едем дальше.

То же самое командой:
/ip firewall mangle
add chain=prerouting action=mark-routing new-routing-mark=HTTP passthrough=no connection-nat-state=!dstnat protocol=tcp dst-address=!192.168.1.1 dst-port=80
Теперь переходим к защите DNS. В данном случае нужно создать два правила. Одно для роутера, другое для устройств подключенных к роутеру.
Если вы пользуетесь встроенным в роутер DNS, что делает и автор, его нужно тоже защитить. Поэтому для первого правила, как и выше мы выбираем chain prerouting, для второго же нужно выбрать output.
Output это цепь которые использует сам роутер для запросов с помощью своего функционала. Тут все по аналогии с HTTP, протокол UDP, порт 53.


То же самое командами:
/ip firewall mangle
add chain=prerouting action=mark-routing new-routing-mark=DNS passthrough=no protocol=udp
add chain=output action=mark-routing new-routing-mark=DNS-Router passthrough=no protocol=udp dst-port=53
3. Строим маршрут через VPN
Переходим в IP → Routes и создаем новые маршруты.
Маршрут для маршрутизации HTTP по VPN. Указываем название наших VPN интерфейсов и выбираем Routing Mark.

На этом этапе вы уже почувствовали, как ваш оператор перестал встраивать рекламу в ваш HTTP трафик.
То же самое командой:
/ip route
add dst-address=0.0.0.0/0 gateway=LD8 routing-mark=HTTP distance=2 comment=HTTP
Ровно так же будут выглядеть правила для защиты DNS, просто выбираем нужную метку:

Тут вы ощутили, как ваши DNS запросы перестали прослушивать. То же самое командами:
/ip route
add dst-address=0.0.0.0/0 gateway=LD8 routing-mark=DNS distance=1 comment=DNS
add dst-address=0.0.0.0/0 gateway=LD8 routing-mark=DNS-Router distance=1 comment=DNS-Router
Ну под конец, разблокируем Rutracker. Вся подсеть принадлежит ему, поэтому указана подсеть.

Вот настолько было просто вернуть себе интернет. Команда:
/ip route
add dst-address=195.82.146.0/24 gateway=LD8 distance=1 comment=Rutracker.Org
Ровно этим же способом, что и с рутрекером вы можете прокладывать маршруты корпоративных ресурсов и других заблокированных сайтов.
Автор надеется, что вы оцените удобство захода на рутрекер и корпоративный портал в одно и тоже время не снимая свитер.

- Блог компании RUVDS.com
- Системное администрирование
- Сетевые технологии
- Сетевое оборудование
- Лайфхаки для гиков
Knowledgebase

Note:
176.53.182.35 – external IP-address of your Edge Gateway
10.10.10.0/24 – local network connected to your Edge Gateway
176.53.182.58 – external IP-address of your router Mikrotik
10.0.0.0/24 – local network connected to your Mikrotik
Connection setup is carried out in 2 stages.
Stage №1: Hardware Setup Mikrotik.
Stage №2: Configure Edge Gateway on a remote server.

On the tab «IP» in the drop down menu choose «IPsec» .
Choose the tab «Peers» and click «Add new» to add new connection.

In the window that opens, enter the following values:
Name — Connection name
Address – external IP-address your Edge Gateway
Local Address – external IP-address your router Mikrotik
Exchange Mode – IKE2

Go to the tab «Proposals» and click «Add new»

In the field «Name» specify the name:
Auth. Algorithms – choose sha256
Encr. Algorithms – tick aes-256 cbc
PFS Group – choose modp2048

Go to the tab «Identities» and click «Add new»

In the field «Peer» choose the earlier created connection.
In the field «Auth. Method» choose the value pre shared key
In the field «Secret» enter a password for the connection. Please, write down the password . You will need it during the Stage #2.
In the field «Notrack Chain» choose the value prerouting

Go to the value «Policies» and click «Add new»

In the field «Peer» choose the earlier created connection.
Tick the parameter«Tunnel».
«Src. Address» — local network address connected to your Mikrotik
«Dst. Address» — local network address connected to your Edge Gateway
In the field «Action» choose encrypt
In the field «Level» choose require
In the field «IPsec Protocols» choose esp
In the field «Proposal» choose the earlier created profile

Go to the tab «Profiles» and click on «default»

Change the settings to the following values
Hash Algorithms – sha256
Encryption Algorithm – aes-256
DH Group — modp2048

Go to the sub menu «Firewall» to the tab «Filter Rules» and click «Add New»
In the field «Chain» choose the value forward
In the field «Src. Address» enter the local network address connected to your Edge Gateway
In the field «Dst. Address» enter the local network address connected to your Mikrotik
On the tab «Action» choose the value accept

Repeat the steps to add the rule to Firewall, but in «Src. Address» enter the local network address connected to your Mikrotik, in «Dst. Address» enter the local network address connected to your Edge Gateway.

Go to the tab «NAT» and click «Add New» to choose a new rule.

In the field «Chain» choose the value forward
In the field «Src. Address» enter the local network address connected to your Mikrotik
In the field «Dst. Address» enter the local network address connected to your Edge Gateway

Choose another rule. Change the values of «Src. Address» and «Dst. Address».
The result should be two “mirror» rules.
Go to the tab «RAW» and click «Add New»


In the field «Chain» choose the value prerouting
In the field «Src. Address» enter the local network address connected to your Mikrotik
In the field «Dst. Address» enter the local network address connected to your Edge Gateway

Create one more rule, where in the field «Src. Address» enter the local network address connected to your Edge Gateway, and in the field «Dst. Address» enter the local network address connected to your Mikrotik.
The result should be two “mirror» rules.

Go to your personal account and select the desired Datacenter.
.

In the menu «Networking» choose the sub menu «Edges»

Select your connection and click CONFIGURE SERVICES

In the window that opens, go to the «VPN» tab.
Chose the sub tab «IPsec VPN» and go to the sub menu «IPsec VPN Sites»
Click «+» to set up the connection.
In the window that appears, move the “Enabled” slider to the active state, “Enable perfect forward secrecy (PFS)” must be disabled, because. when this option is enabled, problems are observed, the tunnel may fall, we recommend disabling PFS.In the field «Name» enter the name of your connection.
In the field «Local Id» и «Local Endpoint» enter external IP-address to your Edge Gateway
In the field «Local Subnets» enter the local network address connected to your Edge Gateway

In the field «Peer Id» и «Peer Endpoint» enter external IP-address to your router Mikrotik
In the field «Peer Subnets» enter the local network address connected to your Mikrotik.

Choose the following settings:
Encryption Algorithm – AES256
Authentication – PSK
In the field «Pre-Shared Key» enter the password (that you wrote down). You have already entered it in the Mikrotik settings in the field «Secret».
Choose the following settings:
Diffie-Hellman Group – DH14
Digest Algorithm – SHA-256
IKE Option – IKEv2
Session Type – Policy Based Session

Click «Keep» to save the changes.
Go to the tab «Activation Status» and activate «IPsec VPN Service Status»

Have you tried Virtual cloud servers by Cloud4Y? Not yet?
Leave a request and get a 10-day free trial.
