Как настроить микротик routerboard RB951G-2HnD

Как настроить микротик routerboard RB951G-2HnD Хостинг

Время на прочтение

Предыстория: имеем Интернет-соединение со скоростью «до 50 Мбит/с», имеющее «фичу» разгоняться до 100 если канал свободен. Пользуясь облачным хранилищем заметил проблему, что выгрузив или загрузив около 50-100 файлов клиент для работы с облаком «зависает» и либо качает файлы на крайне низкой скорости (порядка 50-200 Кбит/с), либо вообще «молчит». При этом, сайты в браузере открываются без всяких проблем.

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

В просторах сети было найдено множество статей на подобную тематику, только все они предлагали распределение скорости между пользователями по приоритету (интернет-страницы с высоким, потоковое видео ниже и самый низкий приоритет у p2p-систем).

Итак, для начала теория. Провайдер отслеживает все «скачки» скорости и количество обращений к ресурсам, выдавая ограничение на превышающие их показатели предел. Узнать его не получится — это закрытая информация провайдера. Но как же скачивать и заливать по 1к+ файлов в облако, не получая за это временный «бан» на доступ к ресурсу? Легко!

Алгоритм действий будет таков:

  1. Создаем список IP-адресов, для которых нужно включить ограничение скорости;
  2. Организовать маркировку пакетов, идущих на и с ресурсов списка;
  3. Задать ограничение скорости по требуемым ресурсам при помощи очередей.

Приступим к настройке

Шаг 1. Добавим IP-адреса ресурса(ов) в список. Для этого зайдем на вкладку «Address Lists» окна «Firewall«

Как настроить микротик routerboard RB951G-2HnD

  • 31.216.144.0/24
  • 31.216.145.0/24
  • 31.216.147.0/24
  • 89.44.168.0/24
  • 154.53.224.0/24
  • 154.53.225.0/24

Добавим все подсети адресов в лист с именем, например, «mega.nz«.

/ip firewall address-list
add address=31.216.144.0/24 list=mega.nz
add address=31.216.145.0/24 list=mega.nz
add address=31.216.147.0/24 list=mega.nz
add address=89.44.168.0/24 list=mega.nz
add address=154.53.224.0/24 list=mega.nz
add address=154.53.225.0/24 list=mega.nz

Шаг 2. Маркировка пакетов

Как настроить микротик routerboard RB951G-2HnD

После этого перейдем во вкладку «Mangle» и добавим правила маркировки пакетов. Для этого жмем на «плюс» и указываем следующие параметры:

MEGA-upload:

  • CommentMEGA-upload.
  • chainforward.
  • Out. Interface — интерфейс, на котором висит Инет. В моем случае это «eth1-Wi-Fi».
  • Dst. Address Listmega.nz — это имя того самого набора адресных листов с прошлого шага.
  • Actionmark packet.
  • New Packet MarkMEGA-upload.
  • Passthroughttrue.

Как настроить микротик routerboard RB951G-2HnD
Как настроить микротик routerboard RB951G-2HnD
Как настроить микротик routerboard RB951G-2HnD

/ip firewall mangle
add action=mark-packet chain=forward comment=MEGA-upload \ out-interface=eth1-Wi-Fi new-packet-mark=MEGA-upload \ passthrough=yes dst-address-list=mega.nz
MEGA-download:

  • CommentMEGA-download.
  • chainforward.
  • In. Interface — интерфейс, на котором висит Инет. В моем случае это «eth1-Wi-Fi».
  • Src Address Listmega.nz — это имя того самого набора адресных листов с прошлого шага.
  • Actionmark packet.
  • New Packet MarkMEGA-download.
  • Passthroughtrue.

Как настроить микротик routerboard RB951G-2HnD
Как настроить микротик routerboard RB951G-2HnD
Как настроить микротик routerboard RB951G-2HnD

/ip firewall mangle
add action=mark-packet chain=forward comment=MEGA-download \ in-interface=eth1-Wi-Fi new-packet-mark=MEGA-download \ passthrough=yes src-address-list=mega.nz

Шаг 3. Добавление правил очередей (Queues)

Далее, переходим во вкладку «Queue Tree» и также добавляем два новых правила:

Как настроить микротик routerboard RB951G-2HnD

MEGA-upload:

  • NameMEGA-upload
  • Parentglobal
  • Packet MarksMEGA-upload (выбираем из списка)
  • Queue Typedefault-small
  • Priority8
  • Bucket Size0.100
  • Max Limit25M

Как настроить микротик routerboard RB951G-2HnD

/queue tree
add max-limit=25M name=MEGA-upload packet-mark=MEGA-upload parent=global \ queue=default-small
MEGA-download:

  • NameMEGA-download
  • Parentglobal
  • Packet MarksMEGA-download (выбираем из списка)
  • Queue Typedefault-small
  • Priority8
  • Bucket Size0.100
  • Max Limit25M

Как настроить микротик routerboard RB951G-2HnD

/queue tree
add max-limit=25M name=MEGA-download packet-mark=MEGA-download parent=global \ queue=default-small

Всё. Теперь при синхронизации облачного хранилища на вход и выход скорость не поднимется больше 25 Мбит/с и, тем самым, устранили вероятность получения временного бана от провайдера.

Полный список скриптов

/ip firewall address-list
add address=31.216.144.0/24 list=mega.nz
add address=31.216.145.0/24 list=mega.nz
add address=31.216.147.0/24 list=mega.nz
add address=89.44.168.0/24 list=mega.nz
add address=154.53.224.0/24 list=mega.nz
add address=154.53.225.0/24 list=mega.nz
/ip firewall mangle
add action=mark-packet chain=forward comment=MEGA-upload \ out-interface=eth1-Wi-Fi new-packet-mark=MEGA-upload \ passthrough=yes dst-address-list=mega.nz
add action=mark-packet chain=forward comment=MEGA-download \ in-interface=eth1-Wi-Fi new-packet-mark=MEGA-download \ passthrough=yes src-address-list=mega.nz
/queue tree
add max-limit=25M name=MEGA-upload packet-mark=MEGA-upload parent=global \ queue=default-small
add max-limit=25M name=MEGA-download packet-mark=MEGA-download parent=global \ queue=default-small

PS.: Таким образом можно ограничивать скорость на любые ресурсы.

PPS: Правила ограничений были частично взяты из статьи «Ограничение скорости в MikroTik» и изменены для своих нужд.

PPPS: В статью были добавлены скрипты в текстовом эквиваленте, а также убрано создание PCQ-типов для очередей.

:log info "STARTING SCAN TO CLOUD"
:put [:resolve mega.nz]
:put [:resolve mega.co.nz]
:put [:resolve eu.static.mega.co.nz]
:put [:resolve dropbox.com]
:put [:resolve d.dropbox.com]
:put [:resolve bolt.dropbox.com]
:put [:resolve dl-debug.dropbox.com]
:put [:resolve api.disk.yandex.net]
:foreach i in=[/ip dns cache all find where (name~"mega.nz" || name~"mega.co" || name~"dropbox" || name~"disk.yandex") && (type="A") ] do={
:local tmpAddress [/ip dns cache get $i address];
delay delay-time=10ms
#prevent script from using all cpu time
:if ( [/ip firewall address-list find where address=$tmpAddress] = "") do={
:local cacheName [/ip dns cache get $i name] ;
:log info ("added entry: $cacheName $tmpAddress");
/ip firewall address-list add address=$tmpAddress list=clouds comment=$cacheName;
}
}
:log info "CLOUD SCAN COMPLETE"

Время на прочтение

Распространенность оборудования Mikrotik растет с каждым днем, все больше устройств, а значит и RoS, появляется не только в корпоративном секторе, но и у обычных, домашних пользователей.
К сожалению, не смотря на вполне нормальные настройки по умолчанию, которые можно сделать через Quick Set, в интернете можно встретить множество советов очистить конфигурацию, и сделать как-то по «особому», с «нуля». В этой статье я хочу поделится своим опытом и дать рекомендации, как изменить конфигурацию из Quick Set под свои нужды, при этом сохранив достаточный уровень защищенности.

Что такое Quick Set?

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

  • CAP — Режим управляемой точки доступа, требует наличия настроенного CAPsMAN
  • CPE — Режим WiFi клиента, когда интернет вам приходит по WiFi
  • HomeAP [dual] — Режим домашней точки доступа, тут количество настроек уменьшено, а их названия приближены к сленгу «домашних пользователей»

    Как настроить микротик routerboard RB951G-2HnD

  • PTP Bridge AP\CPE — Режим организации беспроводного моста, одна точка настраивается в AP, остальные в CPE
  • WISP AP — Почти то-же, что и HomeAP, но настроек больше, и названия более «профессиональные»
  • Basic AP — Почти пустая конфигурация, подходит для развертывания автономно управляемых точек доступа (без CAPsMAN)

Дальше мы будем в основном настраивать HomeAP\WISP AP, но советы пригодятся и в других конфигурациях.

Безопасность

Доступность на внешних интерфейсах

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

Как настроить микротик routerboard RB951G-2HnD

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

/interface list add exclude=dynamic name=discover

Как настроить микротик routerboard RB951G-2HnD

Добавим в список discovery интерфейсы, на которых мы хотим, чтобы протокол Neighbors Discovey работал.

Теперь настроим работу протокола, указав список discovery в его настройках:

Как настроить микротик routerboard RB951G-2HnD

В простой, домашней конфигурации, в списке discovery могут быть интерфейсы, на которых может работать протокол доступа по MAC адресу, для ситуаций, когда IP не доступен, поэтому настроим и эту функцию:

Как настроить микротик routerboard RB951G-2HnD

Теперь, роутер станет «невидимым» на внешних интерфейсах, что скроет информацию о нем (не всю конечно), от потенциальных сканеров, и даже, лишит плохих парней легкой возможности получить управление над роутером.

Защита от DDoS

Теперь, добавим немного простых правил в пакетный фильтр:

/ip firewall filter
add action=jump chain=forward connection-state=new in-interface-list=ISP jump-target=anti-DDoS
add action=jump chain=input connection-state=new in-interface-list=ISP jump-target=anti-DDoS
add action=drop chain=forward connection-state=new src-address-list=BAN-DDoS
add action=return chain=anti-DDoS dst-limit=15,15,src-address/10s
add action=add-src-to-address-list address-list=BAN-DDoS address-list-timeout=1d chain=anti-DDoS
add action=jump chain=input connection-state=new dst-port=22,8291 in-interface-list=ISP jump-target=anti-BruteForce-3 protocol=tcp
add action=drop chain=forward connection-state=new src-address-list=BAN-BruteForce-3
add action=return chain=anti-BruteForce-3 dst-limit=4/1m,1,src-address/1m40s
add action=add-src-to-address-list address-list=BAN-BruteForce-3 address-list-timeout=1d chain=anti-BruteForce-3

И поместим их после правила defcon для протокола icmp.

Результатом будет бан на сутки для тех, кто пытается открыть более 15 новых соединений в секунду. Много или мало 15 соединений, вопрос спорный, тут уже сами подбирайте число, я выбрал 50 для корпоративного применения, и таких банит у меня 1-2 в сутки. Вторая группа правил гораздо жестче, блокирует попытки соединений на порт ssh(22) и winbox(8291), 3-и попытки за минуту, и отдыхай сутки ;). Если вам необходимо выставить DNS сервер в интернет, то подобным правилом можно отсекать попытки DNS Amplification Attacks, но решение не идеальное, и ложно-положительных срабатываний бывает много.

RFC 1918

RFC 1918 описывает выделение адресных пространств для глобально не маршрутизируемых сетей. Поэтому, имеет смысл блокировать трафик от\к таким сетям, на интерфейсе, который смотрит к провайдеру, за исключением ситуаций, когда провайдер выдает вам «серый» адрес.

/ip firewall address-list
add address=10.0.0.0/8 list="RFC 1918"
add address=172.16.0.0/12 list="RFC 1918"
add address=192.168.0.0/16 list="RFC 1918"
/ip firewall filter
add action=drop chain=input comment="Drop RFC 1918" in-interface-list=WAN src-address-list="RFC 1918"
add action=drop chain=forward comment="Drop RFC 1918" dst-address-list="RFC 1918" out-interface-list=WAN
add action=drop chain=output comment="Drop RFC 1918" dst-address-list="RFC 1918" out-interface-list=WAN

Поместите эти правила ближе к началу и не забудьте, добавить в список WAN интерфейс, смотрящий в сторону провайдера.

Читайте также:  Станьте заметным в Интернете с помощью премиум-адреса reg ru от экспертов

А вот набор маршутов в «черную дыру»

/ip route
add comment="RFC 1918" distance=249 dst-address=10.0.0.0/8 type=blackhole
add comment="RFC 1918" distance=249 dst-address=172.16.0.0/12 type=blackhole
add comment="RFC 1918" distance=249 dst-address=192.168.0.0/16 type=blackhole

Этот набор маршрутов направит весь трафик до сетей RFC 1918 в «черную дыру», однако, если будут маршруты с меньшей метрикой, то такой трафик пойдет через эти маршруты. Полезно для гарантии того, что приватный трафик не просочится во внешнюю сеть.
За совет благодарим achekalin

UPnP

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

Как настроить микротик routerboard RB951G-2HnD

SIP Conntrack

Кроме всего прочего, стоит отключить модуль conntrack SIP, который может вызывать неадекватную работу VoIP, большинство современных SIP клиентов и серверов отлично обходятся без его помощи, а SIP TLS делает его окончательно бесполезным.

Как настроить микротик routerboard RB951G-2HnD

IPv6 туннели

Если вы не используете IPv6 или не хотите что-бы рабочие машины с Windows поднимали IPv6 туннели без спроса, тогда заблокируйте следующий трафик:

/ip firewall filter
add action=drop chain=forward comment="Teredo TCP" dst-port=3544 protocol=tcp
add action=drop chain=forward comment="Teredo UDP" dst-port=3544 protocol=udp
add action=drop chain=forward comment=6to4 protocol=ipv6

За совет опять благодарим achekalin

Динамические и вложенные списки интерфейсов

Эта функция появилась совсем недавно (с версии 6.41), и она очень удобная. Однако, есть особенность: глубина вложенности. Невозможно вложить вложенный список во вложенный список. Если вы так сделаете (фича такая) вам не сообщат о проблеме, просто такой список работать по факту не будет.

WiFi

В городской среде, когда эфир крайне зашумлен, имеет смысл отказаться от каналов в 40MGhz, это увеличивает удельную мощность сигнала на канале, так как 40MGHz канал по сути, это два канала по 20MGHz.

Bridge & ARP

Если у вас роутер раздает интернет и дает клиентам настройки по DHCP, имеет смысл установить настройку arp=reply-only, а в DHCP Server включить add-arp=yes

Как настроить микротик routerboard RB951G-2HnD

Как настроить микротик routerboard RB951G-2HnD

Такая настройка помешает выставить IP адрес вручную, так как роутер согласится работать только с той парой MAC-IP, которую выдавал сам.

Прочее

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

mikrotik-black-white-list-000.pngОграничение доступа к тем или иным ресурсам сети интернет на основе списков достаточно популярный способ фильтрации, несмотря на его недостатки. Действительно, в большинстве случаев требуется заблокировать достаточно небольшой список ресурсов, скажем, соцсети, с чем данный метод вполне успешно справляется. В данной статье мы поговорим о том, как настроить фильтрацию по спискам на роутерах Mikrotik, тем более что RouterOS предоставляет нам для этого достаточно широкие возможности.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Прежде всего поговорим об особенностях фильтрации в условиях современного интернета. Основной тенденцией последних лет является массовый переход на протокол HTTPS. Что это означает? В отличие от HTTP, который передает данные открытым текстом, HTTPS использует SSL-шифрование и все, что мы можем увидеть для такого соединения — это домен назначения. Какие именно страницы посещает пользователь на указанном домене и какие данные оттуда передаются мы видеть не можем.

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

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

Создаем списки

В командной строке это же действие можно выполнить так:

/ip firewall address-list
add address=yandex.ru list=WL

Таких списков мы можем создать сколько нам нужно, причем один и тот же адрес может входить сразу в несколько списков. Это удобно, если нужно обеспечить для разных групп пользователей доступ к разному набору сайтов. В итоге у вас должно получиться примерно следующее:

mikrotik-black-white-list-002.pngВ данном примере реализовано два списка: WL — белый список и BL — черный список. Обычно в реальной жизни используется что-то одно, в нашем случае создание данных списков обусловлено сугубо учебными целями.

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

mikrotik-black-white-list-003-1.png

mikrotik-black-white-list-004-1.png

Либо через командную строку:

/ip dhcp-server lease
add address=192.168.186.199 address-lists=USER mac-address=00:0C:29:B4:D0:05 server=dhcp1

Таким образом мы получаем список пользователей, либо несколько списков, в которых указанные адреса будут находиться до тех пор, пока на сервере активно резервирование.

Черный список

mikrotik-black-white-list-006.pngИ наконец на закладке Action указываем действие, обычно везде в интернете указывают drop, хорошо, укажем и мы.

mikrotik-black-white-list-007.png

Данное правило должно располагаться самым первым в цепочке FORWARD, выше

mikrotik-black-white-list-008.pngСтраничка не грузится, однако браузер не понимает в чем дело и продолжает попытки ее грузить (т.е. в заголовке вкладки постоянно крутится колесико), это нагружает ресурсы ПК и не вносит ясности пользователю. Так происходит из-за того, что мы просто убиваем пакеты — действие drop, и отправитель не понимает почему нет ответа. Поэтому для внутренних ресурсов лучше использовать действие reject, которое отправляет назад пакет с сообщением что ресурс недоступен.

После замены действия при повторной попытке посетить ресурс мы сразу увидим сообщение о его недоступности:

mikrotik-black-white-list-010.pngБыстро добавить правило через командную строку можно так:

/ip firewall filter
add action=reject chain=forward dst-address-list=BL in-interface=bridge1 reject-with=icmp-network-unreachable src-address-list=!USER

mikrotik-black-white-list-011.pngИли в командной строке:

/ip firewall filter
add action=reject chain=forward dst-address-list=BL in-interface=bridge1 reject-with=icmp-network-unreachable src-address-list=USER

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

Белые списки

Аналогичное действие через консоль:

/ip firewall filter
add action=reject chain=forward dst-address-list=!WL in-interface=bridge1 reject-with=icmp-network-unreachable src-address-list=!USER

Данное правило также следует располагать первым в цепочке FORWARD.

Добавим к разрешенным несколько адресов, в нашем случае yandex.ru и interface31.ru и попробуем открыть один их них. Яндекс открывается, но выглядит довольно непривычно.

Теперь попробуем открыть наш сайт. А вот тут первый неприятный сюрприз:

mikrotik-black-white-list-014.pngЧто это значит? Браузер не может проверить подлинность сертификата, а так как наш сайт использует HSTS, то доступ к нему будет невозможен, потому как подобные действия могут указывать на атаку с понижением степени защиты, чему HSTS должен препятствовать.

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

mikrotik-black-white-list-015.pngВ нашем случае оказалось достаточно добавить узел ocsp.int-x3.letsencrypt.org, сайт загрузился, но без комментариев, так как они реализованы на стороннем ресурсе и разрешение доступа к нему не решило проблемы. В этом случае вам придется либо заниматься долгим и кропотливым выяснением необходимых для работы ресурсов и занесением их в белый список, либо отказываться от части функционала сайтов.

mikrotik-black-white-list-016.pngЛибо в командной строке:

/ip firewall filter
add action=reject chain=forward dst-address-list=!WL in-interface=bridge1 reject-with=icmp-network-unreachable src-address-list=USER

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

Читайте также:  Minecraft Server Hosting - ScalaCube

Layer 7 protocol

Layer 7 protocol — это методика поиска определенных вхождений в ICMP/TCP/UDP потоках при помощи регулярных выражений. На первый взгляд достаточно интересная возможность, существенно расширяющая степень контроля над проходящим трафиком, но есть один существенный недостаток. Как уже понятно из названия, данный вид фильтрации работает на прикладном (L7) уровне, т.е. полностью обрабатывается CPU и даже при небольшом количестве правил способен создать сильную нагрузку на оборудование, особенно старые (не ARM) модели.

Использовать L7 для блокировки сайтов не рекомендуют сами разработчики Mikrotik, справедливо замечая, что в большинстве случаев это не будет работать так, как задумано, но при этом вы будете впустую растрачивать вычислительные ресурсы роутера. На наш взгляд использовать L7 для задач, связанных с доступом к сайтам вообще бессмысленно. Современный трафик в подавляющем большинстве шифрованный и различного рода конструкции для анализа URL просто не будут работать, а управлять доступом на основе доменного имени вполне можно и на L3 (чем мы занимались выше).

По этой же самой причине не будут работать многие размещенные в интернете инструкции, где трафик фильтровался по содержимому, типам файлов или потоков, использовал параметры запросов и т.д. и т.п. Хотя мы до сих пор встречаем статьи, в которых по L7 пытаются блокировать соцсети или Youtube, мотивируя это большим числом адресов, использованием CDN, поддоменов и т.д. и т.п. Однако все это не выдерживает никакой критики, соцсети и видеохостинги прекрасно блокируются по доменному имени.

Мы не рекомендуем использовать L7 во всех тех случаях, когда задачу можно решить иным образом, применяя его только для решения специфичных задач. Например, выявления и блокировки какого-либо вида трафика.

Поставим для примера следующую задачу: заблокировать возможность установления SSH-соединений для клиентов сети. Решение в лоб — заблокировать исходящие соединения на 22 порт не принесет успеха, так как SSH-сервер может работать на произвольном порту. Поэтому нужно при помощи специальных паттернов определить наличие именно SSH-трафика и каким-то образом его блокировать.

Где брать паттерны? Опытные пользователи могут запустить сетевой сканер (tcpdump, Wireshark) и проанализировать доступное содержимое пакетов и на основании полученной информации составить регулярное выражение. Либо воспользоваться сайтом l7-filter.sourceforge.net, однако большая часть паттернов оттуда работать не будет. Во-первых, сайт достаточно старый, последний раз обновлялся в 2009 году, во-вторых, очень многие протоколы перестали использоваться в открытом виде, а используют SSL-шифрование. В этом случае вы просто увидите SSL-поток, блокировать который бессмысленно, так как вы заблокируете практически весь интернет.

Для решения нашей задачи сначала перейдем в IP — Firewall — Layer 7 protocol и создадим новый фильтр: в поле Name напишем произвольное имя, в нашем случае SSH, а в поле Regexp внесем регулярное выражение паттерна:

^ssh-[12]\.[0-9]

mikrotik-black-white-list-017.pngТакже можно выполнить команду в терминале:

/ip firewall layer7-protocol
add name=SSH regexp="^ssh-[12]\\.[0-9]"

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

Поэтому мы пойдем другим путем и на основании L7 фильтра будем маркировать соединения, которых гораздо меньше, чем пакетов. Перейдем в IP — Firewall — Mangle и создадим новое правило: на закладке General выставляем Chain — prerouting, Protocol — tcp и Сonnection Mark — no mark:

mikrotik-black-white-list-018-1.png

На закладке Advanced указываем использование созданного нами фильтра Layer 7 Protocol — SSH:

mikrotik-black-white-list-019.pngВ Action указываем действие mark-connection, задаем марку соединения New Connection Mark — SSH-CONN и обязательно ставим флаг Passthrough для прохождения пакета далее по цепочке:

mikrotik-black-white-list-020.pngЗатем добавим еще одно правило: General — Chain — prerouting, Protocol — tcp и Connection Mark — SSH-CONN:

mikrotik-black-white-list-021.pngА в действиях добавим mark packet, New Packet Mark — SSH-PCK и снимем флаг Passthrough:

mikrotik-black-white-list-022.pngВсе тоже самое быстро делается в командной строке:

/ip firewall mangle
add action=mark-connection chain=prerouting connection-mark=no-mark layer7-protocol=SSH new-connection-mark=SSH-CONN passthrough=yes protocol=tcp
add action=mark-packet chain=prerouting connection-mark=SSH-CONN new-packet-mark=SSH-PCK passthrough=no protocol=tcp

Многие читатели не работают с брандмауэром дальше таблицы Filter, поэтому что, что мы сейчас сделали в Mangle может показаться им какой-то особой магией. Коротко поясним наши действия. Первое правило проверяет все немаркированные соединения и те из них, которые сосуществуют фильтру L7, т.е. SSH-соединения получают метку SSH-CONN и продолжают движение по цепочке. Следующее правило проверяет соединения и все пакеты соединений, промаркированных как SSH-CONN снабжает меткой SSH-PCK.

Таким образом мы пометили все пакеты, относящиеся к SSH-соединениям, но L7 фильтр мы используем только для соединений, не нагружая роутер проверкой каждого пакета. Теперь запретим транзит таких пакетов, для этого вернемся в IP — Firewall — Filter Rules и создадим правило, на закладке General которого укажем: Chain — forward, Рrotocol — tcp, In Interface — bridge1 и Packet Mark — SSH-PCK:

mikrotik-black-white-list-023.pngНа закладке Action ставим действие drop. То же самое в консоли:

/ip firewall filter
add action=drop chain=forward in-interface=bridge1 packet-mark=SSH-PCK protocol=tcp

Ставим это правило также в начало цепочки FORWARD и если вы все сделали правильно, то установить SSH-соединение из вашей сети больше никому не удастся.

mikrotik-black-white-list-024.pngСледует понимать, что выше был лишь пример того, как можно использовать Layer 7 protocol на Mikrotik, в реальной ситуации следует несколько раз подумать и прибегать к возможностям L7 только тогда, когда все остальные варианты исчерпаны. Также старайтесь как можно более подробно описывать условия, для правил использующих L7 фильтры, чтобы максимально уменьшить нагрузку на процессор роутера.

Фильтрация по MAC-адресам

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

Откроем IP — Firewall — Mangle и добавим правило, на закладке General укажем Chain — prerouting, In Interface — bridge1, на Advanced в поле Src. MAC Address укажем MAC-адрес нужного устройства.

mikrotik-black-white-list-026.pngЭто же правило в командной строке:

/ip firewall mangle
add action=add-src-to-address-list address-list=USER address-list-timeout=5s chain=prerouting in-interface=bridge1 src-mac-address=00:0C:29:B9:FF:2E

Заключение

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

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Mikrotik-VPN-internet-000.pngВ наших прошлых материалах мы уже поднимали тему использования VPN не только как средства для организации корпоративной сети, но и как способа доступа в интернет для повышения безопасности работы в общественных сетях и обхода разного рода региональных ограничений. В последнем случае имеет смысл использовать VPN-канал не для всего трафика, а только для тех сайтов, доступ к которым в вашем расположении затруднен. Это несложно сделать, если в вашем распоряжении имеется роутер Mikrotik, а если нет, то появляется еще одна причина его купить.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Будем считать, что у вас уже есть интернет-подключение с точкой выхода трафика в том расположении, откуда возможен неограниченный доступ к требуемым ресурсам. Это может быть как собственный сервер, либо аккаунт у одного из многочисленных VPN-провайдеров. Выбирая расположение точки выхода, следует учитывать как возможность доступа к требуемым ресурсам, так и задержки при передаче данных. Так сервера расположенные в США обладают гораздо более высоким временем доступа, нежели сервера расположенные в Европе, поэтому их следует выбирать, когда требуется доступ именно к американским ресурсам, скажем, Netflix или покупкам у американских продавцов на Amazon и Ebay.

В нашем случае будет использоваться OpenVPN сервер на базе бесплатного VPS от Oracle с расположением в США. Вы можете использовать любой доступный вариант, а о настройке Mikrotik в качестве VPN-клиента для различных типов подключения вы можете более подробно прочитать в нашей статье.

Читайте также:  Самые продаваемые товары на «Вайлдерриз» – статистика и опыт продавцов

При создании подключения в обязательном порядке снимите флаг Add Default Route, нам не требуется направлять весь трафик в VPN-канал, а маршрутизацию мы настроим позже вручную.

Mikrotik-VPN-internet-001.pngДля того, чтобы клиенты нашей локальной сети могли выходить в интернет через VPN-подключение, следует настроить NAT. Для этого перейдем в IP — Firewall — NAT и создадим новую запись со следующими параметрами: Chain — srcnat, Src. Address — диапазон вашей локальной сети, Out. Interface — интерфейс вашего VPN-подключения, в нашем случае это выглядит так:

Mikrotik-VPN-internet-002.pngЗатем перейдите на закладку Action и укажите требуемое действие: masquerade. Также можно быстро выполнить все это в командной строке:

/ip firewall nat
add action=masquerade chain=srcnat out-interface=ovpn-out1 src-address=192.168.186.0/24

Mikrotik-VPN-internet-003.pngЭта же настройка через консоль:

/ip firewall address-list
add address=2ip.ru list=US_only

Теперь промаркируем все необходимые пакеты, для этого переместимся в IP — Firewall — Mangle и добавим новое правило: на закладке General укажем Chain — prerouting, In. Interface — bridge1, на закладке Advanced выберем Dst. Address List — US-only, а на закладке Action укажем Action — mark routing, New Routing Mark — произвольное имя метки — в нашем случае ORA и ниже снимаем флаг Passthrough.

Mikrotik-VPN-internet-004.pngЭто же действие в консоли:

/ip firewall mangle
add action=mark-routing chain=prerouting dst-address-list=US_only in-interface=bridge1 new-routing-mark=ORA passthrough=no

Таким образом мы добавим к пакетам, направляемым к сайтам из списка специальную метку, на основании которой будет приниматься решение о их маршрутизации.

И наконец перейдем к самой маршрутизации, перейдем в IP — Routes и создадим новый маршрут. В качестве адреса назначения Dst. Address укажем 0.0.0.0/0, а в поле Gateway укажем интерфейс VPN-соединения, ниже выберем поле Routing Mark и укажем там нашу метку ORA.

Mikrotik-VPN-internet-005.pngЧерез командную строку данное действие можно выполнить так:

/ip route
add distance=1 gateway=ovpn-out1 routing-mark=ORA

Только что мы создали дополнительную таблицу маршрутизации, в которую будут попадать все промаркированные нами пакеты. Если шлюз, указанный в данной таблице недоступен, то пакет перейдет в основную таблицу маршрутизации — main — и уйдет в интернет через шлюз провайдера. Если это по каким-либо причинам нежелательно, то следует выполнить еще одну настройку. Перейдем в IP — Routes — Rules и создадим новое правило: Routing mark — ORA, Action — lookup only in table, Table — выберите имя, соответствующее вашей метке маршрутизации, в нашем случае также ORA.

Mikrotik-VPN-internet-006.pngВ консоли для создания правила выполните:

/ip route rule
add action=lookup-only-in-table routing-mark=ORA table=ORA

Таким образом мы замкнем промаркированные пакеты в собственной таблице маршрутизации и при недоступности VPN-соединения эти сайты также окажутся недоступны. Через основного провайдера эти пакеты отправлены не будут.

Теперь самое время проверить, что все работает как надо. Мы не даром добавили в список сайт 2ip, перейдем на него и убедимся, что доступ к нему был осуществлен через наш VPN c выходом в США.

Mikrotik-VPN-internet-007.pngВ дальнейшем вам потребуется только добавлять необходимые сайты в список, либо убирать из него. Также вы можете настроить несколько VPN-каналов с разными точками выхода и несколько таблиц маршрутизации, направляя пакеты к различным сайтам через разные туннели.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Коллеги, выходной, почему бы не по-экспериментировать то? :-)

виртуальный CHR, 2 ядра, частота 1800MHz, памяти 512 (внутри CHR видит 480 Мб)
(это так было уже сделано и в рамках теста я на этим параметрах решил поиграться)

