Установка и использование Vuls на Ubuntu 22.04

О чём эта инструкция
Эта подробная инструкция поможет вам:
- Установить Vuls на Ubuntu 22.04 (инсталлятор/ручная установка).
- Настроить директорию данных и файл конфигурации config.toml.
- Собрать базы уязвимостей (NVD/CVE, OVAL, Gost, Metasploit).
- Просканировать локальную и удалённую систему (SSH, режимы fast/fast-root/deep).
- Просмотреть результаты в TUI и интегрировать их в VulsRepo веб‑дашборд.
Важно: Vuls — агентless. Для сканирования удалённых хостов требуется SSH‑доступ. Для глубокого сканирования (deep/fast-root) необходимы привилегии root или passwordless sudo.
Кому полезно (основное намерение)
Primary intent: Установка и настройка Vuls на Ubuntu 22.04. Другие похожие запросы: установка vuls ubuntu, vuls tutorial, vulsrepo интеграция, сканер уязвимостей vuls, vuls ssh scan.
Предварительные требования
- Сервер с Ubuntu 22.04 (в примерах использован хост с именем vuls и адресом 192.168.5.20).
- Пользователь с sudo (не root) или root-доступ.
- Второй сервер (тестовая цель) для демонстрации удалённого сканирования через SSH.
Совет: заранее убедитесь в наличии SSH‑ключей и возможности passwordless sudo для пользователей на целевых хостах, если планируете режим fast-root/deep.
Краткий план действий
- Установить Vuls (скрипт install.sh).
- Создать /usr/share/vuls-data и config.toml.
- Собрать базы (gost, go-cve-dictionary, goval-dictionary, go-msfdb).
- Запустить vuls scan (локально и по SSH).
- Экспортировать отчёты и поднять VulsRepo для веб‑просмотра.
1. Установка Vuls через инсталлятор
Официальный инсталлятор автоматизирует установку зависимостей, Go и компиляцию утилит. Запустите на Ubuntu 22.04:
bash <( curl -s https://raw.githubusercontent.com/vulsio/vulsctl/master/install-host/install.sh )Если установка прошла успешно, в терминале вы увидите вывод установки и список действий.

Инсталлятор выполняет:
- установку пакетов (gcc, git, wget, curl, sqlite3 и т. п.),
- установку Go из бинарного архива,
- сборку бинарников vuls и сопутствующих утилит: go-cti, go-kev, go-exploitdb, go-msfdb, go-cve-dictionary, goval-dictionary, gost.
После установки бинарники будут в /usr/local/bin. Проверьте:
ls /usr/local/bin/Ожидается наличие vuls, go-cve-dictionary, goval-dictionary, gost и прочих утилит.
Important: если в вашей среде есть ограничения на загрузку внешних бинарных пакетов, ознакомьтесь с ручной установкой Go и компиляцией из исходников.
2. Настройка директории данных и config.toml
Vuls ожидает рабочую директорию с файлом config.toml и базами данных. Создайте директорию и конфиг:
mkdir -p /usr/share/vuls-data
touch /usr/share/vuls-data/config.tomlОткройте файл для редактирования:
nano /usr/share/vuls-data/config.tomlДобавьте базовую конфигурацию (пример):
[cveDict]
type = "sqlite3"
SQLite3Path = "/usr/share/vuls-data/cve.sqlite3"
[ovalDict]
type = "sqlite3"
SQLite3Path = "/usr/share/vuls-data/oval.sqlite3"
[gost]
type = "sqlite3"
SQLite3Path = "/usr/share/vuls-data/gost.sqlite3"
[metasploit]
type = "sqlite3"
SQLite3Path = "/usr/share/vuls-data/go-msfdb.sqlite3"
[servers]
[servers.localhost]
host = "localhost"
port = "local"
scanMode = [ "fast" ]
#scanMode = ["fast", "fast-root", "deep", "offline"]Объяснение кратко:
- cveDict — база CVE (NVD/JVN).
- ovalDict — OVAL для дистрибутива.
- gost — Security Tracker (для Ubuntu/Debian и др.).
- metasploit — CVE из модулей Metasploit.
Перейдите в рабочую директорию и проверьте конфигурацию:
cd /usr/share/vuls-data/
vuls configtestЕсли конфигурация корректна — вы увидите успешный вывод.

Если хотите автоматически сгенерировать пример конфигурации для подсети, можно использовать discover:
vuls discover 127.0.0.1/323. Сборка баз данных Vuls
Vuls использует локальные sqlite3‑базы. Создайте их командами из пакета утилит:
- Security Tracker (gost):
gost fetch ubuntu --dbpath /usr/share/vuls-data/gost.sqlite3- CVE (go-cve-dictionary) из NVD:
go-cve-dictionary fetch nvd --dbpath /usr/share/vuls-data/cve.sqlite3— вывод завершения загрузки CVE —

- OVAL для Ubuntu 22:
goval-dictionary fetch ubuntu 22 --dbpath /usr/share/vuls-data/oval.sqlite3- Metasploit CVE:
go-msfdb fetch msfdb --dbpath /usr/share/vuls-data/go-msfdb.sqlite3
Проверьте наличие файлов:
ls /usr/share/vuls-data/*.sqlite3Ожидаемый список: gost.sqlite3, cve.sqlite3, oval.sqlite3, go-msfdb.sqlite3.
Совет: обновляйте базы регулярно (например, cron), особенно go-cve-dictionary и goval-dictionary, чтобы иметь актуальные данные.
4. Сканирование локальной машины
В конфиге мы создали [servers.localhost] с scanMode = [“fast”]. Этот режим не требует root. Запуск сканирования всех хостов из config.toml:
vuls scanИли конкретного хоста:
vuls scan localhostПример вывода при сканировании локального хоста:

Для интерактивного просмотра результатов используйте TUI:
vuls tuiВ интерфейсе вы увидите список хостов, перечень найденных CVE, подробности CVE и список затронутых пакетов. Навигация клавишей TAB, выход Ctrl+C.


Команда для просмотра истории сканирований:
vuls history5. Сканирование удалённого сервера по SSH
Пример целевого сервера:
Hostname IP Address OS
------------------------------------------
debian-server 192.168.5.75 Debian 11Шаги:
- Установите необходимые пакеты на целевом хосте (если нужен режим fast-root/deep):
sudo apt install debian-goodies reboot-notifier
- На Vuls‑сервере добавьте OVAL/Gost для Debian в базы:
goval-dictionary fetch debian 11 --dbpath /usr/share/vuls-data/oval.sqlite3
gost fetch debian --dbpath /usr/share/vuls-data/gost.sqlite3- Добавьте хост в config.toml:
nano /usr/share/vuls-data/config.tomlДобавьте в конец:
[servers.debian-server]
host = "192.168.5.75"
port = "22"
user = "debian"
keyPath = "~/.ssh/id_ed25519"
scanMode = [ "fast-root" ] # "fast", "fast-root" or "deep"Примечание: fast-root подразумевает доступ к sudo без пароля или root.

- Проверка конфигурации:
vuls configtestVuls покажет, какие хосты готовы к сканированию и какие зависимости не выполнены.

- Запуск сканирования (все хосты или конкретный):
vuls scan
# или
vuls scan debian-serverПример одновременного сканирования локального и удалённого хоста:

Просмотр результатов в TUI покажет оба хоста:


6. Экспорт отчётов и интеграция с VulsRepo
VulsRepo — веб‑интерфейс для просмотра JSON-отчётов Vuls. Процесс интеграции:
- Сгенерируйте JSON‑отчёты в директории results:
cd /usr/share/vuls-data/
vuls report -format-json- Склонируйте VulsRepo и настройте сервер:
cd /opt/
git clone https://github.com/ishiDACo/vulsrepo.git
cd /opt/vulsrepo/server/
cp vulsrepo-config.toml.sample vulsrepo-config.toml
nano vulsrepo-config.tomlОтредактируйте секцию [Server]:
[Server]
rootPath = "/opt/vulsrepo"
resultsPath = "/usr/share/vuls-data/results"
serverPort = "5111"
serverIP = "192.168.5.20"- Запустите сервер vulsrepo:
./vulsrepo-serverВы увидите сообщение о запуске на указанном IP и порте.


- Откройте http://192.168.5.20:5111/ в браузере, выберите JSON результат и нажмите Submit.

Пример таблицы результатов в VulsRepo:

7. Проверка результата и типичные команды
- Сканирование всех хостов: vuls scan
- Сканирование конкретного хоста: vuls scan
- TUI просмотр: vuls tui
- История сканов: vuls history
- Проверка конфигурации: vuls configtest
- Генерация JSON отчёта: vuls report -format-json
Практические рекомендации и лучшие практики
- Регулярно обновляйте локальные базы (NVD/OVAL/GOST/MSFDB) — автоматизируйте через cron.
- Для удалённых хостов используйте ключевую аутентификацию SSH и passwordless sudo для безостановочного сканирования.
- Разграничивайте роли: администраторы отвечают за доступ, безопасность команда — за приоритезацию CVE.
- Тестируйте новый конфиг и сбор баз в тестовой среде прежде, чем применять в продакшене.
Когда Vuls может не сработать или даст ложные срабатывания
- Недостаток прав на целевом хосте (deep/fast-root требуют root).
- Несоответствие версий OVAL для дистрибутива — нужно подтянуть правильную ветку OVAL.
- Устаревшие локальные базы — CVE могут отсутствовать или иметь некорректные соответствия.
- Особенности пакетов, собранных вручную или из нестандартных репозиториев — Vuls ориентируется на менеджер пакетов дистрибутива.
Отладка и распространённые ошибки
- “connection refused” при сканировании по SSH — проверьте SSH‑доступ и порт.
- “permission denied” при использовании fast-root — настройте passwordless sudo или используйте ключ root.
- Проблемы с go-cve-dictionary — проверьте сетевой доступ к NVD/JVN и наличие disk space.
Чеклист для отладки:
- Проверить /usr/local/bin/* доступны и исполняемы.
- Проверить наличие файлов *.sqlite3 в /usr/share/vuls-data.
- Проверить корректность путей в config.toml (keyPath, resultsPath).
- Прогнать vuls configtest и проанализировать предупреждения.
Мини‑методология: как эффективно управлять результатами сканов
- Автоматическое обновление баз и ежедневный скан.
- Автоматическая выгрузка JSON и импорт в VulsRepo.
- Маркировка CVE по критичности (High/Critical) и связке с инвентарём сервисов.
- Создание тикетов на исправление для High/Critical CVE с дедлайном и владельцем.
Мини‑правило: фокусируйтесь сначала на эксплуатируемых и локально присутствующих пакетаx.
Ролевые чек‑листы
Системный администратор:
- Установить Vuls и утилиты в /usr/local/bin.
- Настроить SSH‑ключи и passwordless sudo на целевых хостах.
- Настроить cron для обновления баз и запусков сканов.
Инженер по безопасности:
- Проводить ежедневный обзор High/Critical CVE.
- Настроить интеграцию с ticketing-системой (ручная или API).
- Оценивать эксплойтабельность и планировать патчи.
Менеджер/владелец сервиса:
- Проверять статус сканов в VulsRepo.
- Назначать владельцев для устранения уязвимостей.
Критерии приёмки
- Все целевые хосты успешно сканируются без ошибок связи.
- Базы данных cve/oval/gost/go-msfdb актуальны и доступны.
- Для критичных CVE созданы тикеты с назначенными владельцами.
- Результаты доступны в VulsRepo и отражают последние сканы.
Тесты и критерии приёмки (примеры)
- Тест 1: Убедиться, что при отключенном keyPath vuls configtest выдаёт ошибку и не ломает процесс.
- Тест 2: При добавлении нового хоста в config.toml и запуске vuls scan — хост показывается в vuls tui.
- Тест 3: При обновлении go-cve-dictionary и перегенерации отчёта — VulsRepo показывает новые CVE в JSON.
Шаблон расписания работ (пример cron)
# Обновление CVE (ежедневно 03:00)
0 3 * * * /usr/local/bin/go-cve-dictionary fetch nvd --dbpath /usr/share/vuls-data/cve.sqlite3 >> /var/log/vuls/cve-update.log 2>&1
# Обновление OVAL/GOST (ежедневно 04:00)
0 4 * * * /usr/local/bin/goval-dictionary fetch ubuntu 22 --dbpath /usr/share/vuls-data/oval.sqlite3 >> /var/log/vuls/oval-update.log 2>&1
0 4 * * * /usr/local/bin/gost fetch ubuntu --dbpath /usr/share/vuls-data/gost.sqlite3 >> /var/log/vuls/gost-update.log 2>&1
# Ежедневный скан и генерация отчёта (05:00)
0 5 * * * cd /usr/share/vuls-data && /usr/local/bin/vuls scan && /usr/local/bin/vuls report -format-json >> /var/log/vuls/scan.log 2>&1Безопасность и приватность данных
- Храните JSON отчёты и sqlite‑файлы в защищённой файловой системе с ограниченным доступом.
- Если VulsRepo доступен в сети — используйте брандмауэр и, при возможности, HTTPS и аутентификацию.
- Не выкладывайте JSON‑отчёты с детальной информацией о конфигурации хостов в публичный доступ.
Миграция и совместимость
- При переносе Vuls на новый сервер — скопируйте /usr/share/vuls-data (базы и results) и config.toml, а также ключи SSH.
- При обновлении версии Vuls проверьте совместимость формата sqlite и бэкапните файлы.
Частые сценарии и альтернативные подходы
- Если у вас много хостов — используйте несколько Vuls‑инстансов, централизуйте JSON в single VulsRepo.
- Для корпоративных сред рассмотрите запуск Vuls в Docker с привязкой volume к /usr/share/vuls-data.
Короткое руководство для быстрого старта (SOP)
- Установить через install.sh.
- Создать /usr/share/vuls-data/config.toml и добавить localhost.
- Сгенерировать базы: gost, go-cve-dictionary, goval-dictionary, go-msfdb.
- Запустить vuls scan и vuls tui.
- Экспортировать JSON и поднять VulsRepo для удобного просмотра.
Карта принятия решений (Mermaid)
flowchart TD
A[Нужен быстрый аудит?] -->|Да| B[Использовать scanMode = fast]
A -->|Нет, нужен root| C[Использовать fast-root или deep]
B --> D[Запустить vuls scan]
C --> D
D --> E{Есть удалённые хосты?}
E -->|Да| F[Настроить SSH key и add host]
E -->|Нет| G[Сканировать локально]
F --> D
G --> D
D --> H[Генерировать JSON и импорт в VulsRepo]Глоссарий (1‑строчные определения)
- Vuls: агентless сканер уязвимостей для Linux/FreeBSD.
- OVAL: язык и база для описания проверок уязвимостей.
- NVD/CVE: централизованная база уязвимостей (NVD — реализация для CVE).
- Gost: security tracker (трекер безопасности дистрибутивов).
- VulsRepo: веб-интерфейс для визуализации JSON‑отчётов Vuls.
Заключение
Вы установили и настроили Vuls на Ubuntu 22.04, создали и обновили локальные базы уязвимостей, выполнили сканирование локального и удалённого хостов, а также интегрировали результаты в веб‑дашборд VulsRepo. Используйте автоматическое обновление баз и регулярные сканы, чтобы поддерживать видимость рисков в инфраструктуре.
Если нужно, могу: 1) подготовить systemd unit и сервис для автоматического запуска vulsrepo-server; 2) написать playbook Ansible для развёртывания Vuls и VulsRepo; 3) помочь добавить интеграцию с системой тикетов.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента