mikrotik-wiki.ru
Главная
Загрузка...

Базовая защитная конфигурация Firewall

RouterOS 7.xIP4 мин4730 мар. 2026 г.
TelegramVK

Firewall MikroTik — полное руководство

Firewall в RouterOS — это первая линия защиты вашего маршрутизатора и сети. В этом руководстве разберём архитектуру цепочек, построим защиту от brute-force атак и настроим правила для типового офиса.

Архитектура Firewall в RouterOS

RouterOS использует три основные цепочки:

  • input — трафик, направленный на сам роутер (Winbox, SSH, DNS, ping)
  • forward — трафик, проходящий через роутер (из LAN в интернет и обратно)
  • output — трафик, исходящий от самого роутера (обновления, NTP, DNS-запросы)

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

Состояния соединений (Connection Tracking)

RouterOS отслеживает состояние каждого соединения:

  • established — соединение уже установлено, пакеты идут в обе стороны
  • related — связанное соединение (например, FTP data после FTP control)
  • new — первый пакет нового соединения
  • invalid — пакеты не принадлежащие ни одному известному соединению

Базовый принцип: разрешить established/related, отбросить invalid, контролировать new.

Input chain — защита роутера

[admin@MikroTik] >
/ip firewall filter

# Разрешить установленные и связанные соединения
add chain=input connection-state=established,related action=accept \
  comment="Established/Related"

# Отбросить невалидные пакеты
add chain=input connection-state=invalid action=drop \
  comment="Drop invalid"

# Разрешить ICMP (ping) с ограничением
add chain=input protocol=icmp action=accept \
  comment="Allow ICMP"

# Разрешить всё из локальной сети
add chain=input in-interface-list=LAN action=accept \
  comment="Allow from LAN"

# Отбросить всё остальное (из WAN)
add chain=input action=drop \
  comment="Drop all other input"

Forward chain — контроль транзитного трафика

[admin@MikroTik] >
# Разрешить установленные
add chain=forward connection-state=established,related action=accept

# Отбросить невалидные
add chain=forward connection-state=invalid action=drop

# Разрешить из LAN в интернет
add chain=forward in-interface-list=LAN out-interface-list=WAN action=accept \
  comment="LAN to WAN"

# Разрешить из LAN в LAN (между VLAN, если есть)
add chain=forward in-interface-list=LAN out-interface-list=LAN action=accept \
  comment="LAN to LAN"

# Отбросить всё остальное
add chain=forward action=drop \
  comment="Drop all other forward"

Защита от brute-force атак

Злоумышленники перебирают пароли SSH и Winbox. Автоматическая блокировка после нескольких неудачных попыток:

[admin@MikroTik] >
# Блокировка IP из blacklist
add chain=input src-address-list=blacklist action=drop \
  comment="Drop blacklisted"

# Детекция: 3 попытки за 1 минуту → блокировка на 1 день
add chain=input protocol=tcp dst-port=8291,22 \
  connection-state=new src-address-list=ssh_stage3 action=add-src-to-address-list \
  address-list=blacklist address-list-timeout=1d

add chain=input protocol=tcp dst-port=8291,22 \
  connection-state=new src-address-list=ssh_stage2 action=add-src-to-address-list \
  address-list=ssh_stage3 address-list-timeout=1m

add chain=input protocol=tcp dst-port=8291,22 \
  connection-state=new src-address-list=ssh_stage1 action=add-src-to-address-list \
  address-list=ssh_stage2 address-list-timeout=1m

add chain=input protocol=tcp dst-port=8291,22 \
  connection-state=new action=add-src-to-address-list \
  address-list=ssh_stage1 address-list-timeout=1m

Порт 8291 — Winbox, 22 — SSH. После 3 попыток подключения за минуту IP блокируется на сутки.

Защита от сканирования портов

[admin@MikroTik] >
add chain=input protocol=tcp tcp-flags=fin,syn action=drop \
  comment="Drop FIN+SYN (scan)"
add chain=input protocol=tcp tcp-flags=fin,rst action=drop \
  comment="Drop FIN+RST (scan)"
add chain=input protocol=tcp tcp-flags=syn,rst action=drop \
  comment="Drop SYN+RST (scan)"
add chain=input protocol=tcp tcp-flags=fin,psh,urg,!syn,!rst,!ack action=drop \
  comment="Drop XMAS scan"
add chain=input protocol=tcp tcp-flags=!fin,!syn,!rst,!ack action=drop \
  comment="Drop NULL scan"

RAW таблица — защита от DDoS

RAW-правила обрабатываются до Connection Tracking, что снижает нагрузку на CPU при DDoS:

[admin@MikroTik] >
/ip firewall raw
  add chain=prerouting in-interface-list=WAN \
    connection-state=invalid action=drop \
    comment="RAW: Drop invalid from WAN"

  add chain=prerouting protocol=tcp tcp-flags=syn \
    in-interface-list=WAN connection-state=new \
    action=jump jump-target=SYN-flood

  add chain=SYN-flood limit=100,5:packet action=return
  add chain=SYN-flood action=drop \
    comment="RAW: SYN flood protection"

Проброс портов (dst-nat)

Пример: проброс порта 80 на внутренний веб-сервер 192.168.88.100:

[admin@MikroTik] >
/ip firewall nat add chain=dstnat protocol=tcp dst-port=80 \
  in-interface=ether1 action=dst-nat to-addresses=192.168.88.100

/ip firewall filter add chain=forward protocol=tcp dst-port=80 \
  dst-address=192.168.88.100 action=accept \
  comment="Allow forwarded HTTP" \
  place-before=*[find comment="Drop all other forward"]

