Skip to content

Инструмент для автоматизации составления Address List на MikroTik.

License

Notifications You must be signed in to change notification settings

FatNik329/MikroTik-ARMA

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MikroTik-ARMA

License Release Wiki badge Language RouterOS DNScrypt-proxy RouterAPI RIPEstat bgp.tools IPLocate IANA Russia

MikroTik-ARMA

Описание

Automated Router Mikrotik AddressList (ARMA) — это конвейерная система на Python для интеллектуального управления ACL в сетях на базе MikroTik (RouterOS 6). Система автоматически собирает данные из DNS, BGP-реестров и сетевых соединений, анализирует, фильтрует и обогащает их, после чего генерирует и разворачивает готовые конфигурации (Address Lists) на целевых устройствах. Система построена вокруг центрального оркестратора, координирующего выполнение независимых модулей.

Зависимости

Important

Для работы модуля (dns_fwd) анализа DNS-запросов требуется предустановленный и настроенный dnscrypt-proxy, выступающий в роли DNS-резолвера в сети.

Warning

Модули (sync_master, sync_slave) синхронизации данных на устройствах MikroTik разрабатывались исключительно под RoS6 с использованием модуля RouterOS-api. На 7-й версии работоспособность модулей не проверялась.

Note

Остальные зависимости модулей, необходимые для работы проекта содержаться в файле requirements.txt

Полный список системных требований и зависимостей приведён в Wiki.

Ключевые возможности

Проект постепенно развивается. На текущий момент его возможности состоят из:

Основной функционал

  1. Анализ DNS-запросов
    • Поддержка wildcard-шаблонов (*.example.com), IDN-доменов (пример.рф, .бел), корневых зон (.com, .net);
    • Кэширование доменов, не прошедших резолвинг (NXDOMAIN, таймауты);
    • Параллельная обработка DNS запросов;
    • Сохранение необработанных данных в структурированном виде (YAML).
  2. Автоматический сбор BGP-префиксов
    • Получение IPv4/IPv6-префиксов для указанных AS (Autonomous Systems) из публичных реестров: RIPE Stat, BGP.tools;
    • Кэширование локальных данных для снижения нагрузки на внешние сервисы API;
    • Сохранение необработанных данных в структурированном виде (JSON).
  3. Генерация конфигураций MikroTik
    • Преобразование "сырых" данных в готовые RSC скрипты для импорта;
    • Поддержка раздельных генераций RSC - для доменов, IP доменов и ASN.
  4. Синхронизация Address Lists
    • Режимы работы: только домены, только IP, только ASN, или комбинированные режимы;
    • Автоматическое обновление списков на устройстве;
    • Поддержка IPv4/IPv6;
    • Обработка кастомных списков (составленные вручную или через дополнительный функционал системы)
  5. Централизованное управление
    • Оркестрация через общий скрипт (запуск всего или части проекта, уведомления в Telegram, Email об успешном/провальном запуске);
    • Ротация логов, резервное копирование, конфигурация через YAML и JSON5;

Дополнительный функционал

  1. Анализ активных сетевых соединений (Connections)
    • Позволяет извлекать IP-адреса непосредственно с устройств MikroTik из таблицы активных соединений.
    • Базовая фильтрация (MikroTik) по исходным и целевым адресам, а также, по connection-mark.
    • Интеграция с данными системы - возможность фильтрации извлечённых IP-адресов на основе полученных YAML/JSON данных системы ARMA (например, для исключения уже известных адресов, а также, на вхождение адреса в определённую AS).
  2. Анализ и обогащение IP-адресов (Geo-ASN)
    • Объединение IP-адресов из нескольких источников (TXT, JSON).
    • Исключение адресов, уже присутствующих в DNS-записях системы.
    • Сопоставление оставшихся IP с автономными системами (ASN) и их префиксами с использованием MMDB-базы данных IPLocate.
  3. Парсер доменов верхнего уровня
    • Автоматический сбор и поддержка в актуальном состоянии полного списка TLD с официального реестра IANA.
    • Преобразование сырых данных в структурированный формат для использования другими модулями системы.
  4. Фильтрация и инкрементальное обновление DNS-данных
    • Фильтрация и преобразование YAML-данных от DNS-анализатора.
    • Поддержка накопления и обновления результатов между запусками системы без потери данных.
  5. Автоматическое резервное копирование MikroTik
    • Подключение к списку устройств по SSH и выполнение команды экспорта конфигурации.
    • Сохранение резервных копий (RSC-файлов) только на локальном сервере управления, без использования файловой памяти роутеров.
    • Интеграция в общий цикл работы системы для регулярного создания бэкапов.
  6. Открытая модульная архитектура
    • Система построена вокруг скрипта-оркестратора, который позволяет интегрировать собственные Python скрипты, через общий конфигурационный файл;
    • Вы можете расширить функционал. Например, добавить другие внешние источники или дополнительные модули фильтрации для создания сообственных списков под более специфичные задачи.
    • Проект распространяется под лицензией GPLv3, что поощряет модификации и совместное развитие.

В каких целях может применяться

Система не влияет на трафик и не настраивает правила фильтрации напрямую (Firewall Filter/Mangle/RAW и т.д.), а предоставляет структурированные и актуальные данные, которые можно использовать для:

Фильтрация и безопасность

  • Фильтрация трафика - блокировка рекламы, вредоносных IP, серверов с нежелательным контентом.
  • Упреждающая защита - автоматическое пополнение списков угроз (например, на основе динамических списков вредоносных доменов или IP из опасных AS).

Оптимизация трафика

  • Балансировка и маршрутизация - приоритизация или отделение трафика к определённым сервисам (YouTube, VoIP) или CDN.
  • Гео-маршрутизация - применение правил на основе принадлежности IP-адресов к странам (используя данные об AS).

Анализ и мониторинг

  • Составление карты сетевой активности - автоматическое создание списков IP/доменов на основе реальных DNS-запросов и активных соединений.
  • Аудит и отчетность - постоянно актуальные списки для анализа того, какие ресурсы используются в сети.
  • Автоматическое составление списков IP/доменов на основе реальной сетевой активности.

Администрирование инфраструктуры

  • Централизованное управление списками - синхронизация единых политик на одном или нескольких устройствах MikroTik.
  • Автоматизация рутины - исключение ручного копирования IP-адресов и доменов в конфигурации.
  • Резервное копирование - интеграция с процессом автоматического сбора и хранения конфигураций устройств.
  • ...

Wiki

Более подробно ознакомиться с проектом Wiki.


PS. Проект создавался "не программистом" в содружестве с ИИ, но с упором на практичность и эффективность. Если вам близка философия безумной автоматизации и вы готовы мириться с некоторым своеобразием подхода для достижения результата - Welcome to the club!🤝