Этот плагин преобразует вашу систему мониторинга Zabbix в систему управления уязвимостями, рисками и безопасностью для вашей инфраструктуры.
Что делает плагин
Он предоставляет Zabbix информацию об уязвимостях, существующих во всей вашей инфраструктуре, и предлагает легко применимые планы исправления.
Информация отображается в Zabbix в следующем формате:
- Максимальный показатель CVSS для каждого сервера.
- Команда для исправления всех обнаруженных уязвимостей для каждого сервера.
- Список бюллетеней по безопасности с описаниями уязвимых пакетов, действительными для вашей инфраструктуры.
- Список всех уязвимых пакетов в вашей инфраструктуре.
Информация о бюллетенях по безопасности и пакетах включает:
- Индекс воздействия на инфраструктуру.
- CVSS-оценка пакета или бюллетеня.
- Количество затронутых серверов.
- Подробный список затронутых хостов.
- Гиперссылка на описание бюллетени.
Иногда невозможно обновить все пакеты на всех серверах до версии, которая устраняет существующие уязвимости.
Предложенное представление позволяет выборочно обновлять серверы или пакеты.
Этот подход позволяет исправлять уязвимости с использованием разных стратегий:
- все уязвимости на конкретном сервере;
- одна уязвимость во всей инфраструктуре.
Это можно сделать непосредственно из Zabbix (используя стандартную функциональность) либо по команде администратора, либо автоматически.
Как работает плагин
- Используя Zabbix API, плагин получает списки установленных пакетов, имен и версий ОС со всех серверов в инфраструктуре (если с ними связан шаблон «Vulners OS-Report»).
- Передача данных в Vulners
- Получает информацию об уязвимостях для каждого сервера.
- Обрабатывает полученную информацию, агрегирует ее и отправляет обратно в Zabbix через zabbix-sender.
- Наконец, результат отображается в Zabbix.
Требования
На узле zabbix-сервера:
- python 3 (только для ztc скриптов)
- python modules: pyzabbix, jpath, requests
- zabbix version 3.4
- zabbix-sender utility
- zabbix-get utility
На всех серверах, требующих сканирования уязвимостей:
- zabbix-agent
Установка
RHEL, CentOS и другие RPM
rpm -Uhv https://repo.vulners.com/redhat/vulners-repo.rpm
На узле zabbix-сервера:
yum install zabbix-threat-control-main zabbix-threat-control-host
На всех серверах, требующих сканирования уязвимостей:
yum install zabbix-threat-control-host
Debian и другие на его основе
wget https://repo.vulners.com/debian/vulners-repo.deb dpkg -i vulners-repo.deb
На узле zabbix-сервера:
apt-get update && apt-get install zabbix-threat-control-main zabbix-threat-control-host
На всех серверах, требующих сканирования уязвимостей:
apt-get update && apt-get install zabbix-threat-control-host
Сборка из исходников
На узле zabbix-сервера:
git clone https://github.com/vulnersCom/zabbix-threat-control.git mkdir -p /opt/monitoring/zabbix-threat-control cp zabbix-threat-control/*.py /opt/monitoring/zabbix-threat-control/ cp zabbix-threat-control/*.conf /opt/monitoring/zabbix-threat-control/ chown -R zabbix:zabbix /opt/monitoring/zabbix-threat-control chmod 640 /opt/monitoring/zabbix-threat-control/*.conf touch /var/log/zabbix-threat-control.log chown zabbix:zabbix /var/log/zabbix-threat-control.log chmod 664 /var/log/zabbix-threat-control.log
На всех серверах, требующих сканирования уязвимостей:
git clone https://github.com/vulnersCom/zabbix-threat-control.git mkdir -p /opt/monitoring/ cp -R zabbix-threat-control/os-report /opt/monitoring/ chown -R zabbix:zabbix /opt/monitoring/os-report
Настройка
Файл конфигурации находится здесь:
/opt/monitoring/zabbix-threat-control/ztc.conf
Учетные данные Vulners
Для использования API Vulners вам нужен api-ключ.
Чтобы получить его, выполните следующие шаги:
Войдите в систему на vulners.com.
Перейдите в userinfo https://vulners.com/userinfo.
Выберите «API KEYS».
Выберите «scan» в меню областей и нажмите «Generate new key».
Вы получите api-ключ, который выглядит так:
RGB9YPJG7CFAXP35PMDVYFFJPGZ9ZIRO1VGO9K9269B0K86K6XQQQR32O6007NUK
Теперь вам нужно добавить api-ключ Vulners в свой файл конфигурации (параметр) – >VulnersApiKey
VulnersApiKey = RGB9YPJG7CFAXP35PMDVYFFJPGZ9ZIRO1VGO9K9269B0K86K6XQQQR32O6007NUK
Учетные данные Zabbix
Чтобы подключиться к Zabbix, вам нужно указать следующее в файле конфигурации:
URL, имя пользователя и пароль. Обратите внимание, что Пользователь должен иметь права на создание групп, хостов и шаблонов в Zabbix.
Доменное имя и порт Zabbix-сервера для передачи данных с помощью zabbix-отправителя.
Ниже приведен пример допустимого файла конфигурации:
ZabbixApiUser = yourlogin ZabbixApiPassword = yourpassword ZabbixFrontUrl = https://zabbixfront.yourdomain.com ZabbixServerFQDN = zabbixserver.yourdomain.com ZabbixServerPort = 10051
Объект Zabbix
Чтобы создать все необходимые объекты в Zabbix, запустите:
prepare.py
скрипт с параметрами:
/opt/monitoring/zabbix-threat-control/prepare.py -uvtda
Он проверит, что утилиты zabbix-agent и zabbix-get настроены правильно и создают следующие объекты с использованием Zabbix API:
- Шаблон, используемый для сбора данных с серверов.
- Zabbix хосты для получения данных об уязвимостях.
- Уязвимость устраняется действием команды.
- Панель инструментов для отображения результатов.
Серверы, требующие сканирования на наличие уязвимостей
Zabbix-агент должен иметь возможность выполнять удаленные команды.
Для этого измените параметры в файле конфигурации zabbix-agent
/etc/zabbix/zabbix_agentd.conf
добавьте следующие параметры:
EnableRemoteCommands=1 LogRemoteCommands=1
Zabbix-агент должен иметь возможность обновлять пакеты с правами root. Для этого добавьте строку в файл /etc/sudoers
zabbix ALL=(ALL) NOPASSWD: /usr/bin/yum -y update * zabbix ALL=(ALL) NOPASSWD: /usr/bin/apt-get --assume-yes install --only-upgrade *
Выполнение
/opt/monitoring/os-report/report.py
Скрипт передает имя, версию и установленные пакеты операционной системы в Zabbix.
Работает с zabbix-агентом на всех хостах, к которым связан шаблон «Vulners OS-Report».
/opt/monitoring/zabbix-threat-control/scan.py
Скрипт обрабатывает необработанные данные из zabbix и vulners и переносит их в систему мониторинга с помощью zabbix-sender.
Работает с zabbix-агентом на сервере Zabbix через пункт «Service» на хосте «Vulners – Statistics».
Эти 2 скрипта выше запускаются один раз в день.
Время запуска выбирается случайным образом во время установки и не изменяется во время работы.
/opt/monitoring/zabbix-threat-control/fix.py
Скрипт запускает команды для исправления уязвимостей на серверах.
Выполняется как удаленная команда в действии «Vunlers» в Zabbix.
см.также: