Тонкости настройки фаервола в MikroTik - практическое руководство
Фаерволл (брандмауэр) в роутерах MikroTik — один из самых мощных и гибких инструментов для обеспечения безопасности сети. Несмотря на простой интерфейс, правильная настройка требует понимания логики обработки трафика, приоритетов правил и особенностей работы фильтрации на разных уровнях. В этой статье мы разберём ключевые тонкости настройки фаервола в MikroTik, чтобы помочь вам построить защищённую и эффективную сеть.
1. Архитектура фаервола в MikroTik
MikroTik использует систему Netfilter, похожую на ту, что применяется в Linux. Фаервол разделён на несколько цепочек (chains), каждая из которых обрабатывает пакеты на определённом этапе:
- input — трафик, направленный на сам роутер (SSH, WinBox, WebFig и т.д.)
- forward — трафик, проходящий через роутер (между LAN и WAN)
- output — трафик, генерируемый самим роутером
Также есть цепочки для NAT (nat) и mangle, но в рамках статьи сосредоточимся на фильтрации.
2. Основные принципы построения правил
Приоритет правил
Правила обрабатываются сверху вниз. Как только пакет соответствует какому-либо правилу — дальнейшие правила в цепочке игнорируются. Поэтому важно:
- Размещать более конкретные правила выше — например, разрешение доступа к SSH с определённого IP.
- Завершать цепочку блокирующим правилом — например, drop all.
Использование действия (action)
Наиболее распространённые действия:
- accept
— разрешить трафик
- drop
— отбросить без уведомления
- reject
— отклонить с отправкой ICMP-сообщения
Рекомендация: используйте drop
для внешних интерфейсов — это усложняет сканирование сети.
3. Тонкости настройки: что часто упускают
3.1. Защита самого роутера (input chain)
Многие администраторы защищают только трафик между сетями (forward), забывая про input. Это критично: если роутер доступен извне, его порты (22, 80, 8291 и др.) могут стать мишенью.
Пример безопасной настройки input:
/ip firewall filter
add chain=input action=accept protocol=icmp comment="Allow ICMP"
add chain=input action=accept connection-state=established,related comment="Allow established"
add chain=input action=accept src-address=192.168.1.0/24 protocol=tcp dst-port=22 comment="Allow SSH from LAN"
add chain=input action=accept src-address=192.168.1.100 protocol=tcp dst-port=8291 comment="WinBox from trusted IP"
add chain=input action=drop in-interface=ether1 comment="Drop all from WAN"
Важно: никогда не оставляйте SSH, WinBox или WebFig открытыми для всех (0.0.0.0/0).
3.2. Stateful-фильтрация
MikroTik поддерживает отслеживание состояния соединений (connection-state
). Это позволяет автоматически разрешать ответный трафик без дополнительных правил.
Ключевые состояния:
- established
— соединение уже установлено
- related
— связанный трафик (например, FTP-данные)
- invalid
— повреждённые или несвязанные пакеты
Рекомендация: всегда добавляйте правило accept established,related
в начало цепочек input и forward.
3.3. Обработка недопустимого трафика
Пакеты со статусом invalid
могут быть признаком атаки или сбоев. Их лучше отбрасывать:
add chain=forward action=drop connection-state=invalid comment="Drop invalid"
add chain=input action=drop connection-state=invalid
3.4. Защита от сканирования и атак
Используйте механизм connection tracking и address lists для блокировки подозрительных IP.
Пример: блокировка IP после нескольких неудачных попыток подключения к SSH
/ip firewall filter
add chain=input protocol=tcp dst-port=22 src-address-list=ssh_blacklist action=drop comment="SSH brute force"
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_blacklist address-list-timeout=1d comment="Add to blacklist"
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=5m
add chain=input protocol=tcp dst-port=22 connection-state=new action=add-src-to-address-list address-list=ssh_stage2 address-list-timeout=5m
3.5. Фильтрация по интерфейсу
Используйте in-interface
и out-interface
для точного определения направления трафика. Это особенно важно в сложных топологиях (VLAN, мосты, PPPoE).
Пример: запретить доступ из гостевой сети в основную
add chain=forward src-address=192.168.2.0/24 dst-address=192.168.1.0/24 action=drop comment="Block guest to LAN"
3.6. Проблемы с скоростью и производительностью
Слишком много правил в forward-цепочке может снижать скорость маршрутизации. Чтобы минимизировать влияние:
- Упрощайте условия (избегайте сложных регулярных выражений)
- Используйте
quick=yes
(в RouterOS 7) для остановки обработки после совпадения - Помещайте самые частые правила выше
4. Распространённые ошибки
Ошибка | Последствие |
---|---|
Отсутствие правила established,related |
Отсекается легитимный ответный трафик |
Открытый SSH/WinBox на WAN | Риск брутфорса и взлома |
Неправильный порядок правил | Более раннее правило блокирует нужный трафик |
Использование reject вместо drop |
Упрощает разведку сети |
Нет логирования | Невозможно отследить атаки |
5. Логирование и мониторинг
Включайте логирование для критичных правил:
add chain=input action=drop in-interface=ether1 log=yes log-prefix="DROP-WAN"
Затем просматривайте логи:
/log print where message~"DROP-WAN"
Совет: не включайте логирование для всех правил — это может перегрузить систему.
6. Пример базовой конфигурации фаервола
# Разрешить established и related
/ip firewall filter add chain=forward connection-state=established,related action=accept
/ip firewall filter add chain=input connection-state=established,related action=accept
# Блокировать invalid
/ip firewall filter add chain=forward connection-state=invalid action=drop
/ip firewall filter add chain=input connection-state=invalid action=drop
# Защита роутера: только LAN и доверенные IP
/ip firewall filter add chain=input src-address=192.168.1.0/24 protocol=tcp dst-port=22 action=accept
/ip firewall filter add chain=input protocol=icmp action=accept
# Блокировка всего входящего с WAN
/ip firewall filter add chain=input in-interface=ether1 action=drop
# Блокировка гостевой сети
/ip firewall filter add chain=forward src-address=192.168.2.0/24 dst-address=192.168.1.0/24 action=drop
# Блокировка агрессоров (SSH)
# ... (правила с address-list выше)
# Запретить всё остальное в forward (на всякий случай)
/ip firewall filter add chain=forward action=drop
Заключение
Настройка фаервола в MikroTik — это не просто «закрыть порты», а продуманная система правил, учитывающая безопасность, удобство и производительность. Правильное использование connection tracking, address lists, приоритетов и интерфейсов позволяет построить надёжный барьер против внешних угроз и внутренних утечек.
Главные советы: - Начинайте с базовой защиты роутера (input) - Всегда разрешайте established и related - Используйте address lists для динамической блокировки - Логируйте, но умеренно - Регулярно аудируйте правила
Помните: безопасность — это процесс, а не разовое действие. Регулярно проверяйте и обновляйте конфигурацию фаервола в соответствии с изменениями в сети.
Примечание: Примеры приведены для RouterOS v6. Для RouterOS v7 доступны дополнительные возможности (например, quick=yes
, улучшенная обработка пакетов).