GVM, también llamado "Gestión de vulnerabilidades Greenbone", es un software de gestión y análisis de vulnerabilidades de código abierto que proporciona un conjunto de pruebas de vulnerabilidad de red para encontrar lagunas de seguridad en sistemas y aplicaciones. Este es un conjunto de herramientas todo en uno utilizado por muchos expertos en seguridad y usuarios normales de todo el mundo.
En este tutorial, le mostraremos cómo instalar y configurar GVM en el servidor Ubuntu 20.04.
Requisitos
- Un servidor con Ubuntu 20.04.
- Se configura una contraseña de root en el servidor.
Cómo empezar
Antes de comenzar, deberá actualizar los paquetes de su sistema a la última versión. Puede actualizarlos usando el siguiente comando:
apt-get update -y
Una vez que su servidor esté actualizado, puede continuar con el siguiente paso.
Instalar dependencias requeridas
Antes de comenzar, deberá instalar todas las dependencias requeridas en su sistema. Puede instalarlos ejecutando el siguiente comando:
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
Una vez que todas las dependencias estén instaladas, agregue el repositorio Yarn a su sistema:
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
A continuación, actualice el repositorio e instale el paquete Yarn con el siguiente comando:
apt-get update -y
apt-get install yarn -y
A continuación, actualice Yarn a la última versión con el siguiente comando:
yarn install
yarn upgrade
Una vez que haya terminado, puede continuar con el siguiente paso.
Instalar y configurar PostgreSQL
GVM utiliza PostgreSQL como base de datos, por lo que deberá instalar el servidor PostgreSQL en su sistema. Puede instalarlo con el siguiente comando:
apt-get install postgresql postgresql-contrib postgresql-server-dev-all -y
Una vez finalizada la instalación, inicie sesión en PostgreSQL y cree un usuario y una base de datos para GVM:
sudo -u postgres bash
export LC_ALL="C"
createuser -DRS gvm
createdb -O gvm gvmd
Luego, conéctese a la base de datos y luego cree un rol y extensiones con el siguiente comando:
psql gvmd
create role dba with superuser noinherit;
grant dba to gvm;
create extension "uuid-ossp";
create extension "pgcrypto";
A continuación, salga de PostgreSQL con el siguiente comando:
exit
exit
Descargar GVM
Primero, cree un directorio y un usuario separados para GVM con el siguiente comando:
mkdir /opt/gvm
adduser gvm --disabled-password --home /opt/gvm/ --no-create-home --gecos ''
A continuación, agregue un usuario de redis a GVM y establezca el permiso adecuado con el siguiente comando:
usermod -aG redis gvm
chown gvm:gvm /opt/gvm/
A continuación, cree una variable de ruta para GVM con el siguiente comando:
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
A continuación, defina la ruta de la biblioteca GVM con el siguiente comando:
nano /etc/ld.so.conf.d/gvm.conf
Agregue la siguiente línea:
/opt/gvm/lib
A continuación, inicie sesión en el usuario de GVM y cree un directorio para todos los componentes:
su - gvm
mkdir src
A continuación, descargue todos los componentes necesarios dentro del directorio src con el siguiente comando:
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
Instalar gvm-libs
A continuación, cambie el directorio a gvm-libs, exporte la ruta de configuración y cree un directorio de compilación con el siguiente comando:
cd gvm-libs
export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:$PKG_CONFIG_PATH
mkdir build
Luego, cambie el directorio para construir y compilar gvm-libs usando el siguiente comando:
cd build
cmake -DCMAKE_INSTALL_PREFIX=/opt/gvm ..
make
make doc
make install
Instalar openvas-smb
A continuación, cambie el directorio a openvas-smb, exporte la ruta de configuración y cree un directorio de compilación con el siguiente comando:
cd /opt/gvm/src
cd openvas-smb
export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:$PKG_CONFIG_PATH
mkdir build
A continuación, cambie el directorio para compilar y compilar openvas-smb con el siguiente comando:
cd build
cmake -DCMAKE_INSTALL_PREFIX=/opt/gvm ..
make
make install
Instalar el escáner OpenVAS
A continuación, cambie el directorio a openvas, exporte la ruta de configuración y cree un directorio de compilación con el siguiente comando:
cd /opt/gvm/src
cd openvas
export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:$PKG_CONFIG_PATH
mkdir build
A continuación, cambie el directorio para compilar e instalar el escáner OpenVAS con el siguiente comando:
cd build
cmake -DCMAKE_INSTALL_PREFIX=/opt/gvm ..
make
make doc
make install
A continuación, salga del usuario gvm con el siguiente comando:
exit
A continuación, cree la memoria caché para las bibliotecas compartidas instaladas con el siguiente comando:
export LC_ALL="C"
ldconfig
A continuación, copie el archivo de configuración Redis del escáner OpenVAS con el siguiente comando:
cp /etc/redis/redis.conf /etc/redis/redis.orig
cp /opt/gvm/src/openvas/config/redis-openvas.conf /etc/redis/
A continuación, establezca la propiedad adecuada con el siguiente comando:
chown redis:redis /etc/redis/redis-openvas.conf
A continuación, actualice la ruta al socket Unix de Redis con el siguiente comando:
echo "db_address = /run/redis-openvas/redis.sock" > /opt/gvm/etc/openvas/openvas.conf
A continuación, habilite e inicie el servicio Redis con el siguiente comando:
systemctl enable [email protected]
systemctl start [email protected]
A continuación, deberá modificar el archivo sysctl.conf. Puedes hacerlo con el siguiente comando:
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
A continuación, vuelva a cargar sysctl con el siguiente comando:
sysctl -p
Crear archivo de servicio de Systemd
Primero, cree un archivo de servicio systemd para Transparent Huge Pages (THP) con el siguiente comando:
nano /etc/systemd/system/disable-thp.service
Agregue las siguientes líneas:
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
Guarde y cierre el archivo, luego vuelva a cargar el servicio systemd con el siguiente comando:
systemctl daemon-reload
A continuación, inicie el servicio de desactivación de thp y actívelo para que se inicie al reiniciar el sistema:
systemctl start disable-thp
systemctl enable disable-thp
A continuación, reinicie el servicio Redis para aplicar los cambios:
systemctl restart redis-server
A continuación, deberá conceder al usuario gvm que ejecute todos los comandos del sistema mediante sudo sin proporcionar una contraseña. Puedes hacerlo con el siguiente comando:
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
Actualizar NVT
A continuación, deberá actualizar el feed de Pruebas de vulnerabilidad de red desde Greenbone Security Feed/Community Feed.
Primero, inicie sesión en el usuario gvm con el siguiente comando:
su - gvm
A continuación, actualice el feed con el siguiente comando:
greenbone-nvt-sync
Una vez que se complete la actualización, actualice el servidor Redis con la misma información de VT de los archivos de VT:
sudo openvas --update-vt-info
Instalar el administrador de vulnerabilidades de Greenbone
Primero, cambie el directorio a gvmd, exporte la ruta de configuración y cree un directorio de compilación con el siguiente comando:
cd /opt/gvm/src/gvmd
export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:$PKG_CONFIG_PATH
mkdir build
A continuación, cambie el directorio para compilar e instalar gvmd con el siguiente comando:
cd build/
cmake -DCMAKE_INSTALL_PREFIX=/opt/gvm ..
make
make doc
make install
A continuación, corrija el certificado con el siguiente comando:
gvm-manage-certs -a
Deberías obtener el siguiente resultado:
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.
Configurar y Actualizar Feeds (GVM)
Primero, cree un usuario administrador para acceder a la interfaz web de GVM:
gvmd --create-user=admin --password=admin
A continuación, busque el UUID de un usuario administrador con el siguiente comando:
gvmd --get-users --verbose
Deberías obtener el siguiente resultado:
admin 1288cbcf-23a0-407f-8013-b7a57acc5795
A continuación, modifique la configuración de gvmd con el UUID de usuario:
gvmd --modify-setting 78eceaec-3385-11ea-b237-28d24461215b --value 1288cbcf-23a0-407f-8013-b7a57acc5795
A continuación, sincronice todos los feeds de greenbone con el siguiente comando:
greenbone-feed-sync --type GVMD_DATA
greenbone-feed-sync --type SCAP
greenbone-feed-sync --type CERT
Instalar gsa
Primero, cambie el directorio a gsa, exporte la ruta de configuración y cree un directorio de compilación con el siguiente comando:
cd /opt/gvm/src/gsa
export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:$PKG_CONFIG_PATH
mkdir build
A continuación, cambie el directorio para compilar e instalar gsa con el siguiente comando:
cd build/
cmake -DCMAKE_INSTALL_PREFIX=/opt/gvm ..
make
make doc
make install
A continuación, cree un archivo de registro para gsa con el siguiente comando:
touch /opt/gvm/var/log/gvm/gsad.log
Configurar OSPD-OpenVAS
Primero, cambie el directorio a src y exporte la ruta de configuración con el siguiente comando:
cd /opt/gvm/src
export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:$PKG_CONFIG_PATH
A continuación, cree el entorno virtual de Python con el siguiente comando:
virtualenv --python python3.8 /opt/gvm/bin/ospd-scanner/
A continuación, active el entorno virtual con el siguiente comando:
source /opt/gvm/bin/ospd-scanner/bin/activate
A continuación, cree un directorio para ospd con el siguiente comando:
mkdir /opt/gvm/var/run/ospd/
A continuación, cambie el directorio a ospd e instale ospd con pip:
cd ospd
pip3 install .
Luego, cambie el directorio a ospd-openvas e instale ospd-openvas usando el comando pip:
cd /opt/gvm/src/ospd-openvas
pip3 install .
A continuación, salga del usuario gvm con el siguiente comando:
exit
Crear un archivo de servicio de Systemd para GVM, GSAD y OpenVAS
Primero, cree un archivo de servicio systemd para gvmd con el siguiente comando:
nano /etc/systemd/system/gvmd.service
Agregue las siguientes líneas:
[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
Guarde y cierre el archivo, luego cree un archivo de servicio systemd para gsad con el siguiente comando:
nano /etc/systemd/system/gsad.service
Agregue las siguientes líneas:
[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
Guarde y cierre el archivo, luego cree un archivo de servicio systemd para openvas con el siguiente comando:
nano /etc/systemd/system/ospd-openvas.service
Agregue las siguientes líneas:
[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
Guarde y cierre el archivo, luego vuelva a cargar el demonio systemd con el siguiente comando:
systemctl daemon-reload
A continuación, inicie todos los servicios y habilítelos para que se inicien al reiniciar el sistema con el siguiente comando:
systemctl enable gvmd
systemctl enable gsad
systemctl enable ospd-openvas
systemctl start gvmd
systemctl start gsad
systemctl start ospd-openvas
También puede verificar el estado de todos los servicios con el siguiente comando:
systemctl status gvmd
systemctl status gsad
systemctl status ospd-openvas
Modificar escáner predeterminado
Primero, inicie sesión en el usuario gvm con el siguiente comando:
sudo su - gvm
A continuación, obtenga el UUID del escáner con el siguiente comando:
gvmd --get-scanners
Debería obtener el siguiente comando:
08b69003-5fc2-4037-a479-93b440211c73 OpenVAS /var/run/ospd/ospd.sock 0 OpenVAS Default 6acd0832-df90-11e4-b9d5-28d24461215b CVE 0 CVE
Ahora, modifique el escáner predeterminado utilizando el UUID anterior:
gvmd --modify-scanner=08b69003-5fc2-4037-a479-93b440211c73 --scanner-host=/var/run/ospd/ospd.sock
Acceder a la interfaz web de GVM
En este punto, GVM está instalado y escuchando en los puertos 80 y 443. Puede acceder a él usando la URL https://your-server-ip . Será redirigido a la página de inicio de sesión de GVM como se muestra a continuación:
Proporcione su nombre de usuario y contraseña de administrador y haga clic en Iniciar sesión botón. Debería ver el panel de GVM en la siguiente página:
Conclusión
¡Felicidades! ha instalado y configurado correctamente GVM en el servidor Ubuntu 20.04. Ahora puede explorar el GVM para comenzar a escanear su sistema en busca de vulnerabilidades. Siéntase libre de preguntarme si tiene alguna pregunta.