Разделяй и властвуй: гарантированный взлом MS-CHAPv2. Можно ли взломать VPN-сервис? Подробный обзор

Виртуальная частная сеть (Virtual Private Network, далее просто VPN) позволяет создать в интернете безопасный виртуальный туннель от одного устройства к другому . Если вы выходите в сеть через такой туннель, то всем остальным включая вашего провайдера становится очень сложно следить за вашими действиями.

VPN-сервисы также помогают подменить данные о вашем физическом местоположении на любые другие, что позволяет получить доступ к сервисам, заблокированным для пользователей из тех или иных регионов по географическому признаку. Использование VPN позволяет защитить конфиденциальность (данные остаются тайными) и целостность (данные остаются неизменными) сообщений, передаваемых в сети.

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

Как работает шифрование VPN-сервисов?

VPN-протокол - это набор правил передачи и шифрования данных. Большинство VPN-сервисов предоставляют своим клиентам на выбор несколько VPN-протоколов, среди которых чаще всего встречаются следующие: Point to Point Tunnelling Protocol (PPTP), Layer Two Tunnelling Protocol (L2TP), Internet Protocol Security (IPSec) и OpenVPN (SSL/TLS).

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

У каждого из этих VPN-протоколов есть свои сильные и слабые стороны, зависящие от соответствующего криптографического алгоритма. Некоторые VPN-сервисы позволяют пользователям самим выбирать один из доступных шифров. Выделяют три вида шифров: симметричные, асимметричные и хэширующие.

Симметричное шифрование использует один ключ и для шифрования, и для расшифровки данных. Асимметричное шифрование использует два ключа: один для шифрования, другой для расшифровки. В таблице ниже эти виды шифрования сравниваются между собой.

Параметр Симметричное шифрование Асимметричное шифрование
Ключи Один ключ для нескольких сущностей У одной сущности есть публичный ключ, а другой - приватный
Обмен ключами Необходим безопасный способ отправки и получения ключей Приватный ключ хранится у владельца, публичный ключ доступен для всех остальных
Скорость Проще и быстрее Сложнее и медленнее
Надежность Взломать проще Взломать сложнее
Масштабируемость Хорошая Еще более хорошая
Использование Для шифрования чего угодно Только ключи и цифровые подписи
Опции безопасности Обеспечение конфиденциальности Обеспечение конфиденциальности, аутентификации и предотвращения отказа
Примеры DES, Tipple DES, AES, Blowfish, IDEA, RC4, RC5 и RC6 RSA, ECC, DSA и алгоритм Диффи - Хеллмана

Асимметричная криптография приходит на помощь в тех случаях, когда необходимо преодолеть ограничения, свойственные симметричной криптографии (как показано в таблице выше). Уитфилд Диффи (Whitfield Diffie) и Мартин Хеллман (Martin Hellman) были в составе первой исследовательской группы, начавшей работу над совершенствованием симметричного шифрования, именно они разработали алгоритм асимметричного шифрования, известный как алгоритм Диффи - Хеллмана .

Это популярный криптографический алгоритм, лежащий в основе множества VPN-протоколов, в том числе в основе HTTPS, SSH, IPsec и OpenVPN. С помощью этого алгоритма две стороны, никогда не встречавшиеся между собой ранее, могут обсуждать приватный ключ даже в тех случаях, когда общение ведется через незащищенную публичную сеть (например, интернет).

Хэширование - это одностороннее (необратимое) шифрование, используемое для защиты целостности передаваемых данных . Многие VPN-протоколы используют алгоритмы хэширования для подтверждения истинности сообщений, отправленных через VPN. В качестве примеров можно вспомнить MD5, SHA-1 и SHA-2. Впрочем, MD5 и SHA-1 более не считаются безопасными.

VPN-сервисы можно взломать, однако это очень и очень сложно. Если вы не используете VPN-сервис, то ваши шансы пострадать от хакеров существенно выше.

Может ли кто-то взломать VPN-сервис?

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

Чтобы взломать VPN-соединение, нужно взломать шифрование, а для этого необходимо или воспользоваться уязвимостями в системе или алгоритме, или украсть ключ шифрования тем или иным образом . Криптографические атаки используются хакерами и криптоаналитиками для получения обычного текста из его зашифрованной версии в отсутствии ключа шифрования. Впрочем, взлом шифрования требует очень много вычислительных ресурсов и времени - на решение подобной задачи могут уйти буквально годы .

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

Известные VPN-уязвимости

