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:
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:
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.