15 июня 2018 года ребята из Vulners представили опенсорсный проект Zabbix Threat Control, позволяющий превратить систему мониторинга Zabbix в систему контроля безопасности машин. В этой статье мы расскажем, что такое Zabbix Threat Control, покажем, как его установить, и проверим работоспособность системы.
 

Что такое Zabbix

Zabbix — одна из самых популярных систем мониторинга. Она состоит из двух компонентов: zabbix-сервера и zabbix-агентов. Агенты собирают информацию с операционных систем, на которых установлены, и отправляют ее на сервер. Он же, в свою очередь, выдает ее админам в читабельном виде либо отправляет алармы на почту. Чтобы подытожить и дать понять обширность функциональности, скажу, что оповещения о сбоях можно принимать даже в Telegram.

 

Что такое Vulners

Vulners — своего рода поисковик на тему ИБ. Он черпает информацию из более чем 100 различных баз и источников. В нем можно найти уязвимости, баги, эксплоиты, дырявые сервисы, плагины для OpenVAS, NESSUS, Burp Suite, правила для IPS/IDS и многое другое. Хорошая сортировка выдачи результатов и отличный API. В общем, если кто-то не знаком, — обязательно надо. Незаменимый инструмент хакера и ИБ-шника.

 

Zabbix Threat Control

Zabbix Threat Control — плагин, который позволяет превратить систему мониторинга Zabbix в сканер безопасности с участием системы Vulners. После установки необходимых пакетов и сбора информации он покажет все серверы в сети, которые подвержены тем или иным уязвимостям из-за неустановленных патчей или старых версий пакетов. Другими словами, основная задача Zabbix Threat Control — это контроль версионных уязвимостей. Он не сможет проверить настройки конфигурационных файлов или предупредить об ошибке в коде.

Работает все это следующим образом. Zabbix с помощью агентов собирает с машин информацию о названии и версии ОС, формирует список установленных пакетов и их версий, а затем отдает это все ZTC. Плагин, получив всю информацию, пересылает ее в Vulners. Последний сопоставляет все данные с базой уязвимостей и багов и возвращает результат в Zabbix Threat Control. Информация обрабатывается, отправляется Zabbix-серверу, после чего конечный пользователь может ознакомиться в дашборде со списком уязвимостей на машинах.

Информация об уязвимостях выводится в виде проблем. Проблему можно либо игнорировать (просто закрыв ее, не подтверждая), и никакого действия не последует, либо подтвердить, после чего агентам отправится fix-команда, которая устранит уязвимость. Фиксить проблемы может только привилегированный пользователь. Какая команда будет выполнена и на каких серверах, можно будет увидеть в дашборде.

На данный момент Zabbix Threat Control требует Zabbix версии не ниже 3.4 и способен работать только с Linux, но, возможно, будут разработаны пакеты под другие ОС (в том числе активное сетевое оборудование).

 

Устанавливаем

Рассмотрю установку на Debian. Она проходит в несколько этапов:

  1. Установка сервера Zabbix и агентов на отслеживаемые хосты.
  2. Установка плагинов ZTC на отслеживаемые хосты и их настройка.
  3. Установка ZTC на сервер.
 

Сервер Zabbix

Для начала устанавливаем сервер и клиент MySQL (можешь с этим не согласиться, но до 20–25 серверов можно поставить MySQL, если больше — лучше установить PostgreSQL):

$ sudo apt install mysql-server mysql-client

Добавляем репозитории:

$ wget http://repo.zabbix.com/zabbix/3.4/debian/pool/main/z/zabbix-release/zabbix-release_3.4-1+stretch_all.deb
$ sudo dpkg -i zabbix-release_3.4-1+stretch_all.deb
$ sudo apt update

И устанавливаем сервер Zabbix:

$ sudo apt install zabbix-server-mysql zabbix-frontend-php zabbix-agent

Подключаемся к MySQL:

$ mysql -uroot –pPass

Дальше необходимо создать базу данных и пользователя (пароль устанавливаем свой):

create database zabbix character set utf8 collate utf8_bin;
grant all privileges on zabbix.* to zabbix@localhost identified by 'PASSWORD';
quit;

Добавляем таблицы в базу:

$ zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix

Открываем в редакторе конфигурационный файл /etc/zabbix/zabbix_server.conf и в нем прописываем значение DBPassword (пароль к базе данных, указанный при ее создании). В том же каталоге, в файле apache.conf следует указать параметр date.timezone (к примеру, Europe/Moscow).

Делаем ссылку:

$ sudo ln -s /usr/share/zabbix/ /var/www/html/

На этом установка Zabbix окончена. Перегружаем сервис, заходим в веб-интерфейс http://SERVER/zabbix и следуем простым подсказкам. Дефолтный логин/пароль для входа — Admin/zabbix.

 

Агенты

