183

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

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

2.3K поста18.8K подписчиков

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

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

Вы смотрите срез комментариев. Показать все
27
Автор поста оценил этот комментарий

Я может глупость скажу, но не проще ли сделать вайтлист?

раскрыть ветку (8)
9
Автор поста оценил этот комментарий

Проще

раскрыть ветку (6)
0
Автор поста оценил этот комментарий

Так, и для чего тогда скрипт в данной ситуации?

Или у вас какой то эндпоинт для масс?

раскрыть ветку (5)
1
Автор поста оценил этот комментарий

у меня большая организация и соответсвенно много микротиков, white-list надо иногда чистить и дополнять, на каждый микротик заходить и делать это руками нет времени. Если скрипт будет просто банить брутфорсеров-будет красота.

раскрыть ветку (3)
1
Автор поста оценил этот комментарий

Если большая организация, то время применять оркестраторы, которые это будут делать за вас. Самый популярный и легкий в освоении - Ansible.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Не нужны тут оркестраторы. Тут нужно подтянуть знания по микротикам.

0
Автор поста оценил этот комментарий

/ip firewall address-list - параметр timeout (help.mikrotik.com/docs/display/ROS/Address-lists)
/ip firewall filter - action add-src-to-address-list (help.mikrotik.com/docs/display/ROS/Filter)

0
Автор поста оценил этот комментарий

Мир делится на 2 части....

0
Автор поста оценил этот комментарий
даже не вайт-лист, а просто запрет админить с внешнего интерфейса.
сделать либо vpn для админа, либо полноценный доступ oob
Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку