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. Она проходит в несколько этапов:
- Установка сервера Zabbix и агентов на отслеживаемые хосты.
- Установка плагинов ZTC на отслеживаемые хосты и их настройка.
- Установка ZTC на сервер.
Сервер Zabbix
Для начала устанавливаем сервер и клиент MySQL (можешь с этим не согласиться, но до 20–25 серверов можно поставить MySQL, если больше — лучше установить PostgreSQL):
Добавляем репозитории:
И устанавливаем сервер Zabbix:
Подключаемся к MySQL:
Дальше необходимо создать базу данных и пользователя (пароль устанавливаем свой):
Добавляем таблицы в базу:
Открываем в редакторе конфигурационный файл и в нем прописываем значение (пароль к базе данных, указанный при ее создании). В том же каталоге, в файле следует указать параметр (к примеру, Europe/Moscow).
Делаем ссылку:
На этом установка Zabbix окончена. Перегружаем сервис, заходим в веб-интерфейс и следуем простым подсказкам. Дефолтный логин/пароль для входа — /.
Агенты
Чтобы установить Zabbix-агенты на отлеживаемые хосты, достаточно инсталлировать пакет zabbix-agent (он будет запущен автоматически):
Далее открываем конфигурационный файл и добавляем в него следующие строки (адрес и имя сервера):
Перезапускаем агент:
Плагины ZTC
Для установки плагинов на хосты необходимо добавить репозитории ZTC. Это делается следующим образом:
Затем устанавливаем плагин:
Далее идем в файл и меняем следующие значения:
Для того чтобы пользователь Zabbix смог обновлять (и только обновлять) пакеты, необходимо добавить следующую строку в файл :
Не забываем установить плагин также на сервер. После внесенных изменений агент необходимо перезапустить:
Сервер ZTC
Возвращаемся на сервер Zabbix. Как и в случае с агентами, добавляем репозитории ZTC:
После этого:
Далее устанавливаем зависимости:
На этом моменте стоит пояснить, что в более ранних версиях плагины zabbix-sender и zabbix-get поставлялись сразу с zabbix-server, а сейчас их приходится ставить отдельно. Продолжаем:
Теперь открываем браузер, идем на vulners.com и заводим учетную запись. Заходим в аккаунт и на вкладке API KEYS генерируем ключ.
Возвращаемся к серверу, открываем в редакторе файл :
Рекомендуем почитать:
Xakep #254. Android: атака и защита
- Содержание выпуска
- Подписка на «Хакер»-30%
Вносим свои данные. Необходимо указать логин и пароль пользователя Zabbix, его адрес и fqdn. Если порт не дефолтный, его тоже меняем.
После настройки конфигурационного файла запускаем :
Скрипт создает необходимые хост-группу, шаблон, экшен и свой дашборд. В выводе будет указан URL дашборда ZTC и время, в которое будет запускаться сканирование на уязвимости. Запустит сканирование исполнение скрипта (при необходимости можно запустить вручную).
После проделанной работы открываем новый дашборд ZTC, переходим в шаблоны и ищем там Vulners OS-Report. В нем в разделе Hosts необходимо указать, переместив их в левый textbox, те серверы, которые требуют сканирования. Ждем, пока программа сканирует хосты, и получаем результаты. Работает он очень быстро (1000 хостов сканируется примерно за 30 минут).
По окончании сканирования получаем примерно такой вывод результатов:
На диаграмме красным выделены критические уязвимости, имеющие высокую оценку CVSS. Все данные удобно отсортированы в нескольких панелях: по уязвимым пакетам, по уязвимостям и по серверам. Соответственно, и исправить можно либо все уязвимости на конкретно выбранном сервере, либо определенную уязвимость на всех серверах.
Информацию по уязвимостям на серверах, как и о командах для устранения проблем, можно получить в подсказках, которые активируются при наведении на проблему. Там же будут представлены ссылки на vulners.com, где можно ознакомиться с проблемами ИБ, касающимися данных серверов.
Для установки обновлений необходимо просто подтвердить проблему. Особенно удобно это будет для тех, кто хочет устранить одну из уязвимостей на всех серверах, если нет систем управления типа Ansible.
Добавление устройства на Zabbix-сервере
Чтобы убедиться в работоспособности агента, нужно добавить хост testnode2 на Zabbix сервер и назначить ему проверки (checks).
Заметка. В заббиксе есть 2 типа проверок:
- Пассивные – Zabbix сервер запрашивает у агента какие-либо данные;
- Активные – агент посылает на сервер данные;
При установке агента мы указывали сервер в формате IP:PORT как раз для активных проверок.
Добавление нового устройства для мониторинга в Zabbix выполняется через Web-интерфейс. Перейдите в раздел Configuration -> Hosts.
Нажмите Create host и заполните данные
Обратите внимание, что Host name хоста должен полностью совпадать с hostname машины или значением параметра Hostname в конфиге агента
Во вкладке Templates добавить несколько встроенных Windows шаблонов. Шаблоны в Zabbix это наборы значений, триггеров, графов и правил обнаружения, которые могут быть назначены одному или нескольким хостам.
Эти интегрированные шаблоны имеют постфикс “active”, значит, будут использоваться активные проверки.
Нажмите Add. Чтобы не ждать пока сервер и агент увидят друг друга (обычно занимает пару минут), перезагрузите службу Zabbix Agent на testnode2 и проверьте лог агента (C:\Program Files\Zabbix Agent\zabbix_agentd.txt).
Сообщение “started ” говорит о том, что на сервере найдены активные проверки для этого хоста. Теперь посмотрим на данные, которые пришли на сервер Zabbix от агента. Для этого в Zabbix перейдите на Monitoring -> Latest Data и выберете нужный вам хост в поле Hosts.
В этом разделе отображаются последние данные, которые пришли на сервер по выбранным хостам или группам хостов.
Обратите внимание на то, что в дашборде Zabbix висит уведомление о том, что служба BITS не запущена. Это уведомление появилось потому что мы назначили стандартные шаблоны нашему хосту
В одном из шаблонов был мониторинг сервиса BITS и соответствующий триггер, который срабатывает если служба BITS находится не в статусе Running.
На этом настройка Windows Agentа завершена.
Размещение объектов на карте
Давайте рассмотрим как же разместить объекты на карте. В первую очередь необходимо в настройках узла выставить «инвентарные данные» в положение «вручную».
Далее у нас есть 2 способа размещения объектов.
Первый способ — прописывание точных координат в самих инвентарных данных. Для этого листаем вниз и находим 2 поля «широта» и «долгота» и в них вписываем координаты.
Второй способ — размещение непосредственно на самой карте. Тут мы переходим на интерактивную карту и справа видим надпись «Узлы сети». При наведении на нее мышкой раскрывается список узлов. Те узлы, которые еще не нанесены на карту будут перед названием иметь значок «мишень», которые уже нанесены на карту — соответственно будут без этой иконки.
Чтобы разместить узел, нажимаете на эту «мишень» и далее просто тыкаете левой кнопкой мыши на то место, куда необходимо разместить данный узел.
Вот и все. На этом размещение узла закончено. Если вы не будите переставлять узел в другое место, то можно вернуть инвентарные данные опять в положение «Авто», если это Вам требуется.
Установка сервера Zabbix
Перед тем как мы сможем установить zabbix ubuntu 17.04, 16.04 и в других версиях, потребуется кое-что настроить. Нужно установить веб-сервер, MySQL и PHP. Если эти сервисы у вас уже настроены, то просто можете пропустить этот шаг.
Установка Apache, PHP, MySQL
Для установки выполните такие команды:
Дальше необходимо настроить правильный часовой пояс в php.ini. Вам нужна секция Data и строка timezone:
Добавление репозитория
Например, можно использовать wget для загрузки файла:
Если у вас другая операционная система, посмотрите список файлов на сервере через браузер и выберите нужный установщик. Затем установка zabbix 3.2 на Ubuntu:
Установка и настройка Zabbix
Когда репозиторий будет добавлен, можно перейти к настройке самого сервера Zabbix. Для установки программ выполните:
Как я уже говорил, для работы программы понадобится база данных. Сейчас нам предстоит создать ее и выдать все необходимые привилегии пользователю:
Для нормальной работы Zabbix нужна кодировка базы данных UTF-8, если вы создадите базу в кодировке utf8mb4, то получите ошибку: «Specified key was too long; max key length is 767 bytes». Дальше нужно загрузить все таблицы в базу данных, они находятся в папке /usr/share/zabbix-server-mysql/. Вместо zabbix и zabbixdb нужно указать своего пользователя и имя базы данных:
Чтобы Zabbix смог подключиться к базе данных нужно отредактировать конфигурационный файл /etc/zabbix/zabbix_server.conf и указать там данные аутентификации:
Далее, включаем конфигурационный файл zabbix для apache2:
Теперь нужно перезапустить Zabbix и Apache, чтобы применить изменения:
Установка и настройка Zabbix Ubuntu почти завершена, осталось настроить веб-интерфейс.
Настройка веб-интерфейса zabbix
Веб-интерфейс программы готов к работе, теперь вы можете его открыть, набрав в адресной строке http://адрес_сервера/zabbix/
На первой странице нажмите «Next». На следующем шаге программа проверит правильно ли настроен интерпретатор PHP:
Дальше укажите параметры доступа к базе данных, они будут использоваться для работы веб-интерфейса:
На следующем шаге можно изменить ip и порт, на котором будет слушать Zabbix:
Последний шаг, проверьте все ли верно и не нужно ли чего менять:
Если получаете такую ошибку, то файл нужно скачать и сохранить в /etc/zabbix/ вручную:
Владельца файла нужно изменить на www-data, чтобы программа имела к нему права доступа:
Теперь вернитесь в браузер и нажмите «Finish»:
Перед вами откроется окно ввода логина и пароля. Используйте стандартные значения, логин admin и пароль zabbix.
Вот и все, теперь установка Zabbix Ubuntu завершена и вы можете переходить к настройке.
Низкоуровневые обнаружения в теории
LLD появилась в Zabbix где-то с версии 2.0. Эта техника применяется не только для автообнаружения на хостах, LLD еще очень хорошо разгружает работу сервера Zabbix. В случае активной проверки сервер Zabbix сам отправляет запрос на хост, чтобы получить метрику. Обычно запрос ставится в очередь наряду со всеми остальными запросами и обрабатывается в порядке очереди, но, если метрик много, сервер будет серьезно загружен. В случае с LLD в режиме проверки хост zabbix-trapper сам отправляет серверу список метрик, а спустя небольшое время — и сами метрики со значениями. То есть нагрузка выходит минимальная. Сервер сам решает, что принимать, а что нет, исходя из настроек.
Реализация технологии LLD на хосте следующая: используется связка «приложение — скрипт — сендер Zabbix — сервер Zabbix». Давай пройдемся по всем этапам, чтобы было понятнее.
- Инициализация скрипта.
- Запрос от скрипта к приложению на получение метрик.
- Обработка запроса от скрипта приложением.
- Ответ скрипту от приложения с передачей данных.
- Формирование скриптом JSON LLD для передачи имен метрик на сервер Zabbix.
- Выдача JSON при вызове скрипта.
- Обработка полученных от приложения данных путем формирования метрик и их значений (к примеру, с записью в файл).
- Вызов сендера Zabbix скриптом и инициализация отправки метрик на сервер.
- Сендер передает запрос на сервер Zabbix. Режим проверки на сервере zabbix-trapper.
- Сервер Zabbix считывает метрики и отправляет ответ для сендера.
- Сендер получает ответ от сервера и логирует его на экран или в файл.
Чтобы было наглядней, я подготовил для тебя небольшую графическую схему взаимодействия компонентов. Надеюсь, она тебе поможет.
Схема взаимодействия компонентов Zabbix LLD
В остальных вопросах ты можешь смело обращаться к документации Zabbix. Русскоязычная документация лежит в открытом доступе.
INFO
Чтобы ясно понимать принципы работы и взаимодействия компонентов в системе, всегда рисуй схему. Это поможет тебе увидеть полную картину работы системы и освежит память в случае, если ты давно не притрагивался к компонентам системы.
Как это выглядит на практике
Что можно мониторить с помощью LLD? Да все что угодно! Главное — чтобы на хосте было большое количество объектов. Также желательно, чтобы объекты имели структуру. Хороший пример — мониторинг количества сообщений в очередях на сервере RabbitMQ. Общее количество очередей на сервере может быть больше ста штук. А из структуры объектов нам понадобятся только имя очереди на сервере и количество сообщений за последнюю минуту.
Итак, ставим себе задачу.
- Собирать количество сообщений в очереди AMQP на сервере.
- В том случае, если в очереди скопилось больше пяти сообщений за пять минут, вывести триггер предупреждения. Если свыше 100 за 30 минут, то триггер повышается до статуса чрезвычайного.
INFO
В этом примере сервер и хост Zabbix развернуты на системе Linux CentOS 7.2. Версия хоста и сервера — 3.4. Ты можешь использовать любой другой дистрибутив операционной системы на свое усмотрение. Версию Zabbix советую использовать выше 2.0.
Переходим к настройке LLD на сервере Zabbix. Необходимо будет настроить шаблон, а внутри него — обнаружение. Все просто.
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score!
Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя!
Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»
Установка zabbix imap
- Необходимо скачать саму карту и положить ее в папку zabbix-морды. Какую именно скачивать зависит от вашей версии заббикс-сервера. Вот ссылки для 2.2-2.4 и 3.0-3.2 и 3.4
- Редактируем файл include/menu.inc.php добавляя тудадля версии 2.2-.2.4 — в самый конец вставить:
require_once dirname(__FILE__).'/../imap/menu.inc.php';
для версии 3.x примерно на 314 строке находим «$denied_page_requested = false;» и перед этой строчкой вставляем:
require_once dirname(__FILE__).'/../imap/menu3.inc.php';
Сохраняем и выходим.
- Теперь у нас в мониторинге появилось меню «Интерактивная карта».
Все, основное уже есть и работает. Есть множество дополнительных настроек, все они с комментариями в файле, не вижу смысла их еще раз переписывать, я думаю сами почитаете. чтобы они заработали, необходимо выполнить следующее: найдите в папке imap файл settings.js.template, переименуйте в settings.js в данном файле теперь можете менять настройки.
Так же можно устанавливать свои значки на устройства.
Чтобы работали связи между узлами, необходимо добавить пару таблиц в базу:
Установка Zabbix Agent в Linux
Теперь установим агент Zabbix в Linux. Для установки Zabbix агента в Ubuntu Server 18.04 с помощью пакетного менеджера нужно скачать и установить репозиторий Zabbix. Затем из репозитория установим zabbix agent:
В CentOS для добавления репозитория и установки агента zabbix используется команды:
Перед тем как мы запустим zabbix агент, нужно отредактировать конфигурационный файл /etc/zabbix/zabbix_agentd.conf. В нем нужно указать IP адрес сервера Zabbix для активных проверок.
Server=IP ServerActive=IP:10051 Hostname=testagent
После этого запустите сервис агента:
Убедитесь, что агент успешно запустился.
Строка cannot parse list of active checks говорит о том, что на сервере нет активных проверок для этого хоста.
Как и в случае с Windows агентом, вам нужно добавить ваш Linux хост в настройках сервера Zabbix
Обратите внимание на параметр Host name в настройка хоста в интерфейсе заббикс сервера — этот параметр должен совпадать с Hostname параметром, который мы указываем в конфиге Zabbix -агента. В конфиге выше я указывал имя хоста testagent
Перезагрузите Zabbix агент и проверьте лог.
Проверьте, что данные от агента появились на сервере Zabbix.
На этом настройка Zabbix-агента на Linux системе завершена. В следующей статье мы рассмотрим безагентный мониторинг доступности узлов в Zabbix через ICMP Ping.