Настройка Firewall на MikroTik для защиты от DDoS и Bruteforce: шпаргалка IT-инженера

настройка Firewall на MikroTik для защиты от DDoS и bruteforce

Дефолтный 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"

Как работает:

  1. Если с IP приходит больше 50 SYN/сек → добавляется в список syn_flooder
  2. Все последующие пакеты от этого IP блокируются на 1 час
  3. Легитимные пользователи не пострадают (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"

Как работает:

  1. Первое подключение → добавляется в ssh_stage1 (таймаут 1 минута)
  2. Второе подключение за минуту → ssh_stage2
  3. Третье → ssh_stage3
  4. Четвёртое → 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 SSH
  • syn_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"

Порядок правил критичен:

  1. Сначала разрешаем established/related (производительность)
  2. Блокируем invalid (безопасность)
  3. Разрешаем необходимое (ICMP, LAN)
  4. Последнее правило — 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 файлов для настройки:

  1. Скачай готовый конфиг (например, с GitHub или форумов MikroTik)
  2. Загрузи на роутер (через WinBox → Files → Upload)
  3. Импортируй: /import firewall-config.rsc

Популярные источники готовых конфигов:

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:

  1. Включаешь Safe Mode перед внесением изменений
  2. Делаешь изменения
  3. Если потерял связь → через 30 секунд роутер откатывает изменения
  4. Если всё ок → отключаешь Safe Mode (изменения сохраняются)

Включить Safe Mode (Winbox):

  • Сверху: кнопка Safe Mode → клик → включено (красная иконка)
  • Делай изменения
  • Если связь не потеряна → клик снова → отключить Safe Mode

Включить Safe Mode (Terminal/SSH):

# Комбинация клавиш: Ctrl+X
# Появится [Safe Mode taken]
# Делай изменения
# Ctrl+X снова для отключения

Автоматический откат через 30 секунд при потере связи.

Проверка и диагностика firewall

Чек-лист после настройки:

  1. Проверяем порядок правил:
/ip firewall filter print
# Убедись, что правила в правильном порядке (established → drop invalid → специфичные → default deny)
  1. Проверяем счётчики (Counters):
/ip firewall filter print stats
# Смотрим: bytes, packets
# Если правило сработало 0 раз → может быть лишнее или неправильное
  1. Тестируем доступ снаружи:
  • С внешнего IP попробуй подключиться по SSH/Winbox
  • Должно быть заблокировано (если не в whitelist)
  1. Проверяем address lists:
/ip firewall address-list print
# Смотрим: есть ли заблокированные IP, сколько записей
  1. Проверяем connection tracking:
/ip firewall connection print count-only
# Должно быть адекватное число (для домашнего роутера < 1000)
# Если > 50000 при малом трафике → проблема (возможно, DDoS)
  1. Смотрим логи:
/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 из Китая.

over_dude
Author: over_dude

Поделитесь:

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх