Скрипт 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"}}

Лига Сисадминов

1.5K поста17.7K подписчика

Добавить пост

Правила сообщества

Мы здесь рады любым постам связанным с рабочими буднями специалистов нашей сферы деятельности.