В предыдущей статье рассмотрели IPIP туннель между микротиком и убунтой. Теперь добавим IPSEC между Mikrotik и Ubuntu на этот туннель с помощью пакета Stongswan.
Схему возьмём из предыдущей статьи, тут ничего принципиально не меняется:
IPSEC более мене стандартизирован, можно настраивать шифрование между различными устройствами.
Микротик
подготовка
Итак, IPIP туннель у нас уже есть. Правила фаервола в этой статье не рассматриваются, но для работы IPSEC требуется открытый порт 500, 4500 UDP, и протокол ipsec-esp, пример:
/ip firewall filter
add chain=input port=500,4500 protocol=udp comment=»Permit IPSec ports 500 and 4500″
add chain=input protocol=ipsec-esp comment=»Permit IPSec protocol ipsec-esp»
Можно настраивать IPSEC между Mikrotik и Ubuntu с помощью пароля, но это не мой метод. Поэтому сначала нам потребуются сертификаты:
- сертификат микротика (пара открытый-закрытый сертификаты)
- сертификат убунту (пара открытый-закрытый сертификаты)
- CA (открытый сертификат)
Генерируемые сертификаты должны быть типа сервер(есть клиентские и серверные). Сгенерировать их можно по статьям на этом сайте (windows/linux). Я же использовал Cert Manager из pfsense.
Для микротика нужны будут сертификат микротика (пара открытый-закрытый серт-ключ), CA и ТОЛЬКО открытый серт ubuntu. Выделяем сгенерированные ранее файлы в файловом менеджере и перетаскиваем их в окно Winbox (для хардкорщиков можно scp использовать).
Затем переходим в раздел System — Certificates и нажимая кнопку Import добавляем нужные файлы. Открытый сертификат добавляется первым, ключ к нему, если нужен вторым.
После добавления файлов у нас должна получится примерно такая картинка:
T — означает что есть только открытый сертификат, KT — означает что у нас пара открытый сертификат и ключ к нему.
Для создания IPSEC между Mikrotik и Ubuntu потребуется пошагово заполнить разделы: Profiles, Peers, Identities, Proposals, Policies.
настройка
Итак, переходим в раздел IP — IPSEC, выбираем вкладку Profiles, жмём кнопку добавить, заполняем:
3des я убрал потому что это ненадёжный алгоритм. Вместо SHA1 выбрал SHA256 потому что сейчас это дефолтный алгоритм в Strongswan. DPD интервал уменьшил, что бы в случае падения туннеля шифрование быстрее поднималось. NAT-T нам не нужен — у нас нет НАТа на схеме.
Переходим на вкладку Peers и добавляем новый пир:
Address — внешний адрес убунту сервера. Local Address — локальный адрес микротика. Profile — имя профиля который мы добавили на предыдущем шаге.
Следующий шаг Identities:
Peer — то что мы заполняли выше. Auth Method — digital signature (мы используем сертификаты). Certificate — тут выбираем сертификат микротика (который KT). Remote Certificate — выбираем сертификат для Ubuntu. И последнее это Match By — certificate.
Эти надписи это какая-то недоработка винбокса, очевидно и пир у нас есть и метод авторизации более чем надёжный. Чтобы убрать предупреждение, сначала нажимаем Apply. Затем меняем Auth Method на pre shared key. Жмём ок, ок на предупреждении и ок ещё раз (три раза окей). Баг.
Переходим на вкладку Proposals, здесь всё как в Profiles (ну почти):
Последняя вкладка, Policies. Заполняем поля в двух вкладках: General и Action:
Src, Dst думаю итак понятно. Protocol — ip-encap, это тот самый IPIP туннель. Указываем протокол, что бы ничего другого кроме туннеля не шифровалось, например SSH доступ или ICMP пакеты. Proposal — выбираем то что заполняли на предыдущем этапе.
Это всё, переходим к Ubuntu.
Ubuntu
Для настройки IPSEC между Mikrotik и Ubuntu нам понадобится пакет Strongswan. Установка в две команды:
apt update apt install strongswan
Для ubuntu нужны будут сертификат убунты (пара открытый-закрытый серт) и ТОЛЬКО открытый серт микротика. Тут так просто как с микротиком не выйдет, мышкой не перетащишь. Нужен SCP, в интернетах полно инструкций, надеюсь справитесь.
Копируем открытые сертификаты в папку /etc/ipsec.d/certs, закрытый ключ в /etc/ipsec.d/private. Что бы прописать закрытый ключ надо будет добавить в файл /etc/ipsec.secrets строчку с именем файла КЛЮЧА:
: RSA ubuntu-ipsec-test.key
Все настройки Strongswan хранятся в файле /etc/ipsec.conf, заполняем его примерно так:
config setup conn %default ikelifetime=60m keylife=20m rekeymargin=3m keyingtries=1 keyexchange=ikev1 conn mikrotik #ubuntu left = 98.213.46.5 leftcert = ubuntu-ipsec-test.crt leftprotoport = ipencap #mikrotik right = 145.16.220.86 rightcert = mikrotik-ipsec-test.crt rightprotoport = ipencap #general type = transport auto = add #dpd dpdaction = restart dpddelay = 30s dpdtimeout = 90s #profile ikelifetime = 1d ike = aes128-sha256-modp1024 #proposals lifetime = 30m esp = aes128-sha256-modp1024
Я думаю всё понятно итак, но остановлюсь на некоторых моментах:
- conn — это имя подключения;
- left это локальная сторона, наш Ubuntu сервер, мы указываем адрес, имя сертификата, протокол;
- right — сторона микротика, аналогичные настройки;
- type — тут два режима transport или tunnel. У нас уже есть IPIP туннель, поэтому нам нужен режим transport.
- DPD, IKE, ESP итп мы просто заполняем также как заполняли их на микротике.
Для понимания работы Strongswan я использовал их документацию — примеры, описание параметров.
Для запуска IPSEC нам понадобится перечитать секреты:
ipsec rereadall
и прочитать конфигурационный файл:
ipsec reload
Затем запускаем подключение:
ipsec up mikrotik
Собственно всё. Как всегда любые вопросы по статье можно оставлять в комментариях ниже, по возможности отвечу.