Authentication pre share что это
ИТ База знаний
Полезно
— Онлайн генератор устойчивых паролей
— Онлайн калькулятор подсетей
— Руководство администратора FreePBX на русском языке
— Руководство администратора Cisco UCM/CME на русском языке
— Руководство администратора по Linux/Unix
Навигация
Серверные решения
Телефония
FreePBX и Asterisk
Настройка программных телефонов
Корпоративные сети
Протоколы и стандарты
Настройка Site-To-Site IPSec VPN на Cisco
Защищенный туннель между офисами
Привет! Сегодня мы расскажем про то как настроить Site-To-Site IPSec VPN туннель между роутерами Cisco. Такие VPN туннели используются обеспечения безопасной передачи данных, голоса и видео между двумя площадками (например, офисами или филиалами). Туннель VPN создается через общедоступную сеть интернет и шифруется с использованием ряда продвинутых алгоритмов шифрования, чтобы обеспечить конфиденциальность данных, передаваемых между двумя площадками.
Полный курс по Сетевым Технологиям
В курсе тебя ждет концентрат ТОП 15 навыков, которые обязан знать ведущий инженер или senior Network Operation Engineer
Во время фазы 1 создается первый туннель, который защищает последующие сообщения согласования ISAKMP. Во время фазы 2 создается туннель, который защищает данные. Затем в игру вступает IPSec для шифрования данных с использованием алгоритмов шифрования и предоставляющий аутентификацию, шифрование и защиту от повторного воспроизведения.
Требования к IPSec VPN
Чтобы упростить понимание настройки разделим его на две части:
Делать будем на примере, который показан на схеме – два филиала, оба маршрутизатора филиалов подключаются к Интернету и имеют статический IP-адрес, назначенный их провайдером. Площадка №1 имеет внутреннею подсеть 10.10.10.0/24, а площадка №2 имеет подсеть 20.20.20.0/24. Цель состоит в том, чтобы безопасно соединить обе сети LAN и обеспечить полную связь между ними без каких-либо ограничений.
IKE нужен только для установления SA (Security Association) для IPsec. Прежде чем он сможет это сделать, IKE должен согласовать отношение SA (ISAKMP SA) с одноранговым узлом (peer).
Начнем с настройки маршрутизатора R1 первой площадки. Первым шагом является настройка политики ISAKMP Phase 1:
Приведенные выше команды означают следующее:
Мы должны отметить, что политика ISAKMP Phase 1 определяется глобально. Это означает, что если у нас есть пять разных удаленных площадок и настроено пять разных политик ISAKMP Phase 1 (по одной для каждого удаленного маршрутизатора), то, когда наш маршрутизатор пытается согласовать VPN-туннель с каждой площадкой, он отправит все пять политик и будет использовать первое совпадение, которое принято обоими сторонами.
Далее мы собираемся определить Pre-Shared ключ для аутентификации с нашим партнером (маршрутизатором R2) с помощью следующей команды:
Настройка IPSec – 4 простых шага
Для настройки IPSec нам нужно сделать следующее:
Давайте рассмотрим каждый из вышеперечисленных шагов.
Шаг 1: Создаем расширенный ACL
Нам нужно создать расширенный access-list (про настройку Extended ACL можно прочесть в этой статье) и в нем определить какой траффик мы хотим пропускать через VPN-туннель. В этом примере это будет трафик из одной сети в другую с 10.10.10.0/24 по 20.20.20.0/24. Иногда такие списки называют crypto access-list или interesting traffic access-list.
Шаг 2: Создаем IPSec Transform
Следующим шагом является создание набора преобразования (Transform Set), используемого для защиты наших данных. Мы назвали его TS.
Приведенная выше команда определяет следующее:
Шаг 3: Создаем Crypto Map
Crypto Map является последнем этапом нашей настройки и объединяет ранее заданные конфигурации ISAKMP и IPSec:
Мы назвали нашу криптографическую карту CMAP. Тег ipsec-isakmp сообщает маршрутизатору, что эта криптографическая карта является криптографической картой IPsec. Хотя в этой карте (1.1.1.2) объявлен только один пир, существует возможность иметь несколько пиров.
Шаг 4: Применяем криптографическую карту к общедоступному интерфейсу
Обратите внимание, что интерфейсу можно назначить только одну криптокарту.
Как только мы применим криптографическую карту к интерфейсу, мы получаем сообщение от маршрутизатора, подтверждающее, что isakmp включен: “ISAKMP is ON”.
На этом этапе мы завершили настройку IPSec VPN на маршрутизаторе Площадки 1.
Теперь перейдем к маршрутизатору Площадки 2 для завершения настройки VPN. Настройки для R2 идентичны, с отличиями лишь в IP-адресах пиров и ACL.
Трансляция сетевых адресов (NAT) и VPN-туннели IPSec
В реальной схеме трансляция сетевых адресов (NAT), скорее всего, будет настроена для предоставления доступа в интернет внутренним хостам. При настройке VPN-туннеля типа «Site-To-Site» обязательно нужно указать маршрутизатору не выполнять NAT (deny NAT) для пакетов, предназначенных для удаленной сети VPN.
Это легко сделать, вставив оператор deny в начало списков доступа NAT, как показано ниже:
Для первого маршрутизатора:
Для второго маршрутизатора:
Инициализация и проверка VPN-туннеля IPSec
К этому моменту мы завершили нашу настройку, и VPN-туннель готов к запуску. Чтобы инициировать VPN-туннель, нам нужно заставить один пакет пройти через VPN, и этого можно достичь, отправив эхо-запрос от одного маршрутизатора к другому:
Первое эхо-сообщение icmp (ping) получило тайм-аут, но остальные получили ответ, как и ожидалось. Время, необходимое для запуска VPN-туннеля, иногда превышает 2 секунды, что приводит к истечению времени ожидания первого пинга.
Чтобы проверить VPN-туннель, используйте команду show crypto session:
Готово! Мы только что успешно подняли Site-To-Site IPSEC VPN туннель между двумя маршрутизаторами Cisco!
Онлайн курс по Кибербезопасности
Изучи хакерский майндсет и научись защищать свою инфраструктуру! Самые важные и актуальные знания, которые помогут не только войти в ИБ, но и понять реальное положение дел в индустрии
L2TP & «IPsec with pre shared key» vs MITM
В статье рассмотрены основные vpn протоколы, которые на текущий момент применимы в бизнес процессах, а также углубленно освещен вопрос использования L2TP в связке с IPsec в режиме pre shared key. На практике разобраны подходы к организации виртуальных сетей на оборудовании MikroTik и выполнен практический аудит безопасности передачи данных с позиции анализа третьими лицами исходящего трафика при возможности MITM атаки.
Vpn технологии прочно вошли не только в корпоративную среду, но и в повседневную жизнь многих IT и других специалистов в реализации рабочих и личных проектов. Если перед вторыми вопрос безопасности может вставать исключительно с исследовательским интересом, то для бизнеса важно понимать риски, связанные с эксплуатацией различных информационных процессов в задействованной инфраструктуре, слабые и сильные места, а также экономическое обоснование применяемых решений. Безопасность стоит денег, но не всегда стоит подходить к этому вопросу, как к неприступной крепости, при условии правильной оценки складывающейся ситуации.
Здесь важно не путать протоколы с сервисами vpn, которых еще больше: ExpressVPN, CyberGhost, NordVPN и т.д. Вторые по сути являются провайдерами услуг, обеспечивая доступ клиентов к собственным ресурсам с целью обхода блокировок со стороны ISP, а также анонимности серфинга в интернете. Про них сейчас речь не идет.
С вариацией протоколов определились, какой же выбрать?
Во-первых, в зависимости от того, что строим client-to-site или site-to-site, потому что GRE для первого случая не подойдет.
Во-вторых, Wireguard хоть молодой, простой и очень перспективный, но на офисном маршрутизаторе Cisco или MikroTik его не поднять пока (на stable версии ОС, для второго вендора). PPTP очень легок в настройке, однако будет либо не шифрованным, либо шифрованным протоколом MPPE, который не имеет аппаратной разгрузки, в следствие чего, многопользовательскую сеть замедлит в работе. SSTP отличный протокол, работает по TLS на 443 порту, пролезет через любой Firewall, а может даже и IDS. У некоторых вендоров, например, MikroTik, может работать по pre shared key вместо сертификата, запускается на Windows клиентах из коробки.
Из минусов: определенные танцы с бубном при настройке Linux клиентов (протокол все-таки от Microsoft) и отсутствие поддержки со стороны вендоров в аппаратной разгрузке. OpenVPN всем хорош, особенно высокой гибкостью. Можно туннелировать на L2, можно на L3, всего не перечислить. Не даром он open soft. Роутер MikroTik скоро научится работать с ним по UDP (ожидается в следующем поколении RouterOS), так как смысла в TCP нет, ведь соединение все равно проверяется во вложенном туннеле. Однако, скорее всего ваша офисная Cisco не умеет с ним работать, поэтому vpn сервер из нее не организовать.
Фактически, стандартом де-факто в корпоративной среде является протокол L2TP. Он работает на UDP, порт по умолчанию 1701. С шифрованием все хорошо, особенно наличие возможности аппаратной разгрузки IPsec. Есть вероятность, что ваш корпоративный MikroTik (несмотря на то, что он софтовый маршрутизатор) умеет шифровать IPsec на железе (смотри таблицу «Hardware acceleration» на сайте производителя ). У Cisco в этом вопросе дела обстоят еще лучше. Даже если ваш офисный роутер не умеет шифровать железом, никто кроме вас это знать не должен не будет.
Итак, подведем промежуточный итог: vpn технологии бизнесу нужны, использовать лучше всего L2TP. Закончив с затянувшейся вводной частью, перейдем непосредственно к теме статьи. Рассмотрим на примере оборудования MikroTik безопасность передачи данных в туннеле при возможности MITM атаки со стороны третьих лиц. Этот вопрос возникает в следствие того, что почти всегда в корпоративной среде используют L2TP в связке с IPsec в туннельном режиме и общим ключем для всей сети, вместо создания PKI и задействования сертификатов. Это удобно, сеть быстро разворачивается и легко обслуживается. Безопасно ли это в условиях компрометации pre shared key? Разберем на практике.
— Начнем с того, что L2TP может быть не шифрованным:
— с интегрированным в протокол шифрованием MPPE:
— с качественным внешним шифрованием от IPsec, вроде AES:
Настройка L2TP сервера осуществляется достаточно просто, активируем его и указываем тип аутентификации:
Здесь же появляется возможность сразу активировать IPsec и настроить pre shared key. Если это сделать, то общий ключ будет закреплен за всей vpn сетью и передан всем ее участникам в качестве настроечной информации. Один и тот же на всех. На самом деле, если активировать IPsec таким образом, то RouterOS автоматически создает необходимые настройки в соответствующем разделе /ip ipsec сразу после установления L2TP соединения.
Конкретно речь идет:
Автоматически созданные настройки IPsec
Очень удобно. Особенно, когда IP адреса динамические и вообще натированные. Клиентам не нужно выполнять лишние процедуры по отслеживанию их текущих значений. В RouterOS в разделе L2TP есть дополнительная настройка, определяющая общий секрет при конфигурировании в сетях Virtual Private DialUp Network протяженных соединений точка-точка между удаленным сервером PPPOE и L2TP сетью, но это к теме статьи не относиться, поэтому просто ее упомянем всуе:
Допустим, мы не хотим простого счастья и дополнительно желаем, чтобы у каждого клиента был индивидуальный сертификат вместо общего ключа (возможно, для этого в компании уже все готово). Звучит очень круто и безопасно. Нет технически не преодолимых проблем, кроме танцев с бубнами: создаем все вышеперечисленное в ручном режиме, не забываем про корректно заданные IP адреса, как со стороны сервера, так и со стороны клиентов.
Здесь нас поджидает кропотливая работа, ведь, скорее всего, адреса у клиентов меняются (и достаточно часто), кроме этого клиенты сидят за провайдорским NAT. Все это можно накрутить кастомными скриптами на RouterOS, и все будет отлично работать. Нужно ли это? Cмоделируем ситуацию, когда общий для всех pre shared key стал известен злоумышленнику, который целенаправленно хочет нам навредить. Или клиент vpn нам больше не клиент. Сразу баним его учетную запись, и теперь аутентификацию mschap2 (или какая у вас там выбрана) он не пройдет и доступ не получит:
Если каким-то чудом у него есть возможность MITM, то есть пропускать трафик через себя, то толку в этом ровно никакого нет. Весь трафик зашифрован. Выдать себя за vpn сервер другим участникам корпоративной сети тоже не удастся. В подобном нереальном сценарии аутентификацию mschap2 клиенты не пройдут, ведь их секрет известен только им и вам, разумеется:
Шифрованный трафик L2TP туннеля
Исследовательский интерес нас ведет дальше. Может все-таки что-то можно сделать с трафиком? И в результате извлечь передаваемую информацию? Попробуем дешифровать трафик в лабораторных условиях. MikroTik позволяет нам выполнить debug соединения и увидеть подробную информацию об установленной IPsec сессии:
/ip ipsec installed-sa print
Как видно, сессия установилась на 30 минут, имеются разные ключи аутентификации и шифрования. Применим их в Wireshark, после приведения шестнадцатеричных значений к корректному формату: SPI 0x0ada181b, вместо MikroTik-овского 0xADA181B, ключи начинаются со значения 0x. Если все сделано правильно, тогда трафик откроется.
Ввод данных сессии для дешифрования IPsec
Подведем результаты
Настройка IPSec Router-to-Router, Pre-shared, NAT Overload между частной и открытой сетью
Параметры загрузки
Содержание
Введение
Этот пример конфигурации иллюстрирует шифрование трафика между частной сетью (10.103.1.x) и внешней сетью (98.98.98.x) с использованием IPSec. Сеть 98.98.98.x определяет сеть 10.103.1.x по частным адресам. Сеть 10.103.1.x определяет сеть 98.98.98.x по открытым адресам.
Предварительные условия
Требования
Данный документ требует базовых знаний протокола IPSec. Дополнительные сведения о протоколе IPSec можно найти в документе Обзор протокола шифрования для защиты IP-пакетов (IPSec).
Используемые компоненты
Сведения, содержащиеся в данном документе, касаются следующих версий программного обеспечения и оборудования:
Выпуск ПО Cisco IOS® 12.3(5)
Маршрутизаторы Cisco 3640
Сведения, представленные в этом документе, были получены от устройств, работающих в специальной лабораторной среде. Все устройства, описанные в данном документе, были запущены с конфигурацией по умолчанию. При работе в действующей сети необходимо понимать последствия выполнения любой команды.
Условные обозначения
Подробные сведения об условных обозначениях см. в документе Условное обозначение технических терминов Cisco.
Настройка
В этом разделе содержатся сведения о настройке функций, описанных в этом документе.
Примечание. Для поиска дополнительных сведений о командах, описываемых в данном документе, используйте средство поиска команд (только для зарегистрированных пользователей).
Схема сети
В этом документе используются настройки сети, показанные на данной диаграмме:
Варианты конфигурации
В этом документе используются следующие конфигурации:
3640-2b – «открытый» маршрутизатор |
---|
3640-6a – «частный» маршрутизатор |
---|
Проверка
В данном разделе содержатся сведения о проверке работы конфигурации.
Некоторые команды show поддерживаются интерпретатором выходных данных (доступен только для зарегистрированных пользователей); интерпретатор позволяет просматривать анализ выходных данных команды show.
Для проверки этой конфигурации воспользуйтесь расширенной командой ping с интерфейса Ethernet на частном маршрутизаторе 10.103.1.75, адресованной интерфейсу Ethernet на открытом маршрутизаторе 98.98.98.1.
ping – диагностирует работоспособность сети на базовом уровне.
show crypto ipsec sa – показывает настройки, используемые текущими ассоциациями безопасности IPSec.
show crypto isakmp sa – показывает все текущие ассоциации безопасности IKE SA на стороне однорангового соединения.
show crypto engine – показывает сводку по конфигурации криптоядер. Команду show crypto engine следует выполнять в привилегированном режиме EXEC.
Пример выходных данных команды show
Ниже показаны выходные данные при выполнении команды show crypto ipsec sa на центральном маршрутизаторе.
Эта команда отображает ассоциации безопасности IPSec, установленные между одноранговыми сторонами. Между узлами 95.95.95.2 и 99.99.99.2 создается зашифрованный туннель, обеспечивающий передачу трафика между сетями 98.98.98.0 и 10.103.1.0. Можно видеть, что входящий и исходящий потоки формируют две ассоциации безопасности (SA) протокола инкапсулирующей защиты содержимого (ESP). Ассоциации безопасности заголовка аутентификации (AH) не используются, поскольку таких заголовков нет.
Поиск и устранение неполадок
В этом разделе описывается процесс устранения неполадок конфигурации.
Команды для устранения неполадок
Некоторые команды show поддерживаются интерпретатором выходных данных (доступен только для зарегистрированных пользователей); интерпретатор позволяет просматривать анализ выходных данных команды show.
Примечание. Прежде чем применять команды debug, ознакомьтесь с документом Важные сведения о командах debug.
debug crypto ipsec sa – служит для просмотра данных о согласовании IPSec на 2-м этапе.
debug crypto isakmp sa – служит для просмотра данных о согласовании ISAKMP на 1-м этапе.
debug crypto engine – служит для просмотра шифруемых сеансов.
Сайт ARNY.RU
CISCO IPsec — в статье рассказаны варианты развёртывания VPN туннеля: «чистый» IPsec, GRE over IPsec в виртуальной среде EVE-NG.
Тестовая среда
Использовалась IOSv Software (VIOS-ADVENTERPRISEK9-M), Version 15.6(2)T, RELEASE SOFTWARE (fc2).
Туннель туннель будет прокидываться между интерфейсами GigabitEthernet0/0 роутеров.
Попробуем симулировать среду 2 граничных роутеров, между которыми Интернет. Поэтому на роутерах настроен NAT. Компьютеры PC1 и PC2 друг-друга напрямую не видят, так как они за натом. Начальная конфигурация R1:
Для R2 аналогично. Далее уже не буду каждый раз это писать. Подразумевается, что на R2 симметричные настройки.
Кроме этого для защиты со стороны «интернета» на интерфейсах далее будет настроен ACL, в котором разрешены на вход в роутер лишь несколько протоколов. Такой ACL скорее всего понадобится в продакшене, если настроен CBAC-файрвол.
Много букв про IPsec
Да, можно заучить команды, но очень важно понимать нюансы настройки и работы IPsec. А тут их как никогда много. Причём в разных источниках информация об IPsec немного различается. Достаточно таких источников пересмотрел. Скорее всего мой рассказ тоже будет немного отличаться от других. Постараюсь, тем не менее, обращать внимание на важные особенности.
IPsec — не 1 протокол, это набор протоколов (Framework), работа IPsec — согласованная работа этих протоколов. Набор протоколов в IPsec неоднозначный, нужно выбрать, какие именно протоколы будут использоваться.
С использованием IPsec достигается концепция безопасности CIA Triad: Confidentiality, Integrity, Availability
Кроме этого IPsec обеспечивает Antireplay (все пакеты нумеруются и если пакет уже приходил, то второй пакет с таким же номером будет отброшен).
Рассмотрим используемые протоколы:
Самое первое, IKE должен быть включен для реализации функционала IPsec. Он включен по умолчанию в IOS, но его можно и отключить:
Надо проверить и при необходимости включить:
Существует две версии IKE: IKEv1 (RFC 2409) and IKEv2 (RFC 7296), IKEv2 реализован чтобы обойти ограничения IKEv1 и имеет существенные улучшения по сравнению с первой версией:
Но сегодня рассматриваем только IKEv1. IKEv2? Может как-нибудь потом. отдельной статьёй. IKEv1 до сих пор широко используется и не требует какого-то специально оборудования.
Иногда в литературе термины IKE и ISAKMP взаимозаменяемы:
Это не меняет сказанного и никакой путаницы не вносит.
Шифрование
Применяется симметричное шифрование, то есть такое, где ключ для шифрования и расшифровки один и тот же. Оно менее устойчиво ко взлому чем ассиметричное, но только симметричное шифрование технически доступно для большим объёмов передаваемых пользовательских данных, так как использует относительно низкую утилизацию CPU устройства. Рекомендуется AES.
Целостность
Для каждого сообщения вычисляется хеш, который прикладывается к сообщению. Хеш очень короткий, всегда одинаковой длины (определяется алгоритмом), он однозначно определяет исходное сообщение. При получении высчитывается хеш полученного сообщения, он сравнивается с приложенным хешем. Если значения 2 хешей совпадают, значит сообщение не было изменено. Такой метод уязвим к атаке «человек посередине» (Man-In-The-Middle): сообщение перехватывается по пути следования, изменяется, прикладывается новый хеш. Для принимающей стороны всё ok. Чтобы этого не могло произойти, применяется технология HMAC (Hash-Based Message Authentication Code): перед созданием хеша к сообщению прикладывается ключ, который есть только у отправляющей и принимающей стороны. В результате, атакующий после изменения сообщения не сможет вычислить нужный хеш, так как у него нет ключа. А вычислить ключ по исходному сообщению и хешу для сообщение+ключ он тоже не сможет. Точнее, на это нужно время, чем устойчивее алгоритм хеширования, тем больше времени нужно на взлом. Рекомендуется SHA256 и выше.
Обмен ключами
Для создания туннеля обе стороны должны совместно вычислить общий секретный ключ для симметричного шифрования данных в туннеле (не путать с PSK, который нужен для аутентификации). Всё это надо сделать через публичную сеть Интернета. Как это выполнить? На пустом месте через небезопасную сеть договорится о ключе для шифрования? Для этого используется специальный ассиметричный алгоритм Диффи-Хеллмана (DH). Степень защиты при расчёте общего ключа для шифрования определяется группой DH. Рекомендуется: Если в алгоритмах шифрования или аутентификации используется 128-битовый ключ, группа 14, 19, 20 или 24, а для 256-битового ключа группа 21 или 24.
Аутентификация
Каждый роутер должен подтвердить другому роутеру (и наоборот, то есть для 2 роутеров процедура выполняется 2 раза, сначала в одну, потом в обратную сторону) свою подлинность для участия в IPsec туннеле. Возможности: Общий, вводимый вручную, секретный ключ PSK (Pre Shared Key), Сертификаты RSA. Рекомендуется: Сертификаты RSA.
Аутентификация на основе общего ключа PSK происходит так: к ключу прикладывается определённая несекретная информация, известная и общая для обоих роутеров, высчитывается хеш, отправляется второму роутеру. Второй роутер повторяет процедуру для своего ключа и сравнивает хеши. Совпадение хешей означает совпадение общих ключей и как результат — подлинность, приславшего сообщение роутера. Потом второй роутер повторяет процедуру. В результате оба роутера подтвердили свою подлинность друг-другу.
Аутентификация RSA в рамках данной заметки рассматриваться не будет, поэтому разговора про неё нет. По факту повсеместно используется PSK, он не то чтобы проще, а глобально проще.
Плюс у RSA есть заморочки по поводу времени: мало того что оба роутера должны быть настроены на получение точного времени и время обязательно должно быть синхронизировано уже при загрузке, но ещё есть и связанные баги. Кроме этого настройка самих сертификатов тоже трудоёмкая задача. Возможно, как-нибудь.. выложу статью с примером.
Загрузка CPU
Пару слов: рекомендации это конечно хорошо, но чем сильнее алгоритмы, тем больше накладных расходов на их обсчёт. Туннелей может быть много. Конечно при большом числе туннелей предпочтителен DMVPN, а не IPsec туннель, но как мы знаем, не всегда всё в продакшене гладко и пушисто.
Кроме непосредственно туннелей на роутере есть и другие сервисы: файрвол, возможно IOS IPS, возможно NetFlow, возможно через этот роутер в интернете сидит огромное число народу с помощью NAT, возможно часто идёт потоковое видео или даже несколько потоков одновременно (видео-конференции, к примеру). Каждый подобный сервис грузит CPU роутера обсчётом.
Всё это нужно учитывать и алгоритмы подбирать такие, чтобы они совместно со всем вышеперечисленным не положили роутер. Для этого мониторить загрузку CPU:
При высокой нагрузке алгоритмы брать попроще. В примере буду использовать сильные алгоритмы. В продакшене видел люди не парятся, используют 56-битный DES и MD5 🙂 Пример реализации, тут рассказанный, он для изучения возможностей IPsec, не калька для продакшена. Это важно.
Чистый IPsec
«Чистый» — это моё название, официально туннель называется просто IPsec VPN tunnel.
Туннель возможен между CISCO ISR (Integrated Services Routers), ASA в любом сочетании. В CISCO ASA настройки могут быть выполнены через графическое средство — ASDM. Там всё понятно и пошагово, поэтому для определённости будем считать, что туннель пробрасывается между двумя ISR. Настройка в этом случае сложнее, ведь она производится через CLI и нужно понимать в каком порядке вводить команды, а также что значит каждая команда.
Важно. Недостатком чистого IPsec туннеля является то, что он может передавать только юникастовые пакеты. Мультикаст передаваться не может, это является препятствием для обмена информацией динамическими протоколами маршрутизации.
Чистый IPsec используется когда проброс информации динамических протоколов маршрутизации и передача потокового видео через туннель не нужны.
Фазы IPsec
Процесс установки IPsec VPN туннеля состоит из 2ух последовательных стадий-фаз (Phases):
Важно отметить, что туннель не поднимается сразу после выполнения настроек. Согласования фазы 1, затем 2 начинается после того, как на роутер попадают данные, предназначенные для туннеля («интересный» трафик). Данные эти отбираются с помощью ACL (называется Crypto ACL, хотя по факту это самый обычный ACL).
Также важно то, что туннель не существует сколь угодно долго после создания, у него есть время жизни (Lifetime). После истечения Lifetime туннель гасится и пересоздаётся снова (с помощью фаз 1 и 2, при наличии интересного трафика). Если интересного трафика нет, туннель лежит, но постоянно готов к созданию сразу при появлении такого трафика.
Lifetime выбирается достаточно большим, чтобы туннель слишком часто не пересоздавался. И достаточно маленьким, чтобы туннель не был взломан. При использовании стойких ко взлому алгоритмов актуальность малого Lifetime туннеля снижается.
Встречал в разных материалах, что по истечении Lifetime «обновляются ключи шифрования», открываю официальный гайд, о котором сказано в начале статьи:
Впрочем, никто мне не мешает проверить (будет далее).
Необходимые понятия
Для создания IPsec туннеля требуется 2 SA: для первой и для второй фазы. На роутере уже есть предустановленные SA, но пользоваться ими не рекомендуется (по крайней мере предустановленные SA 1 фазы используют устаревшие, нестойкие алгоритмы).
Для успешного поднятия туннеля параметры SA на одном роутере должны полностью совпадать с параметрами SA на другом роутере (для каждой фазы). Роутеры будут перебирать имеющиеся SA пока не подберут совпадающие.
Настройка IPsec
Фаза 1
Начинаем настраивать SA первой фазы. Создаётся политика ISAKMP. HAGLE — удобная мнемоника для запоминания этой SA:
Как уже говорилось параметры SA для обоих роутеров должны совпадать. Исключение составляет параметр Lifetime: если он не совпадает, то взят будет наименьший.
Важно отметить, что номер политики означает приоритет её использования:
Использовал номер 3, приоритет третий, но поскольку политики с номерами 1 и 2 не определены, то наша третья будет использоваться первой. Также необязательно чтобы номера политик с двух сторон совпадали.
Дефолтные SA первой фазы
Их 8, начиная с самой устойчивой, затем постепенно устойчивость ко взлому снижается. При отсутствии вручную заданной SA первой фазы роутер попытается использовать дефолтные SA в порядке приоритетов (номеров). Сначала саму стойкую 65507, согласование окончилось ошибкой, тогда 65508. И так далее.
Указывается ключ PSK и IP роутера с другой стороны туннеля (IP пира):
Формат команды тут:
Значение для адреса 0.0.0.0 0.0.0.0 может быть использовано чтобы матчить с любым пиром.
Crypto ACL
Самый обычный ACL, нам нужно отобрать трафик с PC1 на PC2 для R1 и с PC2 на PC1 для R2:
Этот ACL ничего не разрешает и ничего не запрещает, у него другие функции. Он только для отбора трафика. Трафик, который удовлетворяет строкам permit (у нас тут одна строка), будет зашифрован и передан через туннель. А трафик, который удовлетворяет строкам deny (у нас неявный запрет в конце списка), будет передан как обычно.
Неплохо будет добавить пояснение что это за ACL, повышает читаемость конфигурации:
Фаза 2
SA второй фазы несколько отличается от первой. IPsec может использовать протокол AH или протокол ESP:
IPsec работает или в туннельном режиме, или в транспортном режиме:
Transform Set
Настраиваем набор алгоритмов для фазы 2:
Здесь R1-R2 имя набора, оно будет далее использоваться в Crypto MAP и выбирать его нужно таким, чтобы потом не запутаться, то есть одинаковым для обоих роутеров. Выбираем далее esp-aes 256:
И esp-sha256-hmac, туннельный режим:
Поскольку туннельный режим идёт по умолчанию, то вводить команду mode tunnel для сета не нужно (она добавится автоматически).
Ещё тут можно настроить дополнительные параметры IPsec SA:
Выделено цветом глобально заданное время жизни для SA второй фазы. Это значение можно переопределить в Crypto Map. Дополнительные параметры оставляю по умолчанию.
Дефолтный SA второй фазы
Единственный дефолтный сет имеет транспортный режим. Он в нашем туннеле не заработает, поэтому SA второй фазы нужно обязательно набивать руками.
Crypto Map
Создаётся Crypto Map, которая вещается на внешний интерфейс в сторону пира. Crypto Map ассоциирует интересный трафик с настройками IKE/IPsec. Трафик исключается из глобальной маршрутизации и принудительно «засовывается» в туннель.
Указывается имя, номер:
Тут небольшое лирическое отступление. А вообще сколько туннелей норма при вот таком режиме IPsec, как сейчас разбирается, чтобы полносвязное соединение было (всё на всё)? Два пира — всего 1 туннель (1 на роутер), 3 пира — всего 3 туннеля (2 на роутер), 4 пира — уже 6 туннелей (3 на роутер).. Моё скромное мнение: 1-3 пира, используем IPsec туннели, 4 и более, используем DMVPN. Тут конечно есть варианты, но 4-5-6.. пиров это хорошая причина задуматься о переходе на DMVPN.
В явном вид говорится, что мапа останется неактивной пока не будет добавлен пир и валидный Crypto ACL для отбора трафика.
Привязываем ACL, сет алгоритмов и адрес удалённого роутера. Тут строку set peer можно повторить несколько раз, чтобы указать несколько возможных значений. Предпочитаемый пир можно обозначить параметром default после IP адреса.
Команда для трансформ сет имеет формат:
Можно указать несколько сетов, они будут перебираться согласно своего порядка, пока один из них не сматчит и туннель не установится.
Дополнительные возможности Crypto Map
При согласовании фазы 2 будет ещё раз выполнен алгоритм Диффи-Хеллмана для создания нового симметричного ключа шифрования. В результате у туннелей второй фазы будет собственный ключ шифрования, иначе используется ключ из первой фазы.
Для второй фазы можно задать отдельное время жизни в днях, килобайтах или секундах, иначе вторая фаза будет проходить (после первой, разумеется) при истечении Lifetime первой фазы и пересоздании туннеля. Заданное тут значение заменяет глобальную настройку для этой конкретной мапы.
Интересный момент: при истечении времени жизни туннеля второй фазы, его пересоздание с обновлением ключей происходит бесшовно, то есть никаких перерывов в работе туннеля и никакой потери трафика нет.
Добавление Crypto Map на интерфейс
Добавляем мапу к интерфейсу, никаких ошибок быть не должно:
Если после вылезли вот такие ошибки:
То тут 2 варианта: сам что-то накосячил или глюк vIOS при полностью правильных настройках. В первом случае работать скорее не будет, во втором случае работает нормально, проверял.
Важный момент: чтобы Crypto Map отработала, пакет должен попасть на интерфейс, где мапа висит. У нас это достигается маршрутом по умолчанию:
Если бы не было этого маршрута, то пакет от 192.168.1.2 к 192.168.2.2 был бы отброшен. Мапа сама его не подтянет. Попаданий в Crypto ACL пакетов не будет, туннель не поднимется.
Ещё важный момент: Crypto Map имеет направление, то есть действует только на исходящий (outbound) трафик:
Изменение NAT
В том виде как он есть, NAT не даст работать туннелю. Пакеты будут просто проваливаться в него и всё. Нужно исключить пакеты для туннеля из NAT:
Ещё раз краткий алгоритм работы IPsec:
Разрешение трафика ISAKMP и ESP
Последний момент в настройке IPsec. Туннель настраивается всегда на граничных роутерах, Crypto Map вешается на интерфейс, смотрящий в Интернет. Но такой роутер защищён от нежелательного входящего со стороны интернет-трафика (CBAC firewall, ACL). А нам надо чтобы прошло согласование 2 фаз IKE. Поэтому нужно в явном виде «пропилить дырки» для входящего трафика IKE и ESP:
На всякий пожарный ещё раз: ISAKMP это UDP порт 500, ESP это IP протокол 50.
Разрешение Ping
И даже такой ACL недостаточен для нормальной работы. Туда нужно много чего добавить (как минимум SSH). Добавим правило чтобы возвращались проходил пинг:
И «лепим» этот ACL на внешний интерфейс во входящем направлении:
Кроме CBAC может быть Zone-based firewall, там ACL не используется, а для трафик разрешается правилами для пары зон. Про ZBF как-нибудь выложу отдельную статью, если получится её дописать.
Проверка IPsec
Сначала посмотрим чего понастраивали:
Сет уже просмотрели, когда выводилась инфа о дефолтном сете. Смотрим мапу:
А что это такое? Что за NiStTeSt1? Это баг данной версии IOS (требуется регистрация, нет если учётной записи в CISCO, то пора создать). Смотреть состояние SAs рано, там всё пусто и по нулям.
Тест туннеля
Для начала включим дебаг:
Запустим трафик с PC1 на PC2, например пинг:
Первый пинг пропадает, так как нужно время для поднятия туннеля. Вывод дебага огромен, приводить нет смысла. Тут надо только отметить, что фаза 1 согласовывается в основном режиме (Main mode, MM) или в агрессивном (Aggressive mode, AM). По умолчанию основной режим, агрессивный чуть быстрее (MM 6 сообщений, AM 3 сообщения), непринципиально чтобы заморачиваться на выяснение его настройки:
Тут надо заметить что эта команда выводит результат для каждой строчки (ACE) из Crypto ACL. Поскольку у нас 1 ACE, вывод такой, было бы 2 ACE, вывод был бы в два раза длиннее. По результатам: пакеты бегают, PFS работает. Также полезная команда show crypto session [ brief | detail ].
Теперь посмотрим на передаваемые пакеты с помощью WareShark:
Нагрузка зашифрована, всё в порядке.
К вопросу о Lifetime
Самому даже интересно. Никто не мешает мне мучить виртуальные (реальные тоже) железки, вводить правильные и неправильные параметры, как захочу. Сделаем время жизни 60 секунд (возможный минимум), дебаг включён, запускаем инициализацию туннеля по пингу (5 пакетов) и ждём 1 минуту:
Нету туннеля. Вопрос закрыт. Полные конфы R1 и R2.
GRE over IPsec
Смысл туннеля: пакеты GRE зашифрованы IPsec. Поскольку сам GRE (Generic Routing Encapsulation) передаётся в виде юникастовых пакетов, то его возможно помещать внутрь IPsec (точнее внутрь ESP). Таким образом GRE over IPsec решает проблему как GRE (шифрование), так и IPsec (поддержка мультикаста). Подробнее о GRE и чем он хорош.
Схема подключения та же самая. Роутеры в начальной конфигурации (без IPsec туннелей, всё, что настраивалось в 1 части статьи — этого нет).
Настройка GRE over IPsec
Чтобы всё было понятно, нужно разобрать теорию первой части статьи.
GRE туннель
Сначала настраиваем GRE туннель:
Делаем маршрут, чтобы трафик в удалённую подсеть заворачивал в туннель:
Проверяем работу GRE:
NAT в данном случае не мешает работе туннеля, проверяем:
Почему это так чуть далее.
Просмотр через WireShark
Если просмотреть пинги со 192.168.1.2 на 192.168.2.2, то видно, что пакет ICMP запакован в пакет GRE, 2 IP заголовка (выделено рамкой): внешний IP заголовок GRE пакета и IP заголовок инкапсулированной нагрузки. Прошу обратить внимание (подчёркнуто), что IP адрес отправителя и получателя для пакета GRE это IP адреса физических интерфейсов GigabitEthernet 0/0 роутеров. Возможно очевидно, но сам по себе это важный факт.
В первом IP заголовке: протокол GRE, IP 47:
Настройка IPsec
Теперь добавим IPsec:
Список управления доступом: отбираем трафик GRE, идущий в туннель:
Как уже подчёркивал выше, IP заголовок GRE использует не IP адреса туннеля с двух сторон, а IP адреса физических интерфейсов двух роутеров. Поэтому такой ACL.
Сокращение накладных расходов
Чем меньше будет служебных заголовков, тем больше места под полезную нагрузку.
Tunnel Type | Tunnel Header Size |
---|---|
GRE without IPsec | 24 bytes |
DES/3DES IPsec (transport mode) | 18–25 bytes |
DES/3DES IPsec (tunnel mode) | 38–45 bytes |
GRE + DES/3DES | 42–49 bytes |
GRE + AES + SHA-1 | 62–77 bytes |
Таблица с накладными расходами на инкапсуляцию
Тут у нас есть две возможности:
Только второй вариант используется в продакшене, нет смысла засовывать туннель (он уже есть), в ещё 1 туннель, повышая накладные расходы. Поэтому транспортный режим дефолтного сета то, что нужно. Берём дефолтный сет. Но можно конечно создать и свой сет. Как создать трансформ сет показал выше, тут хочу продемонстрировать возможности дефолтного сета. Теперь мапа:
А где сет? Дело в том, что привязка Transform Set не является обязательной для Crypto Map:
Достаточно пира и ACL. Как раз не привязывая сет мы даём понять, что хотим использовать дефолтный сет. Если пир или ACL не указан для мапы, то она имеет следующий вид в конфигурации:
Дополнительные возможности мапы использовать не будем. Вешаем мапу на интерфейс:
Обработка пакета
Резонный вопрос: а почему интерфейс для мапы GigabitEthernet 0/0, а не Tunnel 1? Во-первых, можно вешать только определённые мапы на туннельный интерфейс:
Во-вторых, потому что Tunnel 1 это логический интерфейс, который занимается упаковкой обычного IP пакета в пакет GRE, а далее пакет GRE пересылается уже через физический интерфейс. Этот интерфейс GigabitEthernet 0/0. Там мы этот пакет мы и ловим мапой.
Тут чуть подробнее, так как это важно. Рассмотрим классическую схему с рекурсивным просмотром таблицы маршрутизации. Пакет от 192.168.1.2 к 192.168.2.2 отправляется компьютером PC1 сначала на шлюз по умолчанию 192.168.1.1. Это наш роутер R1. Роутер начинает просматривать таблицу маршрутизации:
После просмотра таблицы выделенный маршрут будет признан оптимальным для пересылки пакета (1 проход). Далее по таблице маршрутизации роутер будет искать через какой интерфейс отправить пакет для 10.10.100.2 (2 проход) и выберет строку:
Связанный интерфейс Tunnel 1, пакет будет отправлен на этот интерфейс. Далее будет произведена упаковка нашего пакета в GRE. После будет просмотрена конфигурация туннеля:
и отправка пакета уже на GigabitEthernet 0/0. Далее пакет отбирается мапой, так как он удовлетворяет Crypto ACL, шифруется. В IP заголовке, в поле Protocol заменяется протокол с 47 (GRE) на 50 (ESP). Шифрованный пакет выстреливается через GigabitEthernet 0/0.
На самом тут были сделаны некоторые допущения ради наглядности: ничего роутер в таблице маршрутизации искать не будет, да ещё в несколько проходов. Активен и работает CEF, все возможные маршруты просчитаны и роутер сразу знает, что делать с пакетом:
Как уже говорилось NAT не мешает работе туннеля. Почему так происходит? NAT применяется к пакету во время прохождения им GigabitEthernet 0/0 (до отработки привязанной мапы). Поскольку до прибытия на GigabitEthernet 0/0 пакет инкапсулируется в GRE, где у него меняется IP заголовок и соответственно IP отправителя и IP получателя в заголовке (на 10.10.10.1 и 10.10.10.2 для R1), то ACL 1, привязанный к нату, отбросит пакет. Пакет будет отправлен через GigabitEthernet 0/0 без натирования. Захватывание пакета мапой с помощью ACL 101 и упаковка в ESP происходит позже и уже никак не влияет.
Вывод
Интерфейс IP туннеля (для R1 это 10.10.100.1) нужен только для для инкапсуляции пакета в GRE. На него завязана некоторая маршрутизация, но всё это для выполнения основной задачи — передать пакет для инкапсуляции.
Разрешение трафика IPsec
Берём ACL из первой части:
Разрешение трафика GRE не нужно, так как поверху обёрнут ESP и что там у него внутри неважно. Вешаем на интерфейс:
Проверка GRE over IPsec
Основные настройки и состояния после установления IPsec туннеля рассматривались в первой части. Здесь всё тоже самое. Повторяться нет смысла. Лучше проверим, что GRE действительно запаковывается в ESP:
Все нормально, нагрузка шифрованная.
Проверим работоспособность протокола маршрутизации. Для этого создадим интерфейсы Loopback:
Теперь настроим OSPF:
Роутеры R1 и R2 сформировали отношения смежности через туннель, мультикаст работает:
Проверим работу маршрутизации:
Работает, на этом всё. Полные конфы R1 и R2.
Keepalive
Механизм работы GRE Keepalive рассказан в статье CISCO GRE. Оставил Keepalive напоследок. Проверяем:
Ждём 15 секунд, если есть проблемы, то за это время Line Protocol интерфейса Tunnel 1 должен перейти в Down. Смотрим:
Почему так происходит? Да потому что у нас любые пакеты, пересылаемые по туннелю захватываются Crypto ACL 101, шифруются, включая пакеты Keepalive (незашифрованного трафика через туннель нет). Соответственно последние нормально доходят:
Ещё одна интересная особенность, поскольку сразу после загрузки роутера пакеты Keepalive начинают пуляться в туннель GRE, то срабатывает ACL отбора интересного трафика для IPsec. Если в случае чистого IPsec первый пинг между компьютерами пропадал, так как нужно было время на отработку фаз 1 и 2, то в случае GRE over IPsec + Keepalive всё сразу готово к работе после загрузки роутера.
Фрагментация
Известная практика ограничивать MTU до 1400 байт при использовании GRE over IPsec для устранения фрагментации пакетов: