GVM-20.08 auf Ubuntu Server 20.04 installieren

Greenbone Vulnerability Management Version 20.08 (GVM-20.08) ist die aktuelle stabile Hauptversion aus dem Hause Greenbone.

Damit ist dies die erste Version, die eine Kalender-basierte Versionierung verwendet (August 2020) und für alle Hauptkomponenten dieselbe Version gilt. Auf diese Weise kann man in Zukunft leichter feststellen, welche Komponentenversion zu welcher Version gehört.

Mit Ende 2020 werden sowohl GVM 10 als auch GVM 11 in den Ruhestand treten und keine weiteren Veröffentlichungen erhalten. Alle Benutzer und Distributionen sind angehalten zu GVM-20.08 zu wechseln.

GVM wurde als Teil der kommerziellen Produktlinie Greenbone Security Manager entwickelt und von Greenbone als Freie Software / Open Source lizenziert. Die Software wird regelmäßig aktualisiert, getestet und als Quellcode-Versionen veröffentlicht.

In diesem Beitrag zeigen wir, wie Sie die aktuelle Version auf einem Ubuntu Server 20.04 LTS von Quellcode installieren. Wir gehen davon aus, dass Sie diesen Server bereits eingerichtet haben und eine Verbindung per ssh existiert.

Bitte beachten Sie, dass viele Schritte und Befehle notwendig sind, um GVM-20.08 einzurichten. Wer es trotzdem versuchen möchte, der sollte genügend Zeit mitbringen und „Heißgetränke“ in ausreichende Menge zur Verfügung haben.

Wir haben versucht, die einzelnen Befehle in Blöcken zusammenzufassen. Codeschnipsel die am Zeilenende „&&\“ aufweisen, können direkt ausgeschritten und in die Konsole eingefügt werden. Andere Kommandos empfehlen wir separat einzugeben. Als Vorlage für diese Anleitung haben wir diesen Blogeintrag genutzt, der vorrangig auf Debian 10 basiert. Vielen Dank für die Vorarbeit.

Hierbei ist es besonders wichtig, die Befehle mit den richtigen Privilegien auszuführen. In vielen Fällen wird dies als Nutzer „gvm“ getan. Es sind aber auch teilweise Root-Rechte erforderlich. Wir werden innerhalb der Blöcke explizit darauf hinweisen.

Bevor Sie mit der Installation beginnen, sollten Sie folgende Hinweise berücksichtigen:

  • Wir empfehlen die Installation in einer virtuellen Umgebung vorzunehmen. Hiermit sind Sie in der Lage nach wichtigen Abschnitten Snapshots vom System einzurichten, zu denen Sie notfalls zurückkehren können. Wählen Sie die Systemleistung der virtuellen Maschine nicht zu gering. Der Scanner kann sehr hungrig nach Ressourcen sein. Wir haben für diesen Test 16 GB RAM und 8 CPU-Kerne gewählt.
  • Auch wenn wir die Befehle in verschiedene Blöcke zusammengefasst haben, so sollten Sie die Ausgabe jedes Kommandos prüfen. Oftmals schleichen sich Fehler ein, die durch falsche Privilegien oder durch fehlende Abhängigkeiten hervorgerufen wurden.
  • Zu Beginn legen wir den Nutzer gvm an. Wir nutzen diesen Account, um wichtige Teile von GVM-20.08 zu kompilieren und auf dem System abzulegen. Trotzdem sind einige Kommandos zwingend mit Root-Rechten durchzuführen. Hier werden vorrangig die Befehle sudo oder sudo su genutzt.
  • Die Befehle müssen nicht zwingend in dieser Reihenfolge abgearbeitet werden. Wir hatten aber damit den besten Erfolg.

Abhängigkeiten installieren, Nutzer anlegen und Rechte vergeben

