1683 May 29, 2022, 10:13 a.m.

Mikrotik firewall: защита от DDOS атак и SYN-flood

Задача: реализовать простую систему защиты от DDoS на роутере Mikrotik.

Для того, чтобы выявить DDoS атаку нам необходимо захватывать все новые соединения и перенаправлять их в отдельную цепочку chain=detect-ddos.

Для защиты конкретно от SYN-flood атак правила настраиваются примерно таким же образом, но нужно будет указать protocol=tcp и tcpflag=syn.

/ip firewall mangle
add chain=forward connection-state=new action=jump jump-target=detect-ddos
add chain=forward protocol=tcp tcp-flags=syn connection-state=new action=jump jump-target=detect-ddos

Далее создаем новую цепочку chain=ddos, в которой для каждой пары хостов “SrcIP:DstIP” разрешаем определенное количество соединений. Для избежания блокирования важных хостов, например DNS-сервер с адресом 192.168.0.1, можно добавить правило, которое будет возвращать соединения с сервером в стандартную цепочку.

/ip firewall mangle
add chain=detect-ddos dst-limit=32,42,src-and-dst-addresses/1s action=return
add chain=detect-ddos src-address=192.168.0.1 action=return

ВАЖНО: Здесь стоит обратить внимание на параметр dst-limit. Первое значение rate, второе burst. Для burst задано значение 42 и интервал в 1 секунду - это значит, что в течении первой секунды количество соединений может быть увеличено до 42. Значение burst не должно быть меньше rate, потому-что в этом случае правило будет пропускать в первую секунду меньшее количество соединений и по истечении секунды сработает Rate.

Сейчас нам надо обработать те соединения, которые превысили заданные лимиты - их мы добавим в address-list ‘ddoser’ (атакующий). Тайм-аут жизни списка 10 минут или определите сами для себя.

/ip firewall mangle
add chain=detect-ddos action=add-src-to-address-list address-list=ddoser address-list-timeout=10m

Блокируем соединение с этими хостами:

/ip firewall raw
add action=drop chain=prerouting dst-address-list=ddosed src-address-list=ddoser

Источники

Mikrotik firewall: защита от DDOS атак и SYN-flood