Небезызвестный Эдвард Сноуден и специалисты по компьютерной безопасности не раз и не два заявляли о том, что АНБ (Агентство Национальной Безопасности США) взломало шифрование, используемое для защиты большей части интернет-трафика, в том числе и трафика VPN-сервисов. В материалах Сноудена говорится о том, что АНБ расшифровывает трафик VPN-сервисов путем перехвата зашифрованного трафика и передачи данных мощным компьютерам, которые затем возвращают ключ.

Специалисты по компьютерной безопасности Алекс Хэлдерман (Alex Halderman) и Надя Хенингер (Nadia Heninger) представили убедительный отчет, согласно которому АНБ действительно может расшифровывать большие объемы HTTPS-, SSH- и VPN-трафика с помощью атаки Logjam, нацеленной на основные способы использования алгоритма Диффи - Хеллмана.

Своим успехом АНБ обязано уязвимости в реализации алгоритма Диффи - Хеллмана. Суть этой уязвимости в том, что программы для шифрования используют стандартизированные простые числа. Хэлдерман и Хенингер утверждают, что за несколько сотен миллионов долларов США можно создать достаточно мощный компьютер, которые сумеет расшифровать один 1024-битный шифр по алгоритму Диффи - Хеллмана. На создание такого компьютера уйдет около года, что же касается необходимой для этого суммы - с точки зрения годового бюджета АНБ в ней нет ничего невозможного.

Увы, так получилось, что не все простые числа (менее 1024 бит) обычно используются в приложениях для повседневного использования, применяющих шифрование - в том числе и в VPN-сервисах. Как следствие, взломать такие алгоритмы становится еще проще. Как заявил Брюс Шнайер (Bruce Schneier), “математика хороша, но ее нельзя взломать. А вот код - другое дело”.

Стоит ли продолжать использовать VPN-сервисы?

Хэлдерман и Хенингер советуют VPN-сервисам переходить на 2048-битные или даже более сложные ключи шифрования по алгоритму Диффи - Хеллмана, также они подготовили руководство по их использованию с протоколом TLS. Организация The Internet Engineering Task Force (IETF) также советует использовать новейшие версии протоколов, требующие более длинные последовательности простых чисел.

Хакеры могут взломать ключи шифрования по алгоритму Диффи - Хеллмана, если те короче или равны по длине 1024 битам (примерно 309 символов). Взлом же 2048-битных ключей станет для хакеров настоящей проблемой! Иначе говоря, они еще очень долго не смогут расшифровать защищенные такими ключами данные.

Что же касается пользователей, то нужно отметить, что хакеры действительно знают про уязвимости VPN-сервисов и протоколов шифрования, с помощью которых они крадут и получают доступ к зашифрованным данным. Тем не менее, с VPN-сервисами вы защищены гораздо лучше, чем без них . Ваш компьютер могут взломать, но это будет очень дорого и долго. И да, чем менее вы заметны, тем лучше вы защищены.

Как утверждает Сноуден, «Шифрование реально помогает. На надежные и грамотно настроенные системы шифрования данных действительно можно положиться.» Соответственно, стоит избегать VPN-сервисов, использующих преимущественно хэширующие алгоритмы SHA-1 или MD5, а также протоколы PPTP или L2TP/IPSec. Выбрать стоит VPN-сервис, использующий последнюю версию OpenVPN (исключительно безопасный вариант) или SHA-2. Если вы не можете определить наверняка сами, какой из алгоритмов шифрования использует сервис, поищите эту информацию в пользовательском руководстве или обратитесь в службу клиентской поддержки сервиса.

VPN-сервисы - это ваши друзья. Верьте шифрованию, не сомневайтесь в математике. Используйте VPN-сервисы как можно чаще, постарайтесь убедиться, что ваши точки выхода тоже надежно защищены. Так вы сможете остаться в безопасности даже в том случае, если ваш зашифрованный туннель взломают.

@SooLFaa :
Не долго думая, я решила воспринять рекомендацию буквально.

Знакомство и запуск программы.

Атака роутеров будет осуществляться не с моей локальной машины, а со специально взятого в аренду удалённого VDS под управлением Windows. Двойной щелчок левой кнопкой мыши перебросил меня в Нидерланды.


Как сказано в заголовке, роль инструмента для атаки будет выполнять программа RouterScan. Для скачивания программы отправимся на форум "Античат". По заверению автора скачивать программу нужно только оттуда.

Программа портабельна, её установка заключается в распаковке скачанного архива в заданную папку.


