Найти тему
Пикабу

Скрипт Mikrotik Fail2ban

Написал скрипт который ищет в логах неудачные попытки авторизации вида: login faillure for user и добавляет адреса с которых эти попытки сделаны в address-list BlackList. Получается банит ssh, https, http, winbox, dude и т.д. Чтобы забанить эти адреса нужно в firewall добавить правило которое блочит эти адреса, а так же в планировщике задать запуск по расписанию, конкретно для этого скрипта нужно запускать каждые 6 минут /ip firewall raw add action=drop chain=prerouting comment="BlackList Drop All" src-address-list=BlackList текст скрипта: global attempt 3: global temp: global ipaddr: global LogErr: global string: global signA " via";: global signB "from ";: set LogErr [/log find message~"login failure for user. time> ([/system clock get time] - 6m)]: foreach i in=$LogErr do={: set string [: pick [/log get $i message] 0 ([: len [/log get $i message]])]: set ipaddr [: pick $string ([: find $string $signB] + 5) ($string [: find $string $signA])]: if ([: len [/ip firewall address-list find address=$ipaddr]] =0) do { /ip firewall address-list add list=AttemptBruteforce1 address=[: toip $ipaddr] timeout=30m: log warning "attempt_bruteforce_1 $ipaddr"}: if ([: len [/ip firewall address-list find address=$ipaddr]] >0 && [: len [/ip firewall address-list find address=$ipaddr]] <$attempt) do {: set temp ([: len [/ip firewall address-list find address=$ipaddr]] +1) /ip firewall address-list add list="AttemptBruteforce$temp" address=[: toip $ipaddr] timeout=30m: log warning "attempt_bruteforce_ $temp $ipaddr"}: if ([: len [/ip firewall address-list find address=$ipaddr]] =$attempt) do { /ip firewall address-list add list=BlackList address=[: toip $ipaddr]: log warning "Blocked_bruteforce_ip $ipaddr"}}.

Пост автора kirimayro.

Читать комментарии на Пикабу.