Брутфорсят VPN сервер? Зомби-клиенты бесконечно пытаются подключиться, не зная, что их учётку уже давно снесли? Я не нашёл готового решения для Mikrotik, по этому, пришлось обратиться за помощью к ChatGPT. Через несколько попыток и ручной отладки получился рабочий вариант.
Собственно, добавляем вот этот скрипт в system > scripts:
:local threshold 3;
:local interval 60;
:local currentTime [:tostr [/system clock get time]];
:local count [/log find where (message~"authentication failed") && (message~"user") && (time>=($currentTime-$interval))];
:foreach log in=$count do={
:local logMessage [/log get $log message];
:local srcAddr [:pick $logMessage 1 [:find $logMessage ">"]];
:local srcUser [:pick $logMessage [:find $logMessage "user"] [:len $logMessage]];
:local countAddr [/log find where (message~"authentication failed") && (message~$srcAddr) && (message~$srcUser)];
:if ([:len $countAddr] >= $threshold) do={
/ip firewall address-list add list=ban-l2tp address=$srcAddr timeout=1h;
}
}
Скрипт будет запускаться планировщиком, искать в логах неудачные попытки авторизации и добавлять соурс адрес в назначенный список. timeout=1h можно убрать, в таком случае, адрес не исчезнет из списка автоматически.
Идём в system > scheduler и добавляем задачу:
Ну, и конечно же, добавляем в фильтр правило, которое, например, запрещает весь трафик с адресов из собранного списка.
Проверено на l2tp с Routeros 7.14