ACARM-ng
ACARM-ng — свободная система обнаружения и предотвращения вторжений (IDS/IPS) с открытым исходным кодом. Название расшифровывается как «Alert Correlation, Assessment and Reaction Module — next generation» («Модуль корреляции, оценки и реагирования на оповещения, новое поколение»). ACARM-ng представляет собой программное обеспечение для корреляции оповещений и значительно облегчает анализ трафика в компьютерных сетях. Она отвечает за сбор и корреляцию оповещений, присылаемых сетевыми и хостовыми сенсорами (NIDS и HIDS соответственно). Процесс корреляции нацелен на сокращение общего числа сообщений, требующих внимания системного администратора, объединяя схожие события в группы, отражающие логические этапы злонамеренной активности.
Общие сведения
| ACARM-ng | |
|---|---|
| Тип | система обнаружения вторжений, система предотвращения вторжений |
| Авторы | Бартломей Балцерек, Бартос Шургот, Войцех Вага, Мариуш Ухроньский |
| Разработчик | WCSS |
| Написана на | C++, Python |
| Операционная система | Linux |
| Первый выпуск | 14 февраля 2011 |
| Последняя версия | 1.1.1 (29 мая 2012) |
| Лицензия | GPLv2 |
| Сайт | acarm.wcss.wroc.pl |
Определения
- Хостовые сенсоры (HIDS/HIPS) — программные агенты, устанавливаемые непосредственно на конечные устройства (серверы, рабочие станции) для мониторинга их локальной активности.
- PostgreSQL — свободная объектно-реляционная система управления базами данных (СУБД).
- API (англ. application programming interface, интерфейс программирования приложений) — способ взаимодействия между компьютерами или отдельными программами. API представляет собой разновидность программного интерфейса, предлагающего определённые сервисы другим программным компонентам.
- DNS-имя (доменное имя) — это понятный человеку текстовый адрес веб-сайта или устройства в сети (например, google.com), который система доменных имен (DNS) автоматически преобразует в числовой IP-адрес, используемый компьютерами.
История
Исходная версия ACARM разрабатывалась в рамках европейского исследовательского проекта POSITIF с 2004 по 2007 год. Она была написана на Java как практическое подтверждение концепции и представлена в научной статье[1]. Несмотря на проблемы с масштабируемостью и эффективностью, данное ПО оказалось весьма полезным.
В конце 2009 года стало очевидно, что текущая архитектура имеет серьёзные недостатки, главным образом низкую производительность. В результате проект был прекращён. Позднее в том же году началась работа над новым проектом, получившим название ACARM-ng, с целью заменить оригинальный ACARM. ACARM-ng должен был вывести корреляцию оповещений на новый уровень за счёт масштабируемости и архитектуры с поддержкой расширений. С 2009 года ACARM-ng активно разрабатывается Вроцлавским центром сетей и суперкомпьютинга в рамках проекта PL-Grid[2].
Возможности
К числу основных возможностей ACARM-ng относятся:
- универсальный фреймворк с поддержкой расширений (система легко дополняется плагинами);
- многопоточная реализация;
- низкое использование ресурсов процессора и памяти;
- применение современных объектно-ориентированных методов проектирования;
- обработка повторяющихся оповещений;
- информирование и реагирование в реальном времени;
- web-интерфейс для визуализации данных;
- длинные интервалы корреляции без задержки отчётности.
Архитектура
ACARM-ng состоит из трёх основных компонентов: корреляционного демона, веб-интерфейса пользователя (WUI) и (опционально) серверной базы данных.
Демон ACARM-ng разработан с нуля как фреймворк. Он реализует основные функции системы — логирование, передачу оповещений и коррелированных мета-оповещений между частями системы, восстановление после ошибок, многопоточность и т. д. Остальной функционал реализован с помощью отдельные плагинов, разделённых на следующие классы:
- хранение данных (persistency, абстракция над хранилищем);
- входные данные (input, сбор информации);
- фильтры (фильтрация и корреляция данных);
- триггеры (trigger, автоматическое оповещение и реакция)[3].
Встроенный программный страж (watchdog) обеспечивает актуальное информирование о состоянии системы.
Веб-интерфейс позволяет просматривать скоррелированные данные в графическом и табличном виде. Администратор системы может легко отслеживать происходящие события в реальном времени.
Веб-интерфейс и демон взаимодействуют через базу данных. Демон сохраняет поступающие данные, результаты корреляции и рабочие настройки. Веб-интерфейс отображает и предоставляет к ним доступ для просмотра и анализа.
Хотя для запуска демона база данных не требуется, настоятельно рекомендуется сохранять данные на постоянной основе. Отказ от использования БД лишает возможности получать информацию о состоянии системы через веб-интерфейс и приводит к потере истории данных после перезапуска. События, которые больше не обрабатываются демоном, также теряются.
Препроцессор
Часто возникает необходимость ограничить объём поступающих данных (например, отбрасывать периодические оповещения от скриптов cron). Для этого предусмотрен отдельный компонент — препроцессор, который позволяет пользователю задать цепочку правил accept-if-match и reject-if-match для фильтрации оповещений до этапа корреляции.
Плагины
Демон ACARM-ng позволяет добавлять и удалять новые плагины без перекомпиляции основного пакета, что упрощает разработку и тестирование.
Работа каждого плагина предварительно настраивается в основном конфигурационном файле.
Механизм persistency обеспечивает абстракцию на уровне хранения данных. Такой интерфейс позволяет использовать любые бэкенды для долговременного хранения информации при наличии механизма транзакций.
В актуальной стабильной версии ACARM-ng реализованы следующие плагины persistency:
- stubs (игнорирует все запросы на запись, данные не сохраняются);
- postgres (использует сервер PostgreSQL для хранения информации).
Input обеспечивает абстракцию механизма сбора данных. Единственное требование — вывод в формате, совместимом с ACARM-ng.
В актуальной стабильной версии реализованы следующие плагины input:
- file (чтение XML-файлов в формате IDMEF);
- prelude (чтение оповещений с агрегатора Prelude-Manager).
Filter реализует абстракцию корреляции данных и их обновления. Фильтр не ограничен по функциям — чаще всего используется для корреляции похожих оповещений (для этого предоставлен специальный API).
В актуальной стабильной версии реализованы следующие варианты фильтров:
- one to one (корреляция событий между парой хостов);
- one to many (корреляция событий от одного источника);
- many to one (корреляция событий к одному получателю);
- many to many (корреляция по набору похожих источников и получателей);
- DNS-резолвер (разрешение IP-адресов в DNS-имена);
- IP black list (изменение приоритета оповещений по адресам из подозрительных сетей);
- same name (корреляция по совпадающим именам событий);
- event chain (корреляция событий, произошедших в последовательном порядке на разных машинах; может указывать на цепочку «сканирование — взлом — эскалация»);
- users monitor (корреляция оповещений, вызванных действиями одного пользователя);
- similarity (корреляция схожих оповещений по определённому порогу сходства; сравниваются все данные);
- new event (изменение приоритета новых, ранее не встречавшихся событий);
- python (использует пользовательские скрипты на Python для корреляции).
Trigger абстрагирует механизм оповещения и реакции. Действия триггеров не меняют данные, а инициируют ответ на оповещение. Типичные применения — информирование администраторов в реальном времени (например по email) и автоматическая реакция на угрозу (например блокировка вредоносного хоста на файрволе).
В актуальной стабильной версии реализованы следующие триггеры:
- информирование администратора о подозрительных событиях:
- file (создание файлов с коррелированными событиями в формате IDMEF);
- gg (через протокол мессенджера Gadu-Gadu);
- jabber (через протокол XMPP);
- mail (отправка электронной почты).
- инструменты автоматической реакции:
Каждый триггер настраивается независимо и реагирует на определённые пороги, количество коррелированных оповещений или иные правила, задаваемые аналогично основному препроцессору демона. Такой подход реализует максимально гибкое конфигурирование, уменьшая количество ложных срабатываний, особенно если система сама принимает решения о реакции на угрозы.
Watchdog
Встроенный программный страж (Watchdog Timer, WDT) — аппаратный или программный механизм контроля зависания системы, который автоматически перезагружает устройство, если оно перестает отвечать.
Технические детали работы Watchdog:
- Принцип действия. Это таймер, который отсчитывает время назад (обратный отсчет). Основная задача системы — постоянно «сбрасывать» (кормить) этот таймер, возвращая его в исходное состояние до того, как он достигнет нуля.
- Событие сброса. Если контролируемая система (микроконтроллер, ПО) зависает, она перестает посылать сигнал сброса. Как только таймер достигает нуля, он отправляет аппаратный сигнал на перезагрузку процессора.
- Инициализация. При включении системы сторожевой таймер обычно активируется, и ему задается интервал времени (таймаут).
- Применение:
- В микроконтроллерах (STM32 и др.): Аппаратный таймер, который трудно обмануть программным сбоем.
- В сетевом оборудовании (PoE-коммутаторы, роутеры): Проверяет наличие связи (ping) и перезагружает порты при ее отсутствии.
- В Linux/серверах: Программный демон, который следит за критическими процессами и перезагружает систему при зависании.
Watchdog предотвращает нарушения работы, вызванные ошибками в ПО, перегревом или аппаратными сбоями, обеспечивая автоматическое восстановление.
Примечания
- ↑ Valeur, F.; Vigna, G.; Kruegel, C.; Kemmerer, R.A. (2004). “Comprehensive approach to intrusion detection alert correlation”. IEEE Transactions on Dependable and Secure Computing. 1 (3): 146—169. CiteSeerX 10.1.1.60.6872. DOI:10.1109/TDSC.2004.21. S2CID 2603627.
- ↑ Bartłomiej Balcerek. ACARM-ng: Next Generation Correlation Framework // Building a National Distributed e-Infrastructure — PL-Grid / Bartłomiej Balcerek, Bartosz Szurgot, Wojciech Waga … [и др.]. — Springer, 2012. — Vol. 7136. — P. 114–127. — ISBN 978-3-642-28266-9. — doi:10.1007/978-3-642-28267-6_9.
- ↑ Balcerek, Bartłomiej. ACARM-ng: Next Generation Correlation Framework : [англ.] / Bartłomiej Balcerek, Bartosz Szurgot, Mariusz Uchroński … [et al.]. — Springer, 2012. — P. 114–127. — ISBN 978-3-642-28267-6. — doi:10.1007/978-3-642-28267-6_9.
Ссылки
- Официальный сайт
- ACARM-ng на SourceForge
- основная ветка разработки (репозиторий Bazaar)
- Брошюра проекта POSITIF POSITIF Folder (архив) (англ.). wcss.wroc.pl (4 марта 2016). Дата обращения: 18 июня 2024. Архивировано 4 марта 2016 года.