По умолчанию, программа производит атаку на роутеры по портам 80, 8080, 1080. Считаю этот список вполне оправданным и не требующим никаких дополнений либо изменений.
Кроме того, в программе имеется возможность подключить дополнительные модули
  • Router Scan (main)
  • Detect proxy servers
  • Use HNAP 1.0
  • SQLite Manager RCE
  • Hudson Java Servlet
  • phpMyAdmin RCE

и совместно с атакой на роутеры, "прощупать" все IP в заданном диапазоне.
Но такая загруженность программы существенно замедлит её работу, поэтому в этом окне ничего трогать не будем. ведь целью атаки является доступ к WEB-интерфейсу одного случайного роутера для написания статьи.

Осталось только выбрать диапазон IP для атаки и можно запускать программу.
Переходим на сайт, предоставляющий диапазоны IP по странам и в роли жертвы случайным образом выбираем Польшу (выбор страны - случаен).


После того, как желаемые диапазоны вставлены в соответствующее окно программы, можно запускать программу в работу.
Время, затраченное на процесс взлома роутеров зависит от количества IP в выбранном диапазоне и может занимать довольно продолжительное время.
Но для написания статьи мне достаточно всего одного взломанного роутера, на котором имеется возможность поднять VPN-сервер. Этими моделями могут быть роутеры ASUS, Mikrotik либо любая другая модель с прошивкой DD-WRT. Пробежав быстрым взглядом по списку роутеров, появившихся во вкладке "Good Results" нетрудно обнаружить, что модели указанных роутеров имеются в списке.

Поднимаем VPN-сервер на роутере.

На роль жертвы в рамках данной статьи я выбрала роутер под управлением DD-WRT.

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

Копируем URL желаемого роутера в адресную строку браузера и после загрузки страницы оказываемся в его WEB-интерфейсе с правами админа.

Для того, чтобы роутер исполнял роль VPN-сервера, необходимо перейти на вкладку Службы - PPTP.

Разделяй и властвуй: гарантированный взлом MS-CHAPv2

Alexander Antipov

На двадцатой конференции Defcon мы с Дэвидом Халтоном представили презентацию о взломе MS-CHAPv2. В данном посте дан примерный обзор того, что мы охватили в своем выступлении.


На двадцатой конференции Defcon мы с Дэвидом Халтоном представили презентацию о взломе MS-CHAPv2. В данном посте дан примерный обзор того, что мы охватили в своем выступлении.

Почему MS-CHAPv2?

Первый очевидный вопрос - почему мы занялись MS-CHAPv2, учитывая давнее ощущение, что Интернет не стоит полагаться на этот протокол. К сожалению, даже будучи устаревшим протоколом и объектом распространенной критики, он продолжает использоваться повсеместно. Наиболее примечательно использование MS-CHAPv2 в PPTP VPN. Он также довольно интенсивно используется в конфигурациях WPA2 Enterprise, особенно в тех случаях, когда полагаются на его свойства взаимной аутентификации. Для своего выступления мы составили список из сотен VPN-провайдеров, которые зависят от PPTP. Он включает такие значимые примеры, как iPredator , VPN-сервис The Pirate Bay, который предположительно разработан для защиты информационного обмена от наблюдения со стороны государства.

Мы полагаем, что MS-CHAPv2 остается таким распространенным, поскольку предыдущие исследователи потенциальных слабостей протокола главным образом фокусировались на атаках по словарю. Если сложить эту ограниченность исследований с крайне широким количеством клиентов, поддерживающих протокол, и его совместимостью с ОС, станет понятно, почему это решение, требующее наименьшего количества телодвижений от пользователя, столь заманчиво.

Что теперь?

1) Все пользователи и провайдеры PPTP VPN-решений должны немедленно начать миграцию на другой VPN-протокол. PPTP-трафик следует считать незашифрованным.

2) Компании, которые зависят от свойств взаимной аутентификации MS-CHAPv2 для соединения со своими WPA2 RADIUS-серверами, должны немедленно начать миграцию на альтернативное решение.

Во многих случаях большие компании выбрали использование IPSEC-PSK поверх PPTP. В то время как PPTP теперь очевидно взломан, IPSEC-PSK, вероятно, еще более уязвим к вектору атаки по словарю, чем когда-либо был PPTP. PPTP по крайней мере требует от атакующего перехвата активного сетевого трафика, чтобы начать оффлайновую атаку по словарю, тогда как IPSEC-PSK VPN в агрессивном режиме, по существу, выдает хэши любому подключившемуся атакующему.

Учитывая доступные сегодня решения, безопасное развертывание чего-либо нуждается в некоторой проверке сертификатов. Это касается либо конфигурации OpenVPN, либо использования IPSEC в режиме сертификатов вместо PSK.

Обзорная статья на тему использования современных приватных тоннелей в роутерах популярной латвийской марки. Я расскажу о том, как настроить vpn сервер в mikrotik на базе таких технологий как l2tp, ipsec, openvpn, pptp, gre и eoip. Попутно кратко расскажу о том, что это за технологии, чем они отличаются, а так же проведу сравнение производительности микротика со всеми указанными тоннелями.

Данная статья является частью единого цикла статьей про .

Введение

Сразу хочу обратить внимание, что эта статья будет скорее обзорной, нежели передачей реального опыта, так как сам я чаще всего использую в качестве vpn сервера . Тем не менее с vpn в микротик тоже приходилось сталкиваться. Настраивал как pptp сервера для подключения удаленных клиентов, так и l2tp для объединения двух и более микротиков в общую приватную сеть. В основном по дефолту, не вникая в тонкости настроек.

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

Варианты vpn сервера в микротике

С вариантами vpn сервера в микротике все сложно:) В том плане, что есть много реализаций vpn, которую не так просто выбрать, если не разбираешься детально в сетевых технологиях. Я не сильно в них разбираюсь, но как мне кажется, немного улавливаю суть. Постараюсь вам объяснить своими словами, в чем отличия.

Существуют 2 принципиально разных решения для организации соединений между двумя микротиками и внешними абонентами:

  1. Создание l2 туннеля типа site-to-site с помощью EOIP Tunnel . Самый простой и быстрый способ объединить два микротика. Если не будет использовано шифрование, то получатся самые быстрые vpn подключения. Необходимы выделенные белые ip адреса на обоих устройствах. Такие соединения используют для объединения офисов или филиалов по vpn. В общем случае не работает через NAT. Сюда так же добавлю GRE Tunnel , хотя он работает в l3 и использует маршрутизацию, но работает так же по принципу site-to-site.
  2. VPN соединения уровня l3 на технологии Клиент-Сервер, типа PPTP , L2TP , SSTP, OpenVPN . Такие соединения используются как для объединения офисов, так и для подключения удаленных сотрудников. Достаточно только одного белого ip адреса на стороне сервера для создания vpn соединений. Работает через NAT.

Расскажу немного подробнее о каждом из типов vpn соединений отдельно.

  • GRE Tunnel — использует простой протокол gre для построения базового незащищенного site-to-site VPN. Разработан компанией CISCO. Позволяет инкапсулировать пакеты различного типа внутри ip туннелей. Простыми словами вот что он делает. Берет ваши данные со всеми заголовками, упаковывает в пакет, передает по интернету на другой конец, где этот пакет обратно разбирается на исходные данные. Для конечных пользователей сети все это выглядит, как-будто они общаются через локальную сеть.
  • EOIP Tunnel — Ethernet over IP — это проприетарный протокол MikroTik RouterOS, который создает туннель Ethernet между двумя маршрутизаторами поверх IP-соединения. Для передачи данных использует GRE протокол. Принципиальное отличие eoip tunnnel в том, что он работает в l2 и передает напрямую фреймы, тогда как gre tunnel оперирует пакетами и использует маршрутизацию. Надеюсь правильно объяснил и не соврал. Для чего mikrotik решили создать свою реализацию туннеля через gre протокол, не знаю. Возможно, похожих решений просто нет, вот они и придумали свою реализацию.
  • PPTP — туннельный протокол типа точка-точка (Point-to-Point Tunneling Protocol). Для работы использует GRE протокол, поддерживает шифрование. В свое время pptp обрел большую популярность из-за того, что его из коробки поддерживала Windows начиная с версии 95. На сегодняшний день pptp использовать не рекомендуется, так как он очень легко взламывается. Из дампа трафика за короткое время (несколько часов) достается ключ шифрования и расшифровывается весь трафик. Возможно, с этим как-то можно бороться, используя разные протоколы шифрования, но я не разбирался подробно с этой темой. Для себя решил, что pptp можно использовать как самое простое решение там, где нет повышенных требований к безопасности и расшифровка трафика, если таковая и случится, не принесет никаких проблем. PPTP поддерживает из коробки не только Windows но и Android, что очень удобно. Настраивается очень просто.
  • L2TP — Layer 2 Tunneling Protocol. Несмотря на то, что в названии указано l2, реально в ip сети он работает на сеансовом уровне, то есть l3. Использует в работе udp порт 1701. Может работать не только в IP сетях. Из коробки, как и pptp, поддерживает аутентификацию пользователей. Сам по себе не обеспечивает шифрование. Для шифрования трафика может использовать ipsec, который считается очень безопасным и не имеет серьезных уязвимостей. В настоящее время поддерживается практически всеми устройствами и системами из коробки, как и pptp. Настраивать не сильно сложнее. В общем случае, для организации vpn рекомендую использовать именно этот тип шифрованного тоннеля.
  • OpenVPN — это очень популярная реализация шифрованных соединений. Главное достоинство — гибкость настроек. К примеру, очень крутая возможность openvnp — пушить маршруты напрямую клиенту при подключении. Я долгое время использовал openvpn серверы. Когда первый раз понадобилось передать клиенту pptp маршрут, никак не мог понять, как это настроить. Оказалось, что никак, он это просто не умеет. Пришлось сторонними инструментами. К сожалению, по непонятным причинам, в mikrotik openvpn не поддерживает протокол udp, что очень сужает возможности использования этого vpn сервера. По tcp он работает гораздо медленнее, чем по udp. Так же не работает сжатие заголовков пакетов. Так что в общем случае использовать openvpn сервер в микротик не имеет смысла, если только он не нужен вам по каким-то конкретным причинам.
  • SSTP — Протокол безопасного туннелирования сокетов (Secure Socket Tunneling Protocol) – был представлен Microsoft в Windows Vista SP1. Основной плюс в том, что он интегрирован в Windows, может использовать 443 порт, что иногда помогает обходить фаерволы. Считается очень безопасным, использует SSL 3.0. Из минусов, насколько я знаю, в микротике очень требователен к ресурсам процессора. На слабеньких железках будет выдавать самую низкую скорость по сравнению со всеми остальными соединениями по vpn. По этой причине я его не буду рассматривать в своем обзоре совсем.