Чтобы установить Zabbix-агенты на отлеживаемые хосты, достаточно инсталлировать пакет zabbix-agent (он будет запущен автоматически):

$ sudo apt install zabbix-agent

Далее открываем конфигурационный файл /etc/zabbix/zabbix_agentd.conf и добавляем в него следующие строки (адрес и имя сервера):

Server=192.168.1.1
ServerActive=192.168.1.1
Hostname=srv10

Перезапускаем агент:

$ service zabbix-agent restart
 

Плагины ZTC

Для установки плагинов на хосты необходимо добавить репозитории ZTC. Это делается следующим образом:

$ wget https://repo.vulners.com/debian/vulners-repo.deb
$ sudo dpkg -i vulners-repo.deb

Затем устанавливаем плагин:

$ sudo apt-get update
$ sudo apt-get install zabbix-threat-control-host

Далее идем в файл /etc/zabbix/zabbix_agentd.conf и меняем следующие значения:

EnableRemoteCommands=1
LogRemoteCommands=1

Для того чтобы пользователь Zabbix смог обновлять (и только обновлять) пакеты, необходимо добавить следующую строку в файл /etc/sudoers:

zabbix ALL=(ALL) NOPASSWD: /usr/bin/apt-get --assume-yes install --only-upgrade *

Не забываем установить плагин также на сервер. После внесенных изменений агент необходимо перезапустить:

$ service zabbix-agent restart
 

Сервер ZTC

Возвращаемся на сервер Zabbix. Как и в случае с агентами, добавляем репозитории ZTC:

$ wget https://repo.vulners.com/debian/vulners-repo.deb
$ sudo dpkg -i vulners-repo.deb

После этого:

$ sudo apt-get update
$ sudo apt-get install zabbix-threat-control-main zabbix-threat-control-host

Далее устанавливаем зависимости:

$ sudo apt install zabbix-sender zabbix-get python3 python3-pip

На этом моменте стоит пояснить, что в более ранних версиях плагины zabbix-sender и zabbix-get поставлялись сразу с zabbix-server, а сейчас их приходится ставить отдельно. Продолжаем:

$ sudo pip3 install pyzabbix requests jpath

Теперь открываем браузер, идем на vulners.com и заводим учетную запись. Заходим в аккаунт и на вкладке API KEYS генерируем ключ.

Возвращаемся к серверу, открываем в редакторе файл /opt/monitoring/zabbix-threat-control/ztc_config.py:


Вносим свои данные. Необходимо указать логин и пароль пользователя Zabbix, его адрес и fqdn. Если порт не дефолтный, его тоже меняем.

После настройки конфигурационного файла запускаем /opt/monitoring/zabbix-threat-control/ztc_create.py:


Скрипт создает необходимые хост-группу, шаблон, экшен и свой дашборд. В выводе будет указан URL дашборда ZTC и время, в которое будет запускаться сканирование на уязвимости. Запустит сканирование исполнение скрипта /opt/monitoring/zabbix-threat-control/ztc.py (при необходимости можно запустить вручную).

После проделанной работы открываем новый дашборд ZTC, переходим в шаблоны и ищем там Vulners OS-Report. В нем в разделе Hosts необходимо указать, переместив их в левый textbox, те серверы, которые требуют сканирования. Ждем, пока программа сканирует хосты, и получаем результаты. Работает он очень быстро (1000 хостов сканируется примерно за 30 минут).

По окончании сканирования получаем примерно такой вывод результатов:


На диаграмме красным выделены критические уязвимости, имеющие высокую оценку CVSS. Все данные удобно отсортированы в нескольких панелях: по уязвимым пакетам, по уязвимостям и по серверам. Соответственно, и исправить можно либо все уязвимости на конкретно выбранном сервере, либо определенную уязвимость на всех серверах.

Информацию по уязвимостям на серверах, как и о командах для устранения проблем, можно получить в подсказках, которые активируются при наведении на проблему. Там же будут представлены ссылки на vulners.com, где можно ознакомиться с проблемами ИБ, касающимися данных серверов.



Для установки обновлений необходимо просто подтвердить проблему. Особенно удобно это будет для тех, кто хочет устранить одну из уязвимостей на всех серверах, если нет систем управления типа Ansible.

 

Заключение

Zabbix Threat Control не сможет заменить профессиональные системы, поскольку не имеет таких богатых возможностей. Однако он быстрый, бесплатный и хорошо вписывается в существующую инфраструктуру.

Стоит учитывать, что это лишь первый выпуск плагина, поэтому не исключены баги и недоработки. Однако в Telegram есть группа @ztcsupport, в которой можно получить поддержку и обратную связь.

Оставить мнение

Check Also

Жесткая закалка Linux. Подбираем инструменты для комплексного аудита безопасности

В этом материале мы познакомимся с основными утилитами для Linux hardening. На русском язы…