November 15, 2018

Vuls Vulnerability Scanner

VULS — это сканер уязвимостей безопасности для Linux.

Он загружает NVD (National Vulnerability Database) и вставляет в базу данных sqlite. Vuls построил словарь CVE для этого файла sqlite. Серверы подключаются с использованием авторизации на основе ключа, поэтому нам нужно сгенерировать ключи ssh и подтвердить авторизацию между серверами и целью сканирования.

Поскольку, vuls является сканером для инсайдеров. Логика системы vuls — это поиск автоматических обновлений и, таким образом, предоставление незащищенных пакетов в системе.

Основные функции

  • Сканировать любые уязвимости в Linux Server
  • Сканирование промежуточного программного обеспечения, библиотек языка программирования и структуры для уязвимости
  • Программное обеспечение для поддержки, зарегистрированное в CPE
  • Пользователь должен только настроить один компьютер, подключенный к другим целевым серверам через SSH
  • Автоматическое создание шаблона конфигурационного файл
  • Возможно уведомление по электронной почте и Slack (поддерживает японский язык)
  • Результат сканирования можно просмотреть на нужном программном обеспечении, терминале TUI Viewer.

В этой статье я дам инструкцию по установке Vuls-сканера на сервере Ubuntu 16.04. Давайте пройдем через этапы установки.

1) Предварительные требования

Vuls требует установки следующих пакетов для обеспечения нормальной работы:

  • sqlite3
  • git
  • gcc
  • go v1.6 or above

Чтобы установить Sqlite3, используйте следующие команды:

# apt-get update

# apt-get install sqlite3 libsqlite3-dev

Чтобы установить git и gcc, вы можете использовать следующую команду:

# apt-get install git gcc

Выполните следующие шаги, чтобы установить Go на сервер.

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

# wget https://storage.googleapis.com/golang/go1.6.2.linux-amd64.tar.gz

Я загрузил пакет для 64-битной архитектуры.

# mkdir /root/go

Добавьте эти строки в /etc/profile.d/goenv.sh

# cat /etc/profile.d/goenv.sh</span>

export GOROOT = / usr / local / go

export GOPATH = $ HOME / go

export PATH = $ PATH: $ GOROOT / bin: $ GOPATH / bin

# source /etc/profile.d/goenv.sh

# go version

go version go1.6.2 linux/amd64

2) Включить аутентификацию по ключам SSH между серверами

Вы можете создать пары ключей SSH и добавить их на сервер vuls, чтобы улучшить работу серверов.

Я просто создаю пару ключей SSH для своего локального сервера и добавляю открытый ключ к authorized_keys для включения локального сканирования.

?

# ssh-keygen -t rsa

# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

# chmod 600 ~/.ssh/authorized_keys

3) Развернуть go-cve-dictionary

Теперь мы можем перейти в наш рабочий каталог и развернуть наш go-cve-dictionary. Как упоминалось ранее, vuls отслеживает любые новые уязвимости в NVD.

# cd /root/go

# go get github.com/kotakanbe/go-cve-dictionary

# ls

bin hello-world hello-world.go pkg src

#mkdir /var/log/vuls

#chmod 700 /var/log/vuls

Первым делом, go-cve-dictionary извлекает данные об уязвимости из NVD и вставляет в sqlite3.

# for i in {2002..2016}; do go-cve-dictionary fetchnvd -years $i; done

0 / 1 [------------------------------------------------------------------------------------------------------------------------------] 0.00%[Sep 21 07:44:13] INFO Fetching... https://static.nvd.nist.gov/feeds/xml/cve/nvdcve-2.0-2002.xml.gz

[Sep 21 07:44:15] INFO Fetched 6721 CVEs

[Sep 21 07:44:15] INFO Opening DB. datafile: /root/go/cve.sqlite3

[Sep 21 07:44:15] INFO Migrating DB

[Sep 21 07:44:15] INFO Inserting CVEs...

6721 / 6721 [====================================================================================================================] 100.00% 13s

[Sep 21 07:44:29] INFO Refreshed 6721 Nvds.

Теперь мы успешно собрали данные об уязвимостях, а затем снова начали работать в режиме сервера.

# go-cve-dictionary server

[Sep 22 05:47:48] INFO Opening DB. datafile: /root/go/cve.sqlite3

[Sep 22 05:47:48] INFO Migrating DB

[Sep 22 05:47:48] INFO Starting HTTP Server...

[Sep 22 05:47:48] INFO Listening on 127.0.0.1:1323

# ls -alh cve.sqlite3

-rw-r--r-- 1 root root 561M Sep 21 07:53 cve.sqlite3

4) Разворачивание vuls

Запустите эту команду для развертывания vuls.

# go get github.com/future-architect/vuls

5) Создание конфигурации vuls

Мы можем создать файл конфигурации vuls в формате TOML для сканирования целевых серверов.

Я только изменил файл конфигурации vuls для сканирования моего локального сервера.

# cat config.toml

[servers] [servers.45-33-77-70] host = "45.33.77.70"

port = "22"

user = "root"

keyPath = "/root/.ssh/id_rsa"

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

# vuls configtest

[Sep 21 03:01:56] INFO [localhost] Validating Config...

[Sep 21 03:01:56] INFO [localhost] Detecting Server/Contianer OS...

[Sep 21 03:01:56] INFO [localhost] Detecting OS of servers...

[Sep 21 03:01:57] INFO [localhost] (1/1) Detected: 45-33-77-70: ubuntu 16.04

[Sep 21 03:01:57] INFO [localhost] Detecting OS of containers...

[Sep 21 03:01:57] INFO [localhost] Checking sudo configuration...

[Sep 21 03:01:57] INFO [45-33-77-70] sudo ... OK

[Sep 21 03:01:57] INFO [localhost] SSH-able servers are below...

45-33-77-70

6) Настройка целевых серверов для vuls

Вы можете запустить эту команду «vuls prepare», чтобы настроить все целевые серверы, указанные в файле конфигурации vuls.

# vuls prepare

INFO[0000] Start Preparing (config: /config.toml)

[Sep 21 03:02:46] INFO [localhost] Detecting OS...

[Sep 21 03:02:46] INFO [localhost] Detecting OS of servers...

[Sep 21 03:02:46] INFO [localhost] (1/1) Detected: 45-33-77-70: ubuntu 16.04

[Sep 21 03:02:46] INFO [localhost] Detecting OS of containers...

[Sep 21 03:02:46] INFO [localhost] Checking sudo configuration...

[Sep 21 03:02:46] INFO [45-33-77-70] sudo ... OK

[Sep 21 03:02:46] INFO [localhost] Installing...

[Sep 21 03:02:46] INFO [45-33-77-70] apt-get update...

7) Начать сканирование

Мы можем сканировать наши серверы с помощью команды «vuls scan».

# vuls scan -report-json -cve-dictionary-dbpath=/root/go/cve.sqlite3

INFO[0000] Start scanning

INFO[0000] config: /root/go/vuls/config.toml

INFO[0000] cve-dictionary: /root/go/cve.sqlite3

Мы можем даже получить пользовательский интерфейс на основе терминала, чтобы просмотреть наш отчет о сканировании. Вы можете запустить эту команду «vuls tui» для доступа к ней.

by }{@kep