Используем списки blocklist.de и spamhaus.org для блокировки нежелательного трафика в MikroTik
Пару лет назад использовал статью для настройки блокировки в MikroTik по спискам.
Список предоставлял сайт squidblacklist.org.
На днях проводил ревизию и обнаружил, что данные больше не поступают с данного сайта.
В facebook узнал, что создатель squidblacklist.org Бенджамин Николс умер 4 марта 2019 года в возрасте 40 лет:(
В данный момент squidblacklist.org не доступен.
squidblacklist.org формировал списки из данных blocklist.de, spamhaus.org и dshield.org.
В итоге я решил формировать списки сам и поделиться ими с общественностью.
В рамках данного блога я уже рассматривал работу со списками.
Будем использовать списки двух поставщиков:
1) blocklist.de
формирует список из spamcop.net, но дополнительно его консолидирует с белыми списками от www.dnswl.org, www.spamhauswhitelist.org
И черным списком от torproject.org.
На сайте проекта есть разбиение списка по темам.
Например можно использовать список адресов которые были замечены в попытках подключения по протоколам ssh, imap и других.
И есть список All, который включает все адреса.
Список обновляется каждые 30 минут.
2) spamhaus.org
Так же как blocklist.de является некоммерческой организацией.
Которая предоставляет свои DNSBL для борьбы с спамом.
Так же она предоставляет списки сетей, которые были замечены в спаме и т.п.
Описание задачи:
- Написать скрипт, который сформирует валидные списка для RouterOS
- Задание в Cron для обновления списков
- Скрипт в MikrTik для скачивания и обработки подготовленных списков
- Создание задания планировщика RouterOS для ежедневного обновления списков
- Правило в FireWall Mikrotik для блокировки трафика по спискам
В рамках задачи у вас должен быть настроен web-сервер для отдачи списков вашим роутерам.
Создадим скрипт формирования списков для Mikrotik
vi /home/admins/scripts/mikrotik_bl.sh
#!/bin/sh #Выходная директория, у вас она будет другой! outputdir=/var/www/marvins.ru/mikrotik_bl tempdir=/tmp datenow=$(date); echo "# Generated by Vladimir marvins.ru on $datenow" > $tempdir/blocklist_de.rsc echo "/ip firewall address-list" >> $tempdir/blocklist_de.rsc echo "remove [find where list=blocklist.de]" >> $tempdir/blocklist_de.rsc wget -q -O - https://lists.blocklist.de/lists/all.txt| grep -v ":" | awk '{ print "add list=blocklist.de address="$1"";}' >> $tempdir/blocklist_de.rsc echo "/log info \"List create: $datenow\"" >> $tempdir/blocklist_de.rsc mv $tempdir/blocklist_de.rsc $outputdir/blocklist_de.rsc echo "# Generated by Vladimir marvins.ru on $datenow" > $tempdir/spamhaus.rsc echo "/ip firewall address-list" >> $tempdir/spamhaus.rsc echo "remove [find where list=spamhaus]" >> $tempdir/spamhaus.rsc wget -q -O - http://www.spamhaus.org/drop/drop.lasso | awk --posix '/[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\// { print "add list=spamhaus address="$1"";}' >> $tempdir/spamhaus.rsc echo "/log info \"List create: $datenow\"" >> $tempdir/spamhaus.rsc mv $tempdir/spamhaus.rsc $outputdir/spamhaus.rsc
Делаем скрипт исполняемым:
chmod +x /home/admins/scripts/mikrotik_bl.sh
Если переписали все верно, то после запуска скрипта в директории $outputdir вы получите два файла:
- blocklist_de.rsc
- spamhaus.rsc
Которые в моем случае доступны по адресам:
Добавим в cron (обновлять списки каждые 12 часов):
sudo crontab -e 5 */12 * * * /home/admins/scripts/mikrotik_bl.sh >/dev/null 2>&1
Настройки MikroTik
Мы рассмотрим настройку роутера для работы с одним списком.
После вы сможете сами подключить список от spamhaus.
Создадим скрипт c именем blocklist_de для скачивания списка и импорта его:
Из консоли:
/system script add dont-require-permissions=no name=blocklist_de owner=admin policy=\ ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/to\ ol fetch url=\"https://marvins.ru/mikrotik_bl/blocklist_de.rsc\" dst-path=bl\ ocklist_de.rsc\r\ \n:import blocklist_de.rsc\r\ \n/file remove blocklist_de.rsc"
owner — установите свой (имя под которым вы работаете в winbox)
В графическом режиме:
System > Scripts
/tool fetch url="https://marvins.ru/mikrotik_bl/blocklist_de.rsc" dst-path=blocklist_de.rsc :import blocklist_de.rsc /file remove blocklist_de.rsc
В котором мы делаем следующие действия:
- Скачиваем список и сохраняем его под именем blocklist_de.rsc
- Импортируем его
- Удаляем его
Можем запустить его Run Script
Создадим задание в планировщике
В консоли:
/system scheduler add interval=12h name=blocklist_de on-event=blocklist_de policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon start-date=sep/08/2020 start-time=00:10:00
Или в графическом режиме:
System > Scheduler

Скрипт blocklist_de будет запускаться с помощью планировщика каждые 12 часов начиная с 00:10
Правило FireWall
Наш список имеет имя blocklist.de (list=blocklist.de).
Нам нужно создать правило отбрасывающее трафик при обращении хостов находящимся в данном списке.
В консоли:
/ip firewall raw add action=drop chain=prerouting comment="blocklist.de" log-prefix=\ blocklist.de src-address-list=blocklist.de
В графическом режиме:
IP > Firewall > RAW

Если будет желание, то можете прикрутить по такой же схеме список от spamhaus.org.
Если у вас нет в наличии сервера для формирования вышеуказанных списков, можете воспользоваться моим:)
Списки формируются каждый час, предоставляются как есть, никакие претензии по их составу не принимаются!
На этом все, рад буду вашим комментариям!
Почему по вашей ссылке на днях перестала формироваться обнова по https://marvins.ru/mikrotik_bl/blocklist_de.rsc
по спамхаусу норм
$ curl -v https://lists.blocklist.de/lists/all.txt
* Host lists.blocklist.de:443 was resolved.
* IPv6: 2a01:4f8:192:6414::2
* IPv4: 144.76.114.3
* Trying 144.76.114.3:443…
* Trying [2a01:4f8:192:6414::2]:443…
* Immediate connect fail for 2a01:4f8:192:6414::2: Network is unreachable
* connect to 144.76.114.3 port 443 from 10.10.10.10 port 51012 failed: Connection timed out
* Failed to connect to lists.blocklist.de port 443 after 134913 ms: Couldn’t connect to server
* Closing connection
curl: (28) Failed to connect to lists.blocklist.de port 443 after 134913 ms: Couldn’t connect to server
Исправил