Используем списки 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.
Если у вас нет в наличии сервера для формирования вышеуказанных списков, можете воспользоваться моим:)
Списки формируются каждый час, предоставляются как есть, никакие претензии по их составу не принимаются!
На этом все, рад буду вашим комментариям!