Тест №1 (залить файл адрес-лист)
Нашёл файл фонарный, адаптировал его в виде адрес листа, строк в файле
было = 475417 (размер файла 15,4 мегабайта) импорт файла составил 3 минуты и 7 сек.
При импорте, нагрузка была 52-55%, позже до 67-72%.
Памяти RAM (согласно окну Resource)
Было до: 480 Мб
Стало: 118 Мб

вот это был трэш!! :sh_ok: :sh_ok:
При удалении реально виртуалка подвиласа и отваливалась.
Работал я по МАКу, позже подключился по IP = тоже самое.
Удалять пришлось по частям, и по мелким.
Занял этот процесс больше часа (уже жалею что не сделал снапшот в виртуализации,
ибо было проще со снапшота вернуть виртуалку, чем удалять почти 460к строк.
Отвечу так, стабильность работы машины (виртуалку) низкая, зависание, поддупливание.
Добавил позже, виртуалке 4гига оперативы, почти ничего не изменилось, подвисание,
потеря связи продолжались. Надёжность такова использования = сомнительная и очень.

==============================================

виртуальный CHR, 1 ядро, частота 1800MHz, памяти 128 (внутри CHR видит 77 Мб) — Примерно сделал как в РБ2011

Тест №2 (залить файл адрес-лист 201к записей)
Файл сделал ровно 201к записей (размер файла 6,7мегабайта)
При импорте нагрузка была в рамках 75-88%, память таила, за памятью
при первых минутах не следил, но позже, увидел как она достигла
(свободно 5мегабайт) и примерно так и держалось.
Итак, импортирование шло аж 54мин и 47 сек и вылетело потом с ошибкой:

Ипортировано 50555 объектов (какое круглое число!?!?).
Система отвечает, но свободной памяти на момент появившейся ошибки — было 11 мегабайт.
Спустя минуты 3-4 минуты, система показывает 62 мегабайта свободы.

Итак:
1) РБ2011 и при 128мб = не в состоянии прожевать файл большой, 201к записи,
и за 54 минуты лишь 1/4 вошла.
2) При повышении виртуальной машине памяти до 4х гиг, скорость и адаптивность не пришла.
3) Скорее всего для работы в комплексе, нужны и ядра и мощность и оперативность (проверю как-нибудь в другой раз).


На работе(ах): 2xCCR1016-12G, RB3011UiAS и hAP lite (RB941)
Дома: CCR1016-12G, RBcAP2n (standalone), RB wAP LTE kit
Для тестов(под рукой): RB3011UiAS, hAP mini (RB931) и что-то ещё по мелочи
MTCNA
MTCRE

Сегодня хочу поподробнее раскрыть тему защиты роутеров популярной латвийской марки. Речь пойдет о базовой настройке Firewall в Mikrotik для обеспечения безопасности и удобства. Статья на эту тему была написана уже давно, но я решил ее полностью переделать и актуализировать.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курcе по администрированию MikroTik. Автор курcа, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

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

Введение

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

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

Default firewall в Mikrotik

Если вы используете дефолтную конфигурацию роутера, то она по-умолчанию имеет стандартные правила firewall. Привожу список стандартных правил (rules) с комментариями. Напоминаю, что экспорт правил firewall в mikrotik можно выполнить следующей командой:

>> ip firewall export file=rules

Вот список стандартных правил:

/ip firewall filter
add action=accept chain=input comment="defconf: accept established,related,untracked" connection-state=established,related,untracked
add action=drop chain=input comment="defconf: drop invalid" connection-state=invalid
add action=accept chain=input comment="defconf: accept ICMP" protocol=icmp
add action=drop chain=input comment="defconf: drop all not coming from LAN" in-interface-list=!LAN
add action=accept chain=forward comment="defconf: accept in ipsec policy" ipsec-policy=in,ipsec
add action=accept chain=forward comment="defconf: accept out ipsec policy" ipsec-policy=out,ipsec
add action=fasttrack-connection chain=forward comment="defconf: fasttrack" connection-state=established,related
add action=accept chain=forward comment="defconf: accept established,related, untracked" connection-state=established,related,untracked
add action=drop chain=forward comment="defconf: drop invalid" connection-state=invalid
add action=drop chain=forward comment="defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat connection-state=new in-interface-list=WAN
/ip firewall nat
add action=masquerade chain=srcnat comment="defconf: masquerade" ipsec-policy=out,none out-interface-list=WAN

В принципе, по приведенным комментариям примерно понятно, что тут происходит. Дропаются все входящие и транзитные соединения не из локальной сети, разрешен пинг — icmp, разрешен ipsec, разрешены установленные соединения. Все. Ну и настроен NAT через WAN интерфейс.

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

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

Оцените статью
Хостинги