Настройка Firewall на шлюзе MikroTik

Одной из важнейших задач для защиты вашей сети является настрoйка межсетевого экрана, также известного как фаервол, на шлюзе MikroTik. Без него киберпреступники могут атаковать ваше оборудование и устройства в Интернете. Правильно настроенный firewall пропускает только необходимый трафик, отсекая ненужный и потенциально опасный.

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

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

Схемы работы Firewall

Их два, и они подходят для любого межсетевого экрана:

  1. Разрешить всё, что не запрещено.
  2. Запретить всё, что не разрешено.

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

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

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

FireWall в MikroTik

Доступ к настройке IP — Firewall, где можно настроить фильтрацию во вкладках Filter Rules и Raw. Разница между правилами вкладок заключается в том, что правила на вкладке Raw обрабатываются до того, как пакет попадет в Connection Tracker. Это позволяет фильтровать пакеты гораздо быстрее, что экономит ресурсы устройства, но и имеет меньше возможностей для правил, что делает их менее эффективными при обработке большого количества пакетов.

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

Правила состоят из цепей, и в таблице Filter Rules по умолчанию присутствуют три цепочки:

  • Input — трафик, направленный к только этому устройству. На схеме такой трафик обрабатывается в блоке Filter Input.
  • Output — трафик, направленный от этого устройства. На схеме такой трафик обрабатывается в блоке Filter Output.
  • Forward — трафик, проходящий через это устройство, например, из локального компьютера в интернет и обратно, направление не имеет значение. На схеме такой трафик обрабатывается в блоке Filter Forward.

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

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

  • New — Новый пакет, не относящийся к текущим подключениям.
  • Established — Пакет принадлежит одному из существующих подключений из таблицы Connection.
  • Related — Пакет был порожден уже существующим подключением. Один из примеров протокол FTP, в котором передача команд происходит на порту 21, а передача данных на порту 20.
  • Invalid — Пакеты к которым не применимо не одно из предыдущих состояний.

В настройках MikroTik присутствует дополнительное состояние:

  • Untracked — пакет, обработанный до того, как он попал в Connection Tracking и был обработан в RAW таблице.

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

Создание правил в Firewall

Чтобы добавить правила, перейдите на IP-адрес, фильтр, а затем нажмите «+». На вкладке «Общие» указываются условия, при совпадении которых происходит отработка правила, а на вкладке «Действия» указывается действие, выполняемое, когда условия правила совпадают. На вкладке Advanced находятся дополнительные условия для правил, не входящих в основной раздел. Из практики в этом разделе наиболее часто используются пункты Src. Address List и Dst. Address List, которые представляют собой списки адресов, таких как IP-адреса, разрешенные для доступа к устройству.

Для фильтрации трафика могут использоваться следующие параметры:

  • Chain — цепочка, направление трафика, значения по умолчанию: Input, Output, Forward. Единственный параметр обязательный к заполнению.
  • Src. Address — IP адрес источника пакета.
  • Dst. Address — IP адрес получателя пакета.
  • Protocol — фильтр по протоколу.
  • Src. Port — Порт(ы) с которого был отправлен пакет (доступен только при выборе соответствующего протокола).
  • Dst. Port — Порт(ы) на который отправлен пакет (доступен только при выборе соответствующего протокола).
  • Any. Port — Порт(ы) фигурирующий в пакете, не важно в каком направлении отправлен пакет (доступен только при выборе соответствующего протокола).
  • In. Interface — Интерфейс на который прилетел пакет.
  • Out. Interface — Интерфейс с которого отправлен пакет.
  • In. Interface List — Интерфейс из списка, на который прилетел пакет (список составляется в Interfaces -> Interface List).
  • Out. Interface List — Интерфейс из списка, с которого отправлен пакет (список составляется в Interfaces -> Interface List).
  • Connection State — Состояние подключения, значение берется из таблицы Connection.
  • Src. Address List (вкладка Advanced) — IP адрес из списка источников пакета (список составляется на вкладке IP -> Firewall -> Address List).
  • Dst. Address List (вкладка Advanced) — IP адрес из списка получателей пакета (список составляется на вкладке IP -> Firewall -> Address List).

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

Следовательно, если пакет, обрабатываемый, соответствует условиям правила, он выполняет действия, указанные в настройке действия. Основные процедуры обработки включают:

  • Accept — Обрабатываемый пакет считается доверенным и принимается для дальнейшей обработки устройством.
  • Drop — Пакет считается не желательным и удаляется.
  • Reject — Пакет считается не желательным и отбрасывается, но в отличии от предыдущего пункта, в ответ отсылается сообщение с причиной удаления. Это сделано для того, чтобы ускорить обработку запросов клиентом, т.к. если к пакету применить действие Drop, то клиент будет ожидать ответ до таймаута.

Примеры защиты устройств

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

Необходимо создать два правила, первое для цепочки input, второе для цепочки forward, т.к. первая цепочка означает трафик, приходящий не посредственно на это устройство, вторая цепочка означает проходящий через роутер трафик. На вкладке General в поле Chain (цепочка) указываем Input (входящий трафик), в поле In Interface выбираем интерфейс, к которому подключен провод провайдера, в разделе Connection State выбираем Established, Related и в квадрате в начале поля ставим восклицательный знак нажав на него, это означает логическое НЕ, запись будет читаться как пакеты НЕ Established и НЕ Related. Другими словами, всё кроме выбранного.

В поле Action на вкладке Action выберите Drop.

Мы предлагаем то же правило для цепочки Forward. Чтобы избежать повторного заполнения всех полей, дважды нажимаем на созданном правиле, а затем нажимаем кнопку Копировать в открывшемся окне. В следующем окне в поле цепь меняем ввод на продвижение. Нажимая «ОК» в обоих окнах, вы увидите два запрещающих правила в списке фильтрующих правил.

Формат правил будет следующим:

/ip firewall filter add chain=input in-interface=ether1-wan-main connection-state=!established,related action=drop /ip firewall filter add chain=forward in-interface=ether1-wan-main connection-state=!established,related action=drop

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

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

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

Выбираем Accept на вкладке Action.

Когда вы запустите правило из командной строки, это выглядит так:

/ip firewall filter add chain=input protocol=icmp in-interface=ether1-wan-main action=accept

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

Пример три. Примеры номер один и номер два показывают, как firewall настроен. Требуется разрешить доступ RDP (порт 3389) к одному компьютеру в локальной сети с определенным (доверенным) IP адресом. Мы не рассматриваем настройки NAT, а ограничиваемся фильтрацией.

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

Мы создаем новое правило для цепочки переадресации, когда устройство находится за маршрутизатором. В поле Src. Address указываем IP-адрес, разрешающий доступ, в поле Protocol указываем 6(tcp), а в поле Dst. Port указываем 3389, который является стандартным портом RDP. В поле In. Interface выбирается интерфейс, к которому подключен провод провайдера.

Выбираем accept на вкладке Action, нажимаем «ОК» и перемещаем правило выше запрещающих.

Напоминаю, что сейчас мы ограничиваемся фильтрацией трафика, и настройки NAT опущены.

Как выглядит добавление правила в командную строку?

/ip firewall filter add chain=forward src-address=8.8.8.8 protocol=tcp dst-port=3389 in-interface=ether1-wan-main action=accept

Пример #4: Настройка firewall по схеме #2 должна быть выполнена таким образом, чтобы запрещено все, что не разрешено; трафик локальной сети должен ходить от маршрутизатора к маршрутизатору и обратно; и только определенные IP-адреса локальной сети должны быть доступны к сети Интернет.

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

  1. Разрешаем доступ к маршрутизатору для локальной сети и обратно.

    Пусть у нас локальная сеть имеет адресацию 192.168.123.0/24, интерфейсы локальной сети объединены в бридж bridge-local-net, IP адрес маршрутизатора 192.168.123.1/32. Создаем два разрешающих правила, для входящего и исходящего трафика.

    и

    /ip firewall filter add chain=input src-address=192.168.123.0/24 dst-address=192.168.123.1/32 in-interface=bridge-local-net action=accept /ip firewall filter add chain=output src-address=192.168.123.1/32 dst-address=192.168.123.0/24 out-interface=bridge-local-net action=accept

  2. Разрешаем доступ к маршрутизатору из внешней сети для нескольких IP.

    У нас есть несколько IP адресов, которым мы всецело доверяем (работа, дача, вайфайчик у любимой девушки) и с этих IP адресов мы хотим иметь доступ к нашему устройству. Создаем список с такими IP адресами в IP -> Firewall -> Address Lists назвав его WhiteList.

    Создаем два разрешающих правила для цепочек input и output, соответственно указав для каждой цепочки в качестве входящего и исходящего интерфейса тот, к которому подключен провод провайдера.

    На вкладке General задаем только тип цепочки и входящий/исходящий интерфейс.

    На вкладке Advanced в поле Src. Address List выбираем созданный ранее список IP адресов WhiteList.

    Обратное правило создается аналогично. Команды для добавления правил из терминала: /ip firewall filter add chain=input in-interface=ether1-wan-main src-address-list=WhiteList action=accept /ip firewall filter add chain=output out-interface=ether1-wan-main dst-address-list=WhiteList action=accept

  3. Предоставляем доступ в сеть интернет только определенным IP адресам локальной сети. Что бы не создавать правила для каждого адреса на вкладке IP -> Firewall -> Address Lists создадим список InternetAccess.

    На вкладке Filter Rules добавляем правила для доступа в интернет по созданному списку (настройки NAT в данной статье не рассматриваются, только фильтрация).

    Исходящий трафик не ограничиваем, цепочку выставляем Forward, Out. Interface — WAN интерфейс.

    На вкладке Advanced в поле Src. Address List выставляем созданный ранее список InternetAccess. На вкладке Action выставляем accept.

    В обратном, входящем, правиле разрешаем подключения только Established и Related, цепочка, как и в предыдущем правиле, будет Forward, но WAN интерфейс мы теперь указываем в поле In. Interface.

    На вкладке Advanced в поле Dst. Address List выставляем созданный ранее список InternetAccess. На вкладке Action выставляем accept.

    Добавление правил из терминала:

    /ip firewall filter add chain=forward out-interface=ether1-wan-main src-address-list=InternetAccess action=accept /ip firewall filter add chain=forward in-interface=ether1-wan-main connection-state=established,related dst-address-list=InternetAccess action=accept 4. Предоставляем доступ во внешнюю сеть самому роутеру. Правила схожи с предыдущим примером, но делаются для цепочек Input и Output. Входящие/Исходящие адреса не указываются, т.к. со стороны роутера это будут все адреса, принадлежащие роутеру. Action = accept.

    Правило для исходящего трафика:

    Правило для входящего трафика, разрешаем только Established и Related:

    Добавление правил из терминала: /ip firewall filter add chain=output out-interface=ether1-wan-main action=accept /ip firewall filter add chain=input in-interface=ether1-wan-main connection-state=established,related action=accept 5. Запрещаем весь трафик.

    Так как считаем, что все что необходимо было разрешено ранее, то добавляем три запрещающих правила для трех цепочек: Input, Output и Forward.

    Перед внесением запрещающих правил в WinBox включаем Safe Mode. Если мы что-то сделали не так и связь с устройством потеряется, то изменения автоматически будут отменены.

    Вносим запрещающие правила, если после добавления правил связь не потерялась, то надо нажать на кнопку Safe Mode еще раз.

    Action = drop.

    Правила Output и Forward создаются аналогично, меняется только значение в поле Chain. /ip firewall filter add chain=input action=drop /ip firewall filter add chain=output action=drop /ip firewall filter add chain=forward action=drop В итоге мы должны получить список примерно такого вида:

Отладка

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

При отработке правила в разделе Log будут примерно такие записи:

После отладки не забывайте отключить логирование в правилах.

RAW

Схема прохождения пакета показывает, что входящий пакет сначала попадает в блок RAW Preroutig, а выход RAW является первой стеной Firewall. Далее пакет проверяется здесь, а затем попадает в раздел фильтра. Получается, что обработка пакета в RAW-таблице потребляет меньше аппаратной мощности устройства; это может быть большим преимуществом, если, например, необходимо предотвратить DDOS-атаки, поскольку пакеты будут отсеиваться еще на входе.

Настройка правил в RAW таблице похожа на настройки в разделе Filter, но пакет не прошел обработку в Tracking Connection, поэтому у него меньше возможностей для фильтрации. В разделе цепь есть только два типа цепей: предварительная и выходная. Первый пакет поступает в интерфейс, а второй отправляется из интерфейса. На данном этапе тип пакета (Connection State) и маркировка пакета недоступны.

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

Не бойтесь экспериментировать с правилами и цепочками; лучше начать с малого, проверить, что работает, и постепенно добавлять дополнительные защитные элементы. Главное — помнить простой принцип: сначала всё запрещаем, а потом разрешаем только то, что действительно необходимо для работы.

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

Поделиться с друзьями
Алексей Волков

Инженер систем автоматизации. Более 8 лет проектирую и внедряю системы умного дома для жилых и коммерческих объектов.

Оцените автора
Добавить комментарий