Содержание статьи
Что такое 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. Она проходит в несколько этапов:
- Установка сервера Zabbix и агентов на отслеживаемые хосты.
- Установка плагинов ZTC на отслеживаемые хосты и их настройка.
- Установка 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, в которой можно получить поддержку и обратную связь.