So installieren und verwenden Sie GVM Vulnerability Scanner unter Ubuntu 20.04

GVM, auch „Greenbone Vulnerability Management“ genannt, ist eine Open-Source-Software zum Scannen und Verwalten von Schwachstellen, die eine Reihe von Netzwerk-Schwachstellen-Tests bietet, um Sicherheitslücken in Systemen und Anwendungen zu finden. Es handelt sich dabei um eine All-in-One-Suite von Tools, die von vielen Sicherheitsexperten und normalen Benutzern auf der ganzen Welt verwendet wird.

In diesem Tutorial zeigen wir Ihnen, wie Sie GVM auf einem Ubuntu 20.04 Server installieren und konfigurieren.

Voraussetzungen

  • Ein Server, auf dem Ubuntu 20.04 läuft.
  • Ein Root-Passwort ist auf dem Server konfiguriert.

Erste Schritte

Bevor Sie beginnen, müssen Sie Ihre Systempakete auf die neueste Version aktualisieren. Sie können sie mit dem folgenden Befehl aktualisieren:

apt-get update -y

Sobald Ihr Server aktualisiert ist, können Sie mit dem nächsten Schritt fortfahren.

Erforderliche Abhängigkeiten installieren

Bevor Sie beginnen, müssen Sie alle erforderlichen Abhängigkeiten in Ihrem System installieren. Sie können sie mit folgendem Befehl installieren:

apt-get install software-properties-common 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 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 texlive-latex-extra texlive-fonts-recommended -y

Sobald alle Abhängigkeiten installiert sind, fügen Sie das Yarn-Repository zu Ihrem System hinzu:

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

Als nächstes aktualisieren Sie das Repository und installieren das Yarn-Paket mit dem folgenden Befehl:

apt-get update -y
apt-get install yarn -y

Als nächstes aktualisieren Sie Yarn mit dem folgenden Befehl auf die neueste Version:

yarn install
yarn upgrade

Sobald Sie damit fertig sind, können Sie mit dem nächsten Schritt fortfahren.

Installieren und konfigurieren Sie PostgreSQL

GVM verwendet PostgreSQL als Datenbank-Backend, daher müssen Sie den PostgreSQL-Server auf Ihrem System installieren. Sie können ihn mit dem folgenden Befehl installieren:

apt-get install postgresql postgresql-contrib postgresql-server-dev-all -y

Sobald die Installation abgeschlossen ist, loggen Sie sich in PostgreSQL ein und erstellen einen Benutzer und eine Datenbank für GVM:

sudo -u postgres bash
export LC_ALL="C"
createuser -DRS gvm
createdb -O gvm gvmd

Als nächstes verbinden Sie sich mit der Datenbank und erstellen eine Rolle und Erweiterungen mit dem folgenden Befehl:

psql gvmd
create role dba with superuser noinherit;
grant dba to gvm;
create extension "uuid-ossp";
create extension "pgcrypto";

Als nächstes beenden Sie PostgreSQL mit dem folgenden Befehl:

exit
exit

GVM herunterladen

Erstellen Sie zunächst ein separates Verzeichnis und einen Benutzer für GVM mit dem folgenden Befehl:

mkdir /opt/gvm
adduser gvm --disabled-password --home /opt/gvm/ --no-create-home --gecos ''

Als nächstes fügen Sie einen redis-Benutzer zu GVM hinzu und setzen die entsprechenden Rechte mit dem folgenden Befehl:

usermod -aG redis gvm
chown gvm:gvm /opt/gvm/

Als nächstes erstellen Sie eine Pfadvariable für GVM mit dem folgenden Befehl:

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

Definieren Sie als nächstes den GVM-Bibliotheks-Pfad mit dem folgenden Befehl:

nano /etc/ld.so.conf.d/gvm.conf

Fügen Sie die folgende Zeile hinzu:

/opt/gvm/lib

Melden Sie sich als nächstes als GVM-Benutzer an und erstellen Sie ein Verzeichnis für alle Komponenten:

su - gvm
mkdir src

Als nächstes laden Sie alle benötigten Komponenten innerhalb des src-Verzeichnisses mit dem folgenden Befehl herunter:

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

Installieren Sie gvm-libs

Als nächstes ändern Sie das Verzeichnis in gvm-libs, exportieren den Konfigurationspfad und erstellen ein build-Verzeichnis mit dem folgenden Befehl:

cd gvm-libs
export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:$PKG_CONFIG_PATH
mkdir build

Wechseln Sie als nächstes in das Verzeichnis build und kompilieren Sie die gvm-libs mit folgendem Befehl:

cd build
cmake -DCMAKE_INSTALL_PREFIX=/opt/gvm ..
make
make doc
make install

Installieren Sie openvas-smb

Wechseln Sie anschließend in das Verzeichnis openvas-smb, exportieren Sie den Konfigurationspfad und erstellen Sie ein Build-Verzeichnis mit folgendem Befehl:

cd /opt/gvm/src
cd openvas-smb
export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:$PKG_CONFIG_PATH
mkdir build

Wechseln Sie als nächstes in das Verzeichnis build und kompilieren Sie die openvas-smb mit folgendem Befehl:

cd build
cmake -DCMAKE_INSTALL_PREFIX=/opt/gvm ..
make
make install

OpenVAS Scanner installieren

Wechseln Sie anschließend in das Verzeichnis openvas, exportieren Sie den Konfigurationspfad und erstellen Sie ein Build-Verzeichnis mit folgendem Befehl:

cd /opt/gvm/src
cd openvas
export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:$PKG_CONFIG_PATH
mkdir build

Wechseln Sie anschließend in das Verzeichnis build und installieren Sie den OpenVAS-Scanner mit dem folgenden Befehl:

cd build
cmake -DCMAKE_INSTALL_PREFIX=/opt/gvm ..
make
make doc
make install

Beenden Sie dann den gvm-Benutzer mit dem folgenden Befehl:

exit

Erstellen Sie als Nächstes den Cache für die installierten gemeinsamen Bibliotheken mit folgendem Befehl:

export LC_ALL="C"
ldconfig

Kopieren Sie als Nächstes die OpenVAS-Scanner-Redis-Konfigurationsdatei mit dem folgenden Befehl:

cp /etc/redis/redis.conf /etc/redis/redis.orig
cp /opt/gvm/src/openvas/config/redis-openvas.conf /etc/redis/

Legen Sie als Nächstes mit folgendem Befehl die korrekten Eigentumsverhältnisse fest:

chown redis:redis /etc/redis/redis-openvas.conf

Aktualisieren Sie als nächstes den Pfad zum Redis-Unix-Socket mit dem folgenden Befehl:

echo "db_address = /run/redis-openvas/redis.sock" > /opt/gvm/etc/openvas/openvas.conf

Aktivieren und starten Sie als Nächstes den Redis-Dienst mit dem folgenden Befehl:

systemctl enable redis-server@openvas.service
systemctl start redis-server@openvas.service

Als nächstes müssen Sie die Datei sysctl.conf anpassen. Dies können Sie mit dem folgenden Befehl tun:

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

Laden Sie als Nächstes die sysctl mit dem folgenden Befehl neu:

sysctl -p

Systemd-Dienstdatei erstellen

Erstellen Sie zunächst eine systemd-Dienstdatei für Transparent Huge Pages (THP) mit dem folgenden Befehl:

nano /etc/systemd/system/disable-thp.service

Fügen Sie die folgenden Zeilen ein:

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

Speichern und schließen Sie die Datei und laden Sie dann den systemd-Dienst mit dem folgenden Befehl neu:

systemctl daemon-reload

Starten Sie als nächstes den disable-thp-Dienst und aktivieren Sie, dass er beim Neustart des Systems gestartet wird:

systemctl start disable-thp 
systemctl enable disable-thp

Als Nächstes starten Sie den Redis-Dienst neu, um die Änderungen zu übernehmen:

systemctl restart redis-server

Als Nächstes müssen Sie dem Benutzer gvm die Berechtigung erteilen, alle Systembefehle mit sudo ohne Angabe eines Passworts auszuführen. Sie können dies mit dem folgenden Befehl tun:

sed 's/Defaults\s.*secure_path=\"\/usr\/local\/sbin:\/usr\/local\/bin:\/usr\/sbin:\/usr\/bin:\/sbin:\/bin:\/snap\/bin\"/Defaults secure_path=\"\/usr\/local\/sbin:\/usr\/local\/bin:\/usr\/sbin:\/usr\/bin:\/sbin:\/bin:\/snap\/bin:\/opt\/gvm\/sbin\"/g' /etc/sudoers | EDITOR='tee' visudo
echo "gvm ALL = NOPASSWD: /opt/gvm/sbin/openvas" > /etc/sudoers.d/gvm
echo "gvm ALL = NOPASSWD: /opt/gvm/sbin/gsad" >> /etc/sudoers.d/gvm

