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