Из всего написанного можно сделать такой вывод. В общем случае лучше всего в микротике использовать vpn на базе l2tp + ipsec. Основные причины:

  1. Простота и удобство настройки.
  2. Надежное шифрование.
  3. Поддержка l2tp соединений практически всеми современными устройствами и системами. Нет необходимости ставить дополнительное программное обеспечение.
  4. Подходит как для объединения офисов, так и для удаленных сотрудников — site-to-site и client-to-site подключения.

Если вам нужно максимальное быстродействие без шифрования, то стройте соединения между сетями или офисами с помощью EOIP Tunnel — фирменной разработки компании Mikrotik.

Приступим к настройке и тестированию vpn соединений в mikrotik.

Настройка l2tp туннеля в mikrotik

Для начала настроим простой l2tp туннель без шифрования и замерим скорость. Для настройки l2tp vpn в mikrotik выполните следующую последовательность действий.

Идем в раздел IP -> Pool и добавляем пул ip адресов для vpn туннеля.

Создаем профиль для туннеля в PPP -> Profiles .

На остальных вкладках настройки дефолтные. Далее создаем пользователя в PPP -> Secrets .

Теперь запускаем l2tp сервер. Идем в PPP и жмем в кнопку L2TP Server .

Устанавливаем настройки для l2tp сервера. ipsec пока не включаем.

VPN сервер настроен. Теперь создадим для него постоянный интерфейс, чтобы на его основе создавать статические маршруты. Идем в Interfaces и создаем .

Последний штрих. Создаем статический маршрут, с помощью которого абоненты локальной сети сервера смогут подключаться к абонентом локальной сети за удаленным роутером через vpn. Идем в IP -> Routes и добавляем маршрут.

Добавляем статический маршрут, чтобы клиенты этого роутера знали, куда обращаться к абонентам удаленной локальной сети за vpn.

На этом все. Мы настроили l2tp на удаленном микротике и таким образом объединили 2 локальных сети с помощью vpn. В списке ip адресов при активном l2tp соединении на сервере и клиенте вы должны увидеть ip адреса из заданного на сервере диапазона для vpn сети — 10.10.5.1-10.10.5.100. Теперь можно пропинговать с обоих сетей противоположные.

У меня для теста к обоим микротикам подключены ноутбуки. Сейчас я измерю скорость соединения с помощью iperf3. За роутером m-remote на ноутбуке 10.30.1.254 запускаю сервер, а на 10.20.1.3 агента. Запускаем тест скорости vpn соединения:

