Гид по технологиям

Установка и настройка GVM (Greenbone) на Ubuntu 20.04

• 6 min read • Безопасность • Обновлено 24 Nov 2025
GVM на Ubuntu 20.04 — установка и настройка
GVM на Ubuntu 20.04 — установка и настройка

Greenbone Vulnerability Management — баннер установки

GVM, также известный как Greenbone Vulnerability Management, — это набор инструментов с открытым кодом для сканирования уязвимостей и управления ими. Кратко: сканер + менеджер + веб‑интерфейс. В одном предложении: GVM проверяет сеть и сервисы на известные уязвимости и даёт отчёты с приоритетами.

В этом подробном руководстве показано, как установить и настроить GVM на сервере Ubuntu 20.04. Текст разбит на логические блоки, включены часто встречающиеся ошибки и практические рекомендации для администраторов и специалистов по информационной безопасности.

Определения

  • GVM: набор инструментов Greenbone для управления уязвимостями.
  • OpenVAS: сканер уязвимостей в составе GVM.
  • GVMD: демон менеджера уязвимостей (backend).
  • GSA: Greenbone Security Assistant — веб‑интерфейс GVM.

Требования

  • Сервер с Ubuntu 20.04 (64‑бит).
  • Настроенный root‑доступ или пользователь с sudo.
  • Рекомендуется резервная копия системы перед началом.

Важно: многие команды требуют выполнения от root или через sudo. Следуйте шагам в указанном порядке.

Начало работы

Перед установкой обновите пакеты системы:

apt-get update -y

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

Установка необходимых зависимостей

Установите весь набор библиотек, инструментов сборки и утилит, необходимых GVM:

apt-get install software-properties-common build-essential cmake pkg-config libglib2.0-dev libgpgme-dev libgnutls28-dev uuid-dev libssh-gcrypt-dev libldap2-dev doxygen graphviz libradcli-dev libhiredis-dev libpcap-dev bison libksba-dev libsnmp-dev gcc-mingw-w64 heimdal-dev libpopt-dev xmltoman redis-server xsltproc libical-dev gnutls-bin nmap rpm nsis curl wget fakeroot gnupg sshpass socat snmp smbclient libmicrohttpd-dev libxml2-dev python3-polib gettext rsync xml-twig-tools python3-paramiko python3-lxml python3-defusedxml python3-pip python3-psutil python3-impacket virtualenv vim git texlive-latex-extra texlive-fonts-recommended -y

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

curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list

Примечание: в некоторых окружениях командную строку для добавления ключа и репозитория может потребоваться разбить на две отдельные команды. Если команда вызывает ошибку, выполните сначала загрузку ключа, затем добавление репозитория.

Обновите кэш и установите yarn:

apt-get update -y  
apt-get install yarn -y

Затем обновите пакеты yarn:

yarn install  
yarn upgrade

Установка и настройка PostgreSQL

GVM использует PostgreSQL как backend. Установите сервер PostgreSQL:

apt-get install postgresql postgresql-contrib postgresql-server-dev-all -y

Создайте роль и базу данных для GVM:

sudo -u postgres bash  
export LC_ALL="C"  
createuser -DRS gvm  
createdb -O gvm gvmd

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

psql gvmd  
create role dba with superuser noinherit;  
grant dba to gvm;  
create extension "uuid-ossp";  
create extension "pgcrypto";

Выйдите из psql и оболочки postgres:

exit  
exit

Совет: если psql жалуется на права, проверьте, что вы выполняете команды от пользователя postgres.

Загрузка исходников GVM

Создайте отдельный каталог и пользователя для GVM:

mkdir /opt/gvm  
adduser gvm --disabled-password --home /opt/gvm/ --no-create-home --gecos ''

Добавьте пользователя gvm в группу redis и назначьте права на каталог:

usermod -aG redis gvm  
chown gvm:gvm /opt/gvm/

Добавьте пути GVM в PATH и примените их:

echo 'export PATH="$PATH:/opt/gvm/bin:/opt/gvm/sbin:/opt/gvm/.local/bin"' | tee -a /etc/profile.d/gvm.sh  
chmod 0755 /etc/profile.d/gvm.sh  
source /etc/profile.d/gvm.sh

Определите путь к библиотекам GVM:

nano /etc/ld.so.conf.d/gvm.conf

Добавьте в файл строку:

