Защита MikroTik от брутфорса WinBox и SSH через Firewall
Симптомы атак методом перебора паролей (Brute-Force) на RouterOS
При наличии белого IP-адреса и открытых стандартных сервисных портов логи маршрутизатора непрерывно заполняются красными сообщениями об ошибках авторизации, возрастает потребление CPU сервисом management, а системный журнал забит записями:
system,error,critical: login failure for user admin from 185.220.101.5 via winbox
system,error,critical: login failure for user root from 45.142.214.8 via ssh| Сервис | Порт по умолчанию | Характер атаки |
|---|---|---|
| WinBox | 8291 TCP | Бинарный протокол подбора паролей автоматическими сканерами |
| SSH | 22 TCP | Словарный перебор логинов (root, admin, user, test) |
| API / WebFig | 8728 / 80 TCP | Парсинг уязвимостей и инъекция через веб-скрипты |
Конфигурация ступенчатой блокировки (Staged Address Lists)
Механизм реализует логику Fail2ban: при первой неудачной попытке IP попадает в список 1-й стадии, при повторной в течение короткого времени — во 2-ю стадию, при третьей — в черный список с блокировкой на 24 часа или навсегда.
- Создание ступенчатых правил фильтрации для WinBox (порт 8291):
/ip firewall filter # 1. Дроп пакетов от хостов из черного списка add chain=input protocol=tcp dst-port=8291 src-address-list=winbox_blacklist action=drop comment="Drop Winbox Brute Forcers" # 2. Третья попытка - помещение в черный список на 1 сутки add chain=input protocol=tcp dst-port=8291 connection-state=new src-address-list=winbox_stage2 action=add-src-to-address-list address-list=winbox_blacklist address-list-timeout=1d comment="Winbox Stage 3 -> Blacklist 1d" # 3. Вторая попытка - помещение в stage2 на 1 минуту add chain=input protocol=tcp dst-port=8291 connection-state=new src-address-list=winbox_stage1 action=add-src-to-address-list address-list=winbox_stage2 address-list-timeout=1m comment="Winbox Stage 2" # 4. Первая попытка - фиксация нового подключения в stage1 на 1 минуту add chain=input protocol=tcp dst-port=8291 connection-state=new action=add-src-to-address-list address-list=winbox_stage1 address-list-timeout=1m comment="Winbox Stage 1" - Аналогичная защита для порта SSH (порт 22):
/ip firewall filter add chain=input protocol=tcp dst-port=22 src-address-list=ssh_blacklist action=drop comment="Drop SSH Brute" 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_blacklist address-list-timeout=7d 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 - Базовые меры по ужесточению безопасности (Hardening):
- Перенос стандартных портов на нестандартные (например, WinBox на порт
28291):/ip service set winbox port=28291 /ip service set ssh port=2222 - Ограничение списка разрешенных адресов для управления (Available From):
/ip service set winbox address=192.168.88.0/24,10.10.0.0/16 - Отключение неиспользуемых сервисов:
/ip service disable telnet,ftp,www,api,api-ssl
- Перенос стандартных портов на нестандартные (например, WinBox на порт
Важное предупреждение: Помещайте правила с действием action=drop в самый верх цепочки input (выше правил разрешающих общий трафик Established/Related), иначе злоумышленники продолжат генерировать нагрузку на сокеты ОС.
Частые вопросы (FAQ)
Почему скрипт блокирует меня самого, если я один раз ошибся паролем?
В правилах используется флаг connection-state=new. Сам факт создания TCP-сессии считается попыткой. Увеличьте интервал стадий или добавьте свой рабочий IP-адрес в белый список (Whitelist) самым первым правилом: action=accept src-address-list=Management-Allow.
Чем drop отличается от reject в правиле блокировки?
Drop молча отбрасывает пакет, вынуждая сканер ждать таймаута TCP, что замедляет атаку и не тратит ресурсы CPU MikroTik на отправку ответных ICMP-пакетов 'Port Unreachable' (как это делает reject).
Как очистить черный список вручную, если заблокировался нужный IP?
Перейдите в IP -> Firewall -> вкладка Address Lists, найдите свой IP в фильтре и нажмите синий крестик (Удалить).
Спасет ли Port Knocking вместо списков ступенчатой фильтрации?
Port Knocking дает 100% защиту от сканеров, полностью скрывая сервисный порт до ввода 'секретного стука' по портам. Однако ступенчатый фильтр удобнее, если к роутеру регулярно подключаются с разных динамических адресов без спецклиентов.