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

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 buildcd 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 buildcd build
cmake -DCMAKE_INSTALL_PREFIX=/opt/gvm ..
make
make doc
make installЗатем выйдите из пользователя gvm и обновите кэш библиотек:
exitexport 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-reloadsystemctl 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 - gvmgreenbone-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 buildcd 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 buildcd 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_PATHvirtualenv --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-reloadsystemctl 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 (в зависимости от конфигурации). Откройте:
Вас перенаправит на страницу входа в GVM:

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

Проверка и отладка
- Логи: /opt/gvm/var/log/gvm/ и системные логи (journalctl -u gvmd, -u ospd-openvas, -u gsad).
- Ошибки с правами: проверьте владельца /opt/gvm и сокетов Redis/ospd.
- Если gvmd не стартует, убедитесь, что PostgreSQL работоспособен и расширения созданы.
- Если обновление фидов падает, проверьте сетевой доступ и правильность времени на сервере.
Пример полезных команд для отладки:
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‑сервисы, синхронизировать фиды и проверить работу через веб‑интерфейс.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента