Построение Stateful межсетевого экрана на MikroTik RouterOS (Filter, NAT, Raw)
- Высокая утилизация CPU на MikroTik из-за проверки тяжелых правил Connection Tracking.
- Сбои прохождения SIP/VoIP, FTP и IPSec трафика из-за блокировки пакетов в состоянии
invalid. - Пропуск атак типа SYN Flood мимо стандартных правил межсетевого экрана.
- Разрыв активных TCP-сессий при динамическом изменении таблиц маршрутизации.
1. Архитектура таблиц Packet Flow в RouterOS
- Таблица Raw: инспекция пакетов до попадания в движок Connection Tracking (идеально для защиты от DDoS и сброса мусорного трафика без нагрузки на CPU).
- Таблица Filter: основной контроль состояний (Stateful Inspection:
established,related,untracked,invalid). - FastTrack: аппаратное/ядерное ускорение пересылки проверенных пакетов в обход дальнейшей цепочки фильтрации.
2. Конфигурация базового Stateful Firewall в Filter
/ip firewall filter
# 1. Разрешить установленные и связанные соединения (FastTrack)
add chain=forward action=fasttrack-connection connection-state=established,related comment="FastTrack forward"
add chain=forward action=accept connection-state=established,related comment="Accept established, related forward"
add chain=input action=accept connection-state=established,related comment="Accept established, related input"
# 2. Немедленно отбрасывать пакеты в состоянии Invalid
add chain=input action=drop connection-state=invalid comment="Drop Invalid input"
add chain=forward action=drop connection-state=invalid comment="Drop Invalid forward"
# 3. Разрешить локальный loopback и доверенный менеджмент
add chain=input in-interface=lo action=accept comment="Accept Loopback"
add chain=input in-interface-list=LAN src-address-list=ADMIN_DEVICES action=accept comment="Accept Admin Access"
# 4. Разрешить ICMP с лимитом частоты (защита от ping-флуда)
add chain=input protocol=icmp limit=50,5:packet action=accept comment="Rate-limited ICMP"
# 5. Дроп всего остального входящего трафика на роутер
add chain=input action=drop comment="Drop all other input"
# 6. Контроль транзитного трафика (Forward)
add chain=forward in-interface-list=LAN out-interface-list=WAN action=accept comment="Allow LAN to Internet"
add chain=forward action=drop comment="Drop all other forward"3. Использование таблицы RAW для отражения DoS/DDoS
Сброс пакетов от заблокированных хостов без инициализации Connection Tracking:
/ip firewall raw
add chain=prerouting src-address-list=BLACKLIST action=drop comment="Early Drop Blacklisted IPs"
add chain=prerouting protocol=tcp tcp-flags=!fin,!syn,!rst,!ack action=drop comment="Drop Bogus TCP flags"4. Настройка Source NAT (Masquerade)
/ip firewall nat
add chain=srcnat out-interface-list=WAN action=masquerade comment="Default WAN Masquerade" Частые вопросы (FAQ)
Почему FastTrack нельзя использовать вместе с Simple Queues (QoS)?
FastTrack перенаправляет пакеты в обход очередей QoS и большинства хуков ядра. При использовании очередей шейпинга FastTrack необходимо отключать, иначе лимиты скорости не будут применяться к пересылаемому трафику.
Что означает статус соединения 'untracked' в RouterOS?
Состояние untracked присваивается пакетам, для которых в таблице RAW было явно выполнено действие action=notrack. Это исключает их из таблицы Connection Tracking, экономя оперативную память и ресурсы CPU.
Чем опасны пакеты со статусом 'invalid'?
Пакеты со статусом invalid не принадлежат ни к одной известной сессии и не открывают новую (например, некорректная последовательность Sequence Numbers или испорченные заголовки). Их всегда нужно дропать.
Как безопасно настроить удаленное управление роутером WinBox/SSH?
Ограничьте входящий порт WinBox (8291) и SSH (22) списком src-address-list доверенных подсетей в цепочке input и никогда не оставляйте их открытыми для всего внешнего интерфейса WAN.