GVM kwetsbaarheidsscanner installeren en gebruiken op Ubuntu 20.04

GVM ook wel “Greenbone Vulnerability Management” genoemd is een open-source software voor het scannen en beheren van kwetsbaarheden, die een reeks netwerk kwetsbaarheidstests biedt om veiligheidsgaten in systemen en toepassingen te vinden. Dit is een alles-in-één pakket gereedschappen dat door veel beveiligingsexperts en gewone gebruikers over de hele wereld gebruikt wordt.

In deze handleiding laten we je zien hoe je GVM op Ubuntu 20.04 server installeert en configureert.

Vereisten

  • Een server waarop Ubuntu 20.04 draait.
  • Een root wachtwoord is de server geconfigureerd.

Aan de slag

Voor je begint, moet je je systeempakketten bijwerken naar de nieuwste versie. Je kunt ze bijwerken met het volgende commando:

apt-get update -y

Zodra je server bijgewerkt is, kun je verder gaan met de volgende stap.

Installeer de vereiste afhankelijkheden

Voor je begint, moet je alle vereiste afhankelijkheden in je systeem installeren. Je kunt ze installeren door het volgende commando uit te voeren:

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

Als alle afhankelijkheden geïnstalleerd zijn, voeg je de Yarn repository aan je systeem toe:

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

Werk vervolgens de repository bij en installeer het Yarn pakket met het volgende commando:

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

Upgrade vervolgens Yarn naar de nieuwste versie met het volgende commando:

yarn install
yarn upgrade

Als je klaar bent, kun je verder gaan met de volgende stap.

Installeer en configureer PostgreSQL

GVM gebruikt PostgreSQL als database backend, dus je zult de PostgreSQL server op je systeem moeten installeren. Je kunt hem installeren met het volgende commando:

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

Zodra de installatie klaar is, log je in op PostgreSQL en maak je een gebruiker en een database voor GVM:

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

Verbind vervolgens met de database en maak een rol en uitbreidingen aan met het volgende commando:

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

Sluit vervolgens PostgreSQL af met het volgende commando:

exit
exit

Download GVM

Maak eerst een aparte directory en gebruiker voor GVM met het volgende commando:

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

Voeg vervolgens een redis gebruiker aan GVM toe en stel de juiste toestemming in met het volgende commando:

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

Maak vervolgens een padvariabele voor GVM met het volgende commando:

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

Definieer vervolgens het GVM bibliotheekpad met het volgende commando:

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

Voeg de volgende regel toe:

/opt/gvm/lib

Log vervolgens in als GVM gebruiker en maak een directory voor alle componenten:

su - gvm
mkdir src

Download vervolgens alle benodigde componenten binnen de src directory met het volgende commando:

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

Installeer gvm-libs

Verander vervolgens de directory in gvm-libs, exporteer het config pad en maak een build directory aan met het volgende commando:

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

Verander vervolgens de directory in build en compileer de gvm-libs met het volgende commando:

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

Installeer openvas-smb

Verander vervolgens de directory in openvas-smb, exporteer het config pad en maak een build directory aan met het volgende commando:

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

Verander vervolgens de directory in build en compileer de openvas-smb met het volgende commando:

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

Installeer OpenVAS Scanner

Verander vervolgens de directory in openvas, exporteer het config pad en maak een build directory aan met het volgende commando:

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

Verander vervolgens de directory in build en installeer de OpenVAS scanner met het volgende commando:

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

Sluit vervolgens af van de gvm gebruiker met het volgende commando:

exit

Maak vervolgens de cache naar de geïnstalleerde gedeelde bibliotheken met het volgende commando:

export LC_ALL="C"
ldconfig

Kopieer vervolgens het OpenVAS scanner Redis configuratiebestand met het volgende commando:

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

Stel vervolgens het juiste eigendom in met het volgende commando:

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

Werk vervolgens het pad naar Redis unix socket bij met het volgende commando:

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

Schakel vervolgens de Redis service in en start hem met het volgende commando:

systemctl enable [email protected]s.service
systemctl start [email protected]

Vervolgens moet je het sysctl.conf bestand aanpassen. Je kunt dat doen met het volgende commando:

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

Herlaad vervolgens de sysctl met het volgende commando:

sysctl -p

Maak een Systemd dienstbestand

Maak eerst een systemd service bestand voor Transparant Huge Pages (THP) met het volgende commando:

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

Voeg de volgende regels toe:

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

Bewaar en sluit het bestand en herlaad dan de systemd dienst met het volgende commando:

systemctl daemon-reload

Start vervolgens de disable-thp dienst en zet hem aan om te starten bij het herstarten van het systeem:

systemctl start disable-thp 
systemctl enable disable-thp

