Cómo instalar y utilizar el escáner de vulnerabilidad GVM en Ubuntu 20.04

GVM, también llamado «Greenbone Vulnerability Management», es un software de gestión y exploración de vulnerabilidades de código abierto que proporciona un conjunto de pruebas de vulnerabilidad de la red para encontrar fallos de seguridad en sistemas y aplicaciones. Se trata de un conjunto de herramientas todo en uno que utilizan muchos expertos en seguridad y usuarios normales de todo el mundo.

En este tutorial, te mostraremos cómo instalar y configurar GVM en el servidor Ubuntu 20.04.

Requisitos previos

  • Un servidor con Ubuntu 20.04.
  • Una contraseña de root configurada el servidor.

Cómo empezar

Antes de empezar, tendrás que actualizar los paquetes del sistema a la última versión. Puedes actualizarlos mediante el siguiente comando:

apt-get update -y

Una vez que tu servidor esté actualizado, puedes pasar al siguiente paso.

Instalar las dependencias necesarias

Antes de empezar, tendrás que instalar todas las dependencias necesarias en tu sistema. Puedes instalarlas 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 instaladas todas las dependencias, añade el repositorio de Yarn a tu 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, actualiza el repositorio e instala el paquete Yarn con el siguiente comando:

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

A continuación, actualiza Yarn a la última versión con el siguiente comando:

yarn install
yarn upgrade

Una vez que hayas terminado, puedes pasar al siguiente paso.

Instalar y configurar PostgreSQL

GVM utiliza PostgreSQL como base de datos, por lo que tendrás que instalar el servidor PostgreSQL en tu sistema. Puedes instalarlo con el siguiente comando:

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

Una vez terminada la instalación, entra en PostgreSQL y crea un usuario y una base de datos para GVM:

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

A continuación, conéctate a la base de datos y crea 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, sal del PostgreSQL con el siguiente comando:

exit
exit

Descargar GVM

Primero, crea 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, añade un usuario de redis a GVM y establece los permisos adecuados con el siguiente comando

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

A continuación, crea 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, define la ruta de la biblioteca de GVM con el siguiente comando

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

Añade la siguiente línea:

/opt/gvm/lib

A continuación, entra con el usuario GVM y crea un directorio para todos los componentes:

su - gvm
mkdir src

A continuación, descarga 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, cambia el directorio a gvm-libs, exporta la ruta de configuración y crea un directorio de construcción con el siguiente comando

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

A continuación, cambia el directorio a build y compila los gvm-libs con el siguiente comando

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

Instalar openvas-smb

A continuación, cambia el directorio a openvas-smb, exporta la ruta de configuración y crea 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, cambia el directorio a build y compila el 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, cambia el directorio a openvas, exporta la ruta de configuración y crea 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, cambia el directorio a build e instala el escáner OpenVAS con el siguiente comando

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

A continuación, sal del usuario gvm con el siguiente comando

exit

A continuación, crea la caché de las bibliotecas compartidas instaladas con el siguiente comando

export LC_ALL="C"
ldconfig

A continuación, copia el archivo de configuración del escáner OpenVAS Redis 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, establece la propiedad adecuada con el siguiente comando:

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

A continuación, actualiza 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, habilita e inicia el servicio Redis con el siguiente comando:

systemctl enable [email protected]
systemctl start [email protected]

A continuación, tendrás que 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, recarga el sysctl con el siguiente comando:

sysctl -p

Crear un archivo de servicio Systemd

En primer lugar, crea un archivo de servicio systemd para Transparent Huge Pages (THP) con el siguiente comando:

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

Añade 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

Guarda y cierra el archivo y luego vuelve a cargar el servicio systemd con el siguiente comando

systemctl daemon-reload

A continuación, inicia el servicio disable-thp y habilítalo para que se inicie al reiniciar el sistema:

systemctl start disable-thp 
systemctl enable disable-thp

A continuación, reinicia el servicio Redis para aplicar los cambios:

systemctl restart redis-server

