На этой странице описание базового файервола MikroTik по версии PC360. Информация предназначена для плавного входа в тему далеких от этой темы начинающих админов.
Чтоб работать с файерволом, нужно познакомиться с его структурой и принципом действия. Об этом написано далее. В конце составлено несколько правил в дополнение к базовому набору.
Освоить MikroTik Вы можете с помощью онлайн-куса «Настройка оборудования MikroTik». Курс содержит все темы, которые изучаются на официальном курсе MTCNA. Автор курса – официальный тренер MikroTik. Подходит и тем, кто уже давно работает с микротиками, и тем, кто еще их не держал в руках. В курс входит 162 видеоурока, 45 лабораторных работ, вопросы для самопроверки и конспект.
Файервол, брандмауэр, межсетевой экран – это слова синонимы, заимствованные из разных языков.
Главная задача файервола – фильтрация проходящего между сетями трафика в соответствии с заданными правилами. Основное назначение в роутерах – это обеспечение безопасности локальной сети от угроз внешней сети.
В RouterOS, файервол находится в меню IP >> Firewall.
К файерволу относятся все верхние вкладки меню. В этой статье рассматривается только то, что есть в default-конфигурации роутера: Filter Rules, и немного NAT.
Назначение разделов файервола.
Filter Rules – фильтрация трафика на основе создаваемых правил.
NAT – преобразование адресов, перенаправление, переадресация портов.
Mangle – маркировка соединений и пакетов, установка приоритетов.
Raw – фильтрация трафика до начала отслеживания соединений в Connection tracking.
Service Ports – порты для работы в обход NAT.
Connections – все отслеживаемые соединения в роутере на данный момент.
Address Lists – создание списков IP-адресов, для дальнейшего их применения в других разделах файервола.
Layer7 Protocols – поиск регулярных выражений (например имен сайтов) в трафике для последующей фильтрации.
Типы.
Существует два типа файерволов: нормально открытый и закрытый.
Нормально открытый файервол – разрешено все, что не запрещено.
Нормально закрытый файервол – запрещено все, кроме того, что разрешено.
В зависимости от какого направления трафика рассматривать файервол, в базовой конфигурации MikroTik присутствуют оба варианта.
Из локальной сети, разрешен полный доступ в Интернет, т.е. разрешено все, кроме того, что можно явно запретить.
Из внешней сети (Интернета) полный доступ в локальную сеть запрещен, кроме проброса портов. Например, можно разрешить доступ для просмотра видеокамеры, установленной в локальной сети.
Цепочки.
Трафик рассматривается относительно роутера. Существуют три разные цепочки прохождения трафика:
INPUT – входящий в роутер трафик. Например, мы запустили команду ping из компьютера до роутера.
OUTPUT – исходящий из роутера трафик. Например, ping из роутера к любому другому устройству в сети.
FORWARD – проходящий трафик. Например, трафик из компьютера в сервер, проходящий через роутер.
В расширенном файерволе используются две дополнительные цепочки Prerouting и Postrouting. Но до их изучения нужно разобраться, как работают базовые правила. Так же можно создавать пользовательские цепочки.
Название «цепочка» используется потому, что при рассмотрении схемы прохождения трафика, последовательность получается в виде цепи из блоков выполняющих разные функции по обработке пакетов.
Схема прохождения трафика.
Для наглядного представления обработки трафика различными блоками используются схемы движения трафика (Traffic Flow). На изображении ниже представлен упрощенный вариант.
В каждой цепочке свои последовательности блоков обработки трафика.
Подробные схемы сложны для понимания начинающим админам так как состоят из множества блоков и путей движения.
При составлении правил нужно определить по схеме через какие блоки будет проходить пакет и что на него может повлиять. Это же делается при поиске проблем связанных с файерволом. Например что-то блокируется или наоборот трафик проходит там, где не должен. Это все изучают в курсе MTCTCE.
Для начального уровня достаточно хотя бы знать, что эти схемы существуют и используются в инженерной работе. С другими схемами прохождения трафика можно ознакомиться на help.mikrotik.com
Порядок расположения правил.
В Filter Rules порядок расположения правил имеет значение. Трафик проходит правила по порядку, начиная с первого и заканчивая совпадением по своему назначению. Правильное расположение очень важно. Чем меньше правил пройдет каждый пакет, тем меньше нагрузка на процессор роутера, и тем выше производительность и соответственно скорость.
На сайте mikrotik.com для каждого девайса предоставляются результаты тестов скорости с учетом наличия или отсутствия правил, потому что разница может быть очень существенной.
Например, в представленной таблице тестов видно, что при среднем размере пакета (512 byte) в режиме Bridging скорость без прохождения правил 4,6ГГбит/с, а если пакет проходит 25 правил, то его скорость снижается до 1,6ГГбит/с.
В сложных файерволах один из главных вопросов у админа – правильно расположить правила. Нужно логически подумать и расставить правила с кратчайшим путем прохождения пакета через них.
Если пакет проходит все правила и совпадений не находится, то это этот пакет разрешается. Пока в списке нет ни одного правила файервол отключен.
Структура правила.
Новое правило создается кнопкой + в графическом интерфейсе (GUI).
Чаще придется создавать правила через командную строку (CLI). Это быстрее и удобнее. Открываем терминал и вводим команды.
Первые три вкладки правила (General, Advanced, Extra) – это условие. Четвертая вкладка (Action) – действие.
В правиле может быть одно или несколько условий. Действие выполняется в случае совпадения всех условий.
Условий очень много, например IP-адрес источника, IP-адрес назначения, протокол, порт, интерфейс, список и тп.
Действий всего 11 шт.
Действия, на которых обработка пакета завершаются, называются терминирующими. Вот эти действия.
accept – разрешить;
drop – отбросить ;
fasttrack – использовать fasttrack;
reject – отклонить (с оповещением о недоступности);
tarpit – задержать входящее соединение;
Действия, которые после обработки передают пакет дальше, называются нетерминирующими.
add dst to address list – добавить адрес назначения в список адресов;
add src to address list – добавить адрес источника в список адресов;
jump – перейти к пользовательской цепочке (перепрыгнуть);
return – вернутся обратно в цепочку, откуда произошел прыжок;
log – добавить сообщение в системный журнал логов;
passthrough – пропустить далее ничего не делая, при этом посчитать количество проходящих пакетов;
Состояния соединений.
В большинстве правил используются различные состояния соединений (Connection State). Для дальнейшего понимания нужно с ними познакомиться.
New – новое. Любое возникающее соединение всегда будет первоначально в этом состоянии. Сюда относится первый пакет любого соединения.
Established – установленное соединение. После того, как новое соединение будет одобрено, оно переходит в состояние установленного.
Related – связанное соединение (с каким-то уже установленным). Самый популярный пример – это протокол FTP. Сперва устанавливается соединение FTP, затем по связанному соединению передаются данные.
Untracked – не отслеживаемое в Connection Tracking соединение, используется для доверенных источников.
Invalid – некорректные соединения. Это соединения неизвестного происхождения, появившиеся без запроса. Они не относятся ко всем другим соединениям. Чаще всего это могут быть попытки проникновения злоумышленников.
! – восклицательный знак в правиле означает инверсию, «НЕ». Например, !new – правило применится ко всем соединениям, кроме новых.
Текущие соединения можно наблюдать на вкладке Connection. Программно этим занимается Connection Tracking.
Можно выбрать соединение и нажать кнопку «минус». Соединение сбросится.
Connection tracking – отслеживает сетевые подключения в роутере и сопоставляет принадлежность пакетов из их общей последовательности к конкретному соединению. В меню кнопки Tracking находятся различные таймауты. Один из примеров настройки в этом меню – увеличение время таймаута UDP до 30 сек. В первых версиях ROSv7 этот таймаут был 10сек и создавал проблему при подключении по RDP на Windows Server. Приходилось увеличивать его вручную, затем разработчики добавили это в конфигурацию.
Connection Tracking можно включать и выключать, но делать это не нужно. Enabled: auto означает, что Connection Tracking включается при появлении правил в файерволе.
Базовые правила из дефолтной конфигурации.
В RouterOS v7.16 есть 11 правил Filter Rules. Рассмотрим их назначение.
Правила разделены на две группы в соответствии с цепочками. Правила каждой цепочки располагаются последовательно друг за другом и не перемешиваются с правилами других цепочек. У каждого правила есть комментарий, чтоб понимать для чего оно используется. В цепочке Output правил нет, потому что все разрешено.
Правило №0.
Это – счетчик для fasttrack трафика, работает в цепочке forward и выполняет действие passthrough, т.е. просто передает то, что принято, при этом показывает счет количества пройденного трафика. Счет ведется в битах в секунду или в пакетах в секунду. Это правило создается динамический (о чем сообщает флаг D) вместе с правилом №8 и так же вместе с ним удаляется.
Правила INPUT.
Правило №1.
1 2 |
/ip firewall filter add action=accept chain=input comment="defconf: accept established,related,untracked" connection-state=established,related,untracked |
Разрешение для соединений established,related,untracked.
Это правило желательно располагать одним из первых, потому что на нем заканчивается обработка основного объема трафика. Достаточно одобрить один пакет нового соединения и далее все соединение переходит в состояние установленного (established). Всем пакетам данного соединения не нужно проходить через другие правила. Этим достигается уменьшение нагрузки на процессор. Большинство соединений являются установленными.
Правило №2.
1 2 |
/ip firewall filter add action=drop chain=input comment="defconf: drop invalid" connection-state=invalid |
Откидывание некорректных (invalid) соединений.
Правило №3.
1 2 |
/ip firewall filter add action=accept chain=input comment="defconf: accept ICMP" protocol=icmp |
Разрешение ICMP протокола, чтоб роутер отвечал на ping.
Правило №4.
1 2 |
/ip firewall filter add action=accept chain=input comment="defconf: accept to local loopback (for CAPsMAN)" dst-address=127.0.0.1 |
Разрешение доступа на локальный интерфейс 127.0.0.1 при использовании собственного беспроводного интерфейса роутера в работе CAPsMAN (менеджера точек доступа wifi). Если CAPsMAN не используется, то правило можно отключить или удалить.
Правило №5.
1 2 |
/ip firewall filter add action=drop chain=input comment="defconf: drop all not coming from LAN" in-interface-list=!LAN |
Отбрасывание любого трафика, идущего не из локальной сети. Этим правилом мы запрещаем доступ к роутеру из внешних сетей и оставляем доступ из локальной сети.
Правила 1, 2 и 5 это такая конструкция, которая обязательно должна присутствовать в файерволе для input трафика (и аналогично для forward).
Правила FORWARD.
Правило №6 и №7.
1 2 3 |
/ip firewall filter 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 |
Эти два правила разрешают входящую и исходящую политику IPsec для VPN. Если не планируется использовать IPsec, то эти правила можно отключить.
Правило №8.
1 2 |
/ip firewall filter add action=fasttrack-connection chain=forward comment="defconf: fasttrack" connection-state=established,related hw-offload=yes |
Это правило позволяет пропускать некоторый трафик мимо процессора для увеличения скорости. Но в этом случае трафик не обрабатывается различными блоками и теряется часть возможностей, ради которых и был куплен микротик. При углубленном использовании роутера это правило нужно удалить.
Правило №9.
1 2 |
/ip firewall filter add action=accept chain=forward comment="defconf: accept established,related, untracked" connection-state=established,related,untracked |
Разрешает установленные и связанные соединения для проходящего (forward) через роутер трафика. Аналогично цепочке INPUT. Здесь заканчивается обработка основного объема forward трафика.
В этом и в №1 правилах можно отключить настройку untracked. Untracked соединения не отслеживаются с помощью Connection Tracking и используются в правилах на вкладке Raw. Для базовых целей в этой настройке нет необходимости.
Правило №10.
1 2 |
/ip firewall filter add action=drop chain=forward comment="defconf: drop invalid" connection-state=invalid |
Отбрасывание некорректных (invalid) соединений для трафика проходящего по цепочке forward.
Правило №11.
1 2 |
/ip firewall filter add action=drop chain=forward comment="defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat connection-state=new in-interface-list=WAN |
Это правило отбрасывает весь трафик из внешних сетей, кроме проброса портов с использованием dst-nat.
Правила №9, №10, №11 обязательно должны присутствовать в базовом файерволе.
Если нужно добавить какие-то свои правила, то в большинстве случаев их располагают между правилами №3 и №4 в цепочке Input, и между №10 и №11 в цепочке forward.
Если default-конфигурация не используется, и нужно посмотреть правила, то их можно вывести в терминале с помощью команды.
1 |
/system default-configuration print |
Списки.
Правило №5 применяется к списку LAN. В правиле №11 используется список WAN. В списки добавлены соответствующие интерфейсы.
Можно добавлять в правило непосредственно интерфейс, раньше так и делали. Со списками гораздо удобнее работать. Допустим, в роутере появился новый виртуальный интерфейс PPPoE для доступа в Интернет. Мы добавляем его в список WAN и это применится везде, где указан этот список. Не нужно заходит в конкретные правила и изменять их настройки.
Списки находятся в разделе Interface >> Interface List.
В кнопке Lists создается новый список, затем в него добавляются необходимые интерфейсы. В базовой конфигурации это списки WAN и LAN.
WAN – список с интерфейсами внешней сети.
LAN – список с интерфейсами локальной сети.
Кроме списка интерфейсов в RouterOS есть возможность создавать списки IP-адресов.
IP >> Firewall >> Address Lists. Присваиваем списку название и добавляем в него IP-адрес.
Созданный список применяем в правило.
Правило будет влиять на все IP-адреса в списке.
Есть очень полезная возможность создавать списки динамически. Об этом будет дальше.
NAT.
Расшифровывается как Network Address Translation или трансляция (преобразование) сетевых адресов.
В RouterOS присутствует два типа NAT:
source nat (src-nat) – преобразование IP-адреса источника;
destination nat (dst-nat) – преобразование IP-адреса назначения.
Src-nat.
В базовой конфигурации src-nat всего лишь одно правило. Его задача преобразовывать IP-адреса из локальной сети в IP-адрес внешней сети при отправке запроса, и потом обратное преобразование при получении ответа.
1 2 |
/ip firewall nat add action=masquerade chain=srcnat comment="defconf: masquerade" ipsec-policy=out,none out-interface-list=WAN |
Из правила можно удалить ipsec-policy пока не используется VPN.
Правило назначено на список WAN. Действие masquerade. Это частный случай от действия src-nat. При наличии постоянного внешнего IP-адреса более правильное решение – использовать src-nat.
Dst-nat.
Начинающему админу необходимо уметь пробрасывать порты. Этим занимается dst-nat. Такого правила нет в базовой конфигурации, но знать его нужно.
1 2 |
/ip firewall nat add action=dst-nat chain=dstnat dst-port=81 protocol=tcp to-addresses=192.168.0.105 to-ports=80 comment="dst-nat port 81" |
Правило преобразует внешний IP-адрес, порт 81, в IP-адрес внутренней сети, порт 80, чтоб просматривать видеокамеру. Для повышения безопасности в поле источника (Src. Address), можно указать IP-адрес, с которого разрешено подключение. В списке правило размещается после src-nat.
Счетчики.
О том, что правило работает можно узнать из счетчика. Это важный инструмент в настройке файервола. Подсчет трафика ведется в битах и в пакетах.
Для сброса всех счетчиков используется кнопка «Reset All Counters». Можно сбросить конкретный выбранный счетчик кнопкой «Reset Counters».
Дополнительные настройки.
Правило ограничения доступа в роутер.
Обычно для доступа в роутер используется WinBox и\или SSH. Другие сервисы используются не часто. Создадим список IP-адресов, с которых разрешен доступ к роутеру и укажем его в правиле с портами WinBox или SSH.
1 2 3 |
/ip firewall address-list add address= 85.242.240.12 list=MANAGEMET add address=192.168.2.10 list=MANAGEMET |
Для примера в список добавлены следующие адреса:
1.IP-адрес, с которого планируется подключение из внешней сети.
2.IP-адрес другой соседней внутренней сети, с которой так же планируется подключение.
Доступ из локальной сети разрешен правилом №5.
Правило доступа через WinBox.
1 2 |
/ip firewall filter add action=accept chain=input comment="accept management" dst-port=8291 protocol=tcp src-address-list=MANAGEMET |
Все остальные попытки войти в роутер через порт 8291 из WAN будут заканчиваться правилом №5 потому что не найдут совпадений для себя.
Аналогичным правилом с указанием порта 22 разрешается доступ по SSH.
1 2 |
/ip firewall filter add action=accept chain=input comment="accept management" dst-port=22 protocol=tcp src-address-list=MANAGEMET |
Можно совместить эти правила в одном, указав порты назначения через запятую. В некоторых ситуациях совмещать не получается.
1 2 |
/ip firewall filter add action=accept chain=input comment="accept management" dst-port=22,8291 protocol=tcp src-address-list=MANAGEMET |
Созданное правило размещается после правила №3.
Правило в списке станет четвертым, но чтоб не путаться и не переименовывать все нижестоящие правила назовем его №3a.
В меню IP >> Services необходимо отключить все остальные неиспользуемые сервисы доступа к роутеру. Оставляем только нужные.
1 2 3 4 5 6 |
/ip service set telnet disabled=yes set ftp disabled=yes set www disabled=yes set api disabled=yes set api-ssl disabled=yes |
В этом же меню можно изменить порты доступа на нестандартные. Обычно так и делается. Это немного повысит уровень безопасности. Хакерские сканер-боты как-правило в первую очередь пытаются найти вход в роутер на стандартных портах.
Добавляем к примеру единицу в начале и уже другой порт.
При входе через WinBox с измененным портом, после IP-адреса нужно указывать порт через двоеточие.
Прежде чем изменять порт, нужно добавить его в правило №3а чтоб самому не потерять доступ к роутеру.
При выполнении настроек, особенно на удаленном доступе, перед вводом правила лучше нажать кнопку «Safe Mode». Лишним это не будет.
В случае если произойдет блокировка самого себя или потеря связи с роутером из-за введенного правила, при нажатой кнопке параметры восстановятся на до проблемные через 9 мин.
Обнаружение устройств MikroTik в сети происходит с помощью протокола MNDP (MikroTik Neighbor Discovery Protocol) внутри широковещательного домена (на уровне L2). Обнаруживать устройства можно через WinBox на вкладке Neigbours и через такое же название меню в RouterOS.
Иногда (но не всегда) возникает необходимость отключить обнаружение в целях информационной безопасности. Делается это так.
Выставляем Interface: none, и не обнаруживаем себя, но и не обнаруживаем других.
Менее радикальный метод – обнаруживать устройства в локальной сети. Для этого нужно выбрать список LAN. Эта настройка используется в базовой конфигурации.
С версии ROSv7.7 появилась возможность выбирать режим на передачу или прием данных или то и другое. Можно выбрать rx only и обнаруживать других, но не показывать себя.
Кроме этого нужно закрыть возможность доступа через MAC-server.
MAC Telnet Server – доступ к роутеру через MAC Telnet. Отключаем либо выбираем LAN.
MAC WinBox Server – доступ к роутеру по WinBox через MAC-адрес. Отключаем либо выбираем LAN.
MAC Ping Server – возможность пинговать роутер по MAC-адресу. Можно оставить.
Оптимальный вариант для предприятия – создать список технических интерфейсов или VLAN с которых выполняется настройка, и указать этот список во всех параметрах MAC-сервера. В этом случае все обнаружения и другие передачи данных не будут гулять по общей сети.
Следующее правило уже выходит за базовый уровень. Это усложненная альтернатива правилу №3а.
Правило автоматически добавляет входящие IP-адреса в список для последующей обработки. Это может быть блокировка или наоборот создание доверенного списка адресов если файервол полностью закрытый для внутренней сети.
В данном примере рассмотрим блокировку. Это поможет избавиться от попыток подключения к роутеру из одних и тех же источников.
Правило применяется только к новым соединениям (Connection state – new) для входящего по порту 8291 TCP-трафика из внешних сетей. В исключения (инверсия !) добавлен список менеджмента.
Действие в этом правиле – добавить источник в адресный список.
Активировано логирование. Чтоб событие выделялось на общем фоне, логу добавлен префикс.
Попавшие под это правило IP-адреса заносятся в список WINBOX-DROP-LIST на 10 дней. Сроки можно указывать любые.
1 2 3 |
/ip firewall filter add action=add-src-to-address-list address-list=WINBOX-DROP-LIST address-list-timeout=1w3d chain=input comment="incoming IP registration = WinBox =" connection-state=\ new dst-port=8291 in-interface-list=WAN log=yes log-prefix=1111111111111-WINBOX-1111111111111 protocol=tcp src-address-list=!MANAGEMET |
Правило блокирующее все что в списке.
1 2 |
/ip firewall filter add action=drop chain=input comment="WinBox drop list" src-address-list=WINBOX-DROP-LIST |
Расположение правил.
Можно считать этот метод бескомпромиссной защитой от подбора пароля. В правиле №3а настроено разрешение подключатся только тем, кто в списке, но все остальные подключившиеся не блокируются и могут совершать попытки подбора пароля, в конечном итоге его подберут и при совпадении разрешенного IP-адреса подключатся в роутер. Это вобщем то малореальная ситуация.
В данном случае IP-адрес блокируется и с него не разрешено ввести пароль даже 1 раз. Обычно так делается в сетях организаций, где все возможные источники указаны в доверенном списке, а неизвестные IP-адреса летят в бан.
Правила можно модернизировать, добавив время на попытку ввода учетных данных. Так же его можно адаптировать под SSH, RDP или кому что нужно.
Через пару дней проверяем логи и вот что видим.
Происходят непрерывные попытки подключится в роутер с разных внешних IP-адресов.
Все эти адреса добавлены автоматически в список и заблокированы.
Списки сохраняются на указанный срок или до перезагрузки роутера.
Итоговый вариант правил Firewall Filter и NAT.
1 2 3 |
/ip firewall address-list add address= 85.242.240.12 list=MANAGEMET add address=192.168.2.10 list=MANAGEMET |
1 2 3 4 5 6 7 8 9 |
/ip firewall filter add action=accept chain=input comment="defconf: accept established,related" connection-state=established,related 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=accept chain=input comment="accept management" dst-port=22,8291 protocol=tcp src-address-list=MANAGEMET 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 established,related" connection-state=established,related 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 |
1 2 |
/ip firewall nat add action=masquerade chain=srcnat comment="defconf: masquerade" out-interface-list=WAN |
Кроме представленных настроек не забываем менять стандартное имя учетной записи и устанавливаем сложный пароль. Так же нужно поддерживать актуальную версию ROS и периодически обновляться.
Работа с файерволом требует внимательность и серьезный подход. Одно неверное действие может открыть доступ в роутер злоумышленникам, подставляя под угрозу все ресурсы внутренней сети. Выполняйте настройки вдумчиво и осознанно.
Освоить MikroTik Вы можете с помощью онлайн-куса «Настройка оборудования MikroTik». Курс содержит все темы, которые изучаются на официальном курсе MTCNA. Автор курса – официальный тренер MikroTik. Подходит и тем, кто уже давно работает с микротиками, и тем, кто еще их не держал в руках. В курс входит 162 видеоурока, 45 лабораторных работ, вопросы для самопроверки и конспект.