sudo apt-get install build-essential cmake gnutls-bin pkg-config glib2.0 libgnutls28-dev libssh-dev libssl-dev redis-server libhiredis-dev libxml2-dev doxygen libldap2-dev libgcrypt-dev libpcap-dev libgpgme-dev libradcli-dev graphviz bison libksba-dev libical-dev libpq-dev postgresql postgresql-contrib postgresql-server-dev-all libopenvas-dev heimdal-dev libpopt-dev xmltoman gcc-mingw-w64 nmap libmicrohttpd-dev npm nodejs xsltproc python3-virtualenv python3-paramiko python3-lxml python3-defusedxml python3-pip python3-psutil virtualenv libpthread-stubs0-dev
sudo npm install -g yarn --prefix /usr/
echo 'export PATH="$PATH:/opt/gvm/bin:/opt/gvm/sbin:/opt/gvm/.local/bin"' | sudo tee -a /etc/profile.d/gvm.sh &&\
sudo chmod 0755 /etc/profile.d/gvm.sh &&\
source /etc/profile.d/gvm.sh &&\
sudo bash -c 'cat << EOF > /etc/ld.so.conf.d/gvm.conf
# gmv libs location
/opt/gvm/lib
EOF'
sudo mkdir /opt/gvm &&\
sudo adduser gvm --disabled-password --home /opt/gvm/ --no-create-home --gecos '' &&\
sudo usermod -aG redis gvm  # This is for ospd-openvas can connect to redis.sock.. If you have a better idea here, pls write in the comments :) &&\
sudo chown gvm:gvm /opt/gvm/ && \
sudo su - gvm

Nach dem Kommando sudo su – gvm arbeiten wir als Nutzer gvm weiter!

Softwarequellen einrichten und Pakete herunterladen

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 kompilieren und installieren


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 kompilieren und installieren

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

OpenVAS-scanner kompilieren und installieren

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
sudo su

Stellen Sie hier sicher, dass Sie für die nächsten Kommandos den gvm Nutzer verlassen und mit Root-Rechten arbeiten!

Redis-Server installieren und einrichten

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 << EOF > /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
visudo

Ergänzen Sie hier folgende Einträge für den „secure path“ und den Nutzer gvm.

### Add secure path
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/opt/gvm/sbin"

### Allow the user running ospd-openvas, to launch openvas with root permissions
gvm ALL = NOPASSWD: /opt/gvm/sbin/openvas
gvm ALL = NOPASSWD: /opt/gvm/sbin/gsad

Stellen Sie hier sicher, dass Sie die nächsten Kommandos als gvm Nutzer ausführen!

GVM kompilieren und installieren

sudo su - gvm
cd /opt/gvm/src &&\
cd 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

NVT herunterladen

Planen Sie bei diesem Schritt ein wenig Zeit ein. Dies ist eine gute Gelegenheit, sich eines der bereitgestellten Heißgetränke zu genehmigen. 😉

sudo su - gvm
greenbone-nvt-sync
sudo openvas -u

Ab hier arbeiten wir mithilfe von sudo weiter. Gehen Sie daher auf den ursprünglich auf dem Server installierten Nutzer zurück und arbeiten Sie mit sudo!

PostgreSQL laden und Datenbank einrichten

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

Hier geht es wieder mit Nutzer gvm weiter!

sudo su - gvm
gvm-manage-certs -a

Nutzer und Passwort für das Webinterface festlegen

gvmd --create-user=admin --password=admin

Hier können Sie natürlich andere Passwörter wählen oder diese später im Frontend ändern.

Führen Sie nun folgenden Befehl in der Linux-Konsole aus, um die uuid des eingerichteten Nutzers zu erhalten.

gvmd --get-users --verbose
admin 5f8763fc-aa17-452b-a8a0-fb4390a05030

Modifizieren Sie jetzt die im Quellcode eingetragene ID mit der oben bestimmten ID des eingerichteten Nutzers admin.

gvmd --modify-setting 78eceaec-3385-11ea-b237-28d24461215b --value 5f8763fc-aa17-452b-a8a0-fb4390a05030

Feeds herunterladen und einrichten

Je nach Geschwindigkeit der bestehenden Internet-Verbindung wird der folgende Schritt ein wenig/mehr Zeit kosten.

greenbone-feed-sync --type GVMD_DATA 
greenbone-feed-sync --type SCAP 
greenbone-feed-sync --type CERT

Zur Sicherheit können Sie mit folgenden Befehlen prüfen, ob alle Feeds empfangen wurden. Führen Sie die oberen Befehle so lange aus, bis alles heruntergeladen wurde. Manchmal sind mehrere Anläufe notwendig. 🙁

greenbone-scapdata-sync --type GVMD_DATA &&\
greenbone-scapdata-sync --type SCAP &&\
greenbone-scapdata-sync --type CERT 

GSA kompilieren und einrichten

Wir sind immer noch als Nutzer gvm unterwegs!

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-Scanner in virtualenv einrichten