A continuación, deberás conceder al usuario gvm la posibilidad de ejecutar todos los comandos del sistema utilizando 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 NVTs

A continuación, tendrás que actualizar el feed de las Pruebas de Vulnerabilidad de la Red desde Greenbone Security Feed/Community Feed.

En primer lugar, inicia sesión con el usuario gvm con el siguiente comando:

su - gvm

A continuación, actualiza el feed con el siguiente comando:

greenbone-nvt-sync

Una vez completada la actualización, actualiza el servidor Redis con la misma información de los archivos VT:

sudo openvas --update-vt-info

Instala Greenbone Vulnerability Manager

Primero, cambia el directorio a gvmd, exporta la ruta de configuración y crea un directorio de construcció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, cambia el directorio a build e instala el gvmd con el siguiente comando:

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

A continuación, fija el certificado con el siguiente comando:

gvm-manage-certs -a

Deberías obtener la siguiente salida:

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 las fuentes (GVM)

Primero, crea un usuario administrador para acceder a la interfaz web de GVM:

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

A continuación, busca el UUID de un usuario administrador con el siguiente comando:

gvmd --get-users --verbose

Deberías obtener la siguiente salida:

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

A continuación, modifica la configuración de gvmd con el UUID del usuario:

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

A continuación, sincroniza 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, cambia el directorio a gsa, exporta la ruta de configuración y crea un directorio de construcció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, cambia el directorio a build e instala el gsa con el siguiente comando:

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

A continuación, crea un archivo de registro para gsa con el siguiente comando

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

Configurar OSPD-OpenVAS

Primero, cambia el directorio a src y exporta 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, crea el entorno virtual de Python con el siguiente comando:

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

A continuación, activa el entorno virtual con el siguiente comando

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

A continuación, crea un directorio para ospd con el siguiente comando

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

A continuación, cambia el directorio a ospd e instala ospd con pip:

cd ospd 
pip3 install .

A continuación, cambia el directorio a ospd-openvas e instala ospd-openvas con el comando pip:

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

A continuación, sal del usuario gvm con el siguiente comando:

exit

Crea un archivo de servicio Systemd para GVM, GSAD y OpenVAS

Primero, crea un archivo de servicio systemd para gvmd con el siguiente comando:

nano /etc/systemd/system/gvmd.service

Añade 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

Guarda y cierra el archivo y luego crea un archivo de servicio systemd para gsad con el siguiente comando:

nano /etc/systemd/system/gsad.service

Añade 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

Guarda y cierra el archivo y luego crea un archivo de servicio systemd para openvas con el siguiente comando:

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

Añade 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

Guarda y cierra el archivo y luego recarga el demonio systemd con el siguiente comando:

systemctl daemon-reload

A continuación, inicia todos los servicios y habilítalos 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 puedes verificar el estado de todos los servicios con el siguiente comando:

systemctl status gvmd
systemctl status gsad
systemctl status ospd-openvas

Modificar el escáner por defecto

En primer lugar, inicia la sesión del usuario gvm con el siguiente comando:

sudo su - gvm

A continuación, obtén el UUID del escáner con el siguiente comando:

gvmd --get-scanners

Deberías 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, modifica el escáner por defecto utilizando el UUID anterior:

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

Accede a la interfaz web de GVM

En este punto, GVM está instalado y escuchando en los puertos 80 y 443. Puedes acceder a él utilizando la URL https://your-server-ip. Serás redirigido a la página de inicio de sesión de GVM como se muestra a continuación:

Inicio de sesión de GVM

Proporciona tu nombre de usuario y contraseña de administrador y haz clic en el botón de inicio de sesión. Deberías ver el panel de control de GVM en la siguiente página:

Tablero GVM

Conclusión

Enhorabuena! has instalado y configurado con éxito GVM en el servidor Ubuntu 20.04. Ahora puedes explorar el GVM y empezar a escanear tu sistema en busca de vulnerabilidades. No dudes en preguntarme si tienes alguna duda.

También te podría gustar...