Руководство по запуску GVM (Greenbone)

Этот документ описывает, что именно было реализовано в пакетах, как запустить весь стек одной командой через gvm-stack.target, как устроены зависимости, и как проверить работу. Конфигурации спроектированы так, чтобы никогда не перезаписывались при обновлениях, а сервисы стартовали только после перезагрузки или вручную через таргет.

GVM (Greenbone) в NiceOS: запуск, зависимости, проверка

Этот документ описывает, что именно было реализовано в пакетах, как запустить весь стек одной командой через gvm-stack.target, как устроены зависимости, и как проверить работу. Конфигурации спроектированы так, чтобы никогда не перезаписывались при обновлениях (%config(noreplace)), а сервисы стартовали только после перезагрузки или вручную через таргет.

Итог Нажмите enable --now gvm-stack.target — и поднимется весь стек: Redis → сканер (OSPD/OpenVASD) → инициализация БД/провижен → GVMD → GSAD. Никаких автозапусков в %post.

Содержание

  1. Что мы сделали (архитектура и политика конфигов)
  2. Состав пакетов и роли
  3. Граф зависимостей и порядок запуска
  4. Установка и первый запуск
  5. Проверка работоспособности
  6. Синхронизация фидов (initial & daily)
  7. Где лежат конфиги и как их править безопасно
  8. Модель безопасности и права
  9. Диагностика неисправностей

1) Что мы сделали

Единая точка управления — gvm-stack.target

  • Все сервисы стека «подвешены» на общий таргет через WantedBy=gvm-stack.target и PartOf=gvm-stack.target.
  • Сервисы не автозапускаются из %post; админ решает, когда включать таргет.
  • Порядок обеспечивается Requires=/After= в самих юнитах.

Политика конфигураций — не затираем

  • Все файлы в /etc установлены как %config(noreplace).
  • Per-service настройки — через /etc/sysconfig/* (или TOML), редактируются админом.
  • Для однократных шагов (БД/админ/initial feed) применены oneshot-юниты с маркерами.

Инициализация — строго по требованию

  • gvmd-db-setup.service создаёт роли/БД gvmd однократно (маркер /var/lib/gvm/.db-initialized).
  • gvmd-provision.service создаёт пользователя admin, назначает Feed Owner (маркер /var/lib/gvm/.admin-provisioned).
  • greenbone-initial-sync.service подтягивает минимум фида (маркер /var/lib/gvm/.feed-initialized).

Безопасность по умолчанию

  • Сервисы работают от системного пользователя gvm с ограничениями systemd.
  • GSAD слушает 127.0.0.1 по умолчанию; публикация наружу — осознанное действие.
  • Сканер не требует sudo: использованы file capabilities (cap_net_raw, cap_net_bind_service).

2) Состав пакетов

infra gvm-common — системный пользователь/группа gvm, каталоги в /var/lib/gvm, /run/gvm, ключевые макросы и таргет gvm-stack.target.
cache redis-openvas — выделенный Redis с UNIX-сокетом /run/redis-openvas/redis.sock.
scanner openvas-scanner — ядро сканера (C); конфиг /etc/openvas/openvas.conf.
scanner-api python-ospd-openvas — OSPD-демон, сокет /run/ospd/ospd-openvas.sock.
scanner-api openvasd — Rust-демон (Notus/Scanner API), по умолчанию --mode service_notus.
manager gvmd — менеджер; oneshot-инициализация БД/админа, служба gvmd.service.
web gsad — веб-сервер UI, слушает локально 127.0.0.1:9392 по умолчанию.
feed python3-greenbone-feed-sync — утилита и юниты initial/daily sync (таймеры выключены).

3) Зависимости и порядок запуска

Упрощённый граф:
network-online.target
 ├─ redis-openvas.service              (обязательно)
 ├─ openvasd.service  ─┐              (альтернатива OSPD)
 │                     └─(сканер API)
 ├─ ospd-openvas.service ─┘
 ├─ gvmd-db-setup.service [oneshot, если нет /var/lib/gvm/.db-initialized]
 ├─ gvmd-provision.service [oneshot, если нет /var/lib/gvm/.admin-provisioned]
 ├─ gvmd.service  (требует PostgreSQL)
 └─ gsad.service  (после gvmd)

Все узлы «подвешены» на gvm-stack.target. Запуск таргета запускает граф целиком с учётом Requires=/After=.

  • Redis обязателен для OSPD/OpenVASD.
  • PostgreSQL поднимается своим пакетом (зависимость у gvmd), БД готовит gvmd-db-setup.
  • Initial feed (опционально) можно выполнить до первого запуска сканера/менеджера.

4) Установка и первый запуск

  1. Установите пакеты (пример для полного стека OSPD-ветки):
    sudo dnf install gvm-common redis-openvas openvas-scanner python-ospd-openvas gvmd gsad python3-greenbone-feed-sync

    Запустите

    
    systemctl start greenbone-initial-sync.service
    greenbone-feed-sync
    systemctl enable --now gvm-stack.target
    systemctl enable --now greenbone-feed-sync.timer
  2. Включите единый таргет и запустите его:
    sudo systemctl enable --now gvm-stack.target
  3. Дождитесь однократной инициализации БД и провижена админа (маркер-файлы появятся в /var/lib/gvm).
Пароль администратора сохранён в /var/lib/gvm/.admin-password (право 0600, владелец gvm).

5) Проверка работоспособности

Стек целиком
systemctl status gvm-stack.target
systemctl list-dependencies gvm-stack.target
Ожидайте активные: redis-openvas, ospd-openvas или openvasd, gvmd, gsad.
Redis и сканер
sudo -u gvm redis-cli -s /run/redis-openvas/redis.sock ping
# PONG

sudo -u gvm gvm-manage-scanner --get-scanners
GVMD
sudo -u gvm gvmd --get-users
Должен присутствовать пользователь admin.
GSAD (веб-интерфейс)
xdg-open https://127.0.0.1:9392
Вход: admin / пароль из /var/lib/gvm/.admin-password.

6) Синхронизация фидов

Первичная загрузка (oneshot)

Сервис выполнится один раз при старте стека, если нет маркера:

sudo systemctl start greenbone-initial-sync.service
# маркер создастся в /var/lib/gvm/.feed-initialized
Ежедневное обновление (таймер)

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

sudo systemctl enable --now greenbone-feed-sync.timer
systemctl list-timers greenbone-feed-sync.timer

7) Конфигурации и где их править

КомпонентФайл/каталогПримечание
openvas-scanner/etc/openvas/openvas.conf%config(noreplace); db_address=/run/redis-openvas/redis.sock
ospd-openvas/etc/sysconfig/ospd-openvasСокет, лог, уровень логов, Notus каталоги
openvasd/etc/sysconfig/openvasd, /etc/openvasd/openvasd.toml (пример)Режим, адрес, опции
gvmd/etc/sysconfig/gvmd, /etc/gvm/*.confПараметры демона/логов
gsad/etc/sysconfig/gsadАдрес/порт веб-интерфейса, TLS-опции
feed-syncЮниты не требуют конфигов; расписание в таймере
Важно: изменения в /etc/sysconfig/* не перезаписываются при обновлениях пакетов. После правок перезапустите соответствующий сервис: systemctl restart <service>.

8) Безопасность, права и каталоги

  • Пользователь/группа: gvm:gvm (создаёт пакет gvm-common).
  • Runtime: /run/gvm, /run/ospd, /run/redis-openvas — создаются через tmpfiles, режим 0750.
  • State: /var/lib/openvas, /var/lib/notus/{products,advisories} — режим 02775 (setgid), владелец gvm:gvm.
  • Redis сокет: 660, группа redis; пользователь gvm добавляется в группу redis.
  • Сканер: вместо sudo использованы file capabilities: cap_net_bind_service, cap_net_raw на бинаре openvas.
  • GSAD: по умолчанию слушает 127.0.0.1. Для публикации наружу измените GSAD_ADDRESS и обеспечьте TLS/фаервол.

9) Диагностика

Сервисы не стартуют по таргету

systemctl status gvm-stack.target
systemctl list-dependencies gvm-stack.target
journalctl -b -u redis-openvas -u ospd-openvas -u openvasd -u gvmd -u gsad --no-pager
Проверьте, что таргет включён: systemctl enable --now gvm-stack.target.

Проблемы с БД/миграциями

journalctl -u gvmd-db-setup -u gvmd-provision --no-pager
sudo -u postgres psql -d gvmd -c 'SELECT version();'
При необходимости перезапустите oneshot после удаления маркера (только если понимаете последствия): rm /var/lib/gvm/.db-initialized, затем systemctl start gvmd-db-setup.service.

Фиды не тянутся

journalctl -u greenbone-initial-sync -u greenbone-feed-sync --no-pager
sudo -u gvm greenbone-feed-sync --help
Убедитесь в доступности rsync и сети/прокси.

Все журналы также доступны через journalctl -u <service> -f для «хвоста» в реальном времени.

Предыдущая Следующая
Комментарии
Обратная связь

Нашли ошибку или хотите предложить улучшение? Напишите нам.

Отправить отзыв

НАЙС.ОС включена в реестр российского ПО (#23155) и готова к сертификации ФСТЭК. Свидетельство о государственной регистрации программы для ЭВМ №2025612870 от 05 февраля 2025 г.