Herstart vervolgens de Redis dienst om de veranderingen toe te passen:

systemctl restart redis-server

Vervolgens moet je de gebruiker gvm toestemming geven om alle systeemcommando’s met sudo uit te voeren zonder een wachtwoord te geven. Je kunt dat doen met het volgende commando:

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

Update NVT’s

Vervolgens moet je de feed van Network Vulnerability Tests uit Greenbone Security Feed/Community Feed bijwerken.

Meld je eerst aan als gvm gebruiker met het volgende commando:

su - gvm

Werk vervolgens de feed bij met het volgende commando:

greenbone-nvt-sync

Als de update voltooid is, update dan Redis server met dezelfde VT info uit VT bestanden:

sudo openvas --update-vt-info

Installeer Greenbone Vulnerability Manager

Verander eerst de directory in gvmd, exporteer het config pad en maak een build directory met het volgende commando:

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

Verander vervolgens de directory in build en installeer gvmd met het volgende commando:

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

Repareer vervolgens het certificaat met het volgende commando:

gvm-manage-certs -a

Je zou de volgende uitvoer moeten krijgen:

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 configureren en bijwerken (GVM)

Maak eerst een admin gebruiker aan om toegang te krijgen tot de GVM webinterface:

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

Zoek vervolgens de UUID van een admin gebruiker met het volgende commando:

gvmd --get-users --verbose

Je zou de volgende uitvoer moeten krijgen:

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

Wijzig vervolgens de gvmd instellingen met de UUID van de gebruiker:

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

Synchroniseer vervolgens alle greenbone feeds met het volgende commando:

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

Installeer gsa

Verander eerst de directory in gsa, exporteer het config pad en maak een build directory met het volgende commando:

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

Verander vervolgens de directory in build en installeer de gsa met het volgende commando:

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

Maak vervolgens een logbestand voor gsa met het volgende commando:

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

Configureer OSPD-OpenVAS

Verander eerst de directory in src en exporteer het config pad met het volgende commando:

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

Maak vervolgens de virtuele omgeving Python met het volgende commando:

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

Activeer vervolgens de virtuele omgeving met het volgende commando:

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

Maak vervolgens een directory voor ospd met het volgende commando:

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

Verander vervolgens de directory in ospd en installeer ospd met pip:

cd ospd 
pip3 install .

Verander vervolgens de directory in ospd-openvas en installeer ospd-openvas met het pip commando:

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

Sluit vervolgens af van de gvm gebruiker met het volgende commando:

exit

Maak een Systemd dienstbestand voor GVM, GSAD en OpenVAS

Maak eerst een systemd dienstbestand voor gvmd met het volgende commando:

nano /etc/systemd/system/gvmd.service

Voeg de volgende regels toe:

[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

Sla het bestand op en sluit het af maak dan een systemd service bestand voor gsad met het volgende commando:

nano /etc/systemd/system/gsad.service

Voeg de volgende regels toe:

[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

Bewaar en sluit het bestand en maak dan een systemd dienstbestand voor openvas aan met het volgende commando:

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

Voeg de volgende regels toe:

[Unit]
Description=Job that runs the ospd-openvas daemon
Documentation=man:gvm
After=network.target [email protected]
[email protected]

[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

Bewaar en sluit het bestand dan herlaad de systemd daemon met het volgende commando:

systemctl daemon-reload

Start vervolgens alle diensten en zet ze aan om te starten bij het herstarten van het systeem met het volgende commando:

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

Je kunt ook de status van alle diensten controleren met het volgende commando:

systemctl status gvmd
systemctl status gsad
systemctl status ospd-openvas

Wijzig standaardscanner

Meld je eerst aan als gvm gebruiker met het volgende commando:

sudo su - gvm

Haal vervolgens de UUID van de scanner op met het volgende commando:

gvmd --get-scanners

Je zou het volgende commando moeten krijgen:

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

Wijzig nu de standaard scanner met het bovenstaande UUID:

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

Ga naar de GVM Web Interface

Op dit punt is GVM geïnstalleerd en luistert het op poorten 80 en 443. Je kunt het benaderen met de URL https://your-server-ip. Je wordt doorgestuurd naar de GVM login pagina zoals hieronder:

GVM Inloggen

Geef je admin gebruikersnaam en wachtwoord op en klik op de knop Login. Je zou het GVM dashboard op de volgende pagina moeten zien:

GVM Dashboard

Conclusie

Gefeliciteerd! je hebt met succes GVM geïnstalleerd en ingesteld op Ubuntu 20.04 server. Je kunt nu de GVM beginnen met het scannen van je systeem op kwetsbaarheden. Voel je vrij me te vragen als je vragen hebt.