Как установить и использовать сканер уязвимостей Vuls на Ubuntu 22.04

С помощью Vuls вы можете сканировать несколько операционных систем различными методами. Вы можете сканировать локальную часть вашего хоста, а также удаленные хосты и серверы через SSH. Он также предоставляет несколько методов сканирования, быстрое сканирование, не требующее прав root, и глубокое сканирование, требующее прав root. Vuls может сканировать несколько целевых серверов одновременно. По завершении сканирования вы можете отправить результат по электронной почте и в Slack.

Установка Vuls через сценарий установщика

Vuls – это сканер безопасности, который может использоваться для сканирования основных дистрибутивов Linux, FreeBSD, облачных и локальных систем, а также поддерживает Docker. Vuls может быть установлен на несколько операционных систем вручную или с помощью скрипта установщика, а также может быть установлен с помощью Docker.

Мы установим Vuls на машину Ubuntu 22.04 с помощью скрипта установщика Vuls.

Введите следующую команду, которая загрузит скрипт установщика Vuls install.sh и запустит его на вашем сервере.

bash <( curl -s https://raw.githubusercontent.com/vulsio/vulsctl/master/install-host/install.sh )

Скрипт установщика Vuls install.sh выполнит следующие:

  • Установка основных зависимостей, таких как gcc, git, wget, curl и sqlite3 database tool.
  • Установка последней версии Go вручную из бинарного пакета.
  • Компиляция и установка Vuls с некоторыми дополнительными инструментами, такими как go-cti, go-kev, go-exploitdb, go-msfdb, go-cve-dictionary, goval-dictionary и gost.

После завершения установки бинарный файл vuls и другие инструменты будут храниться в каталоге /usr/local/bin.

Введите следующую команду для проверки списка двоичных файлов в каталоге /usr/local/bin/.

ls /usr/local/bin/

Вы установили Vuls на вашу машину Ubuntu с помощью сценария установки.

Настройка сканера уязвимостей Vuls

Перед использованием Vuls необходимо определить и создать конфигурационный файл для Vuls и настроить каталог данных, который будет использоваться для хранения.

Мы установим каталог данных Vuls в /usr/share/vuls-data и создадим новый файл конфигурации Vuls config.toml. Вы также определите несколько баз данных CVE и настроите первое сканирование, которое может использоваться для сканирования текущей локальной машины или сервера.

При выполнении команды vuls вы должны находиться в рабочем каталоге /usr/share/vuls-data, где расположен файл конфигурации config.toml.

Введите следующую команду для создания нового каталога данных /usr/share/vuls-data для Vuls. Затем создайте новый файл конфигурации /usr/share/vuls-data/config.toml с помощью команды touch, приведенной ниже.

mkdir -p /usr/share/vuls-data
touch /usr/share/vuls-data/config.toml

Откройте файл конфигурации /usr/share/vuls-data/config.toml с помощью следующей команды редактора nano.

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"]

Сохраните и закройте файл.

С помощью этого вы определите 4 базы данных vuls в формате SQLite3, которые будут взяты из каталога данных vuls /usr/share/vuls-data/. В этом примере будут использоваться следующие 4 базы данных:

  • CVE (Common Vulnerabilities and Exposures).
  • OVAL (Open Vulnerability and Assessment Language).
  • Gost – трекер безопасности таких дистрибутивов Linux, как Rehat, Debian, Ubuntu, и ОС Microsoft Windows.
  • CVEs из модулей Metasploit-Framework.

Вы также определите первое сканирование под названием localhost, которое позволяет сканировать текущую локальную машину через SSH и scanMode или метод fast, который не требует root-привилегий и никаких зависимостей.

Следующее, переместите ваш рабочий каталог в /usr/share/vuls-data/. Всякий раз, когда вы запускаете команду „vuls“, вы должны находиться в этом каталоге, где расположен файл конфигурации „config.toml“.

cd /usr/share/vuls-data/

Введите команду vuls ниже для проверки конфигурации.

vuls configtest

В случае успеха, вы должны получить аналогичный вывод на экране терминала.

На данном этапе вы создали конфигурацию Vuls, определили базы данных Vuls и выполнили сканирование для localhost. На следующем этапе вы будете создавать базы данных Vuls с помощью нескольких инструментов командной строки, предоставляемых Vuls.

В дополнение, если вы хотите создать полный файл конфигурации Vuls, введите следующую команду для создания примера конфигурации Vuls.

vuls discover 127.0.0.1/32

Это выведет пример конфигурации Vuls на ваш терминал.

Создание баз данных CVE Vuls

В конфигурационном файле Vuls „config.toml“ вы определили 4 базы данных, использующие gost (Security Tracker), OVAL, CVE и Metasploit-Framework CVEs. Перед сканированием любого целевого сервера необходимо убедиться, что базы данных Vuls созданы и доступны в каталоге данных Vuls „/usr/share/vuls-data“.

В этом разделе вы создадите базу данных Vuls с помощью инструментов командной строки Vuls, которые установлены и доступны в каталоге „/usr/local/bin“. Вы создадите базы данных Vuls для Gost (Security Tracker) для системы Ubuntu, базу данных CVE из NVD (NIST National Vulnerability Database), базу данных Ubuntu OVAL и базу данных Metasploit-Framework CVEs.

Каждую базу данных можно создать с помощью определенного инструмента. Для базового использования инструмента командной строки Vuls вы можете вывести справочную страницу инструментов Vuls в следующем формате.

vuls-command help

Для начала введите следующую команду gost для создания и генерации базы данных vuls Security Tracker. В этом примере вы сгенерируете базу данных vuls security tracker для дистрибутива Ubuntu в целевой файл /usr/share/vuls-data/gost.sqlite3.

gost fetch ubuntu --dbpath /usr/share/vuls-data/gost.sqlite3

Введите следующую команду go-cve-dictionary для создания базы данных vuls для CVE. Команда go-cve-dictionary поддерживает два источника провайдеров CVE, NVD от Nist и JVD от Japanese JVN. В этом примере вы сгенерируете базу данных CVE из Nist в /usr/share/vuls-data/cve.sqlite3.

go-cve-dictionary fetch nvd --dbpath /usr/share/vuls-data/cve.sqlite3

Ниже показан результат, когда все базы данных CVE завершены.

Следующее, сгенерируйте базу данных vuls для OVAL, используя команду goval-dictionary ниже. OVAL предоставляет несколько словарей для различных дистрибутивов и версий Linux. В этом примере будет сгенерирована база данных OVAL для Ubuntu 22 в файл /usr/share/vuls-data/oval.sqlite3.

goval-dictionary fetch ubuntu 22 --dbpath /usr/share/vuls-data/oval.sqlite3

В заключение введите следующую команду go-msfdb для генерации базы данных CVE из модулей Metasploit-Framework. Файл базы данных vuls для этого будет храниться по адресу /usr/share/vuls-data/go-msfdb.sqlite3.

go-msfdb fetch msfdb --dbpath /usr/share/vuls-data/go-msfdb.sqlite3

Когда базы данных vuls будут сгенерированы, введите следующую команду для проверки списка баз данных vuls.

ls /usr/share/vuls-data/*.sqlite3

Вы должны увидеть базы данных Vuls „gost.sqlite3“, „cve.sqlite3“, „oval.sqlite3“ и „go-msfdb.sqlite3“, созданные и доступные в каталоге „/usr/share/vuls-data/“.

На данном этапе вы установили Vuls, настроили каталог данных Vuls, создали файл конфигурации Vuls и определили несколько баз данных vuls, которые будут использоваться в качестве исходных баз данных для сканирования. Вы также создали первое сканирование под названием „localhost“, которое позволяет сканировать локальную машину, которую вы используете в данный момент.

В следующем шаге Мы начнем сканировать локальную машину, затем также создадим другое сканирование, которое будет сканировать удаленный сервер с помощью Vuls.

Сканирование локальной машины с помощью Vuls

В конфигурационном файле Vuls config.toml вы создали первый скан под названием „localhost“, который позволяет вам сканировать вашу текущую машину с помощью Vuls. В этом разделе вы просканируете текущую машину с помощью Vuls.

Ниже приведен первый созданный вами скан Vuls. Он будет сканировать целевой сервер „localhost“ с типом подключения „local“ и „scanMode“ „fast“, что не требует привилегий root для этого.

[servers.localhost]
host = "localhost"
port = "local"
scanMode = [ "fast" ]
#scanMode = ["fast", "fast-root", "deep", "offline"]

Для запуска введите следующую команду, чтобы начать сканирование вашей системы, Эта команда будет сканировать все целевые серверы, которые доступны в конфигурационном файле „config.toml“.

vuls scan

Для сканирования определенного целевого сервера, вы можете использовать имя сканирования в качестве параметра. В этом случае будет сканироваться только целевой сервер с именем „localhost“.

vuls scan localhost

Когда процесс сканирования будет завершен, вы должны получить результат, подобный этому – Вы можете видеть, что Vuls определит текущую операционную систему целевого сервера, затем начнет сканирование системы с помощью доступных баз данных vuls. Также вы можете увидеть сводку сканирования в нижней части вывода.

Следующая команда для просмотра и отображения подробных отчетов о сканировании.

vuls tui

На экране терминала вы должны увидеть 4 колонки: список целевых серверов, список обнаруженных CVE, колонку, которая показывает детали CVE, и колонку, которая показывает список затронутых пакетов. Вы можете нажимать кнопку TAB для перехода от одной колонки к другой.

И наконец, нажмите Ctrl + C для завершения работы vuls viewer.

В дополнение к этому, вы также можете проследить историю сканирования, которую вы сделали, введя следующую команду vuls.

vuls history

Вы узнали, как сканировать целевой сервер с помощью Vuls и просматривать или показывать результат с помощью команды „vuls tui“. Далее вы узнаете, как сканировать удаленную машину или сервер с помощью Vuls.

Сканирование удаленного сервера с помощью Vuls

В этом разделе вы узнаете, как сканировать удаленный сервер с помощью Vuls через SSH. Ниже приведены данные сервера, который будет использоваться в качестве целевой машины:

Hostname        IP Address      OS
------------------------------------------
debian-server   192.168.5.75    Debian 11

Ниже приведены этапы задач по настройке Vuls и сканированию удаленного сервера через SSH:

  • Установите зависимости на целевой сервер в зависимости от режима сканирования.
  • Получите дополнительную базу данных CVE для вашей конкретной системы. Убедитесь, что у вас есть соответствующая база данных Vuls в качестве целевого сервера.
  • Добавьте и определите целевое сканирование в конфигурационный файл Vuls „config.toml“.
  • Начните сканирование целевого сервера.

Теперь давайте начнем.

Сначала войдите на целевой удаленный сервер и установите зависимости пакетов „debian-goodies“ и „reboot-notifier“ с помощью следующей команды „apt install“. Эти пакеты должны быть установлены на целевой сервер Debian.

sudo apt install debian-goodies reboot-notifier

Введите y при появлении запроса и нажмите ENTER, чтобы продолжить.

Теперь перейдите на сервер Vuls и получите новую базу данных CVE для вашей конкретной системы. В этом примере вы перестроите новую базу данных для OVAL и gost, добавив содержимое словаря для дистрибутива Debian.

Введите следующую команду для добавления нового содержимого OVAL для дистрибутива Debian 11 в существующую базу данных „/usr/share/vuls-data/oval.sqlite3

goval-dictionary fetch debian 11 --dbpath /usr/share/vuls-data/oval.sqlite3

Введите следующую команду, чтобы добавить новый Security Tracker для дистрибутива Debian в файл базы данных vuls gost „/usr/share/vuls-data/gost.sqlite3“.

gost fetch debian --dbpath /usr/share/vuls-data/gost.sqlite3

Следующим шагом откройте файл vuls config „*/usr/share/vuls-data/config.tom*l“ с помощью следующей команды редактора nano.

nano /usr/share/vuls-data/config.toml

Добавьте следующие строки. Этим вы создадите новый скан под названием „debian-server“ с подробным IP-адресом хоста 192.168.5.75, службой SSH, запущенной на порту по умолчанию 22, пользователем по умолчанию, который будет использоваться debian, и использующей аутентификацию на основе ключа через SSH с закрытым ключом /.ssh/id_ed25519. А scanMode, который вы будете использовать – fast-root, что требует привилегий root на целевом сервере, поэтому убедитесь, что ваш пользователь имеет права sudo без пароля.

[servers.debian-server]
host = "192.168.5.75"
port = "22"
user = "debian"
keyPath = "~/.ssh/id_ed25519"
scanMode = [ "fast-root" ] # "fast", "fast-root" or "deep"

Сохраните и закройте файл, когда закончите.

Теперь введите следующую команду vuls для проверки конфигурационного файла „*config.tom*l“. Это гарантирует, что у вас есть правильная конфигурация Vuls перед сканированием целевых серверов.

vuls configtest

Вы должны увидеть следующее – Vuls будет проверять готовность целевых серверов, проверяя доступные зависимости и необходимые привилегии для выполнения задач сканирования. Также внизу вы должны увидеть список целевых серверов, которые готовы к сканированию, в данном примере localhost и debian-server.

Теперь введите следующую команду, чтобы начать сканирование всех доступных целевых серверов в файле „config.toml“. Для данного примера, следующая команда просканирует оба целевых сервера „localhost“ и „debian-server“.

vuls scan

Или вы можете указать сканирование на определенный целевой сервер, введя команду vuls ниже.

vuls scan debian-server

Ниже показан результат по окончании сканирования. В этом примере вы сканируете целевой сервер „localhost“ с scanMode „fast“ и целевой сервер „debian-server“ с scanMode „fast-root“.

Введите следующую команду, чтобы проверить результат сканирования. В колонке списка хостов вы должны увидеть результат сканирования целевого сервера „debian-server“.

vuls tui

Нажмите Ctrl + C для выхода из окна.

Сейчас, если вы проверите историю сканирования с помощью команды „vuls history“, вы увидите два разных результата сканирования – первый результат сканирования был направлен на „localhost“, а второй – на „localhost“ и „debian-server“.

vuls history

На данном этапе вы узнали основные принципы использования Vuls для сканирования локального сервера и удаленного сервера через SSH. Вы также узнали, как восстановить базу данных Vuls и показать или просмотреть результат сканирования через терминальный пользовательский интерфейс (TUI).

Следующее, вы узнаете, как установить и интегрировать VulsRepo с Vuls.

Интеграция с VulsRepo как веб-панель администрирования для Vuls

VulsRepo – это веб-приложение, которое можно использовать для просмотра или демонстрации результатов сканирования Vuls через веб-браузер. Это позволяет администратору легко отображать результаты сканирования как таблицу Excel в веб-браузере.

Сначала перейдите в каталог данных Vuls „/usr/share/vuls-data/“ и введите следующую команду „vuls report“ для создания отчетов Vuls в json-файл.

cd /usr/share/vuls-data/
vuls report -format-json

Сейчас перейдите в рабочий каталог „/opt“ и загрузите исходный код VulsRepo с помощью команды „git clone“ ниже. Исходный код VulsRepo будет доступен в каталоге „/opt/vulsrepo/“.

cd /opt/
git clone https://github.com/ishiDACo/vulsrepo.git

Измените рабочий каталог на „/opt/vulsrepo/server/“.

cd /opt/vulsrepo/server/

Скопируйте конфигурацию по умолчанию в „vulsrepo-config.toml“ и откройте ее с помощью редактора nano командой ниже.

cp vulsrepo-config.toml.sample vulsrepo-config.toml
nano vulsrepo-config.toml

Измените конфигурацию по умолчанию следующими строками. Параметр „resultsPath“ должен быть каталогом данных Vuls „results“ „/usr/share/vuls-data/results“. Для параметров „serverPort“ и „serverIP“ настройте эти параметры в соответствии с данными вашего сервера.

[Server]
rootPath = "/opt/vulsrepo"
resultsPath  = "/usr/share/vuls-data/results"
serverPort  = "5111"
serverIP = "192.168.5.20"

Сохраните и закройте файл после завершения.

Следующим шагом введите следующую команду для выполнения бинарного файла „vulsrepo-server“ и запуска веб-панели VulsRepo.

./vulsrepo-server

Вы должны получить на терминале следующее сообщение – Вы видите, что VulsRepo запущен на IP-адресе сервера „192.168.5.20“ с портом „5111“.

Откройте веб-браузер и зайдите на IP-адрес сервера, за которым следует порт 5111 (т.е.: http://192.168.5.20:5111/). Вы должны увидеть страницу веб-приложения VulsRepo.

В левом боковом меню вы увидите список доступных результатов сканирования в формате json. Выберите нужный результат сканирования, который вы хотите просмотреть, затем нажмите „Submit“.

Ниже приведен пример результатов сканирования целевых серверов „localhost“ и „debian-server“, показанных в веб-браузере с помощью VulsRepo.

Так вы установили и интегрировали веб-приложение VulsRepo с вашим сервером Vuls. Теперь вы можете легко просматривать результаты сканирования через веб-браузер с помощью приложения VulsRepo.

Заключение

В этом руководстве вы установили Vuls – безагентный сканер уязвимостей с открытым исходным кодом на сервер Ubuntu 22.04. Вы также настроили Vuls, создали сканирование, а также настроили базы данных Vuls из нескольких источников, таких как CVEs из NIST, OVAL, Linux Distribution Security Tracker и Metasplot-Framework CVEs.

Кроме того, вы также узнали, как сканировать локальные машины с помощью Vuls и сканировать удаленный сервер через SSH и Vuls. Также вы узнали, как использовать Vuls для просмотра результатов сканирования через терминальный интерфейс.

В завершение вы также установили и интегрировали Vuls с VulsRepo, позволяющим просматривать и показывать результаты сканирования Vuls через веб-браузер. Чтобы узнать больше, посетите официальную документацию Vuls.

Зарубин Иван Эксперт по Linux и Windows

Парашютист со стажем. Много читаю и слушаю подкасты. Люблю посиделки у костра, песни под гитару и приближающиеся дедлайны. Люблю путешествовать.

Вдохновлен www.howtoforge.com

Похожие статьи

Комментарии (0)