Case Study: Настраиваем Port Knocking на MikroTik для усиленной безопасности
Опубликовано 16.07.2025
В мире, где кибератаки становятся всё изощрённее, защита удалённого доступа к серверам и сетевому оборудованию приобретает первостепенное значение. Стандартное открытие портов для SSH, RDP или Web-интерфейсов делает их мишенью для постоянных сканирований и брутфорса.
Сегодня мы рассмотрим мощную, но малоизвестную технику, которая значительно повышает безопасность вашего MikroTik (и не только): Port Knocking. Это не просто “закрытие портов”, а умная система, которая делает ваши сервисы невидимыми для большинства сканеров и ботов.
Что такое Port Knocking?
Port Knocking — это метод аутентификации, при котором удалённый пользователь должен “постучать” в заранее определённую последовательность закрытых портов (например, 1234 → 5678 → 9012) в нужном порядке. Только после этого ему будет открыт доступ к нужному сервису (например, SSH на 22 порту).
До выполнения правильной последовательности порты остаются закрытыми и невидимыми — подобно тайной двери, которая появляется только для тех, кто знает, как в неё постучать.
Зачем нужен Port Knocking?
- 🔒 Невидимость сервисов — SSH, Winbox, Web-интерфейсы не будут видны при обычном сканировании.
- 🛡 Защита от брутфорса и сканеров — большинство ботов даже не узнают, что порты существуют.
- 🔑 Дополнительный уровень аутентификации — “секретная последовательность” нужна даже при знании пароля.
- 🌐 Упрощённая альтернатива VPN — не заменяет VPN, но может заменить его в точечных случаях доступа.
Настройка Port Knocking на MikroTik (RouterOS)
Цель: открыть доступ к SSH (22) и Winbox (8291) только после последовательного обращения к портам 1234 → 5678 → 9012
.
После правильного “стука” IP-адрес отправителя попадает в список, и нужные порты открываются на 60 секунд.
1. Подготовка
Убедитесь, что у вас есть доступ к MikroTik:
- через Winbox (по MAC-адресу),
- или по локальной консоли (например, через serial или внутри локальной сети).
2. Настройка Firewall: списки адресов
Создадим списки для отслеживания “стуков”:
/ip firewall address-list
add list=knock_1 address=0.0.0.0/32 disabled=yes comment="Init list for knock 1"
add list=knock_2 address=0.0.0.0/32 disabled=yes comment="Init list for knock 2"
add list=knock_open_port address=0.0.0.0/32 disabled=yes comment="Knock success list"
❗ Это фиктивные записи, чтобы списки “существовали” — MikroTik не применит правила к несуществующему списку.
3. Правила Port Knocking
/ip firewall filter
# Шаг 1: Первый стук
add chain=input protocol=tcp dst-port=1234 action=add-src-to-address-list \
address-list=knock_1 address-list-timeout=5s comment="Knock 1"
# Шаг 2: Второй стук, если был первый
add chain=input protocol=tcp dst-port=5678 src-address-list=knock_1 \
action=add-src-to-address-list address-list=knock_2 address-list-timeout=5s comment="Knock 2"
# Шаг 3: Третий стук, если был второй — открываем доступ
add chain=input protocol=tcp dst-port=9012 src-address-list=knock_2 \
action=add-src-to-address-list address-list=knock_open_port address-list-timeout=1m comment="Knock 3 (grant access)"
# Drop всех попыток доступа к knock-портам
add chain=input protocol=tcp dst-port=1234,5678,9012 action=drop comment="Drop knock ports"
4. Открытие SSH и Winbox
# Разрешаем доступ, если IP в списке knock_open_port
add chain=input protocol=tcp dst-port=22,8291 src-address-list=knock_open_port action=accept comment="Allow knocked IPs"
# Блокируем доступ для всех остальных
add chain=input protocol=tcp dst-port=22,8291 action=drop comment="Block SSH/Winbox for others"
# (Опционально) Общий drop в конце input-цепочки
# add chain=input action=drop comment="Drop all other input"
🔥 Важно: порядок правил критичен — разрешающие и knock-правила должны идти выше, чем общее
drop
.
5. Как “стучать”?
💻 С помощью netcat
:
# Knock 1
nc -nvz ВАШ_IP_MIKROTIK 1234 -w 1
# Knock 2
nc -nvz ВАШ_IP_MIKROTIK 5678 -w 1
# Knock 3
nc -nvz ВАШ_IP_MIKROTIK 9012 -w 1
-z
: только SYN, без установления TCP-сессии-w 1
: быстрый таймаут для ускорения стукаВАШ_IP_MIKROTIK
: публичный IP-адрес MikroTik
🧪 Альтернатива для macOS (если nc
не работает корректно):
nmap -Pn -p 1234,5678,9012 ВАШ_IP_MIKROTIK --data-length 0
6. Тестирование
- Убедитесь, что SSH и Winbox заблокированы по умолчанию.
- Попробуйте подключиться — будет отказ.
- Выполните последовательность “стуков”.
- Попробуйте подключиться снова — доступ будет разрешён на 60 секунд.
- После истечения тайм-аута снова будет отказ.
Проверить список можно:
/ip firewall address-list print
Рекомендации и Best Practices
- ✅ TCP SYN — MikroTik добавляет IP в список по SYN-пакету, не по полной сессии.
- ✅ Не используйте очевидные последовательности: 1, 2, 3 или 2222 → 3333 → 4444.
- ✅ Повышайте энтропию: используйте 4-5 шагов и смешанные TCP/UDP.
- ✅ Защитите клиента — не храните последовательность в явном виде.
- ✅ Автоматизируйте “стук” — с помощью bash-скрипта или alias.
- ✅ Комбинируйте с другими мерами: GeoIP, fail2ban, VPN, ограничение IP.
Ограничения Port Knocking
Port Knocking — не панацея, а дополнение:
- 🔸 Не защищает от 0-day в SSH/Winbox
- 🔸 Не предотвращает MITM (если нет TLS/проверки ключей)
- 🔸 Не помогает при DDoS (адреса всё равно известны)
- 🔸 Неудобно в условиях NAT или нестабильных сетей
- 🔸 Ошибки в тайминге = фрустрация пользователей
Вывод
Port Knocking на MikroTik — это элегантный способ скрыть сервисы и усложнить атаку, не прибегая к сложным VPN или внешним системам авторизации.
Он не заменяет базовую безопасность, но делает вас менее заметной целью и повышает общую стойкость системы.
Используйте с умом, комбинируйте с другими практиками — и вы на голову выше большинства админов.
Похожие посты
055 | Зачем нам централизованное логирование? Разбираемся с хаосом логов
17.07.2025
049 | UniFi: Когда стиль, простота и централизованное управление встречаются в сетевом оборудовании
11.07.2025
048 | Mikrotik: Что это за роутер и почему он удобен для малого бизнеса?
10.07.2025
045 | FastPanel: Мощная и удобная панель для эффективного управления сервером
07.07.2025