Русский
Русский
English
Статистика
Реклама

Routeros

L2TP amp IPsec with pre shared key vs MITM

31.05.2021 12:16:05 | Автор: admin

В статье рассмотрены основные vpn протоколы, которые на текущий момент применимы в бизнес процессах, а также углубленно освещен вопрос использования L2TP в связке с IPsec в режиме pre shared key. На практике разобраны подходы к организации виртуальных сетей на оборудовании MikroTik и выполнен практический аудит безопасности передачи данных с позиции анализа третьими лицами исходящего трафика при возможности MITM атаки.

Vpn технологии прочно вошли не только в корпоративную среду, но и в повседневную жизнь многих IT и других специалистов в реализации рабочих и личных проектов. Если перед вторыми вопрос безопасности может вставать исключительно с исследовательским интересом, то для бизнеса важно понимать риски, связанные с эксплуатацией различных информационных процессов в задействованной инфраструктуре, слабые и сильные места, а также экономическое обоснование применяемых решений. Безопасность стоит денег, но не всегда стоит подходить к этому вопросу, как к неприступной крепости, при условии правильной оценки складывающейся ситуации.

Для начала разберем, в каких случаях бизнесу нужен vpn:
при подключении удаленных сотрудников к сетевым ресурсам компании (site-to-client vpn) и
при объединении территориально разнесенных сетевых элементов (site-to-site vpn). Самих протоколов vpn сейчас много: GRE , PPTP, SSTP, OVPN, L2TP, Wireguard и т.д.

Здесь важно не путать протоколы с сервисами vpn, которых еще больше: ExpressVPN, CyberGhost, NordVPN и т.д. Вторые по сути являются провайдерами услуг, обеспечивая доступ клиентов к собственным ресурсам с целью обхода блокировок со стороны ISP, а также анонимности серфинга в интернете. Про них сейчас речь не идет.

С вариацией протоколов определились, какой же выбрать?
Во-первых, в зависимости от того, что строим site-to-client или site-to-site, потому что GRE для первого случая не подойдет.

Во-вторых, Wireguard хоть молодой, простой и очень перспективный, но на офисном маршрутизаторе Cisco или MikroTik его не поднять, вендоры даже не планируют внедрять. PPTP очень легок в настройке, однако будет либо не шифрованным, либо шифрованным протоколом MPPE, который не имеет аппаратной разгрузки, в следствие чего, многопользовательскую сеть замедлит в работе. SSTP отличный протокол, работает по TLS в UDP на 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 может быть не шифрованным:

/ppp profile name=test use-encryption=no


с интегрированным в протокол шифрованием MPPE:

/ppp profile name=test use-encryption=yes (или require, при этом IPsec отключен)



с качественным внешним шифрованием от IPsec, вроде AES:

/ppp profile name=test use-encryption=yes (или require, при этом IPsec включен)



Настройка L2TP сервера осуществляется достаточно просто, активируем его и указываем тип аутентификации:

/interface l2tp-server server set authentication=mschap2 default-profile=test enabled=yes


Здесь же появляется возможность сразу активировать IPsec и настроить pre shared key. Если это сделать, то общий ключ будет закреплен за всей vpn сетью и передан всем ее участникам в качестве настроечной информации. Один и тот же на всех. На самом деле, если активировать IPsec таким образом, то RouterOS автоматически создает необходимые настройки в соответствующем разделе /ip ipsec сразу после установления L2TP соединения.

Конкретно речь идет:

  • IPsec Policy с указанными протоколом UDP и портом подключения 1701;
  • IPsec Peer c IP адресами сервера и клиента;
  • IPsec Identity с указанным ранее pre shared key.

Автоматически созданные настройки IPsec

Очень удобно. Особенно, когда IP адреса динамические и вообще натированные. Клиентам не нужно выполнять лишние процедуры по отслеживанию их текущих значений. В RouterOS в разделе L2TP есть дополнительная настройка, определяющая общий секрет при конфигурировании в сетях Virtual Private DialUp Network протяженных соединений точка-точка между удаленным сервером PPPOE и L2TP сетью, но это к теме статьи не относиться, поэтому просто ее упомянем всуе:

/ppp l2tp-secret add address=0.0.0.0/0 secret=

