GVM également appelé "Greenbone Vulnerability Management" est un logiciel open source d'analyse et de gestion des vulnérabilités qui fournit un ensemble de tests de vulnérabilité réseau pour trouver les failles de sécurité dans les systèmes et les applications. Il s'agit d'une suite d'outils tout-en-un utilisée par de nombreux experts en sécurité et utilisateurs normaux du monde entier.
Dans ce tutoriel, nous allons vous montrer comment installer et configurer GVM sur le serveur Ubuntu 20.04.
Prérequis
- Un serveur exécutant Ubuntu 20.04.
- Un mot de passe root est configuré sur le serveur.
Mise en route
Avant de commencer, vous devrez mettre à jour vos packages système vers la dernière version. Vous pouvez les mettre à jour à l'aide de la commande suivante :
apt-get update -y
Une fois votre serveur mis à jour, vous pouvez passer à l'étape suivante.
Installer les dépendances requises
Avant de commencer, vous devrez installer toutes les dépendances requises sur votre système. Vous pouvez les installer en exécutant la commande suivante :
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
Une fois toutes les dépendances installées, ajoutez le référentiel Yarn à votre système :
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
Ensuite, mettez à jour le référentiel et installez le package Yarn avec la commande suivante :
apt-get update -y
apt-get install yarn -y
Ensuite, mettez à niveau Yarn vers la dernière version à l'aide de la commande suivante :
yarn install
yarn upgrade
Une fois que vous avez terminé, vous pouvez passer à l'étape suivante.
Installer et configurer PostgreSQL
GVM utilise PostgreSQL comme backend de base de données, vous devrez donc installer le serveur PostgreSQL sur votre système. Vous pouvez l'installer avec la commande suivante :
apt-get install postgresql postgresql-contrib postgresql-server-dev-all -y
Une fois l'installation terminée, connectez-vous à PostgreSQL et créez un utilisateur et une base de données pour GVM :
sudo -u postgres bash
export LC_ALL="C"
createuser -DRS gvm
createdb -O gvm gvmd
Ensuite, connectez-vous à la base de données puis créez un rôle et des extensions avec la commande suivante :
psql gvmd
create role dba with superuser noinherit;
grant dba to gvm;
create extension "uuid-ossp";
create extension "pgcrypto";
Ensuite, quittez PostgreSQL avec la commande suivante :
exit
exit
Télécharger GVM
Commencez par créer un répertoire et un utilisateur distincts pour GVM avec la commande suivante :
mkdir /opt/gvm
adduser gvm --disabled-password --home /opt/gvm/ --no-create-home --gecos ''
Ensuite, ajoutez un utilisateur redis à GVM et définissez l'autorisation appropriée avec la commande suivante :
usermod -aG redis gvm
chown gvm:gvm /opt/gvm/
Ensuite, créez une variable de chemin pour GVM avec la commande suivante :
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
Ensuite, définissez le chemin de la bibliothèque GVM à l'aide de la commande suivante :
nano /etc/ld.so.conf.d/gvm.conf
Ajoutez la ligne suivante :
/opt/gvm/lib
Ensuite, connectez-vous à l'utilisateur GVM et créez un répertoire pour tous les composants :
su - gvm
mkdir src
Ensuite, téléchargez tous les composants requis dans le répertoire src avec la commande suivante :
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
Installer gvm-libs
Ensuite, changez le répertoire en gvm-libs, exportez le chemin de configuration et créez un répertoire de construction avec la commande suivante :
cd gvm-libs
export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:$PKG_CONFIG_PATH
mkdir build
Ensuite, changez de répertoire pour compiler et compiler les gvm-libs à l'aide de la commande suivante :
cd build
cmake -DCMAKE_INSTALL_PREFIX=/opt/gvm ..
make
make doc
make install
Installer openvas-smb
Ensuite, changez le répertoire en openvas-smb, exportez le chemin de configuration et créez un répertoire de construction avec la commande suivante :
cd /opt/gvm/src
cd openvas-smb
export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:$PKG_CONFIG_PATH
mkdir build
Ensuite, changez de répertoire pour compiler et compiler openvas-smb avec la commande suivante :
cd build
cmake -DCMAKE_INSTALL_PREFIX=/opt/gvm ..
make
make install
Installer le scanner OpenVAS
Ensuite, changez le répertoire en openvas, exportez le chemin de configuration et créez un répertoire de construction avec la commande suivante :
cd /opt/gvm/src
cd openvas
export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:$PKG_CONFIG_PATH
mkdir build
Ensuite, changez de répertoire pour compiler et installer le scanner OpenVAS avec la commande suivante :
cd build
cmake -DCMAKE_INSTALL_PREFIX=/opt/gvm ..
make
make doc
make install
Ensuite, quittez l'utilisateur gvm avec la commande suivante :
exit
Ensuite, créez le cache des bibliothèques partagées installées avec la commande suivante :
export LC_ALL="C"
ldconfig
Ensuite, copiez le fichier de configuration Redis du scanner OpenVAS avec la commande suivante :
cp /etc/redis/redis.conf /etc/redis/redis.orig
cp /opt/gvm/src/openvas/config/redis-openvas.conf /etc/redis/
Ensuite, définissez la propriété appropriée avec la commande suivante :
chown redis:redis /etc/redis/redis-openvas.conf
Ensuite, mettez à jour le chemin vers le socket Redis unix avec la commande suivante :
echo "db_address = /run/redis-openvas/redis.sock" > /opt/gvm/etc/openvas/openvas.conf
Ensuite, activez et démarrez le service Redis avec la commande suivante :
systemctl enable [email protected]
systemctl start [email protected]
Ensuite, vous devrez modifier le fichier sysctl.conf. Vous pouvez le faire avec la commande suivante :
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
Ensuite, rechargez le sysctl avec la commande suivante :
sysctl -p
Créer un fichier de service Systemd
Tout d'abord, créez un fichier de service systemd pour Transparent Huge Pages (THP) avec la commande suivante :
nano /etc/systemd/system/disable-thp.service
Ajoutez les lignes suivantes :
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
Enregistrez et fermez le fichier puis rechargez le service systemd avec la commande suivante :
systemctl daemon-reload
Ensuite, démarrez le service disable-thp et activez-le pour qu'il démarre au redémarrage du système :
systemctl start disable-thp
systemctl enable disable-thp
Ensuite, redémarrez le service Redis pour appliquer les modifications :
systemctl restart redis-server
Ensuite, vous devrez autoriser l'utilisateur gvm à exécuter toutes les commandes système à l'aide de sudo sans fournir de mot de passe. Vous pouvez le faire avec la commande suivante :
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
Mettre à jour les NVT
Ensuite, vous devrez mettre à jour le flux de tests de vulnérabilité réseau à partir du flux de sécurité/flux communautaire de Greenbone.
Tout d'abord, connectez-vous à l'utilisateur gvm avec la commande suivante :
su - gvm
Ensuite, mettez à jour le flux avec la commande suivante :
greenbone-nvt-sync
Une fois la mise à jour terminée, mettez à jour le serveur Redis avec les mêmes informations VT à partir des fichiers VT :
sudo openvas --update-vt-info
Installer Greenbone Vulnerability Manager
Tout d'abord, changez le répertoire en gvmd, exportez le chemin de configuration et créez un répertoire de construction avec la commande suivante :
cd /opt/gvm/src/gvmd
export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:$PKG_CONFIG_PATH
mkdir build
Ensuite, changez de répertoire pour compiler et installer le gvmd avec la commande suivante :
cd build/
cmake -DCMAKE_INSTALL_PREFIX=/opt/gvm ..
make
make doc
make install
Ensuite, corrigez le certificat avec la commande suivante :
gvm-manage-certs -a
Vous devriez obtenir le résultat suivant :
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.
Configurer et mettre à jour les flux (GVM)
Commencez par créer un utilisateur administrateur pour accéder à l'interface Web de GVM :
gvmd --create-user=admin --password=admin
Ensuite, trouvez l'UUID d'un utilisateur admin avec la commande suivante :
gvmd --get-users --verbose
Vous devriez obtenir le résultat suivant :
admin 1288cbcf-23a0-407f-8013-b7a57acc5795
Modifiez ensuite les paramètres de gvmd avec l'UUID de l'utilisateur :
gvmd --modify-setting 78eceaec-3385-11ea-b237-28d24461215b --value 1288cbcf-23a0-407f-8013-b7a57acc5795
Ensuite, synchronisez tous les flux greenbone avec la commande suivante :
greenbone-feed-sync --type GVMD_DATA
greenbone-feed-sync --type SCAP
greenbone-feed-sync --type CERT
Installer gsa
Tout d'abord, changez le répertoire en gsa, exportez le chemin de configuration et créez un répertoire de construction avec la commande suivante :
cd /opt/gvm/src/gsa
export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:$PKG_CONFIG_PATH
mkdir build
Ensuite, changez de répertoire pour compiler et installer le gsa avec la commande suivante :
cd build/
cmake -DCMAKE_INSTALL_PREFIX=/opt/gvm ..
make
make doc
make install
Ensuite, créez un fichier journal pour gsa avec la commande suivante :
touch /opt/gvm/var/log/gvm/gsad.log
Configurer OSPD-OpenVAS
Tout d'abord, changez le répertoire en src et exportez le chemin de configuration avec la commande suivante :
cd /opt/gvm/src
export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:$PKG_CONFIG_PATH
Ensuite, créez l'environnement virtuel Python avec la commande suivante :
virtualenv --python python3.8 /opt/gvm/bin/ospd-scanner/
Ensuite, activez l'environnement virtuel avec la commande suivante :
source /opt/gvm/bin/ospd-scanner/bin/activate
Ensuite, créez un répertoire pour ospd avec la commande suivante :
mkdir /opt/gvm/var/run/ospd/
Ensuite, changez le répertoire en ospd et installez ospd avec pip :
cd ospd
pip3 install .
Ensuite, changez le répertoire en ospd-openvas et installez ospd-openvas à l'aide de la commande pip :
cd /opt/gvm/src/ospd-openvas
pip3 install .
Ensuite, quittez l'utilisateur gvm avec la commande suivante :
exit
Créer un fichier de service Systemd pour GVM, GSAD et OpenVAS
Tout d'abord, créez un fichier de service systemd pour gvmd avec la commande suivante :
nano /etc/systemd/system/gvmd.service
Ajoutez les lignes suivantes :
[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
Enregistrez et fermez le fichier puis créez un fichier de service systemd pour gsad avec la commande suivante :
nano /etc/systemd/system/gsad.service
Ajoutez les lignes suivantes :
[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
Enregistrez et fermez le fichier puis créez un fichier de service systemd pour openvas avec la commande suivante :
nano /etc/systemd/system/ospd-openvas.service
Ajoutez les lignes suivantes :
[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
Enregistrez et fermez le fichier puis rechargez le démon systemd avec la commande suivante :
systemctl daemon-reload
Ensuite, démarrez tous les services et autorisez-les à démarrer au redémarrage du système avec la commande suivante :
systemctl enable gvmd
systemctl enable gsad
systemctl enable ospd-openvas
systemctl start gvmd
systemctl start gsad
systemctl start ospd-openvas
Vous pouvez également vérifier l'état de tous les services avec la commande suivante :
systemctl status gvmd
systemctl status gsad
systemctl status ospd-openvas
Modifier l'analyseur par défaut
Tout d'abord, connectez-vous à l'utilisateur gvm avec la commande suivante :
sudo su - gvm
Ensuite, obtenez l'UUID du scanner avec la commande suivante :
gvmd --get-scanners
Vous devriez obtenir la commande suivante :
08b69003-5fc2-4037-a479-93b440211c73 OpenVAS /var/run/ospd/ospd.sock 0 OpenVAS Default 6acd0832-df90-11e4-b9d5-28d24461215b CVE 0 CVE
Maintenant, modifiez le scanner par défaut en utilisant l'UUID ci-dessus :
gvmd --modify-scanner=08b69003-5fc2-4037-a479-93b440211c73 --scanner-host=/var/run/ospd/ospd.sock
Accéder à l'interface Web GVM
À ce stade, GVM est installé et écoute sur les ports 80 et 443. Vous pouvez y accéder en utilisant l'URL https://your-server-ip . Vous serez redirigé vers la page de connexion GVM comme indiqué ci-dessous :
Indiquez votre nom d'utilisateur et votre mot de passe d'administrateur et cliquez sur Connexion bouton. Vous devriez voir le tableau de bord GVM sur la page suivante :
Conclusion
Toutes nos félicitations! vous avez installé et configuré avec succès GVM sur le serveur Ubuntu 20.04. Vous pouvez maintenant explorer la GVM pour commencer à analyser votre système à la recherche de vulnérabilités. N'hésitez pas à me demander si vous avez des questions.