Дефолтный MikroTik после первого включения — это открытая дверь. SSH на 22, Winbox на 8291, API на 8728. Всё доступно из интернета.
Первый скрипт-кидди найдёт твой роутер через Shodan за 5 минут. Второй начнёт bruteforce. Третий запустит DDoS. И всё это одновременно.
Зачем эта шпаргалка:
- Настроить базовую безопасность mikrotik за 15 минут
- Защититься от syn flood, udp flood, icmp flood
- Заблокировать bruteforce на SSH, Winbox, API
- Настроить автоматическую блокировку атакующих IP
- Не словить бан от провайдера за участие в DDoS-атаках
Если твой MikroTik смотрит в интернет — эта статья обязательна к прочтению. Безопасность mikrotik — это не опция, а необходимость.
Когда это использовать
Реальные кейсы:
- Роутер в интернете — логи SSH пестрят попытками входа из Китая/России/США
- CPU загружен на 100% — идёт SYN flood атака
- Провайдер звонит и говорит «вы участвуете в DDoS» (твой роутер заражён или используется как усилитель)
- Winbox порт 8291 открыт в интернет — ботнет пытается подобрать пароль
- После настройки роутера забыл закрыть сервисы — через неделю взломали
- Нужна защита от ddos mikrotik для сервера за роутером
Типовые ситуации:
- Первая настройка нового MikroTik (базовая настройка безопасности mikrotik)
- После взлома — восстановление и усиление защиты
- Миграция с другого роутера (как защитить mikrotik правильно)
- Публичный сервер за MikroTik — нужна защита от атак
- VPS с MikroTik CHR — open ports = проблемы
Ошибки новичков:
- Оставляют дефолтные порты и сервисы открытыми
- Настраивают firewall только в Filter, игнорируют RAW (главная таблица для DDoS)
- Ставят правила в неправильном порядке — firewall не работает
- Забывают про connection tracking — CPU умирает под нагрузкой
- Не настраивают динамические блокировки — каждый IP брутфорсит заново
- Блокируют себя и не могут зайти (нет safe mode или whitelist)
Быстрый старт: базовая защита за 10 минут
Минимальный набор для выживания в интернете:
1. Отключаем ненужные сервисы mikrotik:
/ip service set telnet disabled=yes set ftp disabled=yes set www disabled=yes set api disabled=yes set api-ssl disabled=yes set winbox address=192.168.88.0/24 set ssh address=192.168.88.0/24 # Оставляем Winbox и SSH только из локальной <a class="wpil_keyword_link" title="Сети" href="https://it-apteka.com/category/networks/" data-wpil-keyword-link="linked" data-wpil-monitor-id="391">сети</a>
2. Меняем дефолтные порты:
/ip service set ssh port=2222 set winbox port=8080 # Нестандартные порты снижают количество автоматических атак на 90%
3. Базовый firewall (input chain — защита самого роутера):
/ip firewall filter # Разрешаем established/related (уже установленные соединения) add chain=input connection-state=established,related action=accept comment="Accept established" # Разрешаем ICMP (ping) add chain=input protocol=icmp action=accept comment="Accept ICMP" # Разрешаем доступ из локальной сети add chain=input src-address=192.168.88.0/24 action=accept comment="Accept from LAN" # Блокируем всё остальное (важно: это правило должно быть ПОСЛЕДНИМ) add chain=input action=drop comment="Drop all other input"
4. Защита forward (трафик через роутер):
/ip firewall filter # Разрешаем established/related add chain=forward connection-state=established,related action=accept # Разрешаем из LAN в интернет add chain=forward src-address=192.168.88.0/24 action=accept # Блокируем всё остальное add chain=forward action=drop
Готово. Это минимум, чтобы не взломали в первый же день.
Дальше — детали, автоматизация и защита от серьёзных атак.
Структура Firewall в MikroTik: таблицы и цепочки
MikroTik firewall состоит из нескольких таблиц:
| Таблица | Путь | Назначение | Порядок обработки |
|---|---|---|---|
| RAW | /ip firewall raw | ДО connection tracking (самая быстрая) | 1 |
| Mangle | /ip firewall mangle | Маркировка пакетов, изменение TTL, ToS | 2 |
| NAT | /ip firewall nat | Преобразование адресов (masquerade, dst-nat) | 3 |
| Filter | /ip firewall filter | Основная фильтрация (accept/drop) | 4 |
Основные цепочки (chains):
- input — трафик, адресованный самому роутеру (SSH, Winbox, ping роутера)
- forward — трафик, проходящий ЧЕРЕЗ роутер (клиенты → интернет)
- output — трафик, исходящий ОТ роутера (роутер → интернет)
- prerouting — ДО маршрутизации (NAT, mangle)
- postrouting — ПОСЛЕ маршрутизации (masquerade)
Критически важно: порядок правил имеет значение. Firewall читает правила сверху вниз и применяет ПЕРВОЕ подходящее.
RAW Firewall MikroTik: главное оружие против DDoS
Почему RAW критичен для защиты от DDoS:
- Работает ДО connection tracking → не нагружает CPU
- Может дропнуть миллионы пакетов без создания conntrack-записей
- Единственный способ защититься от SYN flood без перегрузки роутера
Как работает:
# Без RAW (плохо): SYN пакет → conntrack создаёт запись → проверка в filter → drop # Проблема: каждый SYN создаёт запись в conntrack → CPU умирает # С RAW (правильно): SYN пакет → проверка в RAW → drop ДО conntrack # conntrack даже не создаётся → CPU не нагружается
Защита от SYN Flood mikrotik (TCP SYN Flood Protection)
Проблема: атакующий шлёт миллионы SYN-пакетов → conntrack переполняется → роутер падает.
Решение: ограничить количество новых подключений в RAW.
/ip firewall raw # Разрешаем established/related БЕЗ создания conntrack add chain=prerouting connection-state=established,related action=accept comment="Accept established" # Ограничиваем новые TCP-подключения (не более 50/сек с одного IP) add chain=prerouting protocol=tcp tcp-flags=syn connection-state=new src-address-list=syn_flooder action=drop comment="Drop SYN flood" add chain=prerouting protocol=tcp tcp-flags=syn connection-state=new limit=50,5:packet action=accept comment="Allow limited SYN" # Если превышен лимит → добавляем в список и блокируем add chain=prerouting protocol=tcp tcp-flags=syn connection-state=new action=add-src-to-address-list address-list=syn_flooder address-list-timeout=1h comment="Add to SYN flooder list"
Как работает:
- Если с IP приходит больше 50 SYN/сек → добавляется в список
syn_flooder - Все последующие пакеты от этого IP блокируются на 1 час
- Легитимные пользователи не пострадают (50 новых подключений/сек — это много)
Защита от UDP Flood (UDP Flood Protection)
Проблема: UDP не требует установки соединения → можно слать миллионы пакетов с подделанных IP.
Решение: rate limiting в RAW.
/ip firewall raw # Ограничиваем UDP-трафик (не более 100 pps с одного IP) add chain=prerouting protocol=udp src-address-list=udp_flooder action=drop comment="Drop UDP flood" add chain=prerouting protocol=udp limit=100,5:packet action=accept comment="Allow limited UDP" add chain=prerouting protocol=udp action=add-src-to-address-list address-list=udp_flooder address-list-timeout=30m comment="Add to UDP flooder list"
Защита от ICMP Flood (ICMP Flood Protection)
Ping flood — классика DDoS.
/ip firewall raw # Ограничиваем ICMP (10 пакетов/сек) add chain=prerouting protocol=icmp icmp-options=8:0 limit=10,5:packet action=accept comment="Allow limited ICMP echo-request" add chain=prerouting protocol=icmp icmp-options=8:0 action=drop comment="Drop ICMP flood"
Дроп пакетов в RAW таблице: недействительные пакеты
Блокируем заведомо некорректные пакеты:
/ip firewall raw # Дропаем пакеты с invalid connection state add chain=prerouting connection-state=invalid action=drop comment="Drop invalid" # Дропаем пакеты без SYN для новых подключений (TCP hijacking) add chain=prerouting protocol=tcp connection-state=new tcp-flags=!syn action=drop comment="Drop new non-SYN" # Дропаем фрагментированные пакеты (часто используются в атаках) add chain=prerouting fragment=yes action=drop comment="Drop fragments" # Дропаем пакеты с некорректными TCP-флагами add chain=prerouting protocol=tcp tcp-flags=fin,syn action=drop comment="Drop FIN+SYN" add chain=prerouting protocol=tcp tcp-flags=fin,rst action=drop comment="Drop FIN+RST" add chain=prerouting protocol=tcp tcp-flags=!fin,!syn,!rst,!ack action=drop comment="Drop XMAS/NULL scans"
Connection Tracking (Conntrack) mikrotik: оптимизация
Проблема: каждое соединение создаёт запись в conntrack → память и CPU расходуются.
Решение: отключить conntrack для известно безопасного трафика.
/ip firewall raw # Не создавать conntrack для established/related (экономия ресурсов) add chain=prerouting connection-state=established,related action=notrack comment="NoTrack established" add chain=output connection-state=established,related action=notrack # Проверка текущего conntrack: /ip firewall connection print count-only # Если число > 50000 при малом трафике → проблема
Защита от Bruteforce: SSH, Winbox, API
Самые атакуемые порты MikroTik:
- 22 — SSH
- 8291 — Winbox
- 8728 — API
- 8729 — API-SSL
- 80/443 — WebFig
Отключить ненужные сервисы mikrotik
Правило №1: если не используешь — выключи.
/ip service print # Отключаем всё лишнее: set telnet disabled=yes set ftp disabled=yes set www disabled=yes set www-ssl disabled=yes set api disabled=yes set api-ssl disabled=yes # Оставляем только SSH и Winbox (если нужны) # И ограничиваем доступ по IP set ssh address=192.168.88.0/24,203.0.113.50/32 port=2222 set winbox address=192.168.88.0/24,203.0.113.50/32 port=8080 # 203.0.113.50/32 = твой внешний статичный IP (если есть)
Использовать нестандартные порты mikrotik
Смена порта снижает количество атак на 90%.
Боты сканируют дефолтные порты. Если порт нестандартный — ботнет его пропускает.
/ip service set ssh port=2222 set winbox port=8080
Не забудь: после смены порта подключаться нужно так:
ssh -p 2222 admin@192.168.88.1 # Winbox: вводить IP:порт → 192.168.88.1:8080
SSH Bruteforce Protection mikrotik
Проблема: ботнет пытается подобрать пароль к SSH.
Решение: автоматическая блокировка после N неудачных попыток.
/ip firewall filter # Разрешаем SSH из whitelist (твои доверенные IP) add chain=input protocol=tcp dst-port=2222 src-address-list=ssh_whitelist action=accept comment="Allow SSH from whitelist" # Блокируем SSH из blacklist add chain=input protocol=tcp dst-port=2222 src-address-list=ssh_blacklist action=drop comment="Drop SSH from blacklist" # Считаем попытки подключения к SSH add chain=input protocol=tcp dst-port=2222 connection-state=new src-address-list=ssh_stage3 action=add-src-to-address-list address-list=ssh_blacklist address-list-timeout=1d comment="SSH blacklist (4th attempt)" add chain=input protocol=tcp dst-port=2222 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=2222 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=2222 connection-state=new action=add-src-to-address-list address-list=ssh_stage1 address-list-timeout=1m comment="SSH stage1 (1st attempt)" # Разрешаем подключение (если не заблокирован) add chain=input protocol=tcp dst-port=2222 action=accept comment="Allow SSH"
Как работает:
- Первое подключение → добавляется в
ssh_stage1(таймаут 1 минута) - Второе подключение за минуту →
ssh_stage2 - Третье →
ssh_stage3 - Четвёртое →
ssh_blacklist(блокировка на 1 день)
Легитимный пользователь вводит пароль с первого раза → не блокируется.
Бот пытается перебрать пароли → после 4 попыток заблокирован на сутки.
Защита Winbox порта (8291)
Аналогично SSH:
/ip firewall filter # Whitelist для Winbox add chain=input protocol=tcp dst-port=8080 src-address-list=winbox_whitelist action=accept # Blacklist add chain=input protocol=tcp dst-port=8080 src-address-list=winbox_blacklist action=drop # Счётчики попыток (аналогично SSH) add chain=input protocol=tcp dst-port=8080 connection-state=new src-address-list=winbox_stage3 action=add-src-to-address-list address-list=winbox_blacklist address-list-timeout=1d add chain=input protocol=tcp dst-port=8080 connection-state=new src-address-list=winbox_stage2 action=add-src-to-address-list address-list=winbox_stage3 address-list-timeout=1m add chain=input protocol=tcp dst-port=8080 connection-state=new src-address-list=winbox_stage1 action=add-src-to-address-list address-list=winbox_stage2 address-list-timeout=1m add chain=input protocol=tcp dst-port=8080 connection-state=new action=add-src-to-address-list address-list=winbox_stage1 address-list-timeout=1m add chain=input protocol=tcp dst-port=8080 action=accept
Address List mikrotik: динамические блокировки
Address List — это именованные списки IP-адресов.
Типовые списки:
whitelist— доверенные IP (твои адреса)blacklist— заблокированные навсегдаssh_blacklist— временная блокировка за bruteforce SSHsyn_flooder— источники SYN flood
Ручное добавление в список:
/ip firewall address-list add list=whitelist address=203.0.113.50 comment="My home IP" add list=blacklist address=198.51.100.10 comment="Known attacker"
Автоматическое добавление (уже видели выше):
action=add-src-to-address-list address-list=ssh_blacklist address-list-timeout=1d # address-list-timeout — через сколько удалить из списка (1d = 1 день)
Просмотр списков:
/ip firewall address-list print where list=ssh_blacklist # Показывает все заблокированные IP
Удаление из списка вручную:
/ip firewall address-list remove [find address=192.168.1.100]
Dynamic Address List mikrotik: скрипты для автоматизации
Скрипт для блокировки bruteforce (универсальный):
# Скрипт добавляет в blacklist IP с большим количеством попыток подключения
:local threshold 10
:local timeout "1d"
:foreach i in=[/ip firewall address-list find where list="ssh_stage3"] do={
:local addr [/ip firewall address-list get $i address]
/ip firewall address-list add list=permanent_blacklist address=$addr timeout=$timeout comment="Auto-blocked for bruteforce"
/log warning "IP $addr blocked for bruteforce"
}
Запуск скрипта по расписанию:
/system script add name=block-bruteforce source="..." policy=read,write,policy,test /system scheduler add name=check-bruteforce interval=5m on-event=block-bruteforce
Логирование неудачных попыток входа
Включаем логирование для firewall:
/ip firewall filter add chain=input protocol=tcp dst-port=2222 src-address-list=ssh_blacklist action=log log-prefix="SSH_BLOCKED: " comment="Log blocked SSH" add chain=input protocol=tcp dst-port=2222 src-address-list=ssh_blacklist action=drop
Смотрим логи:
/log print where message~"SSH_BLOCKED"
Экспорт логов в файл:
/log print file=firewall-logs where message~"SSH_BLOCKED" # Файл сохранится в /files
Защита от Port Scanning (сканирования портов)
Проблема: атакующий сканирует порты, ищет уязвимости.
Решение: детектировать port scan и блокировать.
/ip firewall filter # Блокируем известных сканеров портов add chain=input protocol=tcp psd=21,3s,3,1 action=add-src-to-address-list address-list=port_scanner address-list-timeout=1d comment="Detect port scan" add chain=input src-address-list=port_scanner action=drop comment="Drop port scanners"
Параметр psd (Port Scan Detector):
21— порог (21 пакет)3s— за 3 секунды3— минимум на 3 разных порта1— вес пакета
Если с IP за 3 секунды прилетело 21+ пакетов на 3+ разных порта → это сканирование → блокировка.
Блокировка по стране (Firewall фильтр по гео IP)
Проблема: 90% атак идёт из конкретных стран (Китай, Россия для западных серверов; США, Европа для российских).
Решение: блокировать целые страны.
Загрузка IP-списков стран
Источник: ipdeny.com или ip2location.com
Скрипт загрузки списка (например, Китай):
/tool fetch url="https://www.ipdeny.com/ipblocks/data/aggregated/cn-aggregated.zone" mode=https dst-path=cn.rsc
:delay 5s
/import file-name=cn.rsc
/ip firewall address-list
:foreach i in=[find where list="cn"] do={
set $i list=block-china
}
Блокировка трафика из Китая:
/ip firewall filter add chain=input src-address-list=block-china action=drop comment="Block China" add chain=forward src-address-list=block-china action=drop
Внимание: списки большие (тысячи правил) → может нагрузить CPU. Используй только если реально нужно.
Отсечение Bogons (недействительных IP-адресов)
Bogons — это IP-адреса, которые не должны появляться в интернете:
- 0.0.0.0/8 — текущая сеть
- 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 — частные сети
- 127.0.0.0/8 — localhost
- 169.254.0.0/16 — link-local
- 224.0.0.0/4 — multicast
- 240.0.0.0/4 — зарезервировано
Блокируем bogons на WAN-интерфейсе:
/ip firewall address-list add list=bogons address=0.0.0.0/8 add list=bogons address=10.0.0.0/8 add list=bogons address=100.64.0.0/10 add list=bogons address=127.0.0.0/8 add list=bogons address=169.254.0.0/16 add list=bogons address=172.16.0.0/12 add list=bogons address=192.0.0.0/24 add list=bogons address=192.0.2.0/24 add list=bogons address=192.168.0.0/16 add list=bogons address=198.18.0.0/15 add list=bogons address=198.51.100.0/24 add list=bogons address=203.0.113.0/24 add list=bogons address=224.0.0.0/4 add list=bogons address=240.0.0.0/4 /ip firewall filter add chain=input in-interface=ether1 src-address-list=bogons action=drop comment="Drop bogons on WAN" add chain=forward in-interface=ether1 src-address-list=bogons action=drop
Блокировка нежелательного трафика (NetBIOS, mDNS, UPnP)
Проблема: локальные протоколы утекают в интернет, создают уязвимости.
Решение: блокировать на WAN-интерфейсе.
/ip firewall filter # Блокируем NetBIOS (порты 137-139, 445) add chain=input in-interface=ether1 protocol=tcp dst-port=137-139,445 action=drop comment="Drop NetBIOS" add chain=input in-interface=ether1 protocol=udp dst-port=137-139,445 action=drop # Блокируем SMB add chain=input in-interface=ether1 protocol=tcp dst-port=445 action=drop comment="Drop SMB" # Блокируем mDNS (Bonjour) add chain=input in-interface=ether1 protocol=udp dst-port=5353 action=drop comment="Drop mDNS" # Блокируем UPnP add chain=input in-interface=ether1 protocol=udp dst-port=1900 action=drop comment="Drop UPnP" # Блокируем MS-SQL add chain=input in-interface=ether1 protocol=tcp dst-port=1433 action=drop comment="Drop MS-SQL" add chain=input in-interface=ether1 protocol=udp dst-port=1434 action=drop
Stateful Firewall mikrotik: правильная политика
Stateful firewall — отслеживание состояния соединений.
Connection states:
- new — новое соединение
- established — уже установленное (SYN → SYN-ACK → ACK прошёл)
- related — связанное с существующим (например, FTP-data для FTP-control)
- invalid — некорректное (должно быть заблокировано)
Правильная политика (default policy):
/ip firewall filter # INPUT chain (трафик к роутеру) add chain=input connection-state=established,related action=accept comment="Accept established" add chain=input connection-state=invalid action=drop comment="Drop invalid" add chain=input protocol=icmp action=accept comment="Accept ICMP" add chain=input src-address=192.168.88.0/24 action=accept comment="Accept from LAN" add chain=input action=drop comment="Drop all other input" # FORWARD chain (трафик через роутер) add chain=forward connection-state=established,related action=accept add chain=forward connection-state=invalid action=drop add chain=forward src-address=192.168.88.0/24 action=accept comment="Accept from LAN" add chain=forward action=drop comment="Drop all other forward"
Порядок правил критичен:
- Сначала разрешаем established/related (производительность)
- Блокируем invalid (безопасность)
- Разрешаем необходимое (ICMP, LAN)
- Последнее правило — drop all (политика deny by default)
Mangle для DDoS: маркировка и приоритизация
Mangle — маркировка пакетов для последующей обработки.
Применение:
- Приоритизация трафика (VoIP важнее торрентов)
- Детектирование аномалий
- Ограничение скорости для подозрительных IP
Пример: маркировка HTTP flood:
/ip firewall mangle # Маркируем HTTP-запросы с высокой частотой add chain=prerouting protocol=tcp dst-port=80,443 connection-state=new src-address-list=http_flooder action=mark-packet new-packet-mark=http_flood passthrough=no add chain=prerouting protocol=tcp dst-port=80,443 connection-state=new limit=20,5:packet action=accept comment="Allow normal HTTP" add chain=prerouting protocol=tcp dst-port=80,443 connection-state=new action=add-src-to-address-list address-list=http_flooder address-list-timeout=1h comment="Mark HTTP flooder" # В Queue Tree ограничиваем скорость для http_flood /queue tree add name=limit-http-flood packet-mark=http_flood max-limit=128k
Комплексная настройка безопасности RouterOS: готовый конфиг
Полная конфигурация firewall для типового MikroTik:
# ============================================ # MikroTik Firewall: Complete Security Config # ============================================ # 1. Отключаем ненужные сервисы /ip service set telnet disabled=yes set ftp disabled=yes set www disabled=yes set api disabled=yes set api-ssl disabled=yes set ssh port=2222 address=192.168.88.0/24 set winbox port=8080 address=192.168.88.0/24 # 2. Создаём address lists /ip firewall address-list add list=whitelist address=203.0.113.50 comment="Admin IP" add list=bogons address=0.0.0.0/8 add list=bogons address=10.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=172.16.0.0/12 add list=bogons address=192.168.0.0/16 add list=bogons address=224.0.0.0/4 add list=bogons address=240.0.0.0/4 # 3. RAW правила (защита от DDoS) /ip firewall raw add chain=prerouting connection-state=established,related action=notrack comment="NoTrack established" add chain=prerouting connection-state=invalid action=drop comment="Drop invalid" add chain=prerouting protocol=tcp tcp-flags=fin,syn action=drop comment="Drop FIN+SYN" add chain=prerouting protocol=tcp tcp-flags=!fin,!syn,!rst,!ack action=drop comment="Drop XMAS/NULL" # SYN Flood protection add chain=prerouting protocol=tcp tcp-flags=syn connection-state=new src-address-list=syn_flooder action=drop add chain=prerouting protocol=tcp tcp-flags=syn connection-state=new limit=50,5:packet action=accept add chain=prerouting protocol=tcp tcp-flags=syn connection-state=new action=add-src-to-address-list address-list=syn_flooder address-list-timeout=1h # UDP Flood protection add chain=prerouting protocol=udp src-address-list=udp_flooder action=drop add chain=prerouting protocol=udp limit=100,5:packet action=accept add chain=prerouting protocol=udp action=add-src-to-address-list address-list=udp_flooder address-list-timeout=30m # ICMP Flood protection add chain=prerouting protocol=icmp icmp-options=8:0 limit=10,5:packet action=accept add chain=prerouting protocol=icmp icmp-options=8:0 action=drop # 4. Filter правила (основная фильтрация) /ip firewall filter # INPUT chain add chain=input connection-state=established,related action=accept comment="Accept established" add chain=input connection-state=invalid action=drop comment="Drop invalid" add chain=input protocol=icmp action=accept comment="Accept ICMP" add chain=input in-interface=ether1 src-address-list=bogons action=drop comment="Drop bogons" # SSH bruteforce protection add chain=input protocol=tcp dst-port=2222 src-address-list=ssh_whitelist action=accept add chain=input protocol=tcp dst-port=2222 src-address-list=ssh_blacklist action=drop add chain=input protocol=tcp dst-port=2222 connection-state=new src-address-list=ssh_stage3 action=add-src-to-address-list address-list=ssh_blacklist address-list-timeout=1d add chain=input protocol=tcp dst-port=2222 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=2222 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=2222 connection-state=new action=add-src-to-address-list address-list=ssh_stage1 address-list-timeout=1m add chain=input protocol=tcp dst-port=2222 action=accept # Winbox protection (аналогично SSH) add chain=input protocol=tcp dst-port=8080 src-address-list=winbox_whitelist action=accept add chain=input protocol=tcp dst-port=8080 src-address-list=winbox_blacklist action=drop add chain=input protocol=tcp dst-port=8080 connection-state=new src-address-list=winbox_stage3 action=add-src-to-address-list address-list=winbox_blacklist address-list-timeout=1d add chain=input protocol=tcp dst-port=8080 connection-state=new src-address-list=winbox_stage2 action=add-src-to-address-list address-list=winbox_stage3 address-list-timeout=1m add chain=input protocol=tcp dst-port=8080 connection-state=new src-address-list=winbox_stage1 action=add-src-to-address-list address-list=winbox_stage2 address-list-timeout=1m add chain=input protocol=tcp dst-port=8080 connection-state=new action=add-src-to-address-list address-list=winbox_stage1 address-list-timeout=1m add chain=input protocol=tcp dst-port=8080 action=accept # Port scan detection add chain=input protocol=tcp psd=21,3s,3,1 action=add-src-to-address-list address-list=port_scanner address-list-timeout=1d add chain=input src-address-list=port_scanner action=drop # Allow from LAN add chain=input src-address=192.168.88.0/24 action=accept comment="Accept from LAN" # Drop unwanted protocols add chain=input in-interface=ether1 protocol=tcp dst-port=137-139,445 action=drop comment="Drop NetBIOS/SMB" add chain=input in-interface=ether1 protocol=udp dst-port=137-139,445,5353,1900 action=drop # Default deny add chain=input action=drop comment="Drop all other input" # FORWARD chain add chain=forward connection-state=established,related action=accept add chain=forward connection-state=invalid action=drop add chain=forward in-interface=ether1 src-address-list=bogons action=drop add chain=forward src-address=192.168.88.0/24 action=accept comment="Accept from LAN" add chain=forward action=drop comment="Drop all other forward" # 5. NAT (если нужен) /ip firewall nat add chain=srcnat out-interface=ether1 action=masquerade comment="Masquerade to WAN"
Готовые правила firewall mikrotik: экспорт и импорт
Экспорт текущей конфигурации:
/ip firewall filter export file=firewall-backup /ip firewall raw export file=firewall-raw-backup /ip firewall address-list export file=address-lists-backup
Файлы сохранятся в /files, можно скачать через WinBox или FTP.
Импорт конфигурации:
/import file-name=firewall-backup.rsc
Использование RSC файлов для настройки:
- Скачай готовый конфиг (например, с GitHub или форумов MikroTik)
- Загрузи на роутер (через WinBox → Files → Upload)
- Импортируй:
/import firewall-config.rsc
Популярные источники готовых конфигов:
- MikroTik Wiki: help.mikrotik.com
- MikroTik Forum: forum.mikrotik.com
- GitHub: поиск по «mikrotik firewall script»
DDoS Protection Script mikrotik: автоматизация
Скрипт для автоматической очистки address lists (удаление старых записей):
# Удаляем из blacklist IP, которые не атаковали последние 7 дней
:foreach i in=[/ip firewall address-list find where list="ssh_blacklist"] do={
:local created [/ip firewall address-list get $i creation-time]
:if ($created > 7d) do={
/ip firewall address-list remove $i
:log info "Removed old SSH blacklist entry"
}
}
Скрипт для мониторинга CPU под нагрузкой:
# Если CPU > 80% дольше 1 минуты → логируем и отправляем email
:local cpuLoad [/system resource get cpu-load]
:if ($cpuLoad > 80) do={
:delay 1m
:local cpuLoadAgain [/system resource get cpu-load]
:if ($cpuLoadAgain > 80) do={
:log warning "High CPU load: $cpuLoadAgain% - possible DDoS"
/tool e-mail send to="admin@example.com" subject="MikroTik: High CPU" body="CPU load $cpuLoadAgain%"
}
}
Добавить скрипт в scheduler:
/system script add name=monitor-cpu source="..." /system scheduler add name=check-cpu interval=5m on-event=monitor-cpu
Safe Mode mikrotik: как не заблокировать себя
Проблема: добавил правило firewall, заблокировал себя, не могу зайти.
Решение: Safe Mode в Winbox/Terminal.
Как работает Safe Mode:
- Включаешь Safe Mode перед внесением изменений
- Делаешь изменения
- Если потерял связь → через 30 секунд роутер откатывает изменения
- Если всё ок → отключаешь Safe Mode (изменения сохраняются)
Включить Safe Mode (Winbox):
- Сверху: кнопка Safe Mode → клик → включено (красная иконка)
- Делай изменения
- Если связь не потеряна → клик снова → отключить Safe Mode
Включить Safe Mode (Terminal/SSH):
# Комбинация клавиш: Ctrl+X # Появится [Safe Mode taken] # Делай изменения # Ctrl+X снова для отключения
Автоматический откат через 30 секунд при потере связи.
Проверка и диагностика firewall
Чек-лист после настройки:
- Проверяем порядок правил:
/ip firewall filter print # Убедись, что правила в правильном порядке (established → drop invalid → специфичные → default deny)
- Проверяем счётчики (Counters):
/ip firewall filter print stats # Смотрим: bytes, packets # Если правило сработало 0 раз → может быть лишнее или неправильное
- Тестируем доступ снаружи:
- С внешнего IP попробуй подключиться по SSH/Winbox
- Должно быть заблокировано (если не в whitelist)
- Проверяем address lists:
/ip firewall address-list print # Смотрим: есть ли заблокированные IP, сколько записей
- Проверяем connection tracking:
/ip firewall connection print count-only # Должно быть адекватное число (для домашнего роутера < 1000) # Если > 50000 при малом трафике → проблема (возможно, DDoS)
- Смотрим логи:
/log print where message~"firewall" # Ищем блокировки, ошибки
Типовые проблемы:
- «Заблокировал себя» → используй Safe Mode или подключись через MAC-Winbox (работает даже без IP)
- «Правила не работают» → проверь порядок (может быть перекрыто другим правилом выше)
- «CPU на 100%» → проверь conntrack, используй RAW для дропа пакетов
- «Address list переполнен» → установи разумные timeout, очищай старые записи скриптами
Краткий чек-лист: что должно быть настроено
Базовая безопасность MikroTik:
- ✅ Дефолтный пароль изменён
- ✅ Ненужные сервисы отключены (telnet, ftp, www, api)
- ✅ SSH/Winbox на нестандартных портах
- ✅ Доступ к сервисам ограничен по IP (address=…)
- ✅ Firewall настроен (input, forward, output)
- ✅ RAW правила для защиты от DDoS добавлены
- ✅ Политика deny by default (последнее правило = drop)
Защита от DDoS:
- ✅ SYN Flood protection (RAW + limit)
- ✅ UDP Flood protection (RAW + limit)
- ✅ ICMP Flood protection (limit)
- ✅ Invalid packets drop (connection-state=invalid)
- ✅ Bogons blocked (недействительные IP)
- ✅ Connection tracking оптимизирован (notrack для established)
Защита от Bruteforce:
- ✅ SSH bruteforce protection (stage1/2/3 → blacklist)
- ✅ Winbox bruteforce protection
- ✅ Port scan detection (psd)
- ✅ Address lists настроены (whitelist, blacklist)
- ✅ Логирование включено (неудачные попытки входа)
Дополнительная безопасность:
- ✅ Нежелательные протоколы заблокированы (NetBIOS, mDNS, UPnP)
- ✅ Geo-blocking настроен (если нужен)
- ✅ Скрипты автоматизации работают (очистка lists, мониторинг)
- ✅ Backup конфигурации сделан и сохранён
- ✅ Safe Mode протестирован
Сравнительная таблица: методы защиты
| Угроза | Метод защиты | Таблица | Эффективность |
|---|---|---|---|
| SYN Flood | Limit + notrack в RAW | RAW | Высокая |
| UDP Flood | Limit в RAW | RAW | Высокая |
| ICMP Flood | Limit в Filter | Filter | Средняя |
| SSH Bruteforce | Dynamic blacklist (stages) | Filter | Высокая |
| Winbox Bruteforce | Dynamic blacklist + нестандартный порт | Filter | Высокая |
| Port Scan | PSD detection | Filter | Средняя |
| Invalid packets | connection-state=invalid drop | RAW/Filter | Высокая |
| Bogons | Address list + drop | Filter | Средняя |
| Geo-атаки | Country IP lists block | Filter | Средняя (большая нагрузка) |
| HTTP Flood | Mangle + Queue limit | Mangle | Низкая (лучше использовать CDN) |
Резюме
Настройка firewall mikrotik — это не про один клик «защитить меня». Это про слои безопасности и понимание, что блокировать.
Что запомнить:
- RAW — главное оружие против DDoS (работает до conntrack)
- Порядок правил критичен (established → invalid → specific → deny all)
- Dynamic address lists — автоматизация блокировок (bruteforce, flood)
- Отключи лишнее (telnet, ftp, www, api — если не используешь)
- Нестандартные порты снижают атаки на 90%
- Whitelist спасает (свои IP в список, остальных — блокировать)
- Safe Mode обязателен при изменениях (не заблокируй себя)
- Готовые конфиги помогают, но понимай, что делаешь
Защита от ddos mikrotik и mikrotik от bruteforce — это баланс между безопасностью и доступностью. Слишком строго = не зайдёшь сам. Слишком слабо = взломают.
Сохрани эту шпаргалку — она спасёт тебя, когда провайдер позвонит и скажет «ваш роутер участвует в DDoS», или когда увидишь в логах 10000 попыток входа в SSH из Китая.