/opt/gvm/lib

Теперь выполните вход под пользователем gvm и создайте каталог src для исходников:

su - gvm  
mkdir src

Скачайте компоненты GVM в каталог src (команды git сохранены в исходном виде):

cd src  
export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:$PKG_CONFIG_PATH  
git clone -b gvm-libs-20.08 --single-branch https://github.com/greenbone/gvm-libs.git  
git clone -b openvas-20.08 --single-branch https://github.com/greenbone/openvas.git   
git clone -b gvmd-20.08 --single-branch https://github.com/greenbone/gvmd.git   
git clone -b master --single-branch https://github.com/greenbone/openvas-smb.git   
git clone -b gsa-20.08 --single-branch https://github.com/greenbone/gsa.git   
git clone -b ospd-openvas-20.08 --single-branch https://github.com/greenbone/ospd-openvas.git   
git clone -b ospd-20.08 --single-branch https://github.com/greenbone/ospd.git

Совет: при медленном клонировании используйте зеркала или попробуйте повторить команду позднее.

Сборка gvm-libs

Перейдите в каталог gvm-libs, подготовьте окружение и соберите библиотеку:

cd gvm-libs  
export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:$PKG_CONFIG_PATH  
mkdir build

Сборка и установка:

cd build  
cmake -DCMAKE_INSTALL_PREFIX=/opt/gvm ..  
make  
make doc  
make install

Сборка openvas-smb

cd /opt/gvm/src  
cd openvas-smb  
export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:$PKG_CONFIG_PATH  
mkdir build
cd build  
cmake -DCMAKE_INSTALL_PREFIX=/opt/gvm ..  
make  
make install

Сборка OpenVAS Scanner

cd /opt/gvm/src  
cd openvas  
export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:$PKG_CONFIG_PATH  
mkdir build
cd build  
cmake -DCMAKE_INSTALL_PREFIX=/opt/gvm ..  
make  
make doc  
make install

Затем выйдите из пользователя gvm и обновите кэш библиотек:

exit
export LC_ALL="C"  
ldconfig

Скопируйте конфигурацию Redis для OpenVAS и установите права:

cp /etc/redis/redis.conf /etc/redis/redis.orig  
cp /opt/gvm/src/openvas/config/redis-openvas.conf /etc/redis/
chown redis:redis /etc/redis/redis-openvas.conf

Обновите путь до Unix‑сокета Redis для OpenVAS:

echo "db_address = /run/redis-openvas/redis.sock" > /opt/gvm/etc/openvas/openvas.conf

Включите и запустите службу Redis для OpenVAS:

systemctl enable [email protected]  
systemctl start [email protected]

Настройте параметры ядра, необходимые для работы OpenVAS:

sysctl -w net.core.somaxconn=1024   
sysctl vm.overcommit_memory=1   
echo "net.core.somaxconn=1024" >> /etc/sysctl.conf   
echo "vm.overcommit_memory=1" >> /etc/sysctl.conf

Перезагрузите sysctl конфигурацию:

sysctl -p

Создание systemd сервиса для отключения THP

Создайте файл сервиса для отключения Transparent Huge Pages:

nano /etc/systemd/system/disable-thp.service

Добавьте содержимое:

Description=Disable Transparent Huge Pages (THP)

[Service]
Type=simple
ExecStart=/bin/sh -c "echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled && echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag"

[Install]
WantedBy=multi-user.target

Примените и запустите сервис:

systemctl daemon-reload
systemctl start disable-thp   
systemctl enable disable-thp

Перезапустите Redis:

systemctl restart redis-server

Разрешите пользователю gvm запуск определённых команд без пароля (NOPASSWD):

sed 's/Defaults\s.*secure_path="\/usr\/local\/sbin:\/usr\/local\/bin:\/usr\/sbin:\/usr\/bin:\/sbin:\/bin:\/snap\/bin"/Defaults secure_path="\/usr\/local\/sbin:\/usr\/local\/bin:\/usr\/sbin:\/usr\/bin:\/sbin:\/bin:\/snap\/bin:\/opt\/gvm\/sbin"/g' /etc/sudoers | EDITOR='tee' visudo  
echo "gvm ALL = NOPASSWD: /opt/gvm/sbin/openvas" > /etc/sudoers.d/gvm  
echo "gvm ALL = NOPASSWD: /opt/gvm/sbin/gsad" >> /etc/sudoers.d/gvm

Важно: проявляйте осторожность при изменении sudoers; неверная конфигурация может лишить вас доступа sudo.

Обновление NVTs

Выполните обновление базы Network Vulnerability Tests:

su - gvm
greenbone-nvt-sync

После завершения обновите Redis с информацией о VT:

sudo openvas --update-vt-info

Установка GVMD (Greenbone Vulnerability Manager)

Сборка менеджера:

cd /opt/gvm/src/gvmd   
export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:$PKG_CONFIG_PATH   
mkdir build
cd build/   
cmake -DCMAKE_INSTALL_PREFIX=/opt/gvm ..   
make   
make doc   
make install

Создайте сертификаты для GVMD:

gvm-manage-certs -a

Ожидаемый результат: генерация ключей и сертификатов CA, серверных и клиентских сертификатов, с сообщением об установленных файлах в /opt/gvm/var/lib/gvm/.

Настройка и обновление фидов GVM

Создайте администратора для веб‑интерфейса:

gvmd --create-user=admin --password=admin

Получите UUID пользователя admin:

gvmd --get-users --verbose

Пример вывода должен содержать UUID, например:

admin 1288cbcf-23a0-407f-8013-b7a57acc5795

Затем используйте UUID для модификации настроек gvmd (вставьте ваш UUID):

gvmd --modify-setting 78eceaec-3385-11ea-b237-28d24461215b --value 1288cbcf-23a0-407f-8013-b7a57acc5795

Синхронизируйте фиды Greenbone:

greenbone-feed-sync --type GVMD_DATA  
greenbone-feed-sync --type SCAP  
greenbone-feed-sync --type CERT

Установка GSA

Сборка веб‑интерфейса GSA:

cd /opt/gvm/src/gsa   
export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:$PKG_CONFIG_PATH   
mkdir build
cd build/   
cmake -DCMAKE_INSTALL_PREFIX=/opt/gvm ..   
make  
make doc  
make install

Создайте лог для gsad:

touch /opt/gvm/var/log/gvm/gsad.log

Настройка OSPD и OSPD‑OpenVAS

Подготовьте окружение и виртуальное окружение Python для сканера:

cd /opt/gvm/src   
export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:$PKG_CONFIG_PATH
virtualenv --python python3.8 /opt/gvm/bin/ospd-scanner/

Активируйте виртуальное окружение:

source /opt/gvm/bin/ospd-scanner/bin/activate

Создайте директорию для runtime файлов ospd:

mkdir /opt/gvm/var/run/ospd/

Установите ospd и ospd-openvas через pip:

cd ospd   
pip3 install .
cd /opt/gvm/src/ospd-openvas  
pip3 install .

Выйдите из пользователя gvm:

exit

Создание systemd сервисов для gvmd, gsad и ospd-openvas

Создайте сервис gvmd:

nano /etc/systemd/system/gvmd.service

Добавьте содержимое сервиса (см. исходник). После сохранения создайте сервис gsad:

nano /etc/systemd/system/gsad.service

Добавьте содержимое сервиса (см. исходник). Затем создайте сервис ospd-openvas:

nano /etc/systemd/system/ospd-openvas.service

Добавьте содержимое сервиса (см. исходник). После этого перезагрузите systemd и включите сервисы:

systemctl daemon-reload
systemctl enable gvmd  
systemctl enable gsad  
systemctl enable ospd-openvas   
systemctl start gvmd  
systemctl start gsad  
systemctl start ospd-openvas

Проверьте статус сервисов:

systemctl status gvmd  
systemctl status gsad  
systemctl status ospd-openvas

Изменение стандартного сканера

Войдите под пользователем gvm:

sudo su - gvm

Получите UUID сканера:

gvmd --get-scanners

Пример вывода может выглядеть так:

08b69003-5fc2-4037-a479-93b440211c73  OpenVAS  /var/run/ospd/ospd.sock  0  OpenVAS Default
6acd0832-df90-11e4-b9d5-28d24461215b  CVE    0  CVE

Установите OpenVAS как стандартный сканер, подставив ваш UUID:

gvmd --modify-scanner=08b69003-5fc2-4037-a479-93b440211c73 --scanner-host=/var/run/ospd/ospd.sock

Доступ к веб‑интерфейсу GVM

