Использование AbuseIPDB на Mikrotik
Думаю многим известен сервис AbuseIPDB, который собирает рапорты о злоумышленной активности в Интернете с определённых IP адресов, и затем предоставляет чёрные списки таких адресов всем желающим. Эти списки можно подключить, в том числе, и к Mikrotik для блокировки в фаерволе.
К сожалению, скрипты в RouterOS не могут обрабатывать большие файлы, поэтому я буду использовать хостинг с Python для обработки чёрных списков.

Для начала необходимо зарегистрироваться на сайте https://www.abuseipdb.com, а затем в разделе API своего профиля получить ключ доступа. На бесплатном тарифе действует ограничение на 5 запросов чёрного списка за сутки. Поэтому для надёжности будем запрашивать список каждые 6 часов.
На хостинге создаём файл /usr/update_abusedb.sh для обновления списка IP:
#!/bin/sh curl -G https://api.abuseipdb.com/api/v2/blacklist \ -d confidenceMinimum=80 \ -H "Key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" \ -H "Accept: text/plain" > /var/tmp/abdb.txt /usr/convert_abusedb.py cp /var/tmp/abdb.rsc /home/username/web/example.com/public_html/abdb.rsc
Ключ API вписываем свой, а также указываем свой путь к файлу в последней строке. Этот файл должен копироваться в каталог Web-сервера.
Не забываем дать ему права на выполнение:
chmod +x /usr/update_abusedb.sh
Теперь создаём Python-скрипт для конвертирования списка IP адресов в скрипт микротика: /usr/convert_abusedb.py
#!/usr/bin/python3 f = open("/var/tmp/abdb.txt", "rt") ff = open("/var/tmp/abdb.rsc", "wt") ff.write("/ip firewall address-list remove [/ip firewall address-list find list=ABUSEDB]\n") ff.write("/ip firewall address-list\n") for line in f: if not ":" in line: line = "add address=" + line[0:-1] + " list=ABUSEDB\n" ff.write(line) ff.close() f.close()
Тоже даём права на выполнение:
chmod +x /usr/convert_abusedb.py
Теперь добавляем следующее задание в cron с помощью команды sudo crontab -e
0 0,6,12,18 * * * sudo /usr/update_abusedb.sh
На микротике добавляем в шедулер:
/system scheduler add interval=6h name=abusedb on-event="/tool fetch url=\"http://example.com/abdb.rsc\" mode=http\r\ \n/import abdb.rsc" policy=ftp,read,write,policy,test,sniff \ start-date=dec/30/2021 start-time=17:05:00
И прафило в фаервол:
/ip firewall raw add action=drop chain=prerouting log=yes log-prefix=BL_ABUSE \ src-address-list=ABUSEDB
Теперь, каждые 6 часов с сервиса AbuseIPDB будет скачиваться свежий список нежелательных IP и конвертироваться в скрипт микротика. А микротик будет забирать этот скрипт с Web-сервера и выполнять.