Octopussy (программное обеспечение)

Octopussy, также известная как 8Pussy, — свободное программное обеспечение с открытым исходным кодом для мониторинга систем посредством постоянного анализа данных syslog, которые они создают и передают на центральный сервер Octopussy (такое ПО часто относят к решениям класса SIEM)[1].[2] Программы наподобие Octopussy играют важную роль в поддержании системы управления информационной безопасностью в средах, соответствующих ISO/IEC 27001.

Octopussy умеет мониторить любые устройства, поддерживающие протокол syslog, такие как серверы, маршрутизаторы, коммутаторы, межсетевые экраны, балансир нагрузок и важные приложения или службы. Основная цель программы — оповещать администраторов и пользователей о различных событиях, например, сбоях, атаках или ошибках приложений[3]. Однако, в отличие от Nagios или Icinga, Octopussy не является системой проверки состояния — она не позволяет непосредственно решать обнаруженные проблемы. Также в Octopussy не определено, какие именно сообщения должны или не должны анализироваться; с этой точки зрения она уступает по функциональности многим коммерческим средствам анализа событий и логов[4].

Octopussy совместима со многими дистрибутивами Linux, такими как Debian, Ubuntu, OpenSUSE, CentOS, RHEL, а также с мета-дистрибутивами Gentoo и Arch Linux. Хотя изначально программа была рассчитана на работу в Linux, её можно портировать на другие UNIX-подобные системы (например, FreeBSD) с минимальными усилиями. Octopussy поддерживает расширенную генерацию отчётов и интеграцию с другими программами, такими как NSCA (Nagios), Jabber/XMPP, Zabbix. С помощью программ типа Snare может обрабатывать Windows EventLogs[5].

Программа распространяется по лицензии GNU GPL.

Что важно знать
Octopussy
Тип анализатор логов, программное обеспечение для информационной безопасности
Разработчики Себастьен Тебер и другие
Написана на Perl, ASP
Операционная система Linux
Первый выпуск декабрь 2005
Последняя версия 1.0.16 (3 июня 2017)
Репозиторий github.com/Octopussy-Pro…
Лицензия GPLv2
Сайт octopussy.pm

Возможности

Хотя Octopussy является свободным ПО с открытым исходным кодом, она поддерживает ряд функций, присущих профессиональным корпоративным решениям (например, Splunk, SAWMILL, Kiwi Syslog).

undefined

Функции Octopussy

Актуальная версия Octopussy предлагает следующие возможности:

  • Базовая поддержка LDAP (с версии 1.0+) — работа с пользователями и контактами, фильтрация
  • Уведомления по электронной почте, IM (Jabber), NSCA (Nagios) и Zabbix
  • Карта инфраструктуры, отражающая известные Octopussy системы
  • Экспортируемые отчёты по email, FTP, SCP
  • Входные и выходные плагины для ручных и автоматических отчётов
  • Планировщик и автоматизация генерации отчётов по параметрам
  • Просмотрщик логов для поиска сообщений syslog, принятых Octopussy
  • Графики syslog-активности сервисов с помощью RRDtool
  • Обширные определения сервисов (Apache 2, BIND, BSD Kernel и др.)
  • Мастер создания новых сервисов и/или паттернов сообщений для уже добавленных сервисов
  • Переключатель включения/отключения сервисов и оповещений по каждому наблюдаемому устройству
  • Онлайн-обновления сервисов, таблиц и языковых пакетов (l18n)
  • Мультиязычная поддержка: английский, французский, немецкий, итальянский, испанский, португальский, русский
  • Веб-интерфейс для просмотра статуса устройств, оповещений, логов и др.
  • Темизация интерфейса и отчётов
  • Управление основными сервисами Octopussy из командной строки
  • Простой плоский формат конфигурации (интеграция со сторонними редакторами)
  • Ротация и хранение принятых syslog сообщений в разных локациях
  • Управление пользователями с возможностью тонкой настройки прав доступа
  • Разметка стилей и компонентов GUI на ASP для быстрой модификации

Поддерживаемые сервисы

Среди известных сервисов и метасервисов, поддерживаемых Octopussy: Apache 2, BIND, BSD Kernel, BSD PAM, BSD System, Cisco Routers (ASR), Cisco Switches, ClamAV, DenyAll Reverse Proxy, DRBD, F5 BigIP, Fortinet FW, HP-Tools, Ironport MailServer, Juniper Netscreen FW, Juniper Netscreen NSM, LDAP, Linux AppArmor, Linux Auditd, Linux IPTables, Linux Kernel, Linux PAM, Linux System, Monit, MySQL, Nagios, Neoteris/Juniper FW, NetApp NetCache, Postfix, PostgreSQL, Samba, Samhain, SNMPd, Squid, SSHd, Syslog-ng, TACACS, VMware ESX(i), Windows Snare Agent, Windows System, Xen и др[2].

undefined

Обрабатываемые события

События, получаемые от сервисов и обрабатываемые Octopussy, включают:

  • Успешные и неудачные входы в систему (особенно пользователей с повышенными правами)
  • Нарушения политик или прав доступа в ОС и приложениях
  • Операции чтения/записи в критических окружениях (например, AppArmor, SELinux)
  • Установление/разрыв VPN-туннелей (например, Juniper Netscreen)
  • Изменение атрибутов объектов (процессов, файлов) или их конфигурации
  • Запуск/остановка процессов на уровне ОС
  • Критические состояния системы (аппаратные или программные сбои)
  • Изменения состояния ОС из-за загрузки, перезагрузки или выключения
  • Информация о сетевых соединениях/трафике, включая ICMP-сообщения и др.
  • Обнаружение или обработка вредоносного ПО (черви, вирусы, трояны)

Зависимости

Для работы Octopussy требуется наличие RSYSLOG на syslog-сервере и запуск одной из реализаций syslog-сервиса на наблюдаемых системах (например, syslogd/klogd, RSYSLOG или syslog-ng)[6].

Также необходим установленный Apache 2 с модулями Apache::ASP, Mod_Perl и Mod_SSL. Для функционирования программы требуется СУБД MySQL (база создаётся автоматически при установке Octopussy), а также современный интерпретатор Perl с рядом модулей из CPAN (например, Crypt::PasswdMD5, DBD::mysql, JSON, Unix::Syslog, XML::Simple)[7]. Полный список модулей содержится в файле README.txt дистрибутива. Дополнительно нужны NSCD и RRDtool — последний используется для построения графиков и отображения их на панели мониторинга Octopussy или по отдельным устройствам и сервисам[8].

Технические особенности

undefined

Octopussy принимает сообщения syslog по соответствующему протоколу, то есть работает пассивно, без запуска отдельных сетевых агентов на контролируемых машинах[9]. Программа полностью соответствует стандартам RfC 3164 и 3195 IETF, описывающим syslog как механизм журналирования для UNIX-подобных систем[10].[11] Это включает внутреннее представление принципа facility/severity (области и критичности сообщений).

Программа использует полу-состоячную (semi-stateful) систему корреляции событий, то есть хранит текущее внутреннее состояние и использует его для логического связывания событий одного устройства (например, для оповещений по факту). Так называемый «скользящий оконный протокол» (sliding window) позволяет сопоставлять старые и новые события на основе ограниченного набора параметров.

Octopussy Dispatcher

Компонент Octo-Dispatcher принимает строки syslog от RSYSLOG и распределяет их по директориям зарегистрированных устройств[12]. Каждое зарегистрированное устройство получает свои сообщения syslog в зависимости от его имени. Компонент Octo-Replay позволяет воспроизводить журнальные сообщения для устройств или сервисов (например, повторно обрабатывать ранее распознанные логи).

Octopussy Parser

Octo-Parser и Octo-Uparser — одни из важнейших частей системы. Octo-Parser предназначен для разбора syslog-журналов по каждому зарегистрированному устройству с использованием регулярных выражений[13]. Octo-Uparser перезапускается при изменении сервисов устройства для анализа ранее нераспознанных сообщений.

В некоторых случаях заранее вызывается Octo-Pusher — модуль для обработки сообщений «не в формате syslog», поступающих по FTP, rsync или SSH/SCP.

undefined

Octopussy Interface

Веб-интерфейс Octopussy (GUI) предоставляет средства управления конфигурацией, устройствами, сервисами, определением оповещений и расширяет базовые компоненты Octopussy. На странице устройств отображаются ключевые параметры: hostname, IP-адрес, тип лога, модель устройства, FQDN, ОС.

Также интерфейс (Octo-Web) даёт доступ к другим компонентам системы (Octo-Commander, Octo-Message-Finder, Octo-Reporter и Octo-Statistic-Reporter). Front-end написан на Perl 5 с использованием Apache::ASP[14].

Основные сервисы Octopussy также могут управляться из командной строки, что полезно для быстрой перезагрузки/остановки сервисов и базовых настроек.

Octopussy RRD

Модуль RRD отвечает за построение графиков на основе RRDtool и включён в состав по умолчанию. Учитывая высокую нагрузку на ресурсы, этот функционал можно отключить на малопроизводительных серверах. Построенные графики отображают активность сервисов для контролируемых устройств, индивидуально по сервису или устройству. При запуске Octopussy или динамической работе приоритет обработки отдаётся данным в буфере, а генерация графиков запускается позже[15]. Octo-RRD использует Octo-Scheduler для вызова функции Octopussy::Report и организации автоматического построения графиков активности, а затем Octo-Sender — для отправки данных отчётов.

Интеграции и расширения

В Octopussy реализована система модулей/плагинов, ориентированная на модификацию системы отчётов. Плагин состоит из файла описания (имя и функции) и файла с кодом на Perl[16].

Существуют и плагины для стороннего ПО, например, плагин Nagios, проверяющий состояние сервисов Octopussy (Octo-Dispatcher, Octo-Scheduler и др.), а также парсера логов и разделов журнала[17].

Создание сервисов и паттернов

Создание новых сервисов и шаблонов сообщений — основной способ расширения Octopussy без изменения исходного кода. Паттерны базируются на упрощённых регулярных выражениях, поэтому администратору рекомендуется знать основы работы с regex. Лучше всего начинать с уже существующих сервисов, понимая структуру полей (ID сообщения, паттерн, уровень журнала, таксономия, таблица, ранг)[18].

Обычно для поиска неизвестных syslog-сообщений используют мастер логов, чтобы по каждому устройству выделить новый паттерн сервиса. Паттерны рекомендуется строить таким образом, чтобы Octopussy могла различать сообщения по степени критичности и таксономии[19].

Выпуски

История версий
Версия Дата Ветка/статус Источник
1.0.16 3 июня 2017 стабильная [20]

Примечания