GVM (Greenbone Vulnerability Management) это решение с открытым исходным кодом для сканирования уязвимостей и управления ими. GVM ранее был известен как OpenVAS.
Greenbone Vulnerability Manager и OpenVAS широко используются многими людьми в мире, включая экспертов по безопасности и обычных пользователей. Чтобы запустить тесты безопасности компьютеров, используйте свою собственную базу данных известных слабостей и эксплойтов.
В этой статье мы покажем, как установить и настроить GVM на Ubuntu 20.04. Чтобы проверить, что ваши серверы защищены от атак.
Базовая Система
Мы установим Greenbone Vulnerability Manager 20.08 с базовой установкой системных пакетов на Ubuntu 20.04.
Предварительно
Сначала установите следующие пакеты зависимостей.
sudo su - apt update && apt -y dist-upgrade && apt -y autoremove && apt install -y software-properties-common &&
apt install -y build-essential cmake pkg-config libglib2.0-dev libgpgme-dev libgnutls28-dev uuid-dev libssh-gcrypt-dev libldap2-dev doxygen graphviz libradcli-dev libhiredis-dev libpcap-dev bison libksba-dev libsnmp-dev gcc-mingw-w64 heimdal-dev libpopt-dev xmltoman redis-server xsltproc libical-dev postgresql postgresql-contrib postgresql-server-dev-all gnutls-bin nmap rpm nsis curl wget fakeroot gnupg sshpass socat snmp smbclient libmicrohttpd-dev libxml2-dev python3-polib gettext rsync xml-twig-tools python3-paramiko python3-lxml python3-defusedxml python3-pip python3-psutil python3-impacket virtualenv vim git &&
apt install -y texlive-latex-extra no-install-recommends && apt install -y texlive-fonts-recommended && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && apt update && apt -y install yarn && yarn install && yarn upgrade
Создайте пользователя GVM
Вставьте следующие команды в терминал, чтобы создать пользователя gvm. Данный пользователь будет использоваться в процессе установки и компиляции:
echo export PATH=$PATH:/opt/gvm/bin:/opt/gvm/sbin:/opt/gvm/.local/bin | tee -a /etc/profile.d/gvm.sh && chmod 0755 /etc/profile.d/gvm.sh && source /etc/profile.d/gvm.sh && bash -c cat < /etc/ld.so.conf.d/gvm.conf # gmv libs location /opt/gvm/lib EOF
mkdir /opt/gvm && adduser gvm disabled-password home /opt/gvm/ no-create-home gecos && usermod -aG redis gvm && chown gvm:gvm /opt/gvm/
Теперь войдите в систему как пользователь gvm.
sudo su-gvm
Скачать и установить программное обеспечение (GVM)
Теперь создайте папку src и Git клонируйте исходный код GVM:
mkdir src && cd src && export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:$PKG_CONFIG_PATH
git clone -b gvm-libs-20.08 single-branch https://github.com/greenbone/gvm-libs.git && git clone -b openvas-20.08 single-branch https://github.com/greenbone/openvas.git && git clone -b gvmd-20.08 single-branch https://github.com/greenbone/gvmd.git && git clone -b master single-branch https://github.com/greenbone/openvas-smb.git && git clone -b gsa-20.08 single-branch https://github.com/greenbone/gsa.git && git clone -b ospd-openvas-20.08 single-branch https://github.com/greenbone/ospd-openvas.git && git clone -b ospd-20.08 single-branch https://github.com/greenbone/ospd.git
Установите gvm-libs (GVM)
На этом шаге мы скомпилируем gvm-libs из github:
cd gvm-libs & & export PKG_CONFIG_PATH=/opt/gvm / lib/pkgconfig:$PKG_CONFIG_PATH & & mkdir build & & cd build & & cmake-DCMAKE_INSTALL_PREFIX=/opt / gvm .. & & make & & make doc & & make install & & cd / opt/gvm / src
Установка openvas-smb (GVM)
Теперь войдите в каталог openvas-smb и скомпилируйте исходный код:
cd openvas-smb & & export PKG_CONFIG_PATH=/opt/gvm / lib/pkgconfig:$PKG_CONFIG_PATH & & mkdir build & & cd build/ & & cmake-DCMAKE_INSTALL_PREFIX=/opt / gvm .. & & make & & make install && cd / opt/gvm / src
Установите сканер (GVM)
Как и в предыдущих шагах, теперь мы создадим и установим сканер openvas:
cd openvas & & export PKG_CONFIG_PATH=/opt/gvm / lib/pkgconfig:$PKG_CONFIG_PATH & & mkdir build & & cd build/ & & cmake-DCMAKE_INSTALL_PREFIX=/opt / gvm .. & & make & & make doc & & make install & & cd / opt/gvm / src
Исправьте redis для установки OpenVAS (root)
Теперь мы должны выйти из текущего сеанса, чтобы вернуться к привилегированному пользователю, набрав в терминале ‘exit’. теперь вставьте следующий код в терминал:
export LC_ALL="C" && ldconfig && cp /etc/redis/redis.conf /etc/redis/redis.orig && cp /opt/gvm/src/openvas/config/redis-openvas.conf /etc/redis/ && chown redis:redis /etc/redis/redis-openvas.conf && echo "db_address = /run/redis-openvas/redis.sock" > /opt/gvm/etc/openvas/openvas.conf && systemctl enable redis-server@openvas.service && systemctl start redis-server@openvas.service
sysctl -w net.core.somaxconn=1024 && sysctl vm.overcommit_memory=1 && echo "net.core.somaxconn=1024" >> /etc/sysctl.conf && echo "vm.overcommit_memory=1" >> /etc/sysctl.conf
cat << /etc/systemd/system/disable-thp.service [Unit] Description=Disable Transparent Huge Pages (THP) [Service] Type=simple ExecStart=/bin/sh -c "echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled && echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag" [Install] WantedBy=multi-user.target EOF
systemctl daemon-reload && systemctl start disable-thp && systemctl enable disable-thp && systemctl restart redis-server
Добавьте путь /opt/gvm/sbin в переменную secure_path:
sed s/Defaultss.*secure_path=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin/Defaults secure_path=/usr/local/sbin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/opt/gvm/sbin/g/etc/sudoers/editor=Tee visudo
Разрешить пользователю, работающему под управлением ospd-openvas, запускаться с правами root:
echo "gvm ALL = NOPASSWD: /opt/gvm / sbin/openvas" > /etc/sudoers.d/gvm echo "gvm ALL = NOPASSWD: /opt/gvm/sbin/gsad" > > > /etc/sudoers.d/gvm
Обновление NVT (GVM)
Теперь мы запустим greenbone-nvt-sync для обновления определений файлов уязвимостей. Сначала вернитесь к сеансу пользователя GVM:
sudo su-gvm
И выполните следующие действия:
greenbone-nvt-sync
Если вы получаете ошибки тайм-аута, то, скорее всего, на вашем пути стоит брандмауэр. Обязательно откройте TCP-порт 873. Если вы получаете ошибки отказа в подключении, подождите некоторое время и повторите попытку.
Это займет очень много времени, так что вам придется набраться терпения.
Загрузка плагинов в redis с помощью OpenVAS (GVM)
Это может занять некоторое время в зависимости от вашего оборудования и не даст вам обратной связи при выполнении команды.
sudo openvas-u
Примечание: Если вы получаете отсутствующие ошибки библиотеки, введите следующее (по одной строке за раз):
exit echo /opt/gvm / lib > /etc/ld. so. conf.d/gvm. conf ldconfig sudo su-gvm
Менеджер установки (GVM)
Теперь войдите в каталог gvmd для сборки и установки Greenbone Manager:
cd /opt/gvm/src/gvmd && export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:$PKG_CONFIG_PATH && mkdir build && cd build/ && cmake -DCMAKE_INSTALL_PREFIX=/opt/gvm .. && make && make doc && make install && cd /opt/gvm/src
Настройка PostgreSQL (Sudoers User)
Переключитесь на пользователя в sudoers (не используйте для этого root или gvm). Сеанс пользователя будет переключен с помощью команды” sudo-u postgres bash ниже. выполняйте по одной строке за раз.
exit cd / sudo -u postgres bash export LC_ALL="C" createuser -DRS gvm createdb -O gvm gvmd
psql gvmd create role dba with superuser noinherit; grant dba to gvm; create extension "uuid-ossp"; create extension "pgcrypto"; exit exit
Исправьте сертификаты (GVM)
Введите одну строку одновременно:
sudo su-gvm gvm-manage-certs-a
Создать администратора пользователя (GVM)
Это создаст начальное имя пользователя и пароль. Не забудьте изменить его позже.
gvmd create-user=admin password=admin
Настройка и обновление каналов (GVM)
Чтобы каналы полностью обновились, нам нужно будет установить “владелец импорта каналов в UUID администратора. Во-первых, найдите UUID нового пользователя admin
gvmd get-users verbose
Вы должны получить что-то вроде этого:
admin fb019c52-75ec-4cb6-b176-5a55a9b360bf
Используйте строку рядом с администратором в следующей команде:
gvmd modify-setting 78eceaec-3385-11ea-b237-28d24461215b value
(выходная строка из приведенной выше команды fb019c52-75ec-4cb6-b176-5a55a9b360bf)
Таким образом, пример команды будет следующим:
$ gvmd get-users verbose admin fb019c52-75ec-4cb6-b176-5a55a9b360bf $ gvmd modify-setting 78eceaec-3385-11ea-b237-28d24461215b value fb019c52-75ec-4cb6-b176-5a55a9b360bf
Выполните следующие три команды по одной строке за раз. Если вы получаете ошибки отказа в соединении, попробуйте выполнить команду еще раз, пока она не завершится успешно. Эти команды также займут некоторое время.
greenbone-feed-sync type GVMD_DATA greenbone-feed-sync type SCAP greenbone-feed-sync type CERT
Установите gsa (GVM)
Снова, как и в предыдущих шагах, введите папку gsa и скомпилируйте исходный код gsa:
cd /opt/gvm/src/gsa && export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:$PKG_CONFIG_PATH && mkdir build && cd build/ && cmake -DCMAKE_INSTALL_PREFIX=/opt/gvm .. && make && make doc && make install && touch /opt/gvm/var/log/gvm/gsad.log && cd /opt/gvm/src
Настройка OSPD-OpenVAS
Установите virtualenv (GVM)
Примечание: возможно, вам придется изменить –python python3.8, чтобы соответствовать установленной версии python.
cd /opt/gvm / src & & export PKG_CONFIG_PATH=/opt/gvm / lib/pkgconfig:$PKG_CONFIG_PATH & & virtualenv python python3. 8 /opt/gvm / bin/ospd-scanner / & & source /opt/gvm / bin/ospd-scanner/bin / activate
Установка ospd (GVM)
Мы установим ospd с помощью pip installer:
mkdir /opt/gvm/var / run/ospd/ & & cd ospd && pip3 install . & & cd / opt/gvm / src
Установка ospd-openvas (GVM)
Опять же для ospd-openvas мы будем использовать установщик pip с пакетом, который мы клонировали из github:
cd ospd-openvas & & pip3 install . & & cd / opt/gvm / src
Создание сценариев запуска (root)
Сначала введите exit to loguout to root session, а затем вставьте в терминал следующее:
cat << EOF > /etc/systemd/system/gvmd.service [Unit] Description=Open Vulnerability Assessment System Manager Daemon Documentation=man:gvmd(8) https://www.greenbone.net Wants=postgresql.service ospd-openvas.service After=postgresql.service ospd-openvas.service [Service] Type=forking User=gvm Group=gvm PIDFile=/opt/gvm/var/run/gvmd.pid WorkingDirectory=/opt/gvm ExecStart=/opt/gvm/sbin/gvmd osp-vt-update=/opt/gvm/var/run/ospd.sock ExecReload=/bin/kill -HUP $MAINPID KillMode=mixed Restart=on-failure RestartSec=2min KillMode=process KillSignal=SIGINT GuessMainPID=no PrivateTmp=true [Install] WantedBy=multi-user.target EOF
cat << EOF > /etc/systemd/system/gsad.service [Unit] Description=Greenbone Security Assistant (gsad) Documentation=man:gsad(8) https://www.greenbone.net After=network.target Wants=gvmd.service [Service] Type=forking PIDFile=/opt/gvm/var/run/gsad.pid WorkingDirectory=/opt/gvm ExecStart=/opt/gvm/sbin/gsad drop-privileges=gvm Restart=on-failure RestartSec=2min KillMode=process KillSignal=SIGINT GuessMainPID=no PrivateTmp=true [Install] WantedBy=multi-user.target EOF
cat << EOF > /etc/systemd/system/ospd-openvas.service [Unit] Description=Job that runs the ospd-openvas daemon Documentation=man:gvm After=network.target redis-server@openvas.service Wants=redis-server@openvas.service [Service] Environment=PATH=/opt/gvm/bin/ospd-scanner/bin:/opt/gvm/bin:/opt/gvm/sbin:/opt/gvm/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin Type=forking User=gvm Group=gvm WorkingDirectory=/opt/gvm PIDFile=/opt/gvm/var/run/ospd-openvas.pid ExecStart=/opt/gvm/bin/ospd-scanner/bin/python /opt/gvm/bin/ospd-scanner/bin/ospd-openvas pid-file /opt/gvm/var/run/ospd-openvas.pid unix-socket=/opt/gvm/var/run/ospd.sock log-file /opt/gvm/var/log/gvm/ospd-scanner.log lock-file-dir /opt/gvm/var/run/ospd/ Restart=on-failure RestartSec=2min KillMode=process KillSignal=SIGINT GuessMainPID=no PrivateTmp=true [Install] WantedBy=multi-user.target EOF
Включите и запустите службы (root)
Теперь мы включим и запустим сервисы GVM, также как пользователь root: systemctl daemon-reload & & systemctl enable gvmd & & systemctl enable gsad & & systemctl enable ospd-openvas & & systemctl start gvmd & & systemctl start gsad & & systemctl start ospd-openvas
Проверьте сервисы (root)
Убедитесь, что все три службы запущены (одновременно введите одну строку).
systemctl status gvmd systemctl status gsad systemctl status ospd-openvas
Изменить сканер по умолчанию (GVM)
Переключитесь обратно на сеанс GVM.
sudo su-gvm
Во-первых, получить UUID сканера, который имеет гнездо (ospd. sock)
gvmd get-сканеры
Затем измените сканер:
gvmd modify-scanner=(вставить UUID сканера здесь) scanner-host=/opt/gvm/var / run/ospd. sock
Пример:
gvmd get-scanners 08b69003-5fc2-4037-a479-93b440211c73 OpenVAS /var/run/ospd/ospd.sock 0 OpenVAS Default 6acd0832-df90-11e4-b9d5-28d24461215b CVE 0 CVE gvmd modify-scanner=08b69003-5fc2-4037-a479-93b440211c73 scanner-host=/opt/gvm/var/run/ospd.sock Scanner modified.
Вот и все. Теперь вы можете войти в веб-интерфейс GVM.