Думая о том, как защитить маршрутизатор от внешних вторжений пришла в голову мысль о том, что не только один я сталкиваюсь с этой проблемой. Поэтому я начал искать в интернете сервисы, которые помогают компаниям с выявлением угроз. В интернете есть ряд сайтов, которые отслеживают злоумышленников, спамеров, брутфорсеров и заносят их 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 файл с стороннего ресурса вы можете получить уязвимость в своей сети, поэтому принимайте взвешенные решения!