Как оградить MikroTik от спамеров.
взято из инета.
Наткнулся на сайт 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»;
}
# 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»;
}
/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