Средняя скорость 194 мбит/сек . Откровенно говоря, я не понял, почему такая низкая скорость. Мой тестовый стенд собран на двух роутерах микротиках и гигабитного микротик свитча между ними. Ожидал увидеть что-то в районе 500 мбит/сек. Напомню, что туннель пока без шифрования. При этом загрузка процессоров на роутерах была в районе 90-95%. То есть фактически потолок этих железок.

Попробуем теперь включить шифрование ipsec и замерить скорость с ним.

Настраиваем ipsec

С настройкой ipsec для l2tp я залип на некоторое время. В сети много инструкций, но все они устарели. Как оказалось, в последних версиях прошивок, запустить ipsec в дефолтных настройках не просто, а очень просто. Для этого надо всего лишь в свойствах l2tp сервера указать Use IPsec — yes и задать пароль.

Все необходимые настройки ipsec будут созданы автоматически. На агенте сделать то же самое — включить ipsec шифрование и указать пароль.

После подключения l2tp клиента увидите в логе похожие строки:

19:17:00 l2tp,ppp,info l2tp-out1: initializing... 19:17:00 l2tp,ppp,info l2tp-out1: connecting... 19:17:03 ipsec,info initiate new phase 1 (Identity Protection): 192.168.13.197<=>192.168.13.1 19:17:04 ipsec,info ISAKMP-SA established 192.168.13.197-192.168.13.1 spi:407844c0ceb5d2ab:46ce7ffb25495efd 19:17:07 l2tp,ppp,info l2tp-out1: authenticated 19:17:07 l2tp,ppp,info l2tp-out1: connected

Для того, чтобы убедиться, что шифрование ipsec работает, можно зайти в раздел IP -> Ipsec -> Installed SAs и посмотреть на счетчик зашифрованных пакетов. Если он растет, значит все в порядке, трафик шифруется.

Там же в разделе Remote Peers можно посмотреть список удаленных клиентов, для которых работает ipsec шифрование, посмотреть используемые алгоритмы. Все дефолтные настройки ipsec живут в этом разделе. Вы можете посмотреть их, изменить или добавить новые профили. По-умолчанию используется алгоритм авторизации sha1 и шифрование AES. Можете изменить эти параметры, если разбираетесь в теме. Я умничать не буду, тему шифрования не копал. Какие алгоритмы максимально быстры и защищены — не знаю.

Проведем тесты скорость vpn соединения l2tp + ipsec.

У меня получилось вот так — 26 мбит/сек в среднем. При этом загрузка процессора 100%. Не густо. Данные железки для шифрованных каналов пригодны очень слабо. В данных тестах они ничем, кроме непосредственно теста не нагружены. В реальных условиях скорость будет еще ниже.

С настройками vpn на базе l2tp + ipsec закончили. Продолжим настройку остальных vpn туннелей и сравним их скорость.

Настройка pptp сервера в mikrotik

Настройка pptp сервера не отличается принципиально от l2tp. Логика и последовательность действий та же самая. Сначала создаем pool адресов в IP -> Pool для vpn сети. Я буду использовать тот же пул, что мы создали ранее.

В этом профиле указаны дефолтные настройки шифрования, при которых оно отключено. Проверим сначала скорость vpn канала без них. Создаем нового пользователя для удаленного pptp подключения.

Включаем pptp сервер в разделе PPP.

Теперь создадим в Interface List PPTP Server Binding по аналогии с предыдущим разделом.

И в завершение добавляем статический маршрут до удаленной сети через pptp подключение.

Настройка pptp сервера закончена. На фаерволе нужно будет открыть для входящих подключений внешнего интерфейса следующие вещи:

  • TCP port 1723
  • GRE протокол

Отправляемся настраивать pptp клиент.

pptp клиент

Отправляемся на удаленный роутер и там настраивает подключение через pptp client. Идем, как обычно, в раздел PPP и добавляем PPTP Client . На вкладке General ничего не трогаем, а на Dial Out указываем адрес pptp сервера и имя пользователя для подключения.

Добавляем статический маршрут до удаленного офиса через vpn туннель.

Все готово. Активируем pptp подключение и пробуем пинговать адреса в локальной сети. Убедиться в том, что шифрование отключено можно в статуте pptp соединения на клиенте.

Проверим теперь скорость vpn соединения по pptp.

Те же самые 194 мбит/сек , что на нешифрованном l2tp при 100% загрузке процессора. Вообще, было немного странно увидеть абсолютно такие же цифры. Проводил тесты несколько раз, но везде был стабильно один и тот же результат. Без шифрования нет разницы по скорости между l2tp и pptp соединением.

Теперь включим шифрование в pptp на сервере и посмотрим на скорость. Для этого указываем в pptp профиле явно, чтобы использовалось шифрование. Идем в PPP -> Profiles и редактируем наш профиль.

Убедимся в статусе клиента, что шифрование работает.

Тестирую скорость vpn соединения по pptp с включенным шифрованием.

Получилось в среднем 71 мбит/сек . Неплохой результат в сравнении с шифрованием ipsec в l2tp. Как я и говорил ранее, pptp сервер хорошо подходит там, где шифрование либо совсем не нужно, либо допускается возможность, что зашифрованный трафик будет расшифрован. Но при этом он все равно закрыт шифрованием и каждый проходящий не сможет ничего увидеть. Нужно как минимум снять дампт трафика и каким-то образом подбирать ключ по словарю или перебором. Не знаю точно, как это реализуется на практике. Не изучал вопрос.

Перейдем теперь к openvpn серверу в микротик. Очень любопытно посмотреть на тесты скорости этого типа vpn соединений.

Настройка openvpn server в микротик

В настройке openvpn сервера на mikrotik нет ничего сложного, кроме нюанса с сертификатами. Тому, кто с ними никогда не работал, может показаться все слишком замороченным. К тому же в самом микротике нет никаких средств для создания сертификатов сервера и клиента. Необходимо использовать сторонние утилиты. Если у вас есть linux машина, можете воспользоваться моей инструкцией по .

Если у вас нет linux машины, но вы все же настроены поднять vpn туннель с помощью openvpn в микротике, то давайте разбираться с настройкой дальше. Прежде всего нам понадобится дистрибутив openvpn для windows. Скачать его можно по ссылке — https://openvpn.net/community-downloads/ . Нас будет интересовать Windows Installer.

Выполняем установку от имени администратора и указываем в процессе компонент под названием EasyRSA 2 Certificate Management Scripts .

Идем в директорию C:\Program Files\OpenVPN . Переносим оттуда папку easy-rsa куда-нибудь в другое место, чтобы не приходилось постоянно спотыкаться об UAC, который не даст спокойно работать в Program files. Я перенес в D:\tmp\easy-rsa . Переименовываем файл vars.bat.sample в vars.bat . Открываем его на редактирование и приводим примерно к следующему виду.

Для тех, кто не понял, это просто переменные, которые я указал под свои нужды. Там писать можно все, что угодно, не принципиально для нашей задачи. Можно вообще ничего не менять, а оставить как есть. Создаем в директории папку keys . Далее запускаем командную строку от администратора и перемещаемся в указанную директорию D:\tmp\easy-rsa .

Отвечаем на задаваемые вопросы и завершаем создание корневого сертификата. Он появится в папке D:\tmp\easy-rsa\keys . Дальше создаем сертификат openvpn сервера командой — build-key-server имя_сервера .

Теперь сгенерируем сертификат для клиента. У меня только один клиент в виде удаленного микротика. Вы создаете ровно столько, сколько вам нужно. Используем команду build-key имя_сертификата .

С созданием сертификатов закончили. Они у нас все лежат в директории keys. На микротик, который будет выступать в качестве openvpn сервера, нужно передать файлы:

  • ca.crt
  • ovpnserver.crt
  • ovpnserver.key

Импортируем сертификаты из добавленных файлов. Идем в System -> Certificates и импортируем сначала ca.crt , потом ovpnserver.crt и ovpnserver.key .

Должно получиться примерно так. Теперь приступаем к настройке openvpn сервера в mikrotik. Создадим для него отдельный профиль в PPP -> Profiles .

Все настройки дефолтные. В качестве локального и удаленного адреса использую Ip Pool, который создал в самом начале настройки l2tp. Добавим удаленного пользователя для openvpn в PPP ->Secrets .

Идем в раздел PPP и жмем OVPN Server . Указываем настройки и загруженный ca сертификат.

На этом настройка openvpn server в микротик завершена. По дефолту будет использоваться протокол шифрования BF-128-CBC . Его можно поменять в свойствах клиента, а список всех поддерживаемых шифров в свойствах vpn сервера.

Для работы указанной настройки openvpn сервера необходимо открыть входящий tcp порт 1194 на фаерволе. Теперь настроим openvpn клиент и протестируем скорость соединения через vpn на основе openvpn.

openvpn client

Для настройки openvpn client на mikrotik, туда нужна передать сертификаты, сгенерированные на предыдущем шаге. Конкретно вот эти файлы:

  • m-remote.crt
  • m-remote.key

Импортируем, как и на сервере сертификат из этих файлов. Обращаю внимание, что должны быть символы KT напротив имени сертификата.

Теперь настраивает openvpn клиента. Идем в PPP и добавляем OVPN Client .

Добавляем статический маршрут для доступа к ресурсам удаленной сети за openvpn сервером.

Все готово. Можно подключаться и тестировать скорость vpn соединения через openvpn.

Получилось в среднем 24 мбит/сек при 100% загрузке процессора. Результат сопоставим с l2tp + ipsec. Немного удивил результат. Я думал, будет хуже, чем l2tp, а на деле то же самое. Мне лично вариант с openvpn в целом нравится больше, хотя из-за ограниченности настроек openvpn в микротике преимущества openvpn трудно реализовать. Напомню, что тестировал с шифрованием BF-128-CBC, то есть blowfish.

Вот результат с AES-128-CBC — 23 мбит/сек, примерно то же самое.

С клиент-серверными реализациями vpn сервера в mikrotik разобрались. Теперь просмотрим на скорость l2-vpn в виде eoip tunnel.

Настройка EOIP Tunnel + Ipsec

Настроим vpn сеть на базе EOIP в Mikrotik. Тут нужно понимать одно важное отличие от всех предыдущих настроек, которые мы делали ранее. EOIP туннель работает на уровне l2, то есть оба сегмента сети будут считать, что находятся в одной физической сети. Адресное пространство для обоих будет одно и то же. В моем примере это 10.20.1.0/24. DHCP сервер должен остаться только один для обоих сетей. В моем случае он останется на m-server .

Создаем EOIP туннель на m-server. Идем в Interface list -> EoIP Tunnel и добавляем новый.

Из настроек достаточно указать только удаленный адрес второго микротика. Новый EoIP интерфейс необходимо добавить в локальный бридж вместе с физическими интерфейсами.

Идем на удаленный микротик и там делаем все то же самое, только Remote Address указываем другой.

Этого достаточно, чтобы EoIP туннель сразу же заработал. Его состояние будет RS.

На втором микротике EoIP интерфейс так же нужно добавить в локальный бридж с остальными интерфейсами.

Проще всего проверить, что все в порядке, это запросить по dhcp на m-slave ip адрес для интерфейса bridge. Он должен получить ip адрес от dhcp сервера на m-server, при условии, что в сети больше нет других dhcp серверов. То же самое будет и с локальными машинами в сети за m-slave. Они будут получать ip адреса от dhcp сервера на m-server.

Проверим теперь быстродействие такого vpn туннеля на основе EoIP.

Показываю максимальный результат, который у меня получился — 836 мбит/сек . По какой-то причине в разных тестах скорость плавала в интервале между 600-850 мбит/сек. Для того, чтобы скорость изменилась, необходимо было отключить и заново включить EoIP интерфейс. Скорость впечатляет. При этом, процессор не загружен на 100%. То есть узкое место не он. Похоже я уперся в производительность сети. Напомню, что тут нет никакого шифрования и маршрутизации трафика. Прямой l2 канал между двумя микротиками через EoIP vpn.

Добавим в EoIP туннель шифрование Ipsec и посмотрим на скорость. Для этого меняем настройки каналов на обоих микротиках. Добавляем пароль Ipsec и локальные адреса, отключаем Fast Path.

Онлайн курс "Сетевой инженер"

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные сети, рекомендую познакомиться с онлайн-курсом «Сетевой инженер» в OTUS. Это авторская программа в сочетании с удалённой практикой на реальном оборудовании и академическим сертификатом Cisco! Студенты получают практические навыки работы на оборудовании при помощи удалённой онлайн-лаборатории, работающей на базе партнёра по обучению - РТУ МИРЭА: маршрутизаторы Cisco 1921, Cisco 2801, Cisco 2811; коммутаторы Cisco 2950, Cisco 2960. Особенности курса:
  • Курс содержит две проектные работы.;
  • Студенты зачисляются в официальную академию Cisco (OTUS, Cisco Academy, ID 400051208) и получают доступ ко всем частям курса «CCNA Routing and Switching»;
  • Студенты могут сдать экзамен и получить вместе с сертификатом OTUS ещё сертификат курса «CCNA Routing and Switching: Scaling Networks»;
Проверьте себя на вступительном тесте и смотрите программу детальнее по.