В данной статье рассмотрим Layer7 на оборудование MikroTik.
Зачастую некоторые статьи в интернете пестрят информацией о том, что Layer7 — это прекрасный вариант для блокировки каких-либо ресурсов, для работы с какими-то сложными протоколами и детектирования этих сложных протоколов на оборудовании mikrotik.
Mikrotik умеет работать с контентом на пятом, шестом, седьмом уровне, собирать данные и в этих данных непосредственно производить поиск согласно шаблонам на основе регулярных выражений. История достаточно тяжелая с точки зрения процессорных ресурсов.
Как это все происходит?
/ip firewall layer7-protocol
.Что касается производительности, то производительность на layer7 самая минимальная. То есть, по большому счету, мы вместо базовой блокировки по портам, по ip-адресам, согласно интерфейсам, согласно размером пакета, занимаемся достаточно не характерной и ресурсоемкой работой для нашего маршрутизатора.
Данный подход можно рассматривать как ситуацию, когда альтернативных вариантов у вас конечно же нет. Что мы можем взять и где вообще взять эти самые регулярные выражения для нашей работы?
Раздел для настройки — это IP > firewall > Layer7 Protocol. Здесь мы можем записывать наборы регулярных выражений для использования в дальнейших наших правилах.
Как это сделать – ищем «mikrotik layer7», переходим на страницу «mikrotik Вики». Страница.
Здесь есть огромное количество различных приложений. Есть уже написанные примеры, в том числе регулярные выражения.
Откроем, например регулярное выражение для SIP протокола.
Выглядит это так:
sip
^(invite|register|cancel|message|subscribe|notify) sip[\x09-\x0d -~]*sip/[0-2]\.[0-9]
Сюда дописываем SIP и уже можно использовать данный Layer7 фильтр в наших правилах.
Есть подход непосредственный, то есть, когда мы сразу берем и начинаем искать совпадение согласно данному layer7 фильтру, но можем как-то оптимизировать данный подход и сначала метить соединение и блокировать или разрешать уже согласно этим соединениям.
Это можно сделать через раздел mangle. Можно использовать Layer7 протокол, который мы создали на предыдущем шаге и уже добавлять, например, в адрес-лист.
Или допустим делать Mark Connection , то есть метить соединение.
Допустим, что это у нас SIP и уже на основе этих помеченных соединений мы будем осуществлять, например, разрешение того или иного протокола, допустим в Firewall.
Что касается оптимизации, если у нас есть любые другие варианты на тему поиска того или иного протокола в нашем потоке данных, используем его. Прибегать к layer7 имеет смысл только в ситуации, когда все другие варианты нам не помогли или же мы хотим блокировать или наоборот разрешать что-то очень специфичное. Например, мы хотим блокировать только инвайты в SIP, а все остальное оставлять или еще какие-то небольшие части того или иного протокола.
Здесь посмотрим пример фильтрации социальных сетей:
Регулярное выражение для блокировки сайтов.
/ip firewall layer7-protocol add name=socseti regexp=”^.*(vk.com|vkontakte|odnoklassniki|odnoklasniki|facebook|my.mail.ru|ok.ru|twitter.com|urod.ru|yaplakal.com|fishki.net|youtube).*\$”
Пример “правильной” настройки блокировки с использованием фильтра L7.
/ip firewall mangle add action=mark-connection chain=prerouting comment=”L7social” connection-mark=no-mark dst-port=80,443 layer7-protocol=socsety new-connection-mark=block passthrought=yes protocol=tcp
/ip firewall mangle add action=mark-connection chain=prerouting comment=no-mark connection-mark=no-mark new-connection-mark=no-mark passthrough=yes
/ip firewall filter add action=reject chain=forward connection-mark=block protocol=tcp reject-with=tcp-reset
На мой взгляд, в двадцать втором году в современной версии RouterOS для этого можно использовать совершенно другие механики. Например, адрес листы с доменными именами, DNS блокировки и так далее.
На данный момент, layer7 является интересным функционалом, но его использование находится под большим вопросом.
Делайте оптимизацию, если все-таки решите настраивать Layer7 протокол. Настраивайте цепочки, метьте соединения если собираетесь разрешать что-то с помощью Layer7 протокола. Если есть возможность не использовать Layer7 протокол, не используйте Layer7 протокол.
Для полноценной работы существует различные системы, которые не относятся к mikrotik.
Это ЭДС сканеры, которые позволяют проверять сигнатурами, позволяют работать с каким-то поведенческим анализом на пятом, шестом, седьмом уровне сетевой модели OSI, и для них это гораздо более правильная модель работы нежели, чем для стандартного Firewall, которым является mikrotik.
С вами скоро свяжутся