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