NVTs aktualisieren

Als nächstes müssen Sie den Feed der Network Vulnerability Tests vom Greenbone Security Feed/Community Feed aktualisieren.

Melden Sie sich zunächst mit dem folgenden Befehl als gvm-Benutzer an:

su - gvm

Als nächstes aktualisieren Sie den Feed mit dem folgenden Befehl:

greenbone-nvt-sync

Sobald die Aktualisierung abgeschlossen ist, aktualisieren Sie den Redis-Server mit denselben VT-Informationen aus den VT-Dateien:

sudo openvas --update-vt-info

Greenbone Vulnerability Manager installieren

Wechseln Sie zunächst in das Verzeichnis gvmd, exportieren Sie den Konfigurationspfad und erstellen Sie ein Build-Verzeichnis mit dem folgenden Befehl:

cd /opt/gvm/src/gvmd 
export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:$PKG_CONFIG_PATH 
mkdir build

Wechseln Sie anschließend in das Verzeichnis build und installieren Sie gvmd mit folgendem Befehl:

cd build/ 
cmake -DCMAKE_INSTALL_PREFIX=/opt/gvm .. 
make 
make doc 
make install

Als nächstes fixieren Sie das Zertifikat mit dem folgenden Befehl:

gvm-manage-certs -a

Sie sollten die folgende Ausgabe erhalten:

Generated private key in /tmp/tmp.gW57p1UV0s/cakey.pem.
Generated self signed certificate in /tmp/tmp.gW57p1UV0s/cacert.pem.
Installed private key to /opt/gvm/var/lib/gvm/private/CA/cakey.pem.
Installed certificate to /opt/gvm/var/lib/gvm/CA/cacert.pem.
Generated private key in /tmp/tmp.gW57p1UV0s/serverkey.pem.
Generated certificate request in /tmp/tmp.gW57p1UV0s/serverrequest.pem.
Signed certificate request in /tmp/tmp.gW57p1UV0s/serverrequest.pem with CA certificate in /opt/gvm/var/lib/gvm/CA/cacert.pem to generate certificate in /tmp/tmp.gW57p1UV0s/servercert.pem
Installed private key to /opt/gvm/var/lib/gvm/private/CA/serverkey.pem.
Installed certificate to /opt/gvm/var/lib/gvm/CA/servercert.pem.
Generated private key in /tmp/tmp.gW57p1UV0s/clientkey.pem.
Generated certificate request in /tmp/tmp.gW57p1UV0s/clientrequest.pem.
Signed certificate request in /tmp/tmp.gW57p1UV0s/clientrequest.pem with CA certificate in /opt/gvm/var/lib/gvm/CA/cacert.pem to generate certificate in /tmp/tmp.gW57p1UV0s/clientcert.pem
Installed private key to /opt/gvm/var/lib/gvm/private/CA/clientkey.pem.
Installed certificate to /opt/gvm/var/lib/gvm/CA/clientcert.pem.
Removing temporary directory /tmp/tmp.gW57p1UV0s.

Feeds konfigurieren und aktualisieren (GVM)

Erstellen Sie zunächst einen Admin-Benutzer, um auf die GVM-Web-Oberfläche zuzugreifen:

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

Als nächstes suchen Sie die UUID eines Admin-Benutzers mit dem folgenden Befehl:

gvmd --get-users --verbose

Sie sollten die folgende Ausgabe erhalten:

admin 1288cbcf-23a0-407f-8013-b7a57acc5795

Als nächstes modifizieren Sie die gvmd-Einstellungen mit der Benutzer-UUID:

gvmd --modify-setting 78eceaec-3385-11ea-b237-28d24461215b --value 1288cbcf-23a0-407f-8013-b7a57acc5795

Als nächstes synchronisieren Sie alle greenbone Feeds mit dem folgenden Befehl:

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

Installieren Sie gsa

Ändern Sie zunächst das Verzeichnis in gsa, exportieren Sie den Konfigurationspfad und erstellen Sie ein Build-Verzeichnis mit dem folgenden Befehl:

cd /opt/gvm/src/gsa 
export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:$PKG_CONFIG_PATH 
mkdir build

Wechseln Sie als nächstes in das Verzeichnis build und installieren Sie den gsa mit folgendem Befehl:

cd build/ 
cmake -DCMAKE_INSTALL_PREFIX=/opt/gvm .. 
make
make doc
make install

Als nächstes erstellen Sie eine Protokolldatei für gsa mit dem folgenden Befehl:

touch /opt/gvm/var/log/gvm/gsad.log

OSPD-OpenVAS konfigurieren

Wechseln Sie zunächst in das Verzeichnis src und exportieren Sie den Konfigurationspfad mit folgendem Befehl:

cd /opt/gvm/src 
export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:$PKG_CONFIG_PATH

Als nächstes erstellen Sie die virtuelle Python-Umgebung mit dem folgenden Befehl:

virtualenv --python python3.8 /opt/gvm/bin/ospd-scanner/

Aktivieren Sie anschließend die virtuelle Umgebung mit folgendem Befehl:

source /opt/gvm/bin/ospd-scanner/bin/activate

Erstellen Sie als Nächstes mit folgendem Befehl ein Verzeichnis für ospd:

mkdir /opt/gvm/var/run/ospd/

Wechseln Sie anschließend in das Verzeichnis ospd und installieren Sie ospd mit pip:

cd ospd 
pip3 install .

Wechseln Sie als Nächstes in das Verzeichnis ospd-openvas und installieren Sie ospd-openvas mit dem Befehl pip:

cd /opt/gvm/src/ospd-openvas
pip3 install .

Beenden Sie als nächstes den gvm-Benutzer mit dem folgenden Befehl:

exit

Erstellen einer Systemd-Dienstdatei für GVM, GSAD und OpenVAS

Erstellen Sie zunächst eine systemd-Dienstdatei für gvmd mit dem folgenden Befehl:

nano /etc/systemd/system/gvmd.service

Fügen Sie die folgenden Zeilen hinzu:

[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

Speichern und schließen Sie die Datei. Erstellen Sie dann eine systemd-Dienstdatei für gsad mit dem folgenden Befehl:

nano /etc/systemd/system/gsad.service

Fügen Sie die folgenden Zeilen hinzu:

[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

Speichern und schließen Sie die Datei und erstellen Sie dann eine systemd-Dienstdatei für openvas mit folgendem Befehl:

nano /etc/systemd/system/ospd-openvas.service

Fügen Sie die folgenden Zeilen hinzu:

[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

Speichern und schließen Sie die Datei und laden Sie dann den systemd-Daemon mit dem folgenden Befehl neu:

systemctl daemon-reload

Starten Sie als Nächstes alle Dienste und aktivieren Sie, dass sie beim Neustart des Systems gestartet werden, mit dem folgenden Befehl:

systemctl enable gvmd
systemctl enable gsad
systemctl enable ospd-openvas 
systemctl start gvmd
systemctl start gsad
systemctl start ospd-openvas

Sie können den Status aller Dienste auch mit dem folgenden Befehl überprüfen:

systemctl status gvmd
systemctl status gsad
systemctl status ospd-openvas

Modify Default Scanner

Melden Sie sich zunächst mit dem folgenden Befehl beim Benutzer gvm an:

sudo su - gvm

Ermitteln Sie als Nächstes die UUID des Scanners mit dem folgenden Befehl:

gvmd --get-scanners

Sie sollten den folgenden Befehl erhalten:

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

Ändern Sie nun den Standardscanner mit der obigen UUID:

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

Zugriff auf GVM Web Interface

Zu diesem Zeitpunkt ist GVM installiert und lauscht auf den Ports 80 und 443. Sie können es mit der URL https://your-server-ip aufrufen. Sie werden auf die GVM Login-Seite weitergeleitet, wie unten gezeigt:

GVM Login

Geben Sie Ihren Admin-Benutzernamen und Ihr Passwort ein und klicken Sie auf die Schaltfläche Login. Auf der folgenden Seite sollten Sie das GVM Dashboard sehen:

GVM Dashboard

Fazit

Glückwunsch! Sie haben GVM erfolgreich auf dem Ubuntu 20.04 Server installiert und eingerichtet. Sie können nun GVM erforschen und beginnen, Ihr System auf Schwachstellen zu scannen. Fühlen Sie sich frei, mich zu fragen, wenn Sie irgendwelche Fragen haben.

Das könnte dich auch interessieren …