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