MikroTik firewall: лучшие практики правил для корпоративного офиса
Меня зовут Семёнов Евгений Сергеевич, директор АйТи Фреш. За 15+ лет настройки MikroTik я видел всякое: офисы с firewall «allow all», где внутренние принтеры торчали в интернет с открытым PJL, и офисы с двумя сотнями правил, половина из которых дублировала друг друга. Правильный firewall — это компромисс между безопасностью и производительностью. Хороший комплект на RB4011 или CCR2004 из дата-центра МТС должен держать 1 Gbps NAT, 50+ правил и минимум 0,5 Gbps шифрования без просадок.
Цепочки firewall: input, forward, output
| Цепочка | Что фильтрует | Пример правил |
|---|---|---|
| input | Трафик на само устройство | SSH, Winbox, SNMP из LAN |
| forward | Транзитный трафик через устройство | LAN-WAN, LAN-LAN |
| output | Трафик с устройства наружу | Обычно не ограничивают |
Основная работа — input (защита роутера) и forward (защита сетей). Output трогают редко, только если роутер сам генерирует подозрительный трафик или нужны маркировки для балансировки.
Универсальный шаблон input
/ip firewall filter
# 1. Принимаем established и related
add chain=input action=accept connection-state=established,related \
comment="accept est/rel"
# 2. Дропаем invalid
add chain=input action=drop connection-state=invalid comment="drop invalid"
# 3. ICMP с rate-limit
add chain=input protocol=icmp limit=50,50:packet action=accept \
comment="accept ICMP limited"
# 4. Разрешаем из LAN всё
add chain=input in-interface-list=LAN action=accept comment="accept from LAN"
# 5. Whitelist управления (если нужен удалённый доступ)
add chain=input src-address-list=management action=accept \
comment="accept management"
# 6. Port knocking / honeypot — переносим Winbox на нестандартный порт
add chain=input dst-port=22,8291 protocol=tcp action=add-src-to-address-list \
address-list=knock-stage1 address-list-timeout=30s
# 7. Финальный drop
add chain=input action=drop comment="drop rest"
Ключевое правило — «state first». Строка с established/related должна быть №1, иначе каждая пакет-ответа проходит весь список правил, что катастрофически снижает производительность.
Универсальный шаблон forward
# FastTrack для увеличения NAT-производительности
/ip firewall filter
add chain=forward action=fasttrack-connection connection-state=established,related \
comment="fasttrack"
add chain=forward action=accept connection-state=established,related
add chain=forward action=drop connection-state=invalid
# Блок спуфинга
add chain=forward in-interface-list=WAN src-address-type=local action=drop \
comment="drop spoofing"
# Защита от trashmasquerade
add chain=forward action=drop src-address-list=blacklist
# Разрешение пользовательских сетей наружу
add chain=forward src-address=192.168.10.0/24 out-interface-list=WAN \
action=accept comment="office out"
# Запрет гостевой сети в корпоративные
add chain=forward src-address=192.168.20.0/24 dst-address=192.168.10.0/24 \
action=drop comment="block guest→office"
add chain=forward src-address=192.168.20.0/24 dst-address=192.168.30.0/24 \
action=drop comment="block guest→infra"
# DNAT для публичного веб-сервиса
add chain=forward dst-address=192.168.30.50 dst-port=443 protocol=tcp \
action=accept comment="public HTTPS"
# Финальный drop
add chain=forward action=drop comment="drop rest"
Address-list: динамические списки IP
Address-list — ключевая фича MikroTik. Вы можете добавлять IP в список при срабатывании правила (например, после 5 неудачных SSH), а потом проверять принадлежность к списку в других правилах.
# Каскадная защита от брутфорса SSH
/ip firewall filter
add chain=input protocol=tcp dst-port=22 src-address-list=ssh-banned \
action=drop comment="drop banned SSH"
add chain=input protocol=tcp dst-port=22 connection-state=new \
src-address-list=ssh-stage3 \
action=add-src-to-address-list address-list=ssh-banned \
address-list-timeout=1d comment="ban SSH"
add chain=input protocol=tcp dst-port=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=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=22 connection-state=new \
action=add-src-to-address-list address-list=ssh-stage1 \
address-list-timeout=1m
Четвёртая попытка подключения за минуту — клиент улетает в бан на сутки. Работает против 99% автоматических сканеров.
Raw-цепочка: разгружаем conntrack
Если на WAN льётся мусор (сканеры, ботнеты), conntrack занят пустой работой. Raw-таблица позволяет дропнуть пакет до трекинга.
/ip firewall raw
# Дропаем bogons (невалидные IP)
add chain=prerouting src-address-list=bogons action=drop \
comment="drop bogons"
# Дропаем спуфинг
add chain=prerouting src-address=192.168.0.0/16 in-interface-list=WAN \
action=drop comment="drop rfc1918 from WAN"
add chain=prerouting src-address=10.0.0.0/8 in-interface-list=WAN action=drop
add chain=prerouting src-address=172.16.0.0/12 in-interface-list=WAN action=drop
# Список bogons добавляется автоматически из RIPE
/ip firewall address-list
add list=bogons address=0.0.0.0/8
add list=bogons address=127.0.0.0/8
add list=bogons address=169.254.0.0/16
add list=bogons address=224.0.0.0/4
add list=bogons address=240.0.0.0/4
Защита от сканирования портов
/ip firewall filter
# PSD (port scan detector)
add chain=input protocol=tcp psd=21,3s,3,1 \
action=add-src-to-address-list address-list=port-scanners \
address-list-timeout=2w comment="detect port scan"
# Nmap NULL/FIN/XMAS
add chain=input protocol=tcp tcp-flags=fin,!syn,!rst,!psh,!ack,!urg \
action=add-src-to-address-list address-list=port-scanners \
address-list-timeout=2w
add chain=input src-address-list=port-scanners action=drop \
comment="drop port scanners"
Кейс: укрепление firewall после взлома
В июне 2025 к нам пришёл клиент — производственная компания 80 рабочих мест в Подмосковье. На их MikroTik RB3011 был взломан пароль admin, злоумышленник изменил DNS на сервер с MITM, пользователи получали фишинговые страницы. Обнаружили через неделю по странному трафику. Факт взлома — пустой пароль mikrotik на Winbox, 8291 открыт в мир.
За один рабочий день мы:
- Полностью сбросили конфигурацию, перенастроили с нуля.
- Установили каскадный бан SSH/Winbox (схема выше).
- Перенесли Winbox на порт 54321, ограничили source-address офисом и VPN.
- Включили raw-цепочку с bogons-списком.
- Поставили два DNS-листенера (192.168.10.1 и publicDNS), заблокировали наружу 53-й порт от клиентов.
- Настроили почтовый алерт при попытке входа в Winbox через Netwatch+fetch.
За полгода — 14 862 попыток брутфорса SSH, все заблокированы каскадом. Ни одного успешного входа. Стоимость работ — 42 000 руб, включая расследование инцидента.
FastTrack и Connection Tracking
FastTrack — это обход основных таблиц firewall для уже принятых соединений. Повышает производительность NAT на 3–5x, но делает невидимым mangle и queue для этих пакетов. Если вы используете маркировку пакетов или shaper — отключите FastTrack или исключите нужные соединения.
# Проверить использование conntrack
/ip firewall connection print count-only
/ip firewall connection tracking print
Логирование и мониторинг
# Логируем дропы в отдельную тему
/system logging action
add name=fw-drops target=memory memory-lines=5000
/system logging
add topics=firewall action=fw-drops
# В правилах
add chain=input action=log log-prefix="drop-input" connection-state=new
# Экспорт на syslog-сервер
/system logging action
add name=remote target=remote remote=192.168.10.5 remote-port=514
/system logging add topics=firewall action=remote
Аудит и усиление firewall MikroTik
Провожу аудит существующих правил firewall, составляю рекомендации, переписываю или строю с нуля по лучшим практикам. Работа с любыми моделями от hEX до CCR. Документация с комментариями к каждому правилу, схема сетевого трафика.
Телефон: +7 903 729-62-41
Telegram: @ITfresh_Boss
Семёнов Евгений Сергеевич, директор АйТи Фреш
FAQ — правила firewall MikroTik
- В каком порядке обрабатываются правила?
- Сверху вниз до первого совпадения. Established+related всегда №1, final drop — последний.
- Чем отличается filter от raw?
- Raw работает до connection tracking и дешевле по ресурсам для мусорного трафика.
- Стоит ли блокировать по странам?
- Geo-blocking помогает, но не заменяет полноценную защиту. VPN и TOR обходят.
- Как защититься от брутфорса?
- Каскадный бан через address-list с timeout, перенос портов на нестандартные.
- Нужен ли DDoS-protection на MikroTik?
- Базовая защита встроена, но для серьёзных атак — облачные анти-DDoS сервисы.
