Настройка нормального закрытого MikroTik Firewall по принципу «Запрещено всё, что не разрешено», для дома и работы, на примерах реальной домашней и рабочей конфигурации. Статья отражает мой опыт, создано без ИИ (NO AI USED).
Содержание:
Настройка MikroTik Firewall (для дома)
Настройка правил Firewall для домашнего роутера, этот раздел часть мастер-статьи — «Настройка MikroTik для дома» .
К правилам добавляем неактивированный префикс логирования (log-prefix), активируем при необходимости, для отображения в логах — полезно при диагностике проблем.
Выбирайте подходящие вам правила исходя из описания, применимости для вас и здравого смысла.
Списки интерфейсов берем из статьи Interface List, списки адресов указаны в статье Address Lists.
Настройка Filter Rules Input (защита роутера)
Тестовое правило
Создаем тестовое правило, разрешающее весь трафик в цепочке input и деактивируем его.
Это правило деактивации firewall для цепочки input, будет использоваться при необходимости диагностировать влияние firewall на входящий в роутер трафик, чтобы не отключать правила поочередно.
ℹ️ Временно включив это правило вы отключите влияние firewall на прохождение трафика по цепочке input (к роутеру). В обычном режиме правило должно быть отключено.
/ip firewall filter add action=accept chain=input comment="Temporary firewall test rule" disabled=yes
Разрешить установленные, связанные и неотслеживаемые соединения
Разрешить трафик для уже установленных (established), связанных/вспомогательных (related), неотслеживаемых (untracked) соединений.
ℹ️ Untracked — соединения намеренно исключенные из таблицы активных соединений (conntrack).
/ip firewall filter add action=accept chain=input connection-state=established,related,untracked comment="Allow Established, Related, Untracked connections"
Запрет invalid пакетов
Одна из лучших практик — запрет прохождения invalid пакетов, включаем правило.
ℹ️ Invalid пакеты — не относящиеся ни к одному существующему соединению: некорректные, «сломанные», «подозрительные пакеты».
/ip firewall filter add action=drop chain=input connection-state=invalid log-prefix="Drop invalid" comment="Drop invalid connections"
Разрешить DNS запросы (UDP)
Так как роутер в моей домашней сети выполняет функции DNS сервера, разрешаю DNS запросы, по протоколу UDP, порт назначения 53, из списка адресов TrustedNetworks и списка интерфейсов LAN.
/ip firewall filter add action=accept chain=input protocol=udp dst-port=53 connection-state=new in-interface-list=LAN src-address-list=TrustedNetworks log-prefix="Allow DNS UDP queries" comment="Allow DNS queries (UDP: 53) to the router"
Разрешить DNS запросы (TCP)
Так же разрешаю DNS запросы к роутеру, по протоколу TCP, порт назначения 53, из списка адресов TrustedNetworks и списка интерфейсов LAN.
/ip firewall filter add action=accept chain=input protocol=tcp dst-port=53 connection-state=new in-interface-list=LAN src-address-list=TrustedNetworks log-prefix="Allow DNS TCP queries" comment="Allow DNS queries (TCP: 53) to the router"
Разрешить DHCP запросы
Разрешаем DHCP запросы к роутеру, по протоколу UDP, порт назначения 67, только из списка доверенных интерфейсов LAN.
/ip firewall filter add action=accept chain=input protocol=udp dst-port=67 in-interface-list=LAN log-prefix="Allow DHCP queries" comment="Allow DHCP (UDP: 67) queries to the router from LAN"
Разрешить MNDP
Так как в моей сети несколько устройств MikroTik, мне удобно использовать протокол Mikrotik Neighbor Discovery Protocol (MNDP), для обнаружения «соседних» устройств. Разрешаю пакеты MNDP (протокол UDP) только со списка доверенных интерфейсов LAN отправляемых на порт 5678.
ℹ️ Поскольку Neighbor Discovery в RouterOS объединяет информацию с двух уровней модели OSI (на уровне L4 работает транспорт UDP, на уровне L2 информацию принимает и передает протокол семейства MNDP/VDP/CDP), так же необходимо настроить службу Neighbors.
/ip firewall filter add action=accept chain=input protocol=udp dst-port=5678 connection-state=new dst-address-type=broadcast log-prefix="Allow MNDP" comment="Allow MNDP (Mikrotik Neighbor Discovery Protocol)"
Разрешить ICMP
Разрешаю обнаружение устройства с помощью протокола ICMP для пакетов приходящих из доверенного списка интерфейсов LAN и списка доверенных адресов TrustedNetworks.
/ip firewall filter add action=accept chain=input protocol=icmp in-interface-list=LAN src-address-list=TrustedNetworks log-prefix="Allow ICMP" comment="Allow ICMP"
Разрешить Loopback трафик
Устройство периодически отправляет пакеты себе пакеты через внутренний виртуальный интерфейс (127.0.0.1, lo, собственный IP адрес на собственный IP адрес) по TCP протоколу. Так же для диагностики, иногда мне требуется ICMP (ping) проверка внутренних интерфейсов роутера. Разрешим loopback трафик.
/ip firewall filter add action=accept chain=input in-interface=lo log-prefix="Allow Loopback" comment="Allow Loopback Traffic"
Разрешить Winbox
Я использую Winbox как основной способ управления оборудованием MikroTik, поэтому защите в этом правиле уделяется больше внимания. Часть этих настроек избыточна для домашнего использования, но если защищать, так защищать.
Стандартный порт Winbox (TCP: 8291) изменен на 4426.
Разрешаем входящие подключения протокола TCP на порт 4426, состояние соединения — новое (new) и флагом SYN, с списка интерфейсов MGMT (Management), с списка адресов TrustedNetworks и ограниченным лимитом пакетов в секунду.
На вкладке Extra устанавливаю параметр Rate=10/sec, Burst=20. Это ограничивает попытки соединения с Winbox — 10 новых соединений в секунду, с начальным всплеском до 20 соединений. Это является частью защиты от брутфорса (замедляя генерацию подключений) и флуда, и не влияет на уже установленные соединения.
/ip firewall filter add action=accept chain=input protocol=tcp dst-port=4426 connection-state=new in-interface-list=MGMT src-address-list=TrustedNetworks limit=10,20:packet tcp-flags=syn log-prefix="Allow Winbox" comment="Accept Winbox"
ℹ️ После настройки параметра limit наблюдайте за соединением, слишком низкий лимит пакетов может привести к отказам доступа или нестабильном подключении Winbox. Излишне высокие лимиты, делают эту настройку бесполезной.
Разрешить протокол OSPF
Домашний роутер связан с рабочими посредством SSTP соединения и протокола OSPF, для автоматического распространения маршрутов.
Разрешаем подключение по протоколу OSPF, на мультикаст адрес 224.0.0.5, с списка интерфейсов PPP, списка адресов OSPF-Peers и параметром TTL=1.
Вкладка Advanced, пункт TTL устанавливаем equal=1 — пакеты, пришедшие не с напрямую от подключённого соседа, будут отброшены.
/ip firewall filter add action=accept chain=input protocol=ospf dst-address=224.0.0.5 in-interface-list=PPP src-address-list=OSPF-Peers ttl=equal:1 log-prefix="Allow OSPF" comment="Allow OSPF Hello packets"
Запретить все
Финальное правило firewall — запретить всё, что не было разрешено.
/ip firewall filter add action=drop chain=input comment="Drop All Input" log-prefix="Drop All"
На этом настройка цепочки Input MikroTik Firewall для дома, завершена.
Настройка MikroTik Firewall (для работы)
Настройка Filter Rules Input (защита роутера)
Тестовое правило
Создаем тестовое правило, разрешающее весь трафик в цепочке input и деактивируем его.
Это правило деактивации firewall для цепочки input, будет использоваться при необходимости диагностировать влияние firewall на входящий в роутер трафик, чтобы не отключать поочередно правила.
ℹ️ Временно включив это правило вы отключите влияние firewall на прохождение трафика по цепочке input (к роутеру). В обычном режиме правило должно быть отключено.
/ip firewall filter add action=accept chain=input comment="Temporary firewall test rule" disabled=yes
Разрешить установленные, связанные и неотслеживаемые соединения
Разрешить трафик для уже установленных (established), связанных/вспомогательных (related), неотслеживаемых (untracked) соединений.
ℹ️ Untracked — соединения намеренно исключенные из таблицы активных соединений (conntrack).
/ip firewall filter add action=accept chain=input comment="Allow Established, Related, Untracked connections" connection-state=established,related,untracked
Запрет invalid пакетов
Одна из best practices — запрет прохождения invalid пакетов, включаем правило.
ℹ️ Invalid пакеты — не относящиеся ни к одному существующему соединению: некорректные, «сломанные», «подозрительные пакеты».
/ip firewall filter add action=drop chain=input connection-state=invalid log-prefix="Drop invalid" comment="Drop invalid connections"
Разрешить DNS запросы (UDP)
Разрешаем DNS запросы к роутеру, по протоколу UDP, порт назначения 53, из списка адресов TrustedNetworks и списка интерфейсов LAN.
/ip firewall filter add action=accept chain=input connection-state=new dst-port=53 protocol=udp src-address-list=TrustedNetworks log-prefix="Allow DNS UDP queries" comment="Allow DNS queries (UDP: 53) to the router from Trusted Networks"
Разрешить DNS запросы (TCP)
Разрешаем DNS запросы к роутеру, по протоколу UDP, порт назначения 53, из списка адресов TrustedNetworks и списка интерфейсов LAN.
/ip firewall filter add action=accept chain=input comment="Allow DNS queries (TCP: 53) to the router from Trusted Networks" connection-state=new dst-port=53 in-interface-list=LAN log-prefix="Allow DNS TCP queries" protocol=tcp src-address-list=T
rustedNetworks
Разрешить DHCP запросы
Разрешаем DHCP запросы к роутеру, по протоколу UDP, порт назначения 67, только из списка доверенных интерфейсов LAN.
/ip firewall filter add action=accept chain=input protocol=udp dst-port=67 in-interface-list=LAN log-prefix="Allow DHCP queries" comment="Allow DHCP (UDP: 67) queries to the router from LAN"
Разрешить MNDP
В моей рабочей сети около 100 устройств MikroTik, я использую протокол Mikrotik Neighbor Discovery Protocol (MNDP), для обнаружения «соседних» устройств.
Разрешаю пакеты MNDP (протокол UDP) только c интерфейса управления сетевыми устройствами VLAN90, порт назначения 5678, тип запроса — широковещательный (broadcast).
ℹ️ Поскольку Neighbor Discovery в RouterOS объединяет информацию с двух уровней модели OSI (на уровне L4 работает транспорт UDP, на уровне L2 информацию принимает и передает протокол семейства MNDP/VDP/CDP) — необходимо настроить службу Neighbors (это кстати, также облегчит настройку VoIP в корпоративной сети).
/ip firewall filter add action=accept chain=input protocol=udp connection-state=new dst-address-type=broadcast dst-port=5678 in-interface=VLAN90 log-prefix="Allow MNDP" comment="Allow MNDP (Mikrotik Neighbor Discovery Protocol)"
Разрешить ICMP
Разрешаю обнаружение устройства с помощью протокола ICMP для пакетов приходящих из доверенного списка интерфейсов LAN и списка доверенных адресов TrustedNetworks.
/ip firewall filter add action=accept chain=input protocol=icmp in-interface-list=LAN src-address-list=TrustedNetworks log-prefix="Allow ICMP" comment="Allow ICMP"
Разрешить Loopback трафик
Устройство периодически отправляет пакеты себе пакеты через внутренний виртуальный интерфейс (127.0.0.1, lo, собственный IP адрес на собственный IP адрес) по TCP протоколу. Так же для диагностики, иногда мне требуется ICMP (ping) проверка внутренних интерфейсов роутера. Разрешим loopback трафик.
/ip firewall filter add action=accept chain=input in-interface=lo log-prefix="Allow Loopback" comment="Allow Loopback Traffic"
Проверено на RouterOS v7.20.4
Дата обновления статьи: