MikroTik: блокировка трафика по черному списку

Используем списки 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 для борьбы с спамом.
Так же она предоставляет списки сетей, которые были замечены в спаме и т.п.

 Описание задачи:

  1. Написать скрипт, который сформирует валидные списка для RouterOS
  2. Задание в Cron для обновления списков
  3. Скрипт в MikrTik для скачивания и обработки подготовленных списков
  4. Создание задания планировщика RouterOS для ежедневного обновления списков
  5. Правило в 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 вы получите два файла:

  1. blocklist_de.rsc
  2. 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

MikroTik Script

В котором мы делаем следующие действия:

  1. Скачиваем список и сохраняем его под именем blocklist_de.rsc
  2. Импортируем его
  3. Удаляем его

Можем запустить его 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

MikroTik Scheduler
On Event — имя скрипта, который надо запускать

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

Mikrotik Firewall
Слева направо:) Prerouting, blocklist.de, drop

Если будет желание, то можете прикрутить по такой же схеме список от spamhaus.org.

Если у вас нет в наличии сервера для формирования вышеуказанных списков, можете воспользоваться моим:)

Списки формируются каждый час, предоставляются как есть, никакие претензии по их составу не принимаются!

Blocklist.de
Spamhause.org

На этом все, рад буду вашим комментариям!

Рейтинг
( 5 оценок, среднее 5 из 5 )
Понравилась статья? Поделиться с друзьями:
Добавить комментарий

:) :D :( :o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.