После запуска GSA веб‑интерфейс доступен по HTTPS на портах 80/443 (в зависимости от конфигурации). Откройте:

https://your-server-ip

Вас перенаправит на страницу входа в GVM:

Страница входа в GVM

Введите admin и пароль, затем нажмите Login — вы попадёте на панель управления:

Панель GVM

Проверка и отладка

  1. Логи: /opt/gvm/var/log/gvm/ и системные логи (journalctl -u gvmd, -u ospd-openvas, -u gsad).
  2. Ошибки с правами: проверьте владельца /opt/gvm и сокетов Redis/ospd.
  3. Если gvmd не стартует, убедитесь, что PostgreSQL работоспособен и расширения созданы.
  4. Если обновление фидов падает, проверьте сетевой доступ и правильность времени на сервере.

Пример полезных команд для отладки:

journalctl -u gvmd -f
journalctl -u ospd-openvas -f
journalctl -u gsad -f
ss -ltnp | grep ospd
ps aux | grep redis

Рекомендации по безопасности

  • Запускайте GVM в изолированном окружении или на отдельном сегменте сети.
  • Ограничьте доступ к веб‑интерфейсу (VPN, IP‑фильтрация).
  • Регулярно обновляйте фиды и пакеты безопасности.
  • Храните бэкапы базы данных и сертификатов.

Регламент обновлений (мини‑методология)

  • Ежедневно: greenbone-nvt-sync (или cron с проверкой логов).
  • Еженедельно: обновление SCAP и CERT фидов.
  • После обновлений: проверяйте целостность сервисов и корректную работу сканера.

Пример crontab для пользователя gvm (выполнять под gvm):

0 3 * * * /usr/bin/greenbone-nvt-sync >> /opt/gvm/var/log/gvm/feed-sync.log 2>&1
0 4 * * 0 /usr/bin/greenbone-feed-sync --type SCAP >> /opt/gvm/var/log/gvm/feed-sync-scap.log 2>&1
0 5 * * 0 /usr/bin/greenbone-feed-sync --type CERT >> /opt/gvm/var/log/gvm/feed-sync-cert.log 2>&1

Контрольные чеклисты по ролям

  • Системный администратор:

    • Создать пользователя gvm и права на /opt/gvm.
    • Настроить и проверить PostgreSQL и Redis.
    • Настроить systemd‑сервисы и мониторинг.
  • Специалист по безопасности:

    • Проверить корректность фидов и расписание обновлений.
    • Настроить ограничения доступа к GSA.
    • Тестировать сканирование на тестовой подсети перед продом.

Критерии приёмки

  • Все сервисы gvmd, gsad и ospd-openvas находятся в статусе active/running.
  • Админ‑пользователь создан и может войти в GSA.
  • Фиды синхронизированы без ошибок.
  • Сканер может выполнить тестовый скан на локальном хосте.

Частые ошибки и способы исправления

  • “gvmd не запускается”: проверьте логи journalctl -u gvmd и доступ к PostgreSQL.
  • “Не удалось подключиться к сокету ospd”: убедитесь, что путь сокета совпадает в настройках и существует файл сокета с правильными правами.
  • “greenbone-nvt-sync падает”: проверьте сетевой доступ и наличие места на диске.

Резервное копирование и восстановление (кратко)

  • Резервируйте базу PostgreSQL (pg_dump) и каталог /opt/gvm/var/lib/gvm.
  • Для восстановления: восстановить pg_dump и вернуть файлы /opt/gvm и права владельцев, затем запустить сервисы.

Короткий чек по производительности

  • Для небольших развертываний достаточно 2 CPU и 4 ГБ RAM, для крупных — увеличьте ресурсы и хранение. (Оценки ориентировочные — тестируйте под нагрузкой.)

Заключение

Поздравляем — GVM установлен и запущен. Дальше: настройте регулярные обновления фидов, отрегулируйте права доступа и запланируйте тестовые сканирования. Если возникнут ошибки — сначала проверьте логи сервисов и права на файлы/сокеты.

Важно: при внедрении в продуктивную среду сначала протестируйте сканирования на изолированной сети, чтобы избежать ложных срабатываний или влияния на сервисы.

Краткое резюме шагов: подготовить систему, установить зависимости, собрать компоненты из исходников, настроить PostgreSQL и Redis, создать systemd‑сервисы, синхронизировать фиды и проверить работу через веб‑интерфейс.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро