Установка и настройка Vuls на Ubuntu 18.04

Vuls — открытый сканер уязвимостей на Go для ежедневного анализа пакетов и библиотек. В этой инструкции показано, как установить Vuls и связанные словари (NVD/OVAL), настроить базу данных SQLite и запустить сканирование на Ubuntu 18.04.
Ключевые шаги: обновление системы, установка зависимостей и Go, сбор локальных словарей (go-cve-dictionary и goval-dictionary), установка Vuls, запуск scan и просмотр отчёта через vuls tui.
О чём этот материал
Этот пошаговый гид подходит для администратора Linux/DevOps, которому нужно быстро настроить автономный сканер уязвимостей на Ubuntu 18.04. Здесь сохранены все команды и примеры вывода, добавлены практические советы по автопросмотру баз и контрольный чеклист.
Важно: инструкция использует Go 1.13 и команды из оригинального руководства. Перед применением в продакшне проверьте требования безопасности и совместимость версий.
Что такое Vuls (в двух словах)
Vuls — бесплатный и открытый инструмент для сканирования известных уязвимостей в приложениях, ОС, промежуточном ПО, сетевых устройствах и библиотеках на языках программирования. Он уведомляет администратора при обнаружении уязвимости и умеет работать локально и по ssh.
Краткое определение: Vuls — агентless сканер уязвимостей с поддержкой SQLite для локальных словарей уязвимостей.
Требования
- Сервер с Ubuntu 18.04.
- Доступ root или учётная запись с sudo правами.
- Доступ в интернет для загрузки исходников и словарей.
Быстрый план действий
- Обновить систему.
- Установить зависимости (sqlite3, git, gcc и проч.).
- Установить Go (в примере — go1.13).
- Установить и заполнить go-cve-dictionary (NVD → sqlite).
- Установить и заполнить goval-dictionary (OVAL Ubuntu → sqlite).
- Установить Vuls, создать config.toml и протестировать.
- Запустить vuls scan и просмотреть через vuls tui / vuls report.
Обновление системы
Перед началом обновите пакеты и перезагрузите систему:
apt-get update -y
apt-get upgrade -yПосле обновления рекомендуется перезагрузить сервер для применения обновлений.
Установка зависимостей
Vuls использует SQLite для локальных словарей уязвимостей. Установите набор утилит:
apt-get install sqlite3 git debian-goodies gcc make wget -yДалее нужно установить Go.
Установка Go
Скачайте указанную в исходнике версию Go:
wget https://dl.google.com/go/go1.13.linux-amd64.tar.gzРаспакуйте архив в /usr/local:
tar -C /usr/local -xzf go1.13.linux-amd64.tar.gzДобавьте переменные окружения в /etc/profile (в конце файла):
nano /etc/profileДобавьте строки:
export GOPATH=$HOME/go
export PATH=$PATH:/usr/local/go/binЗагрузите переменные:
source /etc/profileСоздайте структуру каталогов для Go:
mkdir /root/go
mkdir -p $GOPATH/src/github.com/kotakanbeУстановка и настройка go-cve-dictionary (NVD → sqlite)
go-cve-dictionary формирует локальную копию NVD и загружает её в sqlite.
Скачайте исходники и соберите:
cd $GOPATH/src/github.com/kotakanbe
git clone https://github.com/kotakanbe/go-cve-dictionary.git
cd go-cve-dictionary
make installСкопируйте бинарный файл в /usr/local/bin:
cp $GOPATH/bin/go-cve-dictionary /usr/local/bin/Создайте каталоги для данных и логов:
mkdir /var/log/vuls
mkdir /usr/share/vuls-data
chmod 700 /var/log/vulsЗаполните базу данных NVD (команда в примере берёт данные с 2002 года до текущего года):
for i in `seq 2002 $(date +"%Y")`; do go-cve-dictionary fetchnvd -dbpath /usr/share/vuls-data/cve.sqlite3 -years $i; doneПримечание: загрузка может занять длительное время и потребовать значительного места на диске.
Установка и настройка goval-dictionary (OVAL для Ubuntu)
goval-dictionary собирает OVAL-данные (Open Vulnerability and Assessment Language) для Ubuntu и других дистрибутивов.
Скачивание и сборка:
cd $GOPATH/src/github.com/kotakanbe
git clone https://github.com/kotakanbe/goval-dictionary.git
cd goval-dictionary
make install
cp $GOPATH/bin/goval-dictionary /usr/local/bin/Загрузка OVAL данных для Ubuntu 18.04 (в команде “18” — код релиза):
goval-dictionary fetch-ubuntu -dbpath=/usr/share/vuls-data/oval.sqlite3 18Установка Vuls
Скачайте исходники Vuls и соберите:
mkdir -p $GOPATH/src/github.com/future-architect
cd $GOPATH/src/github.com/future-architect
git clone https://github.com/future-architect/vuls.git
cd vuls
make install
cp $GOPATH/bin/vuls /usr/local/bin/Создание конфигурации Vuls
Создайте файл конфигурации в /usr/share/vuls-data:
cd /usr/share/vuls-data
nano config.tomlПример config.toml:
[cveDict]
type = "sqlite3"
SQLite3Path = "/usr/share/vuls-data/cve.sqlite3"
[ovalDict]
type = "sqlite3"
SQLite3Path = "/usr/share/vuls-data/oval.sqlite3"
[servers]
[servers.localhost]
host = "localhost"
port = "local"
scanMode = [ "fast" ]Сохраните файл и выполните проверку конфигурации:
vuls configtestОжидаемый пример вывода подтверждает, что Vuls корректно обнаружил ОС и зависимости.
Запуск сканирования
Запустите сканирование локального хоста:
vuls scanПример вывода показывает начало сканирования, режим (fast) и базовую сводку:
One Line Summary
================
localhost ubuntu18.04 537 installed
To view the detail, vuls tui is useful.
To send a report, run vuls report -h.Для просмотра подробного интерактивного отчёта используйте:
vuls tui
Теперь можно нажать Enter и навигировать стрелками.
Рекомендации по эксплуатации
- Регулярно обновляйте словари (NVD/OVAL). NVD обновляется часто — автоматизируйте загрузку.
- Храните sqlite-файлы в резервной копии, если требуется историческая аналитика.
- Для удалённых хостов используйте ssh-доступ и настройте section [servers.
] с host и key.
Пример простой задачи cron для обновления NVD и OVAL раз в сутки:
0 3 * * * root /usr/local/bin/go-cve-dictionary fetchnvd -dbpath /usr/share/vuls-data/cve.sqlite3 -years $(date +"%Y") >/var/log/vuls/fetchnvd.log 2>&1
30 3 * * * root /usr/local/bin/goval-dictionary fetch-ubuntu -dbpath=/usr/share/vuls-data/oval.sqlite3 18 >/var/log/vuls/fetchoval.log 2>&1Или systemd таймер для более гибкого управления — предпочтительнее в современных системах.
Когда метод может не подойти
- Если требуется агентная модель с постоянной телеметрией — Vuls без агентов не предоставляет таких возможностей.
- Для масштабного корпоративного решения с централизованным хранением и аналитикой могут потребоваться дополнительные инструменты (SIEM, CMDB).
- Если в инфраструктуре используются нестандартные пакеты/репозитории, сопоставление OVAL/CVE может быть неполным и потребует ручной валидации.
Альтернативные подходы
- Использовать коммерческие сканеры с поддержкой агентов (например, для облачных сред).
- Применять OpenSCAP/OSCAP для OVAL-ориентированных проверок на базовом уровне.
- Интегрировать результаты Vuls в систему баг-трекера или SIEM для автоматизации ответных действий.
Контрольный чеклист (роль — администратор)
- Обновлена Ubuntu и перезагружен сервер.
- Установлены sqlite3, git, gcc, make, wget.
- Go установлен и GOPATH настроен.
- go-cve-dictionary и goval-dictionary собраны и положены в /usr/local/bin.
- Базы /usr/share/vuls-data/*.sqlite3 заполнены.
- vuls установлен и config.toml проверен через vuls configtest.
- Проведено тестовое сканирование vuls scan и просмотр через vuls tui.
Критерии приёмки
- vuls configtest возвращает информацию об обнаруженной ОС и статусе зависимостей без критических ошибок.
- vuls scan успешно завершает стадию обнаружения пакетов и выводит строку One Line Summary.
- vuls tui отображает интерактивный отчёт.
Мини-методология обновления и обслуживания
- Планируйте обновления словарей как отдельную задачу (cron/systemd timer).
- Перед массовым применением патчей — запускайте vuls scan на тестовой группе хостов.
- Храните результирующие sqlite-файлы и логи 30–90 дней для аудита.
- Автоматизируйте оповещения (email/Slack) на основе отчётов vuls report.
Однострочные определения
- NVD: Национальная база уязвимостей (National Vulnerability Database).
- OVAL: Формат для описания уязвимостей и конфигурационных проверок (Open Vulnerability and Assessment Language).
Риски и смягчение
- Риск: устаревшие словари → ложные отрицания. Смягчение: автоматическое обновление словарей.
- Риск: высокая загрузка при массовой синхронизации. Смягчение: запуск в низкопиковое время и контроль I/O.
- Риск: доступ по SSH с недостаточно защищёнными ключами. Смягчение: использовать ключи с passphrase и ограниченные права.
Шпаргалка команд (cheat sheet)
- Проверка конфигурации: vuls configtest
- Запуск сканирования: vuls scan
- Просмотр TUI: vuls tui
- Генерация отчёта: vuls report -h
Заключение
Вы успешно установили и настроили Vuls для Ubuntu 18.04: подготовили словари NVD/OVAL, собрали бинарники, создали конфигурацию и запустили сканирование. Для продуктивной эксплуатации автоматизируйте обновление словарей, добавьте оповещения и интегрируйте отчёты в вашу систему управления инцидентами.
Если нужны примеры автоматизации (systemd timer, готовые шаблоны для удалённых серверов или интеграции с SIEM), я подготовлю их по запросу.
Сводка
- Vuls — удобный инструмент для автономного сканирования уязвимостей.
- Основные компоненты: go-cve-dictionary, goval-dictionary, Vuls.
- Автоматизируйте обновления и хранение данных для надёжной эксплуатации.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента