вторник, 6 сентября 2016 г.

Как оградить MikroTik от хакеров и спамеров.

  Думая о том, как защитить маршрутизатор от внешних вторжений пришла в голову мысль о том, что не только один я сталкиваюсь с этой проблемой. Поэтому я начал искать в интернете сервисы, которые помогают компаниям с выявлением угроз. В интернете есть ряд сайтов, которые отслеживают злоумышленников, спамеров, брутфорсеров и заносят их IP в некие "черные" списки. Происходит это автоматически, и частота обновления этих списков довольно частая (часы, сутки). Почему бы не воспользоваться этими списками для составления адрес-листов в RouterOS.
  Фактически реализовать это не сложно. Списки в основном представлены в виде txt файлов, автоматически загрузив которые, через "/tool fetch", можно с ними оперировать. Для начала извлечь IP в address-list немного поработав над обработкой структуры файла (а она для каждого сервиса разная). Этим я решил и заняться, вопрос решаем... Но, чисто случайно, наткнулся на сайт joshaven.com, где Joshaven Potter уже это все реализовал, и любезно поделился со всеми. Мало того, даже создал собственную платформу для преобразования IP-листов, и дал доступ к этим спискам. За что ему огромное человеческое спасибо!

  Итак, разберем что-же нам предлагают. Предлагается вариант с добавлением "черных IP" с сервисов:

  • OpenBL - сервис, ранее известен как SSH blacklist, выявляет различные виды угроз в Интернет. Сервис содержит ряд хостов, в которых мониторятся разные порты: 21 (FTP), 22 (SSH), 23 (TELNET), 25 (SMTP), 110 (POP3), 143 (IMAP), 587 (Submission), 993 (IMAPS) и 995 (POP3S) на наличие брутфорс атак, а также анализирует запросы на порты 80 (HTTP) и 443 (HTTPS) для "левых", явно представляющих угрозу, подключений (атака на PHPMyAdmin и другие веб-сервисы).
  • Spamhaus - сервис предоставляющий списки адресов, которые используются известными спамерами и хакер-группировками. Так же сюда попадают списки адресов и автономных систем которых "хакнули" и с помощью их распространяют вредоносное ПО или производят атаки.
  • dshield.org - сервис предоставляет топ 20 IP класса C (/24) подсетей, с которых были атаки, за последние 3-е суток.
  • malc0de.com - блэклист обновляется ежедневно. Туда заносятся опасные IP, с которых были документированные атаки (или распространение вредоносного ПО) за последние 30 дней.

Далее нужно добавить эти IP в drop правило Mikrotik. Создаем правило:
/ip firewall filter
add action=drop chain=input comment="Drop new connections from blacklisted IP's to this router" connection-state=new in-interface=ether1-niknet src-address-list=blacklist
  Как видим все соединения с адрес-листа blacklist - блокируем. Joshaven Potter взял на себя сортировку IP в нужный нам формат, нам же остается только скачать готовый скрипт в формате .rsc с его сайта. Данные блэк-листов на сайте обновляются ежедневно. Файл-скрипт имеет вид:

OpenBL

  Скрипт для вставки в терминал:
# Script which will download the OpenBL list as a text file & Script which will Remove old OpenBL records and add new one
/system script add name="DownloadOpenBL_ReplaceOpenBL" source={
/tool fetch url="http://joshaven.com/openbl.rsc" mode=http;
:log info "Downloaded openbl.rsc from Joshaven.com";
:delay 40;
/ip firewall address-list remove [find where comment="OpenBL"];
/import file-name=openbl.rsc;
:log info "Removed old OpenBL records and imported new list";
}
  Правило в Scheduler.
/system scheduler add comment="Download openbl list_Apply openbl List" interval=3d name="Download and Apply OpenBL_List" on-event=DownloadOpenBL_ReplaceOpenBL start-date=jan/01/1970 start-time=00:35:04
  Фактически мы создаем скрипт, который закачает файл с сайта joshaven.com со списком IP, и добавит или заменит его в адрес-листе blacklist с комментарием каждой записи "OpenBL". И этот скрипт "обновления записей" поместим на выполнение каждые 3 дня.

Spamhaus

  Скрипт
# Script which will download the drop list as a text file & Script which will Remove old Spamhaus list and add new one
/system script add name="DownloadSpamhaus_ReplaceSpamhaus" source={
/tool fetch url="http://joshaven.com/spamhaus.rsc" mode=http;
:log info "Downloaded spamhaus.rsc from Joshaven.com";
:delay 40;
/ip firewall address-list remove [find where comment="SpamHaus"];
/import file-name=spamhaus.rsc;
:log info "Removed old Spamhaus records and imported new list";
}
  Scheduler
# Schedule the download and application of the spamhaus list
/system scheduler add comment="Download spamhaus list_Apply spamhaus List" interval=3d name="DownloadSpamhausList and ApplySpamhausList" on-event=DownloadSpamhaus_ReplaceSpamhaus start-date=jan/01/1970 start-time=00:40:04

dshield.org

  Скрипт

# Script which will download the drop list as a text file & Script which will Remove old dshield list and add new one
/system script add name="Download_dshield_Replace_dshield" source={
/tool fetch url="http://joshaven.com/dshield.rsc" mode=http;
:log info "Downloaded dshield.rsc from Joshaven.com";
:delay 40;
/ip firewall address-list remove [find where comment="DShield"];
/import file-name=dshield.rsc;
:log info "Removed old dshield records and imported new list";
}
  Scheduler
/system scheduler add comment="DownloadDShieldList_InstallDShieldList" interval=3d name="Download and Apply dshield_List" on-event=Download_dshield_Replace_dshield start-date=jan/01/1970 start-time=00:45:04

 malc0de.com

  Скрипт
# Script which will download the malc0de list as a text file & Script which will Remove old malc0de list and add new one
/system script add name="Download_malc0de_Replace_malc0de" source={
/tool fetch url="http://joshaven.com/malc0de.rsc" mode=http;
:log info "Downloaded malc0de.rsc from Joshaven.com";
:delay 40;
/ip firewall address-list remove [find where comment="malc0de"];
/import file-name=malc0de.rsc;
:log info "Removed old malc0de records and imported new list";
}
  Scheduler
# Schedule the download and application of the malc0de list
/system scheduler add comment="Download and Apply malc0de list" interval=3d name="Downloadmalc0deList_Installmalc0deList" on-event=Download_malc0de_Replace_malc0de start-date=jan/01/1970 start-time=00:50:04
  -------------------------------------
  Автор и владелец joshaven.com уверяет, что его сервер работает с высокой степенью доступности, имеет распределение нагрузки и резервирование каналов, поэтому списки с его серверов всегда доступны. Так же, если вы захотите формировать списки сами, он приводит скрипт, который вы можете поместить в cron у себя на сервере linux и выполнять по регламенту, а ваш микротик будет забирать эти списки локально:
Note: Please only use the following update scripts sparingly because the source sites don’t need a bunch of unnecessary traffic. Anyway, the following script will run on a Linux server (requires gawk & wget). I placed it in a file with 755 permissions in my /etc/cron.daily/ folder to be run daily.
#!/bin/sh
saveTo=/var/www
now=$(date);
echo "# Generated by Joshaven Potter on $now" > $saveTo/dshield.rsc
echo "/ip firewall address-list" >> $saveTo/dshield.rsc
wget -q -O - http://feeds.dshield.org/block.txt | awk --posix '/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.0\t/ { print "add list=blacklist address=" $1 "/24 comment=DShield";}' >> $saveTo/dshield.rsc
echo "# Generated by Joshaven Potter on $now" > $saveTo/spamhaus.rsc
echo "/ip firewall address-list" >> $saveTo/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=blacklist address=" $1 " comment=SpamHaus";}' >> $saveTo/spamhaus.rsc
echo "# Generated by Joshaven Potter on $now" > $saveTo/openbl.rsc
echo "/ip firewall address-list" >> $saveTo/openbl.rsc
wget -q -O - http://www.openbl.org/lists/base_30days.txt.gz | gunzip | awk --posix '/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/ { print "add list=blacklist address=" $1 " comment=OpenBL";}' >> $saveTo/openbl.rsc
echo "# Generated by Joshaven Potter on $now" > $saveTo/malc0de.rsc
echo "/ip firewall address-list" >> $saveTo/malc0de.rsc
wget -q -O - http://malc0de.com/bl/IP_Blacklist.txt | awk --posix '/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/ { print "add list=blacklist address=" $1 " comment=malc0de";}' >> $saveTo/malc0de.rsc
  Напоследок хочу предостеречь, скачивая и выполняя .rsc файл с стороннего ресурса вы можете получить уязвимость в своей сети, поэтому принимайте взвешенные решения!

Используемый материал:

Подписаться на новые статьи.

16 комментариев:

  1. Спасибо, очень полезная информация у вас на блоге!

    ОтветитьУдалить
  2. http://joshaven.com/openbl.rsc
    скачанный микротиком этот файл содержит пустой блелист (скачал себе, открыл notepad++ )
    содержание :
    # Generated by Joshaven Potter on Fri Jun 9 18:18:13 UTC 2017
    /ip firewall address-list

    ОтветитьУдалить
    Ответы
    1. сайт закрыл возможность прямой скачки, если ввести капчу то список можно открыть на сайте

      Удалить
  3. поправьте , on event=/system script run Download_malc0de_Replace_malc0de
    так работает ( Router OS 6.40 )

    ОтветитьУдалить
  4. add action=drop chain=input comment="Drop new connections from blacklisted IP's to this router" connection-state=new in-interface=ether1-niknet src-address-list=blacklist

    вставляю в терминал мне выдает:
    inputdoes not match any value of interface, у меня 6.40.3

    ОтветитьУдалить
    Ответы
    1. Проверь у себя название WAN-интерфейса и тут впиши правильное "interface=ether1-niknet"

      Удалить
  5. Я так и не понял, зачем переписывать то, что другой чел сделал и это работает. У него на сайте это описано скурпулезно. Более того, он еще и постоянно сопровождает этот продукт. Можно было просто сослаться на сайт автора.

    ОтветитьУдалить
  6. СпамХаус - известные вымогатели. Вымогают деньги у крупных компаний и провайдеров за удаление их подсетей из собственных списков. Причём причины попадания в их списки не всегда известны. Почитайте отзывы об их деятельности хотя бы на Хабре. Используя их списки, вы помагаете им с вымогательством денег у вполне чистых компаний.

    ОтветитьУдалить
  7. Добрый день!
    Скажите пожалуйста по поводу черных списков с http://joshaven.com/resources/tricks/mi ... ress-list/
    Как корректно прописывать правила в Фаерволе?

    1. Все на input, где In.Inerface - это WAN, а Src. Adress List - это наш список

    2. Или также на Forward, где In.Inerface - это WAN, а Src. Adress List - это наш список

    3. 1+2 + Output

    ОтветитьУдалить
  8. 1. Статью пора обновить, так как сайт источник уже внес изменения.
    2. Самое важное, в первый же день столкнулся с тем что совпали адреса в двух списках, в итоге во время выполнения микротиком добавления адресов останавливается на сообщении что адрес уже существует и не добавляет дальше.

    ОтветитьУдалить
    Ответы
    1. Решение нашлось быстро, адреса помещаем в 3 разные блек листы и добавить для них отдельные правила

      Удалить
  9. Подскажите, пожалуйста, каким образом мы можем поместить адреса в 3 разных блек листа, если имя блек листа , в который заносится ип-шник указывается в файле *.rsc, который скрипт забирает с http://joshaven.com?

    ОтветитьУдалить
  10. Вообще не понятно зачем городить огород с адрес листами ....
    Роуты в блекхол отправили и всё.

    ОтветитьУдалить
  11. Зачем всё это, зачем все эти блэклисты городить?
    Для офиса достаточно правило, дропать всё входящее, что не разрешено!

    ОтветитьУдалить
    Ответы
    1. Для твоего офисса да, для моего нет.
      Чо такой тупой то?

      Удалить