Защита от атак SYN, UDP и ICMP Flood на межсетевом экране MikroTik RouterOS
- Загрузка процессора роутера MikroTik (CPU) подскакивает до 100% при атаке.
- Таблица Connection Tracking переполняется (
table full, dropping packet). - Недоступность сетевых сервисов для клиентов из-за высокой задержки и потерь пакетов.
- Всплеск входящего UDP-трафика на портах 53 (DNS) или 123 (NTP) с поддельными Source IP (Amplification Attack).
1. Архитектурный подход: защита через таблицу RAW
При DoS-атаках миллионы пакетов мгновенно исчерпывают память и процессорное время ядра. Обработка флуда в таблице RAW позволяет отбросить вредоносные пакеты до создания записей в Connection Tracking.
2. Защита от SYN Flood (TCP Half-Open)
/ip firewall raw
# 1. Отбрасывать TCP-пакеты с недопустимыми комбинациями флагов (Bogus TCP)
add chain=prerouting protocol=tcp tcp-flags=fin,syn action=drop comment="Drop SYN-FIN"
add chain=prerouting protocol=tcp tcp-flags=syn,rst action=drop comment="Drop SYN-RST"
add chain=prerouting protocol=tcp tcp-flags=!fin,!syn,!rst,!ack action=drop comment="Drop NULL Scan"
# 2. Ограничение входящих новых TCP SYN-запросов на хост
add chain=prerouting in-interface-list=WAN protocol=tcp tcp-flags=syn connection-state=new \
limit=200,50:packet action=accept comment="Allow legitimate SYN rate"
add chain=prerouting in-interface-list=WAN protocol=tcp tcp-flags=syn connection-state=new \
action=drop comment="Drop excess SYN Flood"3. Защита от UDP Flood и Reflection-атак
/ip firewall raw
# Блокировка попыток использовать роутер как DNS-рекурсор извне
add chain=prerouting in-interface-list=WAN protocol=udp dst-port=53 action=drop comment="Drop WAN DNS Query"
add chain=prerouting in-interface-list=WAN protocol=tcp dst-port=53 action=drop comment="Drop WAN DNS TCP"
# Ограничение общего UDP флуда
add chain=prerouting in-interface-list=WAN protocol=udp limit=2000,500:packet action=accept comment="Accept Normal UDP"
add chain=prerouting in-interface-list=WAN protocol=udp action=drop comment="Drop UDP Flood"4. Защита от ICMP Flood (Smurf / Ping of Death)
/ip firewall filter
# Ограничение частоты и размера эхо-запросов
add chain=input protocol=icmp icmp-options=8:0 limit=20,5:packet action=accept comment="Rate-limited ICMP Echo"
add chain=input protocol=icmp icmp-options=8:0 action=drop comment="Drop ICMP Ping Flood"
# Разрешение служебных сообщений MTU Path Discovery
add chain=input protocol=icmp icmp-options=3:4 action=accept comment="Allow MTU Fragmentation Needed" Частые вопросы (FAQ)
Почему правила защиты от DoS нужно помещать в /ip firewall raw, а не в filter?
Таблица filter проверяет пакеты ПОСЛЕ модуля Connection Tracking. При миллионном флуде Connection Tracking переполнит оперативную память и положит процессор роутера еще до того, как сработает правило filter drop. RAW работает ДО Connection Tracking.
Что означает параметр limit=200,50:packet в RouterOS?
Параметр limit=200,50 означает среднее ограничение в 200 пакетов в секунду с возможностью кратковременного пакетного всплеска (burst) до 50 пакетов сверх лимита.
Как не заблокировать легитный трафик DNS, если MikroTik использует внешние DNS-серверы?
Фильтруйте входящие запросы только по направлению к роутеру (dst-port=53 на входящем WAN интерфейсе). Ответы от публичных серверов приходят с src-port=53 и разрешаются правилами established,related.
Зачем разрешать ICMP type 3 code 4?
Это сообщение Fragmentation Needed and DF Set. Без него ломается механизм Path MTU Discovery (PMTUD), и пользователи не смогут открывать сайты с пакетами, превышающими MTU туннеля (VPN/PPPoE).