Hier ist es insbesondere wichtig, die auf dem System installierte Python-Version im Auge zu haben. In Ubuntu 20.04 wird derzeit die Version 3.8 ausgeliefert. Wenn Sie eine andere Version nutzen, dann muss der Eintrag unter virtualenv angepasst werden.

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
mkdir /opt/gvm/var/run/ospd/ &&\
cd ospd &&\
pip3 install . &&\
cd /opt/gvm/src
cd ospd-openvas &&\
pip3 install . &&\
cd /opt/gvm/src

Start-up Skripte einrichten

Ab hier arbeiten wir mit Root-Rechten weiter (sudo su)!

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

Services starten und als „Autostart“ einrichten

systemctl daemon-reload &&\
systemctl enable gvmd &&\
systemctl enable gsad &&\
systemctl enable ospd-openvas &&\
systemctl start gvmd &&\
systemctl start gsad &&\
systemctl start ospd-openvas

Spätestens jetzt sehen Sie, ob die Installation geklappt hat oder sich der Fehlerteufel eingeschlichen hat. Mit folgenden Befehlen rufen Sie den Status der Dienste ab. Hier sollte alles auf „running“ stehen

systemctl status gvmd
systemctl status gsad
systemctl status ospd-openvas

Default-Scanner einrichten

Mit folgendem Befehl prüfen Sie die ID des installierten Scanners:

gvmd --get-scanners

… und erhalten folgenden Output:

08b69003-5fc2-4037-a479-93b440211c73  OpenVAS  /var/run/ospd/ospd.sock  0  OpenVAS Default
6acd0832-df90-11e4-b9d5-28d24461215b  CVE    0  CVE

Tragen Sie nun die angezeigte ID unter –modify-scanner ein:

gvmd --modify-scanner=08b69003-5fc2-4037-a479-93b440211c73 --scanner-host=/opt/gvm/var/run/ospd.sock

Nutzen Sie nun ihren favorisierten Browser und loggen Sie sich über die URL https://IP-Adresse im „Greenbone Security Assistent“ ein. Wir hatten in diesem Beispiel den Nutzer admin und als Passwort admin gewählt.

Damit ist die Installation von GVM-20.08 auf einem Ubuntu Server 20.04 abgeschlossen. In einem späteren Beitrag werden wir zeigen, wie Sie Ihren ersten Scan einrichten und durchführen können.

6 Gedanken zu „GVM-20.08 auf Ubuntu Server 20.04 installieren“

  1. Vielen Dank für das tolle Tutorial! Hat auf Anhieb funktioniert, ich konnte meine „alte“ 9er Version dadurch ablösen… (die sich ja bekanntermassen nicht mehr synchronisieren ließ)

    Antworten
  2. Hallo,
    Erst mal DANKE für die Tolle Anleitung

    Ich konnte alles Schritt für Schritt, ohne Fehler installieren. nur am Schluß komm ich nicht weiter.
    Beim „systemctl status gvmd“
    Sehe ich zwar, das der Service active (running) ist.
    ABER bekomme auch diese Meldung:
    openvas systemd[1]: Starting Open Vulnerability Assessment System Manager Daemon…
    openvas systemd[1]: gvmd.service: Can’t open PID file /opt/gvm/var/run/gvmd.pid (yet?) after start: Operation not permitted
    openvas systemd[1]: Started Open Vulnerability Assessment System Manager Daemon.
    openvas gvmd[1115]: sh: 1: xml_split: not found

    zudem bekomme ich danach auf die abfrage:
    gvmd –get-scanners

    den Fehler:
    Command ‚gvmd‘ not found, did you mean:

    Führe den Befehl als root aus 🙂

    Danke für deine Hilfe

    :

    Antworten
    • Hallo Goragon,

      der Fehler liegt hier:

      openvas gvmd[1115]: sh: 1: xml_split: not found

      Scheinbar ist das Tool zum Aufteilen von xml nicht auf dem System verfügbar. Es müsste eigentlich beim kompilieren von gvm eine Fehlermeldung ersichtlich sein. Vielleicht müsste man den Teil „GVM kompilieren und installieren“ nochmals wiederholen und dann gezielt auf die Fehlermeldung achten.

      Antworten
      • beim Kompilieren hat er etwas mit yarn an gemeckert.
        ein
        apt update &&\
        apt -y install yarn &&\
        yarn install &&\
        yarn upgrade

        und erneutes kompilieren und installieren hat das Problem gelöst.
        Danke

        Antworten

Schreibe einen Kommentar

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.