Skip to main content

Основы настройки фильтров брандмауэра MikroTik

Введение

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

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

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

Фильтр брандмауэра состоит из трех предопределенных цепочек, которые нельзя удалить:

Основные цепочки фильтрации

В MikroTik есть три основные цепочки (chain):

  • input — для пакетов, адресованных самому маршрутизатору (например, Winbox, SSH, ping).
  • forward — для пакетов, проходящих через маршрутизатор (между сетями).
  • output — для пакетов, отправляемых самим маршрутизатором наружу.

Важно:
Пакеты, проходящие через маршрутизатор, не обрабатываются правилами цепочки input и output.


Подходы к фильтрации

  1. Разрешить только нужный трафик, всё остальное блокировать
    • Максимальная безопасность, но требует ручного добавления новых разрешений.
  2. Блокировать только вредоносный трафик, всё остальное разрешать
    • Проще в обслуживании, но менее безопасно.

Пример базовой настройки фильтра IPv4

1. Защита самого маршрутизатора

Шаг 1. Разрешить установленные и связанные соединения

/ip firewall filter
add action=accept chain=input connection-state=established,related comment="Разрешить established/related"

Шаг 2. Разрешить доступ с доверенных адресов

/ip firewall address-list
add address=192.168.88.2-192.168.88.254 list=allowed_to_router

/ip firewall filter
add action=accept chain=input src-address-list=allowed_to_router comment="Доступ с доверенных адресов"

Шаг 3. Разрешить ICMP (ping)

/ip firewall filter
add action=accept chain=input protocol=icmp comment="Разрешить ICMP"

Шаг 4. Запретить всё остальное

/ip firewall filter
add action=drop chain=input comment="Запретить всё остальное"

2. Защита локальной сети

Шаг 1. Создать список непубличных адресов

/ip firewall address-list
add address=0.0.0.0/8 list=not_in_internet
add address=10.0.0.0/8 list=not_in_internet
add address=127.0.0.0/8 list=not_in_internet
add address=169.254.0.0/16 list=not_in_internet
add address=172.16.0.0/12 list=not_in_internet
add address=192.168.0.0/16 list=not_in_internet
add address=224.0.0.0/4 list=not_in_internet
add address=240.0.0.0/4 list=not_in_internet

Шаг 2. Пример фильтрации трафика

/ip firewall filter
add action=fasttrack-connection chain=forward connection-state=established,related comment="FastTrack"
add action=accept chain=forward connection-state=established,related comment="Разрешить established/related"
add action=drop chain=forward connection-state=invalid log=yes log-prefix=invalid comment="Блокировать invalid"
add action=drop chain=forward dst-address-list=not_in_internet in-interface=bridge log=yes log-prefix=!public_from_LAN out-interface=!bridge comment="Блокировать попытки в непубличные адреса"
add action=drop chain=forward connection-nat-state=!dstnat connection-state=new in-interface=ether1 log=yes log-prefix=!NAT comment="Блокировать не NAT'ированный входящий трафик"
add action=accept chain=forward protocol=icmp comment="Разрешить ICMP"
add action=drop chain=forward in-interface=ether1 src-address-list=not_in_internet log=yes log-prefix=!public comment="Блокировать входящий с непубличных адресов"
add action=drop chain=forward in-interface=bridge src-address=!192.168.88.0/24 log=yes log-prefix=LAN_!LAN comment="Блокировать пакеты не из LAN"

Пример фильтрации ICMP

/ip firewall filter
add chain=icmp protocol=icmp icmp-options=0:0 action=accept comment="echo reply"
add chain=icmp protocol=icmp icmp-options=3:0 action=accept comment="net unreachable"
add chain=icmp protocol=icmp icmp-options=3:1 action=accept comment="host unreachable"
add chain=icmp protocol=icmp icmp-options=3:4 action=accept comment="fragmentation required"
add chain=icmp protocol=icmp icmp-options=8:0 action=accept comment="echo request"
add chain=icmp protocol=icmp icmp-options=11:0 action=accept comment="time exceed"
add chain=icmp protocol=icmp icmp-options=12:0 action=accept comment="parameter bad"
add chain=icmp action=drop comment="deny all other types"

Фильтрация RAW

Таблица RAW межсетевого экрана позволяет выборочно обходить или отбрасывать пакеты перед отслеживанием соединения, что значительно снижает нагрузку на процессор. Этот инструмент очень полезен для предотвращения DoS/DDoS-атак.

Конфигурация фильтра RAW доступна из ip/firewall/rawменю для IPv4 и ipv6/firewall/rawменю для IPv6.

В таблице RAW нет сопоставителей, зависящих от отслеживания соединения (например, connection-state, layer7 и т. д.). Если пакет помечен для обхода отслеживания соединения, дефрагментация пакета не производится.

Также брандмауэр RAW может иметь правила только в двух цепочках:

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

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

/ip firewall raw
add chain=prerouting protocol=ospf action=notrack
add chain=output protocol=ospf action=notrack