Правило filter нужно поставить выше финального drop в forward chain.

Address Lists — группировка IP-адресов

Address Lists позволяют управлять группами IP без изменения правил:

[admin@MikroTik] >
# Создать список доверенных IP
/ip firewall address-list
  add list=trusted address=192.168.88.0/24
  add list=trusted address=10.0.0.0/24

# Использовать в правилах
/ip firewall filter add chain=input src-address-list=trusted action=accept

Просмотр и диагностика

[admin@MikroTik] >
# Список правил со счётчиками
/ip firewall filter print stats

# Заблокированные IP
/ip firewall address-list print where list=blacklist

# Connection Tracking
/ip firewall connection print

# Текущие соединения к роутеру
/ip firewall connection print where dst-address~":8291"

Типичные ошибки

  1. Правило drop стоит выше accept — порядок правил критичен, drop в начале заблокирует всё
  2. Забыли разрешить established/related — каждая цепочка должна начинаться с accept established,related
  3. Заблокировали себе доступ — всегда разрешайте input из LAN перед финальным drop
  4. NAT без forward — проброс порта в NAT не работает без разрешающего правила в forward
  5. allow-remote-requests без firewall — DNS на роутере доступен из WAN, используется для DNS amplification атак
[admin@MikroTik] >
/ip firewall filter

# Разрешить установленные и связанные соединения
add chain=input connection-state=established,related action=accept \
  comment="Established/Related"

# Отбросить невалидные пакеты
add chain=input connection-state=invalid action=drop \
  comment="Drop invalid"

# Разрешить ICMP (ping) с ограничением
add chain=input protocol=icmp action=accept \
  comment="Allow ICMP"

# Разрешить всё из локальной сети
add chain=input in-interface-list=LAN action=accept \
  comment="Allow from LAN"

# Отбросить всё остальное (из WAN)
add chain=input action=drop \
  comment="Drop all other input"
# Разрешить установленные
add chain=forward connection-state=established,related action=accept

# Отбросить невалидные
add chain=forward connection-state=invalid action=drop

# Разрешить из LAN в интернет
add chain=forward in-interface-list=LAN out-interface-list=WAN action=accept \
  comment="LAN to WAN"

# Разрешить из LAN в LAN (между VLAN, если есть)
add chain=forward in-interface-list=LAN out-interface-list=LAN action=accept \
  comment="LAN to LAN"

# Отбросить всё остальное
add chain=forward action=drop \
  comment="Drop all other forward"
# Блокировка IP из blacklist
add chain=input src-address-list=blacklist action=drop \
  comment="Drop blacklisted"

# Детекция: 3 попытки за 1 минуту → блокировка на 1 день
add chain=input protocol=tcp dst-port=8291,22 \
  connection-state=new src-address-list=ssh_stage3 action=add-src-to-address-list \
  address-list=blacklist address-list-timeout=1d

add chain=input protocol=tcp dst-port=8291,22 \
  connection-state=new src-address-list=ssh_stage2 action=add-src-to-address-list \
  address-list=ssh_stage3 address-list-timeout=1m

add chain=input protocol=tcp dst-port=8291,22 \
  connection-state=new src-address-list=ssh_stage1 action=add-src-to-address-list \
  address-list=ssh_stage2 address-list-timeout=1m

add chain=input protocol=tcp dst-port=8291,22 \
  connection-state=new action=add-src-to-address-list \
  address-list=ssh_stage1 address-list-timeout=1m
add chain=input protocol=tcp tcp-flags=fin,syn action=drop \
  comment="Drop FIN+SYN (scan)"
add chain=input protocol=tcp tcp-flags=fin,rst action=drop \
  comment="Drop FIN+RST (scan)"
add chain=input protocol=tcp tcp-flags=syn,rst action=drop \
  comment="Drop SYN+RST (scan)"
add chain=input protocol=tcp tcp-flags=fin,psh,urg,!syn,!rst,!ack action=drop \
  comment="Drop XMAS scan"
add chain=input protocol=tcp tcp-flags=!fin,!syn,!rst,!ack action=drop \
  comment="Drop NULL scan"
/ip firewall raw
  add chain=prerouting in-interface-list=WAN \
    connection-state=invalid action=drop \
    comment="RAW: Drop invalid from WAN"

  add chain=prerouting protocol=tcp tcp-flags=syn \
    in-interface-list=WAN connection-state=new \
    action=jump jump-target=SYN-flood

  add chain=SYN-flood limit=100,5:packet action=return
  add chain=SYN-flood action=drop \
    comment="RAW: SYN flood protection"
/ip firewall nat add chain=dstnat protocol=tcp dst-port=80 \
  in-interface=ether1 action=dst-nat to-addresses=192.168.88.100

/ip firewall filter add chain=forward protocol=tcp dst-port=80 \
  dst-address=192.168.88.100 action=accept \
  comment="Allow forwarded HTTP" \
  place-before=*[find comment="Drop all other forward"]
# Создать список доверенных IP
/ip firewall address-list
  add list=trusted address=192.168.88.0/24
  add list=trusted address=10.0.0.0/24

# Использовать в правилах
/ip firewall filter add chain=input src-address-list=trusted action=accept
# Список правил со счётчиками
/ip firewall filter print stats

# Заблокированные IP
/ip firewall address-list print where list=blacklist

# Connection Tracking
/ip firewall connection print

# Текущие соединения к роутеру
/ip firewall connection print where dst-address~":8291"
IP / Базовая защитная конфигурация Firewall