Новая система черных списков! (7 июля 2017) Требуется RouterOS версии 6.36 или выше.
Итак, ребята, выкладываю первый RC для новой системы. Чтобы упростить задачу, публикую только скрипт-установщик/обновитель. Он установит скрипт обновления черного списка, скрипт конфигурации и планировщики задач.
В результате у вас появятся следующие элементы:
Скрипты: - blacklistUpdate — основной скрипт для проверки списка и его установки - blacklistUpdate.conf — конфигурация для скрипта, автообновление не трогает этот файл - blacklistScriptUpdater — скрипт для автообновления, рекомендую запускать раз в сутки, чтобы всегда быть в курсе
Планировщики: - blacklistUpdate — запускается каждый час, проверяя наличие нового списка, обновляет ТОЛЬКО если список новый - blacklistUpdateOnBoot — загружает текущий список при загрузке роутера
Имя списка изменилось. Нужно обновить правила, чтобы использовать “intrusBL” вместо “dynamicBlacklist”.
Обновления теперь происходят на месте. Старые записи получают время жизни 30 минут, чтобы скоро истечь. Это заменяет процесс удаления и позволяет им истекать естественным путем. Текущие записи обновляются до 25 часов, новые тоже добавляются с временем жизни в 25 часов.
Проверка обновлений — через DNS. Быстрый запрос к моему DNS-серверу (127.0.0.3) возвращает текущий серийный номер списка. Если номер совпадает с установленным, обновления не происходит. Если номер больше — загружается и устанавливается новый список.
История версий: 2.0.5 — Выпущена. Изменения в скрипте и сервере, теперь IP из черного списка всё еще могут получать доступ к списку 2.0.4 — Выпущена. Автообновление скрипта по умолчанию отключено, можно включить в конфиге. Добавлен глобальный параметр “blScriptUpdate” для включения/отключения обновления скрипта 2.0.3 — Выпущена. Очистка Script Updater. Установщик теперь имеет полные права (ошибка ROS) 2.0.2.1 и 2.0.2.2 — Выпущены. Исправлены мелкие опечатки. Новый скрипт автообновления установлен. Автообновление можно запускать вручную или по расписанию раз в день. Новый более чистый установщик — теперь можно просто копировать и вставлять в консоль 2.0.2 — Выпущена. Исправлена опечатка в логах. Автообновление теперь не удаляет конфигурацию при повторном запуске. Улучшена очистка глобальных переменных. Начата работа над проверкой места на диске перед загрузкой 2.0.1 — Выпущена. Улучшена функция кодирования URL. Значительно проще определение системного ID CHR. Версия скрипта стала глобальной переменной (подготовка к автообновлению скрипта)
Пожалуйста, поставьте положительную оценку, если вам нравится и вы используете этот сервис.
Прежде всего, спасибо за этот скрипт! Это то, что я хотел реализовать уже очень давно, но все никак не доходили руки. Сейчас он работает через ваш сервер. Не могли бы вы опубликовать код для серверной части, чтобы можно было запускать это без необходимости обращаться к вашему серверу? Спасибо!
К сожалению, не могу. Большая часть списка создаётся моими собственными роутерами. Сейчас их чуть меньше 50. Когда мои серверы и роутеры по всему миру подвергаются атакам, проверкам и спаму, они блокируют адреса, а потом отправляют их обратно на мой сервер, где адреса собираются в один список, который потом раздаётся роутерам.
Понял. Я думал, что ты пользуешься какими-то готовыми списками и просто конвертируешь их в команды для Mikrotik. Ты случайно не в курсе каких-нибудь публичных чёрных списков, которые я мог бы использовать? Кстати, как часто ты запускаешь этот скрипт? Если я не ошибаюсь, этот метод при каждом запуске пишет на NAND-память? Есть идеи, как сделать так, чтобы всё работало полностью в ОЗУ и NAND не изнашивалась?
Вы можете заглянуть на dshield.org — там есть готовый список. Мой сервер собирает запрещённые IP круглосуточно и публикует список в 3 часа ночи по PST. Насчёт того, чтобы не писать в NAND — я не знаю способа это предотвратить. Для более простого устройства с небольшим объёмом памяти, возможно, стоит запускать скрипт раз в месяц. Что касается моих собственных роутеров, я понимаю и принимаю, что NAND будет изнашиваться — видимо, такова цена безопасности. Даже меняя роутеры раз в два года, они всё равно дешевле Cisco.
Если доступен внешний USB-или SD-диск, износ NAND можно избежать, записывая временные файлы на них. Кстати, скачивание и выполнение rsc с чужого сервера и/или по небезопасному каналу выглядит опасным.
Я добавил ограничения на сервере, чтобы роутеры не запрашивали список слишком часто. Один из роутеров скачивал список каждую минуту. Более 1400 раз в день — это чуть больше 320 Мб (список в среднем 250 Кб). Достаточно скачивать раз в 24 часа.
Ну что ж. В любом случае ошибка 403 forbidden… Просто к сведению: будет ГОРАЗДО лучше (и для вас, и для роутеров, управления, и ресурсов) просто распространять списки IP с использованием приватных ASN и многошагового BGP… Люди, подключающиеся к вашему BGP-фиду, смогут получать обновления сразу по мере их появления и отправлять трафик в черную дыру. Значительно эффективнее, чем забивать роутеры 3 тысячами правил в фаерволе. Вот такая идея…
На стороне сервера это позволяет выбрать список, оптимизированный для вашего устройства. Модель сообщает, сколько у вас мощности ЦП, память — для какого размера списка, а версия — для особенностей скрипта.
Я не использую BGP, потому что большинство пользователей, которым это нужно, просто не умеют его настраивать. И да, сервер выдаст 403, если пытаться зайти напрямую, вместо того чтобы RouterOS устройство само его запрашивало.