Допустим, мы не хотим простого счастья и дополнительно желаем, чтобы у каждого клиента был индивидуальный сертификат вместо общего ключа (возможно, для этого в компании уже все готово). Звучит очень круто и безопасно. Нет технически не преодолимых проблем, кроме танцев с бубнами: создаем все вышеперечисленное в ручном режиме, не забываем про корректно заданные IP адреса, как со стороны сервера, так и со стороны клиентов.

/ip ipsec peer add address=IP local-address=IP name=peer1/ip ipsec identity add peer=peer1 auth-method=digital-signature certificate=u01.crt_0/ip ipsec policy add dst-address=IP dst-port=1701 peer=peer1 protocol=udp src-address=IP src-port=1701

Здесь нас поджидает кропотливая работа, ведь, скорее всего, адреса у клиентов меняются (и достаточно часто), кроме этого клиенты сидят за провайдорским NAT. Все это можно накрутить кастомными скриптами на RouterOS, и все будет отлично работать. Нужно ли это? Cмоделируем ситуацию, когда общий для всех pre shared key стал известен злоумышленнику, который целенаправленно хочет нам навредить. Или клиент vpn нам больше не клиент. Сразу баним его учетную запись, и теперь аутентификацию mschap2 (или какая у вас там выбрана) он не пройдет и доступ не получит:

/ppp secret disable bad_user

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

/ppp secret add name=good_user password=12345 service=l2tp

Шифрованный трафик L2TP туннеля

Исследовательский интерес нас ведет дальше. Может все-таки что-то можно сделать с трафиком? И в результате извлечь передаваемую информацию? Попробуем дешифровать трафик в лабораторных условиях. MikroTik позволяет нам выполнить debug соединения и увидеть подробную информацию об установленной IPsec сессии:

/ip ipsec installed-sa print

Как видно, сессия установилась на 30 минут, имеются разные ключи аутентификации и шифрования. Применим их в Wireshark, после приведения шестнадцатеричных значений к корректному формату: SPI 0x0ada181b, вместо MikroTik-овского 0xADA181B, ключи начинаются со значения 0x. Если все сделано правильно, тогда трафик откроется.

Ввод данных сессии для дешифрования IPsec

Дешифрованный IPsec

Подведем результаты

Насколько безопасно использовать L2TP c общим секретом? Абсолютно безоапасно. По сути IPsec с помощью pre shared key выполняет функцию аутентификации, но в нашем случае процедура аутентификации выполняется ранее при установлении L2TP соединения. Нет практической необходимости выполнять аутентификацию повторно. По сути MikroTik, введя возможность настройки IPsec в разделе создания L2TP сервера, автоматизирует рутинные задачи по настройке шифрованного туннеля в ручном режиме (история про танцы с бубном). Это еще один плюс в сторону использования не дорогостоящего, но качественного оборудования MikroTik. Конечно, в ручном режиме гораздо больше вариаций на тему шифрования, но по умолчанию задаются, по авторскому мнению, идеальные значения: aes256 и sha1.


Как рекомендации для бизнеса, смело можно использовать L2TP с IPsec pre shared key. При планировании политик информационной безопасности, нет необходимости в задании сложных значений для pre shared key. Важно выставить не угадываемые и не словарно подбираемые значения для аутентификации L2TP (/ppp secret). Удобно, безопасно и качественно, админ доволен, клиенты не замучены.


Подробнее..

Honeypot на RouterOS

25.03.2021 00:06:26 | Автор: admin

Одним из способов обеспечения информационной безопасности сетевых ресурсов является организация специально подготовленных для легкого взлома бочонков с медом, детектирования ими угроз, выявления и анализе соответствующих сигнатур с последующей своевременной блокировкой злоумышленников. В статье описано создания honeypot на просторах интернета программными средствами от компании MikroTik.

Философское отступление и предыстория

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

Как IT специалисты, мы не имеем морального права использовать готовые решения от не известных нам компаний из разряда нажал кнопку и ты в VPN. Нам нужен собственный центр сертификации, да и вся инфраструктура публичных ключей. Свой VPN сервер, полный root, полный контроль, абсолютная гибкость и безопасность. Большинство из нас возьмут Linux сервер и все сделают как в техническом задании. Пласт сетевых инженеров, специализирующихся на оборудовании MikroTik, с удовольствием предпочтет RouterOS, развернутый где-нибудь на VP по ряду причин:

  1. Легкость интеграции в существующую инфраструктуру на базе RouterOS.

  2. Наличие удобного интерфейса управления, в том числе графического.

  3. Простая развертываемость различных сетевых технологий коммутации, маршрутизации, L7 и т.д.

  4. Безопасность и стабильность применяемого решения.

  5. Чувство эстетического удовольствия от работы с хорошими программными средствами.

  6. Поддержка из коробки различных протоколов VPN (openvpn, l2tp, sstp, gre, pptp).

Управление по средством графического интерфейса VPS с установленным RouterOSУправление по средством графического интерфейса VPS с установленным RouterOS

Реализуем облачный маршрутизатор

Развернем собственный облачный маршрутизатор MikroTik. Дешево и быстро арендуем VPS с минимальными характеристиками. Разворачиваем вместо штатного Debian свой любимый RouterOS:

mount -t tmpfs tmpfs /tmp/cd /tmpwget https://download.mikrotik.com/routeros/6.47.9/chr-6.47.9.img.zipapt install zipunzip chr-6.47.9.img.zipdd if=chr-6.47.9.img of=/dev/vda bs=4M oflag=syncecho 1 > /proc/sys/kernel/sysrq echo b > /proc/sysrq-trigger

После перезагрузки, используя VNС, настраиваем сеть, и виртуальный маршрутизатор готов к работе:

/ip address add interface=ether1 address=наш_ip/ip route add dst-address=0.0.0.0/0 gateway=gw_от_провайдера

Сразу же начался знакомый всем Linux администраторам bruteforce ssh-сервера:

... system,error,critical login failure for user root from 104.211.164.221 via ssh... system,error,critical login failure for user yu from 119.29.113.149 via ssh... system,error,critical login failure for user laboratory from 1.245.61.144 via ssh... system,error,critical login failure for user username from 36.133.162.171 via ssh... system,error,critical login failure for user test from 49.232.214.91 via ssh

В этот момент и зародилась идея создания honeypot из Cloud Hosted Router для анализа ботов, специализирующихся на зло вредительстве устройствам MikroTik. Обзорную информацию об угрозах информационной безопасности для данных устройств можно посмотреть в презентации Fools your enemy with Mikrotik.

Настройка honeypot

Для начала определим, какие возможности по записи действий злоумышленников у нас имеются в штатных средствах RouterOS:

  1. Удаленное логирование.

  2. Регистрация выполненных изменений конфигурации роутера.

  3. Контроль проходящего через него трафика.

А вот введенные команды сохранятся, только если не будут принудительно удалены из консоли, дистанционно передавать их нельзя, хотя возможно, со слов компании, это появится в 7 версии операционной системы (на текущий момент последняя доступная версия stable релиза 6.48.1). Цитируем: By upgrading to RouterOS v7 you will get more details in this command output (речь идет об /system history print detail). Начнем сначала, для этого:

/system logging action set 3 remote=ip_удаленного_сервера/system loggingadd action=remote topics=infoadd action=remote topics=criticaladd action=remote topics=erroradd action=remote topics=hotspotadd action=remote topics=warning

Передачу логов осуществляем по vpn каналу, чтобы не передавать открытые данные в сеть. На удаленном сервере настроим лог-коллектор rsyslog, для этого отредактируем файл /etc/rsyslog.conf:

$ModLoad imudp$UDPServerAddress ip_удаленного_сервера$UDPServerRun 514

Перестартуем службу systemctl enable rsyslog, systemctl restart rsyslog. Прослушиваем только vpn интерфейс, чтобы не светить 514 хоть и UDP портом наружу. Удаленный лог будет выглядеть примерно так:

2021-03-24T20:46:02.608642+06:00 ip_роутера system,error,critical login failure for user root from 45.124.86.155 via ssh2021-03-24T20:51:46.427403+06:00 ip_роутера system,error,critical login failure for user root from 193.112.24.94 via ssh2021-03-24T20:52:48.378138+06:00 ip_роутера system,error,critical login failure for user ts3srv from 107.173.209.238 via ssh2021-03-24T20:53:02.692985+06:00 ip_роутера system,error,critical login failure for user root from 61.7.147.29 via ssh2021-03-24T20:53:15.616354+06:00 ip_роутера system,error,critical login failure for user user14 from 68.183.84.215 via ssh2021-03-24T20:53:54.436415+06:00 ip_роутера system,error,critical login failure for user root from 52.172.165.176 via ssh2021-03-24T20:53:56.684200+06:00 ip_роутера system,error,critical login failure for user php from 189.8.95.30 via ssh

Регистрацию выполненных ботом изменений конфигурации роутера будем осуществлять в результате регулярного экспорта всех конфигураций в собственную память, а забирать файлы будем автоматически скриптом на VPS по ftp, разумеется так же через vpn канал (/ip service set ftp address=ip_удаленного_сервера). Для этого делаем планировщик на MikroTik с регулярным заданием: /export compact file=file. А на сервере запустим скрипт:

#!/bin/shHOST=ip_роутераUSER=adminPASSWD=суровый_пароль_настоящего_админаFILE=file.rscSIZE=2091cwhile true; doOUTPUTNAME=`date +%F-%H-%M-%S`.rcscurl -u $USER:$PASSWD ftp://$HOST/$FILE > /root/exports/$OUTPUTNAMEfind /root/exports/ -type 'f' -size 0 -deletefind /root/exports/ -type 'f' -size $SIZE -deletesleep 5;done

В переменой SIZE лежит размер файла экспорта после всех наших манипуляций с honeypot. Если злоумышленник изменит любую конфигурацию, то результатом экспорта будет файл не много другого размера. Таким образом, на удаленном сервере в папке /root/exports окажется что-то новенькое. Так как наш удаленный лог начнет забиваться сообщениями о работе задания в планировщике, поэтому донастроим конфигурацию rsyslog (файл /etc/rsyslog.conf):

if $fromhost-ip contains 'ip_адрес_роутера' then {        if $msg contains 'ftp' then /dev/null        else /var/log/mikrotik.log}

Для контроля проходящего через роутер трафика можно использовать разные подходы. Это и маркировка трафика с последующим снифером, настройка net-flow клиента, но мы воспользуемся самым простым встроенным приложениемpacket-sniffer:

/tool snifferset filter-interface=ether1 filter-port=!ssh,!winbox,!ftp,!наш_порт_для_vpn \    filter-stream=yes memory-scroll=no streaming-enabled=yes \    streaming-server=ip_удаленного_сервера

Пропускать мимо снифера будем шифрованный vpn, ssh и winbox, а также задействованный нами ftp. Трафик будет отправляться UDP пакетами по протоколу Tazmen Sniffer Protocol (TZSP), принять его на сервере можно вместе со служебными заголовками обычным tcpdump-ом, или в уже красивом и удобном виде, используя программу Trafr непосредственно от компании MikroTik. Подробнее как все настроить можно почитать здесь.

Теперь перейдем к ключевому моменту. Для того, чтобы honeypot не натворил плохих дел будем постоянно анализировать внутренний лог RouterOS на факт подключения "учетной записи приманки" пользователя root с паролем qwerty (построчно перебирать лог и искать ключевую фразу user root logged in). Как только это произойдет, включаем обратный отчет и сразу начинаем снифить трафик. Через 10 минут (по нашему мнению этого времени будет достаточно, чтобы проанализировать действия и не достаточно, чтобы сообразить осуществить плохие делишки) просто выключаем маршрутизатор, и бот на это повлиять не сможет:

:local DELAY 600;:local USER root;:local STRING "user $USER logged in";:foreach line in=[/log find message~$STRING] do={if ([ /tool sniffer get running] = no) do={/tool sniffer start;}:delay $DELAY;/system shutdown;}

Не забудем очистить консоль от введенных нами команд /console clear-history. Можно настроить удаленное оповещение о факте доступа к нашему honeypot посредством, например, email, но не будем оставлять какой-либо приватной информации на маршрутизаторе. Контролировать будем в ручную через нативное приложение на телефоне. Если подключение не прошло, значит root все-таки зашел на honeypot, следовательно настало время изучать трафик и логи. При повторной загрузке (после срабатывания) не забываем сразу отключить учетную запись - приманку:

sshpass -p суровый_пароль_настоящего_админа ssh admin@ip_роутера /user disable root

Удачной охоты на ботов!

P.S. В конце 2020 года нами был реализован проект по организации общественного доступа в Интернет для международной компании Coffee Сup: 5 собственных баров формата кофе с собой в разных городах, а так же дилеров по всей России и странах СНГ(до последних руки не дошли). Что вполне не удивительно, но среди клиентов Hotspot сетей находятся не чистые на руку, пытающиеся получить доступ до маршрутизаторов. Интересно, так сказать, узнать их "в лицо"...

Подробнее..

Mikrotik (RouterOS) Wireguard

30.09.2020 22:05:00 | Автор: admin

Вступление

Один из способом сделать доступным некоторые внутренние (домашние) сервисы из Интернета является VPN. Можно, конечно, отдельные порты опубликовать и через ssh, но для более полноценной связи лучше использовать другие решения. Я уже писал и про ZeroTier, и про OpenVPN, и получил упреки, что незаслуженно забыл про Wireguard

Так или иначе, мне стало не хватать VPN клиента (в т.ч. и Wireguard) на отдельно стоящем серверочке, потребовалось связать (в данном случае с vNet в Azure, хотя это не принципиально) всю домашнюю сеть с несколькими ресурсами. И я решил, что пора уже сделать это через роутер, для полноценного site-to-site.

Хотя Keenetic и научился поддерживать Wireguard на новых прошивках, для старенькой Ultra я такой не нашел. С OpenWRT тоже не срослось (для Ultra II есть, а моя моедль старовата). Так что я решил, что пора проапгрейдиться. И, поскольку Mikrotik RouterOS выкатила бету 7 версии с Wireguard, я решил, что пора изучить это чудо.

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

Основные моменты

Взял я MikroTik hAP ac2. Модель старая, без излишеств, но все, что нужно, делает.

Хотя дела с Микротиками я раньше не имел, запустил его достаточно быстро. Были некоторые сложности с тем, что в настройке DHCP Server недостаточно установить Network, чтобы IP адреса начали раздаваться из этой сети. Оказалось, что есть еще и отдельный IP Pool. Но это мелочи. Так что довольно быстро я приступил к настройкам именно Wireguard.

Конечно же, ничего не заработало. Более того, на той стороне я даже не видел входящих пакетов.

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

Пошел разбираться с командной строкой. Для меня, в первый раз увидевшего RouterOS, там, конечно, не сахар. Более-менее, разобрался, конечно. Но как узнать, какие вообще параметры имеются, так и не понял. Ну т.е. до /interface wireguard peers я добрался. Даже про add догадался. Только вот при этом система спрашивала только interface, public-key и allowed-address. В общем, всякими переборами подобрал команду:

add allowed-address=192.168.66.128/25,10.10.0.0/16 endpoint=66.166.166.42:51820 \interface=wg0 persistent-keepalive=30 public-key="многобукв="

Т.е. порт можно указать только через командную строку. Впрочем, все равно не заработало.

Напомню, что wg0 был создан ранее через web-интерфейс. Или WinBox, не помню. Он чуток получше, чем веб-интерфейс, но порт тоже не давал указать. И тут до меня дошло, что на обычном Linux я ведь еще IP адрес своего локального хоста указываю. А тут его не задавал. Заработало только после:

/ip addressadd address=192.168.66.253/24 interface=wg0 network=192.168.66.0

Собственно все :) В сети есть инструкции, как установить Wireguard на Mikrotik с OpenWRT. Но как по мне, это извращение. А вот поднять его в родном RouterOS можно за несколько минут. Когда уже знаешь, как. Работает прекрасно, вообще без нареканий.

P.S. Адреса я, конечно, менял. Но allowed-address=192.168.66.128/25 и add address=192.168.66.253/24 не ошибка. Просто у меня к двум серверам подключение. Половина сети класса С на один сервер, половина на другой.

P.P.S. Почему Wireguard, а не OpenVPN? Например, производительность:

https://blog.entrostat.com/openvpn-vs-wireguard-network-performance-tests/

А еще простота настройки и кое-что по мелочи.

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru